Обновить
13
0
Дмитрий @VCoder

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

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

Системы управления проектами. Ищем альтернативы Basecamp

Время на прочтение8 мин
Количество просмотров111K
imageНа написание поста меня сподвигла найденная на просторах хабра ссылочка на сайт с альтернативами Basecamp. Уверен многие уже заходили и смотрели предлагаемые альтернативы. Я же решил просмотреть их все. По результатам просмотра было выбрано 4 (+ 1 бонусная) системы управления проектами, которые можно назвать реальными альтернативами Basecamp. Из них три являются чуть менее, чем полностью неизвестными на просторах хабра (поиск дает практически нулевой результат), что дает мне надежду на то, что данный топик сообщит вам что-то новое. Критерии выбора и краткий обзор систем под катом (осторожно скриншотный трафик ~0.5 Mb).

Читать дальше →

Версионность и история данных

Время на прочтение5 мин
Количество просмотров146K
При разработке баз данных зачастую требуется обеспечить поддержку версионности и хранения истории объектов. Например, у работника может изменяться должность, у должности в свою очередь может меняться оклад — в многомерном моделировании это называется Slowly changing dimensions(далее SCD) — редко изменяющиеся измерения, то есть измерения, не ключевые атрибуты которых имеют тенденцию со временем изменяться. Всего существует 6 основных типов(методов) SCD, которые определяют как история изменений может быть отражена в модели.

Подробнее...

Variadic templates в C++0x

Время на прочтение20 мин
Количество просмотров75K
Те, кто читал книгу Андрея Александреску «Современное программирование на C++» знают, что существует обширный класс задач (в области метапрограммирования с использованием шаблонов), когда шаблону при инстанцировании необходимо указать переменное (заранее неизвестное) количество аргументов. Типичные примеры таких задач:
— Описание кортежей (tuples)
— Описание типов наподобие вариантов (variants)
— Описание функторов (в этом случае перечень типов аргументов зависит от сигнатуры функции)
— Классификация типов по заранее заданным множествам
— и т. п.

В каждой такой задаче точное количество типов, передаваемых соответствующему шаблону в качестве аргументов, заранее определить сложно. И, вообще говоря, зависит от желания и потребностей того, кто намеревается использовать соответствующий шаблонный класс.
В рамках действующего стандарта С++ сколь-нибудь удобного решения таких задач не существует. Шаблоны могут принимать строго определённое количество параметров и никак иначе. А. Александреску (в упомянутой выше книге) предлагает общее решение, основанное на т. н. «списках типов», в котором типы представлены в виде односвязного списка, реализованного посредством рекурсивных шаблонов. Альтернативным решением (используемом, например, в boost::variant и boost::tuple) является объявление шаблонного класса с большим количеством параметров, которым (всем, кроме первого) присвоено некоторое значение по умолчанию. Оба этих решения являются половинчатыми и не охватывают весь спектр возможных задач. По этому, для устранения недостатков существующих решений и упрощения кода новый стандарт предлагает С++-разработчикам новый вариант объявления шаблонов? «шаблоны с переменным количеством параметров» или, в оригинале, «variadic templates».

Читать дальше →

Взлом звуковой CAPTCHA на примере сайта Digg.com

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

Введение


Многие владельцы новостных сайтов сталкиваются с потребностью размещения обратных ссылок на свою статью в популярных сервисах таких как, например Digg.com (один из крупнейших новостных аггрегаторов). Но проблема в том, что необходимо вручную заходить на сайт и добавлять ссылку каждый раз, либо перекладывать этот процесс на плечи посетителей. Естественно хотелось автоматизировать этот процесс.

Сайт Digg.com предоставляет довольно мощный API, который позволяет выполнять многие вещи: комментировать, голосовать за новость, поиск и т.д… Но он не позволяет главного — публиковать свою новость. В принципе нас ни что не ограничивает написать скрипт для автоматического добавления новостей со своего источника. Единственно препятствие — это Captсha, ей мы и займемся.
Читать дальше →

Протокол MQV — старый добрый Диффи-Хеллман, но не совсем

Время на прочтение4 мин
Количество просмотров12K
Вот уже более 30 лет протокол распределения ключей Диффи-Хеллмана радует глаз простого криптомана своей простотой и надежностью. Для тех, кто эти последние 30 лет провел за занятиями более веселыми, нежели изучение криптографических протоколов, поясняю.
Протокол Диффи-Хеллмана был опубликован в 1976 году и послужил началом эры асимметричной криптографии. Суть его до гениального проста: Алиса и Боб хотят получить общий ключ для симметричной криптосистемы. Для этого они, договорившись, выбирают два больших числа g и p. Эти числа известны им обоим и держать их в секрете не имеет никакого смысла. Затем Алиса в тайне генерирует большое секретное число a, а Боб — большое число b. А далее за дело берется простая арифметика. Алиса посылает Бобу число
image.
Боб в свою очередь высылает Алисе
image.
Читать дальше →

Десять советов начинающим программистам

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

Предисловие


Хорошо, когда работаешь с человеком, который отлично знает толк в своём деле. А что, если случается работать с коллегой, опыт которого не столь большой. Особенно это касается профессионально-личностных качеств. Невольно приходится подсказывать, местами помагать ему, а где-то даже откровенно учить. Все мы когда-то начинали. Все эти действия требуют немалых усилий, которые можно было бы применить по прямому назначению — в разработке проекта, но без подготовки новых специалистов будет тяжелее.

Так вот, чтобы минимизировать эти затраты, давайте «создадим» хорошего, а возможно и идеального начинающего программиста, с высоким потенциалом и светлыми горизонтами.

Предлагаемые здесь десять советов не претендуют на оригинальность и, в основном, базируются на моем небольшом пятилетнем опыте разработок. Итак, начнем.

1. Будьте самостоятельными


Если у вас есть какой-то вопрос, и вы не знаете как с ним поступить, то вначале постарайтесь исследовать его самостоятельно. Не ждите постоянной помощи от коллег — у них и без вас работы хватает. Используйте всю мощь поисковых систем, специализированных ресурсов (например, stackoverflow), профессиональных блогов, форумов разработчиков, и конечно же хабра. Большинство типичных «граблей» можно обойти различными эффективными вариантами, а для решения базовых задач есть дюжины готовых решений. Просто пойдите и возьмите.

читать далее...

Удлинение урлов — занятие бессмысленное и беспощадное

Время на прочтение2 мин
Количество просмотров4.5K
Не знаю кто как проводит эти выходные, а у меня возникло сильное желание сделать что-то поистине бесполезное для человечества. Недолго перебирая варианты, остановился на одном.

Уверен, что если есть сервисы которые укорачивают ссылки, то должны были быть и те, которые удлиняют. Т.е. очень важно чтобы был соблюден баланс урлоизменяющих сервисов в природе. Последние были легко найдены: это и HugeUrl, и TitanUrl, и FreakingHugeUrl, и другие… Но что может более бесполезным, чем попытка сделать ненужную вещь лучше. Совершенного удлинителя я не нашел, один использует флэш, другой делает урлы не работающие в IE, третий делает слишком короткие урлы.
Поэтому прошу любить и жаловать мое видение сервиса делающего урлы бессмысленно длинными.
Читать дальше →

Убунту с яблочным вкусом: Ubuntu на Apple iMac

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

1. Предыстория



Мне понадобилось купить компьютер. Так случается порой.

В моём случае ситуация была такова: я менял работу, а единственный компьютер, который у меня был — рабочий ноутбук, который, конечно же, пришлось отдавать.

Пару лет назад я (в очередной раз) пересел на Убунту, да так уже и не смог больше с неё слезть: чем дальше, тем больше к ней привязывался и тем сильнее раздражала и не нравилась Windows. Жене на нетбук, разумеется, — Ubuntu Netbook Edition. Я также поставил Убунту тёще (живущей за тысячи километров от меня), и, хоть прошло уже более года, никаких серьёзных проблем ни с компьютером, ни с тёщей не возникло. На рабочем ноутбуке основной системой является также Убунту, а для программ, которые необходимо запускать в Windows, используется бесплатный VMware Player (и Windows, шедшая с ноутом в комплекте).

Короче говоря, альтернатив этой системе я не рассматривал и ни разу не собирался.
Много-премного картинок, гигабайты трафика...

Kismet

Время на прочтение7 мин
Количество просмотров87K
Kismet — это многофункциональная бесплатная утилита для работы с беспроводными сетями Wi-Fi. Пользователям она знакома в основном по статьям на тему взлома, где программа используется для обнаружения скрытых сетей или захвата пакетов. Взламывать чужие сети — плохо, а между тем Kismet — это гораздо больше чем отмычка в руках злоумышленника. В арсенале инженера информационной безопасности эта программа становится прекрасным инструментом для наблюдения и анализа эфира 802.11.
Читать дальше →

Кубик Рубика на canvas

Время на прочтение2 мин
Количество просмотров9.1K
Недавние посты об алгоритме сборки кубика 5×5 сподвигли меня написать эмулятор кубика на канвас. Автором статей про сборку предлагался свой кубик на OpenGL, но он мне многим не понравился. Надеюсь, с моим кому-нибудь удастся освоить алгоритм быстрее. Некоторые особенности и преимущества:
  • Кроссплатформенность, кроссбраузерность (IE за браузер не считаем), ненужность инсталлятора и прочие преимущества веб-приложения.
  • Поддержка кубиков от 2×2 и до бесконечности (пока грани не станут сильно маленькими и рендеринг не начнёт жестоко тормозить). В интерфейс вынесено до 11×11, но в библиотеке ограничений нет.
  • Псевдообъёмные грани для красоты.
  • Бесконечный undo-буфер.
  • Возможность замеса кубика (shuffle).
  • Слои вращаются легко и интуитивно, быстро привыкаешь. Крутить весь кубик (мышкой с зажатым шифтом или правой кнопкой) не так легко, но тоже можно привыкнуть.
  • Вся библиотека компактная, размещается в одном js-файле и не имеет никаких внешних зависимостей.
  • Лицензия MIT, а также открытые и не очень страшные исходники позволяют вставить кубик на ваш сайт и доработать по вкусу.
Читать дальше →

Делаем свои плагины для Chrome мультиязычными

Время на прочтение2 мин
Количество просмотров2.1K
image
У вас есть плагин для Chrome на русском или на английском языке, но аудитория плагина намного шире и не только на выбранном вами языке? Тогда прошу подкат.
Читать дальше →

Обратные вызовы и исключения С++

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

Введение


Как известно, многие С-библиотеки используют обратные вызовы для обеспечения какого-либо функционала. Так поступает, например, библиотека expat для реализации SAX модели. Обратный вызов или callback используется для возможности выполнить пользовательский код на стороне библиотеки. Пока такой код не несет побочных эффектов — все нормально, но как только на арене появляется С++, все, как всегда, становится нетривиальным.

Читать дальше →

Из чего готовят Google Analytics Cookies

Время на прочтение3 мин
Количество просмотров23K
печеньки
Добрый день.
Недавно одни из наших заказчиков выразили желание получать дополнительную информацию о посетителях своего сайта, конкретнее — о людях, заполнивших контактную форму. Это крупная европейская компания и им хотелось бы «фильтровать» своих потенциальных клиентов. Поясню на примере — допустим, решают они организовать выставку своего оборудования в Венгрии и им нужно решить, кто из венгров, оставлявших им свои контакты, скорее всего стоящий клиент, а кто «мимо проходил».
Основными показателями «надежности» клиента для нас стали: число посещений сайта, время проведенное на сайте, количество просмотренных страниц. Всю эту информацию мы получили из Google Analytics Cookies.

Что же из себя представляют печеньки от Google?

Читать дальше →

Как выучить любой язык за 3 месяца?

Время на прочтение6 мин
Количество просмотров99K
Перевод статьи Тима Ферриса из его блога.

image

(Учебник Дзюдо Окано Исао, который я использовал для изучения японской грамматики)

Изучение языка не должно быть сложным.

Принципы когнитивной нейронауки и управления временем могут быть применены для достижения свободного владения языком на разговорном уровне (в данном случае определяется как 95%+ процентов понимания и 100% выразительных возможностей) в течение 1-3 месяцев.

Время прочтения: 15 минут

WTF is a SuperColumn? Введение в модель данных Cassandra

Время на прочтение17 мин
Количество просмотров11K
Это перевод статьи, датированной 1м сентября 2009 года, следует это учесть при прочтении. — прим. пер.

В последний месяц или два команда инженеров Digg потратила совсем немного времени на изучение, тестирование и окончательное внедрение Cassandra в продакшен. Это был очень веcёлый проект, но до того, как веселье началось, нам пришлось потратить какое-то время на выяснение того, что же представляет собой модель данных Cassandra… фраза «WTF is a «super column»» («что за фигня этот суперстолбец?») была произнесена не один раз.

Если вы работали ранее с РСУБД (это касается почти всех), вы вероятно будете немного обескуражены некоторыми названиями при изучении модели данных Cassandra. Мне и моей команде в Digg потребовалось несколько дней обсуждений, прежде чем мы «врубились». Пару недель назад в списке рассылки разработчиков шёл процесс bikeshed-а на тему полностью новой схемы именования для разрешения неразберихи. На всём протяжении дискуссии я думал: «может, если будет несколько нормальных примеров, люди не будут так смущены названиями». Так, это моя попытка объяснения модели данных Cassandra; она предназначена для того, чтобы вы ознакомились, но не уходили в дебри, и, надеюсь, это поможет прояснить некоторые вещи.

Читать дальше →

TabCandy — новая функция доступна для тестирования в Firefox 4 beta

Время на прочтение1 мин
Количество просмотров985
Новая функция TabCandy пока находится в разработке, но уже доступна для тестирования.
TabCandy похожа на смесь Expose и Spaces из MacOsX. Например, при большом количестве открытых табов вы можете взглянуть на них «сверху». Помимо этого табы можно организовывать в группы, и сфокусировавшись на работе с одной группой, а остальный все еще будут открыты, просто не будут видны.
Для лучшего понимания посмотрите видео:

via

Электронная очередь абитуриентов

Время на прочтение9 мин
Количество просмотров11K
image

Введение


Хочу рассказать об одной интересной задаче, которая возникла передо мной и моим коллегой в университете. Хоть сейчас и лето, но жизнь там не угасает ни на минуту. Все суетятся, обрабатывают документы, подсчитывают абитуриентов, если все обобщать – сезон поступления в ВУЗы. Учусь я на техническом факультете университета, причем, учусь неплохо, поэтому нам предложили написание электронной очереди для поступления абитуриентов. Не долго думая, я и мой коллега (и по группе и по работе) согласились. Причиной не желания воспользоваться уже какими-то готовыми продуктами для университета стала заоблачная цена данных разработок, которая составляла порядка 300т.р. Может и не много, но для нашего города цена высокая, наверное, поэтому и решили привлечь студентов своего университета, ко всему прочему это ещё и неплохой опыт работы в данной отрасли.
Читать дальше →

Горячие клавиши в шелле

Время на прочтение3 мин
Количество просмотров114K
Посвящается B_dot, пост которого заставил заинтересоваться возможностями консоли плотнее.
cat /dev/cheat-sheet >> /dev/head

Краткое вступление


В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в bash'e. Сочетания клавиш я дополнительно проверял на циске (Cisco IOS Software, s72033_rp Software (s72033_rp-ADVIPSERVICESK9_WAN-M), Version 12.2(33)SXH4), csh и zsh. Рассмотренное в других записях повторять особо не буду. Сочетания сгруппированы по использованной функциональной клавише.
Особенно полезен этот текст будет людям, которые любят использовать клавиши Home, End и Delete (которые в цисковой консоли «не работают»).
Читать дальше →

Информация

В рейтинге
Не участвует
Откуда
Brisbane, Queensland, Австралия
Зарегистрирован
Активность

Специализация

Специалист
C#
C++