Cogitabilia rather than actual cogitata a me | Good news, everyone! Big and dull programming article follows!

Good news, everyone! Big and dull programming article follows!

by Vladekk 16. Март 2006 21:43

Сделал что хотел.
   В общем есть такой онлайновый многоязычный словарь с фразами http://abc.times.lv. Но бесплатная версия выдаёт только слово за раз. Как-то раз мне стукнула в голову мысль создать хитроумный скрипт. Действует он так: 
1)Пользователь на моём сайте запрашивает слово для перевода, то есть передаёт его моему скрипту.
2)Скрипт обращается на abc.times.lv, скармливает это слово тамошнему словарю, и узнаёт сколько страниц со словами-результатами получилось
3)Скрипт качает все эти страницы по порядку, и выводит в одном окне, красиво и без рекламы
Однако, такой механизм, реализованный на языке PHP (который я вообще не знаю, кстати) совершенно безбожно тормозил. Ещё бы! Чтобы такое проделать, скрипту надо скачать от 10 до 150 страниц размером 50 КБ, причём делается последовательно, а не параллельно.
В итоге страница грузилась минуту, и я на такую идею забил. Сырая версия для латышского языка, впрочем, до сих пор валяется вот тут. Слово abols (яблоко) с 34 вариантами перевода грузится 42-70 секунд.
   Уже тогда появилась мысль грузить страницы параллельно, как это делают современные менеджеры закачек вроде FlashGet, загружающие одновременно разные части скачиваемого файла. Но на PHP возможность это сделать колеблется от "трудно" до "невозможно" в зависимости от условий хостинга.
Поэтому сейчас, когда руки дошли оценить среду разработки ASP.NET, решил реализовать идейку.
В итоге получилась ASP.NET программа на C#, запущенная на моём домашнем компе.
Поддерживается пока что только латышско-русский словарь.
Работает новый алгоритм так:
1)Качает первую страницу, узнаёт, сколько будет всего страниц.
2)Создаёт столько потоков (threads), сколько страниц, и заставляет каждый поток качать свою страницу. В итоге всё скачивается более-менее одновременно.
3)Выводит результат.
  Затрачиваемое время - 25-30с. Увы, выигрыш почему-то невелик. Впрочем, сравнивать не очень корректно, потому как запускалось это на совершенно разных компьютерахв разных местах.
   Из интереса сделал вариант, работающий по-старому. Время стало сравнимо с вариантом на PHP, что логично, ведь упирается всё в скорость скачивания, а не исполнения программы.
В общем, пользоватся пока нельзя. Следующий логичный шаг - сделать кэширование слов. Но это станет уже крайней стадией нарушения копирайтов, и в открытый доступ такое выложить не получится.


Комментарии (2) -

16.03.2006 13:56:32 #

ears_of_tin

По-моему такой обход ограничений бесплатной версии создателям словаря не понравится в любом случае. Это почти как crack к игре какой-нибудь. Опасно в открытый доступ выкладывать. Но придумано хитро, конечно! Smile

ears_of_tin

16.03.2006 14:04:01 #

vladekk

ну да, мне просто лень было нормально написать
это в любом случае нельзя делать, разумеется
а вообще такой подход явно везде сейчас используется, недаром везде картинки с цифрами, которые вводить надо, чтобы доказать, что ты не робот



vladekk

Добавить комментарий

biuquote
  • Комментарий
  • Предпросмотр
Loading

Powered by BlogEngine.NET 2.5.0.6
Theme by Vladekk

Calendar

<<  Февраль 2012  >>
повтсрчепясуво
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

View posts in large calendar

RecentComments

Comment RSS