К сожалению, виндовая консоль не имеет того набора команд, что и Linux. Поэтому некоторые элементарные задачи доставляют много баттхёрта. Например, банальная задача посчитать количество строк в файле в CentOS решалась бы такой командой: cat file.log | wc -l Или ещё проще: wc -l file.log Для Windows PowerShell рецепт будет такой: […]
Рубрика: Трудовыебудни
Warning: imap_headerinfo(): Bad message number в PHP при работе с IMAP
В PHP есть несколько десятков функций объединённых в один модуль для работы с почтовыми серверами по протоколу IMAP. Но сделаны они весьма ужасно. Ещё бы, ведь они появились ещё в PHP 4 и содержат в себе все самые худшие практики архитектуры и дизайна которые только можно было придумать. Одной из […]
Почему на сервере Hetzner медленно работает диск
Заметил внезапное снижение производительности на одном из CentOS 7 серверов и не менее внезапное появление ошибок 502 Bad Gateway, которых даже во время хорошей нагрузки ни разу не было, а тут ночью во время простоя вдруг начали валить. Первым делом стал смотреть вывод iostat -x 3: Device: rrqm/s wrqm/s r/s w/s […]
Как установить ping в docker-контейнер?
Может случиться так, что при попытки что-нибудь попинговать изнутри docker-контейнера появиться пренеприятнейшая ошибка: bash: ping: command not found Как известно, docker-образы собираются как можно более минималистичными, чтобы не занимать место ненужными командами. Однако, при необходимости всё можно доставить поверх образа.
Как в PHPStorm сгенерировать сигнатуры методов для интерфейса?
Достаточно злободневная тема. Допустим, у вас есть некий интерфейс и вам нужно его реализовать. В идеале хотелось бы сгенерировать новый класс который бы содержал все сигнатуры и определения. Но нет. Чтобы провернуть это в PHPStorm потребуется вручную создать новый класс и объявить ему implements AnyInterface. Теперь жмёт Alt + Insert, […]
Как на PHP получить timestamp с точностью до наносекунд?
На чистом PHP данная задача не реализуема, но есть небольшой лайфхак: $nanotime = system(‘date +%s%N’); В результате $nanotime будет содержать значение: 1523648935928101682, где 1523648935 это привычный всем timestamp, а часть 928101682 собственно наносекунды.
Как в nano перейти на указанную строку в файле
Способ первый, если файл ещё не открыт, то можно указать строку через аргумент +N, uде N — нудная строка: nano +10 file.php Второй способ для перехода на нужную строку прямо в редакторе nano. Нажмите сочетание клавиш Ctrl + «_», на что будет задан вопрос: Enter line number, column number: Вводите нужный […]
Базовые принципы оптимизации SQL запросов
MySQL достаточно быстрый сервер баз данных. Во многих ситуациях он превосходит PostgreSQL и другие решения по производительности. Однако, любой даже самый быстрый сервер можно загрузить никому ненужной работой из-за неправильно написанного SQL запроса или неподходящей структуры таблиц. Рассмотрим актуальные на 2018 год способы оптимизации SQL запросов для MySQL сервера. В […]
Как в Linux получить часть файла по номерам строк?
Достаточно повседневная задача, поделить файл на части не выходя из bash. sed -n 4646,9999p old.file > new.file Где 4646 — начальная строка, а 9999 — конечная строка.
Быстрый экспорт данных с джойнами из MySQL в Clickhouse
Подготовка и импорт данных в Clickhouse достаточно обширная тема. В данной заметке приведу рецепт быстрого экспорта данных с джойнами из MySQL в CSV с последующим импортом этих CSV в Clickhouse. В MySQL есть очень полезная директива: INTO OUTFILE, которая в контексте SELECT запросов сохраняет данные в файл на сервере, а не […]