Архив рубрики: Интернет

Загрузка и восстановление прошивки dd-wrt через tftp

В заметке про установку прошивки dd-wrt на D-Link DIR-620 я упоминал о замене стандартного загрузчика роутера на загрузчик от Zyxel Keenetic, после чего становится возможной загрузка прошивок в DIR-620 при момощи tftp. Нужно это может быть во-первых для того, чтобы не пересобирать сторонние прошивки в формат, понятный загрузчику, доступному через веб-интерфейс; во-вторых – для восстановления прошивки роутера, если что-то пошло не так и веб-интерфейс недоступен.
Поскольку процесс установки прошивки через tftp под Windows детально рассмотрен на сайте deadc0de, а я в основном использую Linux-машины дома, опишу загрузку dd-wrt в DIR-620 через tftp именно для Linux.
Читать далее Загрузка и восстановление прошивки dd-wrt через tftp

Создание сайта как первый шаг к заработку в интернете

Я довольно много пишу разных заметок на такие темы, как продвижение сайта, его оптимизация и заработок в интернете. В общем-то эти темы – одни из преобладающих, чаще наверное только про Perl пишу. Взять хотя бы пару заметок из недавних: Быстроробот – что это такое – посвящена поисковой оптимизации, а Интернет-магазин как простой способ заработать в интернете – соответственно про заработок в интернете. Объединяет все эти заметки одна особенность – в них почти всегда речь идёт о работе с уже готовым сайтом, но ведь сайт тоже откуда-то нужно взять? О создании сайта предлагаю поговорить на сей раз.

Для начала разделю задачу создания сайта на две большие группы:

Создание профессионального сайта

Создание профессионального сайта – такого, целью которого будет в итоге создание серьёзного бизнеса, или же такого, который будет “визитной карточкой” уже существующего в реальной жизни дела. Очевидно, что для создания профессионального сайта самым разумны шагом будет обращение к профессионалам по созданию сайтов 🙂 Разнообразных студий веб-дизайна огромное количество, выбрать есть из чего и из кого. На этом тему создания профессионального сайта можно закрыть, тем более что личного опыта в этом деле у меня нет.

Создание личного сайта/блога

На создании блога остановлюсь подробней. Во-первых – почему блог? Потому, что блог предполагает формат часто обновляемого ресурса, а частое обновление – один из ключей к успеху в продвижении.
Во-вторых – платный блог или бесплатный? На мой взгляд – особой принципиальной разницы нет. Собственным платным (затраты на доменное имя и хостинг имеются в виду) блогом удобней управлять, сделать из него можно что угодно. С другой стороны – бесплатный блог также позволит заработать (ЖЖ и Блоггер к примеру и вовсе встроенную рекламу поддерживают), а при желании возможности бесплатного блога легко расширяются до платного. За деньги конечно :). Зато в этом случае контент ваш не пропадёт, если вы не успеете вовремя оплатить расширение возможностей или передумаете это делать.
И в-третьих – какую платформу для блога выбрать? На мой вкус, Блоггер более удобен и для заработка, и для настройки под себя – даже в бесплатной версии возможности шире, чем у ЖЖ. С другой стороны – ЖЖ позволяет легко и быстро раскрутить свой блог, просто набрав взаимных друзей (например используя мой скрипт для добавления друзей). Больше друзей – больше популярность и рейтинги блога, а значит – и заработок выше.

Какой сайт создавать в итоге?

Итак, подведу итоги: если нужно создать профессиональный сайт – лучше всего искать помощи у специалистов по созданию сайтов. Если есть желание сделать свой блог – стоит использовать одну из популярных блог-платформ, а именно – ЖивойЖурнал или Blogger.com (он же Блогспот). Liveinternet.ru не рассматриваю – очень уж он на мой вкус “ванильно-клубничный”, с сюсюканьем и котегами. По блогам на Яндексе (Я.ру) в плане заработка сказать ничего не могу – не пользовался ими для этого. Зато напомню, что при помощи яндекс-блога можно получить очень быструю индексацию материалов Яндексом (см. заметку Быстрая индексация страниц Яндексом). А вообще скажу так – при желании заработать можно везде, главное – прикладывать усилия.

Быстрая индексация страниц Яндексом

Решил вернуться, так сказать, к истокам ненадолго и снова поднять тему про быструю индексацию сайта в поисковиках, о чём уже писал почти два года назад. Теперь надобность непосредственно в индексации сайта целиком уже отпала – он и так давно в индексе, а вот ускорение индексации новых страниц может быть полезным.
Уже рассказывал про социальные закладки (в заметке Продвижение социальными закладками), на тот момент они действительно ускоряли индексацию, а в последнее время стал замечать, что в отношении Яндекса закладки стали совершенно неэффективны – никакого ускорения индексации не происходит. Стал искать другой способ и вспомнил, что среди прочего, при регистрации почты на Яндексе появляется возможность вести свой блог. Его и решил попробовать в качестве ускорителя индексации Яндексом.
Читать далее Быстрая индексация страниц Яндексом

Быстроробот – что это такое

Поисковый робот
Столкнулся с удивительным (для меня) феноменом – некоторые страницы блога в отчёте биржи GoGetLinks об индексации Яндексом оказывались помеченными, как проиндексированные быстророботом. Стал разбираться, что это такое этот быстроробот и чем он полезен. Что удалось понять – изложено ниже.

Быстроробот – что это?

Быстроробот (быстробот) – отдельный поисковый робот Яндекса, работает с 2005 года и используется для ускоренной индексации страниц между обновлениями выдачи проиндексированного основным поисковым роботом. Таким образом, быстроробот призван индексировать актуальную на данный момент информацию – различные новости – и в силу этого он является “постоянным посетителем” часто обновляющихся сайтов (сервисы блогов и микроблогов, новостные ленты и т.п.). Можно сделать вывод, что часто обновляющийся сайт, особенно с RSS-лентой, не будет обойдён вниманием быстроробота.

Принцип работы быстроробота

Страница, проиндексированная быстророботом, моментально попадает в результаты выдачи, однако она не присутствует в основном индексе Яндекса и её релевантность относительно поисковых запросов вычисляется но основе внутренних факторов. В индексе такая страница находится двое суток, после чего происходит её перенос в общую базу проиндексированных страниц, её релевантность пересчитывается с использованием обычных показателей и она попадает в выдачу на общих основаниях. Соответственно, наличие страницы в индексе быстроробота позволяет утверждать, что и в основной индекс Яндекса она попадёт во время ближайшего апдейта.

Как узнать, что страница проиндексирована быстророботом

Основной признак того, что страница была проиндексирована быстророботом Яндекса – наличие под ней времени индексации: позавчера, вчера или N часов назад. Такие страницы могут быть найдены через расширенный поиск Яндекса
Естественно, что можно посмотреть дату последнего апдейта выдачи яндекса, и если целевая страница была проиндексирована позже этой даты, но присутствует в результатах поиска – она была проиндексирована быстророботом. Для проверки наличия страницы в индексе удобно использовать запрос вида http://yandex.ru/yandsearch?text=url:http://адрес_целевой_страницы&lr=2
Вот так, например, выглядит в поисковой выдаче Яндекса эта страница, проиндексированная быстророботом:
быстроробот Яндекса

TOR NEWNYM – автоматическая смена IP в TOR

Высокие технологии

Время от времени использую в качестве прокси сеть TOR, недавно вот пригодилось при проверке готовности загранпаспорта через интернет, когда постоянно получал ошибку о превышении числа запросов к серверу – пришлось сделать макрос на lynx, который через TOR периодически проверял готовность загранпаспорта (Автоматическая проверка готовности загранпаспорта). Удобство TOR не только в том, что это рабочий бесплатный прокси (с шифрованием трафика кстати) – TOR это сеть и прокси-серверы, а значит и IP-адреса, можно легко менять при необходимости, даже автоматически.

Под Windows сменить прокси и IP-адрес совершенно несложно – в составе дистрибутива TOR для Windows присутствует графическая оболочка Vidalia и для получения нового IP-адреса достаточно нажать в ней кнопку “Новый Ним / Новая личина / New NYM“. Под Linux всё не так очевидно, хотя тоже несложно, как выяснилось – сделать автоматическую смену IP в TOR можно при помощи простого скрипта.

Читать далее TOR NEWNYM – автоматическая смена IP в TOR

Mojolicious – знакомство с “вебом из коробки”

Mojolicious - веб из коробки

Что такое Mojolicious. Введение

Благодаря заметке на Хабре (в кэшэ Google) наконец-то решил познакомиться с набирающим популярность фреймворком для веб-разработки на Perl под названием Mojolicious. В общем-то я взял пример скрипта из этой заметки и сделал его чуть более интересным для себя, чтобы охватить немного больше документации по фреймворку (результат вполне работоспособен, его можно посмотреть здесь, а код и скриншот выложены в конце заметки). Сразу отмечу, что ни пример с Хабра, ни мой практически не отражают возможностей фреймворка, а только лишь иллюстрируют простоту его использования.

Итак, Mojolicious – фреймворк для разработки веб-приложений, основанный на “фреймворке для разработки фреймворков” Mojo, написанный на языке Perl человеком по имени Sebastian Riedel, одним из авторов Perl-веб-фреймворка Catalyst, фактически для его замены.

Чем мне показался особенно интересен Mojolicious? Во-первых тем, что он имеет встроенный веб-сервер, что в перспективе позволяет не только удобно разрабатывать и проверять приложение, но и распространять его для локального использования. При этом приложение получается универсальным и будет одинаково работоспособным как на локальной машине, так и на сервере. Во-вторых – Mojolicious зависит только от Perl, что также говорит в пользу “во-первых”. В-третьих – наличием модуля Mojolicious::Lite, позволяющего создать лёгкие, маленькие, но полноценные приложения. И в-четвёртых – автоматической поддержкой разных режимов запуска (CGI, FastCGI, mod_perl, встроенный сервер и т.д.).
Читать далее Mojolicious – знакомство с “вебом из коробки”

RC Link Redirector и ссылки в текстовом виджете

На правах мини-совета для тех, кто тоже использует плагин RC Link Redirector для закрывания от индексации посторонных ссылок. Изначально плагин умеет оборачивать ссылки в записях, на страницах, в цитатх, в комментарих и текстах комментариев и т.д., но не умеет обрабатывать текстовые виджеты, в которые удобно ставить свои кнопки, баннеры и прочие подобные штуки.

Чтобы плагин научился закрывать ссылки в виджетах, надо добавить в него две строки (можно через Плагины->Редактор, если нет специального редактора для PHP).

Первую – внутрь функции rcr_adminpage, например после 187 строки “&nbsp;"Оборачивать" ссылки в <strong>блогролле</strong></label></td></tr>” добавить строку:

<tr><td><label><input name='rcr_txt_widgets' type='checkbox' value='1' <?php echo ($rcr_opt['rcr_txt_widgets'] ? 'checked' : '') ?> />
&nbsp;"Оборачивать" ссылки в <strong>виджетах</strong></label></td></tr>

Вторую – внутри rcr_redirector_hook, например после строки 241if($rcr_opt['rcr_comment']) add_filter('comment_text', 'rcr_encode');” вставить строку:

if($rcr_opt['rcr_txt_widgets']) add_filter('widget_text', 'rcr_encode');

Теперь осталось в админке плагина поставить галку на опции “Оборачивать” ссылки в виджетах и наслаждаться результатом 🙂
P.S. Кому лень редактировать файл плагина – можно скачать обновлённый и просто заменить старый в папке /wp-content/plugins/rc_redirector

Сравнение производительности сетевых библиотек в Perl

Когда задумал сделать парсер тИЦ для LJ Add/Remove Fiends – решил для начала проверить, какой способ загрузки страниц с показателями тИЦ из скрипта окажется быстрее, поскольку это в любом случае окажется самым узким местом в производительности парсера (любая обработка уже полученных данных, если она сделана без грубых ошибок типа бесконечного цикла, происходит гораздо быстрее загрузки этих данных по сети).

Для начала проверил на локальной машине (первый тест), затем на сервере (второй тест). Воспользовался модулем Benchmark::Timer, по сути он ставит метки начала и конца, после чего вычисляет разницу между ними (то же самое несложно получить с использованием Time::HiRes). У Benchmark::Timer правда есть дополнительная возможность – он может гонять тест до получения результата с заданной обеспеченностью и заданным процентом ошибки.

Третьим тестом, уже из чистого любопытства (поскольку результат был предсказуем) был тест многопоточной загрузки. Естественно этот вариант оказался быстрее любого из однопоточных, в среднем в два раза (при 15 потоках).

Выводы – библиотеки Perl не только выгодней с точки зрения безопасности, но и работают стабильно быстрее вызовов системных утилит. Самую медленную загрузку показал Wget, основывать парсер на нём – явно плохая идея. Многопточность естественно вне конкуренции. Подробности ниже.

Читать далее Сравнение производительности сетевых библиотек в Perl

Вставка PHP кода в WordPress записи и виджеты

Давно подумывал над тем, чтобы вставлять исполняемый код в посты, страницы и виджеты WordPress. Поскольку сам движок написан на PHP – логично вставлять именно его, хотя можно попробовать встроить например Perl, воспользовавшись CPAN-модулем PHP::Interpreter или PECL-модулем PHP под названием perl. Но PHP вставить естественно проще :).

Итак, как же вставить в WordPress PHP? Как и в большинстве других случаев, когда надо модифицировать движок – просто воспользоваться подходящим плагином.
Плагинов находится множество, я попробовал 4 штуки и остановился на Exec-PHP.
Он умеет всё, что мне было надо:

  • Вставлять исполняемый PHP код в посты (и соответственно – в страницы)
  • Втавлять код в виджеты

Прейдём к настройке плаина.

Настройка может оказаться не совсем очевидной – с административной страницы плагина всё сделать не получится. Чтобы исполнение PHP-кода в WordPress заработало, нужно убедиться в следующем:

  • Что пункт "WordPress должен исправлять некорректный XHTML код автоматически" в меню Настройки->Написание неактивен
  • Что выключен “графический” редактор в меню Пользователи->Ваш профиль (стоит галка на "Отключить «визуальное редактирование» при написании")
  • Что нужной группе пользователей (в WordPress это называется “ролью”) разрешено исполнение PHP-кода (для роли “Administrator” должно быть разрешено по умолчанию)

При выполнении вышеперечисленных условий втавленный в записи, страницы и виджеты код должен успешно исполняться. Например мой скрипт для массового добавления друзей в ЖЖ, будучи вставленным в страницу WordPress, успешно работает!

Считаю не лишним напомнить про опасность исполнения неочищенного кода. Не знаю, поддерживает ли PHP какую-то аналогичую perl -T опцию, поэтому нужно просто помнить про очистку пользовательского ввода (использование недопустимых символов, размеры аргументов опций и т.п.), экранирование всех передаваемых в shell команд и их аргументов и так далее.

В остальном польза от встроенного в WordPress PHP кода очевидна – это полная свобода действий с содержимым блога, помноженная на простоту выполнения этих действий!

Автоматическая проверка готовности загранпаспорта

Гос. органы идут в массы, постоянно вводят новые, удобные для граждан (по крайней мере на первый взгляд), формы взаимодействия.
К такому нововведению можно отнести и сервис проверки готовности загран. паспорта на сайте УФМС, расположенный по адресу http://www.ufms.spb.ru/checkzp.php. С помощью сервиса можно быстро узнать, готов ли загран. паспорт или еще находится в процессе оформления, введя в поля формы данные своего гражданского паспорта (также доступна проверка по данным из свидетельства о рождении).

Всё в принципе хорошо и удобно кроме одной мелочи – чтобы воспользоваться проверкой готовности – нужно периодически вспоминать о ней и заходить на сайт. По-моему, приделай УФМС автоматическое оповещение о готовности паспорта по электронной почте – сервис выглядел бы законченным и действительно удобным в использовании.

Но раз УФМС не идет на встречу гражданину, значит гражданин должен сам облегчить себе жизнь. Я решил сделать это используя три простых и доступных инструмента: консольный браузер lynx (для отправки данных формы POST-запросом), планировщик заданий cron (для периодической проверки готовности загран. паспорта) и утилиту поиска по тексту grep (для поиска нужной строки в дампе страницы), для чего написал простенький скрипт, который закинул в cron. Скрипт с указанным в кроне периодом проверяет готовность моего паспорта и присылает мне отчет на электронную почту (которая указана в настройках крона).


#!/bin/sh
echo "checkser=p&seriap=XXXX&numberp=YYYYYY&submit=%CF%F0%EE%E2%E5%F0%E8%F2%FC" | lynx -post_data -dump http://www.ufms.spb.ru:80/checkzp.php | grep 'Ваш заграничный'

Вместо ХХХХ нужно подставить серию своего гражданского паспорта (макс. 7 символов, что, как я понимаю, позволяет использовать серии старых паспортов, с римскими цифрами), а YYYYYY заменить соотв. на его номер (макс. 6 символов). Если запускать скрипт из-под английской локали, то шаблон для grep надо изменить с ‘Ваш заграничный’ на ‘Vash zagranichnyj’, поскольку скрипт отдаст страницу в латинице.

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

Дополнение:
Если сайт проверки готовности загранника постоянно “радует” сообщением о превышении числа запросов, можно пропустить их через tor. В этом случае удобно будет воспользоваться другим способом отправки форм POST-методом из lynx – записать автоматический скрипт, который и будет осуществлять проверку.

Посутпаем следующим образом:

  1. вызываем lynx с ключем cmd_log=имя_файла_куда_сохранить_скрипт:
    lynx -cmd_log=script_name http://www.ufms.spb.ru:80/checkzp.php,
    вводим серию и номер паспорта, отправляем запрос, дожидаемся загрузки страницы с ответом и закрываем браузер.
  2. в дополнение к tor устанавливаем torsocks – утилита несколько сырая, но дело своё делает исправно, перенаправляя траффик на tor (можно естественно использовать любой понравившийся прокси, указав его в качестве умолчального export http_proxy="address:port").
  3. вызываем lynx через torsocks или выбранный прокси с указанием использовать для автоматизации отправки данных формы записанный ранее файл скрипта с передачей результатов работы на разбор в grip:
    torsocks lynx -cmd_script=script_name http://www.ufms.spb.ru:80/checkzp.php | grep “Ваш заграничный”

Всё, автоматизация проверки готовности заграничного паспорта успешно проведена! Пока скрипт работает за человека, человек может расположиться у телевизора и спокойно отдохнуть :)