Search
Write a publication
Pull to refresh
51
0
Антон Сердюк @m00t

Software Engineer

Send message

На пути к Skein: просто и понятно про Blowfish

Reading time9 min
Views52K
«От желудка иглобрюхих рыб отходят мешковидные выросты. При появлении опасности они наполняются водой или воздухом, из-за чего рыба становится похожой на раздувшийся шар
с торчащими шипиками. Шарообразное состояние делает рыб практически неуязвимыми. Если всё же достаточно крупный хищник попытается проглотить такой шар, то он застревает
в глотке у хищника, который впоследствии умирает»


                                Википедия, свободная энциклопедия.

К концу 1993 года в мире криптографии возникла очень неловкая ситуация. Алгоритм симметричного шифрования DES, со своим слабеньким 56-битным ключом, был близок к фиаско, а существующие
на тот момент альтернативные варианты, такие как Khufu, REDOC II, IDEA были защищены патентами
и не доступны для свободного использования. Алгоритмы RC2 и RC4, разработанные в то время компанией RSA Security, также требовали проведение процедуры лицензирования. И в целом, индустрия криптографии в рамках государственных организаций и крупных корпораций была
обращена в сторону использования секретных алгоритмов, таких как Skipjack.

Возник определенный ваккум. Необходим был алгоритм шифрования, более криптостойкий нежели отмирающий DES, и в то же время без каких-либо ограничений на право своего использования.

И он появился.
Читать дальше →

Какова роль первого «случайного» слоя в перцептроне Розенблатта

Reading time6 min
Views5.9K
Итак в статье Перцептрон Розенблатта — что забыто и придумано историей? в принципе как и ожидалось всплыло некоторая не осведомленность о сути перцептрона Розенблатта (у кого-то больше, у кого-то меньше). Но честно говоря я думал будет хуже. Поэтому для тех кто умеет и хочет слушать я обещал написать как так получается, что случайные связи в первом слое выполняют такую сложную задачу отображения не сепарабельного (линейно не разделимого) представления задачи в сепарабельное (линейно разделимое).

Честно говоря, я мог сослаться просто на теорему сходимости Розенблатта, но так как сам не люблю когда меня «посылают в гугл», то давайте разбираться. Но я исхожу из-то, что Вы знаете по подлинникам, что такое перцептрон Розенблатта (хотя проблемы в понимании всплыли, но я все же надеюсь что только у отдельных людей).

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

Путь к проведению SQL-инъекций в Zend Framework

Reading time3 min
Views6.2K
Возможно, слегка громкое название статьи, но вопрос поднят именно этот.

Момент первый


Если следовать всем правилам, т.е. использовать внутренние механизмы Zend, подготавливать параметры в методах — то на данный момент нет информации о возможности проведения sql-инъекции. Речь идет о подобных конструкциях:
$select->order($value);

Которые так или иначе встречаются на практике.

Момент второй


В чем же соль? В том, что даже при поступлении параметров в подобные методы без какой-либо подготовки внутренние механизмы все же их подготавливают. Только не все (а некоторые частично) — об этом и речь.
Читать дальше →

Переопределение функций в PHP 5.3

Reading time2 min
Views11K
PHP 5.3 давно уже не новость и написано о нем прилично(да и приелся он как-то после выхода версии 5.4). Тем не менее, хотелось бы поставить акцент на одной его особенности.

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

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

Emacs для начинающих: введение

Reading time4 min
Views26K

Ist das Emacs? Sehr gut!



Начну с небольшой истории. Лет так 15 назад ездил я на подработку сисадмином программистом в славный городе Mannheim, West Germany. Когда я приехал на работу и развернул своё рабочее окружение, большинство дойчей вообще не сильно поняли в чём я работаю, а вот директор конторы сразу мне сказал: «Ist das Emacs? Sehr gut!», добавив также что никто кто из текущих программистов не смог его освоить. А по честному, не такой уж я особенный — мне просто повезло: готовый конфиг мне дал один добрый человек, и помог мне разобраться с редактором на первых шагах. Я, в свою очередь хочу поделиться своим опытом с остальными, и решил сделать серию статей для начинающих и не очень, с рассмотрением разных полезных фич emacs.

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

Плоттер из конструктора FISCHERTECHNIK

Reading time2 min
Views19K
У меня уже давно возникала идея построить что-то из области станков с ЧПУ. Но постоянно возникали препятствия на пути реализации моих творческих порывов: то времени нет, то проблема с инструментом или деталями для механизмов. И когда мне в руки попал детский конструктор FISCHERTECHNIK, я понял – вот оно!

Итак, строим плоттер с программным управлением.
Читать дальше →

Домашний сервер. Часть 2. FTP, Samba и rTorrent

Reading time7 min
Views82K
Пришло время организовывать файловое хранилище, как внутри сети так и снаружи. Данная статья является продолжением первой части, посвященной настройки WiFi роутера на Вашем домашнем сервере. Все жесткие диски с Вашего домашнего компьютера(кроме системного) можно перенести на сервер, поскольку скорость передачи данный колеблется в районе 10-20 мегабайт в секунду [данный параметр еще и очень сильно зависит от модели Вашего жесткого диска], да и кстати, давно уже пора для системного диска покупать SSD накопители.
Читать дальше →

Пишем драйвер для самодельного USB устройства

Reading time13 min
Views179K
Целью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.

На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
Читать дальше →

Установка видеонаблюдения на избирательных участках

Reading time7 min
Views13K
Доброго времени суток.
Кратко о себе: студент 5 курса специальности «Организация и технология защиты информации». В один прекрасный день я попал на подработку – установку видеонаблюдения на избирательных участках.
Пролистав комментарии к статье, я решил поделиться с хабрасообществом техническими, и не очень техническими сведениями о системе видеонаблюдения на предстоящих выборах.
Читать дальше →

Разработка простого Eclipse RCP приложения

Reading time9 min
Views70K
В данной статье я хотел рассказать о том, как создавать приложения при помощи Eclipse RCP (Rich Client Platform). Поводом для написания послужил тот факт, что на Хабре абсолютно отсутствуют статьи, описывающие данную платформу. В качестве примера мы создадим пользовательскую форму ввода; корректность данных будет проверяться при помощи JFace Data Binding framework. Для затравки приведу ниже скриншот с тем, что у нас должно получиться.



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

Compile-time проверка в C/C++

Reading time3 min
Views15K
C/C++ позволяют выполнить проверки константных выражений ещё на этапе компиляции программы. Это дешёвый способ избежать проблем при модификации кода в будущем.
Я рассмотрю работу с:
  • перечислениями (enum),
  • массивами (их синхронизацию с enum),
  • switch-конструкциями,
  • а так же работу с классами, содержащими разнородные данные.

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

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Reading time6 min
Views18K

Предисловие


Данный текст является переводом и сокращённым пересказом начальных глав книги Чарльза Э. Хоара. Целью является ознакомление русскоязычной аудитории с данной алгеброй исчисления процессов, коя нашла достаточно широкое применение в современной вычислительной науке в связи с большим распространением параллельных систем. Наиболее близкими и понятными практическими применениями CSP, думаю, будут являться следующие языки программирования:

CSP является формальным математическим языком, позволяющим описывать взаимодействие параллельных систем, основным его применением является формальная спецификация параллельной работы систем, например таких как Транспьютер, кроме того он применяется при разработке высоконадёжных площадок электронной торговли.
В данной статье будут рассказаны основы данной алгебры, без которой невозможно её дальнейшее изучение, в основном это базовое описание процесса, что покрывает первую половину первой главы книги.
Читать дальше →

Почему я выбираю D

Reading time19 min
Views14K

Вместо введения


Добрый день, Хабралюди.
Хотел бы поделиться со всеми моим скромным опытом выбора языка программирования для своих проектов. Сразу хочу подчеркнуть – я выбирал язык исходя из собственных нужд, и, вполне вероятно, что ваш выбор в аналогичных условиях может быть другим. Все же я искренне надеюсь, что эта статья будет полезной, так как в ней достаточно подробно и аргументировано проводится сравнение D с C++ и C#, а так же упоминаются свыше десяти различных языков, принадлежащих к различным классам и реализующих различные парадигмы. Сам D разрабатывается как высокоуровневый язык для системного и прикладного программирования.
Читать дальше →

Производительность shared_ptr и C++11: почему я не верю библиотекам

Reading time5 min
Views25K
Здравствуйте!

Оптимизировал я однажды критический участок кода, и был там boost::shared_ptr… И понял я: не верю я библиотекам, хоть и пишут их дядьки умные.

Детали под катом.
Читать дальше →

Почему мы создали Джулию, новый ЯП для технических вычислений

Reading time3 min
Views10K
Если вкратце, потому что мы жадные.

Мы продвинутые пользователи Matlab. Некоторые из нас хакеры Lisp. Некоторые питонисты, другие рубисты, есть ещё Perl-хакеры. Среди нас есть такие, кто использовал Mathematica раньше, чем у него начали расти волосы на лице. Есть и такие, у кого до сих пор не выросли. Мы построили больше графиков на R, чем способен любой здравомыслящий человек. C — это язык, который мы бы взяли на необитаемый остров.

Мы любим все эти языки; они прекрасны и могучи. Для той работы, которую мы делаем — научные вычисления, машинное обучение, дата-майнинг, крупномасштабная линейная алгебра, распределённые и параллельные вычисления — каждый идеально подходит в определённом аспекте, но ужасен в других. Каждый из них — это компромисс.

Мы жадные: мы хотим больше.
Читать дальше →

Реконизм

Reading time3 min
Views3.7K
Меня всегда удивляло отношение многих к анонимности и криптографии, как к универсальному средству борьбы с мировым злом. Стоит появиться новости о том, что где-то правительство закручивает гайки, или копирасты проталкивают очередной идиотский законопроект, обязательно возникает комментарий в духе “Ха! Вот мы щас I2P и TrueСrypt из широких штанин достанем, и они утрутся...” Нет, безусловно, в определённых ситуациях шифроваться можно и нужно. Анонимность может спасти жизнь в стране, где принято казнить людей, несогласных с тем, что текущий вечно живой вождь мудро ведёт свой народ к процветанию, а временные перебои с поставками продовольствия — всего лишь досадная мелочь. Но уход в подполье — это последняя надежда, аппарат искусственного дыхания для умирающей свободы, а не оружие победы.

Как-то раз я наткнулся в Сети на вики-проект со странным названием “Реконизм”. Что-то про новый общественный строй и светлое будущее. Но, пообщавшись с автором проекта и углубившись в чтение, убедился, что Рома Петров (@rpetrov) — совершенно нормальный и вменяемый человек, а не маньяк-графоман, точно знающий “как нам обустроить Россию” и черпающий вдохновение в задушевных беседах с инопланетянами. Его отношение к приватности и анонимности почти совпадало с моим, а многие статьи на его вики выглядели воплощением моих задумок и черновиков. Слово за слово, мы дообщались до того, что написали целую книгу о взаимной прозрачности, децентрализации и викификации общества. Пожалуй, одним из самых сильных стимулов к написанию книги было то, что нам так и не удалось найти изданий на русском языке, раскрывающих тему информационной прозрачности.
Читать дальше →

Учимся писать модуль ядра (Netfilter) или Прозрачный прокси для HTTPS

Reading time19 min
Views34K
Эта статья нацелена на читателей, которые начинают или только хотят начать заниматься программированием модулей ядра Linux и сетевых приложений. А также может помочь разобраться с прозрачным проксированием HTTPS трафика.

Небольшое оглавление, чтобы Вы могли оценить, стоит ли читать дальше:
  1. Как работает прокси сервер. Постановка задачи.
  2. Клиент – серверное приложение с использованием неблокирующих сокетов.
  3. Написание модуля ядра с использованием библиотеки Netfilter.
  4. Взаимодействие с модулем ядра из пользовательского пространства (Netlink)

P.S. Для тех, кому только хочется посмотреть на прозрачный прокси-сервер для HTTP и HTTPS, достаточно настроить прозрачный прокси-сервер для HTTP, например, Squid с transparent портом 3128, и скачать архив с исходниками Shifter. Скомпилировать (make) и, после удачной компиляции, выполнить ./Start с правами root. При необходимости можно поправить настройки в shifter.h до компиляции.
Читать дальше →

Распределенные эволюционные вычисления

Reading time1 min
Views5.5K


Одна из моих любимых тем в программировании – эволюционные вычисления и генетические алгоритмы в частности. Пару лет назад я поднимал эту (в целом уже заезженную) тему на Хабре, но сейчас глядя на то видео немного стыдно – слишком уж туманно и сумбурно было объяснение.

Сегодня я постараюсь объяснить генетические алгоритмы проще и нагляднее, а заодно рассказать вкратце о прототипе очень простого JavaScript-фреймворка для распределенных генетических вычислений degas.js. В двух словах – degas.js запускает генетический алгоритм в виде «треда» в браузере клиента используя web workers и обменивается информацией о полученных в ходе эволюции индивидуумах с сервером и другими клиентами с помощью web sockets. Сервер использует node.js.

Degas.js пока в супер-зародышевом состоянии, функционал еще примитивен, а код некрасив, но если кто-то захочет присоединиться к разработке – было бы здорово.

Точное вычисление геометрических предикатов

Reading time7 min
Views10K
Доброго вам дня, коллеги. Предлагаю вам прочитать статью о базовом аспекте вычислительной геометрии — точном вычислении предикатов.

Возможно, многие из вас сталкивались со «странным» поведением реализаций алгоритмов вычгеома: падениями и некорректными результатами. В общем, ничего удивительного в этих странностях нет — это издержки переноса непрерывной геометрии в суровые дискретные реалии арифметики с плавающей точкой. Рискну предположить, что кто-то из вас, отлаживая свои алгоритмы, решал подобные проблемы, подбирая магические константы. Скорее всего, если этот способ и приводил к результату, то, вероятно, к временному.

В этой статье я расскажу, как избавиться от недостатков вычислений с плавающей точкой практически без ущерба для эффективности. План статьи:
  • геометрический предикат «поворот»;
  • противоречивость «наивной» реализации поворота;
  • применение интервальной арифметики для упрощения расчета предикатов;
  • длинная арифметика и несколько альтернативных способов вычислений предикатов;
  • расчет погрешности вычисления поворота в числах с плавающей точкой.

Итак, если вы хотите знать, почему вычислительная геометрия не является «наукой о подборе эпсилонов» и как можно корректно и эффективно реализовать геометрический алгоритм, жмите
Читать дальше →

Оптимизация ORDER BY — о чем многие забывают

Reading time2 min
Views73K
На тему оптимизации MySQL запросов написано очень много, все знают как оптимизировать SELECT, INSERT, что нужно джоинить по ключу и т.д. и т.п.

Но есть один момент, тоже неоднократно описанный во всех мануалах, но почему-то про него все забывают.
Читать дальше →

Information

Rating
Does not participate
Date of birth
Registered
Activity