Записи с меткой "кодинг"


DataGrip | ClickHouse. Косяки драйвера

DataGrip + ClickHouse лого

TL;DR: CH 26.x, драйвер в DataGrip 0.9.8, вручную добавить в Advanced драйвера костыль: ignore_unknown_config_key=true. Возможно, перегрузить IDE. Не обновлять драйвер без крайней на то необходимости.

Метки: кодинг

Python. Проблемы импорта

Python import

В Питоне отбитая система импорта, она может довести до истерики.

И хотя я новичок в этой теме, я все же хочу зафискировать (в первую очередь для себя) решения, которые я нашел и у меня они работают.

Метки: кодинг

Java Thread. Прерываем ассинхронный поток правильно

Thread lifecycle

Постараюсь не разводить воду. Есть такая задача (реальная, но для статьи все совпадения вымышленные )): юзер через админку в нашу API запрашивает обновление статистики рассылки. Это сложная процедура, много собирать, взаимодействовать с чужой API, которая нестабильно работает. Короче - это время. Поэтому мы юзеру в браузер сразу отвечаем, что запрос приняли, а выполнять его будем в фоне. Когда закончим, пришлем уведомление в Slack.

Оставляем юзеру возможность отменить сбор статы. Т.е. это другой API роут, куда он обратится, чтобы остановить задачу.

Метки: java, кодинг

О чистоте речи

гастарбайтер

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

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

Организация и использование Dead Letter в RabbitMQ

Dead Letter в RMQ

Есть как минимум два повода, почему вы нашли эту статью:

  1. Вы хотите использовать фичу Dead Letter в RMQ, но лень читать английские мануалы
  2. Вы уже прочитали RMQ: Dead Letter Exchanges, RMQ: Policies и возможно эту статью. И теперь у вас такая же каша в понимании предмета, как было у меня.

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

Перехват управляющих сигналов в PHP. Graceful shutdown

Протест против SIGKILL :)

Речь про сигналы, передваемые в Linux любому процессу: SIGINT, SIGKILL и пр. Эти сигналы доступны только в nix-подобных системах, базовая фича таких ОС. На Windows не будет работать почти наверняка.

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

Картинка кликабельна. Автор: Daniel StoriCC BY-NC-SA 4.0

Метки: PHP, кодинг

Как работать с XDebug

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

Вечная аутентификация на сайте

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

При этом защита не должна ослабевать, типа выдал один раз секретный код и всё, пока юзер не свалит, пользуется. Код должен обновляться, но прозрачно для юзера. Так же должна быть возможность отлучить юзера от доступа в зону по причине отобранной роли, бана или вообще, подозрении в хакерском взломе аккаунта.

PHP: парсинг и замена "short_open_tag"

Речь о тегах в php-скриптах. Согласно мануала при включенной опции разрешается короткая форма записи <? ?> тегов PHP. Если такая запись запрещена, то препроцессор PHP парсит только <?=...?>, что на самом деле не относится к коротким php-тегам, а является сокращенной записью инструкции <?php echo ...?>

Суть моей проблемы: перешел на новую версию PHP, при этом ставил его не из официальных репов, а в полуручном режиме из PPA. В новом конфиге опция short_open_tag оказалась отключена, у меня упало несколько сайтов и я подзаколебался искать причину. Учитывая, как я обновил PHP, мест для возможных багов стало более, чем достаточно.

Метки: PHP, кодинг

PHP сессия в базе данных

Хочу организовать хранение сессий на стороне сервера в базе данных. Зачем? "Just for fun!" ©. Вы можете найти для себя другие причины :)

Оказалось, свой велосипед не нужен, в PHP уже все есть. Нужно реализовать интерфейс php::SessionHandlerInterface и где-то назначить сессионным обработчиком объект моего класса. Для этого вызываем функцию php::session_set_save_handler(). Проще всего сделать вызов в bootstrap.php или index.php приложения.

Метки: PHP, кодинг

Unit-тестирование в PHP. Часть 3: углубление в PHPUnit

Продолжение статьи о модульных тестах в PHP. В этой части рассмотрим поставщики данных, фикстуры, подмену зависимостей, тесты с виртуальной файловой системой, тесты исключений и взаимодействия с базой данных.

Метки: PHP, кодинг

Unit-тестирование в PHP. Часть 2: знакомство с PHPUnit

Продолжение статьи о модульных тестах в PHP. В этой части займемся практикой тестирования и разберемся с базовым использованием PHPUnit.

Метки: PHP, кодинг

Unit-тестирование в PHP. Часть 1: теория

Данная статья (все ее части) - это лекция о модульном тестировании, которую мне нужно было провести среди PHP-разрабочиков компании, на которую я сейчас работаю.

Я не гуру тестирования и статья не претендует на полное руководство по модульным тестам или использованию PHPUnit. По первому вопросу целые книги пишут, да и у PHPUnit есть нормальный мануал. Цель статьи - объяснить на пальцах, как создавать unit-тесты, помочь разобраться с нуля в этой теме. Я подразумеваю ваше дальшнейшее самообразование. используя эту статью, как отправную точку.

Метки: PHP, кодинг

PHPUnit. Тестирование исключений

PHPUnit 5.6, метод expectException(), а так же директива @expectedException используются в тестах для указания ядру фреймворка "ожидать такое-то исключение". В итоге тест считается пройденным если исключение возникло.

И тут есть ньюансик: после того, как PHPUnit поймает ожидаемое исключение, выполнение тест-метода прекратится! Т.е. expectException() - это аналог assert-метода, только с прерыванием. Есть так же методы на проверку кода и сообщения исключения.

Метки: PHP, кодинг

ООП расширение класса php::Exception

В связи в повсеместным использованием ООП в PHP потребовалось запилить класс исключения с удобными плюшками. Их две: из экземпляра OOPException можно получить имя класса и метода, пробросившего исключение. Это удобно использовать в дополнение к Exception::getFile(), Exception::getLine().

Без ложки дегтя не обойдется: придется переписывать все свои вызовы исключений, и наплодить наследников от продвинутого класса для замены стандартных LogicException, RuntimeException и т.д.

Метки: PHP, кодинг

vQmod - зло! Применять в минимальных дозах

Есть такая веб-разработка - vQmod. Помню, как радовался такой полезной и удобной системе, когда только с ней познакомился и разобрался в деталях, как она работает. А потом стал находить "деготь в этой бочке меда", но было терпимо.. до текущего момента. Теперь же я считаю, что vQmod - зло, причем немалое. Погодите потрясать кулаками, давайте обсудим :)

Супервалидация пользовательских данных

Задача: обработать данные с формы обратной связи. А там полей штук 30(!), это форма запроса кредита. Решение в лоб - разбирать массив и валидировать каждое значение, - это жесть. Выход в использовании возможностей php-функций filter_*_array(). Там много заморочек, я более-менее разобрался с этим семейством. Пищу здесь, чтоб в следующий раз не шариться в исходниках.

MODx Evo: ошибки установки плагина transAlias

Скачал плагин TransliterateAlias v1.0 с оф.сайта MODx. Получил какой-то невнятный архивчик под именем repo-2340.zip Несмотря на странное имя, внутри все же оказался именно каталог [transalias]. Но это только начало.

Метки: MODx, кодинг

Создание сайта. Часть 7: PHP

Полное содержание серии - в конце статьи.

Когда-то давно я услышал от знакомого кодера фразу "PHP – легкий язык программирования". В то время я отнесся к этим словам скептически, но теперь полностью согласен. Этот язык гораздо легче изучить, чем многие другие, потому что, в первую очередь, он ограничен в возможностях. Это неплохо, просто от заточен под определенные функции и отлично справляется с ними. Грубо говоря от него требуется только собирать текст.

Вторым агрументом является документированность и популярность PHP. В инете чуть больше, чем дофига толковой информации по теме. Если вы ничего не знаете о создании кода, то начать именно с PHP – удачный выбор. И начать знакомство рекомендую в Викидепии.

Создание сайта. Часть 6: JavaScript

Очередная статья серии, посвященной сайтострою. Полное содержание серии - в конце статьи.

Теперь начинается реальный кодинг. Можно конечно отказаться от использования JavaScript на своих сайтах, тем более что браузеры по-разному понимают js-код (тут бардак не меньше, чем в дизайне). Но возможности, которые он дает, заставляют хотя бы попробовать с ним разобраться.

Первая<123>Последняя
Продвижение
Время
Метки
Щелкни мышей, чтобы закрыть