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

Ну правда стало гораздо аккуратней? :)
25.11.2010
Ну вот как я и обещал появилась поддержка русскоязычных доменов в панели вебмастера. Правда пока не определяется число страниц в индексе яндекса (у него почему то не работает оператор site: с РФ зоной), но в остальном вроде работает. Честно говоря панель давно пора основательно переделать, чем возможно вскоре и займусь.

24.11.2010
Возможно кто то заметил что в последнее время у нас на бирже сайтов наблюдались, некоторые кхмм проблемы. Дело в том что старая система создания скриншотов (с помощью Firefox и какой то матери) перестала выдерживать нагрузку, да спроектирована была изначально с просчетами. Теперь все по другому – все сайты строятся в очередь и специально обученный демон рисует для них картинки. И у него это неплохо получается!

22.11.2010
В очередной раз Тормоз устроил дичайший холивар в своем блоге.
Я туда боюсь заходить – зашибут ещё ненароком. Между тем, задача как мне кажется легко решается. Вот накидал за 10 минут:
- <?php
-
- class Cacher {
- // Время жизни кэша в секундах
- public $timeout = 10;
-
- // Массив с кэшем (хранится в памяти т. к. это всего лишь пример)
- private $cache = array();
-
- public function __call($name, $args) {
- return $this->realCall($name, $args);
- }
-
- public function call($callback) {
- $args = array();
- if (func_num_args() > 1) {
- $args = array_slice(func_get_args(), 1);
- }
- return $this->realCall($callback, $args);
- }
-
- private function realCall($callback, $args = array()) {
- $cacheKey = $this->getKey($callback, $args);
-
- // Выводим из памяти если существует кэш и он не просрочен
- if ($this->hasCache($cacheKey)) {
- echo "From cache with love.<br/>\r\n";
- return $this->getCache($cacheKey);
- }
-
- $data = call_user_func_array($callback, $args);
- $this->setCache($cacheKey, $data);
-
- return $data;
- }
-
- // Генерирует хэш ключ для кэша :)
- private function getKey() {
- $serialized = serialize(func_get_args());
- $key = md5($serialized);
- return $key;
- }
-
- private function hasCache($key) {
- if (isset($this->cache[$key])) {
- if ($this->cache[$key]->expire > time()) {
- return true;
- } else {
- // Удаляем просроченный кэш
- unset($this->cache[$key]);
- }
- }
- return false;
- }
-
- private function getCache($key) {
- return $this->cache[$key]->data;
- }
-
- private function setCache($key, $data) {
- $this->cache[$key] = (object) array(
- 'expire' => time() + $this->timeout,
- 'data' => $data,
- );
- }
- }
-
-
- ?>
И пример использования:
- <?php
-
- require './Cacher.php';
-
- $cacher = new Cacher;
-
- // Через __call
- $cacher->file_get_contents('http://jeck.ru');
- $cacher->file_get_contents('http://jeck.ru');
-
- class TestClass {
- private $param = 'paramValue';
-
- public function testMethod($url) {
- return file_get_contents($url);
- }
- }
-
- $testClass = new TestClass;
- // Через call что бы передать имя и метод класса
- $cacher->call(array($testClass, 'testMethod'), 'http://jeck.ru');
-
- ?>
19.11.2010
Вот такое письмо сейчас прибыло на почту:
Здравствуйте!
Высылаю анкету на организацию рекламной кампании для Вашего сайта – jeck.ru
Пожалуйста, заполните необходимые поля и вышлите ее на Email: valimaster@yandex.ru
После чего, Вам будет предоставлен доступ к личному кабинету и счет для оплаты.
С уважением, Владислав.
По любым возникшим вопросам обращайтесь:
Телефон: +7 (495) 585-62-89
ICQ: 569775857
Надеюсь теперь их email и icq попадут в спам базы.
17.11.2010
Вот например – http://pr-cy.ru/analysis/президент.рф.

Кроме того весь анализ был полностью переписан, он стал гораздо шустрее особенно с учетом того что кешируется только контент самого сайта, а тИЦ и PR проверяются каждый раз заново.
16.11.2010
Снова решил поделится удобной библиотечкой, на этот раз для наглого спама удобного прохождения CAPTCHA. Код лежит на assembla.
Пример работы с библиотекой:
- <?php
-
- require './anticaptcha.php';
-
- try {
- // 5a2e55b49179066bc702342412cf5cbc - ключ AntiCaptcha
- $ac = new AntiCaptcha('5a2e55b49179066bc702342412cf5cbc');
-
- // Задаем ограничивающие параметры
- $ac->numeric = true;
- $ac->min_len = 6;
- $ac->max_len = 6;
-
- // Получаем каптчу
- $captcha = file_get_contents('http://jeck.ru/labs/captcha');
-
- // Расшифровываем налету
- echo "Start auto recognizing\r\n";
- $code = $ac->recognize($captcha, true);
- echo "Recognized code - ".$code."\r\n";
- // Сохраняем каптчу в файл
- file_put_contents('./captcha.png', $captcha);
-
- // Расшифровываем из файла
- echo "Start file recognizing\r\n";
- $code = $ac->recognize('./captcha.png');
- echo "Recognized code - ".$code."\r\n";
- } catch (Exception $e) {
- // Обработка исключений
- echo $e->getMessage();
- }
-
- ?>
Основное преимущество – нет необходимости сохранять изображение в файл. Кстати если интересно тут можно посмотреть процесс рефакторинга.
И не стесняйтесь – подписывайтесь.
13.11.2010
Может кто то уже заметил – закладочник обновился до версии 2.1 . Удалены неработающие сервисы, добавлены новые. Как всегда обновления для клиентов абсолютно бесплатны. Скачать или купить можно здесь. Если по каким то причинам вы забыли и не можете восстановить ключ – просто напишите мне с адреса который указали при покупке.
+ Акция
Каждый кто приобретет закладочник до конца ноября имеет право на добавление одного модуля. Напишите мне какой сервис хотели бы видеть в закладочнике и я добавлю его в течении пары дней.
11.11.2010
Начну писать снова помаленьку. А то совсем обленился. Вот решил поделится одной библиотечкой с которой работаю уже несколько лет. За это время она регулярно обновлялась, исправлялись старые баги добавлялись новые… По идеи это класс (между прочим первый класс который я написал на php) надстройка над curl, исключительно для облегчения работы и сохранения нервов.
И так, ссылка на репозиторий – httpclass там всегда можно будет найти свежую версию.
Дальше примеры.
Остальное