Задать вопрос
  • Как отключить возможность запуска командной строки на экране блокировки windows 11?

    @Vitsliputsli
    Drno, то, что при физическом доступе больше возможностей для взлома, не отменяет того, что ПО должно работать корректно.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @Vitsliputsli
    azuf,
    Видимо Дейкстра был прав, сказав, что ООП плохая идея, которую могли придумать только в Калифорнии.

    А "высокомерие измеряется в нано-Дейкстрах"©. Если серьезно, то неважно что он и о чем говорил в прошлом веке, ООП сейчас основная производственная парадигма.

    Код в ООП стиле сложно понять. По крайней мере мне

    Это всем так с непривычки. Потому что привыкли в программе мыслить другими критериями. Нужно просто писать код, и понимание придет само, по мере преодоления ошибок. Вообще ООП-шный код даже на незнакомом языке зачастую выглядит вполне понятным.

    Откройте Techempower benchmark. Вчера тестировал workerman с помощью wrk, на одном ядре 50 000 запросов в секунду, на нескольких ядрах сотни тысяч. FPM с Nginx и стандартными настройками показывает 4 500 запросов в секунду.

    Если бы все было так просто, но синтетические тесты мало информативны на практике. Что такое "запросы"? Это запросы к php или статика тоже? Не поверю, что веб-сервер на php отдает статику быстрее nginx. А если у нас сайт, то там большая часть это статика. Ок, допустим это api, и все запросы к php, "50 000 запросов в секунду" - это 20мкс на запрос, "4 500 запросов в секунду" - это 222мкс на запрос. За сколько у нас отрабатывает api-запрос, не беря тяжелое и совсем легкое, в среднем 50-100мс. Т.е.10-20 запросов в секунду, причем особо нет разницы для какого варианта, потому что php-код отрабатывает гораздо дольше расходов на веб-сервер. И это мы еще не тестировали как себя поведет php-шный вебсервер при реальных запросах, где работа с базой, ошибки, а иногда и фатальные и т.д. К примеру, fpm очень хорошо шарит память между своими процессами, а на сколько хорошо workerman это делает? Разумеется есть shared memory, но все же. Кажется, что цепочка nginx > php-fpm > php слишком длинная, и просто демон на php лучше, но в реальных условиях nginx может быть вообще не один, и шифровать надо, что проще всего опять в nginx сделать.

    Буду разбираться. Посоветуйте что нибудь практичное для обучения. Чтобы по больше практики. От толстых книг клонит в сон.

    Сложно чтото советовать, со временем забываешь, что помогало. Чисто субъективно
    тут
    Обобщенно, не зная уровня обучающегося - я бы начал с примитивных описаний ООП как оперирование с объектами реального мира, на самом деле это не так, но чтобы въехать помогает. Дальше писать код, читать код популярных решений, если не идет (а оно сразу не пойдет) - берешь более простые задачи или решения. Плохо если проект не живой, т.е. в него не прилетают постоянно правки по реальным требованиям, именно внесение изменений показывает, где ошибся.
    Прочитать про распространенные ошибки, супер-классы и т.п. На первых порах лучше забыть, что статика вообще существует, а то есть риск свернуть не туда. Знал одного программиста из крутого банка, который писал статикой, по-сути он процедуры оформлял как методы, а классы были как namespace, и делал так много лет, но это было давно. Писать длинные методы по-привычке нормально, даже если их не разделить сразу, когда в будущем прилетят правки они покажут, что это надо было сделать, и где это надо было сделать. Использование примитивов не преступление, но только внутри объекта, если данные поплыли между объектами нужно быть очень осторожным. Иначе, когда с примитивом нужно будет передать еще данные, придется перепиливать весь путь, поэтому в таких случаях лучше сразу заложить объект, к нему прицепить дополнительные данные не проблема. Патерны не являются каким-то уникальным инструментом, но удобно в названии классов использовать название патерна, чтобы сразу было понятно для чего класс. Наследование это связь между родственными объектами, не стоит его использовать для других целей.
    Прочитать про dependency injection, для начала понять, что зачастую удобнее объект передать из предыдущего обработчика, а не создать в текущем.
    Прочитать про SOLID, и повторять их для себя время от времени. Дело в том, что в начале достаточно будет только буквы S, одно только соблюдение single responsibility убирает огромное кол-во проблем, остальное придет позже. А есть еще всякие GRASP и не только.
    Что касается ООП в php. Private/protected/public обязательны всегда, и для методов, и для свойств. Static поначалу забыть, что он есть. Interface можно оставить на потом. Trait я бы не использовал вообще.
    В общем, у меня получается, что нужно больше читать не как надо писать, а как не надо писать.
    Я не знаю хороших книг по ООП, боюсь, в любом случае, только практика поможет. Из того, что вспомнилось. "Чистый код" - это что-то оторванное от жизни, вообще не стоит читать. "Совершенный код" - отличная книга, но вряд ли сильно поможет в начале изучения ООП. Патерны - это больше как принято называть устоявшиеся решения, лучше знакомиться после практики.
    .
    Написано
  • Помощь в решении задачи 96, Sql-ex?

    @Vitsliputsli
    Adamos,

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

    Да, ладно, если эти незнакомые люди не умеют себя вести можно и нужно учить. И тем более, если они старше и опытнее, это отягащающий фактор, т.к. у них было больше времени. Помоему само допущение, что старший может быть невежлив к младшему, только на основании, что он старший, мерзко. В плане вежливости, все в равных правах.
    Другое дело, что никто и не был невежлив, да переписка неформальная, да не обвешана формальными вежливыми словами, но критиковали конкретную работу, и никто не переходил на личности. В принципе, как вы и написали, что как "в рабочей команде". Нет конструктивной критики кода, нет роста.
    Написано
  • MySQL/MariaDB. 10 vs 11 version. Индексы. Странное поведение?

    @Vitsliputsli
    N,

    Как дальше с этим жить и лопатить проекты с JOIN'ами(это грубо говоря) при переносе?

    А зачем спешить переходить? Переходите тогда, когда результаты тестирования новой версии вас устроят. Сейчас похоже рано (хотя я не верю в оптимизатор, который никогда не ошибается).
    Например, некоторые до сих пор используют mysql 5.7, и не только потому что все подводные камни известны, просто 8ка показывает себя хуже при тестировании. И несмотря на проблемы 5.7, стабильность важнее.
    Написано
  • MySQL/MariaDB. 10 vs 11 version. Индексы. Странное поведение?

    @Vitsliputsli
    N,

    я был уверен, что всё будет "чики-пуки"

    Соберите статистику и посмотрите изменится ли план. Хотя за "несколько дней" она должна была ее сама собрать.
    Я смотрю, 11 версии всего 2,5 года, и в ней сильно поменяли стоимостную модель. Подождем, может кто в теме и подскажет.
    Написано
  • MySQL/MariaDB. 10 vs 11 version. Индексы. Странное поведение?

    @Vitsliputsli
    N, оптимизатору чтобы построить хороший план, нужно понимать какие данные и в какой пропорции лежат в таблицах. Тупой пример, вы залили в таблицу много данных, а оптимизатор думает что она маленькая и вместо использования индекса пойдет фул-сканом. Разумеется это не так глупо работает, но при больших и быстрых изменениях лучше все таки вручную попросить собрать статистику, на всякий случай.
    Указать какой индекс использовать - нормально. Но, нужно быть очень аккуратным, если вы знаете что распределение данных не изменится, то хорошо. Чаще всего, в работающем проекте распределение данных более менее постоянно, и указание конкретных индексов надежнее. Даже если у вас давно работающий проект, оптимизатор может иногда удивить, выбрав очень странный план, особенно если сложные индексы с пересекающимися полями.
    И еще, USE - это рекомендация, оптимизатор может на нее забить, прям чтоб гарантировано нужен FORCE.
    Написано
  • MySQL/MariaDB. 10 vs 11 version. Индексы. Странное поведение?

    @Vitsliputsli
    Я так понимаю работали в 10ке, затем перенесли данные в 11 и сразу попробовали? А статистику собирали после переноса? Если нет, то ничего удивительного, что оптимизатор выбрал неверный план.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @Vitsliputsli
    azuf,
    Vitsliputsli, то есть нельзя создать экземпляр Request? Здесь Request используется вне onMessage, правда класс наследуется от исходного. Не знаю важно ли это, плохо разбираюсь в работе конструкций классов и объектов.

    Можно, но объекты не в вакууме существуют, их чтото создает и передает необходимые данные. Какие данные вы будете передавать для создания объекта? А нужно передавать buffer, т.е. сырые данные запроса http.
    Пример который вы здесь привели, это оперирование с объектами класса Request, пожалуйста, можете сделать также, но чтото предварительно должно создать объект класса Request.
    В Workerman гдето есть код по созданию объекта класса Request, и есть вызов onMessage с передачей туда Request.

    Потому что он позволяет использовать PHP как полноценный язык, способный держать постоянный процесс. Что дает много новых возможностей, в отличие от общепринятой CGI модели использования PHP, когда процесс запускается отдельным веб-сервером, а после процесс умирает. И дает еще и увеличение производительности. И потому что он проще чем Swoole.

    Демоны на php это такая же общепринятая модель, как и cgi, уже давно. И с ними все тоже самое, кроме некоторых нюансов. Обработка http-запросов демоном на php скорее всего будет менее производительно чем через php-fpm, потому что fpm максимально оптимизирован для такой работы.

    У меня нет цели изучать именно ООП. Моя цель разобраться с Workerman. Мне непонятно как изучать ООП. Я вижу класс Request, везде учат, что нужно создавать экземпляр объекта от класса, а тут выясняется, что просто так объект Request не создашь. То есть чтобы понять как работать конкретно с таким классом, нужно сразу углубляться в какие то тонкости, как это сделать непонятно, так как во всех книжках одна и та же общая информация.

    Зря, не разберетесь с ООП, дальше не сможете продвигаться.
    Так у вас уже создан экземпляр класса, Workerman его создал. Весь смысл ООП, что вам не нужно вникать, что и как там делал Workerman - вам не нужно самому парсить запрос http, у вас есть есть готовый объект Request, с набором функций-методов, для удобного получения различных параметров запроса.
    Написано
  • Как правильно создать объект класса Request в Workerman?

    @Vitsliputsli
    azuf, судя по коду, в buffer кладется сырой запрос, объект Request его парсит и предоставляет удобные методы для получения отдельных составляющих запроса: тип, хедеры, куки и т.п., в том числе uri. Затем вызывается метод onMessage и этот объект закидывается в него. Т.е. onMessage эта реакция на запрос, соответственно с него все и начинается.
    Хотите обрабатывать отдельно, вызывайте обработчик из onMessage, и передавайте в него uri. Хотите один объект обработчик, закидывайте его в onMessage через зацепление.
    Написано
  • Как пробросить подключение к удаленной базе данных mysql в phpstorm?

    @Vitsliputsli
    TheCLub27,
    Vitsliputsli, видимо где-то на своем жизненном пути, тебе неправильно преподнесли термины духоты и точности. Вот конкретно сейчас, низойдя на говно, ты начал уточнять.
    "Пока не разберешься чем отличается IDE от интерпретатора, нет смысла чтото делать дальше" - с такой логикой для использования компьютера ты обязан уметь программировать микроконтроллеры. Разрешаю сказать, что этот пример вне контекста или притянут за уши, как раз уточнишь)
    В общем знатно повеселил под конец рабочего дня, удачных выходных)

    Причем здесь контекст, если это не пример, а аналогия? В общем все тоже, начни с азов, со значений слов, а потом уже пробуй складывать их в предложения. А то пока не получается.
    Написано
  • Как пробросить подключение к удаленной базе данных mysql в phpstorm?

    @Vitsliputsli
    AlexEfim,
    Vitsliputsli, А причем тут лайк с другой учетки и некропостинг, если ты не в - курсе на почту прилетает уведомление.

    В твоем случае, если ты профи - прочитал вопрос, мог бы ответить по существу, понял что задающий вопрос не на таком условно уровне, внести скажем так вклад в развитие сообщества, а не писать непонятно что мнимо обозначив свою "интеллектуальность", кейс выше по итогу решился на стакоферлоу, так что - порой лучше промолчать - тогда реально за умного сойдешь)) Человек может гуглил по ошибке, пришел за решением и прочитал твое "умозаключение" которое никак не помогло никому кроме твоего самолюбия) Успехов тебе)

    Ага, ну-ну...
    А чем ответ не по-существу? Пока не разберешься чем отличается IDE от интерпретатора, нет смысла чтото делать дальше. Если разобрался - нужно уточнить дальше. А можно как сделал ты - ходить год и дуться...
    Тут не "кейс", а непонимание что делается и зачем, и правильного ответа на него нет. Можно небезопасно править доступы базы, можно неудобно скрипты не локально запускать, можно накостылить и ssh-туннель. Но, вероятнее всего стоит развернуть полноценную среду разработки локально. Но, это ведь не ответ на "кейс", ты же спрашиваешь такую простую вещь, а я тут загоняю невесть что, так ведь думаешь?
    Поэтому советую вернуться к моему ответу и проанализировать как он должен поменять вопрос.
    И, как любой человек, могу ошибаться, и тогда ты, раз так радеешь за развитие сообщества, мог бы опубликовать свое решение, но нет, опять же, все пустой треп.
    Написано
  • Как пробросить подключение к удаленной базе данных mysql в phpstorm?

    @Vitsliputsli
    TheCLub27,

    какой же ты душный, это пиздец

    Пока нет понимания, что и где выполняется, бессмыслено что-либо решать. Когда решаешь задачи, а не бухаешь с гопотой, точность необходима.
    Когда путаешь душность и точность, это много говорит об интеллектуальных способностях.
    А некропостинг и сражу же лайк с другой учетки много говорит о психическом состоянии.
    Написано
  • Возьмут ли меня на работу с 9 классами образования?

    @Vitsliputsli
    AKimovd, там бюрократические проволочки не из-за того, что кому-то скучно, и он доколупывается до каждой буквы, а потому что не хотят терять деньги и поэтому будут всячески упорствовать. Но в любом случае, тактика "они ничего не говорят, а я попробую угадать, что они хотят" заведомо провальная. Если бы автору сказали, что вам следует сделать то-то в соответствии с нашим уставом, был бы совсем другой разговор, но там не так...
    Написано
  • Возьмут ли меня на работу с 9 классами образования?

    @Vitsliputsli
    В колледже программу 10-11 класса проходят на первом курсе, поэтому при отчислении лучше взять справку, что обучались, лишним не будет. На практике, думаю она мало кому будет интересна.
    Пока еще сохраняется "норма", что очень странно если человек не закончил ни 11 классов, ни колледж. Хотя с последними тенденциями и ограниченным набором в 10 класс, все скоро может поменяться.
    Написано
  • Возьмут ли меня на работу с 9 классами образования?

    @Vitsliputsli
    AKimovd,
    инициатива должна быть соответствующий образом оформлена.
    Как оформлять может быть написано в уставе.

    А есть ссылка на закон?
    Любые требования устава ничтожны, если нарушают закон. Ст.61 говорит что достаточно только инициативы, т.е. обращения с указанием своего желания прекратить отношения. Ст.30 говорит, что никакие уставы не могут ухудшать положения обучающихся, т.е. требовать какие-то "уважительные причины" - это прямое нарушение закона.
    Написано
  • Возьмут ли меня на работу с 9 классами образования?

    @Vitsliputsli
    AKimovd,

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

    Неважно, что там в уставе, есть закон «Об образовании в Российской Федерации» (№ 273-ФЗ):
    Ст.61.2. Образовательные отношения могут быть прекращены досрочно в следующих случаях:
    1) по инициативе обучающегося или родителей (законных представителей) несовершеннолетнего обучающегося.

    Т.е. достаточно инициативы.
    Написано
  • Возьмут ли меня на работу с 9 классами образования?

    @Vitsliputsli
    Hallexz,

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

    Вам лет сколько? Если несовершеннолетняя, то заявление должен писать законный представитель.
    Либо как написал Василий Банников. Либо 2 экземпляра заявления, требуете отметки о принятие на своей копии. Если не ставят, требуйте письменный отказ с указанием причины. Если все равно в отказ, то если сможете, выносите им мозг до победного, "никуда не уйду, пока не примете заявление". Тут нужна выдержка, их много, ты один, будут пугать полицией и т.д.
    Написано
  • Как установить timezone в php.ini?

    @Vitsliputsli
    geometria,

    что делать дальше - не знаю

    Прочитайте про докер и как с ним работать.
    Если у вас собственный контейнер, то копируйте конфиг при сборке. Если нет, то например, подключайте конфиг снаружи при запуске. Если это прод, то только 1 вариант.
    Но я бы не стал менять часовой пояс. Для сервера utc это стандарт. Ненужно думать о том, что завтра придумают владельцы часового пояса, да и просто даст хорошую привычку помнить, что время бывает разное и в выводе это надо учитывать.
    Написано
  • Насколько надежен описанный процесс тестирования обновлений ОС?

    @Vitsliputsli
    Если тестировать, то только релиз который будет работать на проде, а не надеяться, что версии совпадут. Оставлять хоть и маленький шанс, что тестироваться будет не то, что поедет на прод, так себе идея.
    Написано
  • Как называется такая вложенность в php?

    @Vitsliputsli
    Виктор Кожухарь, php и был по сути шаблонизатором, и лишь потом развился до языка общего назначения, унаследовав типичные для шаблонизаторов функции. Да, это очень снизило порог входа, но это говорит лишь о том, что php очень удачный язык для веба, и потому популярный, в том числе у тех кто не умеет писать код. И, это скорее плюс.
    Плохая репутация заложилась в момент становления языка, и тогда, лет 15 и более назад этот негатив был обоснован. Но, "это было давно и неправда". А хреново можно писать на любом языке, и чаще всего язык в этом не виноват.
    Убеждать дело неблагодарное, нормальных разработчиков и не нужно, они не молятся на свои инструменты и применяют разные по необходимости. А фанатики и не будут слушать, потому как они не понимают даже как их "идеальный" язык работает. Посмотрите на претензии к php - "нет указателей", "нет перегрузки". Ладно бы там про потоки и асинхронность, хотя и это не проблемы.
    Написано