Как стать автором
Обновить
1
0

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

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

Развертывание Mercurial репозиториев через FastCGI с использованием Nginx на FreeBSD

Время на прочтение5 мин
Количество просмотров1.7K
Поддался я влиянию моды и захватывающим перспективам DVCS с недавних пор. Это вытолкнуло меня с наезженной колеи Subversion + Trac и заставило искать новые схемы как хранить исходные тексты в разных компаниях. И предоставлять для них удобный доступ разработчикам, заказчикам и другим заинтересованным личностям.

Так сложилось, что я специализируюсь во FreeBSD и не так хорошо разбираюсь в Linux'ах. И еще предпочитаю где можно использовать Nginx вместо Apache httpd. Поэтому решил я сделать для себя унифицированную архитектуру, которая позволит хранить неограниченное количество репозиториев и разграничивать для них доступ различных группам людей на этой платформе.

Само собой, Bitbucket — наше все. Но у любого разработчика есть закрытые проекты, которые в паблик выкладывать не хотелось бы. Можно, конечно, платить $50 в месяц за возможность хостить 25 проектов на bitbucket'е. Я лично считаю, что лучше эти деньги потратить на dedicated сервер и поднять себе сколько угодно проектов. Будет не так удобно, но зато свое и с возможностью тюнинга, бекапа и других вкусностей.

Читать дальше →
Всего голосов 11: ↑9 и ↓2+7
Комментарии2

Нейронные сети, основанные на гомеостатических нейронах: самоорганизация и целенаправленное поведение

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

Введение


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

Сразу оговорюсь, что эта модель не претендует никоим образом на прототип ИИ. Мы скорее хотели исследовать возможность самоорганизации и перспективы возникновения целостного целенаправленного поведения в динамической системе «эгоистичных» (гомеостатических) нейронов.
Как мне кажется, для более полного понимания логики работы модели будет полезно прочитать мой топик про Теорию функциональных систем, однако опять же это на ваше усмотрение.

Поехали!
Читать дальше →
Всего голосов 68: ↑62 и ↓6+56
Комментарии34

Нейроны в действии

Время на прочтение7 мин
Количество просмотров5.1K
Начиная знакомство с нейронными сетями и нейронами в частности, зачастую трудно представить как «оно» работает прочитав сухую теорию. Поэтому я предлагаю вам рассмотреть нейрон решающей простую, но очень наглядную задачу.

Задача: Определить четность или нечетность числа по его двоичному представлению.

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

Читать дальше →
Всего голосов 28: ↑25 и ↓3+22
Комментарии21

Точное время 0100 часов 010111 минут

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

KT102B1_012.png - image uploaded to PicamaticДолго выбирал блог между «Я безумный», «Странные вещи» и «Я пиарюсь»...



Началось всё с того, что мне подарили двоичные часы. Оказалось, что двоичная система не такая уж неудобная.



Под катом вы узнаете, что случилось с моим мозгом («Я безумный»), что я сделал («Странные вещи»), и как такое же заполучить себе («Я пиарюсь»).


Читать дальше →
Всего голосов 97: ↑86 и ↓11+75
Комментарии147

PenSpinning — спорт для программистов!

Время на прочтение1 мин
Количество просмотров4.2K
image
Что такое PenSpinning? Это, можно сказать, эдакий вид спорта. На русский правильнее всего переводится «манипулирование ручкой». Сам он появился относительно недавно и распространен в России мало, хотя в азиатских странах развит очень неплохо.
Наверное, каждый, сидев в свое время на лекции, начинал специально или непроизвольно крутить ручку в пальцах — вот это и есть пенспиннинг. Все дело не в том, что и где крутить, а в том, как :) Само по себе это занятие помогает не только скоротать время, но и доставляет массу удовольствия, кроме того, при должной тренировке со стороны это выглядит очень даже круто! В России уже существует несколько сообществ пенспиннеров, и на их умение действительно стоит посмотреть. Кстати, по количеству вариантов моддинга ручек этот «вид спорта» дает сто очков вперед любому другому, например, стритрейсингу!

Ну и, для разогрева, пример!

Сайт российского сообщества пенспиннеров

UPD: все о Penspinning на торрентах:
torrents.ru/forum/viewtopic.php?t=984359
torrents.ru/forum/viewtopic.php?t=1687450
Спасибо юзернейму TimTowdy!
UPD2: Отличная подборка обучающего видео онлайн
Всего голосов 144: ↑120 и ↓24+96
Комментарии109

Автоматическое тестирование программ

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

Введение


Долгое время считалось, что динамический анализ программ является слишком тяжеловесным подходом к обнаружению программных дефектов, и полученные результаты не оправдывают затраченных усилий и ресурсов. Однако, две важные тенденции развития современной индустрии производства программного обеспечения позволяют по-новому взглянуть на эту проблему. С одной стороны, при постоянном увеличении объема и сложности ПО любые автоматические средства обнаружения ошибок и контроля качества могут оказаться полезными и востребованными. С другой – непрерывный рост производительности современных вычислительных систем позволяет эффективно решать все более сложные вычислительные задачи. Последние исследовательские работы в области динамического анализа такие, как SAGE, KLEE и Avalanche, демонстрируют, что несмотря на присущую этому подходу сложность, его использование оправдано, по крайней мере, для некоторого класса программ.

Читать дальше
Всего голосов 27: ↑25 и ↓2+23
Комментарии9

Забавляемся с хешами

Время на прочтение5 мин
Количество просмотров89K
Привет. Я хочу показать вам небольшой фокус. Для начала вам потребуется скачать архив с двумя файлами. Оба имеют одинаковый размер и одну и ту же md5 сумму. Проверьте никакого обмана нет. Md5 хеш обоих равен ecea96a6fea9a1744adcc9802ab7590d. Теперь запустите программу good.exe и вы увидите на экране следующее.
Попробуйте запустить программу evil.exe.
Что-то пошло не так? Хотите попробовать сами?
Тогда добро пожаловать под кат.
Всего голосов 264: ↑254 и ↓10+244
Комментарии123

Статистика по книге «HTML5: Up & Running»

Время на прочтение2 мин
Количество просмотров4K
Марк Пилгрим выложил статистику по книге «HTML5: Up & Running», которая опубликована издательством O'Reilly в августе 2010-го. Хотя этот справочник по HTML5 доступен бесплатно на сайте Dive Into HTML5 (под лицензией Creative Commons Attribution), в первые шесть недель было продано более 14 000 копий (из них 25% в цифровой форме). Таким образом, издательство O'Reilly быстро окупило все расходы. Сейчас Пилгрим получил первый чек сверх того, что издательство платило ему авансом в течение года работы над книгой.

Из четырёх написанных справочников Пилгрима это лишь второй после Питона, который окупился до такой стадии. Автор считает, что открытая модель публикации привлекла внимание к книге, благодаря чему было получено 1500 предварительных заказов ещё до появления её в магазинах.
Читать дальше →
Всего голосов 51: ↑46 и ↓5+41
Комментарии30

Перехват системных вызовов с помощью ptrace

Время на прочтение4 мин
Количество просмотров34K
ptrace (от process trace) — системный вызов в некоторых unix-подобных системах (в том числе в Linux, FreeBSD, Max OS X), который позволяет трассировать или отлаживать выбранный процесс. Можно сказать, что ptrace дает полный контроль над процессом: можно изменять ход выполнения программы, смотреть и изменять значения в памяти или состояния регистров. Стоит оговориться, что никаких дополнительных прав при этом мы не получаем — возможные действия ограничены правами запущенного процесса. К тому же, при трассировке программы с setuid битом, этот самый бит не работает — привилегии не повышаются.

В статье будет показано, как перехватывать системные вызовы на примере ОС Linux.
Читать дальше →
Всего голосов 57: ↑54 и ↓3+51
Комментарии9

Взлом программ для чайников

Время на прочтение5 мин
Количество просмотров480K
Disclaimer: всё ниженаписанное написано исключительно с просветительскими и исследовательскими целями, а также понимания механизмов защиты от взлома. Автор ни в коем случае не рекомендует использовать данную информацию для взлома программ.

В данной статье я хочу рассказать про три с половиной основных способа взлома программ на .NET, цель, которую я преследую — помочь разработчикам лучше понять механизмы защиты своих программ, т.е. выяснить наиболее очевидные угрозы и предпринять соответствующие меры (или не принимать).

Я не буду углубляться в детали и использовать сложные инструменты для взлома. Всё будет расписано «для чайников», т.е. все инструменты будут простыми, легкодоступными и бесплатными. А основным будет Reflector, декомпилятор программ под .NET

В качестве подопытного кролика я выбрал Expresso — анализатор регулярных выражений. Данная программа бесплатная, в лицензии вроде бы ничего не указано про взлом, но при этом без регистрации она будет работать всего 60 дней. Другими словами, вред от взлома данной программы минимальный, к тому же внутреннее её устройство очень уж хорошо подходит для тренировки. Буду надеяться, что автор данной программы не обидится на меня.
Читать дальше →
Всего голосов 147: ↑138 и ↓9+129
Комментарии47

Защита Win32 и .NET приложений: обзор протектора Themida (X-Protector)

Время на прочтение10 мин
Количество просмотров53K
Этот обзор посвящен Themida (в прошлом X-Protector), одному из самых мощных и надежных протекторов Win32 приложений. Поскольку Themida совсем недавно понадобилась мне для одного из моих приложений, я решил написать по ней небольшой обзор. Заодно попросил автора ответить на некоторые интересующие меня вопросы. Думаю, ответы будут вам тоже интересны. Результаты этого небольшого интервью ищите в конце статьи.

Хочу обратить внимание, что статья написана на базе Themida версии 2.1.3.30, последней на дату написания данного обзора. В ней появилось несколько новых возможностей по части макросов. Демка двухлетней давности с на официального сайта, их лишена.



Читать дальше →
Всего голосов 56: ↑40 и ↓16+24
Комментарии119

Перенаправление функций в разделяемых ELF-библиотеках

Время на прочтение22 мин
Количество просмотров35K
Все мы пользуемся динамически-компонуемыми билиотеками. Их возможности поистине великолепны. Во-первых, такая библиотека загружается в физическое адресное пространство только один раз для всех процессов. Во-вторых, можно расширять функционал своей программы, подгружая дополнительную библиотеку, которая и будет этот функционал обеспечивать. И все это без перезапуска самой программы. А еще решается проблема обновлений. Для динамически компонуемой библиотеки можно определить стандартный интерфейс и влиять на функционал и качество своей основной программы, просто меняя версию библиотеки. Такие методы повторного использования кода даже получили название «архитектура plug-in’ов». Но топик не об этом.

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

Осторожно, много текста!
Всего голосов 81: ↑75 и ↓6+69
Комментарии30

RSA, а так ли все просто?

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

Прелюдия


Доброго времени суток, уважаемые читатели.
Скорее всего, большинству из вас известно, что из себя представляет асимметричный алгоритм шифрования RSA. В самом деле, этому вопросу по всему рунету и на этом ресурсе в частности посвящено столько статей, что сказать о нем что то новое практически невозможно.
Ну что там, ей богу, можно еще придумать и так все давным-давно понятно. Рецепт приготовления прост:
Два простых числа P и Q.
Перемножить до получения числа N.
Выбрать произвольное E.
Найти D=E-1(mod(P-1)(Q-1)).
Для шифрования сообщение M возводим в степень E по модулю N. Для дешифрования криптотекст C в степень D по все тому же модулю N. Все криптопримитив готов. Берем и пользуемся, так? На самом деле, не так. Дело все в том, что это и в самом деле не более чем криптопримитив и в реальном мире все самую чуточку сложнее.
Читать дальше →
Всего голосов 132: ↑124 и ↓8+116
Комментарии21

Пара слов о гибридном шифровании и эллиптических кривых

Время на прочтение8 мин
Количество просмотров10K
Здравствуйте, уважаемые читатели. В качестве предисловия позвольте напомнить, что представляют собой гибридные криптосистемы и почему они получили такое широкое распространение.
Итак, гибридной криптосистемой принято называть способ передачи большого объема зашифрованных данных, при котором данные шифруются секретным ключом с применением симметричного алгоритма (например, AES или DES), а сам ключ передается зашифрованным асимметричным шифром (как, скажем, RSA). Такой способ получил широкое распространение за то, что он вбирает в себя преимущества как симметричной, так и асимметричной криптографии. Большой блок данных шифруется очень быстрым симметричным алгоритмом (и это избавляет от серьезных временных затрат), а ключ шифрования передается надежно зашифрованным с помощью асимметричного алгоритма (и это решает проблему распределения ключей, свойственную только симметричным методам). Все это достаточно широко известно, а поэтому перейдем к самому главному, а именно к вопросам реализации. И вот тут начинается много интересного.
Читать дальше →
Всего голосов 28: ↑26 и ↓2+24
Комментарии18

Опубликован весь архив Computer Science клуб при ПОМИ РАН

Время на прочтение2 мин
Количество просмотров6.2K
Добрый день!

Как представитель проекта Лекториум рад сообщить — мы опубликовали весь архив Computer Science клуба.
Кроме того, почти год назад мы организовали запись всех лекций на хорошие камеры и микрофоны.
А в этом году планируем подключить вебинары.


Большинство лекций читается на русском языке. Все записи снабжены презентациями и описаниями.

UPD. Кратко. Старые лекции в плохом качестве, а новые с 2010 года с хорошим звуком и в 720p.
UPD 2 Расширили канал, видео грузится теперь без проблем.

Под катом перечень курсов и несколько вопросов касательно вебинаров.
Читать дальше →
Всего голосов 231: ↑227 и ↓4+223
Комментарии78

Компиляция. 5 и 1/2: llvm как back-end

Время на прочтение10 мин
Количество просмотров6.2K
В серии статей от tyomitch «Компиляция» (тут, тут, тут, тут, тут и здесь) было рассмотрено построение транслятора игрушечного языка jsk, описанного в 4 части.
В качестве back-end для этого транслятора tyomitch предложил реализацию байт-кода и интерпретатор этого байт-кода.

На мой взгляд, более разумным подходом было бы использование существующих решений для backend, например llvm, и следуя принципу «Критика без конкретных предложений — критиканство», я предлагаю вариант реализации этого маленького языка jsk с llvm.

Что это даст для jsk? Настоящую компиляцию, то есть результатом будет исполняемый файл, который не зависит ни от каких runtime, возможность серьезной оптимизации, профилирования кода и автоматически получим документацию по back-end (что облегчит сопровождение).
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Комментарии9

LLVM изнутри: как это работает

Время на прочтение10 мин
Количество просмотров27K
Приветствую хабраюзеров, в этой статье пойдет речь о внутреннем устройстве компилятора LLVM. О том, что LLVM вообще такое, можно прочитать здесь или на llvm.org. Как известно, LLVM (условно) состоит из трех частей — байткода, стратегии компиляции и окружения aka LLVM infrastructure. Я рассмотрю последнее.

Содержание:
  • Сборка LLVM
  • Привязка к Eclipse
  • Архитектура окружения
  • LLVM API
  • Оптимизация Hello, World!
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии18

Искусство программирования под Unix (и не только). Часть вторая, Ясность лучше заумности

Время на прочтение3 мин
Количество просмотров3.6K
Продолжаю цикл статей, связанных с правилами Эрика Реймонда из «Искусства программирования под Unix».

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

Сегодня речь пойдет о следующем правиле —

Правило ясности: Ясность лучше заумности (или ясность лучше, чем мастерство)
Rule of Clarity: Clarity is better than cleverness.

Читать дальше →
Всего голосов 52: ↑37 и ↓15+22
Комментарии26

Криптостойкость 1000-кратного хеширования пароля

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


Поднявшаяся в этом топике дискуссия о криптостойкости многократного применения хеша над паролем (проскальзывавшая, кстати, и в других форумах), подтолкнула меня к этому немного математическому топику. Суть проблемы возникает из идеи многократной (1.000 и более раз) обработки пароля перед хранением каким-либо криптостойким алгоритмом (чаще всего хеш-функцией) с целью получить медленный алгоритм проверки, тем самым эффективно противостоящий brute force-у в случае перехвата или кражи злоумышленником этого значения. Как совершенно верно отметили хабрапользователи Scratch (автор первой статьи), mrThe и IlyaPodkopaev, идея не нова и ею пользуются разработчики оборудования Cisco, архиватора RAR и многие другие. Но, поскольку хеширование – операция сжимающая множество значений, возникает вполне закономерный вопрос – а не навредим ли мы стойкости системы? Попытка дать ответ на этот вопрос –
далее ...
Всего голосов 332: ↑328 и ↓4+324
Комментарии103

Компиляция. 4: игрушечный ЯП

Время на прочтение18 мин
Количество просмотров20K
С грамматиками калькуляторов поиграли достаточно, переходим к языкам программирования. Бета-тестеры статьи подали идею писать JavaScript-подобный язык: начнём с простейшего скобчатого скелета, и будем его постепенно обращивать наворотами — синтаксическим сахаром, типами данных, поддержкой функций, и т.д.

Чтобы неполноценность нашего языка была понятна уже из названия, назовём его JSkrip.

Далее в посте


  1. Синтаксис
  2. Грамматика
  3. Парсер
  4. Синтаксическое дерево
  5. Pretty-printing

Читать дальше →
Всего голосов 37: ↑32 и ↓5+27
Комментарии13
1

Информация

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