Я тут взялся писать маленький скрипт, который казался простым, ну, чтобы
можно было пропарсить уже готовый лог IRC и построить на его основе
картинку с диаграммой, на которой будет нарисован социальный граф. Есть
штуковина, написанная на Java,
которая делает аналогичное, но это отдельный бот, и это, пожалуй,
неудобно. Поэтому захотелось что-то свое, что просто будет читать и
парсить лог и будет написана на чем-то, что чаще встречается на VPS.
Выбрал
Perl, потому что когда-то на нем писал чуть более сложные, чем
HelloWorld приложения. Попытался написать, и вот уже часов 12 убил в
сумме, а все никак не выходит каменный цветок. А все потому что
изначально сделал ряд ошибок. Все-таки, любая достаточно сложная задача
все-таки требует плана решения, как это ни странно, и если попытаться
сразу написать код, это не всегда получается сделать быстро. Так что я
уже раза три написал и стер основную часть кода, так как не сразу понял,
к чему на самом деле сводилась часть задачи, которую решает скрипт. А
еще я совсем забыл, как пишутся программы без объектно-ориентированного
подхода. Слишком привык за те несколько лет, когда писал только на Java
(ну, все-таки иногда я писал и на Perl тоже, но обычно на это уходила
пара рабочих дней и это было редко). Так что лучше бы я сначала написал
какой-то понятный план со структурами данных, которые нужны для этого
скрипта, может быть, и быстрее получилось бы.
Теперь уже, чтобы
ускорить возню с ним, приходится пользоваться исходниками PieSpy, но уже
в части рисования готовой картинки. Но я так полагаю, что получив
конечный результат, придется еще некоторое время поковыряться,
собственно, в парсинге и составлении социального графа.
Есть ряд
сложностей, которые, наверное, у PieSpy вообще не возникают. Например,
бот сразу имеет список ников на IRC канале. Чтобы из лога его узнать,
нужно его распарсить полностью, чтобы потом можно было искать упоминания
этих ников в текстах сообщений (для чего его нужно распарсить уже
второй раз). Следующей проблемой становится то, что ники могут меняться.
Причем, хорошо еще, если они просто меняются на какой-то новый ник
постоянно, можно просто сохранить историю и использовать список.
Проблема появилась на этапе складывания информации о нике из списка его
"псевдонимов", когда такая очевидная вещь, что меняться ник может и на
какой-то из старых (зацикливая цепочку), от меня ускользнула.
Ну и
еще одной неприятностью стало то, что на вспоминание ньюансов вроде
хешей, ссылок на хеши и работу с ними ушло почти два или три подхода к
кодингу. Зато теперь, вроде-бы, я и правда понимаю, что пишу. Но
все-таки Perl в плане удобства программирования уступает даже Java,
прежде всего отсутствием IDE для разработки, необходимостью постоянно
вставлять разнообразные специальные последовательности символов, которые
иногда визуально путаются ('}' и ')', например), кавычки, стрелочки, в
общем, слишком много возни с клавиатурой выходит.
В процессе нашел
забавный модуль, из которого даже сделали маленький ресурс -
http://perlcritic.com/. Правда, я ожидал более жесткой матерной реакции
на уровень "brutal". Еще бесит, что везде ссылаются на книжку Perl Best
Practices, которую, в общем-то, нормальным людям положено купить, что
некрасиво делать. Ну и где-то четверть придирок, по моему мнению, бывают
неадекватны. Например, он будет постоянно требовать как можно скорее
закрывать файлы, даже если между open и close оказывается только цикл
для построчного чтения из него с достаточно длинным телом в 10-15 строк.
В
общем, раньше я любил Perl для длинных скриптов, теперь стал любить
меньше. Хотя лет 5 назад писал сугубо проприетарный набор скриптов для
удобной работы с LDAP, вроде создания пользователей, групп и перемещения
их туда и обратно по разным OU, и это довольно большой объем кода,
строк эдак под 10К. Еще ради смеха писал блогодвижок на перле. В общем,
опыт был. Только все это быстро забывается, и теперь уже, спустя годы,
имея опыт работы с чем-то еще, смотришь на это уже не так, как раньше.
Так что, наверное, полезно бывает и уйти от любимого инструмента на
время и посмотреть на что-то другое. Отрезвляет.
суббота, 11 июля 2015 г.
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий