Блог очередного разработчика

Sanasol

Mobile Chrome http streaming(m3u8) doesnt work

Wrong X-TARGETDURATION in m3u8 playlist causes error on Andorid Chrome.
Error not visible in console or everywhere else, so its really hard to detect.
Chrome Desktop ignore this error for some reason, but mobile sensitive to it.

I have wrongly thought that it should be full video duration.

Solution is: X-TARGETDURATION should contain duration of longest video fragment.

Here is an example of a Media Playlist:

#EXTM3U
#EXT-X-TARGETDURATION:10

#EXTINF:9.009,
http://media.example.com/first.ts
#EXTINF:9.009,
http://media.example.com/second.ts
#EXTINF:3.003,
http://media.example.com/third.ts

The first line is the format identifier tag #EXTM3U. The line
containing #EXT-X-TARGETDURATION says that all Media Segments will be
10 seconds long or less. Then three Media Segments are declared.
The first and second are 9.009 seconds long; the third is 3.003
seconds.

Specs

Debian Jessie bitcoind BerkeleyDB

Installing dependencies like here build unix

BerkeleyDB is required for the wallet.

Debian repository doesn’t contains libdb4.8. So need to get sources and compile it manually.

Get db4.8 source, compile and install:

Tell your system where to find db4.8

Then move to bitcoin sources folder and compile it:

Sources:
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35211263
https://github.com/bitcoin/bitcoin/issues/3686#issuecomment-35236768

MySQL utf8 Incorrect string value

How to fix “Incorrect string value” errors?
Mysql support only 3 bytes in «basic» utf8.
So in case of use some new characters like emoji it gives Incorrect string value error.

To fix this error you need change encoding utf8 to utf8bm4.

CloudFlare отдача и кеширование видео

CloudFlare Caching
CloudFlare Caching

Стриминг видео с сервера очень сильно кушает канал. Поэтому появляется мысль кешировать видео через CloudFlare.
При этом надо сохранить возможность перемотки и разбить файлы на небольшие куски, чтобы CF ничего не заподозрил, а так же не попасть под лимит который не кешируется.
Будем использовать Uppod плеер.

1. Разбить видео
2. Создать страницу сайта

UP 19.07 Трафик продолжает снижаться

(далее…)

Ubuntu Gnome huge CPU usage of gnome-keyring-daemon when starting Google Chrome

gnome keyring cpu
gnome keyring cpu

I have a lot saved passwords in Google Chrome about 2000.
So when I try to sync it on any linux distr. I got high cpu usage from keyring daemon.

To prevent it we need disable password encryption ;(
1. Open Terminal
2.

or

3. Find these lines at end of file

4. Replace with

5. Save it.
6. Kill all keyring processes.
7. Restart Chrome, wait password sync.
8. Profit!

Laravel 5.2 + JWT + Dingo API + PHPUnit

The token could not be parsed from the request
The token could not be parsed from the request

The token could not be parsed from the request

For some magic reasons(simulating requests) phpunit can’t pass tests with JWT token header or GET param token=?.

Solution is just add few lines to middleware or anywhere else like this.

Got it work with this code in my middleware:

Result middleware for api auth

Result :)
Result 🙂

Поменять IP на всех сайтах в Cloudflare

Заменяем старый IP на всех доменах добавленных в CloudFlare.

Ставим из композера: jamesryanbell/cloudflare

Создаем php файл

 

Заполняем переменные: старый/текущий IP, новый IP, email аккаунта на CF, API ключ CF
Запускаем

Профит!

Генератор миксов для кальяна

Генератор миксов

Я большой любитель кальяна, и придумалось сделать генератор миксов.

Так как кальян я курю почти каждый день, запомнить все вариации чаш которые я забиваю(чтобы не повторяться) стало трудновато.

При этом хочется пробовать новые варианты, а не делать одно и тоже.

В общем на фоне этого не так давно пришла мысль вести это в каком-нибудь «списке дел» или еще где-то.

Но это слишком трудно, каждый раз записывать и придумывать новые варианты, я слишком стар для этого дерьма ленив.

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

Получилось как-то так: http://sanasol.ws/hookahgen/

Вносите несколько вкусов табака в список, нажимаете сгенерировать и получаете список уникальных миксов без повторений.

 

Конечно миксы бывают разные, пропорции табака в миксе тоже могут отличаться, но это тоже слишком сложно и я это опущу, иначе список миксов получится бесконечный.

Единственная опция в генераторе это из скольких табаков генерировать миксы: все варианты(включая один табак), минимум 2 табака, минимум 3 табака.

Я думаю для сверхпростого генератора этого достаточно.

Двойной клик на микс или табак включает редактирование.

Так же после успешного(или не очень) испытания микса его можно отметить галочкой — «завершенным»(completed).

 

Список табака и миксов сохраняется в браузере, так что можно не бояться его потерять при обновлении страницы 🙂

 

Ну и конечно исходники приложения на Github: https://github.com/S-anasol/hookahgen

Скидка на доступ к Бородачу

Вчера началась складчина на доступ к бородач сервису.

За 540 рублей вместо обычных 999р можно получить полный доступ к сервису.

Складчина «авторская», каждый получает персональный оплаченный аккаунт на сервисе.

Т.е. это оптовая покупка, а не один аккаунт на всех 🙂

Складчина проходит здесь

Отказоустойчивость use case

Схема серверов

VPS #1 — Франция

  • nginx+php
  • mysql-1
  • haproxy

VPS #2 — Канада

  • nginx+php
  • haproxy

VPS #3 — Нидерланды

  • nginx+php
  • mysql-2
  • haproxy

mysql — master-master репликация.

haproxy — балансирует запросы на два mysql мастера.

haproxy.cfg

На каждый сервер идёт свой поддомен.
Чтобы завалить сервис необходимо положить как минимум 2 хоста из 3.
Для этого надо знать какие хосты держат mysql сервера.
В противном случае класть придётся все хосты, дабы вывести из строя сервис.

Работает 🙂