?

Log in

No account? Create an account
Previous Entry Share
Многопоточная качалка на Erlang
what_me
Ну вот, моя первая программа на эрланге. https://github.com/onokhov/erlang_web_crawler/

Язык занятный. Параллелить и устраивать межпроцессное общение просто. Но остальное писать неудобно, думаю, что просто с непривычки. И документацию я ещё не прочитал. Осилил только getting_started, описания модулей string, list, re, httpc и ещё некоторых.
Сторонние модули использовать не хотелось, поэтому то, что в штатных модулях не нашел, делал сам.

Сравнил по производительности с перловой качалкой, эрланговская получилась немного быстрее. За минуту с форума glav.su перловая вытянула 26МБ, а эрланговская 26,7МБ.

Хотелось бы критики по коду от людей эрланг знающих.

Update: Закоммитил правки по комментариям. Заменены паттерны, ++ заменен на [|], использованы list comprehensions.
Update 2: Отказ от prespawn. И правки по стилю
Update 3: Багфикс в receive_text_data/2. Правки по стилю
Tags: ,

  • 1
Host ne nado zapisyvatj v fajl sessii -- ty kogda fajl chitajesh UZHE ZNAJESH kakoj eto Host.

Это наследие от прошлых версий осталось. Изначально файл с состоянием был фиксированного имени "crawler.state", и мне нужен был хост внутри, чтоб понять, продолжаем ли мы прерванную, или скачиваем другой сайт. После того как хост попал в имя файла, внутри он перестал быть нужен, да. Остался дискуссионный вопрос - должен ли идентифицировать загрузку стартовый урл, или достаточно хоста из стартового урла. Я выбрал идентификацию по хосту, а ты в комментариях выше где-то писал о том, что нельзя игнорировать пользовательский ввод. При идентификации по хосту он учитывается, но не в точности, а грубо.

  • 1