Кубик Рубика + Pantone — что еще нам надо?
Alex Musayev
@dreikanter
User
Интервью с Медведевым. О безопасности.
4 min
953На прошлой неделе в Москву приезжал Иван Медведев – самый видный русскоговорящий специалист по безопасности в Microsoft. На конференции Software Engineering Conference (Russia) 2008 он рассказывал о культовой для разработчиков компании вещи – Security Development Lifecycle (SDL). Под этим названием, в широком понимании, скрывается универсальная платформенно-независимая методология и набор средств для обеспечения безопасности в разработке проектов ПО.
С 2004 года работа по SDL обязательна для всех продуктовых групп Microsoft; в 2006 году о нем была написана книга (которую, кстати, хотят перевести на русский); с 2007, начиная с версии 3.2, SDL продвигается в массы – работать по нему Microsoft советует всем. На что имеет полное моральное право, ведь за 5 минут в интернете можно нарыть целый ворох отзывов об SDL, как о самом продвинутом механизме безопасной разработки.
К моему удовольствию, мне удалось пообщаться с Иваном в стенах московского офиса Microsoft. Как всегда при встрече с сотрудником этой компании, хотелось спросить его о сотне вещей. Но, как и всегда, опять же, оказалось, что он – просто увлеченный своей работой человек, который имеет мало отношения ко всем тем леденящим кровь историям о корпорации, которыми родители-ITшники пугают своих детей.
С 2004 года работа по SDL обязательна для всех продуктовых групп Microsoft; в 2006 году о нем была написана книга (которую, кстати, хотят перевести на русский); с 2007, начиная с версии 3.2, SDL продвигается в массы – работать по нему Microsoft советует всем. На что имеет полное моральное право, ведь за 5 минут в интернете можно нарыть целый ворох отзывов об SDL, как о самом продвинутом механизме безопасной разработки.
К моему удовольствию, мне удалось пообщаться с Иваном в стенах московского офиса Microsoft. Как всегда при встрече с сотрудником этой компании, хотелось спросить его о сотне вещей. Но, как и всегда, опять же, оказалось, что он – просто увлеченный своей работой человек, который имеет мало отношения ко всем тем леденящим кровь историям о корпорации, которыми родители-ITшники пугают своих детей.
33 правила для увеличения Вашей продуктивности (Стив Павлина)
6 min
3.7K
Translation
Оригинал: 33 Rules to Boost Your Productivity
Автор: Стив Павлина (Steve Pavlina)
Перевод: Евгений Ефремов
Эвристика — это набор правил, предназначенных для того, чтобы помочь решать вам свои задачи. Когда задача сложна или просто велика, а оптимальное решение неясно, применение эвристических методов поможет вам продвинуться в ее решении, даже если у вас нет четкого видения всего решения целиком.
Предположим, что вашей целью является покорение горы, но ни одна дорога не ведет к вершине. Примером эвристического решения может быть: Двигаться напрямую к вершине до тех пор, пока вы не встретите препятствие, которое не сможете преодолеть. Когда вы встретите подобное препятствие, следуйте вдоль него направо до тех пор, пока не сможете двигаться к вершине снова. Это не самый лучший или самый полный вариант применения эвристики, но во многих случаях он будет нормально работать, и вы достигните вершины.
Эвристика не гарантирует, что вы найдете оптимальное решение, более того, она не гарантирует, что вы найдете хоть какое-нибудь решение. Но для определенного типа задач эвристика бывает весьма полезна. Ее сила в том, что она помогает сдвинуться с мертвой точки, когда вы не можете принять решение, и приступить к действиям. Когда вы начинаете действовать, вы исследуете возможные варианты, что углубляет ваше понимание задачи. И получая больше информации о задаче, вы понемногу повышаете свои шансы найти ее решение. Если вы пытаетесь решить задачу, не зная точно, как это сделать, зачастую вы можете найти решение в процессе. Причем такое, до которого не смогли бы додуматься, не начав действовать. Особенно это справедливо для творческой деятельности, например для разработки программного обеспечения. Там вы часто не знаете, что вы хотите сделать, пока не начнете это делать.
Эвристика имеет множество приложений, одним из моих любимых является применение в личной продуктивности. Эвристика в задачах продуктивности — это набор поведенческих правил (иногда общих, иногда — ситуационных), которые помогают нам делать вещи более эффективно. Вот некоторые из мои любимых:
Автор: Стив Павлина (Steve Pavlina)
Перевод: Евгений Ефремов
Эвристика — это набор правил, предназначенных для того, чтобы помочь решать вам свои задачи. Когда задача сложна или просто велика, а оптимальное решение неясно, применение эвристических методов поможет вам продвинуться в ее решении, даже если у вас нет четкого видения всего решения целиком.
Предположим, что вашей целью является покорение горы, но ни одна дорога не ведет к вершине. Примером эвристического решения может быть: Двигаться напрямую к вершине до тех пор, пока вы не встретите препятствие, которое не сможете преодолеть. Когда вы встретите подобное препятствие, следуйте вдоль него направо до тех пор, пока не сможете двигаться к вершине снова. Это не самый лучший или самый полный вариант применения эвристики, но во многих случаях он будет нормально работать, и вы достигните вершины.
Эвристика не гарантирует, что вы найдете оптимальное решение, более того, она не гарантирует, что вы найдете хоть какое-нибудь решение. Но для определенного типа задач эвристика бывает весьма полезна. Ее сила в том, что она помогает сдвинуться с мертвой точки, когда вы не можете принять решение, и приступить к действиям. Когда вы начинаете действовать, вы исследуете возможные варианты, что углубляет ваше понимание задачи. И получая больше информации о задаче, вы понемногу повышаете свои шансы найти ее решение. Если вы пытаетесь решить задачу, не зная точно, как это сделать, зачастую вы можете найти решение в процессе. Причем такое, до которого не смогли бы додуматься, не начав действовать. Особенно это справедливо для творческой деятельности, например для разработки программного обеспечения. Там вы часто не знаете, что вы хотите сделать, пока не начнете это делать.
Эвристика имеет множество приложений, одним из моих любимых является применение в личной продуктивности. Эвристика в задачах продуктивности — это набор поведенческих правил (иногда общих, иногда — ситуационных), которые помогают нам делать вещи более эффективно. Вот некоторые из мои любимых:
Скрытые возможности Google Readerа
1 min
1.4KОказывается, Google Reader тайком записывает нашу активность. Через интерфейс вы ничего не найдете, однако есть несколько команд, чтобы посмотреть на историю некоторых своих действий:
— Подсмотрено в блоге «Google Operating System»
- Все посты, которые вы отправили по почте — www.google.com/reader/view/user/-/state/com.google/tracking-emailed
- Все посты, отмеченные, как непрочитанные (галочка «Отметить, как прочитанные» внизу поста) — www.google.com/reader/view/user/-/state/com.google/tracking-kept-unread
- Все посты из предыдущего пункта, но которые вы еще не прочитали — www.google.com/reader/view/user/-/state/com.google/kept-unread
- Посты, у которых вы нажали заголовок, чтобы посмотреть пост в самом блоге — www.google.com/reader/view/user/-/state/com.google/tracking-item-link-used
- Посты, в которых вы нажимали ссылки — www.google.com/reader/view/user/-/state/com.google/tracking-body-link-used
- Прочитанные посты, расположенные в порядке того, как прочитывались — www.google.com/reader/view/user/-/state/com.google/read
- Фиды, на которые вы подписаны по рекомендации Гугла (раздел «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-subscribed
- Рекомендованные Гуглом фиды от которых вы отказались («Нет, спасибо» в разделе «Рекомендации») — www.google.com/reader/view/user/-/state/com.google/recommendations-dismissed
— Подсмотрено в блоге «Google Operating System»
Тим О’Рейли. Работа, которая имеет значение: основные принципы
7 min
10K
Translation
Work on Stuff that Matters: First Principles
опубликовано 11 января 2009 года
Я потратил много времени в прошлом году, убеждая людей заниматься работой, которая имеет значение. Это вызвало множество вопросов, что ж за работа это может быть. Мне не очень хотелось отвечать на эти вопросы, потому что для каждого человека будет свой ответ. Я решил, что хорошо бы начать новый год с того, чтобы сформулировать несколько принципов, помогающих вам осмыслить эту проблему для себя лично.
Но прежде всего я хочу прояснить, что «работа, которая имеет значение» не подразумевает только некоммерческие проекты, благотворительность или иную форму «добрых дел». Некоммерческие проекты часто означают хорошее дело, и люди с техническими способностями могут внести важный вклад, но очень важно выбраться за пределы этих рамок. Я абсолютно убеждён в социальной ценности бизнеса, который ведётся правильно. Нам нужно создать экономическую систему, в которой общественно значимые проекты автоматически и гарантированно получают вознаграждение, а не основанную на благотворительных организациях, финансируемых по доброте сердечной.
Memoization в Python
1 min
16KMemoization – свойство функций сохранять (кешировать) результаты вычислений, дабы не вычислять в последствии повторно.
Эта технология оптимизации позволят достичь прироста скорости работы за счет потерь в свободной памяти.
Допустим, у нас есть некая функция bigfunc, результат которой зависят только от переданных в нее аргументов, а сложность вычислений достаточно большая. Естественно нам не хотелось бы производить вычисления при каждом вызове bigfunc если она уже вызывалась ранее с теми же параметрами. Тут то нам на помощь и приходит memoization.
Для python декоратор для функции будет выглядеть следующим образом:
Далее, нам достаточно объявить bigfunc как
Или переопределить, если она уже объявлена:
Декоратор, объявленный в начале статьи, работает только с пиклезуемыми объектами. Если ваша функция работает с непиклезуемыми объектами – вы можете заменить
на
но вы потеряете возможность работы с mutable объектами.
Декоратор можно легко модифицировать, для ограничения количества закешированных элементов.
Эта технология оптимизации позволят достичь прироста скорости работы за счет потерь в свободной памяти.
Допустим, у нас есть некая функция 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 объектами.
Декоратор можно легко модифицировать, для ограничения количества закешированных элементов.
Вступление
1 min
3.8KHaskell достаточно необычный язык. Но, несмотря на немалое количество статей по нему, нередко можно столкнуться с мнением, что всё это помогает лишь в синтетических примерах. И действительно, на простых примерах всё выглядит просто, но куда сложнее представить себе хотя бы небольшую программу в таком стиле, а статьи зачастую рассматривают особенности языка. Поэтому я захотел написать серию статей, в течение которых мы изучим возможности языка и попробуем написать простой чат. Почему именно чат? Потому что там есть место и многопоточности, и GUI клиента, и БД сервера. Хотя я с удовольствием послушал бы и ваши предложения, так как мне самому интересно, насколько этот язык удобен для решения более сложных задач.
Так что, если вас это заинтересует, то я рискну.
Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады
Так что, если вас это заинтересует, то я рискну.
Основы
Типы данных, паттерн матчинг и функции
Классы типов, монады
Основы
8 min
13KСегодня я постараюсь рассказать самые основы, такие, как базовые типы данных, типы функций, ФВП, списки (в том числе и бесконечные).
Последующие статьи:
Типы данных, паттерн матчинг и функции
Классы типов, монады
Последующие статьи:
Типы данных, паттерн матчинг и функции
Классы типов, монады
Где мои картинки?!
4 min
783Небольшое наблюдение из жизни на тему понятных интерфейсов.
Memcached: статистика, отладка и RPC
4 min
11KСерия постов про “Web, кэширование и memcached” продолжается. Начало здесь: 1, 2, 3, 4 и 5.
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached, а также о проблеме одновременного перестроения кэшей и тэгировании кэшей.
Сегодняшний пост завершает эту серию, в нём обзорно мы поговорим о технических “мелочах”:
Полный текст всех разделов в виде одной большой PDF-ки можно скачать и посмотреть здесь (в разделе “Материалы”).
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached, а также о проблеме одновременного перестроения кэшей и тэгировании кэшей.
Сегодняшний пост завершает эту серию, в нём обзорно мы поговорим о технических “мелочах”:
- анализ статистики memcached;
- отладка memcached;
- “RPC” с помощью memcached.
Полный текст всех разделов в виде одной большой PDF-ки можно скачать и посмотреть здесь (в разделе “Материалы”).
WPF Binding: Мощь стилей и шаблонов в WPF.
9 min
38K
Translation
В WPF существует очень четкое разделение между поведением Control'а и тем, как он выглядит. К примеру, поведение объекта класса Button состоит в том, чтобы реагировать на различные события по клику, но его вид может быть любым — вы можете сделать кнопку в виде стрелки, рыбы, или чего-либо еще, что подходит для вашего приложения. Переопределение отображения Control'а очень просто сделать при использовании VS со стилями и шаблонами, и даже еще проще, если у вас есть Microsoft Expression Blend. В этом примере я покажу вам, как переопределить отображение ListBox'а, который используется для отображения списка планет.
Правильный цикл работы с версиями SVN
2 min
24KЯ думаю многие любопытные люди уже знают, как нужно верно работать с SVN.
Но во многих статьях это описано достаточно поверхностно. Хочется немного приоткрыть завесу верного цикла версионирования, при разработке проекта, на примере TortoiseSVN.
И так, поехали
Но во многих статьях это описано достаточно поверхностно. Хочется немного приоткрыть завесу верного цикла версионирования, при разработке проекта, на примере TortoiseSVN.
И так, поехали
Cisco. Второй выпуск. Используем Packet Tracer 5.0 для моделирования сети. Скринкаст.
2 min
28KСегодня в выпуске:
Packet Tracer 5. Изучаем возможности программы.
Выпуск выполнен в виде скринкаста.
За 20 минут вы познакомитесь с основными функциями PT5.
На повестке дня:
Встреча с Opera во Владивостоке
1 min
553И снова рад сообщить об очередной встрече пользователей Opera и всех желающих с представителями компании. На этот раз данное мероприятие пройдёт во Владивостоке. Вот данные о встрече:
Проблема одновременного перестроения кэшей
4 min
9.5KСерия постов про “Web, кэширование и memcached” продолжается. Начало здесь: 1, 2 и 3.
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached.
Сегодня мы рассмотрим проблему одновременного перестроения кэша, которая возникает при большом количестве одновременных обращений к кэшу, который был только что сброшен или потерян, что может привести к перегрузке БД.
Следующий пост будет посвящен тэгированию кэшей.
В этих постах мы поговорили о memcached, его архитектуре, возможном применении, выборе ключа кэширования, кластеризации, атомарных операциях и реализации счетчиков в memcached.
Сегодня мы рассмотрим проблему одновременного перестроения кэша, которая возникает при большом количестве одновременных обращений к кэшу, который был только что сброшен или потерян, что может привести к перегрузке БД.
Следующий пост будет посвящен тэгированию кэшей.
Tribler сделал торрент-трекеры архаизмом
1 min
13KНесколько европейских университетов и Гарвард продолжают работу над совместным мега-проектом Tribler по созданию идеального BitTorrent-клиента. Об этом проекте мы уже несколько раз упоминали на Хабре, например, после разработки платёжной системы, основанной на взаимозачёте трафика (гигабайты вместо долларов, которыми можно расплачиваться за товары), а также после внедрения там системы рекомендаций.
И вот сейчас разработчики объявили (PDF), что в новой версии клиента Tribler 4.1.0 реализована технология полноценной децентрализованной работы. Вся статистика об объёмах закачек и раздач, а также информация о рейтингах и привилегиях, сохраняется в распределённой клиентской сети без помощи торрент-трекеров, при этом есть система социальных рекомендаций по протоколу Buddycast, что устраняет угрозу спама. Искать новые .torrent-файлы можно напрямую на компьютерах других пользователей, опять же без нужды в торрент-трекерах.
И вот сейчас разработчики объявили (PDF), что в новой версии клиента Tribler 4.1.0 реализована технология полноценной децентрализованной работы. Вся статистика об объёмах закачек и раздач, а также информация о рейтингах и привилегиях, сохраняется в распределённой клиентской сети без помощи торрент-трекеров, при этом есть система социальных рекомендаций по протоколу Buddycast, что устраняет угрозу спама. Искать новые .torrent-файлы можно напрямую на компьютерах других пользователей, опять же без нужды в торрент-трекерах.
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity