Записки утконоса-программиста

Умер создатель Debian Linux

Умер создатель Debian Linux Ян Мёрдок. Обстоятельства смерти не разглашаются. Сообщается, что незадолго до смерти Мёрдок угрожал совершить самоубийство.
Умер создатель Debian Linux

nginx и apple - как побороть 404 ошибку

Итак, внезапно оказываются в логах тысячи 404 ошибок и именами файлов такого вида /home/_______/www/images/photos/medium/aa717922c4f9d4c29225ea94332a5a09@2x.jpg откуда приползло это не понятно мне было по началу, потом посмотрев с каких клиентов такое прилетает понял что Apple подложило весёлость благодаря своим ретинадисплеям.
nginx и apple - как побороть 404 ошибку

Итак, при запросе картинок с Apple устройств с этим дисплеем все картинки запрашиваются в формате имяфайла@2.ext почему? Потому что лошадь в ванной с огурцами. Ладно, под эппл подстраиваться не очень хочется, да и 100 гигов фоток переформатировать как то не хочется, поэтому будем обходить через Nginx:

Код PHP:
  1. location ~* ^(.+)@2x.(jpg|jpeg|gif|png)$ {
  2. try_files $uri $1.$2 =404;
  3. }
  4.  

Обложки альбомов для песен

Понадобилось мне тут показывать обложки для песен в плеере на сайте онлайн радиостанции chebfm и тут проблема что lastfm прикрыт он на территории РФ что есть очередной повод искать трактор замену сервису. Вы скажете ну есть же musicbrainz!
Да шикарный сервис с шикарным API всё просто:
Делаем запрос на урл
Код PHP:
  1. file_get_contents('http://www.musicbrainz.org/ws/2/recording?query='+title+'AND artist:'+artist);
Получаем XML строку которую разбираем, находим Release ID дальше ещё один запрос:
Код PHP:
  1. file_get_contents('http://coverartarchive.org/release/'+release_id);
Который нас переправляет на
Код PHP:
  1. http://archive.org/download/mbid-RELEASE_ID/index.json
И да опять жопа - archive.org заблочен в РФ...клёва да?
Обложки альбомов для песен

Выбор пал на iTunes, его то ещё не закрыли...пока...

JWplayer stop buffering!

Есть такой весёлый плагин для JavaScript как jwplayer просто великолепный и вообще можно есть без приправ. Но я тут столкнулся с одной гигантской проблемой:
JWplayer stop buffering!

Кто не понял объясняю: Если Вы в плеер всунули стрим поток, как я сделал на странице онлайн радио cheb.fm то он будет загружаться без объявления войны без предупреждения пользователя и функции отключения я не нашёл в документации. Да и сами доки его просто говно!
Короче, я так понял, что настройка autoBuffering потерялась где то между 4 и 6 версией jwplayer и теперь её можно включить только для RTMP потока. А в остальных случаях буферизироваться будет на основании параметра Duration. Не, всё конечно хорошо, но вопрос: А какой duration (он же продолжительность) у стрим файла? Правильно никакой.
И вот представьте, открыл страничку пользователь и ушёл пить чай...а стрим грузится...короче не будет Вам благодарен пользователь за то что вы ему трафика накидали...вот совсем...
Короче решение: При нажатии на "стоп" заполнение буфера прекращается. Надо лишь его эмулировать:
Код JAVASCRIPT:
  1. //тут объявление плеера
  2. player = jwplayer("lplayer");
  3. //Настройка плеера
  4. player.setup({
  5. //setup functions
  6. })
  7. //После того как плеер готов сразу же как плеер будет готов
  8. player.onReady(function(){player.stop();});
А доки на сайте говно у JWPlayer`а

Активируем Phpstrom 10

Активируем Phpstrom 10

Инструкция:
1) Заходим Help/Register… -> License server.
2) В поле пишем “http://idea.lanyus.com”.
3) Жмем ОК.

Ну если сервер сдохнет то:
Код PHP:
  1. Key: EMBRACE
  2. License Key :
  3. ===== LICENSE BEGIN =====
  4. 43136-12042010
  5. 00002UsvSON704l"dILe1PVx3y4"B3
  6. 49AU6oSDJrsjE8nMOQh"8HTDJHIUUh
  7. gd1BebYc5U"6OxDbVsALB4Eb10PW8"
  8. ===== LICENSE END =====

Пиная Yii2 или как нарисовать сову

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

Не ну реально...либо я старый и тупой...Единственное что понравилось в тутариалах это вот этот сайтик. По крайней мере с ним у меня получилось запустить ЧПУ.
Оказывается всё было просто ибо в config/web.php надо было лишь прописать:
Код PHP:
  1. $config = [
  2. /*some code*/
  3. ' components' => [
  4. /*some code*/
  5. 'urlManager' => [
  6. 'enablePrettyUrl' => true,
  7. 'showScriptName' => false,
  8. 'rules' => [
  9. '<_c:[w-]+>/<id:d+>' => '<_c>/view',
  10. '<_c:[w-]+>' => '<_c>/index',
  11. '<_c:[w-]+>/<_a:[w-]+>/<id:d+>' => '<_c>/<_a>',
  12. ],
  13. ],
  14. /*some code*/
  15. ],
  16. 'params' => $params,
  17. ];
  18.  
Да может я туп. Может вам и пригодится. Завтра буду пытаться научиться регистрировать пользователей. Или не завтра...

Geshi для Qt5

Обновил файлы для подсветки синтаксиса Qt5 и QML для Geshi. QT5 вроде полностью поддерживается, QML надо проверять. Предложения в контент.
Geshi - Generic Syntax Highlighter for PHP - Библиотечка подсветки кода для PHP но это так...если что.
Качать тут у меня в профиле
Pull request
Патч

Экранчик

Заказать что ли себе такую фиговину:
Экранчик

Экранчик для RPi с интерфейсом SPI - побаловаться - встроить его в панель приборов или под руку...
Задёшего же продают...или не стоит оно того?

А то чо как лох то? Начнём изучать Yii2

Тут везде в вакансиях началось повальное требование YII2 ну решил помучать себя на изучение...а так как я не спал нормально 11 дней всё будет просто до безумия. Как поставить систему знают я думаю все. Ну если не знают то Use Google Luke! Я не много про другое...
А то чо как лох то? Начнём изучать Yii2

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

Ошибка сборки Qt Android

После обновления Qt до версии 5.5.1 отвалилась сборка Android пакетов с криками такого вида:
Код PHP:
  1. BUILD FAILED
  2. /home/neochapay/workspace/android-sdk-linux/tools/ant/build.xml:649: The following error occurred while executing this line:
  3. /home/neochapay/workspace/android-sdk-linux/tools/ant/build.xml:694: null returned: 1
Хрень полная, обновление android-sdk и гугление не помогло от слова совсем...решение есть! Включили мозг посмотрели выхлоп и нашли ошибку в AndroidManifest.xml. А именно в параметре android:configChange главного активити. Удаление его решило проблему, о побочных эфектов пока не понятно...но вроде все живы.