LINUX.ORG.RU

Пыхотред

 


1

5

А чего это у нас, в нашем загончике, нет закрепленного пыхотреда?

Вот теперь есть(надеюсь, его закрепят).

Практически каждый программист, хотя бы раз в жизни, что-то да писал на пыхе. На пыхе работает 40% всего веба, если не больше. Пых велик, могуч, ужасен, но также добр и заботлив.

В тред приглашаются все пыхобоги, пыходемоны, пыхофрилансеры, простые пыхари, и даже пыхоненавистники.

Обсудить есть много чего, начиная с различий версий, особенностей языка, CMS-ок, фреймворков, и заканчивая говнокодом.

<?php

накидайте ссылок по пыху современному. мануалы, книги, видосики с ютуба. чтоб быстро вкатиться с целью трудоустройства. без рассусоливаний, что такое переменная и протокол хттп. какие там ща ходовые фреймворки?

желательно чтоб взаимодействие с современным фронтендом было в наличии. какие жс фреймворки с пыхом щас юзают?

Deleted ()
Ответ на: комментарий от Deleted

накидайте ссылок по пыху

Ж. Попов — лучший учитель писать на пыхе.

Ну ладно, серьёзно:

Первый тебе урок — Попов, это антипаттерн даже среди пыхеров. И (видосики сразу откинь, там одни «поповы»), нормальных мануалов и книг — кот наплакал.

Ищи «макконнелл совершенный код» — первое из того, что действительно стоит прочесть в контексте пыха.

Фреймворки — заходишь на hh.ru и смотришь что там сейчас самое впопулярное по вакансиям. Затем идешь и изучаешь эту херь.

Ферштейн?

deep-purple ★★★★★ ()
Ответ на: комментарий от deep-purple

laravel. про байтики нечего думать. я на этом говне с 2009 года писал по 2017. и вообще хватит плохое людям советовать. сейчас пхп не в моде. самая популярная - нода. проектов на яваскрипт на гитхабе больше всего. на одном языке можно писать и фронт и бэк, а это фуллстэк. сейчас в приложениях клиентского кода в два раза больше чем серверного. + асинхронность рулит (хайп прошел, но смысл в этом был и есть): даже сипупу асинками/эвейтами обзавелся. а php... ну этот уродец должен был сдохнуть только родившись. в современном мире выживают даже самые никчемные представители своего рода. кстати, самые грязные пыходрочеры из пейсбука в hhvm добавили асинхронность...

tz4678 ()
Ответ на: комментарий от tz4678

асинхронность рулит

Рулит изоляция каждого запроса в отдельной VM. Лет через 10 смузимакаки дорастут до переизобретения php-fpm для ноды и будут трындеть как это стильно, модно, молодёжно.

no-such-file ★★★★★ ()
Ответ на: комментарий от no-such-file

да и вообще смысла особого спорить нет. нода/asyncio и т.п. рвут всех на i/o операциях (работа через сокеты). если же требуется выполнение ресорсуемких операций, например обработка графики и т.п., то тут без потоков никак. для этого в python придумали ThreadPoolExecutor, который позволяет запускать ресурсоемкие операции в тредах. у любителей смуззи этого нет, но бпалпансировку через nginx они сделать могут.

tz4678 ()
Ответ на: комментарий от tz4678

http/2

А в чём проблема включить его в nginx? Это никак не отменяет изоляцию каждого запроса в отдельной VM.

вебсокеты

Весьма специфическая фича для «онлайн приложений». Впрочем и тут проблемы у пыха нет, ReactPHP, Workerman, Swoole... Даже быстрее ноды.

нода/asyncio и т.п. рвут всех на i/o операциях

Не знаю кого они там рвут, но топ во всех бенчмарках у го и жабки (Си и кресты можно не считать, они в реальности мало используются). А если сравнить пых и ноду, то внезапно https://www.techempower.com/benchmarks/#section=data-r16&hw=ph&test=f... Пых с мускулом лишь чуть хуже чем нода с монгой. Но у пыха-то есть изоляция VM. Такие дела.

no-such-file ★★★★★ ()
Последнее исправление: no-such-file (всего исправлений: 1)

А почему за собой не прибирает? Обидно, в демон хотел пихать...

<?php
do {
    try {
        new SoapClient('xxx.wsd');
    } catch (Exception $e) {
    } finally {
        gc_collect_cycles();
        printf("%d\n", memory_get_usage());
        sleep(1);
    }
} while(true);
389664
391008
392320
393952
395264
396576
397888
399200
anonymous ()

Весь мой опыт общения с пыхом ограничился правкой пары строк. Ничего не могу сказать за язык с этой стороны, но все приятели пыхтачки — хорошие люди и крепкие специалисты.

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

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

Не знаю зачем я это написал. Всем добра! 359!

perl5_guy ()
Ответ на: комментарий от wxw

Забавный факт: cледуя моде, выбирают не только языки, но и системы контроля версий

Учитывая, что систем контроля версия намного меньше, чем языков и похоже VCS между собой намного больше, чем разные языки, то выбор системы контроля версий НАМНОГО более подвержен моде, чем выбор языка :)

KRoN73 ★★★★★ ()
Последнее исправление: KRoN73 (всего исправлений: 1)
Ответ на: комментарий от tz4678

и вообще хватит плохое людям советовать. сейчас пхп не в моде. самая популярная - нода

Понятия «плохое» и «не модное» вообще не коррелируют :D Как раз на этом примере хорошо видно.

KRoN73 ★★★★★ ()
Ответ на: комментарий от perl5_guy

заявить что ты специалист похапе - это расписаться в собственном слабоумии. уродливее php только perl (тут спорный случай ввиду того что перл хотя бы полноценный язык, а не шаблонизатор) и bash

tz4678 ()
Ответ на: комментарий от KRoN73

php, который течет как малолетняя сучка при виде члена, точно не подходит для того чтобы писать на нем демонов. в него еще калбеки как у крутых пацанов я js завезли, но и их сделали ублюдскими. Там контекст нужно передавать:

function ($someshit) use ($a, $b, $c, ...) {}

Мне js раньше тоже не особо нравился. Пока в него не добавили стрелочные функции, классы, let, спреды, мапы, сеты и т.д. После новшеств яваскрипт пхп для меня показался жутким говном. Короче - это иная идеология, несовместимая с исовременными технологиями. Прекрасный похапе (его прекрасным считают дебилы, которые не смогли освоиить ссылки и указатели в C++) не смог так вытеснить ту же Java, которая была создана как язык для Интернета (в книжке 1997 года именно так и утверждается), мало того php о временем потеснили Ruby, Python, потом Node.js, а затем Go. Он лишь теряет свой рынок. Единственное его преимущество - это наличие однодолларовых шаред-хостингов (наличие таких же джанго-говностингов позволяет выживать другому куску кала - джанге). С дальнейшим развитием облачных технологий, когда постсовковыке барыги освоят новые технологии, php и унас загнется.

tz4678 ()
Ответ на: комментарий от tz4678

php, который течет как малолетняя сучка при виде члена, точно не подходит для того чтобы писать на нем демонов

Вы не умеете его готовить. У меня демоны некоторые годами работают без перезапусков :D

Мне js раньше тоже не особо нравился

А мне он и сейчас не нравится. Сложно найти более уродливый язык :D И это не смотря на то, что с JS я знаком 20+ лет, а с PHP — только 17 :)

его прекрасным считают дебилы, которые не смогли освоиить ссылки и указатели в C++

А с Си++ я знаком, где-то, лет 26-27. И с указателями активно оперировал буквально два дня назад. Но пишу на PHP намного больше. Я дебил или как? :)

С дальнейшим развитием облачных технологий, когда постсовковыке барыги освоят новые технологии, php и унас загнется.

При чём тут постсовок, когда PHP популярен во всём мире? И загибание ему предрека.т уже лет 15, не меньше.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

если освоил указатели уже крутой погроммист, потому как 95% выпускников колледжей и институтов этого освоить не могут и потом работают продавцами в DNS или заправляют картриджи. я не верю, что скрипт на пхп может годами в цикле крутиться, если по крону запускается еще поверю ну или через systemd (свалился и перезапустили). ему не предрекали загибание в начале 10-х, а нулевые - это время его самого расцвета популярности. я помню как нода вышла (еще 0.x), я ее поковырял и забыл, мне она казалась бесполезной... https://www.codingdojo.com/blog/7-most-in-demand-programming-languages-of-2018/ на Западе кстати Perl переживает вторую молодость, его уже хотели хоронить, но он вышел из комы. Смотря на тот график нельзя сказать, что php популярен. На СНГ вообще не стоит ориентироваться. Здесь все отстает на 5-10 лет от передовых стран в т.ч. в области IT. Гомнобитрикс и прочие высеры отечественного говностроения еще долго будут своим смрадом портить воздух.

tz4678 ()
Ответ на: комментарий от anonymous

покажи мне пример работающий. я не верю в php. я на нем почти 10 лет писал. в нем меня привлекало, то что можно хуяк-хуяк и вот у тебя сайт, а как там внутри реализовано не интересовало. я помню эти рекламные заявления похапе-евангелистов: смотрите вон на php facebook сделан и работает! хайлоад и все дела, хомяков мало интересовало, что в пейсбуке пхп-скрипты транслировались в c++, а потом компилировались, что через балансировщики нагрузка распределялась между тысячами серверов. php - это говносайты на joomla, wordpress и drupal, bitrix, состоящий чуть менее чем полность из говнокода и монстуозные фреймворки... вот все эти поделия в лучшем случае могут обрабатывать 100 запросов в секунду... че сказать? да ничего. на самом деле все скриптовые языки одинаково медленные, только всякие стероиды типа поддержки корутин, позволяют их ускорить на порядки, но не в случае php... php особенный. тут пишут эксперды мол пхп ваще ща всех порвет в нем тожи асинхронность... Взять тот phpDaemon который появился как раз 10 лет назад, че он до сих пор течет https://daemon.io/faq.html#memleaks . это особенность пхп - течь. он же был создан чтобы запускаться через cgi. сервер раз запустил скрипт, тот отработал и сдох. сколько лет прошло, а утечки памяти в php так и остались. тот же python он не через cgi работает, там особый протокол wsgi. если коротко: запускается питоновское приложение и висит в процессах, сервер (nginx или апач) ему через пайпы отдают запросы на обработку... короче как прокси работают. у того же питона или у руби, ноды, явы и т.п. ничего не течет. это полноценные языки широкого применения, а не шаблонизатор, работающий через cgi (сейчас через fastcgi работает, когда висит процесс интерпретатора, но не как в случае с питоном когда в процессах постоянно висят скрипты). и вот возвращаемся к теме, ну так кто-нибудь покажет мне чудо скрипт на пхп, который без перезапусков висит годы?!

tz4678 ()
Ответ на: комментарий от tz4678

а откуда там утечки? из кривых сишных экстеншинов или что? неужели за 30 лет не научились отлаживать их?

ну т.е. почему жаба течёт я примерно знаю (хотя можно и нормально написать, но почему-то течёт как сучка постоянно и зависает, когда гц приходит), а в скриптоте чему течь?

anonymous ()

Друзья, ищется адекватный QueryBuilder для MySQL под PHP 7.2, который не зависит от фреймворков.

Одна система построена на солянке из различных компонентов, в том числе и компонентов Symfony, но для проекта Doctrine будет сильно избыточна, хотелось бы что-то простое, живое (!!!), PSRное и легковесное.

Какие предложения?

fman2 ()

Друзья, не проходите мимо моей проблемы! Очень хотелось бы услышать ваш совет!

Задал вопрос на тостере, этот вопрос там удалили. Ну там модераторы ненормальные, больше я туда ни ногой.

Вопрос: Казалось бы элементарная задача, где-то тут я уже читал, что есть тысячи этих QueryBuilder, но что-то я еще не нашел.

Итак: QueryBuilder из Yii2 Нормальный и понятный синтаксис. То что нужно. Но его нельзя использовать отдельно, потому что разработчики из Yii так решили. Зачем его было гвоздями прибивать к фреймворку - не пойму. Мимо. Да и INSERT/UPDATE нет. Он идет через AR.

Aura.SqlQuery Нормальный синтаксис запросов на select и «наркоманский» синтаксис запросов на Insert. Вставка NOW() и прочих функций идет отдельной функцией. Вообще компоненты от Aura имеют своеобразный «синтаксис», который не похож на другие компоненты. Вишенка на торте: в итоге мы получаем SQL запрос, который вместе с параметрами вручную нужно передать в PDO. Я чего-то не понимаю, но ведь можно было в конструктор передавать PDO. Зачем так усложнять? Здесь все наоборот.

FluentPDO Где-то на Toster он уже мелькал. Вот текст с Github: The legacy (1.x) release of FluentPDO works with PHP 5.4 to 7.1. Note: The v1.x branch is no longer supported and will not be maintained or updated.

Но их релиз v1.1.3 был 7 мая. И уже не поддерживается. Предлагают переходить на версию 2.0 Beta, но я в эту авантюру на большом сайте с долгосрочной поддержкой влезать не хочу.

Atlas.Query Жуткий плагиат Aura.SqlQuery. Автор явно вдохновлялся этой библиотекой.

Тащить ORM из Laravel / Symfony не очень хочется. Я не изучал вопрос, можно ли из этих систем взять только QueryBuilder или нет. Что скажете?

Так что посоветуете? Что выбрать? Я на данный момент склоняюсь к костылю под названием: делаем свой интерфейс QueryBuilder'a, делаем класс, имплементим этот интерфейс и внутри класса реализовываем это на базе Aura.SqlQuery. Удовольствия от этого я получу немного, но писать свой QueryBuilder мне бы еще меньше хотелось.

fman2 ()
Ответ на: комментарий от fman2

mysql? в чём смысл использования этого говноподелия? у меня просто нет слов как я его ненавижу за все говнофишечки/говнобажики. раньше то он мне нравился когда только начинал пыхерствовать и кроме простых select/insert/delete/update знать ничего не знал. любовь заменилась отвращением как только я попытался использовать foreign key с null. элементарная казалось бы вещь

create table cats (
	id bigint unsigned not null auto_increment primary key,
	parent_id bigint unsigned,
	name varchar(255) not null,

        foreign key (parent_id) references cats(id) on delete cascade,
	unique key (parent_id, name)
);
insert into cats set parent_id = NULL, name = 'CatName';
insert into cats set parent_id = NULL, name = 'CatName';
// 2 entries exist

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

PS. Как после целого дня работы в vim'е отучиться нажимать ^J вместо Enter когда пишешь в браузере?

iluha16 ()
Ответ на: комментарий от fman2

речь о структуре данных а не о формате запросов к ним. как QueryBuilder решает проблему описанную выше? зачастую обвешавшись этими фреймвёрками не изучив до мелочей что именно они делают за твоей спиной можно получить серьёзные проблемы из-за какой то мелочи вплоть до коррупции данных и проблем безопасности.

iluha16 ()
Ответ на: комментарий от iluha16

А чё такое? Как раз, ключ с NULL (отсутствием) сработал как надо. А вдруг ты потом решишь разные parent_id указать? NULL это тебе не значение а его отсутствие, так что строить уникальный индекс по нему (как и делать COUNT, например) было бы очень тупо - значения-то нет.

anonymous ()
Ответ на: комментарий от anonymous

нет. смысл таблицы построить дерево категорий различных продуктов например. и это будет выглядеть странно если оно будет иметь больше одной категории в одном уровне. например ты заходишь на сайт чтобы купить принтер и видишь ссылки Printers, Printers, ... в какую из них заходить?

iluha16 ()
Последнее исправление: iluha16 (всего исправлений: 1)
Ответ на: комментарий от drsm

с чего вдруг? дерево одно со множеством веток и одним корнем - NULL. даже если исходить из твоей терминологии в чём может быть смысл иметь 2 дерева в данном случае? и к тому же придётся ещё сохранять где то в конфиге константу с ID «hidden root node».

в postgresql работает как надо а у тебя похоже mysql мозга. мой тебе совет переползай на postgresql. к тому же после того как переписал проект на postgresql INSERT стал в разы быстрее (там скрипт вставлял миллионы записей и с mysql я просто не дождался его завершения но шло очень медленно (скрипт выводил % выполнения)). вся эта путаница с myisam, innodb (и что то там ещё вроде есть) абсолютно ненужная потому что скрипт вобще не ускорился с myisam вместо innodb, зато создающая множество непоняток и ограничений. везде в мускуле приписки и ограничения когда дело выходит за рамки простейшего CRUDа. абсолютно ненужная вещь т.к. есть PostgreSQL. ещё в мускуле с лицензией какие то проблемы, даже какой то форк существует с нелепым названием мариа.

iluha16 ()
Ответ на: комментарий от iluha16

с чего вдруг?

дерево это рекурсивная структура данных, в твоем случае ветви 1го уровня не похожи на ветви последующих уровней (будут похожи если мы выберем в качестве операции сравнения «is not distinct from» вместо «=», но это костыль).

и к тому же придётся ещё сохранять где то в конфиге константу с ID «hidden root node»

в случае если дерево в таблице одно, это просто: select id from tree where parent_id is null. если больше одного, то полюбому хранить...

в postgresql работает как надо а у тебя похоже mysql мозга.

я с мускуль не работал после 4.1. то что полюбому постгрес, это даже не обсуждается.

однако, разупорись:

begin;
create table tmp (
	id integer generated by default as identity primary key,
	parent_id integer default null,
	data text not null,
	foreign key (parent_id) references tmp(id) on delete cascade,
	unique (parent_id, data)
);

insert into tmp(data) values ('root');
insert into tmp(data) values ('root');

select * from tmp;
rollback;

drsm ()
Ответ на: комментарий от tz4678

а вообще из базы лучше ничего не удалять, вместо этого завести поле removed и при удалении помечать его как true.

А как на такое смотрят всякие законы о защите персональных данных и прочие GDPR?

utf8nowhere ★★ ()
Последнее исправление: utf8nowhere (всего исправлений: 1)
Ответ на: комментарий от tz4678

Там контекст нужно передавать

Что плохого в том, чтобы явно указывать, что из контекста будет использоваться? В крестах, например, тот же подход, но ещё более кастомизируемый. Вот же ж дураки, наверное, кресты проектируют...

Deleted ()