Месячные архивы:Ноябрь 2016

Внимание! Уязвимость нулевого дня в Firefox для Windows

В интернете появилась уязвимость нулевого дня для Windows-версии Firefox, то есть, сегодня она уже известна, но для неё ещё нет решения.
Статья с подробным разбором на английском: https://www.wordfence.com/blog/2016/11/emergency-bulletin-firefox-0-day-wild/

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

Читать далее


Компиляция Unreal Engine 4.14, 4.15 в Debian 8 Jessie

Unreal Engine версии 4.14, вышедший относительно недавно, как всегда, имеет кучу нового функционала, и не имеет большого количества старых багов. В частности бага из версии 4.13, приводящего к тому, что при открытии редактора Widget Blueprint весь Unreal Engine Editor вылетает целиком.

К слову, зато в UE 4.14 есть баг, из-за которого редактор вылетает при открытии редактора анимаций, или редактора скелетных мешей.

В версии 4.15 поправлены все досадные баги, приводившие к вылету редактора в Linux, и добавлены такие замечательные вещи, как типы данных Set и Map в BluePrint’ах (в C++ их можно было использовать и раньше). Первые позволяют создавать набор из произвольных неповторяющихся элементов с быстрым поиском по ним, а вторые — ассоциативный массив с произвольным типом ключей и значений.

Однако, если версию 4.13 можно было без проблем скомпилировать в Debian 8 Jessie, то версии 4.14 и 4.15 для компиляции требует Clang весрии 3.9, который есть только начиная с Debian 9 Stretch, который, на момент написания этого текста, ещё не «заморожен» и является тестовым дистрибутивом.

Итак, что же нужно, чтобы собрать UE4.14 или UE4.15 в Debian Jessie:

Читать далее


Вы уже находитесь в Skype на этом компьютере — Linux

В какой-то момент работы со Skype в Linux он может внезапно вылететь (полностью закрыться и пропасть), а при повторном запуске скажет «Не возможно войти, вы уже находитесь в Skype на этом компьютере».

Также, может быть и другая проблема, которая решается точно также: «Вход невозможен ввиду ошибки передачи данных«. У меня она появилась после того как ошибку, указанную в заголовке, удалось победить. Как выяснилось, эти две ошибки по сути являются сторонами одной медали — а именно повреждения базы данных скайпа в вашей папке профиля.

В сети по данному запросу можно найти множество советов, но из них 90% предназначены для windows, а ещё 10% предлагают удалить папку ~/.Skype со всеми данными аккаунта, включая копившуюся годами историю переписки, все настройки, распределение ваших контактов по группам, и так далее.

Поскольку меня такое решение не устраивало, я нашёл новое.

Читать далее


PHP, Nginx, отключение буферизации

В некоторых случаях требуется чтобы скрипт на PHP выводил свои данные в браузер без буфферизации, непосредственно после команд echo или print_r.
Например, при написании долгоиграющего скрипта, который должен быть запущен при помощью pdem, чтобы выводить из скрипта прогресс выполнения и прочие данные в сервер pdem, понадобится отключить буферизацию.
Как выяснилось, в интернете есть целая куча разных рекомендаций и решений вопроса отключения буферизации, который пришлось объединить в одно целое, чтобы добиться цели. В моём случае, буфферизация Nginx и Yii вставляли палки в колёса.
Здесь я представляю данное решение.
Читать далее


Простой запуск и контроль фоновых процессов в PHP и Python

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

  • Процесс граббинга сторонних Интернет-ресурсов
  • Импорт некоего большого файла
  • Архивация файлов в файловой системе (например, если вы пишете веб-панель управления файлами)
  • Синхронизация с удалённой базой данных (например, 1С)
  • Обработка большого количества файлов (пересжатие картинок)
  • Конвертация базы данных в новый формат

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

1) Как запустить долгоживущий процесс независимо от главного, чтобы по завершении главного процесса (того кто запускает), дочерний продолжил работу?
2) Как получать от запущенного долгоживущего процесса информацию о его прогрессе (если таковая имеет смысл), а также прочие данные о состоянии, из других процессов?
3) Как передавать эту информацию изнутри долгоживущего процесса?
4) Как быть точно уверенным, что процесс всё ещё работает, или наоборот, что он уже завершился?
5) Как при этом не терять информацию о процессах которые уже завершены?
6) Как добиться того, чтобы долгоиграющие процессы запускались от имени не того пользователя, кто их запускает, а от другого?

У данных проблем есть решения как средствами Unix (файлы pid, команды ps, screen, nohup, sudo в связке с bash, sed, awk), так и специализированными мощными инструментами, позволяющими запускать тысячи процессов, распараллеливать по ним задачи, балансировать с их помощью нагрузку на сервера и так далее.

Я же предлагаю простой, удобный инструмент, предназначенный для решения вопросов запуска и контроля фоновых процессов и ничего больше. Он даёт ответы на все поставленный вопросы, практически не имеет конфигурации, и элементарно прост в использовании.

Читать далее


Заметки о ньюансах разработки с использованием Qt и PyQt

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

Читать далее