Фришный Xweb на Ruby

Watir – gem для ruby, который позволяет работать с сайтами (парсить страницы, кликать по кнопкам), исполняя джаваскрипт. Да-да, позволяет работать с js на линукс-сервере, без сторонних инструментов.

Обзор на хабре: http://habrahabr.ru/blogs/ruby/109835/

Чего может, коротенечко: http://wiki.openqa.org/display/WTR/Cheat+Sheet
Примеры: http://wiki.openqa.org/display/WTR/Examples

Обфускатор Javascript

На Хабре нашел ссылку на отличный инструмент для шифрования js от чужих глаз:

http://utf-8.jp/public/jjencode.html

Например, alert(“test”); превращается вот в такую конструкцию:

$=~[];$={___:++$,$$$$:(![]+”")[$],__$:++$,$_$_:(![]+”")[$],_$_:++$,$_$$:({}+”")[$],$$_$:($[$]+”")[$],_$$:++$,$$$_:(!”"+”")[$],$__:++$,$_$:++$,$$__:({}+”")[$],$$_:++$,$$$:++$,$___:++$,$__$:++$};$.$_=($.$_=$+”")[$.$_$]+($._$=$.$_[$.__$])+($.$$=($.$+”")[$.__$])+((!$)+”")[$._$$]+($.__=$.$_[$.$$_])+($.$=(!”"+”")[$.__$])+($._=(!”"+”")[$._$_])+$.$_[$.$_$]+$.__+$._$+$.$;$.$$=$.$+(!”"+”")[$._$$]+$.__+$._+$.$+$.$$;$.$=($.___)[$.$_][$.$_];$.$($.$($.$$+”\”"+$.$_$_+(![]+”")[$._$_]+$.$$$_+”\\”+$.__$+$.$$_+$._$_+$.__+”(\\\”"+$.__+$.$$$_+”\\”+$.__$+$.$$_+$._$$+$.__+”\\\”)\\”+$.$$$+$._$$+”\”")())();

Это полностью рабочий js-код.
Но разобрать, что именно он делает – нереально.
Юзайте для шифрования доменов редиректов и прочего.

И опять о мультикурле

Если кто-то не обзавелся в хозяйстве библиотекой для многопоточного асинхронного скачивания страниц – самое время это сделать.

http://rmcreative.ru/blog/post/rolling-curl
Скачать можно через svn отсюда: http://code.google.com/p/rolling-curl/
Там, в принципе, можно еще сделать кой-какие улучшения – можно добавить юзер-агенты, прокси, но в целом юзать эту либу можно и сейчас.
Из вкусностей – можно делать не только многопоточные GET-запросы , но и POST.

Поддерживать библиотеку будет один из лучших php-программеров-блоггеров рунета (сорри, Александр, за громкие слова), член команды разработчиков фреймворка Yii, автор нескольких полезных библиотек для Codeigniter – Александр Sam Dark Макаров. :)

Начинающим программистам

Нашел любопытный блог девушки-программиста: “Парсинг от А до Я“. Рекомендую молодым сеошникам, которые программят что-то для себя сами, просто и понятно о ключевых задачах, с которыми сталкивается практически каждый.

PHP vs Python

Отличное резюме по этому вопросу составил Farik:

Явных преимуществ у пхп над питоном два:
1. Он является стандартом де-факто в вебе. То есть не надо тратить время на поиск поддерживающего его хостинга или админа, который справится с настройкой.
2. Он прост, как валенок.

Минусы пхп:
1. Скупые средства языка.
2. Все фреймворки жалкое подобие Zope и Django(либо монструозны, либо написаны под кальку с них).
3. Провоцирует сделать “быро шоб работало” вместо того, чтобы учиться делать правильные вещи правильным образом.

Спорных моментов куча:
1. Прекомпилированный пхп примерно так же быстр, как питон.
2. Оба херово типизированы
3. На пхп проще писать, но на питоне зато – в принципе невозможно писать ту херню, что присутсвует в 90% пхп проектов.
4. На пхп дохера семплов, примеров, библиотек. Но на питоне зато мало и почти все качественные и рабочие. То есть на поиск решения уходит намного меньше времени.

Минусы питона:
1. Его надо понимать. Смысла переписывать пхп код с нужным форматированием и заменой function на def нет ни малейшего.

Плюсы питона:
1. Комьюнити: нет такого количество “программистов”, которые не то, что программировать – копируемый код читать не умеют.
2. Действительно крутые фреймворки, библиотеки. У них можно и просто необходимо учиться.
3. Охуенный syntax shugar
4. Реальное, а не декларируемое, развитие языка.

Вывод:
Если ваше кредо не “я бля самый пиздатый лентяй в мире” и Вы реально хотите расти – питон хорошее направление. Затраченный год на изучение(переход на) питона – ценная инвестиция.

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

Дополнение:
Все упоминания “питона” в данном тексте без потери смысла можно заменить на “руби”.

http://www.gofuckbiz.com/showpost.php?p=155114&postcount=10

PHP-обертка для Twitter API

David Billingham написал и опубликовал php-класс для работы с твиттером: http://emmense.com/php-twitter/.

PS Кстати, там есть мелкие баги. Тестируйте перед использованием.

API правят миром

Новость не для твиттера, но для блога.

Целых два крупных события произошли за последние два дня.
1. Яндексом был открыт API к поиску по блогам.
2. Гуглем был открыт API к счетчику Google Analytics. Подробнее можно прочитать здесь.

“Радостно!”(с)

Теперь можно писать различные скриптовые гаджеты, основанные на этих API.

Вытащить related keywords из Yahoo

Чтобы не забыть.

Урл для получения related keywords из Яхи:

http://sugg.search.yahoo.com/gossip-us-sayt/?output=yjsonp&nresults=10&l=1&command=cialis

Выводит данные в json формате.

Как показывают эксперименты, его можно упростить и задать вывод в xml:

http://sugg.search.yahoo.com/gossip-us-sayt/?output=yjsonp&command=cialis

http://sugg.search.yahoo.com/gossip-us-sayt/?output=xml&command=cialis

via umax. Спасибо sliderxxx !

PS Новый Yahoo API здесь: http://developer.yahoo.com/search/boss/

Как к Zend Studio 5.5.x прикрутить другой svn-клиент

Как выяснилось, дефолтный svn-клиент Zend Studio не работает с проектами, с которыми уже поработал TortoiseSVN. Но, оказывается, к Зенду можно прикрутить произвольный клиент, ту же черепашку. Вот как это делается:

Настройка:
В ZendStudio – идём в настройки Source Control
Source Control Tools : Subversion
Path to SVN : c:\path\to\your\bat\file

В бат файле пишем строчку -
"C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe" /command:%1 /path:%2 /notempfile

Это реализует простые команды без параметров типа update, commit, log.

via http://habrahabr.ru/blogs/php/14133/#comment_245055

Прошерстил Google Reader

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

Интересные вещи после последнего набега на RSS:

  • PHP-библиотека для работы с админкой Adsense. Полезно, например, для изучения того, как работает curl для авторизации в гугле. (via rmcreative.ru)
  • “On Modeling Trust in Social Media using Link Polarity” (via Кишиневский)

Свой счетчик

На гоуфаке товарищ dude излагает принцип построения своего счетчика. Большое спасибо ему за это!

Синхронизация двух MySQL таблиц

Интересный класс обнаружился на phpclasses.org: Synchronize DB.
Не знаю пока как он мне пригодится, но почему-то чувствую, что пригодится точно.

Писать web-приложение на Delphi ? Разве это реально ?

Оказывается, да.
Вот здесь – http://community.livejournal.com/ru_php/1248188.html – чувак в частности утверждает, что сделал решение для запуска дельфийской dll из апача.

Среди вебмастеров нашего плана много дельфийстов, так что, ребята, обратите внимание. Может, пригодится.

Исходники MDS 1.92

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

Хочу сделать то, что надо бы было сделать пару месяцев назад. Выкладываю исходники MDS 1.92 с удаленным модулем проверки лицензии. Правьте, изменяйте как хотите, интегрируйте себе в систему.
Отныне 1.xx ветка приобретает статус free.

http://sfa-tm.ru/mds.1.92.sources.zip

Функции проверки поисковиков находятся в файле functions.php после коммента “SE PARSERS” (строка 1613).
Написано все в целом тяжеловесно – на этом скрипте я фактически изучил php. :) Сейчас многие вещи я бы сделал проще.

У кого есть акк на nulled – отметьтесь в соответствующем топике. Пусть народ свеженькое скачает. :)

CURL Library для Code Igniter

Буду краток. Собственнно, вот он: http://alexpolski.com/2008/04/13/curl-library-for-codeigniter/
Пример использования:

$keyword = 'travel';
$this->load->library('curl');
$this->curl->open();
$content = $this->curl->http_get("http://www.google.com/search?q=$keyword");
$this->curl->close();
echo $content;
Эскхостинг: Хостинг для блога. Домен в подарок.
Next Page »