14 November 2018, 05:30 MSK
Удивительно, но многие разработчики не знают, как можно очень просто сделать автоматический бэкап одной или нескольких таблиц в мускуле. Восполним этот недостаток знаний.
Нам потребуется создать простой скрипт на баше, например, /var/backup.sh:
#!/bin/bash
export MYSQL_PWD='ВАШ_ПАРОЛЬ'
mysqldump -u'ВАШ_ЛОГИН' -i -c -e НАЗВАНИЕ_БД ТАБЛИЦА_1 ТАБЛИЦА_2 > /var/backups/mybackup.sql
Если вы хотите, чтобы каждый раз создавался новый файл, можно в его название включить дату и время:
#!/bin/bash
export MYSQL_PWD='ВАШ_ПАРОЛЬ'
mysqldump -u'ВАШ_ЛОГИН' -i -c -e НАЗВАНИЕ_БД ТАБЛИЦА_1 ТАБЛИЦА_2 > /var/backups/mybackup-`date +%Y-%m-%d--%H-%M-%S`.sql
Добавляем скрипт в крон (crontab -e).
Не забываем разрешить выполнение скрипта (chmod +x /var/backup.sh).
В результате выполнение скрипта вы получите файл с дампом ваших таблиц.
6 November 2018, 23:50 MSK
При разработке сайтов часто встаёт задача наладить автоматическую выгрузку файлов сайта на веб-сервер. Быстрое гугление по данной теме приводит сложные и запутанные решения, я же поделюсь очень простым. Предполагается, что у читателя есть базовые знания Linux и Git.
Итак, у вас имеется локальный сайт, гит-репозиторий и удалённый сервер с дебиан-подобным линуксом. Допустим, на сервере сайт лежит в папке /var/www/site/.
Сначала необходимо создать в репозитории новую ветку, например, deploy. Всё, что попадёт в неё, будет выгружено на сервер.
Теперь переходим к серверу. Если не установлен гит, устанавливаем:
sudo apt-get install git
Затем клонируем репозиторий в папку с сайтом (из-за особенностей гита она должна быть пуста):
cd /var/www/site/
git clone АДРЕС_РЕПОЗИТОРИЯ .
Система попросит логин и пароль.
Переключаемся на нашу специальную ветку:
git checkout deploy
Теперь можно при помощи команды git pull обновлять сайт. Но это не очень похоже на полностью автоматический способ? Идём дальше.
Во-первых, чтобы каждый раз не вводить логин и пароль, выполняем следующую команду:
git config credential.helper store
Во-вторых, настроим выполнение команды git pull раз в минуту. Для этого создаём скрипт обновления:
nano /var/www/deploy.sh
Вставляем в него следующий текст:
#!/bin/sh
cd /var/www/site/
git pull > /dev/null
Не забываем разрешить выполнение скрипта:
chmod +x /var/www/deploy.sh
Добавляем скрипт в крон:
crontab -e
В конец файла копируем строчку:
* * * * * /var/www/deploy.sh
Собственно, на этом всё. Пушите ваш код в ветку deploy на локальном хосте — он автоматически заливается на удалённый сервер.
28 October 2018, 18:16 MSK
Из сложившейся в стране ситуации у петербуржцев
есть три выхода: Торфяновка, Брусничное и Светогорск
Народное творчество
Первая часть тут.
На машине (или автобусе) в Страну тысячи озёр из России можно въехать через 3 пропускных пункта (МАПП). Обычно я въезжаю и выезжаю через Брусничное, но в этот раз изменил маршрут и объехал все три.
IMG_4268
23 October 2018, 18:50 MSK
Сейчас середина осени, и скоро наступят холода. В этой заметке я расскажу, каким образом можно просто и быстро автоматизировать отопление обычными радиаторами в квартире или доме и получить возможность изменять температуру в комнате с айфона, айпада или макбука.
В результате получится настоящий климат-контроль в доме: можно задать необходимую температуру воздуха в помещении с помощью телефона (в том числе удалённо или по расписанию), а ваш радиатор будет её поддерживать на нужном уровне. Для этого будем использовать специальный термостат (в народе называемый термостатической головкой).
Вот так выглядит конечный результат:
термостатическая головка Eve Thermo
14 October 2018, 16:15 MSK
Питерская народная забава — сгонять в Финляндию туда-обратно одним днём.
IMG_3139
16 August 2018, 01:45 MSK
Продолжаем рассказывать общественности о том, как операторы сотовой связи зарабатывают деньги мошенническим образом.
Исторически у меня несколько симок для разных нужд в Мегафоне. Недавно я заметил, что на одной из них начали утекать деньги, хотя симка лежит в ящике около полугода и временно не используется.
Идём в личный кабинет и смотрим расходы по номеру:
megagavno
WTF? Каким-то образом оказались подключены две платные услуги, за 2.5 руб. / сутки и 30 руб. / месяц.
Удивительно. Ещё раз: симка с осени 2017-ого лежит в ящике. В колл-центре сказали, что обе услуги подключены в июне. Интересно, кем? Сотрудники, разумеется, информацией не обладают. Абсурдности ситуации добавляет тот факт, что в июле я звонил в колл-центр и интересовался, какие платные услуги подключены на всех моих номерах (полезно проделывать это пару раз в год), и про эти услуги никто даже не заикался.
Дальше — ещё смешнее. В колл-центре прошу отключить злосчастные опции и вернуть деньги. SMS XXS отключили, а вот Персональный бюджет не могут. «Почему?» — спросите вы. Оказывается, эта опция только для корпоративных клиентов. Сотрудник переводит вызов в колл-центр для корпоративщиков, но там мне тоже помочь не могут, потому что, ВНИМАНИЕ, номер зарегистрирован на физическое лицо. На этом моменте уже начинает подгорать.
Мегафон, вы вообще в адеквате? Дело не в 30-ти рублях, мне просто интересно, как такое может быть?! На номере, который зарегистрирован на физ. лицо, подключена услуга только для юр. лиц, и никто не может мне её отключить! При этом совершенно не понятно, кто и как её подключил, но деньги за неё стабильно продолжают списывать.
UPD: отключили только после личного визита в салон с паспортом.
10 August 2018, 16:39 MSK
Самая большая глупость на свете — голосовые сообщения в мессенджерах. Люди, которые отправляют голосовые сообщения вместо текстовых, часто не задумываются о неудобствах для собеседников. К сожалению, последнее время лично у меня участились голосовые сообщения от совершенно разных людей, что и вынудило меня написать этот пост.
Во-первых, прочитать текст занимает в несколько раз меньше времени, чем прослушать аудиозапись.
Во-вторых, написанное текстом сообщение потом легко найти в истории обычным поиском, а голосовое нельзя.
В-третьих, прослушать голосовое сообщение сложнее, если ты на улице или не один в помещении, и практически нереально, если ты на встрече, в кино и т.д.
Отправляя очередной раз кому-нибудь голосовое сообщение вместо того, чтобы набрать текст, помните, что ваш собеседник, скорее всего, тихо вас ненавидит.
11 July 2018, 20:13 MSK
Итак, снова пост про Телеграм. Я уже рассказывал, как отправлять сообщения от имени бота (в том числе, через прокси) и как сделать бота, который умеет принимать сообщения.
Отправлять сообщения в Телеграм от бота очень просто, но есть крайне неудобная проблема: из-за ограничений Telegram Bot API бот не может писать первым. То есть, сначала пользователь, которому вы собрались что-нибудь отправить, должен первым написать вашему боту любое сообщение. Это ограничение вполне разумно и предотвращает спам сообщениями от ботов, но очень мешает честным людям. Например, отправлять сервисные сообщения с информацией о заказе в интернет-магазине.
Решение этой проблемы только одно: не использовать ботов. Придётся всё делать с обычного аккаунта.
Копаться в подробностях телеграмовского протокола MTProto не нужно, как оказалось, всё уже сделано до нас. Для PHP существует чудесная библиотека MadelineProto. Её мы и будем использовать, ниже пошаговая инструкция.
8 July 2018, 03:20 MSK
Последнее время я увлекаюсь системами умного дома и хотел бы поделиться накопившимся опытом. В серии постов на эту тему я расскажу как о попытке сделать свою систему с нуля, так и о готовых решениях.
smart-home
Педантичный читатель обязательно придерётся к термину «умный дом». Конечно, правильнее называть это домашней автоматизацией, но я позволю себе использовать хоть и неверную, но устоявшуюся формулировку.
Сейчас на рынке присутствует очень много разрозненных решений. Ради эксперимента мне захотелось попробовать сделать что-нибудь самому.
Хороший проект всегда начинается с требований к конечному результату, вот мои:
  1. Нафиг километры проводов. У меня в квартире сделан ремонт, поэтому заново штробить стены желания совсем нет. Пусть умный дом будет обмениваться данными по радио-каналу.
  2. Нафиг бредовые идеи. Встроить айпад с интерфейсом в стену? Отправлять данные на народный мониторинг? Ну уж нет, спасибо, обойдёмся без этого.
  3. Нафиг пульты. Пульты всегда теряются и ломаются. Лучший пульт — тот, который всегда с тобой. Это телефон или часы (привет, Сири!). Также не забудем оставить классические элементы управления (настенный выключатель, ггг) для менее продвинутых домочадцев.
Теперь подумаем над архитектурой. Философия моего умного дома будет такой (привет, Юникс!):
Одно устройство должно делать только одну вещь, но должно делать её хорошо.
Такой подход лаконичен и позволяет не смешивать всё в одну кучу, не усложнять архитектуру системы, превращая устройства в многофункциональные комбайны.
2 July 2018, 00:16 MSK
Когда я был студентом и любил спорить с преподавателями, мой научный руководитель всегда просил меня не делать преждевременный рефакторинг кода. Потому что отрефакторить работающий код можно за конечное число шагов, а сколько времени займёт превращение неработающей, но отрефакторенной программы в работающую — неизвестно. Спустя годы я понял, что это работает не только в программировании, но и в жизни.