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

Sanasol

URL pattern matcher/classificator

Problem:

I have many different URLs in database.

From many sites.

I dont know how these sites work and url structure.

So I need to get 500 URLs from each site then compare and group it by common static part.

Which should be automatically merged via replacing with {var} any dynamic URL parts.

And then get ~10 urls as result.

Final result: reduce database size

 

Solution:

Here is some kind Proof of Concept 🙂

Example with splitting URL by «?»

— Parse parameters.

— Calculate frequency for unique parameter values.

— Get Nth percentile.

— Build URLs and replace parameters which frequency is more than Nth percentile

For small data like here in sandbox 50 percentile is enough to group some URL.

For «big real data» 90-95 percentile.
For example: I use 90 percentile for 5000 links -> result ~200 links

Сбор Одноклассников и редизайн бородача

Бородач сервис, Сбор ОК профилей
Бородач сервис, Сбор ОК профилей

Доброго времени суток.

Не так давно начался активный период на Бородаче.
Вышло много апдейтов.
Главные из них это пожалуй сбор ОК профилей и редизайн.

Сбор профилей Одноклассников работает уже примерно 1,5 месяца.
За это время были выловлены разного рода недочеты, и теперь все работает как часы.
Немного о том как это работает, страница ОК определяется при заходе на ваш сайт.
Для этого не требуется делать клик или другие действия со стороны пользователя.
Происходит это за 1-3 секунды.
Так же отличная новость в том что сбор ОК профилей работает на абсолютно любых платформах и устройствах, в отличии от ВК.
Тем самым охват аудитории становится огромным.
Конечно же для определения профиля посетитель должен быть «залогинен» в ОК.

Второе большое обновление это обновление дизайна.
В основном страницы остались те же, но немного поменялась оболочка сайта.
Меню переместилось наверх, и стало более контрастным.
Сильные изменения претерпела страница собранных профилей.
Так как необходимо было добавить в список ОК профили, было решено переработать раздел чуть более чем полностью.
Теперь на странице собранных профилей можно выбрать блочный или табличный вывод профилей.
Так же добавлено поле для заметок о посетителе.
Некоторые данные которые были доступны ранее пока что не отображаются: utm метки, IP адрес, реферер и т.п.
Это будет доступно немного позднее.

Регистрируйтесь здесь: http://vboro.de/
После регистрации 48 часов пробный период с полным доступом.

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