Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode

Сериализация в PHP

Будут сравниваться 4 способа сериализации: Стандартная сериализация serialize JSON msgpack igbinary Кратко об установке Что еще важно отметить Тесты 1. Массив ассоциативный: вложенные массивы и строки 2. Массив числовой: большие массивы целых чисел 3. Массив числовой: большие массивы длинных целых чисел (int64) 4. Массив числовой: большие массивы чисел с плавающей точкой (float) 5. Массив строковый: большие массивы длинных строк Кратко об установке JSON раньше шел в стандартной поставке PHP.
Read full post gblog_arrow_right

Разжился SSD диском

Вот и я разжился SSD диском. Будет на чем тестить NoSQL SSD хранилища. В планах потестить на нем RocksDB, LevelDB и, возможно, RethinkDB.

Пластилиновый мультик

Сделали с дочей мультик из пластилина. Делается так: convert -delay 20 -loop 0 *.jpg mygif.gif Вот результат: Еще полезное: Сделать из кадров ролик: convert -delay 20 -loop 0 *.jpg mympg.mpg MOV из gif: convert mygif.gif mymov.mov Видео на YouTube: Смотреть на YouTube

Топ 7 ботов за сутки

По результатам выборки из логов сервера за 1 сутки. Googlebot — 43 229 запросов YandexDirect — 21 260 Mediapartners-Google — 14 386 Mail.RU_Bot — 13 715 YandexBot — 13 079 AhrefsBot — 11 997 openstat ru/Bot — 2 709 Выводы: Гугл предсказуемо обошёл всех и вся. Честь и хвала ему. Удивил Mail.RU, который обошёл Яндекс. Что касается Яндекса, то очевидно, что приоритет Яндекса — их рекламная сеть. И уже потом поисковые технологии.
Read full post gblog_arrow_right

Google Chrome и "-" 400 0 "-" "-"

Еще раз к вопросу откуда в логах берутся строки вида: 1.1.1.1 - - [19/Jan/2013:07:19:23 +0400] "-" 400 0 "-" "-" При медленном соединении удалось отловить эффект появления таких записей в браузере и увидеть все вживую. Вот тут видно, как Chrome отправил два запроса, держит соединение открытым, а потом закрывает: А секундой позже уже загружает то, что его просили. Успел сделать снимки экрана. Повторить эксперимент можно либо подключившись к медленному каналу, либо намеренно ограничив скорость соединения на стороне веб-сервера.
Read full post gblog_arrow_right

Баним ботов. Часть 2

Небольшой анализ логов сервера. Какие странные сущности обитают в Интернете. И как с ними бороться. Открытые подключения В логах nginx’а обнаружил десятки тысяч записей вида: 1.1.1.1 - - [19/Jan/2013:07:19:23 +0400] "-" 400 0 "-" "-" 1.1.1.1 - - [19/Jan/2013:07:19:23 +0400] "-" 400 0 "-" "-" 1.1.1.1 - - [19/Jan/2013:07:19:23 +0400] "-" 400 0 "-" "-" 1.1.1.1 - - [19/Jan/2013:07:19:34 +0400] "-" 400 0 "-" "-" 1.1.1.1 - - [19/Jan/2013:07:19:34 +0400] "-" 400 0 "-" "-" 1.
Read full post gblog_arrow_right

Баним ботов. Часть 1

В один прекрасный день мне надоело видеть у себя в логах такое вот безобразие: 113.204.67.51 - - [19/Jan/2013:07:22:08 +0400] "GET /phpmyadmin/ HTTP/1.1" 404 564 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)" 113.204.67.51 - - [19/Jan/2013:07:22:12 +0400] "GET /PMA/ HTTP/1.1" 404 564 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)" 113.204.67.51 - - [19/Jan/2013:07:22:17 +0400] "GET /pma/ HTTP/1.1" 404 564 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)" 113.204.67.51 - - [19/Jan/2013:07:22:17 +0400] "GET /admin/ HTTP/1.
Read full post gblog_arrow_right

Как в PHP узнать протокол (https)

Оказывается, узнать, что сайт использует SSL и страница открыта по протоколу https — не настолько тривиальная задача, чтобы решить её с наскока. Однако, решение оказалось достаточно простое. Проблема заключается в том, что для определения протокола могут быть использованы переменные: $_SERVER['HTTPS'] $_SERVER['HTTP_SCHEME'] $_SERVER['HTTP_X_FORWARDED_PROTO'] И косвенно: $_SERVER['SERVER_PORT'] Но все эти переменные, кроме номера порта, почти наверняка будут отсутствовать. Определять http-схему, основываясь только на номере порта — приемлемое, но не очень гибкое решение.
Read full post gblog_arrow_right

Мозаика из фотографий с помощью convert (ImageMagick)

Из фотографий или картинок одинакового размера можно сделать мозаику. Получается интересный эффект. Для этого я написал два bash-скрипта. Первый уменьшает размеры фотографий, второй делает из миниатюр мозаику. Скрипт для уменьшения фотографий #!/bin/bash SW=150 SH=150 FROMDIR="fromdir" TODIR="todir" for name in $(ls $FROMDIR); do convert -resize ${SW}x${SH} -strip $FROMDIR/$name $TODIR/$name done Здесь: SW — ограничение ширины миниатюры; SH — ограничение высоты миниатюры; FROMDIR — каталог, в котором находятся фотографии; TODIR — каталог, в который будут сложены миниатюры.
Read full post gblog_arrow_right

Установка Redis via unix.socket

О том, как установить Redis в качестве сервера на Linux и обращаться к нему через Unix.socket По мотивам куцей доки: http://redis.io/topics/quickstart и http://redis.io/download От рута делаем: mkdir /usr/src/redis cd /usr/src/redis wget http://redis.googlecode.com/files/redis-2.4.4.tar.gz tar xzf redis-2.4.4.tar.gz cd redis-2.4.4 make && make test Если тесты прошли нормально (должно быть написано что-то вроде этого: “\o/ All tests passed without errors!"), то двигаемся дальше. mv ../redis-2.4.4.tar.gz ./redis-2.4.4.tar.gz cp src/redis-server /usr/local/bin/ cp src/redis-cli /usr/local/bin/ mkdir /etc/redis mkdir /var/redis Далее в доке предлагается сделать cp utils/redis_init_script /etc/init.
Read full post gblog_arrow_right