рассказать про проблемы Madeline о которых нигде не узнать
проблем у madeline - на целый цикл материалов хватит.
вообще в статье Telegram-клиент на %langname% ожидаешь собственно разработку этого клиента, реализацию mtproto ну или хотя бы что на этом языке напишут FFI обертку к tdlib, а не вот это вот всё "мы форкнули библиотеку".
так и тут не надо.
сам по себе php в принципе уже давно не течет, вопрос в том не создатите ли вы сами утечки памяти (или фреймворк, который вы используете).
если в java каждый запрос сохранять в памяти и никогда не очищать, то память закончится — тех же самых правил следует придерживаться и в php.
а писать вручную unsetы не нужно (если, конечно, у вас там не какой-то частный случай).
на идеях автора, что вот мол мы однажды возьмем и выкинем nginx ставят крест вовсе не возможности php, а его производительность и чрезмерное усложнение разработки.
standalone php сервер еще много лет будет оправдан для как максимум для быстрых api запросов с минимальной ветвистостью логики. но все это в любом случае будет за каким-нибудь nginx, из которого будет попадать по http/1.1 или даже http/1.0, потому что производительность при разборе http2 пакетов уже очень сильно деградирует и это дело компилируемых языков, с http3 скорей всего дела будут еще хуже.
ну как минимум файберы дадут возможность нормально указывать возвращаемый тип, а не Generator / Amp\Promise, в который заворачивается результат.
кроме того, вероятно, появится возможность более изящно использовать асинхроный код в синхронной среде, чем сейчас — Amp\Promise\wait(Amp\call(fn () => yield $coroutine));
если вам не принципиально именно wireguard и секьюрность, а нужно хоть что-нибудь чтоб завернуть роутер с серым ip и камерами в его подсети в vpn, то можно так https://m.habr.com/ru/post/482864/.
если настроить bcrelay, то можно будет поднять на сервере еще socks / shadowsocks стучаться к камерам хоть по впн, хоть по прокси (шадоусокс имхо удобней впн с телефона).
фишка в том что Enum как в C — никому не нужен, поэтому что это нельзы будет никак контролировать в сигнатуре функции.
когда у нас набор констант, типа class Enum {
public const VAL_ONE = 1;
public const VAL_TWO = 2;
}
function foo(int $constValue) : void
мы не можем на тайпхинтингом контролировать что никто не засунет в принимающую функцию любой другой int, максимум указать в phpdoc, который поймет psalm и еще пару анализаторов.
все хотят чтоб было enum Values {
case ONE = 1;
case TWO = 2;
}
function bar(Values $value) : void
чтоб никакая сволочь не просунула в функцию, например, значение 65536.
скорей всего под капотом Никита видит это как порезанный класс без возможности ручного инстанцинирования (а-ля Closure или Generator) и его объекты/наследников, чтоб сохранялась возможность проверки true === Values::ONE instanceof Values
да, но нет.
в php есть асинхронность, многопоточность, довольно удобная (на мой взгляд) работа с бинарщиной, голые сокеты и куча самых разнообразных вещей. а какое-то время назад вполне себе здравствовали обертки для gtk и qt, народ даже окошечки рисовал из php (сейчас можно обойтись без биндинг библиотек и дергать через ffi)
и даже свой аналог async-await есть.
и статья немного выглядит как "какой такой Tcp Listener? в похапэ я просто писал <?= 'Hello '. $world ?> и буквы сами попадали в браузер" — нет, то что вы не сталкивались с чем-то в php нисколько не показатель что там этого нет или что на нем нельзя так писать.
а сахара вон в 8ке насыпали, но сахар то всего лишь абстракция, которая позволяет впихнуть больше смысла в меньше строк, а не сделать магию.
ну, pthreads не на ровном месте "ой всё", именно из-за сегфолтов и нестабильности автор переосмыслил идею и сделал parallel.
насчет curl все же не соглашусь, реализовывать такое своими силами никто бы не стал, а биндинги к готовой библиотеке появилась возможность писать только вот-вот с приходом ffi, остальное и вправду можно написать. но разве стал бы php таким популярным, если б в нем небыло инструментов для работы с бд, например, из коробки, учитывая что 10-15 лет назад проекты на php представляли собой в основном тихий ужас на коленке.
я несколько лет назад тоже ждал — когда же в ядро протащат многопоточность, ну как же без нее.
на самом деле ради трех с половиной человек, которые не могут поставить из pecl parallel, а фоллбек на многопроцессность их не устраивает по производительности, никто не будет заморачиваться, поэтому не ждите.
если есть rtsp/onvif, а камера не 4g, а по wifi или кабелю, то можно закинуть её на роутер, подключённый к vpn, внутри сети которого вытаскивать видео чем-третьим, например c помощью vps (на на котором и крутить vpn).
либо если камера сама поддерживает подключение к vpn — в таком случае не нужен и роутер.
насчёт второго пункта — https://github.com/amphp/amp/blob/master/examples/exceptions/uncaught-with-error-handler.php должно помочь, с тайп-хинтингом в шторме, увы, не подскажу, но сами они используют psalm и он, вроде, понимает такие аннотации, как вы приводите в пример. насколько к шторму прикручивается как language server — не знаю, но как минимум прикрутить к каким-нибудь github actions вполне получится.
да, вы правы — я почему-то подумал, что поиск по всей РФ найдет, а когда не нашло не стал гадать с регионом) правду говорят, если в интернете пишул улицу без указания города — это москвичи :)
это не я, честно :)
увы, на hh.ru ничего не находит. правда, я и не ищу сейчас работу :) однако, большое спасибо, что помните меня.
но я считаю, что не зря переходите — на amphp писать гораздо проще и приятней. ну и они вполне адекватно относятся к пуллреквестам, если чего-то нехватает — даже я умудрился маленький апдейт протащить :)
ну так напишите статью — с вашими семью годами опыта должно быть не сложно.
и комментарии проверять больше не будут, да и покажете другим — вот как надо. а то не мешки ворочать все горазды.
автор статьи написал хоть что-то. я с ним не согласен, мягко говоря, но он потратил время и благодаря этому повилась статья, где в комментариях люди пишут интересные идеи и общепринятые практики.
напишите и вы — либо вы пополните хабр интересной статьей, либо в комментариях почитаем почему так делать не стоит.
не скажу ничего насчет Буркина-Фасо, но германия член NATO, а Австралия — союзник (Major Non-NATO Ally), так что хоть какого-то смысла запрещать им фейсбук в этом контексте нет, потому что они завязаны с США в одном военном блоке.
проблем у madeline - на целый цикл материалов хватит.
вообще в статье Telegram-клиент на %langname% ожидаешь собственно разработку этого клиента, реализацию mtproto ну или хотя бы что на этом языке напишут FFI обертку к tdlib, а не вот это вот всё "мы форкнули библиотеку".
хотя в libuv тоже epoll, так что в таком случае разницы нет вообще, кроме того что ffi будет медленее расширения.
единственная концептуальна разница между вашим примером и amphp/reactphp только в том, что у вас epoll, а там select.
мне кажется, никто не запрещает написать свою имплементацию event-loop на этом и использовать в том же самом amphp/reactphp.
так и тут не надо.
сам по себе php в принципе уже давно не течет, вопрос в том не создатите ли вы сами утечки памяти (или фреймворк, который вы используете).
если в java каждый запрос сохранять в памяти и никогда не очищать, то память закончится — тех же самых правил следует придерживаться и в php.
а писать вручную unsetы не нужно (если, конечно, у вас там не какой-то частный случай).
для примера сравните утилизацию CPU amphp/http и curl, например.
даже в php8 с jit, даже с nghttp для разбора http2.
на идеях автора, что вот мол мы однажды возьмем и выкинем nginx ставят крест вовсе не возможности php, а его производительность и чрезмерное усложнение разработки.
standalone php сервер еще много лет будет оправдан для как максимум для быстрых api запросов с минимальной ветвистостью логики. но все это в любом случае будет за каким-нибудь nginx, из которого будет попадать по http/1.1 или даже http/1.0, потому что производительность при разборе http2 пакетов уже очень сильно деградирует и это дело компилируемых языков, с http3 скорей всего дела будут еще хуже.
ну как минимум файберы дадут возможность нормально указывать возвращаемый тип, а не Generator / Amp\Promise, в который заворачивается результат.
кроме того, вероятно, появится возможность более изящно использовать асинхроный код в синхронной среде, чем сейчас — Amp\Promise\wait(Amp\call(fn () => yield $coroutine));
все уже придумано до вас
https://github.com/nikic/scalar_objects — пользуйтесь, никто не запрещает.
если вам не принципиально именно wireguard и секьюрность, а нужно хоть что-нибудь чтоб завернуть роутер с серым ip и камерами в его подсети в vpn, то можно так https://m.habr.com/ru/post/482864/.
если настроить bcrelay, то можно будет поднять на сервере еще socks / shadowsocks стучаться к камерам хоть по впн, хоть по прокси (шадоусокс имхо удобней впн с телефона).
фишка в том что Enum как в C — никому не нужен, поэтому что это нельзы будет никак контролировать в сигнатуре функции.
когда у нас набор констант, типа
class Enum {
public const VAL_ONE = 1;
public const VAL_TWO = 2;
}
function foo(int $constValue) : void
мы не можем на тайпхинтингом контролировать что никто не засунет в принимающую функцию любой другой int, максимум указать в phpdoc, который поймет psalm и еще пару анализаторов.
все хотят чтоб было
enum Values {
case ONE = 1;
case TWO = 2;
}
function bar(Values $value) : void
чтоб никакая сволочь не просунула в функцию, например, значение 65536.
скорей всего под капотом Никита видит это как порезанный класс без возможности ручного инстанцинирования (а-ля Closure или Generator) и его объекты/наследников, чтоб сохранялась возможность проверки true === Values::ONE instanceof Values
да, но нет.
в php есть асинхронность, многопоточность, довольно удобная (на мой взгляд) работа с бинарщиной, голые сокеты и куча самых разнообразных вещей. а какое-то время назад вполне себе здравствовали обертки для gtk и qt, народ даже окошечки рисовал из php (сейчас можно обойтись без биндинг библиотек и дергать через ffi)
и даже свой аналог async-await есть.
и статья немного выглядит как "какой такой Tcp Listener? в похапэ я просто писал <?= 'Hello '. $world ?> и буквы сами попадали в браузер" — нет, то что вы не сталкивались с чем-то в php нисколько не показатель что там этого нет или что на нем нельзя так писать.
а сахара вон в 8ке насыпали, но сахар то всего лишь абстракция, которая позволяет впихнуть больше смысла в меньше строк, а не сделать магию.
ну, pthreads не на ровном месте "ой всё", именно из-за сегфолтов и нестабильности автор переосмыслил идею и сделал parallel.
насчет curl все же не соглашусь, реализовывать такое своими силами никто бы не стал, а биндинги к готовой библиотеке появилась возможность писать только вот-вот с приходом ffi, остальное и вправду можно написать. но разве стал бы php таким популярным, если б в нем небыло инструментов для работы с бд, например, из коробки, учитывая что 10-15 лет назад проекты на php представляли собой в основном тихий ужас на коленке.
я несколько лет назад тоже ждал — когда же в ядро протащат многопоточность, ну как же без нее.
на самом деле ради трех с половиной человек, которые не могут поставить из pecl parallel, а фоллбек на многопроцессность их не устраивает по производительности, никто не будет заморачиваться, поэтому не ждите.
если есть rtsp/onvif, а камера не 4g, а по wifi или кабелю, то можно закинуть её на роутер, подключённый к vpn, внутри сети которого вытаскивать видео чем-третьим, например c помощью vps (на на котором и крутить vpn).
либо если камера сама поддерживает подключение к vpn — в таком случае не нужен и роутер.
насчёт второго пункта — https://github.com/amphp/amp/blob/master/examples/exceptions/uncaught-with-error-handler.php должно помочь, с тайп-хинтингом в шторме, увы, не подскажу, но сами они используют psalm и он, вроде, понимает такие аннотации, как вы приводите в пример. насколько к шторму прикручивается как language server — не знаю, но как минимум прикрутить к каким-нибудь github actions вполне получится.
да, вы правы — я почему-то подумал, что поиск по всей РФ найдет, а когда не нашло не стал гадать с регионом) правду говорят, если в интернете пишул улицу без указания города — это москвичи :)
это не я, честно :)
увы, на hh.ru ничего не находит. правда, я и не ищу сейчас работу :) однако, большое спасибо, что помните меня.
но я считаю, что не зря переходите — на amphp писать гораздо проще и приятней. ну и они вполне адекватно относятся к пуллреквестам, если чего-то нехватает — даже я умудрился маленький апдейт протащить :)
ну так напишите статью — с вашими семью годами опыта должно быть не сложно.
и комментарии проверять больше не будут, да и покажете другим — вот как надо. а то не мешки ворочать все горазды.
автор статьи написал хоть что-то. я с ним не согласен, мягко говоря, но он потратил время и благодаря этому повилась статья, где в комментариях люди пишут интересные идеи и общепринятые практики.
напишите и вы — либо вы пополните хабр интересной статьей, либо в комментариях почитаем почему так делать не стоит.
посмотрите на библиотеку от amphp — https://github.com/amphp/parallel
там не только parallel, но и обертка для ptreads + фолбек на процессы
они не специально, френдлифайр :)
не скажу ничего насчет Буркина-Фасо, но германия член NATO, а Австралия — союзник (Major Non-NATO Ally), так что хоть какого-то смысла запрещать им фейсбук в этом контексте нет, потому что они завязаны с США в одном военном блоке.