Асинхронность, конкурентность, параллельность, многопоточность — разбираемся «по понятиям» :)
https://habr.com/ru/post/667590/
#php @axenov_dev
https://habr.com/ru/post/667590/
#php @axenov_dev
Хабр
Асинхронность, конкурентность, параллельность, многопоточность — разбираемся «по понятиям» :)
Эта статья представляет собой краткий ( шутка! ) конспект одноименного (почти) вебинара, недавно проведенного автором. Цель и вебинара и статьи - дать начинающим представление о тех понятиях, которые...
👍1
Как прокачаться в PHP: 70 ресурсов из опроса русскоязычного сообщества
Список книг и ресурсов (в т.ч. в телеграме) для изучения языка. Подойдёт на любом уровне, от нулёвого новичка до сеньора.
#php @axenov_dev
Список книг и ресурсов (в т.ч. в телеграме) для изучения языка. Подойдёт на любом уровне, от нулёвого новичка до сеньора.
#php @axenov_dev
👍1
Forwarded from S0ER
В программировании есть вещи, которые не стареют. С ASCII графикой в комментариях к коду я познакомился году эдак в 1996, когда подписался в FIDO на NICE.SOURCES. Хорошо запомнил пример с кодом для декодирования JPG, который сопровождался ASCII.
Я заговорил об этом, потому что наткнулся вот на эту статью - https://blog.regehr.org/archives/1653 которая содержит кучу примеров с инфографикой из кода.
Я заговорил об этом, потому что наткнулся вот на эту статью - https://blog.regehr.org/archives/1653 которая содержит кучу примеров с инфографикой из кода.
👍1
endoflife.date
Open-source сервис, в котором собраны "даты жизни" разных версий ОС, ПО, фреймворков, языков и библиотек. Предоставляет простой бесплатный публичный API, с помощью коего можно легче отслеживать подходящий момент для обновления своих проектов, например, путём интеграции на уровень CI или какого-нибудь кастомного скрипта твоего пакетного менеджера.
#tools @axenov_dev
Open-source сервис, в котором собраны "даты жизни" разных версий ОС, ПО, фреймворков, языков и библиотек. Предоставляет простой бесплатный публичный API, с помощью коего можно легче отслеживать подходящий момент для обновления своих проектов, например, путём интеграции на уровень CI или какого-нибудь кастомного скрипта твоего пакетного менеджера.
#tools @axenov_dev
📝 Делаем бекап проекта простым путём
Сегодня 07.07.2022. Два дня назад я очень глупо и почти случайно потерял всё, что было на этом сервере. Бэкапы были только от мая — это лучше, чем ничего, однако регулярного резервирования не было. Тут либо жизнь меня ничему не учит, либо уже научила и я стал достаточно аккуратен, чтобы не ронять проды как слон в…
https://axenov.dev/?p=1234
#shell #mysql #блог #моё
👨💻 @axenov_dev 👍 @axenov_blog
Сегодня 07.07.2022. Два дня назад я очень глупо и почти случайно потерял всё, что было на этом сервере. Бэкапы были только от мая — это лучше, чем ничего, однако регулярного резервирования не было. Тут либо жизнь меня ничему не учит, либо уже научила и я стал достаточно аккуратен, чтобы не ронять проды как слон в…
https://axenov.dev/?p=1234
#shell #mysql #блог #моё
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Аксенова
Делаем бекап проекта простым путём
Photo by Markus Winkler on Unsplash Сегодня 07.07.2022. Два дня назад я очень глупо и почти случайно потерял всё, что было на этом сервере. Бэкапы были только от мая -- это лучше, чем ничего, однако регулярного резервирования не было. Тут либо жизнь меня…
Зачем нужен static при объявлении анонимных функций?
Обращаем внимание в #php на неочевидную разницу между (non)static-замыканиями. @axenov_dev
Обращаем внимание в #php на неочевидную разницу между (non)static-замыканиями. @axenov_dev
👍1
Attributes in PHP 8
Наиболее полный и понятный мануал по работе с атрибутами в #php. Можно использовать как справочник.
По опыту могу сказать, что атрибуты — суперский механизм (мета-)проргаммирования проекта на уровне рефлексий. Его определённо стоит попробовать.
@axenov_dev
Наиболее полный и понятный мануал по работе с атрибутами в #php. Можно использовать как справочник.
По опыту могу сказать, что атрибуты — суперский механизм (мета-)проргаммирования проекта на уровне рефлексий. Его определённо стоит попробовать.
@axenov_dev
🔥1
vitalets/github-trending-repos
Интересный реп. Подписываешься на ишью интересующего ЯП и получаешь на почту список ссылок на репы в ГХ, которым отсыпали звёзд за последние сутки или неделю.
Проскакивают интересные вещи. Можно использовать как источник репов, в которые можно поконтрибьютить.
#foss #github @axenov_dev
Интересный реп. Подписываешься на ишью интересующего ЯП и получаешь на почту список ссылок на репы в ГХ, которым отсыпали звёзд за последние сутки или неделю.
Проскакивают интересные вещи. Можно использовать как источник репов, в которые можно поконтрибьютить.
#foss #github @axenov_dev
GitHub
GitHub - vitalets/github-trending-repos: Track GitHub trending repositories in your favorite programming language by native GitHub…
Track GitHub trending repositories in your favorite programming language by native GitHub notifications! - vitalets/github-trending-repos
📝 Русификация iptvnator
К разработке этот пост относится весьма посредственно, но тем не менее. Я тут вспомнил, что ранее в этом блоге уже выкладывал русификации, которые делал сам. И ещё я тут вспомнил, что когда-то давно я сделал pull-request в проект iptvnator.
Это довольно простая софтинка для просмотра разных IPTV-плейлистов на своём компе или из браузера. Понятное дело,…
https://axenov.dev/?p=1353
#блог #моё
👨💻 @axenov_dev 👍 @axenov_blog
К разработке этот пост относится весьма посредственно, но тем не менее. Я тут вспомнил, что ранее в этом блоге уже выкладывал русификации, которые делал сам. И ещё я тут вспомнил, что когда-то давно я сделал pull-request в проект iptvnator.
Это довольно простая софтинка для просмотра разных IPTV-плейлистов на своём компе или из браузера. Понятное дело,…
https://axenov.dev/?p=1353
#блог #моё
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Аксенова
Русификация iptvnator
К разработке этот пост относится весьма посредственно, но тем не менее. Я тут вспомнил, что ранее в этом блоге уже выкладывал русификации, которые делал сам. И ещё я тут вспомнил, что когда-то давно я сделал pull-request в проект iptvnator. Это довольно простая…
How to Use Linux Signals in Bash Scripts
Годная информация о сигналах в Linux и о том, как их использовать в своих #shell-скриптах с помощью trap
@axenov_dev
Годная информация о сигналах в Linux и о том, как их использовать в своих #shell-скриптах с помощью trap
@axenov_dev
👍1
📝 KDE: ошибка «execvp: Ошибка формата выполняемого файла»
Ситуация
При запуске программы через меню приложений возникает эта ошибка, программа не запускается.
Я встречал это на Oracle SQLDeveloper любой версии 20+, который устанавливался из официального rpm в среде Ubuntu + KDE с помощью sudo alien -dic. Ошибки не было в MATE. Может не встречаться в GNOME. Встретил только в KDE.
Ошибки нет, если запустить…
https://axenov.dev/?p=1394
#блог #моё
👨💻 @axenov_dev 👍 @axenov_blog
Ситуация
При запуске программы через меню приложений возникает эта ошибка, программа не запускается.
Я встречал это на Oracle SQLDeveloper любой версии 20+, который устанавливался из официального rpm в среде Ubuntu + KDE с помощью sudo alien -dic. Ошибки не было в MATE. Может не встречаться в GNOME. Встретил только в KDE.
Ошибки нет, если запустить…
https://axenov.dev/?p=1394
#блог #моё
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Аксенова
Ошибка KDE: «execvp: Ошибка формата выполняемого файла»
Элементарное решение проблемы запуска приложений из меню KDE
📝 Прокачиваем бекап проекта простым путём
Это продолжение предыдущего поста. Я решил сделать более интересный вариант:
- резервировать в холодный S3-бакет;
- прикрутить нотификации на телефон об ошибках и успехах резервирования;
- исправить пару недочётов из прошлой версии.
В прошлом посте можешь глянуть исходную версию скрипта. Здесь мы его скорректируем и нарастим вкусным мясом.
https://axenov.dev/?p=1272
#mysql #shell #s3 #блог #моё
👨💻 @axenov_dev 👍 @axenov_blog
Это продолжение предыдущего поста. Я решил сделать более интересный вариант:
- резервировать в холодный S3-бакет;
- прикрутить нотификации на телефон об ошибках и успехах резервирования;
- исправить пару недочётов из прошлой версии.
В прошлом посте можешь глянуть исходную версию скрипта. Здесь мы его скорректируем и нарастим вкусным мясом.
https://axenov.dev/?p=1272
#mysql #shell #s3 #блог #моё
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Аксенова
Прокачиваем бекап проекта простым путём
Photo by Pero Kalimero on Unsplash Это продолжение предыдущего поста про резервирование. Я решил сделать более интересный вариант: резервировать в холодный S3-бакет;прикрутить нотификации на телефон об ошибках и успехах резервирования;исправить пару недочётов…
👍1
Немного полезной информации об опкодах в #php.
🔹 JIT в PHP 8: Просто о сложном — коротко о том, как работает opcache, JIT-компиляция и как это включить.
🔹 How to dump and inspect PHP OPCodes — как просмотреть опкоды скриптов на примерах. Полезно в изучении подкапотного оптимизатора.
К слову: JIT-компиляция несовместима с xdebug. Кроме того, он местами довольно существенно замедляет выполнение скриптов. Поэтому на продах его ставить не следует, но следует держать это в голове даже при локальной отладке.
@axenov_dev
🔹 JIT в PHP 8: Просто о сложном — коротко о том, как работает opcache, JIT-компиляция и как это включить.
🔹 How to dump and inspect PHP OPCodes — как просмотреть опкоды скриптов на примерах. Полезно в изучении подкапотного оптимизатора.
К слову: JIT-компиляция несовместима с xdebug. Кроме того, он местами довольно существенно замедляет выполнение скриптов. Поэтому на продах его ставить не следует, но следует держать это в голове даже при локальной отладке.
@axenov_dev
YouTube
JIT в PHP 8: Просто о сложном
Привет, друзья!
В данном видео мы поговорим о JIT в PHP 8. В ходе просмотра видео вы узнаете что это такое, зачем это вообще нужно, как это включить и какую пользу с этого можно получить.
0:00 Введение
1:47 Как выполняется код на PHP?
4:14 PHP и OPCache…
В данном видео мы поговорим о JIT в PHP 8. В ходе просмотра видео вы узнаете что это такое, зачем это вообще нужно, как это включить и какую пользу с этого можно получить.
0:00 Введение
1:47 Как выполняется код на PHP?
4:14 PHP и OPCache…
👍1
Если ты при выполнении
Теоретически, также можно откатиться на <=1.1.2, но быстрого способа я пока не нашёл. Конкретно мне случайно помог мой скрипт переустановки докера, составленный по офиц. мануалу — там как раз, по сути, containerd был переустановлен и запущен сызнова, так что ошибка ушла.
На самом деле, вполне можно обойтись командой:
В любом случае, ждём релиза с фиксом.
#docker @axenov_dev
docker exec
стал часто сталкиваться с ошибкой OCI runtime exec failed: exec failed: unable to start container process: open /dev/pts/0: operation not permitted: unknownЗначит, скорее всего, у тебя используется runc версии 1.1.3 (runc --version) с ошибкой. Она будет исправлена в runc 1.1.4, черновик релиза уже создан.
Теоретически, также можно откатиться на <=1.1.2, но быстрого способа я пока не нашёл. Конкретно мне случайно помог мой скрипт переустановки докера, составленный по офиц. мануалу — там как раз, по сути, containerd был переустановлен и запущен сызнова, так что ошибка ушла.
На самом деле, вполне можно обойтись командой:
sudo systemctl restart containerd.serviceГлавное, не трогать
systemctl daemon-reload
!В любом случае, ждём релиза с фиксом.
#docker @axenov_dev
GitHub
[1.1] Fix failed exec after systemctl daemon-reload (regression in 1.1.3) by kolyshkin · Pull Request #3554 · opencontainers/runc
A regression reported for runc v1.1.3 says that after systemctl
daemon-reload runc exec fails:
exec failed: unable to start container process: open /dev/pts/0: operation not permitted: unknown
Ap...
daemon-reload runc exec fails:
exec failed: unable to start container process: open /dev/pts/0: operation not permitted: unknown
Ap...
👍1
Рассматривая пул-реквест из прошлого поста, я обнаружил использование участниками акронимов, которые ранее не знал. Точечно прогуглив, составил небольшой список аббревиатур, которые можно встретить в обсуждении пулл-реквестов разных проектов на GitHub:
LGTM (looks good to me) — «мне нравится».
FYI (for your information) — «к вашему сведению».
PTA[C]L (please, take a [closer] look) — «посмотри, пожалуйста», требуется мнение другого участника.
ACK (acknowledgement) — подтверждение, согласованное/принятое изменение.
NACK/NAK (negative acknowledgement) — отрицательное подтверждение, несогласие с изменением и/или концепцией.
RFC (request for comments) — запрос комментариев; думаю, это хорошая идея, давайте обсудим.
WIP (work in progress) — «в работе», пока не объединять.
AFAIK/AFAICT (as far as I know/can tell) — «насколько я знаю/могу сказать».
IDK (I don't know) — я не знаю.
IIRC (if I recall correctly) — «если я правильно помню».
IANAL (I am not a lawyer) — «я не юрист», допускаю проблемы с лицензированием.
IM[H]O (in my [humble] opinion) — «по моему скромному мнению», по-моему.
В английском очень много и других акронимов, которые могут также встречаться и на ГХ, но они в целом общеупотребительны и перечислять их все здесь нет смысла. Если попадётся что-то ещё интересное, возможно, добавлю в этот пост.
#github @axenov_dev
LGTM (looks good to me) — «мне нравится».
FYI (for your information) — «к вашему сведению».
PTA[C]L (please, take a [closer] look) — «посмотри, пожалуйста», требуется мнение другого участника.
ACK (acknowledgement) — подтверждение, согласованное/принятое изменение.
NACK/NAK (negative acknowledgement) — отрицательное подтверждение, несогласие с изменением и/или концепцией.
RFC (request for comments) — запрос комментариев; думаю, это хорошая идея, давайте обсудим.
WIP (work in progress) — «в работе», пока не объединять.
AFAIK/AFAICT (as far as I know/can tell) — «насколько я знаю/могу сказать».
IDK (I don't know) — я не знаю.
IIRC (if I recall correctly) — «если я правильно помню».
IANAL (I am not a lawyer) — «я не юрист», допускаю проблемы с лицензированием.
IM[H]O (in my [humble] opinion) — «по моему скромному мнению», по-моему.
В английском очень много и других акронимов, которые могут также встречаться и на ГХ, но они в целом общеупотребительны и перечислять их все здесь нет смысла. Если попадётся что-то ещё интересное, возможно, добавлю в этот пост.
#github @axenov_dev
👍1
📝 Сбросить пароль пользователя MediaWiki
Что делать, если пользователь MediaWiki потерял пароль от учётной записи и требуется восстановить доступ.
https://axenov.dev/сбросить-пароль-пользователя-mediawiki/
#блог #моё
👨💻 @axenov_dev 👍 @axenov_blog
Что делать, если пользователь MediaWiki потерял пароль от учётной записи и требуется восстановить доступ.
https://axenov.dev/сбросить-пароль-пользователя-mediawiki/
#блог #моё
Please open Telegram to view this post
VIEW IN TELEGRAM
Блог Аксенова
Сбросить пароль пользователя MediaWiki
Пользователь MediaWiki потерял пароль от учётной записи, требуется восстановить доступ. Решение 1: через скрипт обслуживания (рекомендуется) Зайти на сервер, перейти в директорию maintenance и выполнить sudo php changePassword.php --user=username --password=NEWPASS…
👍1
Спец. рубрика — "Я не умею пользоваться IDE"
Для #laravel 5.5+, помимо основной документации, на основе докблоков генерируется подробный справочник по всем классам и их методам.
https://laravel.com/api/9.x/index.html
#php @axenov_dev
Для #laravel 5.5+, помимо основной документации, на основе докблоков генерируется подробный справочник по всем классам и их методам.
https://laravel.com/api/9.x/index.html
#php @axenov_dev
😁1
Есть такой малоизвестный микрофреймворк FlightPHP.
Я решил им воспользоваться для рефакторинга iptv.axenov.dev. Нацепил твиг, обмазал коллекциями, насыпал своих хелперов с конфигами, завернул в докер и получилось годно.
Местами запаривался, потому что привыкзапариваться к некоторым (действительно удобным) фишкам #laravel и попытался по минималке их имплементировать. Потом подчищал откровенно чересчур усложнённое, а местами поклал болт.
В чистом виде, этот проект на FlightPHP мог бы уместиться в паре файлов, как и ранее, но я хотел предсказуемого порядка. (Таки приятно, когда сам строишь свой движок, не упираясь в кем-то придуманную структуру и правила.)
Роутинг, шаблонизатор какой хочешь, DI, реквесты, респонсы, мидлвари. Всё, что тебе надо — в единственном фасаде. Чего не хватает — расширил фасад через
Под капотом с лупой этот фреймворк не изучал, так что за его адекватность зуб не дам, хотя отладчиком я приходил в одно странное место. Вообще, там довольно много динамики и порой непонятно где нахрен ошибка.
Однако он довольно прост в использовании, гибок, шустр и расширябелен для небольших проектов и прототипов. Сам по себе зависимостей не тянет, самодостаточен, потихоньку развивается.
Вот как всё было плохо, и вот как всё стало прекрасно:
https://github.com/anthonyaxenov/iptv
Короче, рекомендую. Мне нравится. Хочу поверх него дописать свой framework-like boilerplate, чтобы уже на нём писать какие-нибудь небольшие проекты для души. Не везде же симфони с ларами пихать.
#моё #foss #php @axenov_dev
Я решил им воспользоваться для рефакторинга iptv.axenov.dev. Нацепил твиг, обмазал коллекциями, насыпал своих хелперов с конфигами, завернул в докер и получилось годно.
Местами запаривался, потому что привык
В чистом виде, этот проект на FlightPHP мог бы уместиться в паре файлов, как и ранее, но я хотел предсказуемого порядка. (Таки приятно, когда сам строишь свой движок, не упираясь в кем-то придуманную структуру и правила.)
Роутинг, шаблонизатор какой хочешь, DI, реквесты, респонсы, мидлвари. Всё, что тебе надо — в единственном фасаде. Чего не хватает — расширил фасад через
map()/register()
и ураагша.Под капотом с лупой этот фреймворк не изучал, так что за его адекватность зуб не дам, хотя отладчиком я приходил в одно странное место. Вообще, там довольно много динамики и порой непонятно где нахрен ошибка.
Однако он довольно прост в использовании, гибок, шустр и расширябелен для небольших проектов и прототипов. Сам по себе зависимостей не тянет, самодостаточен, потихоньку развивается.
Вот как всё было плохо, и вот как всё стало прекрасно:
https://github.com/anthonyaxenov/iptv
Короче, рекомендую. Мне нравится. Хочу поверх него дописать свой framework-like boilerplate, чтобы уже на нём писать какие-нибудь небольшие проекты для души. Не везде же симфони с ларами пихать.
#моё #foss #php @axenov_dev
🔥2