Как стать автором
Обновить
225
0
Всеволод @torkve

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

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

Melange — DSL для сетевых протоколов

Время на прочтение 8 мин
Количество просмотров 16K
Всем программистам рано или поздно приходится передавать данные. Ни для кого не секрет, что библиотек сериализации в Java существует примерно >9000, а в C++ они вроде и есть, а вроде их и нет. К счастью для большинства, несколько лет назад появился Google Protobuf, который принёс достаточно удобный способ определять структуры данных и быстро завоевал всенародную любовь. Это была фактически первая, доступная широким массам библиотека, позволяющая гонять по сети готовые структуры данных, не связываясь при этом с чем-то вроде XML. На дворе был 2008 год.

Вернёмся немного назад. В 2006 году простой индийский программист (как бы подозрительно это ни звучало!) Анил Мадхавапедди, один из самых известных сейчас в мире OCaml-разработчиков и автор свежевышедшей книги Real World OCaml, защищал в Кембридже кандидатскую диссертацию. Именно о ней я сегодня вам и расскажу.

Анил сразу пошёл дальше, чем Google. Он сразу подумал, для чего люди обычно пересылают по сети какие-то формализованные структуры данных? Чтобы реализовать какой-то протокол. А что такое протокол? Это какой-то конечный автомат. А где мы можем взять хороший пример сложного, хорошо спроектированного и проверенного временем протокола? Да прямо в обычном сетевом стеке! Итак, были взяты набор сетевых структур данных и протоколов: Ethernet frame, IPv4, ICMP, TCP, UDP, SSH, DNS и DHCP и постановка задачи: большая часть этих протоколов (особенно SSH и DNS) реализуются, что называется «руками», а хочется, чтобы не было типичных для C переполнений буфера, все переходы совершались автоматически, это всё можно было верифицировать, и чтобы работало быстро, а не как обычно.

Поскольку никто не будет читать диссертацию, сразу скажу: это более чем удалось. По результатам работы были написаны референсные реализации DNS и SSH-сервера и произведено сравнение с BIND и OpenSSH. OCaml-реализации давали по сравнению с традиционными прирост производительности от незначительного, до почти двухкратного. Кроме того была найдена ошибка в RFC на SSH (рабочая группа была уведомлена и RFC исправлен). О том, что было сделано, и как с этим жить, читайте под катом.
Мне интересно.
Всего голосов 68: ↑68 и ↓0 +68
Комментарии 18

Почему правообладатели должны жить на донейты?

Время на прочтение 4 мин
Количество просмотров 67K
Этим постом я хотел бы ответить на сегодняшнее исследование о донейтах авторам. Благодаря ему я наконец смог вербализовать, почему я считаю, что в этой войне больше правы пираты, чем правообладатели. Упреждая обвинения, оговорюсь: я регулярно честно покупаю большое количество музыки, время от времени — книги, и именно поэтому я достаточно объективен.
Ключевым камнем преткновения в вышеупомянутом исследовании стала фраза:
книга – не товар первой необходимости, без неё прожить можно. 14% населения земли вообще читать не умеют, и ничего, живут и размножаются.
Читать дальше →
Всего голосов 132: ↑95 и ↓37 +58
Комментарии 633

Девушки-программистки носят свитер и толстые очки

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

Девушки-программистки носят свитер и толстые очки. С чем, кроме алгоритмов, борются айтишницы?



От переводчика: больше всего мне хотелось бы этот текст (написанный, кстати, девочкой) поместить в юмор. Но как человек, который регулярно видит вокруг себя зашкаливающее количество умных и красивых программисток, я волевым усилием вынудил себя этого не делать. Эта статья — взгляд на известный стереотип с женской стороны. Хотя автор плохо различает понятия «программист» и «IT-специалист», почитать имеет смысл и довольно забавно.

Информационные технологии нельзя оставить мужчинам. Они слишком важны. Для этого не надо менять мысли женщин, достаточно изменить отношение к программисткам тех, кто с IT не имеет вообще ничего общего. Баб к компам!
Читать дальше →
Всего голосов 69: ↑48 и ↓21 +27
Комментарии 183

Алгоритм Хаффмана на пальцах

Время на прочтение 5 мин
Количество просмотров 519K
Вы вероятно слышали о Дэвиде Хаффмане и его популярном алгоритме сжатия. Если нет, то поищите информацию в интернете — в этой статье я не буду вас грузить историей или математикой. Сегодня я хочу просто попытаться показать вам практический пример применения алгоритма к символьной строке.
Разархивировать текст статьи
Всего голосов 58: ↑54 и ↓4 +50
Комментарии 59

QML — больше, чем просто GUI

Время на прочтение 10 мин
Количество просмотров 19K
Этот пост участвует в конкурсе „Умные телефоны за умные посты“.

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

Этот пост не является очередным переводом или вольным изложением разнообразных QML Howto и Quick Start. Скорее, это описание подводных камней, с которыми можно столкнуться при написании реального приложения.

Игровое полеКогда Qt Quick/QML только было заявлено, от Нокии звучали слова, что «в перспективе не только пользовательский интерфейс будет писаться на Qt Quick, но и вся логика несложных приложений будет написана на яваскрипте, программистам не потребуется написать ни строчки кода на плюсах». Заявление было ещё более провокационное, чем мой заголовок, и сразу меня заинтересовало: я решил попробовать написать несложную игру без единой строчки кода на плюсах.

Чтобы подогреть интерес, добавлю, что:
  • обычно я код пишу как раз на плюсах
  • я достаточно слабо знаю JS
  • я не умею и ненавижу делать интерфейсы
  • когда-то я попытался сделать эту же игру на честном Qt, но сломался, не выдержав общения с QGraphicsScene и другими интересными классами
  • результат моих трудов можно не только скачать, но и сыграть в них по сети
  • все исходники можно скачать у меня из bazaar или тарболлом.


Об остальном мы узнаем под катом.
Повесть, как я яваскрипт побеждал
Всего голосов 53: ↑42 и ↓11 +31
Комментарии 13

Динамические приложения с Ocsigen или Йоба возвращается

Время на прочтение 11 мин
Количество просмотров 2.5K
Что делает холодным воскресным утром нормальный человек? Любой вам ответит: холодным воскресным утром человек спит. Потому что всю неделю он работал и хочет отдохнуть.
Что делает холодным воскресным утром программист? Холодным воскресным утром программист пьёт горячий чай и пишет код. Чай он пьёт, потому что утро холодное, да и проснулся ещё не до конца, а код пишет, потому что хочется. Программисту всегда хочется писать код, только в будни он пишет код за деньги и от этого очень устаёт, а в выходные для себя, поэтому отдыхает.

Этим утром мы будем писать наше первое приложение для Ocsigen. Желающим неплохо бы сначала ознакомиться с официальным мануалом, впрочем, на многое надеяться не стоит, потому что мануал недописан, пестрит недоуменными строками а-ля "??????" и нецензурной речью на французском. Поэтому основным мануалом буду я.

Как вы возможно помните, когда-то мы писали интерпретатор языка Йоба. С тех пор интерпретатор был незначительно улучшен, выделен в отдельный класс, стал принимать строку на вход, отдавать строку на выход (вместо работы с консолью). Теперь нашей задачей станет внедрение Йобы в качестве основного языка компании Google превращение интерпретатора Йобы в веб-приложение, да не простое — а клиентское. Хоть я и добавил в класс счётчик операций, чтобы нельзя было слишком обнаглеть, но всё равно — пусть пользователь на своём компьютере вычислительные мощности тратит, а не на сервере.
Поехали!
Всего голосов 61: ↑53 и ↓8 +45
Комментарии 11

Ocsigen 2.0 — новая версия фреймворка для OCaml

Время на прочтение 2 мин
Количество просмотров 3.1K
Для тех, кто не знает: строго говоря, Ocsigen — это не совсем фреймворк. Ocsigen — это набор инструментов для создания эффективных веб-приложений на языке OCaml, он включает в себя как веб-сервер, так и инструменты для работы с потоками, написания расширений к веб-серверу, генерации HTML и многого другого. Кстати, замечу, что это может показаться невероятным (а кому-то может и не очень удобным), но генерируемый HTML5 или XHTML является статически типизированным, и валидность всего, что ваш сайт может сгенерить, будет проверена ещё на этапе компиляции.

Картинка для привлечения внимания — вращающаяся земля целиком написана на OCaml, а работает целиком в браузере.
Ну а вчера вышла новая версия этого замечательного фреймворка, и вот информация из анонса Винсента Балата (Vincent Balat):
Прочитать о ней
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 16

Интерпретатор из подворотен

Время на прочтение 14 мин
Количество просмотров 42K
Если ваше образование окончилось после второго класса, если словарный запас ограничен, а речь невнятна, если вы попросту тупы, не знаете этих непонятных латинских букв, но всё равно хотите стать программистом, вам поможет наш быдлоязык Йоба. Йоба — язык для риальных пацанов!

Ну а если серьёзно, как-то раз у нас на работе кто-то в шутку предложил написать гоп-язык, чтобы программистом мог себя почувствовать себя любой. Начинать конструкции со слова «чо» и всё такое. Тут надо заметить, что, не встретив на своём жизненном пути образования в области computer science, я пропустил все те интересные курсы по построению компиляторов, формальным грамматикам и прочим вкусностям, которые вкушают нормальные студенты на втором-третьем курсе. Книга Вирта по построению компиляторов хотя и добавила мне знания всяких умных терминов типа БНФ, но практической пользы не принесла ­— ни одного компилятора я так и не написал. Поэтому задача оказалась для меня довольно интересной.
Если вы старше 18 лет, адекватно воспринимаете обсценную лексику нашего родного языка и вам интересно, с чего начать, добро пожаловать под кат.
Читать дальше →
Всего голосов 192: ↑172 и ↓20 +152
Комментарии 28

Написать код и выложить пакеты — это только половина работы

Время на прочтение 3 мин
Количество просмотров 1.3K
Ну ладно, не половина, а три четверти. Сегодня я хотел бы напомнить о том, что, опубликовав бинарные пакеты для любимых пользователей, разработчик не должен расслабляться. Особенно, если он публикует исходники. Почему же? А потому что недавно я скачал чужие исходники и вот что из этого вышло.
Сразу предупреждаю, что эта история будет не очень поучительна для людей с прямыми руками и системами контроля версий.
Ужасы нашего городка
Всего голосов 139: ↑121 и ↓18 +103
Комментарии 27

ОВР — Очень Важные Реакции

Время на прочтение 2 мин
Количество просмотров 8.2K
Так уж исторически сложилось, что одной из самых сложных задач школьной химии всегда являлись окислительно-восстановительные реакции. Электронные конфигурации атомов, комплексные соединения, и даже устройство солей перксеноновой кислоты не вызывают у детей столько оторопи, сколько уравнивание ОВР. Так как часть нашей команды занимается созданием сервисов для школьников, мы захотели помочь решить проблему с поиском окислительно-восстановительных реакций. Разумеется, нам очень не хотелось потворствовать списыванию, поэтому мы постарались сделать наш сервис обучающим, чтобы любому школьнику стало понятно, как же уравниваются те самые ОВР.

В первую очередь для всех имеющихся у нас окислительно-восстановительных реакций мы стали показывать соответствующие полуреакции.
Например, вот так:

Читать дальше →
Всего голосов 77: ↑71 и ↓6 +65
Комментарии 46

Улучшаем жизнь пользователей с IPv6 и SCTP

Время на прочтение 8 мин
Количество просмотров 12K
От переводчика: я не нашел на хабре подходящего «низкоуровневого сетевого» блога и сначала даже сомневался, стоит ли делать данный перевод. Но всё-таки, все мы с вами разработчики (надеюсь, хотя бы большинство), и описываемая в статье проблема с IPv6 сейчас актуальна, как никогда. До сих пор я вынужден отказываться от любимого русского зеркала Debian (ftp.chg.ru), по причине того, что слишком передовое зеркало отлично работает по IPv6, а мой провайдер выдаёт IPv6 адреса, но IPv6 трафик не роутит, да. В общем, я связался с Оле Якобсеном (Ole J. Jacobsen), главным редактором The Internet Protocol Journal, и с его благословения публикую эту статью. Поехали.
Читать дальше →
Всего голосов 45: ↑34 и ↓11 +23
Комментарии 20

Vim 7.3 вышел

Время на прочтение 1 мин
Количество просмотров 1.7K
Наконец-то зарелизился лучший в мире текстовый редактор, величайшая IDE и то, чего так не хватает емаксу. Это если троллить.
А если серьезно, в релиз входит всё то, что было заявлено в бете, плюс:
Читать дальше →
Всего голосов 93: ↑68 и ↓25 +43
Комментарии 51

OCaml и PHP — эзотерика для вашего удобства

Время на прочтение 9 мин
Количество просмотров 2.7K
NB: читая этот топик, желательно не есть — можно поперхнуться от неожиданности.
NB: менее ценные куски кода пришлось вынести на пастебин, из-за того что хабр обрезает пост. Следите за ссылками в тексте.

Многие причисляют OCaml к маргинальным и даже эзотерическим языкам. Возможно они и правы, хотя множество людей с ними не согласны. Для меня знакомство с ним началось с полгода назад, когда мне в очередной раз захотелось научиться чему-то новому и я подумал, что хоть один функциональный язык надо освоить. Из множества языков я выбрал Objective Caml. Язык покорил меня человеческим синтаксисом и идеей: есть все функциональные радости жизни, но если хочешь императивный стиль и ООП — бери, их есть у меня! Оказалось, что разработчики прекрасно понимали, что для разных задач нужны разные средства. Три дня чтения мануала для C++ и Perl-программистов и я уже вполне мог читать код и писать хеллоуворлды. На этом моё знакомство с языком закончилось, потому что изучать язык не на реальной задаче — дело глупое.
А теперь о более реальной разработке
Всего голосов 63: ↑52 и ↓11 +41
Комментарии 50

Ноутбук + 2 видеокарты — как жить?

Время на прочтение 4 мин
Количество просмотров 224K
Последнее время у производителей появилась тенденция ставить на ноутбуки две видеокарты — одна какая-нибудь простенькая интеловская для экономии электроэнергии, а другая — навороченная для игр и видео. Насколько я знаю, таким точно грешит Lenovo, и под эту же тенденцию попал и я со своим HP TouchSmart tm2-1080er. Если на предустановленной Windows 7 Home x64 возможность переключаться между картами, разумеется, имелась, то Windows 7 Professional x32 вторую видеокарту включать уже не захотел. Не лучше обстояла ситуацию и в Ubuntu — видеокарты определяются-то обе, а вот использоваться предпочитает только дефолтная интеловская. И питание жрут, разумеется, обе — как результат, ноутбук работает намного меньше, чем должен. Как мы будем с этим бороться?
Читать дальше →
Всего голосов 85: ↑78 и ↓7 +71
Комментарии 62

Идеальная техподдержка

Время на прочтение 2 мин
Количество просмотров 2.9K
Я хочу поделиться с вами знанием о том, какой замечательный бывает саппорт, в связи с чем придётся неприкрыто пропиарить техподдержку Нокии.

Несколько недель назад для складирования логов одной конференции я прикрутил к боту сохранение логов в XML-формате, а для отображения прикрутил к ним маленький .xsl файл, который преобразовывал лог в удобную читаемую XHTML страничку. И на компьютере всё было замечательно, все браузеры прекрасно справлялись с этой задачей.

Так получилось, что с недель назад я остался без какого-либо доступа к компьютеру, наедине со своим Nokia 5800XM. Вместе с тем интернетом я через GPRS и стандартный Symbian'овский браузер пользовался довольно много. Когда же я попробовал просмотреть лог вышеупомянутой конференции с телефона, я обнаружил, что браузер видит XML-файл — и тут же считает его RSS-потоком, соответственно добавляя его в сохраненные потоки и уже не отображая мне никакой странички.

Я добросовестный пользователь и решил зарепортить Нокии данную проблему.
Что было дальше?
Всего голосов 42: ↑31 и ↓11 +20
Комментарии 37

С органической химией к новым рубежам

Время на прочтение 3 мин
Количество просмотров 1.5K
Знаете ли вы, что фамилия Вагнера известна не только благодаря опере известного композитора?
А чьим именем названа известная каждому школьнику реакция серебряного зеркала?
Что случится с уксусным альдегидом в кислой и щелочной среде?

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

Процесс Фишера-Тропша

Читать дальше
Всего голосов 68: ↑60 и ↓8 +52
Комментарии 36

PHP модуль — это всё ещё просто. Часть вторая

Время на прочтение 7 мин
Количество просмотров 6.1K
Пока nerezus сочиняет статью о встраивании PHP, я постараюсь продолжить его рассказ о написании расширений. Рассказано будет далеко не всё, поскольку я считаю, что сложность наращивать надо постепенно, иначе материал будет трудноусвояемым и совсем не питательным. В связи с этим я всё-таки не расскажу в этот раз, как подменить операторы в классе, кто захочет, может почитать исходники модуля Operator от Сары Големон — основного автора какой бы то ни было информации о разработке расширений PHP.
Поскольку разработку я веду исключительно в линуксе, то писать мы будем без всяких хитрых аддонов к Visual Studio, ручками, с нуля :) А что, лучше сразу разобраться, а потом уже упрощать свой труд.
Поехали?
Всего голосов 42: ↑36 и ↓6 +30
Комментарии 20

Чашка дёгтя

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

Этот топик наполнен лучами доброты и человечности. Нет, правда. Я нежно люблю не только Debian, но и Ubuntu, пророка его, но этот топик — не о холиварах. Я скорее хотел бы рассказать, какие еще радости жизни могут ожидать человека, внезапно решившего обновиться до Ubuntu 9.10. Сразу в связи с этим хочу оговориться для тех, кто будет кричать мне о необходимости чистой установки и т.д. и т.п.: дорогие, система должна обновляться, а не переставляться раз в полгода. Иначе у тех из вас, кто помнит Windows 95, неизбежно должны возникать воспоминания именно о ней. Без ext4 я как-нибудь переживу, все остальные плюшки чистой установки у меня уже есть.
Читать дальше →
Всего голосов 21: ↑14 и ↓7 +7
Комментарии 37

Сетевое вещание — работаем с кодировками

Время на прочтение 7 мин
Количество просмотров 2.3K
Подключившись к Корбине (нет, это не реклама), и ради интереса просматривая их сайт, я наткнулся на большое количество интернет-радиостанций, к коим попытался немедленно пристраститься.
Разочарование мое было велико
Всего голосов 39: ↑34 и ↓5 +29
Комментарии 47

qutIM 0.2 beta — теперь банановый

Время на прочтение 2 мин
Количество просмотров 1.2K
После трёх месяцев томительного ожидания команда разработчиков юбилейным 300-ым коммитом представила нам бета-версию замечательного кроссплатформенного мессенджера qutIM. За это время было сделано много всего нового и интересного, много переписано, сломано и исправлено, добавлен новый функционал и оптимизирована работа. С момента выхода альфа-версии её скачали более 90 тыс. человек (без учёта регулярных сборок и свн-ревизий), в бета-версии мы надеемся на увеличение этого числа :)

(альтернативная ссылка на картинку)

Что нового?
Всего голосов 118: ↑107 и ↓11 +96
Комментарии 308
1

Информация

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