Учебный docker проект

Ввиду того, что от docker никуда не убежишь, пришлось разобраться.

Итак, самое важное, что нужно понять:

  1. Один сервис — один контейнер
  2. Нельзя запустить демон внутри контейнера. Если нужно запустить несколько демонов, готовься сооружать костыли

Что в себя включает проект:

  1. PHP 7 fpm & CLI + Xdebug
  2. nginx
  3. mysql
  4. memcached

Собственно сам учебный проект на примере работы с популярным фреймворком symfony 3: Docker-symfony

Быстрый способ сделать селфи вебкамерой

Просто нажимаешь “Сделать селфи!”, фоткаешься, твое фото сохраняется на сервере. Сразу получаешь ссылку на сохраненное фото, которое потом можно выложить где угодно в интеренете: Webcam-selfie.com

Приватный сервер git

Классный способ быстро настроить приватный репозиторий git: https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server

Docker. Проблемы

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

Решил я познакомиться с ним поближе и для образовательных целей установить symfony внутри контейнера.

Первые проблемы начались с того, что существует мало материалов best practice. Если они и есть, то всегда чего-то не хватает для полноценной работы. Итак, чтобы разобраться с docker, ушло очень много времени, так как всё равно все подводные камни не знаешь, несмотря на то, что документацию прочитал и уже знаешь как работает виртуализация docker.

Что не нравится:

  1. Большой порог знаний для входа. Чтобы с нуля понять, как и что работает, настроить environment, выбрать именно тот путь, который нужен, уходит несколько дней (!).
  2. Необходимость постоянно сражаться с правами на запись в разделах для работы. А я то уже давно забыл, что такое проблемы с правами
  3. Контейнеры docker — это все таки некие обрезанные версии linux, то есть на проде вам придется запускать все в тех же docker контейнерах, иначе могут возникнуть проблемы совместимостей
  4. Забудьте о том, что команде разных специалистов будет легко работать. Если народ сидит на разных OS, например, Linux, Mac OS, Windows, то настроить шаринг разделов между контейнерами и хост машиной с помощью различных зависящих от ОС драйверов будет та еще боль. Как следствие, нужно будет тратить время на объяснения и настройку для людей, далеких от консоли.
  5. Нужно РЕАЛЬНО много времени тратить на ветряные мельницы в виде настроек под реальный проект. Да, может быть человеку, который всю жизнь только и знает docker, будет легко, но мне быстро настроить все до рабочего состояния было непросто.

Что нравится:

  1. Быстрота работы и легкость. (хотя спорный момент, так как пару гигабайт места для традиционных VM уже не проблема)
  2. Хорошее решение для проектов, где имеется масса микросервисов. Это понятно, так как плодить VMы не очень удобно и virtualbox жрет память. Для небольшого проекта подойдет и vagrant

Что в итоге:

У меня как разработчика осталось негативное мнение о docker, в проектах буду его сторониться. Хотя в enterprise решениях с громоздкими проектами можно попробовать.

 

Ubuntu. Восстановление данных с флеш карты

Понадобилось мне как-то восстановить данные с флеш карты. Карта была настолько повреждена, что невозможно было определить тип раздела на ней.

Погуглил и нашел для ubuntu очень прекрасный консольный инструмент по восстановлению файлов: foremost.

Устанавливаем:

 sudo apt-get install foremost

И запускаем восстановление:

sudo foremost -Q -i /dev/sdc -o /path/to/recovery/result/folder

Где /dev/sdc — путь к подсоединенной, но не замаунченой флешке.

В итоге получим восстановленные файлы, распределенные в папках по типу (docx, xlsx, jpeg, и т. д.), но, к сожалению, название файлов — это просто нумерация. Оригинальные названия, так же как и структура папок, утрачиваются.

Грандиозное событие

Взрыв сверхновой звезды — это безусловно эпохальное событие для мира отдаленной галактики. Но для нас это сравнимо всего лишь с комариным писком за сотню километров.

http://apod.nasa.gov/apod/ap160209.html

Мононуклеоз

Каким-то удивительным способом угораздило меня заболеть мононуклеозом.

Началось все с обыкновенных соплей, которые прошли за 3-4 дня. Через полторы недели я решил возобновить свои пробежки, поэтому утром в субботу пробежался почти 5 км, чтобы доказать самому себе, что я в форме. В этот же день вечером температура подскочила до 38. Конечно, я начал лечиться, принимать противовирусные препараты. На третий день температура стала на уровне 36.6. А еще через 2 дня я закрыл больничный и даже сходил на работу один день в пятницу.

В субботу вечером температура опять стала 38. Опять постель и лечение. Но я был уже в смятении: как же 3-й раз без причины заболел? Врач в понедельник выписала мне антибиотики, которые я безуспешно пропил 7 дней. Сначала температура действительно начала падать, но потом все возвратилось с новой силой, к тому же я каждую ночь потел по 2-3 раза.

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

В итоге приехал в инфекционную больницу для диагностики. Там за пару часов с экспресс анализами и историей моих анализов заключили, что у меня мононуклеоз. А это вирус, которому все равно на антибиотики.

Вопрос: как я мог подхватить этот вирус? Возможно, после субботней пробежки организм ослаб, потемпературил, а я недолечился до конца. И где-то через неделю мог подхватитъ вирус в магазине. Хотя это только догадки.

Вывод один: надо выдерживать паузу более чем 1.5 недели в физических нагрузках даже после 3-х дневного насморка.

Мононуклеоз — крайне неприятная болезнь. В целом ничего не болит, но постоянно держится температура в районе 36.7 — 37.2, из-за чего особенно к вечеру чувствуешь слабость. Когда выполняешь какие-то нагрузки, то может кидать в пот, а по ночам потеешь по 2-3 раза, несмотря на невысокую температуру. Характер болезни таков, что выздоровление проходит довольно долго, и сам не знаешь, когда этому всему конец. Неопределенность выматывает в моральном плане.

Не болейте и относитесь к своему здоровью внимательней.

Все, что нужно знать о создании лайков в твиттере

Гениально. PHP unit VW extention

В свете недавних событий с компанией Volkswagen некий энтузиаст создал расширение к PHPunit, которое никогда не фейлит тесты в CI, но на локальной машине все работает как надо.

Итак, для тех, кому надоел неприятный спам от Travis, Jenkins, etc., и тех, кто любит смотреть на жизнь в розовых очках, встречайте: Phpunit VW Extension

Как создать уникальный индекс при том, что в таблице есть дубликаты

Естественно, база MySQL не позволит создать уникальный индекс, если у вас уже есть дубликаты в таблице. Первое, что приходит на ум — это сначала удалить каким-то образом дублированные записи, а потом уже создать новый уникальный индекс. Но все становится еще сложнее, если уникальный индекс состоит из нескольких полей. Удаление записей из большой таблицы может занять огромное время. Оказывается есть очень простое решение, о котором я сначала и не знал.

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

ALTER TABLE `table_name` ADD UNIQUE INDEX `my_unique_index` (`field1`, `field2`);

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

 ALTER IGNORE TABLE `table_name` ADD UNIQUE INDEX `my_unique_index` (`field1`, `field2`);

 Не благодарите. ;)

Онлайн детектор кириллицы

У нас на работе была небольшая проблема с одним сервисом: разработчик случайно или специально оставил в заголовке сайта кириллическую букву “с” вместо латинской. Это было довольно критично, потому что наши сервисы трекаются гуглом и разными поисковиками. 

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

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

http://latincheck.lifeline.su 

На странице About можно прочитать обо всех возможностях.

Следующая страница »