Как стать автором
Обновить
72
0
Alex Musayev @dreikanter

Пользователь

Отправить сообщение

Интервью с Медведевым. О безопасности.

Время на прочтение4 мин
Количество просмотров960
Иван МедведевНа прошлой неделе в Москву приезжал Иван Медведев – самый видный русскоговорящий специалист по безопасности в Microsoft. На конференции Software Engineering Conference (Russia) 2008 он рассказывал о культовой для разработчиков компании вещи – Security Development Lifecycle (SDL). Под этим названием, в широком понимании, скрывается универсальная платформенно-независимая методология и набор средств для обеспечения безопасности в разработке проектов ПО.

С 2004 года работа по SDL обязательна для всех продуктовых групп Microsoft; в 2006 году о нем была написана книга (которую, кстати, хотят перевести на русский); с 2007, начиная с версии 3.2, SDL продвигается в массы – работать по нему Microsoft советует всем. На что имеет полное моральное право, ведь за 5 минут в интернете можно нарыть целый ворох отзывов об SDL, как о самом продвинутом механизме безопасной разработки.

К моему удовольствию, мне удалось пообщаться с Иваном в стенах московского офиса Microsoft. Как всегда при встрече с сотрудником этой компании, хотелось спросить его о сотне вещей. Но, как и всегда, опять же, оказалось, что он – просто увлеченный своей работой человек, который имеет мало отношения ко всем тем леденящим кровь историям о корпорации, которыми родители-ITшники пугают своих детей.
Читать дальше →
Всего голосов 39: ↑28 и ↓11+17
Комментарии14

33 правила для увеличения Вашей продуктивности (Стив Павлина)

Время на прочтение6 мин
Количество просмотров3.8K
Оригинал: 33 Rules to Boost Your Productivity
Автор: Стив Павлина (Steve Pavlina)
Перевод: Евгений Ефремов

Эвристика — это набор правил, предназначенных для того, чтобы помочь решать вам свои задачи. Когда задача сложна или просто велика, а оптимальное решение неясно, применение эвристических методов поможет вам продвинуться в ее решении, даже если у вас нет четкого видения всего решения целиком.
Предположим, что вашей целью является покорение горы, но ни одна дорога не ведет к вершине. Примером эвристического решения может быть: Двигаться напрямую к вершине до тех пор, пока вы не встретите препятствие, которое не сможете преодолеть. Когда вы встретите подобное препятствие, следуйте вдоль него направо до тех пор, пока не сможете двигаться к вершине снова. Это не самый лучший или самый полный вариант применения эвристики, но во многих случаях он будет нормально работать, и вы достигните вершины.
Эвристика не гарантирует, что вы найдете оптимальное решение, более того, она не гарантирует, что вы найдете хоть какое-нибудь решение. Но для определенного типа задач эвристика бывает весьма полезна. Ее сила в том, что она помогает сдвинуться с мертвой точки, когда вы не можете принять решение, и приступить к действиям. Когда вы начинаете действовать, вы исследуете возможные варианты, что углубляет ваше понимание задачи. И получая больше информации о задаче, вы понемногу повышаете свои шансы найти ее решение. Если вы пытаетесь решить задачу, не зная точно, как это сделать, зачастую вы можете найти решение в процессе. Причем такое, до которого не смогли бы додуматься, не начав действовать. Особенно это справедливо для творческой деятельности, например для разработки программного обеспечения. Там вы часто не знаете, что вы хотите сделать, пока не начнете это делать.
Эвристика имеет множество приложений, одним из моих любимых является применение в личной продуктивности. Эвристика в задачах продуктивности — это набор поведенческих правил (иногда общих, иногда — ситуационных), которые помогают нам делать вещи более эффективно. Вот некоторые из мои любимых:
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии28

Скрытые возможности Google Reader’а

Время на прочтение1 мин
Количество просмотров1.4K
Оказывается, Google Reader тайком записывает нашу активность. Через интерфейс вы ничего не найдете, однако есть несколько команд, чтобы посмотреть на историю некоторых своих действий:
  1. Все посты, которые вы отправили по почте — www.google.com/reader/view/user/-/state/com.google/tracking-emailed
  2. Все посты, отмеченные, как непрочитанные (галочка «Отметить, как прочитанные» внизу поста) — www.google.com/reader/view/user/-/state/com.google/tracking-kept-unread
  3. Все посты из предыдущего пункта, но которые вы еще не прочитали — www.google.com/reader/view/user/-/state/com.google/kept-unread
  4. Посты, у которых вы нажали заголовок, чтобы посмотреть пост в самом блоге — www.google.com/reader/view/user/-/state/com.google/tracking-item-link-used
  5. Посты, в которых вы нажимали ссылки — www.google.com/reader/view/user/-/state/com.google/tracking-body-link-used
  6. Прочитанные посты, расположенные в порядке того, как прочитывались — www.google.com/reader/view/user/-/state/com.google/read
  7. Фиды, на которые вы подписаны по рекомендации Гугла (раздел «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-subscribed
  8. Рекомендованные Гуглом фиды от которых вы отказались («Нет, спасибо» в разделе «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-dismissed

Подсмотрено в блоге «Google Operating System»
Всего голосов 58: ↑54 и ↓4+50
Комментарии17

Тим О’Рейли. Работа, которая имеет значение: основные принципы

Время на прочтение7 мин
Количество просмотров10K

Work on Stuff that Matters: First Principles


опубликовано 11 января 2009 года

Я потратил много времени в прошлом году, убеждая людей заниматься работой, которая имеет значение. Это вызвало множество вопросов, что ж за работа это может быть. Мне не очень хотелось отвечать на эти вопросы, потому что для каждого человека будет свой ответ. Я решил, что хорошо бы начать новый год с того, чтобы сформулировать несколько принципов, помогающих вам осмыслить эту проблему для себя лично.

Но прежде всего я хочу прояснить, что «работа, которая имеет значение» не подразумевает только некоммерческие проекты, благотворительность или иную форму «добрых дел». Некоммерческие проекты часто означают хорошее дело, и люди с техническими способностями могут внести важный вклад, но очень важно выбраться за пределы этих рамок. Я абсолютно убеждён в социальной ценности бизнеса, который ведётся правильно. Нам нужно создать экономическую систему, в которой общественно значимые проекты автоматически и гарантированно получают вознаграждение, а не основанную на благотворительных организациях, финансируемых по доброте сердечной.
Читать дальше →
Всего голосов 116: ↑114 и ↓2+112
Комментарии39

Memoization в Python

Время на прочтение1 мин
Количество просмотров16K
Memoization – свойство функций сохранять (кешировать) результаты вычислений, дабы не вычислять в последствии повторно.

Эта технология оптимизации позволят достичь прироста скорости работы за счет потерь в свободной памяти.

Допустим, у нас есть некая функция bigfunc, результат которой зависят только от переданных в нее аргументов, а сложность вычислений достаточно большая. Естественно нам не хотелось бы производить вычисления при каждом вызове bigfunc если она уже вызывалась ранее с теми же параметрами. Тут то нам на помощь и приходит memoization.

Для python декоратор для функции будет выглядеть следующим образом:

import cPickle
def memoized(func):
    memory = {}
    def memo(*args,**kwargs):
       hash = cPickle.dumps((args, sorted(kwargs.iteritems())))
       if hash not in memory:
           memory[hash] = func(*args,**kwargs)
       return memory[hash]
    return memo

Далее, нам достаточно объявить bigfunc как

@memoized
def bigfunc(…):
…

Или переопределить, если она уже объявлена:

bigfunc = memoized(bigfunc)

Декоратор, объявленный в начале статьи, работает только с пиклезуемыми объектами. Если ваша функция работает с непиклезуемыми объектами – вы можете заменить

hash = cPickle.dumps((args, sorted(kwargs.iteritems())))

на

hash = (tuple(args), frozenset(kwargs.items())

но вы потеряете возможность работы с mutable объектами.

Декоратор можно легко модифицировать, для ограничения количества закешированных элементов.
Всего голосов 57: ↑51 и ↓6+45
Комментарии17

Вступление

Время на прочтение1 мин
Количество просмотров3.8K
Haskell достаточно необычный язык. Но, несмотря на немалое количество статей по нему, нередко можно столкнуться с мнением, что всё это помогает лишь в синтетических примерах. И действительно, на простых примерах всё выглядит просто, но куда сложнее представить себе хотя бы небольшую программу в таком стиле, а статьи зачастую рассматривают особенности языка. Поэтому я захотел написать серию статей, в течение которых мы изучим возможности языка и попробуем написать простой чат. Почему именно чат? Потому что там есть место и многопоточности, и GUI клиента, и БД сервера. Хотя я с удовольствием послушал бы и ваши предложения, так как мне самому интересно, насколько этот язык удобен для решения более сложных задач.
Так что, если вас это заинтересует, то я рискну.

Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады
Всего голосов 68: ↑63 и ↓5+58
Комментарии54

Основы

Время на прочтение8 мин
Количество просмотров13K
Сегодня я постараюсь рассказать самые основы, такие, как базовые типы данных, типы функций, ФВП, списки (в том числе и бесконечные).

Последующие статьи:
Типы данных, паттерн матчинг и функции
Классы типов, монады
Читать дальше →
Всего голосов 72: ↑69 и ↓3+66
Комментарии162

Memcached: статистика, отладка и RPC

Время на прочтение4 мин
Количество просмотров12K
Серия постов про “Web, кэширование и memcached” продолжается. Начало здесь: 1, 2, 3, 4 и 5.
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached, а также о проблеме одновременного перестроения кэшей и тэгировании кэшей.

Сегодняшний пост завершает эту серию, в нём обзорно мы поговорим о технических “мелочах”:
  • анализ статистики memcached;
  • отладка memcached;
  • “RPC” с помощью memcached.

Полный текст всех разделов в виде одной большой PDF-ки можно скачать и посмотреть здесь (в разделе “Материалы”).
Читать дальше →
Всего голосов 46: ↑42 и ↓4+38
Комментарии7

WPF Binding: Мощь стилей и шаблонов в WPF.

Время на прочтение9 мин
Количество просмотров38K
В WPF существует очень четкое разделение между поведением Control'а и тем, как он выглядит. К примеру, поведение объекта класса Button состоит в том, чтобы реагировать на различные события по клику, но его вид может быть любым — вы можете сделать кнопку в виде стрелки, рыбы, или чего-либо еще, что подходит для вашего приложения. Переопределение отображения Control'а очень просто сделать при использовании VS со стилями и шаблонами, и даже еще проще, если у вас есть Microsoft Expression Blend. В этом примере я покажу вам, как переопределить отображение ListBox'а, который используется для отображения списка планет.
Читать дальше →
Всего голосов 34: ↑28 и ↓6+22
Комментарии23

Правильный цикл работы с версиями SVN

Время на прочтение2 мин
Количество просмотров24K
Я думаю многие любопытные люди уже знают, как нужно верно работать с SVN.
Но во многих статьях это описано достаточно поверхностно. Хочется немного приоткрыть завесу верного цикла версионирования, при разработке проекта, на примере TortoiseSVN.
И так, поехали
Читать дальше →
Всего голосов 72: ↑54 и ↓18+36
Комментарии56

Cisco. Второй выпуск. Используем Packet Tracer 5.0 для моделирования сети. Скринкаст.

Время на прочтение2 мин
Количество просмотров28K

Сегодня в выпуске:


Packet Tracer 5. Изучаем возможности программы.
Выпуск выполнен в виде скринкаста.
За 20 минут вы познакомитесь с основными функциями PT5.

image

На повестке дня:

Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии62

Встреча с Opera во Владивостоке

Время на прочтение1 мин
Количество просмотров558
И снова рад сообщить об очередной встрече пользователей Opera и всех желающих с представителями компании. На этот раз данное мероприятие пройдёт во Владивостоке. Вот данные о встрече:
Читать дальше →
Всего голосов 17: ↑14 и ↓3+11
Комментарии41

Проблема одновременного перестроения кэшей

Время на прочтение4 мин
Количество просмотров9.6K
Серия постов про “Web, кэширование и memcached” продолжается. Начало здесь: 1, 2 и 3.
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached.

Сегодня мы рассмотрим проблему одновременного перестроения кэша, которая возникает при большом количестве одновременных обращений к кэшу, который был только что сброшен или потерян, что может привести к перегрузке БД.

Следующий пост будет посвящен тэгированию кэшей.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии34

Tribler сделал торрент-трекеры архаизмом

Время на прочтение1 мин
Количество просмотров14K
Несколько европейских университетов и Гарвард продолжают работу над совместным мега-проектом Tribler по созданию идеального BitTorrent-клиента. Об этом проекте мы уже несколько раз упоминали на Хабре, например, после разработки платёжной системы, основанной на взаимозачёте трафика (гигабайты вместо долларов, которыми можно расплачиваться за товары), а также после внедрения там системы рекомендаций.

И вот сейчас разработчики объявили (PDF), что в новой версии клиента Tribler 4.1.0 реализована технология полноценной децентрализованной работы. Вся статистика об объёмах закачек и раздач, а также информация о рейтингах и привилегиях, сохраняется в распределённой клиентской сети без помощи торрент-трекеров, при этом есть система социальных рекомендаций по протоколу Buddycast, что устраняет угрозу спама. Искать новые .torrent-файлы можно напрямую на компьютерах других пользователей, опять же без нужды в торрент-трекерах.
Читать дальше →
Всего голосов 95: ↑92 и ↓3+89
Комментарии98

jQuery для начинающих

Время на прочтение9 мин
Количество просмотров502K
jQuery Logo

jQuery — это замечательный JavaScript Framework, который подкупает своей простотой в понимании и удобством в использовании. Но изучение надо с чего-то начинать, и лично моё мнение — лучше всего начинать с наглядных примеров, и они далее…

Читать дальше →
Всего голосов 256: ↑232.5 и ↓23.5+209
Комментарии83

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность