HTTP Response 418 #УкрТґ 🇺🇦
137 subscribers
618 photos
86 videos
6 files
350 links
PHP, web, memes, jokes, Ukraine, charity, war, ADHD (ICD-10: F90.0), ASD (ICD-10: F84.5), Asperger syndrome, volunteering, human rights. LGBT-frendly.

Contact:
@setnemo
Download Telegram
Forwarded from PHP Digest
Чёрная магия PHP

https://github.com/lisachenko/z-engine

Как замокать финальный класс или переопределить финальный метод? Ну допустим, для этого есть badoo/soft-mocks. А как насчёт добавить интерфейс к существующему классу в рантайме? Или, например, изменять тип объекта.

Новая библиотека от Александра Лисаченко потенциально позволяет делать вообще всё что угодно.

В PHP 7.4 добавлена новая возможность – FFI, которая позволяет подгружать сишные модули (.dll or .so), и вызывать функции из них или использовать структуры данных из C на чистом PHP.
Библиотека Z-Engine использует FFI, чтобы получить доступ к внутренним структурам самого PHP! Z-Engine читает нативные структуры PHP, например, zend_class_entry, zval, и подобные и может изменять их в рантайме.

// Сделаем абстрактный класс обычным
$refClass = new ReflectionClass(TestClass::class);
$refClass->setAbstract(false);
assertFalse($refClass->isAbstract());
$instance = new TestClass();
assertInstanceOf(TestClass::class, $instance);

Осторожно! Библиотека предоставляет практически неограниченный доступ к памяти самого PHP и работает со структурами на низком уровне. Поэтому вполне возможны сегфолты, утечки памяти и другие неприятные последствия. Так что, только для тестов.
Forwarded from oleg_log (Oleg Kovalov)
Нашел отличную и официальную организацию от AWS с кучей примеров. В общем-то а как еще втянуть людей в свою секту? Но вещь полезная.

https://github.com/aws-samples?type=source
Это шедеврально
Я поражён этой инициативой.
Вдруг у человечества будут проблемы. Например много умрет. Или техногенная катастрофа. Современное программное обеспечение законсервируют как святой грааль с инструкциями о восстановлении данных.

https://archiveprogram.github.com/
Forwarded from Sysadmin Tools 🇺🇦
Давеча попросил человека перенести полностью репы с одной VCS в другую, к примеру с github в gitlab. Сейчас смотрю, а там не перенос, а просто коммит без веток и всего прочего. Думаю сделаю пост:
Как сделать полный перенос репозитория на другой сервер #vcs #git #github #gitlab #bitbucket

# Клонируем исходный репозиторий без рабочего каталога (--bare)
git clone --bare https://github.com/exampleuser/old-repository.git

cd old-repository.git
# Делаем mirror-push(будут скопированы все ветки и тэги) в новый репозиторий
git push --mirror https://github.com/exampleuser/new-repository.git

cd ..
# Удаляем папку с репозиторием
rm -rf old-repository.git
Использование .git/hooks/commit-msg

Копируем пример в рабочий хук

cp .git/hooks/commit-msg.sample .git/hooks/commit-msg

Редактируем содержимое файла
~/test(TEST-BRANCH)  » cat  .git/hooks/commit-msg                                                                                                                                                                
#!/bin/sh
COMMIT_EDITMSG=$1
NAME=$(git branch | grep '*' | sed 's/* //')
echo "[$NAME] $(cat $COMMIT_EDITMSG)" > $COMMIT_EDITMSG
cat $COMMIT_EDITMSG

Теперь при коммите будет следующее поведение - к вашему сообщению в начале будет добавлено название бранчи в квадратных скобках.
git commit -am 'text'
даст текст коммита
[TEST-BRANCH] text

#git
Forwarded from IT Юмор
This media is not supported in your browser
VIEW IN TELEGRAM
Когда действительно заботишься о надеждности пароля своих пользователей
Forwarded from oleg_log (Oleg Kovalov)
Forwarded from PHP Digest
Как выбрать файлы для предзагрузки в PHP 7.4

https://github.com/DarkGhostHunter/Preloader

Многие ожидали, что поддержку предзагрузки сделают прям в Composer. Но, судя по всему, в ближайшее время это не будет реализовано.
Для Symfony поддержку уже выкатили сами https://symfony.com/blog/new-in-symfony-4-4-preloading-symfony-applications-in-php-7-4
Для Laravel обещают, но из-за использования алиасов пока будут проблемы.

А как быть с произвольным приложением? Можно попробовать загрузить все файлы. Если не нарвётесь на segfault и ряд других нюансов (подробнее https://habr.com/ru/company/badoo/blog/472528/), то это сработает и должно дать прирост. Но эффективнее загружать не все классы, а только самые часто используемые. И вот вопрос как узнать какие это?

Появился вот такой инструмент:
https://github.com/DarkGhostHunter/Preloader

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

Бот тут @USD2UAH_bot

Исходники тут https://github.com/omentes/usd2uah
Oracle потушил мой Always free инстанс и кнопка Start - disabled. Доброе утро...
Боты снова в строю. И кстати, теперь бот показывает межбанк с сайта минфина, они предоставили доступ к API. В планах доделать другие валюты, НБУ, средний курс в банках. @USD2UAH_bot
Сегодня утром я обнаружил кучу сообщений от одного из ботов, который жил у Оракла и переехал в АВС. Бот парсит кое-что и потом сообщает об изменениях. Аудитория до 100 человек. Оракл включил серваки без предупреждения, и тут понеслась... Крон запустил задачи, база отстала на два дня, но скрипт умный, и все два десятка изменений сохранил и отправил сообщениями.

Мораль сей басни такова: сменили машину, перегенерируйте апи кей 😂
Научил понимать своего бота инлайн запросы по другим валютам. Например: @USD2UAH_bot eur 1000 или @USD2UAH USD 10000 . Курс - межбанк. Работает с EUR, USD, RUB. Возможность сразу посмотреть доллар сохранилась, поэтому если не вписать валюту - будет по прежнему считать доллар.