Новости

16 февраля, 2016 · Posted in Без рубрики · Comment 

Немного полезностей:

https://github.com/andboson/carbon — пакет для работы с временем в golang
https://github.com/andboson/configlog — пакет для работы с конфигами и логфайлами
https://github.com/andboson/sample-go-api  — а это просто пример rest-api на го. Работа с БД и тесты включены.

ab-go

12 июля, 2015 · Posted in Без рубрики · Comment 

В общем я решил совместить два предыдущих поста и написал свою утилиту, похожую на ab, но с блэкджеком..

Особо рассказывать нечего, все по ссылке:

https://github.com/andboson/ab-go

Тестирование, графики, отсылка результатов и все такое. Очевидно, так как это то, чем я пользуюсь часто, будет развиваться.

Колхозное нагрузочное тестирование

27 июня, 2015 · Posted in Без рубрики · Comment 

Дано:
Приложение (на golang,в данном случае, но не суть важно).
Нужно:
Протестировать его под нагрузой. В частности, время ответа.

Простой способ, как протестировать приложение и получить график результата, без заморочек с graphite и ему подобных:

Идем на xively.com (бывший cosm) и регистрируем там девайс и канал.
Запускаем наше приложение на локале.
Пример скрипта проверки приложения и отсылки результата в xively:

#!/bin/bash
# file testing.sh

TIME=`curl -s -w "#"%{time_total}   -XPOST -H 'Content-type: application/json' -d"{\"session_id\":\"sess\", \"chan\":\"channel\"}" http://localhost:8000/api/v1/get_data | cut -d'#' -f2`
VALUE=`echo "$TIME*1000" | bc`
POSTDATA="{\"version\":\"1.0.0\", \"datastreams\" : [{\"id\" : \"ch\", \"current_value\" : \"$VALUE\"}]}"
echo $POSTDATA
curl -XPUT -H 'X-ApiKey: DSFewrwewWEDVdfsdfsfdsf' -d"$POSTDATA" https://api.xively.com/v2/feeds/24234342

и запускаем это:

watch -n 1 ./testing.sh

Идем на сайт xively и смотрим на наш график.
Добавляем нагрузку:

#!/bin/bash
#file run_ab.sh
ab -T POST  -c20 -n20 -p ab.txt http://localhost:8000/api/v1/get_data

Тут, думаю, все понятно. Утилита apache ab tester из пакета apache-utils, файл с post-данными и параметры.
Запскаем нагрузку:

watch -n 1 ./run_ab.sh

Вуаля.
Получаем какой-то более-менее, правдивый график, типа такого:
Screenshot from 2015-06-29 10:08:30

apache ab different post data

12 июня, 2015 · Posted in Без рубрики · Comment 

Поиски нужных инструментов никогда не заканчиваются.
Вот я использовал я apache ab для тестирования производительности и всем он был хорошо, кром одного: неизменяемые данные. Мне нужно было тестировать с разными post-данными

После поисков нашлась ссылка http://chrismiles.info/dev/testing/ab/. Этот патч позволяет задать файл, в котором будут перечислены добавочные параметры url. Правда для версии 2.2.4

Вооружившись этим патчем и stackoverflow, я немного допилил версию 2.4.9 ab-тестера.

Теперь она включает в себя патч, позволяющий менять url-параметры и задавать набор данных для post-запросов.
В обеих случаях разные данные располагаются в новых строках.
Скачать: ab

Или патч: ab_add_different_post_data.patch

Некоторые замеры

6 мая, 2015 · Posted in Без рубрики · 2 комментария 

 

Один и тот же метод на php и на golang. Вытаскивает сущность из БД + связанные m2m.
Тестировалось с помощью apache ab. Параметры -n 1 -c 1
Для hhvm была скомпилирована бибилиотека поддержки postgresql.

Собственно, выводы о hhvm оправдались. Правда смущает сторонняя библиотека.
Ну и golang порадовал. На C, очевидно, вышло бы еще быстрее, но и этому рады. Использовался фреймворк beego

про Docker

25 марта, 2015 · Posted in Без рубрики · Comment 

Некий вердикт по использованию Докера, который я составил для себя.

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

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

Кратко:
Разместив файлы из этой ветки: https://github.com/andboson/tools/tree/docker-dev-run (к примеру, скачав их архивом) и запустив docker-start.sh, мы можем открыть в браузере адрес localhost:8888, по которому откроется сайт в текущей директории.
Конечно, перед этим нужно установить сам Докер.

Скрипт запуска скачает образ докера (его создание описано в этой ветке). Образ содержит Apache2, php5.3 и прочее (подробнее тут)
Для использования своих настроек портов и хостов нужно отредактировать файлы конфигурации, расположенные в папке conf и перезапустить образ. Для более сложных случаев предлагается поставить у себя nginx и использовать запущенный образ как источник для proxy-pass.

Ссылки:
https://www.docker.com/
http://habrahabr.ru/post/253877/
http://habrahabr.ru/post/247547/

Новости

8 февраля, 2015 · Posted in Без рубрики · Comment 

IT:

Вышел Laravel 5

Вышел Git 2.3

Личное:

Мне все больше нравится Go
В процессе перевода одного приложения с Ruby на PHP плакал. PHP против Ruby — как бушмен против рейнджера.

Приобрел Realtek-based  медиатанк. Будем глядеть, что у них там..

Полезности:

Обновлен YTLR плагин — https://github.com/andboson/YTLR/releases
Обновлен FS.UA плагин — https://github.com/andboson/fs.ua/releases

с наступающим

29 декабря, 2013 · Posted in Без рубрики · 3 комментария 

Обновление плагина FS.UA

https://github.com/andboson/fs.ua/releases

Ну и от нас с сыном открытка:
2014Всего хорошего нам всем.

zPanel

15 августа, 2013 · Posted in Без рубрики · Comment 

zpanel

https://github.com/andboson/zpanelx/commit/af7ec2784951827f13d0579c1225c205c54b8cc5

Фикс, решающий некорректные пути, при создании фтп-аккаунтов.

ЗЫ: Поставил на дев-сервере эту панель.  Очень неплохая.

Авторизация без curl

23 февраля, 2013 · Posted in Без рубрики · Comment 

Есть тип веб-сервера, куда поставить curl проблематично.
Но хочется иметь доступ к сайтам с авторизацией.

Посему, пример кода, как это сделать в этих условиях:


// логин и пароль
 $postdata = http_build_query(
 array(
 'login' => $ini['login'],
 'passwd' => $ini['password']
 )
 );

// формируем заголовок
$opts = array(
 'http'=>array(
 'method'=>"POST",
 'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
 "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
 "Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
 "Accept-Encoding:identity, *;q=0",
 'content' => $postdata
 )
 );

// сам запрос на авторизацию
$context = stream_context_create($opts);
 $result = file_get_contents('http://нужный сайт/login.aspx', false, $context);
 $coo = Array();
 foreach( $http_response_header as $head){
 if(stristr($head, 'Set-Cookie:' )) $coo[] = (str_ireplace('Set-Cookie:', '', $head ));
 }
 $coo = implode('; ',$coo);

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

Используя полученные куки, далее уже получаем страницу, на которой нам нужны данные:

$opts = array(
 'http'=>array(
 'method'=>"POST",
 'header'=>"Content-type: application/x-www-form-urlencoded\r\n User-Agent : Opera/9.80 (X11; Linux i686; U; ru) Presto/2.7.62 Version/11.00 \r\n".
 "Accept-Language: ru-RU,ru;q=0.9,en;q=0.8 \r\n".
 "Accept-Charset:utf-8, utf-16, *;q=0.1 \r\n".
 "Accept-Encoding:identity, *;q=0 \r\n".
 "Cookie: ".$coo,
 'content' => $postdata
 )
 );

$context = stream_context_create($opts);
 $result = file_get_contents('http://нужный сайт/profile.aspx?page='.$f_page, false, $context);
<pre>

———————
Ну и обновился плагин для медиатанков для FS.UA: http://code.google.com/p/fsua/

  • Добавлена работа с избранным
  • Переделан поиск
  • Переделан парсинг
  • Постер  в материале
  • мелкие правки

Следующая страница →