Pull to refresh
33
0

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

Send message

Священный грааль динамической диспетчеризации

Reading time4 min
Views8.6K
Большой бедой Узким местом статической типизации являются гетерогенные коллекции и вариадические функции. Поэтому в RPC-библиотеках часто встречается подход, когда входящие данные так и лежат одним ADT-куском, а для методов один такой же плоский тип "[Foo] -> IO Foo", реализации которого копипастят десериализацию/сериализацию, что неудобно и плодит ошибки, в т.ч. рантаймовые.

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



Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments25

Непрерывное тестирование питонопроекта

Reading time7 min
Views24K
Программист зверь ленивый, поэтому всё, что будет делаться больше одного раза надо непременно заскриптовать.

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

Сначала я запускал тесты руками: save, switch, $ nosetests. Потом к тестам добавились проверялки качества кода и пришлось всё засунуть в скрипт:
pyflakes *.py
pep8 *.py
pylint *.py
nosetests


Скрипт запускать каждый раз ужасно лениво, поэтому небольшая оболочка на inotifywait стала запускать тесты и проверки после каждого сохранения:
while true; do
inotifywait -e modify project/*.py -qq; clear
./do_tests
done


Тут я стал более-менее доволен происходящим и даже на некоторое время расслабился. Но ведь программист кроме того, что ленив ещё и горд, поэтому результаты хочется кому-нибудь показать. Чтобы вести историю происходящего (которая очень помогает когда заходит начальник начальника и спрашивает: «ну-с, чем вы занимались последний месяц?») уже есть система контроля версий. Но она показывает только, что сделано и не даёт обзора успешности каждой ревизии. Получается что код лежит, но непонятно в каком он состоянии и что где ещё надо сделать.

Кроме того довольно тяжело следить за коллегами, которые тоже могут что-то сделать и забыть прогнать тесты, в результате в репозитории лежит битый код, не прошедший code review и при очередном pull может внезапно начаться clusterfuck.

И тут очень вовремя kmmbvnr@lj выпустил скринкаст, в котором он демонстрировал интеграцию тестирования для django-проектов с сабжем Jenkins (бывш. Hudson). Посмотрел я на все эти красоты, графики и отчёты и тоже захотел чтобы всё само пело и играло. Но у него django-jenkins, как и следует из названия, встраивается в джангу и генерит отчёты используя хитрую систему. Мой проект до джанги не дорос и скорее всего не дорастёт — это достаточно тривиальное WSGI-приложение, которое правда стремительно разрастается. Пришлось поднимать всё с нуля.

Воскресенье я на это убил, но в целом всё довольно прямолинейно и теперь у меня есть симпатичные отчёты:



Что внутри?
Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments20

Терабитная сеть становится возможной

Reading time2 min
Views1.9K
Исследователи из Австралии, Дании и Китая совместными усилиями доказали возможность терабитной (1000 гигабит или 1000000 мегабит) сети передачи данных по оптическим кабелям. Решение использует фотонный процессор из экзотического материала, халькогенида, для обработки сигналов.

Результаты работы группы опубликованы 16го февраля 2009 в статье журнала Optics Express. В ней рассмотрена демонстрация 640 Гб сети и расширешние этого подхода для достижения скоростей в 1Тб.

Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments68

Pulseaudio в Ubuntu — звук по сети (и не только)

Reading time3 min
Views11K
Update/Disclaimer: эта хня уже не актуальна т.к. в 8.04 оно завёрнуто в пульс по дефолту. В 7.10 есть какие-то макросы в asoundconf на эту тему. Остальные дистрибы тоже ползут в этом направлении.


Этой осенью я делал презентацию для OSU Open Source club про сервер звука PulseAudio, заменяющий ESD, но с кучей новых дополнений и трюков.
К сожалению, с тех пор я не смог заставить его заработать снова, и не мог до тех пора, пока не обновился до Feisty Fawn. Я наконец разобрался как это делается.

Почему PulseAudio?



Сначала, немного мотивации. Зачем сейчас использовать сервер звука? Вроде бы ALSA нормально работает. Есть три причины почему стоит установить PulseAudio:
  • Самая главная — PulseAudio может прозрачно воспроизводить звук по сети, вне зависимости от настоящего расположения компьютера. Что это значит? В
    сущности, вы жмёте Play на ноуте и звук идёт из колонок вашего десктопа.
  • Старые программы использующие OSS могут быть настроены чтобы работать корректно, при этом остальные звуки будут воспроизводиться в это же время.
  • Ещё не реализованая, но очёнь клёвая штука: звук может быть настроен для каждого приложения по-отдельности. Сейчас можно управлять этим вручную, но будет очень здорово, когда это будет автоматически, основываясь на классе источника. Например, музыка сделается тише, когда вы принимаете VoIP вызов. Кое-кто работал над этим в качестве своего проекта Google SoC, но не ушёл особо далеко (и по-моему, его реализация всё равно надуманная).


Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments5

Information

Rating
Does not participate
Location
Россия
Registered
Activity