Несколько недель назад, я услышал о мутационном тестировании для Clojure, это способ проверки качества тестов, при котором в исходный код вносятся небольшие изменения и тесты либо замечают это, либо нет. К примеру, если в программе использовалось условие «a > 1», а замена на «a < 1» никак не меняет результатов тестирования значит тесты могли бы быть лучше.
Я подумал, что такой инструмент будет несложно написать для Erlang, потому что язык предоставляет богатый спектр функций обработки внутренних представлений, генерируемых компилятором. Но всё оказалось не так просто. Под катом я описал проблемы и решение, к которому я в итоге пришёл.
Обработка TCP соединений может запросто оказаться узким местом, когда скорость приближается к 10 тыс запросов в секунду: эффективное чтение и запись становится отдельной проблемой, а большая часть вычислительных ядер простаивает.
В этой статье я предлагаю оптимизации, которые позволяют улучшить три составляющие работы с TCP: приём соединений, получение сообщений и ответ на них.
Статья адресована как Erlang программистам, так и всем, кто просто интересуется Erlang. Глубокие знания языка не требуются.
(пятница)
Всё началось с того, что я прочитал у Станислава Лема в романе «Мир на Земле» (1985), что в будущем общение на языке будет заменено общением при помощи пиктограмм. Мне показалось это довольно пророческим в связи с возрастающим интересом к различным смайликам и другим видам более крупных картинок и я подумал: а что если программировать при помощи emoji? Поискав в сети я убедился, что мысль такая уже приходила в головы людей и воплотилась в проект https://github.com/wheresaddie/Emojinal
но этот проект меня не впечатлил, во-первых язык не обладает полнотой и вообще подход автора как попытка заменить часть операторов при помощи emoji показалась не сильно интересной.
Идея такой подсветки у меня возникла в связи с законопроектом о приравнивании компьютерных языков иностранным 416D65726963612043616E20436F646520, рассмотренным конгрессом США в декабре 2013. Использование подсветки синтаксиса при создании программ уже давно принятая практика, но вопрос подсветки естественных языков на момент написания этого материала ограничивался парой коротких обсуждений на англоязычных форумах. Тем не менее, если можно облегчить визуальное восприятие текста путём автоматического выделения некоторых слов почему бы не попробовать.
В сети уже есть несколько обзоров производительности этого решения от Amazon, в этой статье я не преследовал цели проверки уже полученных результатов, меня интересовали некоторые особенности, не рассматриваемые в других источниках, а именно:
в документации сказано, что Amazon старается сохранять порядок сообщений, на сколько хорошо он сохраняется?
как быстро происходит получение сообщения при использовании Long Polling?
Пользуясь медленными и неудобными информационными ресурсами в сети можно проклинать их создателей и терять время, а можно написать паука, который соберёт и классифицирует информацию нужным образом. Уже обработанная информация будет доступна в любой плоскости и с таким откликом, который требуется. Эта статья об одном из таких опытов. С практическим примером разбора и улучшения расписания НГУ (Новосибирского государственного университета).
Хотел бы отметить, что речь не пойдёт о замене одной некрасивой таблицы на красивую таблицу с другими свойствами, добавлении картинок и мягких цветов, всё это конечно замечательно, но я не художник и когда идёт речь о получении информации не вижу большой разницы между стилями таблиц, пока это не мешает чтению.
Порой бывает сложно запомнить цифровую или цифро-буквенную последовательность, но если при помощи простого правила, строка стихотворения, выученного в детстве может быть преобразована к этому числу — всё станет легче. В этой статье методами Монте-Карло сравниваются результаты подбора таких отрывков при помощи двух различных способов кодирования чисел.
Приведу пример: Если кодировать цифры согласными буквами, то каждое слово или предложение соответствует целому числу. Обычно выбирают следующий способ кодирования 1-р, 2-д, 3-т, 4-ч, 5-п, 6-ш, 7-с, 8-в, 9-м (потому что 9 это “много”). Тогда слова “добрый мой приятель” соответствуют числу 219513. Но это несколько неудобно, поскольку без специальной подготовки не получается быстро выкинуть ненужные буквы, тем не менее, “добрый мой приятель” забыть довольно сложно, что всегда позволит вам находясь в спокойной обстановке вспомнить число 219513. И это весьма заманчиво, поскольку само по себе число это является весьма абстрактным и может запросто перепутаться с другими такими же абстрактными числами.