За те 9 лет, что я занимаюсь программированием, в мою асю пришло несколько сотен просьб о помощи, от менее опытных, начинающих программистов. И вот, когда сегодня, в очередной раз, незнакомый человек попросил помочь ему написать плагин для вордпресс (код которого, честно говоря, я в глаза ни разу не видел), я решил написать небольшой гайд, который бы помог начинающим программистам правильно обращаться за советом к более опытным.
Бурдаков Даниил @burdakovd
Разработчик ПО
Читаем QR код
5 min
1.1MTutorial

В статье рассмотрены базовые особенности QR кодов и методика дешифрирования информации без использования вычислительных машин.
Иллюстраций: 14, символов: 8 510.
+605
Достала избыточность С++
3 min
21K
Меня вводит в ступор С++. Вот просто, зависаю над монитором, смотрю в окно, попиваю чай… И начинаю жалеть за бесценно проведенные годы за изучением стандарта С++, попытками написать свой фронт-энд компилер. Эти мудреные книжки С++ In Depth. Как же я негодовал, когда не понимал кода из книги Александреску. Как записывал все постулаты Страуструпа и иже с ними. Зачем? Вот спрашиваю себя, зачем я теперь все это знаю. Более, я хочу сказать, что этот язык нещаден для гуру, не с медицинской, не с экономической точки зрения! Он не оправдывает усилий, вложенных в его изучение — раз. На практике, он экономически не выгоден — два. И нервные клетки подтвердят, что сопровождать чужой плюснутый код — бывает опасно для здоровья -три. Пусть тут будут рандомно разбросаны метафоры, пишу как есть, из опыта.
+274
Дерево ван Эмде Боаса
6 min
19K
Сегодня я расскажу вам об одной интересной структуре данных, про которую слышали лишь немногие и про которую очень незаслуженно мало написано в рунете, да и в англоязычном информации, в общем-то, тоже негусто. Решено было исправить ситуацию и поделиться с общественностью в доступной форме этой достаточно экзотической структурой данных.
Дерево ван Эмде Боаса (van Emde Boas tree) — ассоциативный массив, который позволяет хранить целые числа в диапазоне [0; U), где U = 2k, проще говоря, числа, состоящие не более чем из k бит. Казалось бы, зачем нужно еще какое-то дерево, да еще позволяющее хранить только целые числа, когда существует множество различных сбалансриованных двоичных деревьев поиска, позволяющих выполнять операции вставки, удаления и прочие за O(log n), где n — количество элементов в дереве?
Главная особенность этой структуры — выполнение всех операций за время O(log(log(U))) независимо от количества хранящихся в ней элементов.
+189
FAQ по утечке текстов SMS с сайта «Мегафона»
3 min
7.5KФеерическая история, ставшая сегодня самой популярной новостью дня в сети, вызывает немало кривотолков. Даже люди, близкие к веб-технологиям, не всегда адекватно оценивают произошедшее, что уж говорить о прочей сетевой общественности, часть которой уже объявила случившееся вирусной рекламой. Я постараюсь развеять туман теории заговора в форме ответов на задававшиеся в комментариях вопросы.
+133
Умножение длинных чисел методом Карацубы
7 min
98KНа днях нужно было разобраться с этим алгоритмом, но беглый поиск в google ничего путнего не дал. На Хабре тоже нашлась только одна статья, которая мне не особо помогла. Разобравшись, попробую поделиться с общественностью в доступной форме:
+92
Изучай Хаскель ради добра! Аппликативные функторы
37 min
10KСовсем недавно издательство No Starch Press подготовило и выпустило печатное издание замечательного учебника Learn You a Haskell for Great Good! (онлайн-версия), написанного Miran Lipovača.
Я хочу представить вам самый актуальный перевод главы 11 Аппликативные функторы, оригиналом для которого послужило именно издание от No Starch Press, адаптированное для печати.
Я хочу представить вам самый актуальный перевод главы 11 Аппликативные функторы, оригиналом для которого послужило именно издание от No Starch Press, адаптированное для печати.
+41
Виртуальная машина KLEE для символьного выполнения кода
6 min
4.9KTranslation
В этом посте мы попробуем применить технику символьного выполнения на примере символьной ВМ KLEE для решения простого ASCII-лабиринта. Как вы думаете, сколько верных решений мы сможем найти?


+37
IPO for dummies. Часть I: акции, мажоритарии, контроль над компанией
5 min
16KВо время недавнего обсуждения IPO Яндекса в комментариях прошла дискуссия на тему того, как торгуются акции на бирже, как проходит IPO, кто и какую от него получает пользу. По совету других участников обсуждения выношу в отдельную тему — а точнее, в серию тем — небольшой рассказ, который был рассредоточен по нескольким комментариям. Если вы тогда внимательно следили за темой, основная часть рассказа вам уже известна, но тем не менее… Если нет, вы наверняка найдете что-то интересное.
Disclaimer: эта и дальнейшие статьи серии написаны двумя хабраобитателями: honeyman — программистом стартапов, в свободное время экспериментирующим с торговлей на бирже и созданием аналитического софта для этого, в сотрудничестве с kaichik — журналистом и главредом автомобильных проектов. Если вы в предыдущем предложении не заметили слов «финансист», «лицензированные консультативные экономические услуги» и «богатый опыт» — то наверное, это потому, что их там не может быть.
Итак, часть I: акции, мажоритарии, контроль над компанией.
Что такое акции, и для чего они нужны?
Disclaimer: эта и дальнейшие статьи серии написаны двумя хабраобитателями: honeyman — программистом стартапов, в свободное время экспериментирующим с торговлей на бирже и созданием аналитического софта для этого, в сотрудничестве с kaichik — журналистом и главредом автомобильных проектов. Если вы в предыдущем предложении не заметили слов «финансист», «лицензированные консультативные экономические услуги» и «богатый опыт» — то наверное, это потому, что их там не может быть.
- Часть I: акции, мажоритарии, контроль над компанией.
- Часть II: стоимость акций, биржа, самый лучший способ торговать картошкой, и кого же можно встретить на
рынкебирже. - Часть III: процесс IPO, его польза для компании, основателей и владельцев, а также почему у руководства компании при открытии торгов такой замученный вид.
- Часть IV: влияние IPO на доход от адулт-партнёрок.
- Часть V: жизнь после IPO.
- Часть VI: сложности выбора — два Lamborghini Gallardo или один Aventador?
- Часть VII: про инсайд.
- Часть VIII: о мотивации.
Итак, часть I: акции, мажоритарии, контроль над компанией.
Что такое акции, и для чего они нужны?
+217
Передача пароля по открытому каналу (часть 2)
2 min
14KВ первой части статьи обсуждалась ситуация, когда для защиты трафика мы по каким-либо причинам не можем использовать https. При этом, передаваемый в открытом виде пароль становится легкой добычей мошенников. Предложенный в статье метод позволял избавится от угрозы перехваты пароля или от кражи БД хэшей паролей, но был бессилен перед злоумышленником, который и БД владеет и контролирует трафик. Предлагаемый ниже метод безопаснее, но сложнее.
+31
Жадные алгоритмы
4 min
206K
Есть много методов решения тех или иных задач: динамическое программирование, перебор. Не менее известными и довольно распространенными являются жадные алгоритмы.
Думаю, каждый программист в своей жизни хотя бы раз написал жадину, может быть, даже не задумываясь об этом. Что же это такое? Добро пожаловать под кат.
+94
Безопасность плагинов Google Chrome
9 min
29KС каждым днем Google Chrome становится все более и более популярен. Его создатели проделали большую работу, разработав платформу для создания расширений для браузера. Они несут в себе дополнительный функционал, но и новую опасность.


+93
Новый алгоритм для депикселизации графики
1 min
8.9K
Сотрудник Microsoft Research Йоханнес Копф (Johannes Kopf) совместно с профессором Дани Лисчински опубликовали научную работу (dropbox, narod.ru, depositfiles.com) с описанием нового алгоритма депикселизации, который значительно превосходит все существующие методы. Разница в качестве действительно колоссальна.
+192
Наивный Байесовский классификатор в 25 строк кода
3 min
90KНаивный Байесовский классификатор один из самых простых из алгоритмов классификации. Тем не менее, очень часто он работает не хуже, а то и лучше более сложных алгоритмов. Здесь я хочу поделиться кодом и описанием того, как это все работает.
И так, для примера возьму задачу определения пола по имени. Конечно, чтобы определить пол можно создать большой список имен с метками пола. Но этот список в любом случае будет неполон. Для того чтобы решить эту проблему, можно «натренировать» модель по маркированным именам.
Если интересует, прошу
И так, для примера возьму задачу определения пола по имени. Конечно, чтобы определить пол можно создать большой список имен с метками пола. Но этот список в любом случае будет неполон. Для того чтобы решить эту проблему, можно «натренировать» модель по маркированным именам.
Если интересует, прошу
+37
Компьютер-флэшка за $25
1 min
28K
На фото к компьютеру подключен 12-мегапиксельный камера-модуль
Конечно, в последнее время компьютеры сильно подешевели, но английский разработчик игр Дэвид Брабен* опустил планку до рекордного уровня. Созданный им сверхминиатюрный компьютер Raspberry Pi будет продаваться по цене всего лишь $25.
Это полноценный компьютер общего назначения под Ubuntu 9, с процессором ARM11 на 700 МГц, 128 МБ SDRAM, поддержкой OpenGL ES 2.0 и USB 2.0, композитным и HDMI видеовыходами, а также I/O портом общего назначения, куда можно подключить, например, видеокамеру.
+225
Быстрое умножение многочленов при помощи преобразования Фурье — это просто
9 min
81KДобрый вечер.
Этот пост посвящён быстрому преобразованию Фурье. Будут рассмотрены прямое и обратное преобразования (в комплексных числах). В следующей части я планирую рассмотреть их применения в некоторых задачах олимпиадного программирования (в частности, одна задача про «похожесть» строк), а также рассказать про реализацию преобразования в целых числах.
БПФ — это алгоритм, вычисляющий значения многочлена степени n=2k в некоторых n точках за время O(n⋅logn) («наивный» метод выполняет ту же задачу за время O(n2)). За то же время можно выполнить и обратное преобразование. Так как складывать, вычитать и умножать массивы чисел гораздо легче, чем многочлены (особенно умножать), БПФ часто применяется для ускорения вычислений с многочленами и длинными числами.
Этот пост посвящён быстрому преобразованию Фурье. Будут рассмотрены прямое и обратное преобразования (в комплексных числах). В следующей части я планирую рассмотреть их применения в некоторых задачах олимпиадного программирования (в частности, одна задача про «похожесть» строк), а также рассказать про реализацию преобразования в целых числах.
БПФ — это алгоритм, вычисляющий значения многочлена степени n=2k в некоторых n точках за время O(n⋅logn) («наивный» метод выполняет ту же задачу за время O(n2)). За то же время можно выполнить и обратное преобразование. Так как складывать, вычитать и умножать массивы чисел гораздо легче, чем многочлены (особенно умножать), БПФ часто применяется для ускорения вычислений с многочленами и длинными числами.
+98
Еще одна визуализация ряда алгоритмов и структур данных
1 min
20K
Университет Сан-Франциско создал с использованием HTML5 коллекцию визуализаций различных алгоритмов и структур данных. Посмотреть и потыкать кнопки можно вот тут.
Список визуализированных алгоритмов и структур данных со ссылками под катом.
+76
Пайпы, the pythonic way
3 min
19KОдни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
Не в Питоне?
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ляxs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то такresult = [x for x in range(100)] \
| where(lambda x: x % 3 == 1)) \
| sum \
| my_function
Не в Питоне?
+79
Дети выросли… и позвонили родителям
1 min
17KПривет всем хабражителям!
Мы выпустили новый социальный ролик, а о чем — не скажем, смотрите до конца :)
Мы выпустили новый социальный ролик, а о чем — не скажем, смотрите до конца :)
+35
delete, new[] в C++ и городские легенды об их сочетании
5 min
73KЕсли в коде на C++ был создан массив объектов с помощью «new[]», удалять этот массив нужно с помощью «delete[]» и ни в коем случае не с помощью «delete» (без скобок). Разумный вопрос: а не то что?
На этот вопрос можно получить широчайший спектр неразумных ответов. Например, «будет удален только первый объект, остальные утекут» или «будет вызван деструктор только первого объекта». Следующие за этим «объяснения» не выдерживают обычно никакой серьезной критики.
В соответствии со Стандартом C++, в этой ситуации поведение не определено. Все предположения – не более чем популярные городские легенды. Разберем подробно, почему.
На этот вопрос можно получить широчайший спектр неразумных ответов. Например, «будет удален только первый объект, остальные утекут» или «будет вызван деструктор только первого объекта». Следующие за этим «объяснения» не выдерживают обычно никакой серьезной критики.
В соответствии со Стандартом C++, в этой ситуации поведение не определено. Все предположения – не более чем популярные городские легенды. Разберем подробно, почему.
+57
Information
- Rating
- Does not participate
- Location
- London, England - London, Великобритания
- Works in
- Date of birth
- Registered
- Activity