Установка нового Flash Plugin в Firefox/IceWeasel (Debian Wheezy, Jessie, Ubuntu Wily Werewolf)

Как заставить работать Firefox в Linux с новейшей версией Flash Player (выше 11.2)

Как известно, новые версии Adobe Flash Player существует в нескольких версиях:

  • ActiveX — для Internet Explorer’a (только в Windows)
  • NPAPI — существовал долгое время для всех остальных браузеров, в последнее время остановился в развитии (в Linux, для Windows всё ещё выходит)
  • PPAPI — существует с относительно недавнего времени для браузеров на движке Chromium

Компания Adobe с 2012 года отказалась поддерживать плагин Flash Player для NPAPI, и поэтому у многих пользователей FireFox в Linux версия плагина не поднимается выше 11.2

При этом сейчас (сентябрь 2016 года) уже есть Flash Plugin версии 23 и даже старше.

Решение придумал Ринат Ибрагимов, программер из Казани. Он написал обёртку (враппер) между NPAPI (системой плагинов Firefox) и PPAPI (системой плагинов Chromium). Эта обёртка выглядит для FireFox как обычный NPAPI-плагин, в то время, как для самого плагина, она выглядит как браузер с поддержкой PPAPI (как например Google Chrome).
То есть, схема работы такая:

Новый Adobe Flash PPAPI <=> Враппер FreshPlayer Рината <=> Firefox

Вот аккаунт героя на гитхабе: https://github.com/i-rinat
А вот и репозиторий с враппером: https://github.com/i-rinat/freshplayerplugin
Хотя в самом репозитории есть инструкция по установке, запишу здесь чёткую последовательность действий, чтобы не забыть, да и другим помочь.

Читать далее


FastFuzzySearch — Быстрый нечёткий поиск среди массива слов на PHP

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

При этом, разумеется, есть мощные профессиональные системы поиска, такие как Sphinx, ElasticSearch, но не всегда имеет смысл их разворачивать и настраивать, ради одной небольшой задачи, либо когда вам только нужно сделать прототип поиска, чтобы проверить, даст ли он требуемые преимущества.

Для таких случаев я написал на php инструмент для нечеткого поиска среди массива строк.

В каких случаях может пригодится данный инструмент:

1. Поиск среди списка стран мира

2. Поиск среди названий страниц вашего сайта в админ-панели

3. Поиск среди уникальных имён ваших пользователей

и в других случаях, где количество записей списка не превышает несколько тысяч.

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

Читать далее


Быстрое сравнение изображений на PHP через hash изображения

Иногда возникает потребность определить, являются ли два файла изображений одинаковыми, или очень похожими (когда одно из них было сильнее сжато, сохранено в другом формате файла, или размер его был изменён).
Это может понадобиться в следующих случаях:

  • У вас на сайте есть большая база изображений, и вы хотите найти в ней дубликаты (очень похожие друг на друга) с целью удаления.
  • На вашем сайте есть база изображений, и вы, при загрузке нового изображения, хотите проверить, нет ли уже такого
  • Вы хотите реализовать поиск по изображениям, то есть, если вы хотите выбрать из базы изображение, название которого не помните, но у вас есть его файл, вы можете загрузить этот файл и найти по нему уже существующий, и выбрать найденное

Для этого идеально бы подошёл некий алгоритм создания хэша — некоего числа или достаточно короткой строки, которые можно было бы один раз сгенерировать для всех ваших изображений, а потом, при добавлении нового изображения сверять его хэш с ними. Это будет гораздо быстрее чем перебор всех изображений и сравнение их самих.

Долгие поиски в Интернете, не дали мне подходящего алгоритма, поэтому я создал свой.
Читать далее


Заметки о ньюансах разработки в UnrealEngine4

Эта запись — блокнот для записи небольших заметок о некоторых неочевидных особенностях, всплывающих при разработке игр на Unreal Engine 4.
Все эти особенности приходится гуглить, а потом о них быстро забываешь, поэтому будет полезно хранить для себя и человечества эту информацию.

Речь будет идти в основном о «программировании мышкой» посредством BluePrint’ов.

Читать далее


Автоматический переводчик gettext po-файлов

Наиболее распространённый способ переводов программного обеспечения и веб-сайтов на разные языки — с помощью библиотеки gettext.
Для тех, кто не в курсе, поясню как она работает:

  1. В коде программы/сайта, везде где вам нужно выводить некий текст, меняющийся в зависимости от языка, вы пишете не просто строковые константы, типа «Да» и «Нет», а используете некую специальную функцию вроде _(«Да»), _(«Нет»), или t(«Да»), t(«Нет»), или даже [`Да`], [`Нет`].
  2. Вы запускаете специальный скрипт, который сканирует весь ваш исходный код, находит такие вот специфические вызовы функции, и составляет из них *.po — файл.
  3. Вы с помощью некоего редактора, например poedit добавляете в файл *.po переводы всех строк которые там есть на некий язык, и сохраняете файл как, например, en_US.po, после чего генерируете соответствующий *.mo-файл, в данном случае en_US.mo.
  4. Вы указываете вашей программе/сайту путь к файлу перевода (например, берёте из сессии или из данных браузера язык, который выбран у пользователя, и исходя из этого, выбираете ru_RU.mo или en_US.mo
  5. Программа/сайт автоматически заменяет ваши t(«Да») и t(«Нет») на слова написанные на том языке, который был выбран.

Как же перевести po-файл автоматически, если качество перевода для вас не важно, но нужно чтобы сайт/приложение начало выглядеть как многоязычное для вашего заказчика?

Читать далее


Электронные весы Arduino + HX711 + Python

Мало купить Arduino и написать для него десяток программ, которые мигают светодиодами, реагируют на нажатие кнопок, и измеряют температуру воздуха терморезистором.
Рано или поздно нужно сделать своё первое законченное устройство, от которого будет польза.
Для меня таким устройством стал аппаратно-программный комплекс для снятия данных с датчика силы.

Читать далее


Преобразование значений полей PHP-форм во вложенные объекты JavaScript

Как известно, чтобы передать в PHP-скрипт данные из HTML-формы в виде массива, нужно использовать ключи вида «field[key]», например:
[html] <form id=myform>
Пользователь 15:<br>
<input type=hidden name="User[15][id]" value="15"><br>
Имя:<input type=text name="User[15][name]" value="Вася"><br>
Телефон:<input type=text name="User[15][phone]" value="+79991234567"><br>
Пользователь 16:<br>
<input type=hidden name="User[16][id]" value="16"><br>
Имя:<input type=text name="User[16][name]" value="Петя"><br>
Телефон<input type=text name="User[16][phone]" value="+79824445551"><br>
</form>
[/html] Многие PHP-фреймворки при создании HTML-форм, дают имена их элементам подобным образом. Это и понятно, формировать их так — очень просто, при передаче такой формы в PHP-код она превратится в удобный массив вида:

array(
    "User" => array(
        15 => array(
            "name" => "Вася",
            "phone" => "+79991234567"
        ),
        16 => array(
            "name" => "Петя",
            "phone" => "+79824445551"
        ),        
    )
);

Но если вы передаёте его не путём обычной отправки формы, а с помощью Ajax, тут вас и подстерегает проблема.

Читать далее


SSL-сертификат Let’s Encrypt на Nginx

Проект Let’sEncrypt вошёл в стадию публичной беты 3-го декабря 2015 года. Теперь его можно попробовать.

В чём суть проекта: он позволяет выпускать и продлевать SSL сертификаты бесплатно и автоматически.

На счёт «бесплатно» — здесь всё ясно. Можно бесплатно получить сертификат уровня Domain Validation.

А вот на счёт «автоматически» — чуть посложнее. Разберём процесс получения и установки сертификата.

UPD: Увеличена степень «автоматизма» получения сертификата, убраны однообразные ручные операции.

Читать далее


Доступ к вашему домашнему ПК по ssh сквозь NAT

Если у вас дома стоит стационарный компьютер c Debian/GNU Linux или чем-то похожим, то у вас, вероятно, время от времени возникает потребность подключиться к нему по ssh находясь где-то совсем в другом месте. У меня, например, дома стоит системный блок без монитора и клавиатуры, работающий сервером резервного копирования. У вас это может быть рабочий ПК, или что угодно ещё, работающее под Linux.
Домашний ПК обычно входит в локальную сеть, как правило, организуемую с помощью некоего домашнего роутера. При этом доступ к нему из вне (из интернета) обычно невозможен.

Читать далее


Ваш Fail2Ban вас же и забанил

Для Linux есть замечательная утилита Fail2Ban, которая позволяет банить IP-адреса за подозрительную активность, защищаться таким образом, например, от брутфорса паролей от ssh-аккаунтов, или простым способом бороться с DDOS’ом.

Если вы им ещё не пользуетесь, кратко:

1) Установить можно банально введя

apt-get install fail2ban

после чего вы «из коробки» получите разные виды фильтров для ssh, nginx, mysql, apache, asterisk, exim, postfix, squid и ещё кучи всего.
2) Документация здесь: http://www.fail2ban.org/wiki/index.php/Main_Page

Достаточно установить fail2ban и каждого кто 3 раза будет ошибаться с вводом логина/пароля в ssh будет банить на 10 минут. Такими темпами подобрать пароль быстро не получится, особенно, если он у вас имеет вид «ac5R3&pE_~0)».

Конечно, вы знаете пароль, и всегда вводите его правильно, а точнее, ваш публичный ключ шифрования записан в ~/.ssh/authorized_keys, поэтому вы заходите на хост без пароля.

Но даже вас fail2ban в некоторых случаях может забанить

Читать далее


Страницы:12345