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

Что ни говори, а отладочный вывод был и остается одним из самых простых и часто используемых способов отладки. Но как прикажите использовать его в Haskell при написании чистых функций? Временно оборачивать функцию в монаду IO, а по завершении отладки возвращать код к прежнему состоянию? Разумеется, нет!

На протяжении последних нескольких месяцев я практиковал TDD. Теперь я понимаю — эта техника (не путать технику и методологию!) работает. Ее легко использовать и она эффективно решает вполне конкретные проблемы. Эта заметка адресована программистам и, в меньшей степени, руководителям проектов.

Систем контроля версий много, а хостингов исходного кода — еще больше. Перепробовать их все нет никакой возможности. Поэтому подбирая себе такой хостинг, я выбирал между GitHub и BitBucket. Эти два сервиса показались мне наиболее интересными.

Некоторое время назад я открыл для себя Git. И знаете, я проникся. То есть, по-настоящему проникся. Теперь я использую Git не только на работе (где я с ним, собственно, познакомился), но и для своих проектиков, которые я стал хранить на BitBucket. Последний начал поддерживать Git относительно недавно. В отличие от GitHub BitBucket позволяет совершенно бесплатно создавать как открытые, так и закрытые репозитории.

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

Я давно знал, что пользоваться системой контроля версий — правильно и полезно. Но все было как-то неохота. Ну вы в курсе, как это бывает. И вот, некоторое время назад, лень удалось побороть. Выбор был сделан в пользу subversion, несмотря на преимущества альтернативных систем. Видимо, чтобы по-настоящему понять преимущества Git/Darcs/Bazaar/Mercurial, нужно какое-то время поработать с SVN. А иначе — с чем сравнивать? К тому же, subversion кажется наиболее «каноничной» системой контроля версий.

Mojolicious (произносится «моджолишес») — это новый и активно развивающийся веб-фреймворк, написанный на Perl. И написал его не абы кто, а Sebastian Riedel, который является одним из разработчиков Catalyst. В последнее время Mojolicious стал темой активного обсуждения в сообществе Perl-программистов, так что я просто не мог его не попробовать.

Когда-нибудь я планирую запостить в этот блог несколько заметок, посвященных всяким «низкоуровневым» вещам — таким, как алгоритмы сжатия, ассемблер, написание драйверов, WinAPI и тд. В контексте подобных тем всегда возникает вопрос, мол зачем мне все это знать, когда есть готовые библиотеки, высокоуровневые языки и прочие вещи, избавляющие нас от необходимости много думать. Чтобы в будущем не возвращаться к этому вопросу, я попробую ответить на него сейчас.

Меня давно подмывало написать заметку о том, как с помощью Dia и dia2code можно сгенерировать SQL-код из схемы базы данных. Или код на C++ из диаграммы классов. А тут на Хабре появилась заметка об онлайн-сервисе DBDsgnr, решающий первую из этих двух задач. И мне кажется, что он намного удобнее связки Dia + dia2code.