Как сделать vk.com менее отвлекающим?

Как сделать так, чтобы Vk.com меньше отвлекал от действительно важных дел?
Самый простой способ — удалиться из этой социальной сети, или вообще не создавать там аккаунт, если у вас его ещё нет.
Но что делать тем, у кого вконтакте есть множество «друзей», с которыми больше негде вести переписку?
Или тем, кто пользуется музыкой вконтакте?

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

Решить задачу поможет пользовательский скрипт, подключаемый с помощью GreasyMonkey/TamperMonkey

Читать далее


Как разбить поле «ФИО» на имя, фамилию и отчество в PHP

Бывают случаи, когда ФИО пользователей на сайте задавалось с помощью единственного поля «ФИО», а после какого-то времени, в ходе рефакторинга базы, решили сделать 3 поля — Фамилия, Имя, Отчество. Как же быть со старыми данными? Ведь пользователи вводят туда всё что угодно. Попадаются такие ФИО как «Иванов К.М.», «пЕтрова ивгения», «Константин пАВЛОВ директор». Как же выделить из этих «ФИО» осмысленную информацию, настоящие имя, фамилию и отчество, чтобы заполнить соответствующие поля?

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

Библиотека анализа и нечёткого поиска в строке фамилии, имени, отчества.

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

Взять библиотеку можно здесь: https://github.com/MihanEntalpo/FIO-Analyzer

Установка с помощью composer:

В вашем файле composer.json нужно прописать:

{
    "require": {
        "mihanentalpo/fio-analyzer": "*"
    }
}

Установить:

composer.phar install

Читать далее


Linux backup time machine на базе Python + Rsync + Mysql

в корпоративном чате:
xxx: я очень наделся, что в этом проекте не скажу этих слов, но обстоятельства заставляют.
xxx: господа.
xxx: а бэкапы кто-то делал?

Очередной велосипед для резервного копирования для систем на базе Linux, был собран из Python-а и Rsync-а, когда существующие решения оказались либо слишком сложными, либо не обладающими достаточным функционалом.
Особенности и плюсы Linux Time Machine:

  • Работа по принципу TimeMachine из MacOs, а именно — создание инкрементальных копий в отдельных папках с возможностью быстро восстановить или как-то ещё использовать файлы за произвольную дату
  • Инкрементальные копии, основанные на Hard-Link’ах, то есть в каждой папке находится «как-бы» полная копия, однако не изменившиеся файлы являются Hard-link’ами на свои предыдущие версии в папках за старые даты
  • Лёгкое прореживание инкрементальных копий, так как Hard-link’и позволят не терять сами файлы при удалении одной из их версий
  • Моментальный доступ к файлам за счёт того что они хранятся в чистом виде (в отличии от rdiff-backup и других)
  • Встроенный функционал для создания инкрементальных SQL-дампов баз данных MySql (чтобы можно было бэкапить также и mysql-таблицы в виде файлов)
  • Автоматическое возобновление резервного копирования с того места, на котором оно остановилось, если было прервано
  • Резервное копирование может быть запущено с сервера, на котором хранятся исходные данные, с сервера, на котором находятся резервные копии, а также с любого другого сервера, имеющего доступ к двум предыдущим по ssh (Прямо сейчас эта функция сломана, копировать можно либо с локального сервера, либо на локальный (на котором запускается скрипт) 🙁 )
  • Можно ограничивать частоту резервного копирования (копировать не чаще определённого), и, таким образом, оставить информацию о частоте копирования в конфигурации, не вынося её в crontab.
  • С помощью API систему можно легко и быстро расширить, например, добавить копирование на несколько серверов-хранилищ
  • Копирование как всей файловой системы так и произвольных папок
  • Возможность исключения папок, файлов и масок файлов (например *.log)
  • Возможность автоматической очистки старых копий по гибким правилам
  • Можно настроить отправку уведомлений об ошибках в систему getSentry(веб-интерфейс собирающий и отображающий информацию по ошибкам)

Есть и минусы:

  • Данные хранятся в чистом виде, без сжатия, поэтому могут занимать в несколько раз больше оригинала (в несколько — потому что копий несколько)
  • Для копирования на каждом из «концов» должен быть установлен Rsync
  • Без доступа по ssh резервное копирование работать не будет
  • Доступ по ssh работает только по ключу
  • При вычисления занятого резервными копиями места, один и тот же файл за счёт жестких ссылок учитывается по нескольку раз, так что занятое место может вычисляться неверно (однако, консольная команда du вычисляет занятое место верно)

Читать далее


Разработка на WordPress по-человечески, с использованием GIT

Как обычно ведётся разработка на WordPress?
Одним из двух способов:
1) Полностью на удалённом сервере
1.1 Устанавливаем wordpress на удалённом сервере
1.2 Закрываем доступ к нему через .htaccess и .htpasswd чтобы посторонние не лезли, пока он не готов
1.3 Подключаемся к сайту по FTP через FileZilla и вручную создаём тему дизайна
2) На локальном сервере, с последующей одноразовой выгрузкой
2.1 Устанавливаем wordpress на локальной машине
2.2 Через /etc/hosts прописываем строчку, чтобы адрес будущего сайта указывал на локальную машину
2.3 Разрабатываем сайт на локальной машине, обращаясь к ней по адресу будущего сайта
2.4 По готовности выгружаем сайт на боевой сервер через ftp и mysql

Однако, любой разработчик, имеющий опыт командной работы над сайтом с обменом кодом посредством git, давно привычен к гораздо лучшему. Разработка «по-человечески», с использованием удалённого git-репозитория имеет множество плюсов.

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

Читать далее


Отключение рекламы на Digitally Imported (di.fm)

Есть такое замечательное интернет-радио — Digitally Imported, по адресу https://di.fm
Всё в нём прекрасно, за исключением того, что, при использовании бесплатного аккаунта, время от времени дают послушать рекламу.
Я понимаю, что реклама нужна, как минимум для двух вещей:
1) Склонение пользователей купить платную подписку, где рекламы не будет.
2) Заработок денег на рекламодателях

Поскольку в России, откуда я слушаю радио, видимо нет желающих подавать рекламу, то в рекламных паузах можно услышать только сообщения двух видов:
а) «Пропустите эти рекламные сообщения, и наслаждайтесь музыкой с более высоким качеством, перейдя на премиум»
б) «Digitally imported ищет крутых веб-разработчиков на полный рабочий день»
Чтобы не слышать этого, я написал браузерный скрипт для GreaseMonkey/TamperMonkey

Читать далее


Внимание! Уязвимость нулевого дня в 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), так и специализированными мощными инструментами, позволяющими запускать тысячи процессов, распараллеливать по ним задачи, балансировать с их помощью нагрузку на сервера и так далее.

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

Читать далее


Страницы:12345