Это копия, сохраненная 3 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
В нашем треде отвечают почти на все вопросы, только бампайте вопрос каждые 5 дней.
Этот тред и для начинающих. Слово "классы" у тебя ассоциируется только со школой, а в аттестате тройка по математике? Ты наш человек.
Предыдущий тред был тут: >>1599201 (OP) . Все старые треды есть в архиве: https://phpclub.tech
Форматируй свой код, если хочешь, чтобы его читали.
Правила: ведем себя воспитанно, помогаем новичкам, читаем учебники, решаем задачки, постим ссылки на решения, задаём вопросы, в треде немало анонимных экспертов разного уровня, так что вряд ли вопрос останется без ответа.
С чего начать
У нас есть свои уроки по основам PHP, они собраны и выложены по адресу http://codedokode.github.io/phpbook (вас отредиректит на другой домен, не читайте, не сохраняйте, не запоминайте его, он временный). Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то можно начать с него. Он простой и понятный. Там есть задачи, их нужно решать (чтобы стать программистом, надо писать код - иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению. С другой стороны, если этот учебник тебе не нравится, можно читать любой другой. Или официальный мануал. Или всё сразу.
Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Visual Studio Code, Netbeans PHP или PhpStorm (с ним будет удобнее).
Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.
Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, Git, Composer, JS, Фреймворки, автоматизированное тестирование.
Надо переходить к более серьезным задачкам, которые научат тебя всему этому.
- Для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- Установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony 3/Doctrine 2
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.
Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:
https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md
Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md
Параллельно стоит подучивать английский, на первых порах можно без него, но по мере развития придется все чаще сталкиваться с англоязычными статьями, так что лучше не откладывать. Читать можно news.ycombinator.com - это что-то вроде их хабра. Также можно начинать смотреть фильмы и видео на английском.
Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.
- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://github.com/codedokode/pasta/blob/master/db/databases.md
Что почитать
- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1
- Новости IT на англ. https://news.ycombinator.com/
- Какой-то древний, устаревший, но большой и на русском справочник по веб-разработке, посоветованный аноном: https://starcat.dp.ua/doc/wdh/
Оформляй код аккуратно!!! - например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492
Платиновые вопросы
- Почему PHP? Потому что вакансий море, и учить легко.
- Сайт опять упал!!!!! - Не паникуй, а открой http://rghost.ru/6bfCY9lfl и получи личную немного устаревшую оффлайновую копию сайта (можно читать хоть на андроиде без интернета)
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, Composer, MVC, Фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу.
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, поищи тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - всё зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, Фреймворки, MVC, Git, Composer? - Да, однозначно. Посмотри любую вакансию.
Может кто-нибудь поделиться несложным проектом с выделенным rest/graph бэком на пыхе?
Без темплейт говна типа MVC/Vue MVVM, просто бек
> Использовать SELECT таким образом удобно, когда нужно просмотреть всю таблицу, например, после того, как в нее была загружена первая порция данных. Как часто случается, в выведенных на экран данных сразу можно увидеть ошибку в таблице: Bowser, оказывается, успел умереть еще до того, как родился!
Прям как я...
В JS например всю эту поеботу с класами по сути может заменить обычный объектака ассоциативный массив, который вместо обычных хначенйи может хранить и функции? То есть в JS обычный объект так же можно превратить в набор функций и использовать его как классы в php? Только вот наверно объект не может наследовать другие объекты, хотя их можно объединяться, что по сути тоже можно назвать наследованием, только с заменой
Я в правильную сторону тону?
>я правильно понял, что классы в php - это по сути набор из разных функций
Это еще и собственный стейт (состояние).
>поеботу с класами по сути может заменить обычный объект
По нормальному это называется "объект анонимного типа". Поебота, как ты говоришь, на самом деле не девается никуда.
>В JS например всю эту поеботу с класами по сути может заменить обычный объект
В жсе впринципе почти все есть, что дает аналогичный функционал с классами, что и в пхп (притом я ес6+ не учитываю даже).
>Наверно объект не может наследовать другие объекты
В жсе есть наследование. Посмотри по прототипам и по inherit или типа того.
>Я в правильную сторону тону
Думаю нет.
Так в JS можно класс заменить обычным объектом?
Не понял про состояние, так класс - это просто набор функций? То есть это всё тот же процендурный метод, просто в оболочке с общим родителем и дочерними функциями которые называют методами этого класса ака обёртки для обычных функций, а столько кукареканий было в сторону функционального подхода
класс это не набор функций а одна функция
я тебе в джаваскрипт треде привёл пример аналога классовой нотации через функцию, где создаётся инстанс со стейтом
>Так в JS можно класс заменить обычным объектом?
Объект это экземпляр класса, в случае анонимного объекта - экземпляр анонимного класса. С одной стороны это разные вещи, если у тебя вообще нет общесинтаксической конструкции, похожей на класс. С другой это вещи связанные. У каждого объекта, даже анонимного, есть хоть какой-то класс в предках в том же жс.
>Не понял про состояние
У каждого объекта есть собственное состояние. Еще есть состояние уровня класса (то что обычно помечается как static).
>То есть это всё тот же процендурный метод, просто в оболочке с общим родителем и дочерними функциями которые называют методами этого класса ака обёртки для обычных функций
Думаю тебя на эту мысль натолкнуло то, как создавались новые типы (классы) в жсе до ес6 как раз (функция конструктор и поехали).
В случае жс классы это и правда синтаксический сахар над тем, что ты описал.
Анонимный экземпляр - это типа var obj = {"a": "1"}? Объект который создаётся без new ClassName?
Синтаксическйи сахар - это типа закос под стандарты других языков? Чтобы тебе кто начинал с других языков могли использовать привычный синтксис, который на самом деле просто копия других способов?я бы почитал, но чувствую что сейчас запутаюсь ещё сильнее, если нарвусь на статью васяна
>var obj = {"a": "1"}
Как вариант. У этого объект нет конкретного типа, он как бы сам по себе, но он при этом остается объектом с вытекающими. Значит он что? Правильно. Объект анонимного типа. Тип как бы есть, но у него беда с именем.
>Синтаксическйи сахар - это типа закос под стандарты других языков?
Не только. Это в целом упрощение кода. Общеязыковые конструкции типа class или допустим async не просто так существуют и растаскиваются по всем языкам. С ними просто удобнее.
Так то даже тернарку можно назвать сахаром, хотя она управщает всего-лишь условие. Хотя почему можно, сахар это и есть.
Ну можно глянуть дальше например на какой-нибудь null coalescing. Он тоже просто избавляяет тебя от избыточного кода.
Вот это и есть сахар.
В контексте жс классы ес6+ являются сахаром над тем, что было до этого, потому что в сути своей ничего не поменялось. В других языках это вполне вероятно даже недостижимо без специального синтаксиса. Ну и да, сама конструкция class и прочее сопутствующее плюс минус общеязыковая.
Спасибо анон, продвинул меня ещё дальше в этом запутанном деле
Кстати, а из какого языка спиздили тернарный оператор?
один из. ну и хорошо интегрировать битрикс24. еще на самом деле там очень удобные и ахуенные инструменты для SEO продвижения самого сайта. а в основном да, сорта говна лютые
аноны, кто нибудь пользовался постманом для отправки запросов на сторонние апи? нихуя не получается
sql в программе или методы у объекта дергать.
Любой MVC фреймворк даст охеренный буст производительности кодера, т.к. там по сути готовое веб приложение, только бизнес логику добавить.
>бизнес логику
Что за дегенеративное название, что это значит в двух словах?
По мне так MVC это деградация, куча папок и файлов с аутистскими названиями и стопицот тысяч подключений их друг в друге
>По мне так MVC это деградация, куча папок и файлов с аутистскими названиями и стопицот тысяч подключений их друг в друге
Гораздо лучше идти по пути "чистого кода", верно?
Один файл на всё и сотни функций. А лучше просто лапшу написать.
>бизнес логику
>Что за дегенеративное название, что это значит в двух словах?
Гуглить не пробовал? Общеизвестный термин
Попробуй написать что-нибудь сложнее гостевой книги. Тогда поймёшь, зачем Mvc нужен.
Я всё больше перестаю доверять гуглению, весь поиск стал засран купленными на биржах текста статейниками, а объяснять программирование пытаются дегенера самоучки, которые сами ничего не зная пытаются учить других, по этому лучше спроситть у анона в 2 словах, чтобы не переваривать всё это дерьмо и лишнюю информацию часами ради ответа в 2 слова
По твоему MVC удобно, красиво и адекватно разделяет все эти сотни функций по назначанию? Сколько не начинал смотреть видео по MVC на ютубе, каждый раз начинаются рвотные рефлексы, или же не один ютубер не в состоянии нормально объяснять MVC, потому что сам понимает его только на 10%
>>630341
Это понятно, но я и не собирался писать портал, мне больше для модулей и фитч для сайтов, по этому и хочу какой-то хз что это фреймворк или библиотеку, где самые топовые функции уже собраны в кучу, как это сделано в JQ для JS
Да, другому в своё время не научили, а учить сейчас чтобы начать читать оригинальные источники, уйдёт не 1 год
В этом твоя проблема. На ру сегменте ютуба нет годного контента.
Процессы в фирме, которые происходят независимо то того, что у тебя в коде написано.
Заходишь в интернет магазин, заказываешь дилдак, тебе подтверждают заказ, оплачиваешь, отправляют.
Это же ты мог бы сделать без интернета - по телефону. Это и есть бизнес логика.
Или русичи неправильно перевели, или это название реально не подходит, адекватного человека просто путает
функции, классы, переменные, методы, рекурсии, циклы, массивы, операторы и тут на тебе, высрался бизнес
Думал, для кого мы код пишем? Для бизнеса. Описываем бизнес процессы с помощью кода и таким образом автоматизируем
Интересно что думают "прогеры", которые пишут код для анального контроля за всеми жителями своей страны, они понимают что они роют могилу сами для себя, хоронят себя же и своих же родтсвенников и будущих детей за тысячу гривен кода сейчас
Нет, но мне хватает мозгов не копать могилу самому себе
Эх, без котов шапка какая-то бездушная
Бери симфони и строй из компонентов что хочешь
Он утонул вместе с предыдущим тредом
Хочу фрилансить.
И как вообще лучше смотреть такие видео, делаю это с телевизора лёжа и придя в диван, сдаётся мне это очень ненадёжный вариант
В ларакастах есть серия видео, где джефри с нуля пишет простенький mvc фреймворк с пояснениями
Смотреть надо сидя за пекой, а не лежа на диване. Это тебе не развлекательный контент - тут думать надо и код писать следом
Тут больше суть в разделении логики на слои: представление, контроллеры, модели. Разделение файлов по папкам лишь следствие подобной архитектуры
>1 большой код просто подгружающийся из разных файлов, так?
Да, если посмотреть с высока. Это разделение нужно в первую очередь человеку. Машине можно и байт код скормить
А это разделение никак же не влияет на скорость работы? Просто один огромный код делится на куски, но всё так же работает в 1 момент? Наверно даже на подгрузку файлов уходит время и работает это на доли секунд медленнее
>ларакастах
>джефри
Мне кажется если человек умел бы в инглиш, он бы тут не сидел и не задавал такие вопросы, нужен русскоязычный контент
> Это тебе не развлекательный контент
Вот и мне так показалось, хотя может зависит от учителя
Влияние этого разделения на производительность ничтожно мало.
В беке наиболее узкое место это io (http, sql) - их и оптимизируют в первую очередь. До самой пыхи редко доходят.
>нужен русскоязычный контент
Нет такого. Во время своего вката долго искал, так и не нашел.
Быстрее выучишь инглиш (либо с переводчиком сидеть), чем появятся годные материалы по обучению пыхе на русском.
> > Это тебе не развлекательный контент
>Вот и мне так показалось, хотя может зависит от учителя
Максимум, что может сделать учитель - грамотно подать материал. Заинтересовывать вас он не будет. Сами должны себя мотивировать на изучение.
Блять как же у меня сгорела жопа вот с этого пидораса https://www.youtube.com/playlist?list=PLVfMKQXDAhGWCBTca7m-snWrZZkjX2jGB
Это просто ад нахуй как он объясняет, а что русня? А они блять лайки ему ставят и говорят что он лучший учитель что они видели, хуйло которое мычит и не может объяснить свои действия, жопа сгорела так что зарегистрировался и проставил вручную дизы на все 40 уроков по php, ебучая мразь, вот после таких учителей человек уже и не может понять язык и начинает путаться и бояться его
По сути получается все эти файлы можно собрать в 1 и всё будет работать ровно так же? Ведь это и происходит постоянно, объединение кусков кода в 1 сразу из всех папок и файлов?
Эх, вот в скриптах то было всё!
Спасибо большое за ответ.
Сейчас парсингом морочусь, юзаю либу для парсинга html. Но все равно , ножно рекурсивно побегать по дереву html, и я понимаю что я хлебушек.
Есть какой то задачник по подобного рода задачам с ответами желательно, что бы просто решать всякие задачи на циклы, рекурсию и прочую дребедень.
Знаю кодеварс, но там если затупил - ебись конем. Пока не решил задачу - нихуя подсказок нет.
Ладно, ладно, все, пойду смотреть Дмитрия Петрова - лучший переводчик Руси с английского и на английский, работал переводчиком с Горбачевым, Ельциным с самим тем, кого нельзя называть.
Ты вот такой умный, а как смотреть ютуб на другиз языках - если ты их не знаешь? Учить новый зяык это та ещё ебля и займёт не 1 год, а научиться в похапе хочется уже сейчас.
А это плохо, программист без английского - это писос, сложность в разы возрастает, это дефицит нормальной информации, живешь в вакууме, гроб, гроб, кладбище, пидор.
> жопа сгорела так что зарегистрировался
Я думал только у меня аккаунта нет... Но может быть теперь я один.
Тебя зря волнует скорость того, как работает 1 файл на 200к строк или 2000 файлов по 100 строк условно. Люди делают так, как удобно им. Вся пляска вокруг качества кода для того, чтобы избегать энтропии так долго, как только можешь. Компу реально похуй, че ты ему отдашь, он сожрет все. А вот человеку - не похуй. Стараясь сделать код гибче мы выигрываем в скорости внесения изменений, дополнений, да даже баг фиксов, вообще всего, что с разработкой связано.
Относительно блогеров на русском так то есть очевидный вариант, который нужно посмотреть - Елисеев. Если ты и дальше не будешь понимать в чем прикол - ну значит у тебя еще мышление не готово для этого.
>Если ты и дальше не будешь понимать в чем прикол - ну значит у тебя еще мышление не готово для этого
Я бы сказал мне больше не нравится то какой подход для этго выбрали, просто уродский код с какими-то пространсвами имён, уродские обратные слеши которые у нормального человека вызывают шок из-за обратного написания, кучей классов которые начинают наследовать друг-друга из-за этого, кучи контроллеров/подконтроллеров, экшенов/хуекшенов и ещё кучи всего, неудели мозга всех программистов не хватило на более приятный и адекватный вариант скрещения всего этого говна
>>630860
После коронавируса перейдут все на русский, осталось подождать
> После коронавируса перейдут все на русский, осталось подождать
Так у нас тоже вирус есть. Только в РФ всем на него плевать, что позволит ему распространиться чуть лучше и убить 2% заболевших, или сколько там. Надеюсь он мутирует и повысит КПД
Есть субтитры. Читать на инглише проще, чем слушать.
Не можешь на ходу читать и переводить, останавливаешь видео и забиваешь в гуглпереводчик
Поддвачну Елисеева. Довольно подробно расписывает все свои действия, перед этим дает теоретическую базу того, что будем делать и изучать. Единственный минус - очень долгие видео. Смотреть нужно с ускорением + паралельно код писать.
Без наследования, пространств имен, кучи файлов и папок весь код лежил бы в одном файле в перемешанной куче (10к+ строк), разобраться в которой не сможет даже аллах.
Ты не поймешь, где у тебя шаблон, где бизнес логика, где общение в базой, где общение с внешними апи.
Примерно такой код в исходниках битрикса, за что его и чмырят.
Нахуя ютуб нужен? Ты совсем хлебец?
ютуб нужен онли для того что бы обьяснили нубу что такое mvc, зачем нужен роутер и контроллеры. И все это для того что бы у начинающего был костяк, на который он сможет навешивать свой код.
Дальше - статьи, документация, чужой код.
Да он ебантяй. Уже второй тред сред, как испоганили разработку своими классами и папками и мвц. Как было лампово писать скриптики на 100 строк.
И всё надеется найти что-то в ру сегменте ютуба...
>>Я бы сказал мне больше не нравится то какой подход для этго выбрали
Ты просто нихуя больше чем хелловорд не писал.
До меня недавно снизошло откровение и я понял зачем нужны "практически" абстрактные классы к примеру. И ты до этого дойдешь, с опытом.
>>Да он ебантяй
Думаю что его оппоненты такие же. Потому что как то тупо обсуждать такую ернуду. Не нравится ООП - вперед к функциональщине. Там понравится.
Нормальные такие грабли и подводный камень значит битрикс навернул, но всё равно уверен могли бы придумать лучше, чем то что сейчас
>>630917
Как минимум лень, да и читать сейчас - это засорять мозг, хотя увидев вот это https://github.com/codedokode/pasta от прошлого опа, я был удивлён и мне даже стало интересно начать читать, наверно не стоит вас мучить вопросами пока не дочитаю всё до конца
Только из php треда стоит выйти
>как испоганили разработку своими классами и папками и мвц. Как было лампово писать скриптики на 100 строк
Идеально описал то что нужно, не смог бы сказать лучше
Что лучше то?
До этого было структурное программирование (отказ от goto).
На его основе процедурное.
На основе процедурного строятся (и частично переплетаются друг с другом) функциональное и ооп.
Больше ничего не придумали вряд ли придумают в ближайшее время
Да там ещё хуже, раз красной точки нет. Власти скрывают, либо всем ещё больше похуй на болезнь.
Прогрес ушел далеко. твои 100 строк уже никому не нужны.
Нужен круд с админкой и фоновыми задачами, а еще чтобы интегрировался с несколькими внешними апи. Ну и апи для мобильного приложения и веба.
Кстати, а в вордпресс и дле тоже используется mvc подход?
Ведь в эти минуты вы могли чето полезное сделать/подумать.
Банально, но на самом деле пипец какая важная вещь. Понмаить на что стоит тратить врремя/мысли а на что нет.
Для этого и создал тред, чтобы доказать правильный путь оступившимся после беспощадного русского ютуба.
Если ты не понмаешь зачем MVC - то ты в принципе не потянешь, и на тебя нет смысла тратить время. Мой младший брат, пару дней поковыряв пхп на нулевом уровне - за час понял зачем нужно MVC.
Не всем быть сверхукровоином света как твой брат от чистокровного укрохряка с чупчиком на голове с враждённым геном служения и писания говнокода за хрывны в копеечном эквиваленте
Тут никого не осталось из вкатывальщиков 2+ давности?
> Как тред умудрился дегроднуть?
Возможно это всё из-за меня. Я пришёл полгода назад в более менее адекватный фронтенд тред, он скурвился за месяц-два, сейчас там просто пиздос творится, потом я пришёл в жс тред, та же история, а в итоге я дошёл сюда, ведь в моем городе фуллстаки/бэкендеры нужны, а остальных почти всегда опытных ищут и видимо угробил этот тред. Одно могу сказать точно - мвп тред был ебанутым, я не при чём.
Ебу дал? Я русский, в Сочи живу.
>Тут никого не осталось из вкатывальщиков 2+ давности?
Ну я например сижу тут с 2к17. Успел сделать студентов, файлообменник. Сейчас пилю тестахаб на ларавеле. Вообще есть работа не связанная с кодингом, айти и т.д., а то если бы я дома хикковал и фулл тайм это дело пердолил, то наверное бы уже смог вкатиться.
Просто вкатыш. От меня никакой шизы не исходит, но где я, там шиза появляется. А ещё меня битрикс контора игнорирует и надо бы им написать, а то я настроился к ним идти.
>не стремно тратить минуты свеой жизни на "доказывание чего либо"
Не потрачу здесь, потрачу где-то еще. Это всяко интереснее унылых тасок с прода по ковырянию в очке говнокоде
>сижу тут с 2к17
Какой-то супервялый вкат. Ну максимум год это должно занимать от хелоуворлда до работы стажером/джуном.
Так мне не надо. Просто время убиваю с относительной пользой, не в игры же играть.
В чем польза собственно?
Толку 0. Заработанных денег 0. Переката в кодинг нет.
Рили лучше б в игрули играл.
>Рили лучше б в игрули играл.
В чем польза собственно?
Толку 0. Заработанных денег 0. Переката в игрульки нет.
Рили лучше б в кодинг кодил.
Для удовольствия же, это иногда даже лучше чем порно
Как выбрать все между hash: '2', data:function(){return
и
?
preg_match("@hash: '2', data:function(){return (.*?)}});</script><script aria-hidden=@u", $info, $out);
$addarray['coordX'] = ''.$pvz_list_data['pvz'][$i]['coordX'];
$addarray['coordY'] = ''.$pvz_list_data['pvz'][$i]['coordY'];
проблема заключается в том что когда я ввожу только дс1 или дс2 он мне выбрасывает Notice: Undefined index: coordX и Undefined index: coordY.
Смотрю заново массив что прилетает - там все есть. и индексы необходимые и у них есть нужные числа
С другими городами все норм работает, эти индексы он без проблем тянет, и они такие же непустые. в чем может быть проблема?
$a=1;
echo a;
, а вот хуй.
Перл? Пхп из него много содрал.
Дай контакты, убежу его переписать на функциях
"Я могу добавить функционал текущей задачи на йи за 20 часов, следующей за 30, третьей за 50. Или переписать проект за 50 часов и сделать все три задачи за 10 часов каждую."
Проблема в том что со стороны заказчика, новый функционал нужен сейчас, а НУЖНО ПЕРЕПИСАТЬ наступает когда говнокод его проекта никто не хочет трогать даже одиннадцатифутовой палкой.
JavaScript
Дропнуть заказчика
Где можно ещё достать такие протейшие готовые фреймворки для понимая скруктурирования и деления файлов и классов? Таких чтобы были написаны по минимуму и максимально понятны?
Это новый мем какой-то? Напиши что тебе непонятно один раз и мы всем тредом тебе ответим в надежде что ты перестанешь срать про свой мвс в пхп или хотя бы сменишь тему на поворот красно-чёрного дерева.
Я не могу понять как правильно разделять классы, что помещать и писать в модал, что в контрол, а что в вьюв, и что откуда подключать и что где нужно писать чтобы было правильно, пример что в контрол ненужно писать рендер страницы, это делают файлы из вьюв, хз как это называется, структура фрейворка по вмс чтоли
По этому решил просто найти самый простой вариант и задрачить его до строчки пока не пойму, пример выше хороший? И можно вообще его всерьёз использовать для своего сайта или он как решето? Плюс хотелось бы посмотреть на другие реализации сайтов простейшей направленности, типа блог/киносайт/инфосайт
Значит тебе еще рано сейчас. Штулируй duolingo хотя бы весь курс. Читай с переводом только незнакомых слов, даже если это будет долго.
>Какие ещё есть и можно примеры на них?
Если решил угореть по фп, то пыха для этого не подходит.
Хочешь кушать процедурщину и лапшу - бери любую цмс битрикс, там нет ооп
>фп
Что это?
Хочешь сказать все фрейворки собраны на ООП? Дядя из видео сказал что в основном, то есть есть и другие, вот и хочу узнать как она выглядят
https://t(точка)me/anonaprphp
Читать надо нормальные источники, а не говно с ютуба смотреть.
https://phptherightway.com/ - ответ на 99% вопросов про то как писать
жопаузкий
Разработка это вам не курорт. Сидим за пекой, выжигаем глаза, сажаем шею и спину, зарабатываем геморой
По этому можно учить лёжа на диване пока украинская похапе макака тебе всё уже расжевала и объясняет с экрана на пальцах
Меня недавно кент один ппопросил помочь в его цмс - редкая, даже не буду называть, ее один человек пилит.
Я вам скажу это лютый пиздос. Как я понял все барахло, классы%%их там нет кстати вроде, функци везед%, хтмл, запросы - все это в одном файле. Это полный пиздец если честно.
Бампаю свой вопрос.
Сейчас в треде какой то унылый пиздец творится.
Давайте всетаки ближе к прогингу. Кто какие ресурсы сзадачками знает?
По sql мне в свое время очень sql-tutorial помог. Задачник там отличный.
В ассоциативном массиве обязательно задавать значение стрелочкой => ? У нас это делалось простым двоеточием, здесь есть альтертивный синтаксис?
При вызове метода у объекта класса он так же вызывается стрелочкой -> , можно это делать как-то тоже альтернативным способом? У нас это делается просто точкой
Ещё мне не нравилось что конкатенация идёт точкой, в js это был просто + , но вчера понял что это очень даже логично, перечисление параметров идёт через запятую, а их склеивание через точку, тут я согласен с синтаксисом
>Я пришёл в php из js, у меня возникли такие вопросы
А я пришел потыкать пхп палочкой из жс и у меня возникло недоумение, как на этом собачьем языке вообще кто-то программирует. Про обращение к переменным через $ я уже бугуртил выше, но $cars[] = 'Mersedes'; это же тоже пиздец.
Не знаю, всё вполне логично, переменная машина котороая массив равна мерседес, объявление переменных тоже заебись, никаких ебучих варов летем и констанов
А в чем бугурт с $? Мне после питона и джс наоборот это понравилось, сразу видно, что вот тут переменная, не надо всяких варов писать и т.п.
> переменная машина котороая массив равна мерседес,
Сам то понял что написал? Это пуш в конец массива
Ладно, добавить в массив кар значение мерседес и автоматически задать ему максимальный ади+1, что тут непонятного, всё заебись, ты дура
Блять инвалиды не переводите тему, а отвечайте на вопрос, обязательно значения в объекте задавать стрелкой с равно, а вызывать методы стрелкой с дефисом? Может есть альтернативный способ, как с созданием массива, или через аррей или просто через квадратные скобки
>обязательно значения в объекте задавать стрелкой с равно, а вызывать методы стрелкой с дефисом
Ох ты ж блядь, еще и стрелки разные.
Это на объект, а мапа. Объекты у нас по другому делаются. Нет, нельзя, разве что через обычное =, но уже после объявления.
Без -> вызывать в целом нельзя. Можно через квадратные, если запаришься реализовать ArrayAccess. Можешь через рефлексию всякую. Но это легче твою жизнь не сделает, так что ответ - просто нельзя. Для статики если че у нас :: используется, и если я все правильно помню сама эта херота еще с крестов пошла.
Относительно точки - ну не знаю, что там особо логичного ты увидел, но о ней было бы прикольно вспомнить в том контексте, что именно из-за такой конкатенации и обратной совместимости в пхп не уйдут от ->.
За переменные платить надо целый доллар за штуку.
Тогда лучше в питон или жс. Пхп стремится к тому, от чего ты ушел.
В том что вызов тоже через $. Если ты до пыхи писал на чем-то кроме перла, открой учебник в ОП и делай задачки. Только пиши код, а не только читай условия. Баттхерт гарантирован.
Ну смотри, передаём в функцию значения, разделяются они запятой, а склеить их из нескольких значений можно точкой, пример
foo('Файл', "index".".php")
Мне кажется очень даже удачно придумали с точкой
По стрелочкам тогда придётся смериться, просто очень нравилось делать это доеточием и точкой, задаём двоеточием, вызываем точкой
Поебать на чём писали инвалиды повидавшие говноязыки, мы начинаем с js и php и нам создание и вызов переменной через $ нравится, разу видно где идёт работа с переменной, она сразу выделяется в куче писаннины
Понял, принял, тупанул, в следующйи раз пиши капсом, ФП наше всё!
На рутрекере есть некоторые серии, но не все.
Поделитесь кошерным трекером.
Зачем ты этому ебанату вообще отвечаешь? Его вопросы чистой воды троллинг, ну или кристальный идиотизм.
то что ты агресивный петух украинец не означает что все такие
Ишь ты какой!
Господа граждане! Вы же понимаете что симфони бессмысленная штука. Зачем на пхп писать сложно, если его ВСЕГДА берут чтобы было быстро и просто. Если допустимо долго и сложно нужна строготипизированая хуйня с тырпрайз наворотами дотнет например
мимо симфонист не из филармонии
Помню в колледже сделал цикл без выхода. На TASM.
> А в чем бугурт с $?
В слепой печати 300+ символов в минуту, которая идёт по пизде, потому что неудобно до доллара тянуться. Это не значит, что я хочу код писать с большой скоростью - просто я привык печатать не особо уделяя время тому, на какие клавиши я жму - а с долларом и промахнуться можно.
Быстро привыкается. У меня тоже был бугурт по этому поводу первое время, а сейчас уже даже не замечаю. При этом пишу как минимум еще на 2 языках, кроме пхп, постоянно.
С лица воду не пить. Тебе легче было бы, если бы этот РНР учитель был красивым няшкой Чедом?
Что-то типа проработал хоть день в госучреждении пхп джуном - всё, никуда больше не возьмут, зашкварен. перейти на чистый фронт с модным фреймворком и так далее.
А почему так? inb4 научат плохому - вроде как можно постепенно полировать знания, учиться хорошему
Можно, просто есть крайние случаи, типа ковырять пару лет вротпресс. Это звоночек. Но все равно можно.
>Уже Весна за окном
Зачем в каждом треде вспоминать это окно? За окном - улица. Нам туда не надо.
Удвою про буст. За 2 дня написал тестовое на пару сущностей, с админкой и АПИ. Ещё и тестами это АПИ покрыл.
И это при том, что я фреймворк только изучаю и много читал в процессе.
На чистом пыхе ебался бы недели полторы.
> зашкварен. перейти
Я ж знал, что что-то не то с текстом произошло. Тупо пара предложений куда-то исчезло.
Если человек трудился в более худших условиях и потом осилил новую профессию/навык/язык и т.д., то это лишь ему плюс в глазах работодателя - что он превозмог и покинул болотце, по крайней мере, у меня так в инженерной среде заводчан.
>его ВСЕГДА берут чтобы было быстро и просто
Когда надо просто, берут Laravel или Yii2 на худой конец. Symfony - это когда хочется/требуется тырпрайз, но денег нету на джавистов. Ну и по личному опыту могу сказать, что на симфони писать в целом в разы приятнее, чем на Spring.
Что на ларке, что на ии сейчас может каждый себя уважающий сеньор устроить тырпрайз. И даже без низ. Даже скорее без них, потому что ему так будет удобнее.
Вообщ глядя на всю эту пляску вокруг парочки фреймврков и смешно и грустно становится. Все совсем не так в итоге. Дохуя опытные пилят все мимо всей этой параши. Неопытные же пилят в мусорную корзину походу.
Вообще нифига не понял этот Ларавел. Быстрее, чем на Yii2, по времени разработки все равно не выходит, местами все какое-то больно мудреное, хотя по идее должно наоборот облегчать и ускорять разработку. В итоге для личных проектов, когда надо что-то быстро накидать и запустить, по-прежнему использую Yii2, а на работе Симфони.
На чем угодно можно устроить тырпрайз, даже без всего, но зачем это делать, когда есть готовое.
Это хороший выбор, но ты при этом должен уметь все, что слим тебе не дает. А что, что дает - должен полностью понимать.
Начал смотреть по нему уроки для осиляния mvc, так как местные омёбы так и не смогли мне ничего посоветовать, двач стал тупым таким же как и я, стадо пидорасов неспособные меня ничеу научить
Чтобы объяснять материал нужно иметь опыт объяснения или педагогическую жилку. Часто бывает так что способные схватывают материал без труда, но не могут передать навык так как они его сразу в свернутой форме усваивают, без периода обучения. Вот что не характерно для способных - это потребность, чтобы кто-то им этот материал объяснял.
Ну, я та же самая амеба, которая советовала тебе посмотреть Елисеева. Чувак неспешно, но по делу, показывает как от говна к нормальному коду прийти. Получается ты мой совет случать не стал. Ну зря че уж, там очень поднобно человек объясняет. Ну а а слим был бы следствием вообще после усвоенного материала.
Не, его видео по MVC я посмотрел, нормально, но очень долго, пока отложил его на потом
>стадо пидорасов неспособные меня ничеу научить
Мог бы хотя бы не называть пидорасами тех, кто на тебя и твои проблемы внимание обратил. Так то они тебе ничего не должны.
Им я сразу сказал спасибо, а пидорасы это те которые начали мне втирать что я даун что не изучаю другие языки и что я без них никто и прочую хуйню
>так как местные омёбы так и не смогли мне ничего посоветовать
Уебок, блядь. Ссылку кидал на ларакасты, где препод с нуля пишет мвс фреймворк.
Хули еще тебе советовать, если ты ленивое хуйло?
>ларакасты, где препод с нуля пишет мвс фреймворк
Шо?
Ларакасты это обучалка по ларавель, как бы. Причём тут написание фреймворка?
>мне нужен php чтобы писать скрипты для себя
Нахуй ты сюда пришел тогда и спрашиваешь за мвц?
Сиди да пиши на чистом php без фреймов и библиотек.
Хуле тебе еще надо?
Объект - это набор данных (полей) и методов (функций) для работы с ними. Класс - это описание объекта: какие поля, какие методы в нем есть. Несколько объектов одного класса имеют одинаковый набор полей, но в них могут быть записаны разные данные. Каждый объект относится к какому-то одному классу. В ОП-посте есть учебник, а там есть глава про ООП.
>>630579
MVC - это архитектура, в которой код разнесен в модели, вью и контроллеры, у которых свои роли, как описано в статьях и учебниках. Первоначально придумывалась для интерактивных программ с GUI, позже была адаптирована для серверной части веб-приложений. Я уже давал в прошлом треде ссылку на урок но видимо это платиновый вопрос какой-то: https://github.com/codedokode/pasta/blob/master/arch/mvc.md
Поиск и редактирование тут вообще не при чем. Смысл в том, что например код в контроллере трудно использовать повторно из другого места программы, а код в модели - можно. Также, вынесенную отдельно бизнес-логику проще тестировать.
Разделение на файлы не имеет отношения к MVC, его делают, когда код становится слишком большим по объему, для удобства.
>>630655
Что тебе мешает измерить? Это зависит от ситуации, от используемых файлов, характеристик компьютера и еще кучи факторов, потому надо мерять. Используй функцию microtime(true) и померяй.
Изучай DOM. DOM - это представление HTML кода в виде дерева из элементов (погугли, что такое дерево как структура данных). Если гуглить, попадается в основном информация по JS, но поддержка DOM есть и в PHP, правда, довольно ограниченная, без функций вроде querySelector. Можно взять задачи на DOM из JS, или взять такие задачи:
- вывести, какие теги и сколько раз встречаются в HTML
- найти все поля <input type="password"> на странице
- найти картинки без атрибута alt
- добавить атрибут alt="Картинка" в те места, где его нет
- найти все абзацы (<p>), в которых нет ни одной картинки, и добавить туда картинку
- заменить теги <i> на <em>
- заменить текст, разделенный <br> на текст, обернутый в абзацы (<p>)
DOM описан в мануале PHP: https://www.php.net/manual/ru/book.dom.php - потребуется понимание ООП, чтобы разобраться.
Советую написать вспомогательные функции: 1) для обхода дерева с вызовом функции на каждом элементе 2) для трансформации дерева, с вызовом функции на каждом элементе, и эта функция решает, как его заменить.
>>630893
Вместо того, чтобы ныть, разберись, зачем эти пространства имен придмали. Твоя проблема в том, что ты не зная основ, берешься сразу за сложное, ничего не понимаешь, и начинаешь ныть. А надо идти потихоньку от простых вещей к сложным. Не понял неймспейсы - потрать время на их изучение, прежде чем двигаться дальше. Не понимаешь ООП - изучи его. И так по каждому пункту. Тебе еще рано изучать фреймворки без базовых знаний.
Надо экранировать спецсимволы вроде скобок. Хотя, этот код лучше разбирать не регулярками.
>>631162
Если пишет ошибку - значит, нужного индекса в массиве нет. Проверяй его наличие через array_key_exists() или хотя бы var_dump().
>>631945
Это делается директивой DocumentRoot. Если открыть ее описание, то видно, где ее можно размещать: https://httpd.apache.org/docs/2.4/mod/core.html
> Context:\tserver config
(щелкнув по ссылке)
> server config
> This means that the directive may be used in the server configuration files (e.g., httpd.conf), but not within any <VirtualHost> or <Directory> containers. It is not allowed in .htaccess files at all.
То есть нужно править конфиг сервера, на хостинге это делается как-то через панель управления. Если ты поднял Апач у себя, то просто редактируется файл в /etc/apache2/ (иногда на каждый хост делается отдельный файл) из-под админа.
>>632654
Расширить фильтр можно, но проще просто называть тред, как обычно, и проблем не будет. Не надо себя вести агрессивно.
https://drive.google.com/file/d/1amAqS96pIkOt6nb1p0yaNcUrpUjYCeu_/view
Я вообще не уверен что это нормально, вакансия зп 18к контент-менеджер, про существования водпресса только слышал, как мне его делать, если сдавать после завтра.
контент менеджер это тот кто и будетнаполнять сайт контентом, а большинство сайтов убраляется вордпрессом, админка водпресса как майкрософт ворд, проста и изящна, что тут сложного, просто залей вордпресс на хостинг и скопипасть новости с красивым оформлением
А где в вакансии собственно говоря нужен php? Для такой работы как в этом тестовом вообще человек даже не нужен, скрипт на селениуме сойдет
>про существования водпресса только слышал
Просто накати и потыкайся - там для домохозяек всё сделано. Разберёшься до послезавтра как нехуй.
> не уверен что это нормально
Я тоже, ведь 18к это больше не всегда, конечно, чем в моем городе начинающий разработчик получать будет, а вроде разработчик поквалифицированнее будет, если я правильно понимаю то, что делает контент-менеджер.
контент менеджер просто копирует и вставляет текст на сайт, наполняет его бесполезным говном о компании
Я на нем написал мвц фреймворк с орм для монги и MySQL, потом почесал репу и взял для проекта ларавель. Не очень понимаю зачем нужен Слим, если ты не апи реализовать пытаешься, это по сути просто роутер и 2 интерфейса, для запроса и ответа, там даже из реализации из коробки нет, нужно ставить отдельно, как и di. По крайней мере в 4 так.
Так и куда тыкать поставил этот сайт в виде темы дальше то что, рубрики абсолютно никак не добавляются, дажу пишут к этой теме нельзя, мне вот что с 0 ваше говно верстать по макеты этому и натягивать за спасибо, ах да сдать надо завтра утром.
Мне сдавать уже прям сейчас нужно, щас попробую посленее кое-что и забью хуй.
Я веб разработчиком меньше заебывался так что ты тут не пизди.
зайти на ютуб, там тонный видео по вордпресс, это просто готовй конструктор, установил, надел любой понравившийся дизайн кнопкой установить и пошёл наполнять, тебе же просто контент сказали добавить и оформление текста сделать
мне сказали перенести готовый сайт на вордпресс и потом хостинг попутно внедрсяя всякие правки
Видимо вордпресс для сверхразумов веернусь на галеру питонистом.
Ты наверно не понял задание, контент менеджер наполнят сайт контентом, а не переносит чужие сайты на хостинг
Видимо они не поняли что конетнт-менеджер делает я выше скидывал скрин тз.
>Не очень понимаю зачем нужен Слим
Чтоб собрать свой фреймворк с моделями и сервис-провайдерами.
Ты хотел сказать ставишь твиг, орм, либу для авторизации, di, регистрируешь там сервисы.
Или просто качаешь ларавель
Сука блядь, курс где он пишет мвц в свободном доступе, качай прямо с ларакастов.
Неужели вы такие дегенераты?
Сегодняшнее тестовое - тест на 10 минут.
Как так? Почему тестовые такие разные?
Да мне нафиг не нужен твой курс про мвц. Я тот анон, который ищет трекер с ларакастами. То что бесплатные курсы можно смотреть БЕСПЛАТНО я знаю.
Чего ты такой агрессивный? Лучше бы помог с поиском трекера.
Может кто-нибудь(что нибудь) конструктивной мотивации подкинуть, как начать кодить и где тот самый мой катализатор работоспособности?!
> конструктивной мотивации подкинуть, как начать кодить
Кодь. Это в твоих интересах, если ты хочешь работать кодером. Если не хочешь - не кодь.
> где тот самый мой катализатор работоспособности?!
Я не брал.
Сори, нервничаю.
Насчет трекера по ларакастам - сам в свое время искал.
Что-то есть на рутрекере, что-то на ннм.
Самая база, которая нужна тебе как ремесленнику ларавела доступна бесплатно ларакаст и на трекерах.
Остальное, то что платное:
Часть видосов - какие-то платные фичи ларавельской экосистемы (тот же фордж).
Часть видосов - ковыряние кишок фреймворка, это ты и сам можешь сделать при желании.
Вкатиться в лару (вплоть до работы джуном) можно вполне без платного контента я так и делал
Если кровь из носа нужен платный контент - платишь разово 15 бачей и выкачиваешь себе в облако весь ларакаст с офф сайта.
Еще можно посмотреть на курсхантерс.
Помимо этого у елисеева есть мастер класс по ларавелу рутрекер
Не кодь. Эта работа из тебя всю душу высосет. Лучше на завод с мужиками
Тебе еще в прошлом треде кидали
30-40. Там в конце пошла ненужная херня про Ada и прочий легаси.
Я вообще сейчас беру учебники "брутфорсом" - прочёл учебник, понял не до конца, читаю другой учебник, понял ещё больше и т.д..
Вообще о таком не слышал. Даже если и есть, то это уровня мануалов по работе с вордом.
>дегенераты
Вот, кстати, почему англоговорящие в ИТ не такие токсичные уебаны. На этих ларакастах вполне мирные ребята поясняют по-простому и без выебонов в сторону слушателя. Почему вы этому у них не учитесь?
Ну и да - это не ларакаст.
Спасибо.
Я уже полгода пилю проекта на Ларавеле, с базой проблем нет, как мне видится.
Но приятно посмотреть как пишет Джефри, некоторые вещи в голове встают на свои места, код становится красивее и т.д.
Эх, видимо придется заплатить 15 долларов.
А ну пакаш чё за джефри, покаш своего мальчика, тоже хочу посмотреть на красивый код
Вот тут смотри https://laracasts.com/
Курсы вроде https://laracasts.com/series/laravel-6-from-scratch бесплатные.
А такое https://laracasts.com/series/solid-principles-in-php платно, но можно по названию на Рутрекере поискать.
Аноны, есть же на ютубе озвучатели, дайте им эти курсы, пусть договорится с автором и переведёт, и сам заработает и нам хорошо
Ты все равно посмотри, там все понятно.
Да потому что в постсовке все уже хотят вайти, даже собаки со двора.
Реально заинтересованных в кодинге людей практически нет.
За красивым кодом нужно идти к джавистам. Роберт Мартин, Фаулер, банда четырех - их книги стоит изучать, чтобы писать тырпрайзный код
Двачую твои слова, брат Паджит! Учись у жавистов станешь как великий сир Нагур Бабу!
1. Какой лвл?
2. Сколько изучали для того, чтобы вкатиться?
3. Что ещё кроме php изучили?
4. Сколько платят? (можете диапазон писать, кто не хочет писать цифры)
Буду рад, если отпишитесь, друзья!
Не спорю.
Но тут двух зайцев убиваешь. И инстремент (фреймворк) учишь и полезные практики перенимаешь.
Никто не мешает параллельно читать и книги про паттерны.
Кроме пользы никакого вреда!
>мне очень-очень интересно
Ну ок.
1. Какой лвл?
24
>2. Сколько изучали для того, чтобы вкатиться?
3 года
>3. Что ещё кроме php изучили?
Программирование как отдельную дисциплину, базы данных, вёрстку, джавускрипт, паттерны, фреймворки 2 штуки, гитхаб, линукс, хттп-протокол и вообще как веб работает. Немного вордпресс и опенкарт ковырял. Сделал почти все задачи из ОПпоста.
>Сколько платят? (можете диапазон писать, кто не хочет писать цифры)
25-35
У меня лишь пару идиотских вопросов, но я был бы признателен, если бы кто-нибудь оставил комментарии по ним.
#1 В каком формате мы получаем input от пользователей скрипта? В каком виде поступает raw data, из которой нужно построить статистику?
#2 По поводу свойств сотрудника. ОП говорит: "У Сотрудника есть ранг, базовая ставка, профессия, является ли боссом. Потребление кофе или зарплата не являются свойствами так как они вычисляются из других свойств и хранить их не надо."
Есть базовая ставка (свойство), из которой высчитываем реальную зарплату. Однако у каждого специалиста есть базовый уровень потребления кофе, из которого выявляется фактический объем выпитого вещества. Почему базовая зарплата - это удачный кандидат для свойства, а базовый уровень потребления кофе - нет? Стоит ли указывать принадлежность к отделу как свойство?
>1. Какой лвл?
28
>2. Сколько изучали для того, чтобы вкатиться?
Около года
>3. Что ещё кроме php изучили?
Базовая верстка (барбершоп), python django (не пригодился), php laravel
>4. Сколько платят?
Начинал с 30к, сейчас апплаюсь на 100-120к
1. 14
2. 1 час на утубе для каждого языка
3. все что есть на утубе за 1 час
4. 300к я фулл стак синиор
Он 300кккк\наносек школьников пересчитать хочет.
Все кто искал давно вкатились и ебашут.
А ленивые аноны из треда так и продолжают третий год колупать круд
Для мотивации, имхо. Второй месяц в треде, на вкатившихся без вуза смотрю как на полубогов, а на сеньоров - как на богов. Процесс хоть идет по плану и вполне успешен для меня как дна, но все равно факт получения желаемой работы кажется чем-то сказочным и несбыточным. А когда посмотришь на других анонов, что они сидели-пердели над пыхой и у них все получилось - то становится легче.
мимо
Как правуильно - поднять ошибку из базы до контроллера, и там уже вызывать класс логгера, или на месте генерации исключения вызывать класс логгера и логгировать данные?
По идее логгинг - это что то типа представления, поэтому из контроллера его нужно вызывать, не?
хе-хе
1. 33 лвл
2. уже три года копротивляюсь.
3. nodejs, питон уровня синтаксиса, js, react уровня простых компонентов.
Работаю в гос.шараге - в принципе в контексте специальности, должность программист. sql + пхп, даже написал кое че для шараги. 45 зп. Вышка профильная давно забытый бэйсик и делфи.
Итог - я у мамы хобби-программист. То пишу, то в носу ковыяюсь, не умею в дисциплину, не умею в ответственность.
Деньги этим зарабатывать категорически не умею. Один раз только какой то элементарный калькулятор на JS накатал, за пять рублей, потому что случайно упала в руки задача.
Короче получилось как я когда то и опасался - из за личных качеств я 90% времени проебывался.
Личные качества > навык или знания.
>Если ты смог генерировать комбинации кубиков, то ты можешь попробовать теперь сделать функцию-генератор, >выдающую комбинации кубиков, а затем и купюр, с помощью yield. Погугли "генераторы в PHP".
Погуглил, разобрался, но ничего не выходит https://ideone.com/drWFhh
https://ideone.com/29reT5
Этот yield полезен только в случаях, когда у тебя огромные объёмы данных - он выдаёт эти данные порциями на обработку, не загружая полностью. Тем самым экономится оперативка.
>Процесс хоть идет по плану и вполне успешен для меня
>факт получения желаемой работы кажется чем-то сказочным и несбыточным
И где тут успех?
Критерий успеха - устроиться разрабом и получить первую зп за код
Чего ему умирать?
Есть регулярные релизы языка и фреймворков. Есть задачи, которые язык решает. Народ кодит, разарбы релизят, бизнес платит деньги.
Пиздец, как школьники. Про "виновс маст дай" еще напишите.
На самом деле тема сложная и не однозначная. Если ты залоггируешь исключение где-то посреди кода, то где гарантия что никто больше его не залоггирует опять?
Обычно есть глобальный хэндлер исключений, который ловит вообще все. Но это противоречит концепции исключений как продвинутого goto.
В идеале исключение означает что все, пиздарики, дальше работать не можем. Его ловит только глобальный хэндлер, а пользователю показываем какую-нить красивую страницу.
А если произошла именно "ошибка", то мы эту ошибку уже тащим до контроллера, или где там её нужно обработать.
Но то в идеале. А на деле и очень опытные люди ходят кругами в этих goto эксепшенах. Доебланились до того, что в нормальных языках вообще понятие исключения выпиливают.
Я последний человек в мире математики был в школе, а ее закончил давно и многое забыл, в логике тоже не шарю, но осваиваю уроки из шапки и попутно книги читаю, вроде есть понимание процессов. Я на это не рассчитывал.
>>635895
Сложно ли так осваивать? Я был далеко не последним человеком в математике (одним из первых), но в обычной школе, не физ мат? Большие ли объемы информации для изучения с нуля? Сколько тратишь в день по времени?
>Сложно ли так осваивать?
Не сильно просто, информация новая, мозгу приходится напрягаться, иногда что-то конспектирую даже и блок-схемы рисую, начал с книги по Компутер Саенс (Теоретический минимум по Computer Science. Все что нужно программисту и разработчику), чтобы получить представления про логику и алгоритмы, занимаюсь как получится, иногда по 4 часа, иногда на час хватает, от настроения зависит.
>но в обычной школе, не физ мат
После 9-го класса потерялся в математике, решили класс сделать математическим, а я гуманитарий. Логарифмы, интегралы - их смысл не понимал вообще, кое-как по образцу делал примеры, но с переменным успехом.
Математика веб-макаке не нужна.
Логика нужна уровня И и ИЛИ.
Не знаю, что там можно годами осваивать
>какой язык самый легкий и какой самый сложный?
Самые легкие для вката сейчас это php и js по совокупности критериев (кол-во работы, кривая сложности)
>Те же джава и php сравнятся с sql?
Не сравнятся. Это разные языки.
Только рассматривать php в отрыве от sql нет смысла, т.к. на работе они идут в паре.
>Что лучше начать изучать, если прицел на работу с карьерным ростом в будущем?
То на что ты сможешь найти работу в своем городе. Зачастую это пыха. Дальше возможен перекат на другой стек при желании.
Карьерный рост - опыт+портфолио/резюме, релокейт в дс либо удаленка на дс/апворк
>Есть ли какая -то градация: этот язык наиболее легок для освоения обладателям аналитического мышления, этот - системного и т д?
Си-подобные языки во многом похожи. Больше отличается подход в разработке, инструментарий, экосистема.
Конкретно такой градации нет.
Что сложного в повторении действий/переборе элементов?
Ты эти же задачи делаешь в реале. Например чистишь картошку/моешь посуду.
for (текущая_картошка; текущая_картошка не последняя_картошка; следующая_картошка) {
почистить(текущая_картошка)
}
на что можно рассчитывать к 4 году работы при хорошем уровне старания и способностях?
Вот есть контроллер ресурса с крудом. Есть админка с крудом по той же сущности и публичная часть со списком. Всё соотносится с этим контроллером ресурса и фактически реализует его функционал на своих страницах. Как это всё готовить?
Создавать отдельно контроллер админки, и игнорировать ресурсный, или обойтись только маршрутизацией к ресурсу? С публичным списком я тоже не понял - через маршруты методы ресурса ставить или не трогать и просто сделать контроллер страницы?
В общем не понимаю я как пользоваться этими контроллерами ресурсов. Пока что у меня есть подозрение, что это 2 разные пути реализации одного и того же функционала. Если так, то какой и когда предпочтителней?
Не дрочись хуитой. По своему, и уверен опыту 99% вкатывающихся, скажу что основное что потребует твоих усилий это не божески, как сложно то, не могу понять, а бля, как бы не забить хуй на работу через 5 минут после ее начала, и не начать скроллить сосач/вк/чеугодно другое. Сконцентрируйся в первую очередь на этом.
Сначала ничего не понял, а потом вроде понял. У тебя "публичное" приложение и админка это два разных приложения, ресурсы для них тоже лучше сделать разные, ибо это сейчас там 1 в 1 поля сходятся, а потом пиздос начнется. Например у тебя есть сущность пост, в публичной части круд этого поста ограничивается например по автору поста, а в админке клиент хочет чтобы мы могли изменять дату создания поста. В итоге тебе в одном контроллере у тебя будет одна форма, в админке другая совершенно.
>Сначала ничего не понял, а потом вроде понял
У меня чаще наоборот - сперва вроде понял, а потом оказывается, что ничего не понял.
>ресурсы для них тоже лучше сделать разные
Понял - буду разделять. Скорее всего из-за этого и непонятки были.
На шестизначные суммы
На эту тему лучше читать книжку дядюшки боба, либо любой другой материал по солид
С ней порядок, только вот я ее редко нагружаю чем-то сложным и поэтому ловлю тупняки периодически, мозг атрофировался, как мышцы, и не может поднять условный килограмм.
Чувак, это нормально. У человека так мозг работает. Если будешь продолжать упарываться в кодирование то со временем с этим станет лучше. Причем, по моим ощущениям, буквально пару недель или месяц и начнешь продуктивно работать. Попробуй кстати пройти вот этот тест: https://eruditor.ru/z/?CRT7 . Он иллюстрирует как раз ту особенность нашего мозга, когда мозг старается из кеша по быстрому найти решение проблемы.
>Попробуй кстати пройти вот этот тест: https://eruditor.ru/z/?CRT7 .
Какие-то задачки для первых классов.
Почему для первых . В наше время дажевыпускники и студенты, а не просто школьники не могут это решить.
>>636297
Делаю простенькую социальную сеть, есть модели User, Friends, Posts, Likes
дело в том, что количество методов у модели User растет очень с добавлением новых сущностей в проект. Все модели так или иначе завязаны на User'а.
Какой шаблон или архитектуру простроения моделей нужно применять в таком случае? Что гуглить на эту тему?
Посмотри на то, как организуют модели(сущности) в симфони.
Там это обычные классы без какой-то логики, кроме геттеров/сеттеров.
Вся логика в сервисах лежит.
Общение с базой в репозитории.
Итого твоя сущность - набор её атрибутов и отношений.
Думаю, с1 можно натянуть точно. Технический шарю, обычный тоже, но был положен болт на сленг, хотя наверстать можно за месяц-два при желании.
Это же золотая жила.
Катись на апворк, там больше нужен инглиш, чем собственно навык разработки.
гугл в помощь
>больше нужен инглиш, чем собственно навык разработки
В смысле попиздеть за жизнь с заказчиком, а не работу сделать?
В смысле выяснить, что ему реально нужно.
Спасибо я в курсе, предположим , что в этой задаче я работаю с огромным количеством данных, я хочу научиться пользоваться yield, и как мне казалось я все понял , но в моей задаче он не работает и я не понимаю почему
Хз, это дно, как по мне, все выпускники сосут лапу за минималку, самые предприимчивые дают занятия с личинками и набивают неплохую клиентскую базу.
Bump определением абстрактного класса Employee.
У меня мало опыта написания скриптов на PHP, поэтому опять прошу помощи и напутствия. Вопросы остались те же, однако основной - #1. С исходными данными какого вида мы работаем в данном случае? Помогите, пожалуйста.
В айти навык инглиша важнее навыка разработки.
Кодинг можно подтянуть даже во время проекта. А вот инглиш нужен здесь и сейчас попиздеть с клиентом и урвать заказ.
>Хз, это дно, как по мне, все выпускники сосут лапу за минималку, самые предприимчивые дают занятия с личинками и набивают неплохую клиентскую базу.
Чё бля? Риииил?
>1. Какой лвл?
31
>2. Сколько изучали для того, чтобы вкатиться?
Учился в вузе.
>3. Что ещё кроме php изучили?
C++, Java, Python (в рамках вузовской программы)
>4. Сколько платят? (можете диапазон писать, кто не хочет писать цифры)
Прогать за деньги начал с 25, щас в среднем получаю 70-100к (фуллтайм, офис, зависит от премий). Планирую перекатываться во что-то другое, где меньше веба (от него уже тошнит), больше статики в языке (динамикодрисня надоела). В качестве вариантов для перекота смотрю на Go, Java, Kotlin.
Перед полями и методами класса нужно ставить PHPDoc-комментарии / ... */ (PHPStorm такое умеет делать автоматически, достаточно ввести / и нажать Enter).
Щас в моде PHP7.4, поэтому не надо проебывать типы везде, где их можно ставить - в данном случае типы у полей класса и типы возвращаемых значений из методов.
Скобки в тернарном операторе не нужны.
Начни с другого конца. Сначала опиши процесс своими словами, без кода вообще.
Типа: сотрудник пьет кофе, ему начисляется зарплата, сотрудник дрочит хуй, ему начисляется зарплата. Определи кто в этом процессе что делает, без свойств и прочей поеботы, а потом записывай что получилось с помощью кода.
>>637096
Правильно пишет. Все функции должны быть типизированны, а комментарии в виде PHPDoc'ов. В скобочки бери только выражения, а не одиночные переменные и используй строгое сравнение. Избавься от этих мерзких сокращений, пиши полное название.
>Щас в моде PHP7.4, поэтому не надо проебывать типы везде, где их можно ставить
Как на яве пишем уже.
Парсер сожрал спецсимволы, но и так все ясно должно быть.
Дык пых это уродливый младший брат своей не менее уродливой старшей сестры джавы.
Добавляю и получаю записи оттуда я по имени - это правильно? Или только по айдишнику доставать надо, а сохранять без указания имени - просто добавляя запись?
Или паттерн этот момент оставляет без внимания?
Такой расклад, может выборка неудачная.
>с доменами не получилось ничего
Поэтому и рано тебе опенсервер. У заказчика апач накроется что делать будешь? Тоже опенсервер ему поставишь на хостинг?
Лучше какой-нибудь Laravel Homestead, опенсервер абсолютно ок штука, но он скорее тестовое окружение для быстрого калякомалякания простых крудов, реальное окружение это все равно линух и скорее всего nginx и какие-нибудь редисы и кроны и все всегда надо кастомизировать до пизды
В определении Репозитория про это ничего не сказано: http://design-pattern.ru/patterns/repository.html
Но твоя проблема в другом. Ты используешь паттерн не потому, что есть реальная потребность в нем, а просто потому, что ты прочел про него и хочется его добавить. И ты просто бессмысленно усложняешь код, используя сложные паттерны вместо более простого кода. В твоем случае для хранения конфига тебе не нужен Репозиторий и не нужны паттеры вообще.
Когда он нужен - описано у Фаулера по ссылке:
> В таких системах может быть полезным добавление ещё одного слоя абстракции поверх слоя распределения данных (Data Mapper), в котором бы был собран код создания запросов. Это становится ещё более важным, когда в области определения множество классов или при сложных, тяжелых запросах. В таких случаях добавление этого уровня особенно помогает сократить дублирование кода запросов.
Репозиторий используется в сложных системах как слой поверх Data Mapper. Задача Data Mapper - сохранять объекты в виде строчек в БД или загружать строчки и представлять их в виде объектов. У него могут быть методы вроде update(), loadEntity() и тд. (описание: http://design-pattern.ru/patterns/data-mapper.html ) Репозиторий же сидит уровнем выше и позволяет делать более сложные операции с данными. Например, в Репозитории могут быть методы вроде findEmployeesByRank, countEmployees, итд. Эти методы внутри будут вызывать какие-то методы Data Mapper.
То есть, задача Репозитория - содержать в себе разные методы для выборки или изменения данных в хранилище, данные в которое передаются через Data Mapper.
В Доктрине есть репозитории, например. И это должна быть очень сложная система, чтобы надо было писать свои Репозитории.
> В каком формате мы получаем input от пользователей скрипта?
Можно просто захардкодить, то есть описать классы, а потом создать объекты и задать им нужные параметры. Но там куча работников, их может быть удобнее описать массивом и затем создавать объекты-работников на основе этого массива:
$employees = [
// count, profession, rank
[3, Employee::JOB_MANAGER, 1],
[5, Employee::JOB_ENGINEER, 2],
...
];
> Однако у каждого специалиста есть базовый уровень потребления кофе, из которого выявляется фактический объем выпитого вещества.
Тут та же система. Храним базовое потребление, а реальное - вычисляем. То есть, храним только минимальный набор исходных данных. Если хранить вычисленные из них данные, то возникает проблема их обновления при изменении исходных, это сильно усложняет код.
> Стоит ли указывать принадлежность к отделу как свойство?
Код, наверно, будет проще без этого. Можно просто в каждом объекте-отделе хранить список работающих там объектов-работников и принадлежность хранить не потребуется. Но ты можешь попробовать и другие варианты.
>>636827
Вот тут вполне нормальный код, только слишком сокращать названия не нужно.
Я сейчас разрабатываю свой первый проект с использованием php. Почти его не учил, если что-то не понимаю гуглю. Я создал на php:
-Комментарии
-Создание страницы для блога
-Добавление в базу - (Блог, студию, платформу и саму игру)
-Беру некоторую информацию с других сайтов, и конечно я пока не знаю быстрой загрузки, поэтому он берёт данные только после загрузки страницы (чтобы сама страница долго не грузилась)
-Выучил ajax за 30 мин
-Вход и регистрация
- Рейтинг
И кучу ещё чего, при этом я прочитал максимум 200 стр.
P.S. Я знаю что это мало, но я считаю что нужно знать только базу, т.к. всё равно ты всё не запомнишь.
Вот скрин из проекта:
Без теории плохо будет. Читать тоже надо.
Что у тебя по архитектуре на проекте, какие паттерны, по солиду что?
Запилить по-быстрому много ума не надо. Как потом это поддерживать и не поехать?
Как-то видел, где тоже один практик свою CMS для магазина делал - код был практически нечитабелен и работать с его CMS мог только он один и никакой другой разработчик. Сейчас сдохло всё, насколько я понял - в одиночку такие вещи никак не вытащишь, а для командной разработки нужно общие понятия знать и применять.
Там всё легко, Я занимаюсь им уже два месяца, успел многое сделать. Нахожу проблемы, уязвимости и т.д. Нашёл хороший фреймворк для MySQL, называется RedBeanPhp, советую всем. На удивлении пишу так чтобы мог понять любой. Проблемы решаю с лёгкостью. Любое что придёт в голову, сделаю. Потом тестирую на работоспособность, конечно проблемы есть, но все решаемые. Я не пишу на CMS, не знаю нужен ли вообще он мне.
Я не хочу похвастаться тем что я не знаю php и при этом пишу на нём. Нет, просто я долго учил js и эти знания мне помогают.
Вот пример кода.
Что вышло можно увидеть на прошлой фотографии. Знаю что это один из простых, просто я не знаю безопасно ли сливать сложный код.
Например чтобы самостоятельно не прописывать тэги ссылок, я ставлю запятые, которые отправляются в бд. Потом с бд отправляется на сайт, где уже заменяются запятые тэгами ссылками. Но не только ссылки могут быть, но и целые таблицы, например для системных требований и т.д.
Самое сложное скачивание фотографии для блогов. Например вы копируете фотографию и вставляете в блог. Код перебирает все ссылки фотографий, и скачивает их и менять их имя так:
Номер блога: 21
Значит фотографии будут начинаться с 21 потом "-" и затем номер фотографии.
Я на это потратил пол дня. Т.к. большинство фотографий имело ссылки, и приходилось их чистить потом менять источник фотографий, а это нужно было делать после отправки самих ссылок по ajax, а два раза отправлять ajax я не хотел поэтому я создал массив в котором сохранил все ссылки и отправлял их так по ajax уже с измененным источником изб.
По шапке пробежался и ничего не увидел на эту тему. Есть какой-нибудь гайд для нубасов?
Пишу авторизацию, нужно отследить какие параметры внутри ходят, запрошенные и отправленные куки, а также гет пост параметры. Все что я придумал - это писать урлы происходящего записью с экрана, но это мало.
У FF нет логгера запросов чтобы можно было просмотреть историю?
Забыл упомянуть, галка "Warn you when websites try to redirect or reload the page" стоит, не помогает. при отключении жаваскрипта вообще все перестает работать
В Storage поищи - там обычно куки лежат.
У меня там в версии 72 есть галочка "непрерывные логи". Возможно, она скрыта в настройках. Помни только, что эти логи требуют память, так что включай галочку только временно.
К примеру, я делаю свои заголовки для отправки на сервер -
curl_setopt($ch, CURLOPT_HTTPHEADER, $array['HTTPHEADER']);
Внезапно, от этого отваливается CURL-овская отправка кук методом CURLOPT_COOKIEJAR CURLOPT_COOKIEFILE
Тобишь мне теперь куки надо отправлять руками
Есть какая-то библиотечка, преобразующая cookies.txt сгенерированный курлом, в header строку ? Хуй знает как преобразовывать, работы на 2 часа
Он у меня пока ещё не готов
Так, кстати, написаны все эти популярные цмски и прочие магазины. Дешево и сердито, можно с нихуя не знания до готового проекта за неделю рвануть. Но мало кто решится это потом поддерживать.
Лучше на дваче сидеть, чем писать такое.
Потом хер найдешь лоха, чтобы спихнуть ему это говно на поддержку.
Любой спец плеваться будет
>Так, кстати, написаны все эти популярные цмски и прочие магазины
Поэтому избегаю работы с ними. Хватило опыта с modx и prestashop. Больше туда ни ногой
Там я нашел скрипты - https://www.languagesandnumbers.com/javascript/all-js-20.js
Мы посылаем числа цифрами и получаем ответ буквами на самых разных языках.
Мне нужны все цифры определенная часть на всех языках, хотя бы и в столбик в sql базе ноутпаде.
Есть варианты - написать бота или подобрать и понять пост запрос.
Собственно, яваскрипт я вообще не знаю, подскажите, пожалуйста, правильный пост запрос или объясните как скрипт работает и как его подключить к нормальному языку программирования.
То что он застрял в говне - тот кто такой код пишет, у него явно трудности с изучением технологий - это его проблемы. Только не надо вот тут всяких маняфантазий, что можно не развиваться, делать говно и хорошо зарабатывать. Все такого уровня макаки сидят на хлебе с водой в своих питомниках.
анон помогии
А какой смысл объяснять тебе логику работы сайта и как всё это подключить к нормальному языку программирования и почему тут не нормальный? а какой нормальный тогда, если ты ничего не знаешь?
Консультация разработчика денег стоит, или сам разбирайся.
>такого уровня макаки сидят на хлебе с водой в своих питомниках
Да вполне неплохо зарабатывают так-то. С этим говном работать - не всякий пойдёт.
А кто-то просто больше в уши заказчику срать лучше умеет, чем программировать.
Пост запрос отправляется на 'ajax/en/' передаются два параметра "numberz" - число и "lang=" - код языка. К примеру запросить курлом:
curl -d "numberz=1488&lang=ukr" -X POST https://www.languagesandnumbers.com/ajax/en/
https://ideone.com/DnEFmZ
Адрес модный надо покупать. Если хочешь на локалке по приколу - открываешь 80 порт, в роутере или что у тебя там. И потом заходишь по ip адресу. А так, копай в dns.
>Адрес модный надо покупать
Адрес и хостинг. Ну или вместо хостинга - белый IP, чтобы из интернета виден был.
Лучше хостинг - там и панелька тебе с настройками нескучными, и апач\нгинкс настроенный уже, и статистика.
К тебя for какой-то всратый. Лучше использовать более стандартные конструкции. Если у for один из элементов выражения не нужен то обходиться while. Что -то типа https://ideone.com/2Qui6k но в общем-то похуй.
Охуенно знаю(по моему мнению) PHP, что могу с закрытыми глазами писать качественный код. С паттернами, сокетами и базами данных тоже работал, свои игры пилил.
Немного под-учил JS, но мне он не понравился, поэтому только на уровне чтения. Ну и конечно могу в (HTML, CSS), тоже на уровне чтения.
Думаю начать учить фреймворки для пыхи, для работы, но их много, и я не знаю какой востребованней.
Что думаете?
Если правда то, как ты охуенно знаешь пхп и как с закрытыми глазами жонглируешь всякой хитровыебанной херне - можно даже сразу на сеньора аплаиться. Но может статься, и даже вероятно, что ты свой уровень знаний перецениваешь. На собесах выяснишь.
>Думаю начать учить фреймворки для пыхи
По твоим описанным знаниям - ты все 3-4 востребованных фрейма в пхп выдрочишь за недельку лучше, чем мидлы.
>могу с закрытыми глазами писать качественный код
Могу найти кучу говна в твоём коде.
>С паттернами, сокетами и базами данных тоже работал
Невеликое дело - по докам разобраться.
>Немного под-учил JS, но мне он не понравился, поэтому только на уровне чтения.
Так и пиши - не умею в ЖС.
А я умею - писал на нём парочку игор и кулькуляторов на странички.
>могу в (HTML, CSS), тоже на уровне чтения
Могу верстать на бутстрапе, флексах и гридах.
К этому я ещё имею пройденный ларакаст, туториал, тестовое на круд и апи, собственную пет в процессе.
Иду на джуна на следующей неделе.
>Что думаете?
Думаю, что ты слишком большого о себе мнения. У тебя только базовые знания.
>Если правда то, как ты охуенно знаешь пхп и как с закрытыми глазами жонглируешь всякой хитровыебанной херне - можно даже сразу на сеньора аплаиться.
Ну, я еще с 2014(примерно) года начал задрачивать пхп, просто для себя. Ну и примерно тогда же начал пилить свою игру, так и по мере продвижения узнавал что то новое.
Но все-таки, даже если я нормально знаю пыху, это не значит что у меня есть опыт работы на ней с кем-то вместе. Поэтому боюсь обосраться. От чужого кода воротит.
>ты все 3-4 востребованных фрейма в пхп выдрочишь
То есть, все сразу учить? А потом пойти на собеседования?
Понятно.
>>638398
>Могу найти кучу говна в твоём коде.
Я и сам могу найти в нем кучу говна, но в чужом еще больше.
>От чужого кода воротит
Важнейший признак лоулевел программиста - непереносимость чужого кода.
В норме - он читается примерно как свой, если написан более-менее прямо.
Я бы на твоём месте показал тут свой гитхаб - чтобы отзыв кто-нить дал. В своём манямирке ты можешь быть супер-пупер синьором, тогда как ИРЛ у тебя, кажись, проблемы.
>Важнейший признак лоулевел программиста - непереносимость чужого кода.
И свой у меня тоже воспринимается не очень, если он старый. Это то же "важнейший признак"? Ладно. Я могу читать и понимать чужой код, но у меня навязчивая идея его переписать.
>Я бы на твоём месте показал тут свой гитхаб
Не выкладываю ничего на гитхаб.
Из второго вытекает первое. Допустим, я написал код и выложил его на гит, потом я захожу через год и вижу этот мусор, понятное дело мне будет больно кому-либо его показывать. И я понимаю, что если сейчас что нибудь выложу а потом потеряю доступ к аккаунту, забыть это будет непросто. Обычно свой написанный код я просто удаляю через какое-то время.
Но думаю, на работе(если собеседование пройду), я смогу как нибудь себе в голову вбить не обращать внимание на это.
А разве метатеги - это свойства HTTP-запроса? Логичнее было бы сделать объект Лейаут (метатеги, параметры меню и все, что относится к лейауту), например, создать его в базовом классе контроллера до обработки запроса, в ходе работы контроллера менять его свойства, и в конце передавать во вью.
Не знаю, правда, получится ли такое в Ларавеле. Может, это не в контроллере надо делать а как-то по другому.
Просто учти, что без внешней оценки твоего кода прогресс невозможен.
Либо самолюбие, либо программирование. У тебя пока что - первое.
>То есть, все сразу учить?
Если ты описал свои скилы корректно - то тете даже учить не придется. В этом суть.
>отложенное добавление мета тегов из контроллера/миддлвора
Из откуда? Почитай в ОПпосте и на хабре про MVC - у тебя ересь какая-то.
Обычно в начале выполнения кода ставят глобально обработчик непойманных исключений (set_exception_handler()). В нем ловят ошибку, логгируют ее и выдают страницу 503. Многие фреймворки уже содержат в себе такой код.
Обрабатывать исключение "на месте" как раз противоречит логике использования исключений - в таком случае мы можем вообще его не выбрасывать, а сразу вызыввать логгер. Только вот это неудобно, так как придется эти вызовы логгера раскидать по всему коду. И нельзя будет из выше расположенного кода решать, что делать при исключении.
>>635530
Проблема тут:
> generateCombinations($n, array_merge($values, [$i]))
Ты вызываешь функцию-генератор, а она при вызове возвращает итератор, а не выполняется. Когда ты будешь пытаться обходить этот итератор с помощью foreach, тогда она будет по шагам выполняться (останавливаясь каждый раз на yield и возвращая одно значение на каждый шаг foreach).
То есть надо так:
// Функция не выполняется в этот момент, а лишь вернет итератор
$iterator = generateCombinations(...);
// Функция выполняется, доходя до yield и возвращая управление в foreach
foreach ($iterator as $value ) {
yield $value;
}
Так как такое требуется часто делать, то есть специальная конструкция yield from, которая заменяет вышеопесанный код.
letsencrypt выдают, но временный и нужен сервер с DNS и белым IP.
>>636345
Ты используешь ActiveRecord? Попробуй вместо того, чтобы пихать все методы в модель, создать сервис для конкретной подзадачи и пихать методы в него.
Не $user->getLatestPosts(), а $postService->getLatestPosts($user), $friendsSvc->getTopFriends($user).
То есть, правильно писать так, чтобы в контроллеры взаимодействовали с моделями только через эти сервисы-посредники?
Это делается для структурирования кода или для того, чтобы не создавать лишних методов моделям? Или оба?
Пока придумал - каждые 1.30 часа работы - 30 минут лежать, обдумывать тз и листать мемы. Лежание хорошо восстанавливает силы. Есть ли еще варианты?
поменьше работать над проектами в которых нихуя не понимаешь
никак. если ты совершаешь большую работу мозгом, то он устает. пробовать сидеть через силу не эффективно. единственный способ - тренироваться и набивать руку превращая все в рутинные задачи
я например, делал марафоны. сначала по 5-6 чаcов, 10 часов и так до полноценного дня, а может даже и несколько дней с перерывами. хотя у меня никогда не получалось больше нескольких дней, всегда отрубался прямо за компьютером.
Вставать в 8 а не 12. Циркадный ритм сохраняется, организм выдерживает больше
>>638508
Проблема именно в пхп 7.4 и роадраннере - пхп там больше не умирает при запросах, как при обычном режиме.
Вопрос скорее в другом: как и где более правильно хранить и отчищать для след запроса подобные данные. Еси пример с мета тегами был не очень, то пусть будет пример с капчей: в проекте стоит в куче миддлваров триггеры на рекапчу (при успешном выполнении запрос просто повторяется с добавленым challenge response). Если с капчей все ок - в синглтоне просто меняется стейт на «он уже прошел капчу на этом запросе, его триггерам не трогать».
Все это идеально работает в модели «пхп бутится, обрабатывает запрос, отдает респонс, умирает». А в модели «загрузился и отдавай респонсы» требуется отчищать данные для след. запроса https://github.com/Hunternnm/laravel-roadrunner
>preload призван бороться с оверхедом при подключении файлов
>RoadRunner мы пока не нашли эффективного применения
И это блядь в баду, где триста серверов на пыхе на пределе хуярят.
Дядь, храни данные в мемкеше/редисе и не выебуйся.
Это делается для того, чтобы не совать все в модель, От чего она становится антипаттерном God Object. Логичнее сделать FirendsService и в нем все операции с друзьями, PostsService для постов, LIkeService для лайков.
В моделях можно делать методы, но не относящиеся по смыслу к сервисам и простые. Например: $post->calcRating() , $user->isVip().
Давай подумаем. Логичнее всего где-то в контроллере, так как это он обрабатывает запрос. На каждый запрос создается свой контроллер, а в нем свой объект Layout. Доступ к Layout есть только у контроллера, а другим в него лезть незачем..
Другой вариант - сделать свой RequestContext, в котором есть Request, а также доп. методы вроде: detectCity(), detectLanguage(), requiresCaptcha(). Передавать в контроллер наш RequestCOntext вместо Request. Сюда, правда. метатеги никак не приварить. Не часть это запроса. Из плюсов: доступ есть только в контроллере, у постронних классов его нет.
Мне кажется, это правильный дизайн, когда какие-то данные доступны только там, где они нужны. Мешает писать неправильный код.
>Ну ок. Вообще, есть еще вариант попробовать поменять алгоритмы шифрования. Асимметричное шифрование медленное. Потому часто (например, в SSL (и в HTTPS)) с помощью асимметричного шифрования шифруют только ключ, который используется в быстром алгоритме симметричного шифрования. А сообщения уже шифруют симметричным ключом.
Мне нравится эта идея. Можно секретные чаты сделать медленные с асимметричным шифрованием, а простые с симметричным. Нужно изучить как это можно сделать, и сначала сделать хотя бы секретные чаты, иначе разработка может затянуться на целую вечность!
Накидал тебе за щеку, проверяй
Потому что я хз как гуглить
По тегу похапе высвечиваются вакансии и какая-то нерелейтед херня
Да и не нужны мне каналы вида "последние новости мира пхп". Хочу странички обычных вкатышей, которые иногда постят что-то пхпшное, а иногда мемчики и околорабочие смехуечки. Как это гуглить вообще?
Из-за карантина скидка 50%
>>637096
>>637098
Очень благодарю за подсказки! Помогли тронуться с мертвой точки.
Обновил PHP на своем Ubuntu, чтобы воспользоваться type hints для элементов классов. Теперь, кстати, предпочитают термин Type declarations:
https://www.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
Однако возникли дополнительные вопросы.
1) Читал ранее, что комментарии к свойствам и методам рекомендуется оставлять только там, где они не совсем интуитивны. Я оставил пояснения почти перед каждым свойством и методом. Это неправильный подход?
2) Выше анон назвал мои сокращения мерзкими и предложил использовать полные названия. Я это осуществил:
https://ideone.com/G9GxAT
Возможно это мое мнение, но как раз-таки полные названия мне кажутся совсем не элегантными и делают код менее компактным. Первоначально c целью избежать этого я единожды использовал комментарии-пояснения в декларации класса. Какие мнения на этот счет?
3) По исходным данным. Это меня интересует больше всего.
$employees = [
// count, profession, rank
[3, Employee::JOB_MANAGER, 1],
[5, Employee::JOB_ENGINEER, 2],
...
];
Идею понял: конструирую функцию, которая из массива данного формата будет выплевывать объекты-сотрудники и складывать, например, в другой массив ($employeeObjects). Однако опять же: почему в начальном массиве не задаются два дополнительных свойства, отражающие статус руководителя (true | false) и принадлежность к департаменту? Ведь, во-первых, $chief = true | false - это одно из свойств abstract class Employee. А во-вторых, следующим шагом мне, скорее всего, нужно будет создавать объекты отделов, которые одним из своих свойств будут иметь штат сотрудников. Я так понимаю, что это свойство я буду определять методом-конструктором, который будет получать аргументом тот самый массив объектов-сотрудников ($employeeObjects), в которых принадлежность к отделу никак не обозначена. Другими словами, как конструктор из общей массы объектов сможет выцепить сотрудников, которые относятся к определенному департаменту, если из "опознавательных знаков" у них есть только название должности и ранг?
>>637096
>>637098
Очень благодарю за подсказки! Помогли тронуться с мертвой точки.
Обновил PHP на своем Ubuntu, чтобы воспользоваться type hints для элементов классов. Теперь, кстати, предпочитают термин Type declarations:
https://www.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration
Однако возникли дополнительные вопросы.
1) Читал ранее, что комментарии к свойствам и методам рекомендуется оставлять только там, где они не совсем интуитивны. Я оставил пояснения почти перед каждым свойством и методом. Это неправильный подход?
2) Выше анон назвал мои сокращения мерзкими и предложил использовать полные названия. Я это осуществил:
https://ideone.com/G9GxAT
Возможно это мое мнение, но как раз-таки полные названия мне кажутся совсем не элегантными и делают код менее компактным. Первоначально c целью избежать этого я единожды использовал комментарии-пояснения в декларации класса. Какие мнения на этот счет?
3) По исходным данным. Это меня интересует больше всего.
$employees = [
// count, profession, rank
[3, Employee::JOB_MANAGER, 1],
[5, Employee::JOB_ENGINEER, 2],
...
];
Идею понял: конструирую функцию, которая из массива данного формата будет выплевывать объекты-сотрудники и складывать, например, в другой массив ($employeeObjects). Однако опять же: почему в начальном массиве не задаются два дополнительных свойства, отражающие статус руководителя (true | false) и принадлежность к департаменту? Ведь, во-первых, $chief = true | false - это одно из свойств abstract class Employee. А во-вторых, следующим шагом мне, скорее всего, нужно будет создавать объекты отделов, которые одним из своих свойств будут иметь штат сотрудников. Я так понимаю, что это свойство я буду определять методом-конструктором, который будет получать аргументом тот самый массив объектов-сотрудников ($employeeObjects), в которых принадлежность к отделу никак не обозначена. Другими словами, как конструктор из общей массы объектов сможет выцепить сотрудников, которые относятся к определенному департаменту, если из "опознавательных знаков" у них есть только название должности и ранг?
приятно видеть таких как ты вкатывальщиков.
Это значит что таким как я ничего не угрожает.
>>которые иногда постят что-то пхпшное, а иногда мемчики и околорабочие смехуечки
Продолжай сидеть на таких страничках.
>Потому что я хз как гуглить
Тогда забей на вкат - ты не потянешь, если инфу искать не умеешь в нете.
Я тебя в свои приглашать не собираюсь - ты ленивый и довольно тупой. Не мочь найти сообщество программистов в сети это уже показательно.
Я уже с декабря как джун, чини детектор.
>Продолжай сидеть на таких страничках.
Охуеть, вот это новости. Для двача кодеры должны быть угрюмыми и 24/7 читать только документацию, можно даже вместо сна
>Однако опять же: почему в начальном массиве не задаются два дополнительных свойства
Если ты ждешь конкретный ответ, типа потому что, вот это храним, а вот это не храним, то его нет.
Так сложилось, так было надо, вышло как вышло, на проектировали что на проектировали.
В реальных проектах такая хуйня постоянно. Если у бабушки хуй, и у белки хуй, и на лбу хуй, то замеряем их длину и если сумма длин четная, и марс в доме юпитера, и его хуй тоже четный, то внучок руководитель. И сопровождается такое вычисление запросом в базу на две страницы. А все потому что нужно все в реальном времени, а вдруг у белки хуй подрос.
Смотрю уроки по созданию CMS на Slim и немного охуеваю от этих ваших MVC, PHP работает в многопотоке да? Как он блять будет выдерживать нагрузку если 100 человек одновременно запросят разные страницы? Это же пиздец какое дрочево и хуевертело со всеми этими классами, роутерами, просто тысячи операций обращения одного роутера в другой и обратно через один главый файл index.php, или для PHP это норма совершать 100500 операций со созданию сессии, считываю сессии, запросу к бд, считываю роутера и выводу нужного содержимого из базы в зависимости от того что считал роутер, в общем пиздец, сколько человек в онлайн PHP и сама база MySQL может выдержать с такими свистоплясками? Мне кажется 8 ядерный сервак загнётся от такого количества вычислений от 100 человек одновременно
Прекрасно выдерживает.
есть такая вещь как кеширование и балансировка нагрузки
>хуевертело со всеми этими классами, роутерами, просто тысячи операций обращения одного роутера в другой и обратно через один главый файл index.php
>совершать 100500 операций со созданию сессии, считываю сессии
Файловая система кеширует в памяти те файлы, к которым идёт постоянное обращение.
>запросу к бд
>выводу нужного содержимого из базы
БД тоже кеширует повторные запросы.
>Мне кажется 8 ядерный сервак загнётся от такого количества вычислений от 100 человек одновременно
Все данные есть в гугле. Не надо тут вести себя как девочка.
Как человек, работавший с хайлоад PHP проектом говорю: хуево выдерживает. PHP не работает в моногопотоке, а реляционные базы пиздой поростают при работе с таблицами от нескольких миллионов записей.
Загвоздка только в том что как правило проблемы с нагрузкой вылезают через много лет после старта проекта. Ты быстро стартуешь с пхп и MySql, набрав дешевых пхп макак, все охуенно, бабки текут, клиенты довольны, все их хотелки делаются за день максимум.
А потом у тебя комок легаси говна, переписать который на нормальный язык будет стоить миллионы долларов и тысячи человекочасов. Даже если бабки не проблема программистов на норм языке хуй найдешь в нужном количестве, а в недостаточном количестве сроки растут до нескольких лет. А клиенты уже сейчас охуевают от ошибок, падений и прочей залупы, которую латают какие-то опездалы, потому что норм программисты давно съебали из легаси ада.
Что за хуйню ты написал. Через много лет все превращается в легаси и все сталкивается с трудностью поддержки
На ноде проекты столько не живут. Как только разработка заканчивается подрядчик растворяется в тумане , хотя криптолох с бабками к тому моменту сам теряет интерес к хуйкоину, а для пиздокоина делается новый проект
При получении формы делать редирект на эту же страницу. Попахивает костылем но нектостыльных способов нет.
Это не костыль а стандартный способ независящий от серверного языка.
1. Форму обработали нормально - редирект
2. Форму обработали с ошибками - без редиректа, иначе пользователь потеряет ввод
Удалять написанный код такое себе. Обычно, его переписывают.
Хорошо, а как сделать редирект страницы на саму себя? Прочитал про функцию header, а куда ее воткнуть? Перед кодом в самое начало страницы или в условия проверки?
>>реляционные базы пиздой поростают при работе с таблицами от нескольких миллионов записей.
Это десять высеров из десяти.
Мимо работаю с базой в которой 500 таблиц и в самых больших больше 50 миллионов записей.
Ну так сделай селект десяти случайных записей по двум параметрам. Если в 100мс не уложится значит про хайлоад можешь забыть.
Все хедеры должны отдаваться до того как будет выдан любой другой вывод (с помощью echo к примеру). Куда ты ее воткнешь нет разницы, главное чтобы до нее небыло другого вывода (кроме других header())
Хайлоад от прямоты рук зависит.
Аноны, а как переделали 3% в десятичную дробь?
Название переменной пиздит. Это не проценты. Чтобы увеличить число на три процента нужно его умножить на 1.03
>а как становится понятно что нужно умножить именно на 1.03 ?
y = x + x ✶ 0.03
y = x ✶ (1+0.03)
y = x ✶ 1.03
У нас есть какая-то сумма: S.
3 процента от него это: S3/100.
Нам нужно эти 3 процента добавить к изначальной сумме: S+S3/100.
Выносим S за скобки: S(1+3/100) = S 1.03
Увеличить на 3% - это значит взять число + 3% или 103% от числа. Так как 1 процент = 1/100 числа, или 0.01 умножить на число, то 103% это 1.03 умножить на число.
Урок по обработке форм тебе может быть поможет: https://github.com/codedokode/pasta/blob/master/forms.md
объясните нахуя нужнн данный урок, если реально никто так формы не обрабатыввает уже наверное лет 10
Дурик картоный, ты путаешь современные либы и механизм, который класссика знать надо. Твои современные тухнологии на святом духе работают?
Рассказывай что там в уроке не актуально
Не описано как в твоем любимом фреймворке десериализация пост запроса происходит? Так же это не основы, зависит от фреймворка, але
имхо вообще какая-то дикая хуйня, где контроллер, работа с бд и вьюха в одном файле расположены.
это не основы, а просто какое-то устаревшее говно из-за которого потом нужно долго вникать в MVC. я сам начинал с этих уроков если что..
Причем здесь эта хуйня
Основы это
1. Как браузер отправляет формы при субмите form enctype
2. Почему без редиректа он заставляет повтрно сделать отравку
3 Как сериализовать данные формы js сом и сделать аякcом пост запрос. FоrmData
4. Обработка на сервере. $_GLOBALS, $_REQUEST
5. Оптравка файлов
6. Обработка аякса на сервере json_decode
если ты вкатываешся, то тебе хватит любого бесплатного, а если ты работаешь, то тебе должны купить
Хватит любого бесплатного phpstorm -а?
Забыл phpedit древняя говняшка для винды
Я понимаю правильно, если ставлю хедер, то даже при первом запросе страницы она будет редиректить на саму себя?
Спасибо изучу после работы
>нетбинса
Кривая хуета. Больше на студенческую поделку похоже, чем на норм иде.
Интерфейсы из коробки - привет из 90х сетчатку такими выжигать заебца, не поддерживает многие современные форматы, лезет в вендор и гордо показывает там ошибки, периодически подтормаживает, у меня позже ещё и глючить начал - по полчаса сканирует файлы проекта, а в гугле внятных советов нет.
Прямо как на десктопном линуксе каком-то, где постоянно что-то не так работает.
>нетбинса
Так я потому и спрашивал что хочу с этого гавна слезть. На работке еще как-то норм было, там наверное версия старая. Перевели на удаленку. Скачал новую версию. Под нее нет плагина для автосейва. Думаю типа - 2020 год, в IDE нет автосейва, наверное чувакам норм без него, может я чего не понимаю. Начинаю гуглить какого хуя вообще в нетбинсе нет автосейва. Нахожу какого-то клоуна который пишет что ему заебись без автосейва потому что бывает такое что пишешь весь день код, а потом понимаешь что все хуйня. И можно сразу файл откатить, а не жать кучу раз ctrl+Z. Меня это сразу напрягло - когда в комньюнити такие клоуны то глупо ждать нормальную IDE. А сегодня совсем пригорел. Делал новую модель, из верстки вытянул пачку имен переменных для свойств. И решил типа по крутому мультикурсором им сразу всем private вписать. Гавно после первой введенной p показывает список автодополнения. Если выбрать прайват то оно вставляет прайват во все строки. Но при этом меняет имена все переменных на имя переменной из первой строки. Если отменить автодополнение ескейпом то гавно заодно сбрасывает и мультикурсор. Короче решил менять. Шторм купить не проблема, но он у меня почему-то вызывает необъяснимые негативные эмоции. Попробую еклипс, если не зайдет то прийдется шторм жрать.
Некоторые на vscode сидят. Можно нагуглить списки плагинов для пхп или другого языка. У меня он в качестве временной замены шторма и других жидбрейнс идешек лежит, иногда помогает.
А еще тут нужен вимоеб, чтобы постучать нам исполинским хуем по лбу за использование оверхед говна вместо божественного.
>Кривая хуета. Больше на студенческую поделку похоже, чем на норм иде.
Иди нахуй, гандон! Сам James Gosling сидит на нетбинсе, работая в Amazon. Ты умнее его?
А так да, нетбинс изначально разработали студенты, но проект купили сантехники и сделали свободным ПО.
Два чаю. Все равно что сказать - дед бутылки собирает и мы должны.
>он у меня почему-то вызывает необъяснимые негативные эмоции
Да такая же хрень, если честно. Сама ИДЕшка вполне годная, но эта система подписок и отсутсвие альтернативы. Да и везде его советуют - заебало.
Сам на нетбинсе сидел - прост накипело. Это же всё детские болезни и несерьезно нифига.
2к20 год, а из толковых редакторов один нотепад++
>>640914
>вимоеб
Я как-то поставил и не понял нихуя. Какие-то команды надо вбивать на элементарные действия, интерфейс прямо из ДОСа почти. Люди реально на этом сидят?
Autocomplete for PHP property and method without $this→
>Люди реально на этом сидят?
Да. Но он кастомизируемый, и потому в итоге не выглядит так же, как его голая версия. Впрочем сейчас все такое, не знаю почему это игнорируют вимоебы. Полная свобода настройки хоткеев сейчас тоже везде (только вроде как в контексте вима это немного другое), в том числе под схему вима.
В общем да, сидят еще как и других подсаживают. Сам многих таких знаю.
>vim
Я считаю его нужно юзать с тайловыми оконными менеджерами, тогда пропадает нужда в мышке отчасти. Ещё плюсом можно накинуть что открывает проекты быстрее, меньше жрёт оперативы, и какая ни будь замена слов работает быстрее.
>Я как-то поставил и не понял нихуя. Какие-то команды надо вбивать на элементарные действия, интерфейс прямо из ДОСа почти. Люди реально на этом сидят?
Потому что надо large version ставить, она удобна. Не надо в командный режим переключаться из-за опечатки. Хотя в виме мало смысла, если в 10-пальцевый набор не умеешь.
>>640951
Я бы не прочь его заценить, но отдавать в таком виде, как они это делают просто глупо.
Пришёл пацан на сайт и хочет вим. Ну дайте ему демку, где всё красиво, с туториалом небольшим, в стиле того же ПхпШторма, чтобы он заценил и тут же кончил. Ну не умно отдавать ему кусок полурабочий - "на, копайся с доками сам сколько хошь. Я сильно настраиваемый - настраивай меня полностью!".
А зачем им это делать?Если хочешь то пердолься, если не хочешь, то непердолься. В целом я тебе так скажу, если ты сидишь на линукс, и ты хочешь чего то нового, то ставь тайловый оконный менеджер и вим, попердолишься неделю или больше, может понравится и останешься. Если всё и так устраивает, то оставайся в своей иде.
Тайловый оконный менеджер + вим это удобная и приятная глазу штука правда придётся какое то время красноглазить, я лично пересяду, но мне ща нужна винда кое какое время, как пропадёт нужда перекачусь.
>тайловый оконный менеджер
Думал попробовать - хвалят их часто. Они же на Луа конфигурируются, если не ошибаюсь?
Будущее десктопов.
function predictAge($age1,$age2,$age3,$age4,$age5,$age6,$age7){
}
Собственно вопрос, как их записать в массив, чтобы дальше с ними работать? Ничего в голову не приходит кроме как сделать это вручную.
https://www.php.net/manual/ru/function.func-get-args.php
>>641128
Либо говносайты и магазины на cms клепать, либо писать парсеры для сомнительных порталов, либо мобильные приложения. Фриланс это для малого бизнеса краткосрочные проекты по 30к
Нет, тебе никто не запрещает учить php, просто вопросы у тебя пиздец глупые, ты вместо того чтобы спрашивать попытался бы гуглить это куда более важное умение, у меня знакомый, который вкатывался, нихуя не знал, но на софт скиллах и умении гуглить смог найти себе компанию, где из него сейчас делают человека, правда на js.
да, это нихуя не гуглится сука
Не согласен, что алгоритм устарел. В фреймворках вроде Симфони примерно так и происходит. Там есть и проверка CSRF, и валидация данных в форме, и POST/redirect/GET для защиты от повторной отправки.
Вот я открываю мануал по Symfony Forms https://symfony.com/doc/current/forms.html#processing-forms и что же я вижу? Точно такой же алгоритм, только используется класс-помощник, представляющий объект формы.
Опиши тогда более "актуальный" алгоритм, если этот, по-твоему, устарел.
>>640791
А где я написал, что все надо писать в одном файле? Описан лишь алгоритм, естественно, не надо все писать в одном файле, а надо делать вызовы сервиса-валидатора, шаблониатора и тд.
Скорее всего тебе никто не поможет, если не гуглится и нет доки по конкретной цмс. Только в исходники цмс лезть и курить
В js понимаю слабо, в английском слабо, в php хорошо
Может есть какая не устаревшая готовая библиотека на Github с примерами работы? Каждый шаг дается с трудом
начиная с декабря регулярно тут спрашиваю про это. пока никто не откликнулся. видимо никто на этом каличе не работает. в гугле есть конечно такие вопросы, но все ответы на них это хуйня в стиле: ой у вас тут модуль/тема/еще чтоугодно стандартные/бесплатные и они говно. а вот купите мой модуль всего лишь за 499$ и там уже все из каробки работает и есть поддержка лично от меня. вообще в 99% случаев такие ответы.
>начиная с декабря регулярно тут спрашиваю про это. пока никто не откликнулся.
Так ты спрашивай нормально, а не в вакууме.
Что за проблема, что за ЦМС, что сам пробовал, про деньги намекни и контакты оставь.
Нормально сделай, короче, а не через жопу.
Вот картинка для понимания. Можно её распечатать и повесить над рабочим местом.
да так и делал. но с тем учетом что никто не отвечал - забил. даже на битрикс отвлекались, а тут вообще все глухо
>начиная с декабря регулярно тут спрашиваю про это
Сходил бы на фриланс биржи. И если там тихо, то нахуй дропай задачу, возвращай деньги клиенту и не еби мозг ни себе, ни остальным
Тут ещё такое дело: если ты решишь человеку эту проблему, то он и впредь к тебе с аналогичными вещами обращаться будет. Но дело в том, что никому не всралось разбирать левый говнокод, написанный жопой, не умеющей в проганье и нормальные абстракции. Т.е. нужно будет постоянно это говно разгребать за мелкий прайс. Нахуй надо короче.
С битриксом сколько, вон, жопоболи, а он документирован и куча форумов по нему.
Заебись поставил php-webdriver из инструкций на гитхабе
0.5 ответов даже в англоязычной среде
Хуя тут ошибка Fatal error: Uncaught Error: Class 'DesiredCapabilities' not found in ? Я же все поставил по инструкции
composer install
Скажите, что я не один тут такой тупой?
Я на верном пути методом тупого перебора? Пиздос конечно сложная вещь это проганье.
Реально нужно уметь декомпозировать задачу. Начало что-то получаться только после того, как блок while отдельно решил пилить от for и потом дошло как его всунуть.
это конечно совсем приблизительный набросок, без учета кол-ва банкнот.
И ведь действительно тупенький... Большое спасибо, зайчик.
Всем успехов!
>>637453
ОП, взгляни на мое решение докризисного Вектора, пожалуйста: https://ideone.com/glM8Eg
Решение вышло super long-winded, в 4 файлах: classes.php, input.php, main.php, padstring.php
На скрине результат.
Осознал, что хуйню сделал
Теперь вот так: https://ideone.com/kR1W7a
Умненькие, проверьте, пожалуйста, надежность такого тупого перебора.
Пых это лучший выбор до сих пор или его решает уже пистон? Я просто в танке
>Смотрю уроки по созданию CMS на Slim и немного охуеваю от этих ваших MVC
Сейчас ради интереса глянул пару уроков - ну и срань. Зачем вы это говно смотрите? Автор курса по уровню в разы слабее местных джунов и: всё усложняет, везде лепит свои синглтоны, зачем-то вручную при это довольно хуёво работает с неймспейсами когда рядом композер лежит, не понимает MVC и лепит контроллеры поверх контроллеров, какие-то левые проверки defined('хуета') or die('аццесс запрещено!!111') в стиле вордпресса зачем это делать в файлах с объявлениями классов?, при этом любит понтоваться и говорить микрофреймворк, полное квалификационное имя и аналогичные детские выебоны.
Ещё и других этому учит.
Просто пиздец.
Еще идея есть: через деление суммы на каждый номинал найти максимально возможное целое кол-во банкнот (округлив результат деления) определенного номина, которое может содержать сумма и перебирать их примитивным комбинаторным методом типа декартово произведение или как там
Норм?
Такое дело: решим обмазаться ПДО, но у меня выдает 500 ошибку, дескть, запрос обработать не может.
Я, блять, в шары долблюсь где-то или что?
Другие запросы работают: достать из БД, чтоб проверить, есть ли логин, добавить в БД логин, это все работает, а как надо препейр/экзекут - нихуя. В чем дело?
Че за хуйня? Ничего не делал и оно заработало через бинд парам с заглушкой, через execute('$log').
Это троллинг духа-машины, что ли?
Ну и хули?
Читал - не работало, показал погромисту с работы - не работало, запустил спустя день - заработало.
Я нихуя не изменил в коде, а лишь сменил нотпад++ на пхп шторм, и запустил тот же свмый файл с хостинга.
Справедливости ради - БД иногда действительно ведёт себя ебануто.
Создай папку в корне и храни. Но я бы на твоем месте сделал шаг дальше и хранил докер образ, в котором прописал куда этот конфиг копировать. Да и вообще docker-compose охуенная тема чтобы все окружение одной кнопкой поднимать и nginx и php-fpm и базу.
К чему ты про свою судимость и образование тут рассказываешь?
Думаешь тут святые сидят? Я, например, тоже не ангел ни разу, особенно в молодости был да и щас старина не отсохла. Очень даже повезло, что не набутылили.
Хочешь учиться - учись, нафига у кого-то спрашивать разрешения?
Два раза отчисляли из ВУЗа, работаю веб-макакой за 30к. Главное это желание учиться. В твоем случае еще и алгебру хотя бы до уровня 9 класса подтянуть надо. Чтобы мозги лучше думали
Можно сайт и без знания php сделать. Только он не сможет ничего крутого
Почему на ideone сортирова работает:
https://ideone.com/qT4HWn
А на моем компе нет?
Свою функцию сортировки написать спообен, но чет непонятно почему встроеная не работает.
>>637453
>>642984
Небольшой update: я интегрировал функцию создания департаментов в конструктор класса Company (отделы все равно не могут существовать вне компании). Также сделал функцию распечатки отчета по расходам элементом класса.
Код: https://ideone.com/Egnb9D
Буду очень признателен за любые замечания/напутствия.
<?php
$i=5;
echo '$i' . "\n";
echo "$i" . "\n";
echo $i . "\n";
Почему выводится
$i
5
5
Я почему-то всегда думал что echo "$i" должно вывести $i а не саму переменную.
Потому что интерполяция строк идёт в двойных кавычках, для одинарных надо ещё фигурные скобки
Что то типа обратного LIMIT
SELECT * FROM table LIMIT 5 , 2
Я типа пагинацию велосипедю.
Да яя уже вспомнил, чет протупил, да.
Дайте плиз наводящий ответ - пишу пагинатор. В принципе особой проблемы вывести по страничкам данные(статьи) из таблица нет.
Вопрос у меня с сортировкой.
Допустим мне нужно отсортировать сататьи по названиб статьи - по алфавиту.
И соответственно все страницы в пагинации должны быть отсортированы таким же образом.
Туплю вот в чему - что бы отсортировать статьи по алфавиту - я же должен из базы волучить все статьи - отсортировать по алфавиту, выбрать нужный диапазон, и уже вставить этот диапазон в отображаемую страницу.
Пока не пойму как можно отсортировать все статьи по алфавиту не полчая весь массив статей.
>>643712 - кун
>Туплю вот в чему - что бы отсортировать статьи по алфавиту - я же должен из базы волучить все статьи - отсортировать по алфавиту, выбрать нужный диапазон, и уже вставить этот диапазон в отображаемую страницу.
order by article_title (asc|desc) LIMIT N OFFSET X?
Эти все системы вроде опенкарта и вордпреса делались не для людей. Там бестпрактис это на проде что-то пилить в одно рыло с выключенным дебагом
Как именно характеризуется код цмсок и чем отличается от не цмсок? И у всех ли цмсок код цмсочный?
Неужели в пыхе 7ой нет возможности писать охуенную бекенд логику со всеми новомоднейшими паттернами и при этом это будет работать не хуже жабы/шарпа?
Или это наоборот сигнал, что самое время теперь уже вкатываться в этот охуенный язык и становиться в нем профессионалом, пока все школьники лезут теперь в питон/жс?
Подключился с мобилы, теперь нормас
Я бы тебе просто за то разницу в ООП между питоном и ПХП хуем по щекам бы надавал.
В ПХП отличная спижженая с джавы модель ООП.
В питоне такое
в js, хоть я и люблю ноду - тоже хотелось бы
Смотрел ток одну цмс, какой то странные фарш. Главный файл - гигантский файл на 8000 строк в котором подгружается все - хтмл, запросы в бд, всякие функции подгружаются.
Из классов что я видел в этом коде - только сторонние либы.
Мне если честно не понравился этот пиздец.
Короче, есть один кусок кода, который не выполняется. Этим куском кода является Альберт Эйнштейн функция header().
Я прочел, откуда могут быть проблемы, предполагаю, что мой обсер тут:
>Довольно часто возникает ошибка, когда при чтении кода файловыми функциями, вроде include
Так как у меня include() вызывает функцию, где и находится header() с нужными параметрами.
Как можно это обойти? Есть ли фиксы, анон?
Если я просто вынесу функцию вместо include(), то обсер будет уже таким, я предполагаю:
>Те же проблемы могут возникать и при использовании PHP/HTML в одном файле.
header должен выводиться до контента. Любой текст включая пробелы перед тегом php и переводы строки может его поломать.
Не.
ЧЯДНТ?????
Я этим и занимаюсь, учу верстку.
Посмотрел по этому поводу кучу статей, везде одно и тоже, делаю тоже самое, тупо копирую код, иконка не добавляется...
Вот, самое простое, с локальным файлом.
https://jsbin.com/hoponepuce/1/edit?html,output
>>645276
Этот вариант тоже попробовал, не помогло.
<?php
$a=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for($i=1;$i<=count($a);$i+=2){
unset($a[$i]);
}
print_r($a);
Пацаны почему получается такой вывод?
Array
(
[0] => 1
[2] => 3
[4] => 5
[6] => 7
[8] => 9
[9] => 10
)
Он же по сути должен удалить 9 элемент???
Потому, что не надо каждую итерацию проверять количество элементов в массиве. Тем более когда ты из него удаляешь элементы.
https://ideone.com/VtTdWR
Разбираюсь с ПДО и нужна ваша помощь.
Как из запроса в prepare вернуть результат?
Пробовал разные параметры в fetch: _ASSOC и _BOTH.
Если с _ASSOC код продолжает работать, то в случае с _BOTH мне просто execute возвращает TRUE и сидит, сука, молчит.
_ASSOC же выдает массив с индексами-имена столбцов, так чому я при запросе $res['login'] получаю тишину?
Анон, прошу помощи.
>чому я при запросе $res['login'] получаю тишину?
В $res лежит массив, а не единственное значение.
Мог бы сам его сдампить и посмотреьть чё и как.
print_r не дампит?
PHP Storm.
мой тебе совет, завязывай с этим ванильным говном и переходи быстрее к фреймворкам
Надо исправить предупреждение:
> PHP Notice: Undefined variable: comisson in /home/s6LME6/prog.php on line 12
Ты там опечатался в имени перемеенной.
Также, надо убрать копипасту, у тебя выражение ($credit * $bankPercent) + $comisson скопировано три раза.
>>638704
Логику надо писать в сервисах, а не в контроллере. Так как в этом случае ее можно использовать из других мест. А код, написанный в контроллере, не повторно используемый. Задача контроллера - разобрать данные от пользователя, вызвать нужные сервисы, вызвать шаблонизатор для вывода данных.
Если ты код получения списка топ 10 друзей напишешь в контроллере, то его нельзя будет вызвать откуда-то еще. А если в сервисе - то можно. А если в модели - то это будет неудобно и модель будет перегружена кусей лишних функций.
>>638855
Сигнлтоны это вообще плохая штука, тем более в такой модели. Ты зря их используешь. Мой вариант с RequestContext вполне решает твою проблему. При поступлении запроса создается новый объект RC и передается сквозь все слои middleware. Middleware может менять поля этого RC как хочет. И далее этот RC передается в контроллер, используется и выкидывается по завершении запроса. Если параллельно обрабатывается несколько запросов, то существует несколько независимых объектов RC.
Но я не знаю, как это сделать в Laravel. Это уже к тебе вопрос.
Проще все сделать с симметричным для начала. Но ключ от симметричного шифра открыто не хранить, а хранить, зашифрованным ключом или паролем пользователя.
>>639812
> Я оставил пояснения почти перед каждым свойством и методом. Это неправильный подход?
Совсем очевидные комментарии, не несущие новой информации, не нужны, такие не нужны:
// Складываем b и c
$a = $b + $c;
// Получить число работников
function getEMployeeCount()
Все, что не так очевидно, допустимо.
> Выше анон назвал мои сокращения мерзкими и предложил использовать полные названия.
Лучше полные названия. Не надо экономить на месте в коде, неудобно разбираться в чужих сокращениях, это тратит время.
> Однако опять же: почему в начальном массиве не задаются два дополнительных свойства, отражающие статус руководителя (true | false) и принадлежность к департаменту?
Можешь их добавить. Тогда логично сначала создать пустые отделы, а в массиве указать, для какого отдела сотрудник.
> Другими словами, как конструктор из общей массы объектов сможет выцепить сотрудников, которые относятся к определенному департаменту, если из "опознавательных знаков" у них есть только название должности и ранг?
Он и не должен этим заниматься. Конструктор вообще не имеет отношения к этому массиву. Этим должен заниматься код, разбирающий массив, создающий объекты сотрудников, и передающий их в нужные отделы. Лучше у отдела сделать метод "добавить сотрудника" и туда передавать созданных сотрудников.
Проще все сделать с симметричным для начала. Но ключ от симметричного шифра открыто не хранить, а хранить, зашифрованным ключом или паролем пользователя.
>>639812
> Я оставил пояснения почти перед каждым свойством и методом. Это неправильный подход?
Совсем очевидные комментарии, не несущие новой информации, не нужны, такие не нужны:
// Складываем b и c
$a = $b + $c;
// Получить число работников
function getEMployeeCount()
Все, что не так очевидно, допустимо.
> Выше анон назвал мои сокращения мерзкими и предложил использовать полные названия.
Лучше полные названия. Не надо экономить на месте в коде, неудобно разбираться в чужих сокращениях, это тратит время.
> Однако опять же: почему в начальном массиве не задаются два дополнительных свойства, отражающие статус руководителя (true | false) и принадлежность к департаменту?
Можешь их добавить. Тогда логично сначала создать пустые отделы, а в массиве указать, для какого отдела сотрудник.
> Другими словами, как конструктор из общей массы объектов сможет выцепить сотрудников, которые относятся к определенному департаменту, если из "опознавательных знаков" у них есть только название должности и ранг?
Он и не должен этим заниматься. Конструктор вообще не имеет отношения к этому массиву. Этим должен заниматься код, разбирающий массив, создающий объекты сотрудников, и передающий их в нужные отделы. Лучше у отдела сделать метод "добавить сотрудника" и туда передавать созданных сотрудников.
Там есть простой вариант - "жадный" алгоритм. Берем по максимуму самой старшей купюры, потом максимум купюры поменьше, и так пока либо не наберем сумму либо поймем, что это невозможно. Условно, если сумма 6500, а старшая купюра 2000, то берем 3 по 2000, остаток 500, и переходим к купюре поменьше.
При неудачном сочетании номиналов купюр придется перебирать все возможные варианты сочетаний и жадный алгоритм не поможет.
У тебя в коде ни то, ни сё. Ты берешь по одной купюре, хотя можно делением определить, сколько штук брать сразу.
>>642984
> protected int $numOfDepts;
Это избыточно, всегда можно использовать count($this->departments). Незачем его хранить и поддерживать. Нужно заменить это на метод для вычисления.
В конструкторе Департамента не надо создавать сотрудников. Твой класс принимает данные в каком-то странном недокументированном формате. Ты должен уметь разделять код. Надо принимать просто объекты сотрудников, а не завязываться на формат какого-то массива. Это не задача Департамента разбирать структуру массива. Ты сделал только хуже, так как если у меня уже есть объект сотрудника, то мне теперь надо придумать, как преобразовать его в массив, чтобы департамент его принял.
Твой департамент это не независимый класс, он завязан на формат массива в начале программы, хотя это не его зона ответственности, как будут создаваться сотрудники и он про этот массив ничего не должен знать.
В сотрудниках лучше использовать абстрактные методы вроде getBasePay() для определения базовых ставок. Так как сейчас у тебя никак не документировано и не проверяется, что наследник задал эти поля. А с абстрактными методами ему придется их реализовывать.
>>643705
По идее сортировать надо с помощью класса Collator из расширения intl: https://github.com/codedokode/pasta/blob/master/php/collation.md
На будущее погугли про иммутабельность. И вообще лучще не удалять из структуры, а возвращать новую, с нужными данными.
Типа вот так:
https://ideone.com/eAAXuO
Щас с Авито развлекаюсь.
И как дело дошло до вытаскивания больших данных - меня авито начало отфутболивать.
Редиректит мои запросы на "https://www.avito.ru/blocked",
и кадает заголовки "X-Content-Type-Options=nosniff"
Парсер на ноде у меня,может эта барышня асинхронно устраивает "бомбалейо" для сервера авито? Типа в секунду много запросов. И авито меня отфутболивает из за этого?
Или еще какая причина?
заголовки я выставлял будто я браузер.
Где почитать инфы на тему парсинга и всякого такого?
Я уже писал, но чот дольше того, что fetch пуст дело не пошло. Пробовал fetchAll, дает пусто массив array(0) { }.
Анон, как, блять, взять то, что я в prepare запросил?
Может, нет записи с таким логином?
Также, посмотри примеры тут https://www.php.net/manual/ru/pdo.error-handling.php и выставь PDO::ERRMODE_EXCEPTION если он еще не выставлен, для сообщения об ошибках.
Пыха еще тебя переживет не пизди
Держи нас в курсе.
Мне кажется ты не то делаешь. Как ты из подготовленного запроса хочешь взять массив? Это же строка. Попробуй взять так - $ex->fetch(...);
алсо, как еще прикрутить datetimеfield по нормальному и чтобы его распарсить оптом в конроллере?
Если не знаешь как сделать - найми программиста. Нефиг самому лезть.
Ну раз он никому не нужен, так проходи мимо, к более нужным языкам, тебя вроде сюда силой никто не загонял.
Какой фреймворк?
Потому что в аргументах функции нельзя задать принятие параметров в конкретный индекс массива. Делай это ручками, если надо, в теле функции уже.
А еще лучше не делай, помой руки с мылом, и сходи поспи своим наркоманским сном. Кто знает, вдруг ты проснешься другим человеком.
Можно ли заменит эту рекапчу на капчу с дашачана, или как-то сделать так что бы всегда рекапча давала выбрать картинки а не крутилось 4 минуты без результата?
Сколько будет стоить такое у вас или на фриланс ру там?
вот это апи
https://2ch.hk/api/index.html (М)
Запись такая есть, пробовал другие логины, но результат всегда один: bool(false) - вардамп fetch.
Про отрибут ошибок знаю, включено это: setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Но вряд ли для них пустой массив это ошибка.
>>646038
>$ex->fetch(...);
Анон, но ведь в $ex лежит только TRUE. Вряд ли это даст мне массив. Я попробовал, словил ошибку 502 о неверном запросе.
Пиздец. Я не знаю, что не так, аноны. Не понимаю просто.
Теперь он мне сообщает, что не может найти этот сервис-провайдер и вообще ничего не позволяет делать. Какого хуя? Почему фреймворк пишет куда-то себе такие неочевидные вещи, в результате чего я вынужден воевать с ним, а не делать очередное ненужное приложение?
Его вообще мои сервис-провайдеры касаться не должны - удалил, почистил конфиги и забыли. Как жить то теперь?
Хвала святому гиту - откатил и аккуратно удолил.
Вроде работает как надо.
Держу в курсе.
Вообще есть у кого советы на такой случай, кроме очевидных сейвпоинтов на гите?
>Хвала святому гиту - откатил и аккуратно удолил.
В следующий раз попробуй git clean -xn, n покажет тебе что удалит, но удалять пока ничего не будет
>Вообще есть у кого советы на такой случай, кроме очевидных сейвпоинтов на гите?
В данном случае хз что у тебя там произошло, можешь попробовать или руками снести всё в bootstrap/cache или через команду clear-compiled, сюда еще добавить cache:clear, config:clear, route:clear, view:clear если ты накой-то хуй в деве кешируешь это говно
У меня был такой вариант и оно работает
>В следующий раз попробуй git clean -xn, n покажет тебе что удалит, но удалять пока ничего не будет
Удалял уже я, выполняя clear-compiled и dump-autoload через каждое движение. Гитом только состояние сбросил на последний коммит, где всё нормально работало.
>через команду clear-compiled, сюда еще добавить cache:clear, config:clear, route:clear, view:clear
В том то и дело, что он не выполнял никакие команды вообще - писал, что не найден такой-то сервис провайдер и всё.
>руками снести всё в bootstrap/cache
Я видел, что там прописана эта зависимость, но когда сносил, то вообще всё работать переставало. Хз что это было такое.
Через QB делаю запрос, который выбирает нужные мне id. Но есть проблема (и видимо все дело в этом): он возвращает массив массивов (проверил через dd: что с getResult, что с getScalarResult).
Я думаю, что оставшаяся часть с удалением, где я просто в выражение вида "t.id IN (:param)", в :param поставляю getDql от подзапроса сработает отлично, если эта хуета вернет мне тупо массив id, а не массив массивов с id.
В select - 't.id', больше ничего, если что.
PHP-шники, подскажите, блядь. Что за хуйня происходит? Последние 3 года работал на одной и той же работает, получал свою "условно сотку" и радовался жизни. Стек: PHP, Laravel, MySQL, Redix, чуть-чуть React/Node.
Благодарю ЕБАНОМУ коронавирусу мой работодатель просто взял и за два месяца обанкротился (бизнес был связан с перевозками пассажиров, перевозки всё). Всех уволили, офис даже закрыли.
Постю резюме на hh.ru. И уже который собес меня ебут чем-то типа:
- напишите интернет-магазин на symfony + react за 6 часов
- как сделать селект у кластера из 1000 mysql-серверов?
- с postgres не работали? идите нахуй
- а мы еще кодим на python и go, помимо php, идите нахуй
- то есть как это вы забыли L в SOLID, идите нахуй
- напишите микро-фреймворк, у вас два часа
- как бы вы оптимизировали супер-сложный-и-медленный запрос (запрос не показывают), если все индексы расставлены правильно? нет, джоины на подзапросы менять нельзя. не знаете? идите нахуй
- забыли чем отличается ES5 от ES6, хотя претендуете на бекенд? идите нахуй
- работали с очередями, но не работали с RabbitMQ, идите нахуй
- шлют тестовые задания на JS, хотя указано, что я хочу PHP
- не знаете как организовать шаблон чейн респонсибилити в ларавеле через внутренние механизмы? нахуй
- назвали вообще не все шаблоны, а только те, которые помните? нахуй
- не писали на тайпскрипт, нахуй
И так далее. Я сижу и охуеваю. Что, блядь, случилось за 3 года? Я на миддла претендую, а не надо сеньера с богатейшим опытом.
Последний раз, когда я собеседовался (3 года назад), такого пиздеца не было, обычно спрашивали про опыт, какую-нибудь задачку, знаю ли я джоины, грубо говоря, и всё. Теперь это норма что ли или где? Требования на мидла PHP так выросли?
Отчаялся, переделал резюме, сделал пометку, что ищу место на джуна (хотя на последней работе считался сеньером, блядь), только НАУЧИТЕ. Вообще звонить перестали.
Я даже не понимаю, блядь, за что хвататься, что подтягивать в первую очередь.
В общем, я в ахуе. Кредиты есть. Долги есть, в том числе уже и за ЖКХ. А работа не ищется, от слова "совсем". Один плюс, хоть хата своя, но и это уже не выглядит таким уж плюсом.
PHP-шники, подскажите, блядь. Что за хуйня происходит? Последние 3 года работал на одной и той же работает, получал свою "условно сотку" и радовался жизни. Стек: PHP, Laravel, MySQL, Redix, чуть-чуть React/Node.
Благодарю ЕБАНОМУ коронавирусу мой работодатель просто взял и за два месяца обанкротился (бизнес был связан с перевозками пассажиров, перевозки всё). Всех уволили, офис даже закрыли.
Постю резюме на hh.ru. И уже который собес меня ебут чем-то типа:
- напишите интернет-магазин на symfony + react за 6 часов
- как сделать селект у кластера из 1000 mysql-серверов?
- с postgres не работали? идите нахуй
- а мы еще кодим на python и go, помимо php, идите нахуй
- то есть как это вы забыли L в SOLID, идите нахуй
- напишите микро-фреймворк, у вас два часа
- как бы вы оптимизировали супер-сложный-и-медленный запрос (запрос не показывают), если все индексы расставлены правильно? нет, джоины на подзапросы менять нельзя. не знаете? идите нахуй
- забыли чем отличается ES5 от ES6, хотя претендуете на бекенд? идите нахуй
- работали с очередями, но не работали с RabbitMQ, идите нахуй
- шлют тестовые задания на JS, хотя указано, что я хочу PHP
- не знаете как организовать шаблон чейн респонсибилити в ларавеле через внутренние механизмы? нахуй
- назвали вообще не все шаблоны, а только те, которые помните? нахуй
- не писали на тайпскрипт, нахуй
И так далее. Я сижу и охуеваю. Что, блядь, случилось за 3 года? Я на миддла претендую, а не надо сеньера с богатейшим опытом.
Последний раз, когда я собеседовался (3 года назад), такого пиздеца не было, обычно спрашивали про опыт, какую-нибудь задачку, знаю ли я джоины, грубо говоря, и всё. Теперь это норма что ли или где? Требования на мидла PHP так выросли?
Отчаялся, переделал резюме, сделал пометку, что ищу место на джуна (хотя на последней работе считался сеньером, блядь), только НАУЧИТЕ. Вообще звонить перестали.
Я даже не понимаю, блядь, за что хвататься, что подтягивать в первую очередь.
В общем, я в ахуе. Кредиты есть. Долги есть, в том числе уже и за ЖКХ. А работа не ищется, от слова "совсем". Один плюс, хоть хата своя, но и это уже не выглядит таким уж плюсом.
Думал всю жизнь на одном стекер просидеть? А вот хуй.
Технологии развиваются семимильными шагами.
Тоже ахуеваю от мидловых собесов. На каждом спрашивают про хуйлоад, про еба архитектуры, про докер, про оптимизацию скл запросов.
Каждый третий кидает тестовое (хотя есть круды на гитхабе), где нужно запилить еба за вечер (работы на неделю), покрыть тестами, отрефакторить, оптимизировать под хуйлоад и запаковать в докер шоб поднималось одной кнопкой. В половине тестовых еще и на фронте спа запилить (вью/реакт).
Ну и хули делать, сижу осваиваю докер.
>Благодарю ЕБАНОМУ коронавирусу мой работодатель просто взял и за два месяца обанкротился (бизнес был связан с перевозками пассажиров, перевозки всё). Всех уволили, офис даже закрыли.
Пиздёж какой-то. Что за бизнес такой, который за неделю выходных накрылся? Очевидно же, что потом опять эти перевозки начнутся.
Максимум отправят тебя в неоплачиваемый отпуск.
Недельный карантин сделали только для того, чтоб люди не заражались пачками и не создавали диких очередей в медучереждениях, а болели по очереди. Переболеют, один хер, все.
>Кредиты есть. Долги есть, в том числе уже и за ЖКХ.
Чё, за неделю уже накопились? Нихуя ты даёшь!
Ладно тебе пиздеть-то - и так в "Мы вам перезвоним" треде всё засрал своей короной, шизоид.
Некоторые примеры похожи на толстоту.
Особенно этот
>напишите интернет-магазин на symfony + react за 6 часов
Ты зря так перегибаешь. Даже если тестовое звучит похоже на это, то с конкретикой небось окажется, что все адекватно для 6 часов. А скорее всего даже 6 часов никаких нет, а "до завтра" например.
Некоторые вменяемые, но ты их выставляешь как что-то неподъемное.
Например вот:
>напишите микро-фреймворк, у вас два часа
На самом деле 2 часов и правда достаточно.
>не знаете как организовать шаблон чейн респонсибилити в ларавеле через внутренние механизмы?
Инжой бытие ларавел-разработчиком. На самом деле удивительно, почему ты не знаешь свой единственный фрейм из стека до дыр. За такое время нормальные люди уже в коде фреймворка ориентируется, как в своем.
Возможно вещами типа "у нас тут постгрес, так что вы нам не подходите" или "нууу тут еще питон" срезают конкретно тебя, а реальную причину называть не хотят. Как и добрая половина твоих этих пунктов.
Проверь, пожалуйста.
http://sandbox.onlinephpfunctions.com/code/5f0893bc30f217e4c660a90a081dc5dbd156445e
С генерацией комбинации с помощью генератора справился вот так https://ideone.com/XhuCwE.
Следующим моим шагом уже стало решение задачи про банкомат, следуя твоим советам, сделал так: одна функция генерирует комбинации, по примеру как с числами, тут только вопрос правильно ли я это осуществил генерацию комбинаций купюр, с числами было попроще. Другая функция проверяет комбинацию, соответствует ли комбинацию тому количеству денег , которое требуется выдать. Сделал все это пока без оптимизации, хочется для начала узнать адекватно ли я вообще написал этот код , и есть ли тут грубые ошибки. Вот сам код https://ideone.com/6tgkDv . Далее уже буду делать оптимизацию.
Есть еще вопрос , можно же было бы осуществить все без генераторов запихнув функцию проверки в функцию генерации комбинации https://ideone.com/5L3qJh , или это ужасно выглядит ?
>>638518
Первый код из-за поставленной точки в конце не открывается , вот он если что https://ideone.com/XhuCwE
>>645512
Огромное спасибо за просмотр кода и ценные советы по его улучшению! Однако есть затруднения.
> В сотрудниках лучше использовать абстрактные методы вроде getBasePay() для определения базовых ставок.
Я поправил код, удалив поля в абстрактном классе Employee, которые получают разные значения в каждом субклассе и определив ряд дополнительных методов.
Kак иначе? Ведь если я объявлю те поля в абстрактном классе и забуду задать им значения в наследниках, то они автоматом примут значение 0 и код сработает, но даст некорректный результат.
Однако тут я столкнулся с дилеммой.
Вариант 1: https://ideone.com/OVnT1P
Новые методы возвращают свойства не объявленные в данном классе. Сами те методы не являются абстрактными. Таким образом мне не нужно их имплементировать в каждом наследнике - код становится короче.
Однако не нарушает ли данное решение принципа, который ты упомянул в учебнике: предки не должны знать ничего о своих наследниках?
Вариант 2: https://ideone.com/SLNNfE
Новые методы являются абстрактными. Соответственно, абсолютно идентичный код копируется в каждом наследнике, зато принцип вроде как соблюдается.
Что лучше?
> В конструкторе Департамента не надо создавать сотрудников. Надо принимать просто объекты сотрудников. Этим должен заниматься код, разбирающий массив, создающий объекты сотрудников, и передающий их в нужные отделы.
Меня все-таки интересует возможное решение с тем форматом массива, который ты предложил здесь: >>637453
То есть без указания принадлежности к отделу и статуса начальника:
$employees = [
// count, profession, rank
[3, Employee::JOB_MANAGER, 1],
[5, Employee::JOB_ENGINEER, 2],
...
];
Я разбираю входящий массив при помощи функции, которая не относится ни к одному классу? Создаю объекты и складываю в другой массив? Или все-таки сразу же распределяю по департаментам?
В любом случае я не очень понимаю, как то осуществить в условиях отсутствия каких-либо указаний на принадлежность к отделу и статуса начальника в стартовом массиве.
То есть, вот я сложил все получившиеся объекты в единый массив: https://ideone.com/ikKea2
Но как их теперь автоматизированно разбросать по отделам? Меня очень интересует твой вариант.
Тот формат начального массива, который я составил, вероятно, выглядит витеевато, однако в нем я поместил все указания, без которых я затрудняюсь следовать дальше. Вот он с функцией разбора: https://ideone.com/P8mQ6j
>>645512
Огромное спасибо за просмотр кода и ценные советы по его улучшению! Однако есть затруднения.
> В сотрудниках лучше использовать абстрактные методы вроде getBasePay() для определения базовых ставок.
Я поправил код, удалив поля в абстрактном классе Employee, которые получают разные значения в каждом субклассе и определив ряд дополнительных методов.
Kак иначе? Ведь если я объявлю те поля в абстрактном классе и забуду задать им значения в наследниках, то они автоматом примут значение 0 и код сработает, но даст некорректный результат.
Однако тут я столкнулся с дилеммой.
Вариант 1: https://ideone.com/OVnT1P
Новые методы возвращают свойства не объявленные в данном классе. Сами те методы не являются абстрактными. Таким образом мне не нужно их имплементировать в каждом наследнике - код становится короче.
Однако не нарушает ли данное решение принципа, который ты упомянул в учебнике: предки не должны знать ничего о своих наследниках?
Вариант 2: https://ideone.com/SLNNfE
Новые методы являются абстрактными. Соответственно, абсолютно идентичный код копируется в каждом наследнике, зато принцип вроде как соблюдается.
Что лучше?
> В конструкторе Департамента не надо создавать сотрудников. Надо принимать просто объекты сотрудников. Этим должен заниматься код, разбирающий массив, создающий объекты сотрудников, и передающий их в нужные отделы.
Меня все-таки интересует возможное решение с тем форматом массива, который ты предложил здесь: >>637453
То есть без указания принадлежности к отделу и статуса начальника:
$employees = [
// count, profession, rank
[3, Employee::JOB_MANAGER, 1],
[5, Employee::JOB_ENGINEER, 2],
...
];
Я разбираю входящий массив при помощи функции, которая не относится ни к одному классу? Создаю объекты и складываю в другой массив? Или все-таки сразу же распределяю по департаментам?
В любом случае я не очень понимаю, как то осуществить в условиях отсутствия каких-либо указаний на принадлежность к отделу и статуса начальника в стартовом массиве.
То есть, вот я сложил все получившиеся объекты в единый массив: https://ideone.com/ikKea2
Но как их теперь автоматизированно разбросать по отделам? Меня очень интересует твой вариант.
Тот формат начального массива, который я составил, вероятно, выглядит витеевато, однако в нем я поместил все указания, без которых я затрудняюсь следовать дальше. Вот он с функцией разбора: https://ideone.com/P8mQ6j
Php 7
Вот у индусов всё получается, а у меня нетъ.
Вот элемент на основной страничке.
<select>
<?php
require_once('s_num_car.php');
while($row1=mysqli_fetch_array($zapros1))
?>
<option value="<?php echo $row1[0]; ?>"><?php echo $row1[0]; ?></option>
</select>
Вот тут скрип доставания записей.
s_num_car.php
<?php
require_once('c.php');//это говно работает как надо.
$sql="select * from cars";
$zapros1 = mysqli_query($con,$sql);
?>
Почему не выводится тело if?
Все же правильно!
https://ideone.com/Min7CF
<?php
$value=5;
$nb=463;
$factorial=gmp_fact($value);
if($factorial <= $nb){
echo intdiv($nb, $factorial);
}
А обсер знаете в чем был? В ЕБУЧИХ КАВЫЧКАХ СУКА.
Спасибо, дал бы сразу наводку про GMP. А то я даже и не слышал про такое)
Я сам SQL не очень люблю - байтопердолики ни ошибки внятно вывести не могут, ни синтаксис сделать вменяемый.
Чистые запросы копипащу, когда приходится, а так либо билдер, либо ОРМ использую.
Он смешно одбристался не в самом sql даже, но ты зачем-то именно про sql зашел поныть. Уровень знаний посетителей треда - один познает подстановку параметров, на что никто ему не может ответить, потому что в упор нихуя не видят сами, а второй занимается копипастом запросов и не может pdo от sql отличить.
Второй поди уже работает и какой-нибудь гордый "состояшийся" ларавел-мидл, как дурачек выше по треду с толстотой про поиск работы.
>первый
>второй
А третий пришёл пукнуть своим важным мнением.
Советы, дурачок ты мамин, надо было раздавать когда тебя спрашивали.
Кароч даю советы по пунктам:
1. Если в тестовом микрозалупамагазин сразу шли нахуй, эти пидоры времени людей вообще нихуя не ценят. Разбирать твою писанину никто не станет, в лучшем случае просмотрят. А ты ведь стараться будешь, душу вкладывать. Сразу нахуй.
2. Никак. Нет в природе MySql кластера на 1000 нод. Пытаться делать что-то такое это как забивать гвозди хуем, звучит круто, а на деле хуи меняются, а работа не сделана.
3. Поработай с постгресом, на деле хватит изучить как работают CTE, все равно будут спрашивать только используешь ли ты их.
4. Ну тут хуйня какая-то если обязательно нужны другие языки, то как ты до собеса добрался вообще? Лечи что изучишь как только так сразу, скорее всего не придется.
5. Так выучи уже эту поеботу, там пять букв сука.
6. Смотри пункт один.
7. Звучит как хуйня, тут либо спрашивает некомпетентный уебан, либо ты слишком утрированно описал. Оптимизация такого запроса это попытка наебать планировщик базы, и если выгодно писать подзапрос, то ты пишешь подзапрос или сосешь бибу.
8. Не нравятся вопросы по фронту, сразу говори что фронт в рот ебал, сэкономишь время.
9. Подними в докере ебучий реббит и отправь/прими пару сообщений и все, ты работал с очередями, нихуя там сложного нет.
10. Сразу нахуй.
11. Я бы сразу нахуй слал, лютая завязка на фреймворк никого до добра не доводила. Потом нужно будет гланды через ларавель удалять, а очко твое не казенное.
12. Смотри пункт пять, открой рефактоинг гуру и под пивас почитай, делов на час, а пользы как от бутылки пива.
13. Смотри пункт восемь. Лезешь на фуллстека, получай по хую в каждую дырку.
bamp
Сука, ты - это я, один в один, я чуть слезу не пустил.
> Тоже ахуеваю от мидловых собесов. На каждом спрашивают про хуйлоад, про еба архитектуры, про докер, про оптимизацию скл запросов.
Same. Причем я уже не понимаю, что им нужно, блядь. На каждом собесе разные технологии. Где-то спрашивают про одно, где-то про другое, где-то вообще "напишите мне хайлоад на коленке" (только что было такое). Как мне поработать с хайлоад, если меня не берут, блядь, на хайлоад? Впрочем, похоже, вообще никуда не берут уже.
> Каждый третий кидает тестовое (хотя есть круды на гитхабе), где нужно запилить еба за вечер (работы на неделю), покрыть тестами, отрефакторить, оптимизировать под хуйлоад и запаковать в докер шоб поднималось одной кнопкой.
Да. Тестовые - просто доебали. Я за день связался с пятью компаниями и все выслали тестовые. Мне эти тестовые теперь надо месяца полтора делать. И как мне быть? Пока я их пилю, там вакансии уже закроются. Я закономерно забил хуй на самые сложные из них (типа "напишите нам интернет-магаз на symfony + react" и еще требований к нему на два листа А4).
> Ну и хули делать, сижу осваиваю докер.
Я тоже осваиваю. Прочитал книгу, запилил себе докер конфиг для docker-compose. В итоге на последнем собесе был такой диалог:
- Знакомы с докер?
- Да, использую его для разработки на локальной машине, контейнеры удобнее, чем поднимать всё руками, хуйемо.
- Ааааа как бы вы сконфигурировали докер для CI/CD на продакшн сервере под нагрузкой?
- ........ не знаю.
Сука. Где вообще вакансии вменяемые? Почему они считают, что я должен знать вообще все на свете?
На одном собесе хотят, чтобы я мог йоба-sql запросы написать, а на другом гоняли, ты не поверишь, по внутренностям PHP - как в PHP работает хешмап, что такое zval, как работает GC и прочее.
На последних двух работах не то, что никого всё это не ебало, никто, наверное и не в курсе был. Там люди не успевали задачи-то решать толком, ибо задач вагон, времени нихуя и т.п.
Слушай, спасибо тебе за адекватный ответ. Я только одно уточнить хочу - ты сейчас работаешь, именно PHP? Просто я не вижу вакансий, где PHP-шнику не нужен JS (либо их две из ста, грубо говоря, а попытки-то не бесконечные).
Ты наркоман что ли? При чем тут "стоить"? Капча интегрирована в бекенд двача. Капча работает не только в твоем браузере.
>>647198
Без обид, поцаны, я жутко горел, когда писал. И до сих пор горю, но не так сильно. Давайте поясню, что ли. Всё равно собесы доебали уже, сил нет.
> Пиздёж какой-то. Что за бизнес такой, который за неделю выходных накрылся?
Мелкий бизнес, собственно. Маленькая команда, несколько своих проектов, которые приносят доход. Зарплата меня устраивала, но больше всего нравились коллеги, охуенные прямо, поэтому никак не мог решиться сменить работу. А разорились очень просто: у туризма январь и февраль всегда провальные месяцы, почти никто не ездит. А к марту началась херня с нефтью, короной и вот это всё. В итоге их финансовой подушки хватило на 3 месяца и гудбай. Дело не в самом карантине, а вообще в обстановке в целом.
> Чё, за неделю уже накопились? Нихуя ты даёшь!
Не за неделю, за две-три где-то. Я ж тут не отчет пишу, а крик души. Платежный период, все дела. Сейчас не плачу за ЖКХ, ибо денег нихуя.
> "Мы вам перезвоним" треде всё засрал своей короной
Я там пару постов сделал, наркоман. Кто тут еще пиздит-то.
> Ты зря так перегибаешь
Да, я тут откровенно утрирую. Срок на такую задачу дали около 5 дней. Проблема в том, что ВСЕ дали тестовое, той или иной степени сложности. Да и вообще, у меня нет этих, блядь, пяти дней, мне работа нужна сейчас.
> На самом деле 2 часов и правда достаточно.
Я около 5 часов только свой роутер придумывал, чтобы он не был роутером инвалида (и всё равно он мне не нравится). Может быть я тупой, конечно, но за 2 часа написать фреймворк, даже простой, это невозможно.
> На самом деле удивительно, почему ты не знаешь свой единственный фрейм из стека до дыр
Я его использую, а не программирую. Все проекты, что я на нем видел - это ж детский сад. MVC, роутинг, модели, очереди и еще что-нибудь, ну и всё. Там не надо никуда лезть, чтобы в этом разобраться и сидеть себе, фигачить проект. Для чейн респонсибилити используется встроенный в Laravel пайплайн (я это уже потом узнал), но я ни разу не видел ничего даже близкого к такому в реальном проекте. Просто MVC, если контроллер стал толстый (да, все пихали логику в контроллер), делаем сервис. Это максимум просто из того, что я видел.
> а реальную причину называть не хотят
Вот тут ты, может быть, прав, согласен. Но, справедливости ради, другие языки и правда иногда нужны (у кого-то микросервисы на GO, у кого-то легаси на Python и они его переписывают на PHP и т.п.).
Хотя весь фидбек, который удалось выпросить, коротко можно описать как "вы слабый программист" (где-то я не знаю сложность поиска по какому-нибудь красно-черному дереву, где-то вот забыл L в SOLID, где-то не знаком с Монго, где-то еще что-то).
Вопрос в том, как пробиться на работу, чтобы получить опыт всего этого? Я готов пахать хоть сутками, но не могу найти тех, кто взял бы.
>>647198
Без обид, поцаны, я жутко горел, когда писал. И до сих пор горю, но не так сильно. Давайте поясню, что ли. Всё равно собесы доебали уже, сил нет.
> Пиздёж какой-то. Что за бизнес такой, который за неделю выходных накрылся?
Мелкий бизнес, собственно. Маленькая команда, несколько своих проектов, которые приносят доход. Зарплата меня устраивала, но больше всего нравились коллеги, охуенные прямо, поэтому никак не мог решиться сменить работу. А разорились очень просто: у туризма январь и февраль всегда провальные месяцы, почти никто не ездит. А к марту началась херня с нефтью, короной и вот это всё. В итоге их финансовой подушки хватило на 3 месяца и гудбай. Дело не в самом карантине, а вообще в обстановке в целом.
> Чё, за неделю уже накопились? Нихуя ты даёшь!
Не за неделю, за две-три где-то. Я ж тут не отчет пишу, а крик души. Платежный период, все дела. Сейчас не плачу за ЖКХ, ибо денег нихуя.
> "Мы вам перезвоним" треде всё засрал своей короной
Я там пару постов сделал, наркоман. Кто тут еще пиздит-то.
> Ты зря так перегибаешь
Да, я тут откровенно утрирую. Срок на такую задачу дали около 5 дней. Проблема в том, что ВСЕ дали тестовое, той или иной степени сложности. Да и вообще, у меня нет этих, блядь, пяти дней, мне работа нужна сейчас.
> На самом деле 2 часов и правда достаточно.
Я около 5 часов только свой роутер придумывал, чтобы он не был роутером инвалида (и всё равно он мне не нравится). Может быть я тупой, конечно, но за 2 часа написать фреймворк, даже простой, это невозможно.
> На самом деле удивительно, почему ты не знаешь свой единственный фрейм из стека до дыр
Я его использую, а не программирую. Все проекты, что я на нем видел - это ж детский сад. MVC, роутинг, модели, очереди и еще что-нибудь, ну и всё. Там не надо никуда лезть, чтобы в этом разобраться и сидеть себе, фигачить проект. Для чейн респонсибилити используется встроенный в Laravel пайплайн (я это уже потом узнал), но я ни разу не видел ничего даже близкого к такому в реальном проекте. Просто MVC, если контроллер стал толстый (да, все пихали логику в контроллер), делаем сервис. Это максимум просто из того, что я видел.
> а реальную причину называть не хотят
Вот тут ты, может быть, прав, согласен. Но, справедливости ради, другие языки и правда иногда нужны (у кого-то микросервисы на GO, у кого-то легаси на Python и они его переписывают на PHP и т.п.).
Хотя весь фидбек, который удалось выпросить, коротко можно описать как "вы слабый программист" (где-то я не знаю сложность поиска по какому-нибудь красно-черному дереву, где-то вот забыл L в SOLID, где-то не знаком с Монго, где-то еще что-то).
Вопрос в том, как пробиться на работу, чтобы получить опыт всего этого? Я готов пахать хоть сутками, но не могу найти тех, кто взял бы.
Да я чисто бекэнд пхп макака сеньор помидор.
Ну не бывает так, что человек в равной степени шарит и в ES6 и в бэке. Эти темы настолько разные и объемные, что занимаясь одним, теряешь в другом. Про верстку я вообще не говорю.
Когда хотят фуллстека, и доебываются что ты хуево знаешь одну из частей, то тут явно пиздежь и наебка. Ну нет в природе таких самородков, тем более мидлов.
Все это хуйня, не парься. Просто подтягивай то в чем просел на собесе и иди на следующий. Все будет. Я на собесах двадцати побывал, пока нашел норм контору. На таких долбоебов насмотрелся пизда, и это при зп от 200К, че там у джунов представить боюсь.
Если у тебя опыт от года смело пиши мидл, мнение ебланов с собеса близко к сердцу не принимай, просто подтягивай то на чем прокололся и иди дальше.
>На таких долбоебов насмотрелся пизда
Да я по ХХ смотрю - долбоёбов в этой сфере просто пропасть. Причём с обеих сторон.
>Я тоже осваиваю. Прочитал книгу, запилил себе докер конфиг для docker-compose. В итоге на последнем собесе был такой диалог:
- Знакомы с докер?
- Да, использую его для разработки на локальной машине, контейнеры удобнее, чем поднимать всё руками, хуйемо.
- Ааааа как бы вы сконфигурировали докер для CI/CD на продакшн сервере под нагрузкой?
- ........ не знаю.
В конец охуели мрази. Им уже не бек нужен, не фулстак, а еба фулстек-девопс
Если дело в кавычках, то в таком случае PDO должен был выкинуть исключение, и ты бы увидел там подробности ошибки. Значит, ты либо не включил ERRMODE_EXCEPTION, как тебе советовали, либо как-то еще скрыл вывод ошибок.
Не скрывай ошибки и не отключай выброс исключений, чтобы не тыкаться как слепой котенок, пытаясь угадать причину проблемы.
Я это написал скорее как совет, и тебе на будущее, и другим: всегда включайте вывод ошибок, не пытайтесь их ловить и скрывать, или отключать.
Давайте поплачемся с другой стороны. Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях. Или отвечают "я думаю, это всегда можно в гугле найти, незачем это знать".
Про фронтенд лучше вообще не спрашивать - никто ничего не знает. Видимо, им еще личный раб-верстальщик нужен для работы. Зарплату ему оплатить изволите?
Некоторые вообще разговаривают, как будто у них отклонения. На четко сформулированный вопрос (вы не представляете, сколько времени и сил уходит на их составление) вместо четкого ответа начинают уходить куда-то в сторону и вспоминать как что-то когда-то похожее делали (причем делал кто-то другой, он просто в сторонке стоял). Как будто с искуственным интеллектом разговариваешь.
Или N лет опыта с Симфони в резюме - объяснить, что делает persist, не может. Как вы N лет используете функцию, не зная, что она делает, а?
Чем они все 10 лет занимались? Зимнюю резину в магазине впаривали? Вы бы лучше вместо курсов по повышению самоуверенности запросы поучились оптимизировать и мануалы почитали. Кому нужны ваши софт скиллы? Выучите, что такое дерево и как устроен индекс для начала.
Зато любой может рассказать про микросервисы (принцип "пришел, внедрил, свалил") и паттерны. С этими паттернами вообще какая-то проблема, я видел как люди вместо функции со свитчем сделали стратегию с 16 классами с наследованием и трейтами. Я бы лично отсеивал всех, кто хоть что-то пискнет хорошее про паттерны или микросервисы. Вы не Фаулер, и работать устраиваетесь не в Гугл. Ваши микросерисы тут даром не нужны. У нас денег столько нету, чтобы это поддерживать.
Блин, из-за вас приходится половину вопросов снимать и ставить вопросы чуть ли не школьного уровня, чтобы хоть кто-то их решил. Как-то разговаривать еще можно с 15-20 летними и не фейспальмить, с теми, кто еще спектрумы ковырял.
У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
Конечно, я понимаю, крутые спецы все сидят на хорошей работе, на зарубеж, и у нас пряников столько нету, чтобы к себе переманить. Все, что мы можем - выгребать из этого болота хоть что-то понимающих кандидатов, которые может быть, будут нормально работать.
> забыли чем отличается ES5 от ES6
Ну блин, синтаксис классов в голову не приходит? Ты хоть раз в жизни учебник JS открывал? Есть 3 версии, ES3, ES5 и Es6 и более новые версии, и уж минимум несколько их особенностей выучить можно. А то потом такие как вы пишут код, что в телефоне 3-летней давности сайт не работает.
Алсо, половина вопросов и заданий какие-то даунские, я не верю, что такие бывают, так они вообще никого не найдут никогда. Пора, видимо, услуги собеседователя или консультанта по найму предлагать.
Тестовых сложнее, чем на полчаса-час-два не давал ни разу.
Давайте поплачемся с другой стороны. Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях. Или отвечают "я думаю, это всегда можно в гугле найти, незачем это знать".
Про фронтенд лучше вообще не спрашивать - никто ничего не знает. Видимо, им еще личный раб-верстальщик нужен для работы. Зарплату ему оплатить изволите?
Некоторые вообще разговаривают, как будто у них отклонения. На четко сформулированный вопрос (вы не представляете, сколько времени и сил уходит на их составление) вместо четкого ответа начинают уходить куда-то в сторону и вспоминать как что-то когда-то похожее делали (причем делал кто-то другой, он просто в сторонке стоял). Как будто с искуственным интеллектом разговариваешь.
Или N лет опыта с Симфони в резюме - объяснить, что делает persist, не может. Как вы N лет используете функцию, не зная, что она делает, а?
Чем они все 10 лет занимались? Зимнюю резину в магазине впаривали? Вы бы лучше вместо курсов по повышению самоуверенности запросы поучились оптимизировать и мануалы почитали. Кому нужны ваши софт скиллы? Выучите, что такое дерево и как устроен индекс для начала.
Зато любой может рассказать про микросервисы (принцип "пришел, внедрил, свалил") и паттерны. С этими паттернами вообще какая-то проблема, я видел как люди вместо функции со свитчем сделали стратегию с 16 классами с наследованием и трейтами. Я бы лично отсеивал всех, кто хоть что-то пискнет хорошее про паттерны или микросервисы. Вы не Фаулер, и работать устраиваетесь не в Гугл. Ваши микросерисы тут даром не нужны. У нас денег столько нету, чтобы это поддерживать.
Блин, из-за вас приходится половину вопросов снимать и ставить вопросы чуть ли не школьного уровня, чтобы хоть кто-то их решил. Как-то разговаривать еще можно с 15-20 летними и не фейспальмить, с теми, кто еще спектрумы ковырял.
У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
Конечно, я понимаю, крутые спецы все сидят на хорошей работе, на зарубеж, и у нас пряников столько нету, чтобы к себе переманить. Все, что мы можем - выгребать из этого болота хоть что-то понимающих кандидатов, которые может быть, будут нормально работать.
> забыли чем отличается ES5 от ES6
Ну блин, синтаксис классов в голову не приходит? Ты хоть раз в жизни учебник JS открывал? Есть 3 версии, ES3, ES5 и Es6 и более новые версии, и уж минимум несколько их особенностей выучить можно. А то потом такие как вы пишут код, что в телефоне 3-летней давности сайт не работает.
Алсо, половина вопросов и заданий какие-то даунские, я не верю, что такие бывают, так они вообще никого не найдут никогда. Пора, видимо, услуги собеседователя или консультанта по найму предлагать.
Тестовых сложнее, чем на полчаса-час-два не давал ни разу.
Впринципе сейчас бекендеры многое из этого умеют на достаточном для себя уровне, т.к. просто удобство и культура разработки. Одно только но - ci/cd не на каждой работе пощупать удастся, даже если он там есть (либо ci/cd такие простые, что за опыт не считается).
>>648538
У меня получается больше одного стека технологий в голове удерживать, хотя есть основной, в котором я эффективнее всего работаю. Теряется при одновременной работе время. Фулстек делает, грубо говоря, 50% фронт и 50% бек от того, который мог бы сделать чисто на чем-то одном. Добавь еще к этому еблю с девопсом сейчас. Хотя она не ежедневная, так что 5% всего на это. В общем если работодатель понимает, что фулстак это экономия на качестве и не гнет пальцы, то они норм сосуществуют. Если нет - наступает тщетность бытия и забитый хуй на проект.
Алсо, когда увлеченно какие-то свои петы пилишь так и так становишься тем самым фулстеком. Иногда даже на несколько стеков.
Для чего и как это можно сплести в объятьях братских?
Не знаю. Я такой странноватый недовкатившийся. Сам себе программист, для своей конторы небольшое пхп-приложение запилил. С нодой люблю поковыряться. Но опыта совместной разработки у меня ноль. И опыта "вката" у меня тоже нет.
Пока что все тестовые что проходил - были вполне адекватные. В частности на пхп - что то типа таск менеджера оч простого, с пагинацией и фильтрами на ней. Все на чистом PHP 7< ООП и без фреймворков. Считаю это адекватным тестовым - потому что человек с опытом либо из своих исходников собирет свое MVC с роутером, моделями и валидаторами за пару часов, либо найдет по быстрому уже готовые классы и из них опять же соберет весь этот венегрет.
Другое тестовое было на ноде, оч простой фулл-стэк мини блог, с добавлением статей . Морда - реакт, бекенд нода/эксперсс. Можно было и фреймворки и либы. Тоже не пипец сложно. Но там все таки компания искала больше фронтреда, а я все же больше бекен. Реакт знаю слабо и не SPA.
Оба тестовых я сделал, но не в срок, и оба тестовых мне очень много дали. Так что совсем не адекватных заданий я не встречал.
А я с тобой не везде согласен.
>Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях. Или отвечают "я думаю, это всегда можно в гугле найти, незачем это знать".
Тебе чтобы водить машину тоже досконально двигатель внутреннего сгорания надо знать - какие там давления, какие топливо-воздушные смеси и тд? Или может всё же достаточно понимания общих принципов и знания ПДД?
А может и правда права вождения перестанем выдавать всем тем, кто магистратуру по автомобилестроению не сдавал?
У них 10+ лет опыта построения приложений согласно требованиям бизнеса, а не дрочки индексов. Наймите уже отдельно себе аутиста для баз данных - чтобы сидел и над индексами аутировал.
>Про фронтенд лучше вообще не спрашивать - никто ничего не знает.
Да тебе никакой жизни не хватит чтобы полный актуальный фуллстек знать. Человек с чем работал - то и знает.
Опять же - хочешь себе фронтенд если, то найми фронтендера.
>Зарплату ему оплатить изволите?
Дай угадаю - когда вы про фронтенд спрашиваете, то речи о, эквивалентной добавке к зарплате не идёт? Может это вы халявы хотите тогда?
>Вы бы лучше вместо курсов по повышению самоуверенности запросы поучились оптимизировать и мануалы почитали.
Снова туда же - программист не обязан знать базы данных досконально потому, что на его уровне это просто ещё один инструмент. Или наоборот - найми себе аутиста с БД и начни ещё возмущаться почему он неподдерживаемое говно пишет и сливает сроки вообще всегда.
>из-за вас приходится
Кого нас то? Люди работают как умеют - с тупняком, косяками и прочее. Это вообще к любой деятельности относится: от подметания улиц до построения АЭС в прибрежной зоне.
Думаешь сам идеальный? Твоя позиция впринципе инфантильна.
Хочешь лучше? Найми фронтендера для фронтенда, бекендера для бекенда, тестеров пачку, аутиста для бд и шлюх им всем на выходные например. Но обычно же так никто не делает - не делает по-нормальному.
>У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
А ты уверен, что говнокод люди по своей воле пишут? А как тогда с постоянными авралами например? А почему специалистов подороже не берём? Пряников нет на них? Ну так значит на ваших проектах будут говнокодеры учиться. Всё справедливо.
А я с тобой не везде согласен.
>Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях. Или отвечают "я думаю, это всегда можно в гугле найти, незачем это знать".
Тебе чтобы водить машину тоже досконально двигатель внутреннего сгорания надо знать - какие там давления, какие топливо-воздушные смеси и тд? Или может всё же достаточно понимания общих принципов и знания ПДД?
А может и правда права вождения перестанем выдавать всем тем, кто магистратуру по автомобилестроению не сдавал?
У них 10+ лет опыта построения приложений согласно требованиям бизнеса, а не дрочки индексов. Наймите уже отдельно себе аутиста для баз данных - чтобы сидел и над индексами аутировал.
>Про фронтенд лучше вообще не спрашивать - никто ничего не знает.
Да тебе никакой жизни не хватит чтобы полный актуальный фуллстек знать. Человек с чем работал - то и знает.
Опять же - хочешь себе фронтенд если, то найми фронтендера.
>Зарплату ему оплатить изволите?
Дай угадаю - когда вы про фронтенд спрашиваете, то речи о, эквивалентной добавке к зарплате не идёт? Может это вы халявы хотите тогда?
>Вы бы лучше вместо курсов по повышению самоуверенности запросы поучились оптимизировать и мануалы почитали.
Снова туда же - программист не обязан знать базы данных досконально потому, что на его уровне это просто ещё один инструмент. Или наоборот - найми себе аутиста с БД и начни ещё возмущаться почему он неподдерживаемое говно пишет и сливает сроки вообще всегда.
>из-за вас приходится
Кого нас то? Люди работают как умеют - с тупняком, косяками и прочее. Это вообще к любой деятельности относится: от подметания улиц до построения АЭС в прибрежной зоне.
Думаешь сам идеальный? Твоя позиция впринципе инфантильна.
Хочешь лучше? Найми фронтендера для фронтенда, бекендера для бекенда, тестеров пачку, аутиста для бд и шлюх им всем на выходные например. Но обычно же так никто не делает - не делает по-нормальному.
>У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
А ты уверен, что говнокод люди по своей воле пишут? А как тогда с постоянными авралами например? А почему специалистов подороже не берём? Пряников нет на них? Ну так значит на ваших проектах будут говнокодеры учиться. Всё справедливо.
>>646988
я вкатывальщик, но судя по логике тут два варианта
либо ты хуевый спец, у которого проблемы со скиламми или с общением на собеседовании ( это вариант мы не рассматриваем, ведь ты же крепкий мидл по твоим словам
либо у них завышенные требования, которые никто не может пройти и их этого делаем вывод, что им не так уж и нужен работник
а вообще это похоже на какую-то пасту из бэ в тредах вкатывальщиков. потому-что сейчас во время эпидемиии я вообще сомневаюсь, что кто-то ищет кадры
Ты же поехавший, ты себя слышишь? Вот твои требования к соискателю:
1) Знает нутрянку бд. Шарит в уровнях изоляции, помнит всю эту еботу на зубок.
2) Шарит в верстке, может див по центру другого дива расположить сходу, все это помнить без гугла разумеется.
3) Коммуникабельный и харизматичный.
4) Имеет абсолютно релевантный опыт, уже делал точно то что вам надо.
5) Знает что персист это доктрина, а не симфони и может грамотно послать нахуй чсв интервьюера.
6) Умеет оптимизировать запросы, шарит за планировщик базы.
7) Внезапно не коммуникабельный и не харизматичный.
8) Не просто знает паттерны, а как минимум несколько вывел сам и понимает когда в них возникает реальная необходимость, обычно просто пишет код, а паттерны возникают интуитивно.
9) Не использует паттерны (что бля?).
10) Не знает про современные методы разработки в крупных компания, не интересуется микросервисами (чего нахуй?).
11) Возрастом 15-20 лет, ковырял спектрумы.
12) Может нормально работать.
13) Знает чем отличается ES5 от ES6.
Насколько я понимаю это требования к фуллстек мидлу. В голове не укладывается как можно быть таким ебанутым и охуевшим одновременно. Даже в этих нескольких абзацах у тебя взаимоисключающие параграфы и шизофазия. Че там у тебя на собесах я представить боюсь.
Просто прикинь, что есть на свете кандидат, который соответствует этим требованиям, и подумай нахуй ты ему обосрался с твоими вопросами ебанутыми и со своей конторой? Если он это все умеет он может пойти КУДА УГОДНО БЛЯДЬ, для него, с таким набором скилов, открыты буквально все двери офисов на планете.
Вы заебали меня пастой называть. Пойди, запости резюме на ХХ и посмотри сам, как обстоят дела, все вопросы отпадут.
Надеюсь, я пока просто нарывался на неадекватов и всё. Я с тобой согласен, невозможно шарить во всём и сразу. Я тут полгода Java учил, хотел перекатиться (и обосрался в итоге). Но смысл в том, что через полгода Java я забыл к хуям даже PHP, начал писать public void method() и не понимать, чому оно не запускается.
Я к тому, что да, знать всё - это невозможно. Но эти пидорасы думают, что возможно.
Спасибо, бро. Так и делаю. Что характерно - узнал для себя много нового. Если бы не острая необходимость в деньгах, то собеседовался бы и радовался, т.к. их тестовые и их вопросы (даже не релевантные вакансии) на самом деле довольно полезные.
Думаю, те, кто это спрашивают, так и работают. Ищут за 80к человека, который может всё, еще и гендиру сосать будет. Самое страшное, что даже в Джавку это проникает, разговаривал тут с другом. В один крупный российский банк (я даже переписку видел) ищут людей, которые джава сеньеры на бекенде и JS-мидлы на фронте. Вот это я охуел.
У тебя что-то с памятью, так быть не должно. Добавь к этому свою проблем с ес5 и ес6 еще. И то и то похоже на одно и то же указывает.
Меня отдельно порадовало, что ты даже не думаешь о том, что человек может волноваться, для него это стресс. Меня сегодня собеседовали ВПЯТЕРОМ, блядь. Догадайся с трех раз: я забыл даже то, что неплохо знаю? Все ответы сказал именно так, как хотел? Не бился ли головой в стену после собеса, т.к. неожиданно придумал ответы гораздо лучше?
> Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях.
Ты вообще спрашиваешь, какой у них именно опыт? Я, например, честно говорю, что 6 лет педалил сайты на CMS, над большими проектами не работал и т.п. И объясни, что такое индексы. Серьезно.
> Про фронтенд лучше вообще не спрашивать - никто ничего не знает.
Какое серьезное обобщение, бро. Ощущение, что ты вообще никого не собеседовал на самом деле.
> Видимо, им еще личный раб-верстальщик нужен для работы. Зарплату ему оплатить изволите?
Во-первых, ты где их ищешь? Я готов педалить всё подряд, в том числе и фронт, только возьмите. Не берут. А ты пишешь, что все такие выебистые, что личного раба хотят. Один из нас пиздит? Во-вторых, с какого хуя разработчика должны волновать твои финансовые проблемы?
> вы не представляете, сколько времени и сил уходит на их составление
Бедненький ты наш. Ни сколько не уходит. Я собеседовал джунов, было наоборот прикольно перестать кодить и поделать что-то подобного рода.
> Некоторые вообще разговаривают, как будто у них отклонения. На четко сформулированный вопрос вместо четкого ответа начинают уходить куда-то в сторону и вспоминать как что-то когда-то похожее делали
Во-первых, ты заранее настроен к соискателю как к идиоту. Это сказывается на всех твоих выводах. Во-вторых, и что в этом не так? Соискатель пытается показать тебе, что он разберется в твоем вопросе при необходимости и похожий опыт у него есть. Нет, ты хочешь, чтобы было как ТЕБЕ нравится. Ну ищи дальше, хули. Идеального сотрудника ты не найдешь никогда.
> причем делал кто-то другой, он просто в сторонке стоял
Ты опять, пидорас, за других додумываешь? Не удивительно, что никого найти не можешь. А еще они все моральные уроды и по ночам ебутся в жопы, да? Хули, додумывать за других, так по-полной.
> Или N лет опыта с Симфони в резюме - объяснить, что делает persist, не может. Как вы N лет используете функцию, не зная, что она делает, а?
Я начинаю понимать. Ты, блядь, доебываешь людей какой-то хуетой, вопросами по каким-то мелочам. Что бы ты спросил, если я вообще с симфони не работал? А, ты сказал бы, что я конченный и послал бы, ясно.
> Вы бы лучше вместо курсов по повышению самоуверенности
Какую зарплату ты предлагаешь? А то сейчас окажется, что ты ищешь за 50к фулстек макаку, помняющую за персист и симфони.
> С этими паттернами вообще какая-то проблема, я видел как люди вместо функции со свитчем сделали стратегию с 16 классами с наследованием и трейтами.
Я даже с тобой согласен тут. Но ты не поверишь просто. Смотри, вот я ищу работу. Собеседуюсь с тобой и рассказываю про паттерны, а ты мне говоришь, что паттерны не нужны и говно. И думаешь, что я идиот, который везде пихает паттерны. Через час я собеседуюсь с другим пидорасом и говорю ему, что паттерны не нужны и говно. А он мне говорит, что я ебанутый и без паттернов жизни нет. И как мне быть? P.S. Ты же понимаешь, что ты ты однобоко смотришь на соискателя и очень специфически (и непопулярно) смотришь на программирование?
> Ваши микросерисы тут даром не нужны. У нас денег столько нету, чтобы это поддерживать.
Опять же, ваши деньги меня не ебут. Нету - идите нахуй. Но вопрос в том, что почти на всех собесах меня спрашивали за микросервисы. То, что ты на них реагируешь как бешеная собака - откуда мне это знать до собеса с тобой? Я, может быть, тоже на них реагирую, как бешеная собака, но тебе буду заливать, что они охуенные, потому, что в среднем по больнице сейчас у всех микросервисы.
> Как-то разговаривать еще можно с 15-20 летними и не фейспальмить, с теми, кто еще спектрумы ковырял.
Шизофазия какая-то, я даже не распарсил. Мне 32, я ковырял. 15-летние про спектрумы даже не слышали. Тем не менее, от этого я тебе не расскажу лучше, как там индексы работают.
> У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
Ты опять судишь за других, мудак ты этакий. Я наоборот обычно люблю своего работодателя и если всё хорошо, никуда даже не дергаюсь, а писать стараюсь как можно лучше. Я вообще редко видел людей, которым похуй на свою работу. Обычно это увлеченные своим делом люди.
> крутые спецы все сидят на хорошей работе, на зарубеж
Сами-то чьих будете? С чего ты взял, что ты так крут, что можешь оценивать? Более того, с хуяли к тебе должен пойти тот, кто может пойти в Гугл? До кучи: ты можешь знать и ожидать от человека одно. А он хорошо знает и ожидает вопросов по чему-то другому. Вы разойдетесь, думая, что оба идиоты, и даже не в курсе, что просто не поняли друг друга. Как пример: на одном собесе меня дико ебали алгоритмами и структурами данных. На другом - ларавелем, докером, микросервисами и твоими этими ебучими индексами. Это настолько разные темы, что пиздец, как по мне.
> Ты хоть раз в жизни учебник JS открывал?
Ясен хуй. Только если я что-то и делаю, то есть babel, есть typescript. Помнить в чем там отличия просто не нужно. И я бы сказал, что если ты хочешь возложить ответственность "откроется ли моё говно в старом браузере" на себя, а не на babel, то ты очень опасный и неопытный. Из того, что я ответил и помню - подвезли стрелочную функцию, декларацию классов не через протатип, let, вот эту хуйню "...array". Дальше хуй его знает. Ну и понятное дело, что этого не хватило для ответа, тем более я звучал неуверенно (т.к. не был уверен).
> Тестовых сложнее, чем на полчаса-час-два не давал ни разу.
Ну хоть где-то ты молодец.
Меня отдельно порадовало, что ты даже не думаешь о том, что человек может волноваться, для него это стресс. Меня сегодня собеседовали ВПЯТЕРОМ, блядь. Догадайся с трех раз: я забыл даже то, что неплохо знаю? Все ответы сказал именно так, как хотел? Не бился ли головой в стену после собеса, т.к. неожиданно придумал ответы гораздо лучше?
> Приходят люди, 10+ лет опыта, устно не могут объяснить индексы, или блокировки в транзакциях.
Ты вообще спрашиваешь, какой у них именно опыт? Я, например, честно говорю, что 6 лет педалил сайты на CMS, над большими проектами не работал и т.п. И объясни, что такое индексы. Серьезно.
> Про фронтенд лучше вообще не спрашивать - никто ничего не знает.
Какое серьезное обобщение, бро. Ощущение, что ты вообще никого не собеседовал на самом деле.
> Видимо, им еще личный раб-верстальщик нужен для работы. Зарплату ему оплатить изволите?
Во-первых, ты где их ищешь? Я готов педалить всё подряд, в том числе и фронт, только возьмите. Не берут. А ты пишешь, что все такие выебистые, что личного раба хотят. Один из нас пиздит? Во-вторых, с какого хуя разработчика должны волновать твои финансовые проблемы?
> вы не представляете, сколько времени и сил уходит на их составление
Бедненький ты наш. Ни сколько не уходит. Я собеседовал джунов, было наоборот прикольно перестать кодить и поделать что-то подобного рода.
> Некоторые вообще разговаривают, как будто у них отклонения. На четко сформулированный вопрос вместо четкого ответа начинают уходить куда-то в сторону и вспоминать как что-то когда-то похожее делали
Во-первых, ты заранее настроен к соискателю как к идиоту. Это сказывается на всех твоих выводах. Во-вторых, и что в этом не так? Соискатель пытается показать тебе, что он разберется в твоем вопросе при необходимости и похожий опыт у него есть. Нет, ты хочешь, чтобы было как ТЕБЕ нравится. Ну ищи дальше, хули. Идеального сотрудника ты не найдешь никогда.
> причем делал кто-то другой, он просто в сторонке стоял
Ты опять, пидорас, за других додумываешь? Не удивительно, что никого найти не можешь. А еще они все моральные уроды и по ночам ебутся в жопы, да? Хули, додумывать за других, так по-полной.
> Или N лет опыта с Симфони в резюме - объяснить, что делает persist, не может. Как вы N лет используете функцию, не зная, что она делает, а?
Я начинаю понимать. Ты, блядь, доебываешь людей какой-то хуетой, вопросами по каким-то мелочам. Что бы ты спросил, если я вообще с симфони не работал? А, ты сказал бы, что я конченный и послал бы, ясно.
> Вы бы лучше вместо курсов по повышению самоуверенности
Какую зарплату ты предлагаешь? А то сейчас окажется, что ты ищешь за 50к фулстек макаку, помняющую за персист и симфони.
> С этими паттернами вообще какая-то проблема, я видел как люди вместо функции со свитчем сделали стратегию с 16 классами с наследованием и трейтами.
Я даже с тобой согласен тут. Но ты не поверишь просто. Смотри, вот я ищу работу. Собеседуюсь с тобой и рассказываю про паттерны, а ты мне говоришь, что паттерны не нужны и говно. И думаешь, что я идиот, который везде пихает паттерны. Через час я собеседуюсь с другим пидорасом и говорю ему, что паттерны не нужны и говно. А он мне говорит, что я ебанутый и без паттернов жизни нет. И как мне быть? P.S. Ты же понимаешь, что ты ты однобоко смотришь на соискателя и очень специфически (и непопулярно) смотришь на программирование?
> Ваши микросерисы тут даром не нужны. У нас денег столько нету, чтобы это поддерживать.
Опять же, ваши деньги меня не ебут. Нету - идите нахуй. Но вопрос в том, что почти на всех собесах меня спрашивали за микросервисы. То, что ты на них реагируешь как бешеная собака - откуда мне это знать до собеса с тобой? Я, может быть, тоже на них реагирую, как бешеная собака, но тебе буду заливать, что они охуенные, потому, что в среднем по больнице сейчас у всех микросервисы.
> Как-то разговаривать еще можно с 15-20 летними и не фейспальмить, с теми, кто еще спектрумы ковырял.
Шизофазия какая-то, я даже не распарсил. Мне 32, я ковырял. 15-летние про спектрумы даже не слышали. Тем не менее, от этого я тебе не расскажу лучше, как там индексы работают.
> У большинства логика - нанялся, накривокодил, свалил, стартап в любом случае сдохнет, независимо от моего качества кода.
Ты опять судишь за других, мудак ты этакий. Я наоборот обычно люблю своего работодателя и если всё хорошо, никуда даже не дергаюсь, а писать стараюсь как можно лучше. Я вообще редко видел людей, которым похуй на свою работу. Обычно это увлеченные своим делом люди.
> крутые спецы все сидят на хорошей работе, на зарубеж
Сами-то чьих будете? С чего ты взял, что ты так крут, что можешь оценивать? Более того, с хуяли к тебе должен пойти тот, кто может пойти в Гугл? До кучи: ты можешь знать и ожидать от человека одно. А он хорошо знает и ожидает вопросов по чему-то другому. Вы разойдетесь, думая, что оба идиоты, и даже не в курсе, что просто не поняли друг друга. Как пример: на одном собесе меня дико ебали алгоритмами и структурами данных. На другом - ларавелем, докером, микросервисами и твоими этими ебучими индексами. Это настолько разные темы, что пиздец, как по мне.
> Ты хоть раз в жизни учебник JS открывал?
Ясен хуй. Только если я что-то и делаю, то есть babel, есть typescript. Помнить в чем там отличия просто не нужно. И я бы сказал, что если ты хочешь возложить ответственность "откроется ли моё говно в старом браузере" на себя, а не на babel, то ты очень опасный и неопытный. Из того, что я ответил и помню - подвезли стрелочную функцию, декларацию классов не через протатип, let, вот эту хуйню "...array". Дальше хуй его знает. Ну и понятное дело, что этого не хватило для ответа, тем более я звучал неуверенно (т.к. не был уверен).
> Тестовых сложнее, чем на полчаса-час-два не давал ни разу.
Ну хоть где-то ты молодец.
Хотя я могу защитить тебя в одном, пожалуй. Я писал, что собеседовал джунов. Так вот, найти джуна, который хотя бы установил ларавел и потыкал его палкой оказалось неожиданно серьезной проблемой. Взяли парня, который был просто смышленый и интересующийся, без опыта. Просто потому, что остальные не могли даже ответить, что такое PHP, что такое класс, что такое база данных, как из PHP к ней подключиться. Про индексы и паттерны даже спрашивать не пытался. Проебались, кстати, даже через полгода его код был лютым говном.
Охуительные истории. ES5, ES6, TS, Bem, MySql, Postgres, Node, Mongo, Rabbit, Kafka, Python, Go. Все знает, все умеет. Без гугла ебать. Профессионал вещает из дурки.
>>649030
Не слушай дураков, чтобы хоть что-то понять в стеке нужно убить огромное количество времени. Кнопки нажимать и обезьяна может, а вот написать что-то толковое могут единицы.
Спасибо. Блин, я рад, что в треде есть ты. Если бы не ты, я бы уже, наверное, решил, что я слишком стар/туп/плохо-с-памятью для программирования вообще. Побольше бы таких интервьюверов как ты.
Кстати, вот это:
> ES5, ES6, TS, Bem, MySql, Postgres, Node, Mongo, Rabbit, Kafka, Python, Go
Почти что точная копия требований к соискателю в одну очень известную контору, куда я сходил на собес через скайп недавно. Ух, как они мою самооценку пошатнули, не передать.
Таблетки забыл принять?
>Все знает, все умеет. Без гугла ебать.
Я не про то, что надо помнить наизусть всю стандартную либу и всякое такое, хотя если память позволит я позавидую.
Там чувак банально путает синтаксис двух хорошо известных ему языков и не сразу это понимает. И да, это уже ненормальная рассеянность.
>ES5, ES6, TS, Bem, MySql, Postgres, Node, Mongo, Rabbit, Kafka, Python, Go.
Если без хуйни 2 года джавы, 3 пхп и 3 питона, жс в комплекте (без тс), на шарпе сам с собой иногда. Представь себе не путаюсь в синтаксисе среди них.
Базы нахуя перечислил?
Алсо, кроме кафки со всем работал, чего ты тут невозможного видишь? Прямо сейчас у меня на работе ебучий мускл, ебучая монга, редис поверху и крутится на питоне. Всего-лишь небольшая апишка на ленивой поддержке (фронты и клиентские прилоги пилят тут к счастью отдельно). В проектах побольше стек технологий подлиннее твоего пука может выглядеть, скажи еще что это не так.
>Go
А туда планирую перекат, пока довольно халявно выглядит.
> Там чувак банально путает синтаксис двух хорошо известных ему языков и не сразу это понимает
Слушай, ну я не такой психопат, как ты пишешь. Я имел ввиду, что, грубо говоря, целый день читал Джавку, сел за Пыху и с ходу нахерачил переменные без "$". 5 секунд потупил, ударил себя по лбу и продолжил спокойно работать. А не так, что я в принципе не способен в голове два синтаксиса держать. Ну ты чо, блядь. Это не ты, интервьювер? А то он склонен к обобщениям и гипертрофированию.
Ну тогда мб норм, механика.
Не писал бы тогда так.
>через полгода Java я забыл к хуям даже PHP, начал писать public void method() и не понимать, чому оно не запускается.
Забей, в общем. Это проблема коммуникации. Люди друг друга и в жизни неправильно иногда понимают. А уж на дваче...
Напоминаю что ты на двощах, в треде для вкатывальщиков в пхп макакинг, кому тут пыль в глаза пускать. В джава треде расскажи как ты охуенно с джавы на пхп перекатился, не потеряв скила.
Что блядь значит твое "работал"? Речь о том что помнить всю эту залупу нереально. Более того писать что-то адекватное нереально, слишком много всяких нюансов языка, я даже не говорю про фреймворки и их заебы.
Взять твой текущий стек. Ты понимаешь почему используется именно монга? Почему используется редис, а не мемкешед, например? То что ты можешь написать запрос к монге не означает, что ты понимаешь что происходит.
Да хули там, сам факт того что ты хочешь перекатиться в Го из-за халявы, и ты не в ужасе от этого языка говорит о том что ты нихуя не понимаешь.
> Если без хуйни 2 года джавы, 3 пхп и 3 питона
Что я читаю, блядь? Два года джавы, а СЕЙЧАС ты пишешь на пхп? Ты ебанутый? Или твои "два года джавы" - это туду листы в стол писал?
>>Тебе чтобы водить машину тоже досконально двигатель внутреннего сгорания надо знать
Профессиональный водитель я не о совеременных таксистах типа дальнобоя - отлично знает как устроен его автомобил. Какой нибудь гонщик порою механов переплюнет по знанию матчасти. Профессионал с 10+ лет опыта и отличается от нуба тем что глубоко занет свой предмет.
Он не поехавший, а вполне адекватный. Просто высоты современного кодера - очень низок.
Ты просто в ответе своем требования в абсолют вывел.
Я читаю всхлипы в треде - и похоже народ просто вообще не делает тестовых, и не шляется по собесам. Все мои тестовые были вполне адекватны. Требовалось просто показать что ты в общем занешь что делать. Что знаешь язык на котором пишешь.
Скулежа относительно БД вообще не пойму. Ахуеть программисты пошли, запрос в базу сами написать не могут.
> Ахуеть программисты пошли, запрос в базу сами написать не могут.
Обвинил его в том, что он возводит в абсолют и тут же сам возвел в абсолют. Ну найс аргументы, чо.
А как там сплетать пхп и ноду? и зачем там вообще пхп?
А с вэб сокетами для меня история интересная - я наешл гайд по которому этот стандарт реализуется самостоятельно. Хочу покопаться в этом , разобрать реализацию протокола пошагово.
При чем тут "зачем", если он просил такую задачу. Не хочешь - не сплетай. Мне-то что вообще?
Чел, я прочел твое эмоциональное выступление.
1. Мне кажется ты не очень умеешь торговать ебалом
2. Ты все таки как то с точки зрения "о боже мир не справедлив" смотришь на реальность.
Фактически вкатывальщики демпенгуют, и чисто психологически бизнесу платить опытному человеку тяжелее. Как это мидлу 150 платить, если джун готов за 30 к пердолиться. Тем более со стороны бизнеса результат "типа" одинаков, только джун дольше делает "раз в 10".
Но на "очень относительном" лайте можно въехать совсем не глубоко. И появляются такие пхп программисты, которые за 6 лет профессиональной работы с пхп не могут сказать что такое индесы. И это в пхп, который по сути обертка вокруг базы данных.
Естественно руководители немного ахуевают. Все таки нулевого роста можно ожидать от офисного планктона, но никак не от профессии где на каждом углу кукарекается о том что "программист учится всю жизнь".
Я тебя понимаю, ты потерял работу когда в ней нуждался, и это стрессовый момент. Соберись, и далее вперед на собеседования. Пусть сейчас и конечно штиль, но он окончится.
>>Ух, как они мою самооценку пошатнули, не передать.
А ты не будь лохом, которого можно вот так вот за нехуй делать опустить. Выводы сделай, а на самооценку и эмоции это не должно влиять никак.
Цыгане из условной бизнес молодости несут такую позорную хуйню - и ниче, ходят с гордым ебалом.
Личность твоя важнее чем твои навыки.
Это не абсолют. Это элементарщина. sql - базы это достаточно сложное говно, но для разраба знать это не нужно. Но написать уж своими руками элементарный запрос с объединениями, группировками и какой то сортировкой - это не пиздец наука. Это если с ноля - 1.5 месяца. Как за 10 лет не найти на это время, и не столкнуться с необходимостью этого - я хз.
> Как за 10 лет не найти на это время, и не столкнуться с необходимостью этого - я хз.
Скажи честно, ты ебанат?
>>649083
А что тебе то подпекло так? От чего истерики?
Максимализм голову давит? Типа раз про базы спросили - то знать нужно на уровне какого нибудь сертифицированного oracle разраба с 10+ лет опытом и увешанным сертификатами как новогодняя елка игрушками? Если react - то ебашить не менее оверхедно чем Дэн Абрамов?
Как правило все что спрашивают, что не касается основного стеака - уровня - "знакомы, знаете"?
Опять же хозяин - барин, это реальность, че скулить. Хочит галера ассемблер/кложур/брэйнфак разраба за 30 ты - ее право, может хотеть че ей вздумается. Пусть ищут.
Просто я не очень понимаю скулежа по поводу "стока просят". Первое - большинство "стока не просит", 90% - питон, JS, пхп.
Второе если где то просят дохуя а ты не знаешь - значит не твоя вакансия.
Опять же ознакомиться с реактом допустим - дело пяти вечеров. Документация идеальная, гайдов море. Через месяц ленивого ковыряния в нем - ты пилишь свое кривое SPA. И можешь обновлять резюие.
Я тебе с иной точки зрения скажу - программисты как правило просто очень инфантильны, и думают о всякой хуйне из своего манямирка.
А те кто не инфантильны - те скачут кабанчиком, ездят на мерсах и не участвуют в беседах на макакаче.
нуфф саид
>Речь о том что помнить всю эту залупу нереально.
Я отвечал на проблемы с запоминанием синтаксиса, а тебя унесло в знания "всего". Зачем? И мы уже выяснили с ним про взаимное непонимание.
>кому тут пыль в глаза пускать
Никакой пыли, кроме ответа на твой бессмысленный набор кейвордов, призванный показать какую-то там надуманную сложность и тщетность бытия.
Впринципе если ты не контрибьютишь в пхп, то можешь получается и не заикаться о его глубок знании Если до такого маразма доходить, то почти у всех резюме опустеют. Знать просто хорошо, иметь опыт работы, чем больше тем лучше конечно, и замечательно. В таком ключе у большинства тут кейвордов будет в резюмехе в 3-4 раза больше, чем ты в своей страшилке написал. Я ведь тоже только самым поверхностным тебе ответил. Если ты хотел показать тщетность познания в целом - ок. В частности - зря, этот фатализм тебе не поможет ничем, ведь всегда можно углубиться еще больше.
>То что ты можешь написать запрос к монге не означает, что ты понимаешь что происходит.
И вот на это тот же ответ, что и выше.
>Более того писать что-то адекватное нереально
Реально при умеренной нагрузке на каждый из проектов на разных языках, без кранчей и прочей хуйни. А с кривой нагрузкой даже два параллельных проекта на одном и том же языке и даже стеке начнут проседать в говно. Да даже один проект, в котором тебе просто не дают шанс на подумать. Обычно работа сразу с несколькими языками/технологиями подсознательно читается как вечный завал, а не размеренность. Это не обязательно, можно как фулстачить спокойно, так и загнать себя в гроб всего на одной задаче. От кранчей бежать надо в любом случае, какими бы они не были.
>Ты понимаешь почему используется именно монга?
Понимаю. Будь возможность мне это сделать без монги - так бы и сделал. Увы это был лучший выбор.
>Почему используется редис, а не мемкешед, например?
Нужен был фолбек. У меня тут кроме житейского кеширования редис используется в достаточно нетривиальной задаче промежуточного хранилища для длительных вычислений, которые начальство очень боится поломать или просрать при падении.
>в Го из-за халявы
А почему нет? У всех знакомых гошников не работа, а мечта. Интересные таски, отсутствие легаси, движуха и молодость. Это временно и я хотел бы успеть на этот праздник жизни. А ты нет? Не всегда есть выстреливший молодой язык не успевший обрасти говной.
>>649060
Не серверной. Андроид. Приложульки вогнали в уныние, сменил деятельность. Синтаксис я до сих пор помню и не путаю.
Алсо, хронологически на андроиде перерыв от бекенда взял, и зря.
>Речь о том что помнить всю эту залупу нереально.
Я отвечал на проблемы с запоминанием синтаксиса, а тебя унесло в знания "всего". Зачем? И мы уже выяснили с ним про взаимное непонимание.
>кому тут пыль в глаза пускать
Никакой пыли, кроме ответа на твой бессмысленный набор кейвордов, призванный показать какую-то там надуманную сложность и тщетность бытия.
Впринципе если ты не контрибьютишь в пхп, то можешь получается и не заикаться о его глубок знании Если до такого маразма доходить, то почти у всех резюме опустеют. Знать просто хорошо, иметь опыт работы, чем больше тем лучше конечно, и замечательно. В таком ключе у большинства тут кейвордов будет в резюмехе в 3-4 раза больше, чем ты в своей страшилке написал. Я ведь тоже только самым поверхностным тебе ответил. Если ты хотел показать тщетность познания в целом - ок. В частности - зря, этот фатализм тебе не поможет ничем, ведь всегда можно углубиться еще больше.
>То что ты можешь написать запрос к монге не означает, что ты понимаешь что происходит.
И вот на это тот же ответ, что и выше.
>Более того писать что-то адекватное нереально
Реально при умеренной нагрузке на каждый из проектов на разных языках, без кранчей и прочей хуйни. А с кривой нагрузкой даже два параллельных проекта на одном и том же языке и даже стеке начнут проседать в говно. Да даже один проект, в котором тебе просто не дают шанс на подумать. Обычно работа сразу с несколькими языками/технологиями подсознательно читается как вечный завал, а не размеренность. Это не обязательно, можно как фулстачить спокойно, так и загнать себя в гроб всего на одной задаче. От кранчей бежать надо в любом случае, какими бы они не были.
>Ты понимаешь почему используется именно монга?
Понимаю. Будь возможность мне это сделать без монги - так бы и сделал. Увы это был лучший выбор.
>Почему используется редис, а не мемкешед, например?
Нужен был фолбек. У меня тут кроме житейского кеширования редис используется в достаточно нетривиальной задаче промежуточного хранилища для длительных вычислений, которые начальство очень боится поломать или просрать при падении.
>в Го из-за халявы
А почему нет? У всех знакомых гошников не работа, а мечта. Интересные таски, отсутствие легаси, движуха и молодость. Это временно и я хотел бы успеть на этот праздник жизни. А ты нет? Не всегда есть выстреливший молодой язык не успевший обрасти говной.
>>649060
Не серверной. Андроид. Приложульки вогнали в уныние, сменил деятельность. Синтаксис я до сих пор помню и не путаю.
Алсо, хронологически на андроиде перерыв от бекенда взял, и зря.
>А как там сплетать пхп и ноду? и зачем там вообще пхп?
Например есть сайт на пхп. Он достаточно большой, рабочий и тут вдруг захотели чатик на вебсокетах. Причем ноду в этой схеме можешь заменить на что-нибудь еще.
Самый очевидный, но не лучший способ их связать - банальный хттп апи.
Также вопрос по lazyload, как правильнее всего осуществлять такие вещи?
Причем здесь фатализм? Ты фокусируешься на чем-то одном и становишься профессионалом или пытаешься делать всего понемногу и в итоге не умеешь нихуя.
Ты даже не понимаешь насколько бредово звучит "монго это был лучший выбор" для человека хоть немного разбирающегося в базах.
А фоллбек с редисом это блядь взаимоисключающие понятия, если в редисе подрубить AOF и RDB, то получишь перфоманс как в реляционном постгресе, только с дополнительным гемором по настройке и поддержке этой хуйни. В реальности редисовские снапшоты используются для быстрого прогрева кеша, а не для персистенса и гарантий актуальности данных. Я уже не говорю что если есть реальная нагрузка, то нужно всю запись на диск выносить в отдельную ноду. Ведь редис сука однопоточный.
Таких мелочей тысячи. Даже для того чтобы "просто" писать идиоматичный современный код на пхп 7.4 нужно пройти огромный путь, набить шишек себе и окружающим и прочитать тонны макулатуры, которая постоянно устаревает и становится не актуальной.
Для того чтобы писать код на каком-то языке много ума не надо, но для понимания нюансов нужно убить кучу времени и сил. Слишком много времени и сил чтобы распыляться на что-то другое.
На фронте JS либа https://github.com/verlok/lazyload
Картинки в теге picture, формат .webp
В параметрах ссылки на картинку указываешь размеры /picture/pic_ab4346f.webp?width=100
Если такого файла нет, то генеришь картинку нужного размера, сохраняешь себе, отдаешь пользователю.
Вот, все как в лучших домах европы.
Ну тут уже каждый дрочит как хочет. Можно фиксированный размер делать и в параметре передавать типа ?size=small. А можно хитровыебанно зашифровать размер и передавать size=ppqDgr.
Я просто направление указал.
Ты можешь не распинаться, я даже читать не хочу. Просто скажи, где в этом треде написано, что я не умею sql-запросы составлять. С чего ты это вообще взял?
> Не серверной. Андроид
Ааа, тогда окей, вопросов нет. Алсо, лучше уж идти в бекенд на джаве, чем бекенд на пхп.
>Профессиональный водитель я не о совеременных таксистах типа дальнобоя - отлично знает как устроен его автомобил.
Веб-программист тоже отлично знает как работает веб и его фреймворки.
БД - не его уровень. Это к байтоёбам ближе.
Это не подходит. То есть эти капчи разные? нельзя просто заменить?
Нужно писать окошко что имитирует андроид?
Создал почтовый домен домен.ру (как домен с сайтом) с dmarc без ssl
Создал почтовый ящик
Вхожу в почту через roundcube - входит
Скачал PHPMailer и вот тут перестал вообще ничего не понимать
Имя сервера входящей почты - mail.домен.ru
smtp порт: 25
Забиваю в phpmailer
$mail->Host = 'mail.домен.ru';
$mail->SMTPAuth = true;
$mail->Username = '
$mail->Password = 'пароль'; // SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 25;
Результат:
2020-04-03 11:15:11 SMTP ERROR: Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting
Как эту ебалу настроить нихуя не понимаю ни одного гайда внятного
>БД - не его уровень. Это к байтоёбам ближе.
Ну и че вы хотите от этих вкатывальщиков? Разве что порадоваться - очень овощной конкуренции.
Ты ничего не понимаешь в процессе собеседования. Бизнесу нужен кандидат, который будет выполнять работу максимально хорошо и быстро и за меньшие деньги.
В процессе собеседования "выгодность" кандидата полностью оценить невозможно. Это можно выявить только на реальных задачах. Но мы не можем позволить себе взять 50 человек на испытательный срок и нам некогда будет за ними следить.
Единственное, что остается - задавать всем одинаковые вопросы, брать тех, кто лучше ответил и приглашать на исп. срок, на котором и проверяется, как кандидат справляется с задачами.
И, естественно, людей, которые не смогли какие-то базовые вещи освоить, лучше сразу отсеивать.
Сюда надо добавить тот факт, что люди не всегда пишут в резюме правду. Они напишут опыт работы с технологией X, а по факту ее внедрял и использовал какой-то из их коллег, а они про нее ничего не знают.
Возвращаясь к твоей аналогии, если мы ищем водителя, и один кандидат знает устройство карбюратора, а второй нет, то первый перспективнее, даже если ему не придется его чинить. Мы предпочтем иметь человека, который будет писать эффективные запросы.
То же касается фронтенда. Если человек может на фронтенде сам что-то поправить, то это плюс. Только вот по факту сами фронтендщики на простых вопросах посыплются, потому что они тоже ничего не изучали, а лепят код на глаз, как придется.
Зарплата в сравнении с официальной средней по РФ очень даже хорошая предлагалась. Но по знаниям они больше на среднюю по РФ тянули. С чего вы решили, что вам просто на опыт должны зарплату повышенную давать? Ее дают за знания и навыки, хоть у вас 20 лет опыта, это не важно.
>>648997
Знать, как устроен индекс это не то же самое, что знать внутренности БД. Ибо я сталкивался с человеком, который в этих внутренностях ковырялся. Индексы - это как раз для обычных разработчиков. Если человек в хоть сколько-нибудь сложных проектах работал, с идексами он столкнется. А вот если он только ворованные дизайны на CMS натягивал, то да, тут он пролетает.
Про микросерисы я четко написал: мы не Гугл, у нас нет тысяч разработчиков, чтобы их поддерживать. Кстати, когда приходят люди с опытом работы с микросервсами, начинаешь их расспрашивать, и понимаешь, что они прекрасно бы жили без них и может даже сэкономили рабочее время.
Про паттерны та же ерунда, я пока не видел ни одного примера их использования в реальном коде, чтобы этот код стал проще и понятнее, удобнее в поддержке.
> Просто прикинь, что есть на свете кандидат, который соответствует этим требованиям
Такого мы бы и хотели получить, а если нет такого, то максимально близкого к нему. А не умеющих в оптимизацию запросов, не умеющих решать задачи на проектирование любителей микросервисов и паттернов с удовольствием оставим конкурентам.
Ты ничего не понимаешь в процессе собеседования. Бизнесу нужен кандидат, который будет выполнять работу максимально хорошо и быстро и за меньшие деньги.
В процессе собеседования "выгодность" кандидата полностью оценить невозможно. Это можно выявить только на реальных задачах. Но мы не можем позволить себе взять 50 человек на испытательный срок и нам некогда будет за ними следить.
Единственное, что остается - задавать всем одинаковые вопросы, брать тех, кто лучше ответил и приглашать на исп. срок, на котором и проверяется, как кандидат справляется с задачами.
И, естественно, людей, которые не смогли какие-то базовые вещи освоить, лучше сразу отсеивать.
Сюда надо добавить тот факт, что люди не всегда пишут в резюме правду. Они напишут опыт работы с технологией X, а по факту ее внедрял и использовал какой-то из их коллег, а они про нее ничего не знают.
Возвращаясь к твоей аналогии, если мы ищем водителя, и один кандидат знает устройство карбюратора, а второй нет, то первый перспективнее, даже если ему не придется его чинить. Мы предпочтем иметь человека, который будет писать эффективные запросы.
То же касается фронтенда. Если человек может на фронтенде сам что-то поправить, то это плюс. Только вот по факту сами фронтендщики на простых вопросах посыплются, потому что они тоже ничего не изучали, а лепят код на глаз, как придется.
Зарплата в сравнении с официальной средней по РФ очень даже хорошая предлагалась. Но по знаниям они больше на среднюю по РФ тянули. С чего вы решили, что вам просто на опыт должны зарплату повышенную давать? Ее дают за знания и навыки, хоть у вас 20 лет опыта, это не важно.
>>648997
Знать, как устроен индекс это не то же самое, что знать внутренности БД. Ибо я сталкивался с человеком, который в этих внутренностях ковырялся. Индексы - это как раз для обычных разработчиков. Если человек в хоть сколько-нибудь сложных проектах работал, с идексами он столкнется. А вот если он только ворованные дизайны на CMS натягивал, то да, тут он пролетает.
Про микросерисы я четко написал: мы не Гугл, у нас нет тысяч разработчиков, чтобы их поддерживать. Кстати, когда приходят люди с опытом работы с микросервсами, начинаешь их расспрашивать, и понимаешь, что они прекрасно бы жили без них и может даже сэкономили рабочее время.
Про паттерны та же ерунда, я пока не видел ни одного примера их использования в реальном коде, чтобы этот код стал проще и понятнее, удобнее в поддержке.
> Просто прикинь, что есть на свете кандидат, который соответствует этим требованиям
Такого мы бы и хотели получить, а если нет такого, то максимально близкого к нему. А не умеющих в оптимизацию запросов, не умеющих решать задачи на проектирование любителей микросервисов и паттернов с удовольствием оставим конкурентам.
Чтобы он не волновался, у нас вначале спокойный разговор о вакансии, о предыдущем опыте работы, ответ на его вопросы.
> И объясни, что такое индексы
Структуры в СУБД, которые позволяют ускорить выполнение SQL-запросов.
> Какое серьезное обобщение, бро.
Да, часто так и говорят, фронтендом не занимаюсь, во фронтенде не разбираюсь, я бекендщик.
> Бедненький ты наш. Ни сколько не уходит.
Уходит. Они должны быть лаконичными, понятными на слух, давать нам какую-то информацию (не годятся вопросы, на которые никто не может ответить или отвечают все). Они не должны быть привязаны к конкретным фреймворкам, библиотекам.
> Соискатель пытается показать тебе, что он разберется в твоем вопросе при необходимости
Любой человек разберется в любом вопросе при острой необходимости и наличии большого количества времени. Потому такой ответ ничего не значит. Наша цель отобрать более перспективных кандидатов, а не тех, кто все рабочее время будет сидеть и разбираться вместо работы.
>> причем делал кто-то другой, он просто в сторонке стоял
> Ты опять, пидорас, за других додумываешь?
Это проверяется элементарно: человек говорит, что работал с технологией X. Задаем любой вопрос по ней (какие из фич вы использовали в технологии X?) и человек начинает уходить в сторону, из чего очевидно, что из технологии X он в лучшем случае слышал ее название на одном из стендапов и решил зачем-то вписать ее в резюме.
> Что бы ты спросил, если я вообще с симфони не работал?
Вопрос по той технологии, с которой работал. С чего я должен верить на слово, что ты ее знаешь? И откуда такая агрессия? Ты тоже не знаешь, что именно делает persist и ни разу не открывал исходный код этой функции?
> А то сейчас окажется, что ты ищешь за 50к
Ты же понимаешь, что 50к это максимум какой-нибудь хреновый миддл, прошедший онлайн-курсы.
> Собеседуюсь с тобой и рассказываю про паттерны
Смысл в том, чтобы не заучивать их определения, а подумать, когда они могут быть полезны, а когда - нет. И честно сказать, что в твоем проекте можно было бы применить паттерн X, но код от этого стал бы только хуже, потому ты решил его не применять. А так, я вообще про паттерны не спрашиваю.
> Но вопрос в том, что почти на всех собесах меня спрашивали за микросервисы.
Потому что на Хабре/на конференции про них рассказали и они теперь решили что в 2020 без этого нельзя. После ответа на такой вопрос (и про паттерны тоже) надо спрашивать, а применяют ли они их сами, какие плюсы получили. И тебе ответят, что сами они их пока не используют, но конечно, думают об этом, но пока нет времени, есть более срочные задачи.
15-20 летние - имелось в виду 15-20 лет опыта. Это обычно адекватные и грамотные чуваки, с которыми приятно побеседовать.
Чтобы он не волновался, у нас вначале спокойный разговор о вакансии, о предыдущем опыте работы, ответ на его вопросы.
> И объясни, что такое индексы
Структуры в СУБД, которые позволяют ускорить выполнение SQL-запросов.
> Какое серьезное обобщение, бро.
Да, часто так и говорят, фронтендом не занимаюсь, во фронтенде не разбираюсь, я бекендщик.
> Бедненький ты наш. Ни сколько не уходит.
Уходит. Они должны быть лаконичными, понятными на слух, давать нам какую-то информацию (не годятся вопросы, на которые никто не может ответить или отвечают все). Они не должны быть привязаны к конкретным фреймворкам, библиотекам.
> Соискатель пытается показать тебе, что он разберется в твоем вопросе при необходимости
Любой человек разберется в любом вопросе при острой необходимости и наличии большого количества времени. Потому такой ответ ничего не значит. Наша цель отобрать более перспективных кандидатов, а не тех, кто все рабочее время будет сидеть и разбираться вместо работы.
>> причем делал кто-то другой, он просто в сторонке стоял
> Ты опять, пидорас, за других додумываешь?
Это проверяется элементарно: человек говорит, что работал с технологией X. Задаем любой вопрос по ней (какие из фич вы использовали в технологии X?) и человек начинает уходить в сторону, из чего очевидно, что из технологии X он в лучшем случае слышал ее название на одном из стендапов и решил зачем-то вписать ее в резюме.
> Что бы ты спросил, если я вообще с симфони не работал?
Вопрос по той технологии, с которой работал. С чего я должен верить на слово, что ты ее знаешь? И откуда такая агрессия? Ты тоже не знаешь, что именно делает persist и ни разу не открывал исходный код этой функции?
> А то сейчас окажется, что ты ищешь за 50к
Ты же понимаешь, что 50к это максимум какой-нибудь хреновый миддл, прошедший онлайн-курсы.
> Собеседуюсь с тобой и рассказываю про паттерны
Смысл в том, чтобы не заучивать их определения, а подумать, когда они могут быть полезны, а когда - нет. И честно сказать, что в твоем проекте можно было бы применить паттерн X, но код от этого стал бы только хуже, потому ты решил его не применять. А так, я вообще про паттерны не спрашиваю.
> Но вопрос в том, что почти на всех собесах меня спрашивали за микросервисы.
Потому что на Хабре/на конференции про них рассказали и они теперь решили что в 2020 без этого нельзя. После ответа на такой вопрос (и про паттерны тоже) надо спрашивать, а применяют ли они их сами, какие плюсы получили. И тебе ответят, что сами они их пока не используют, но конечно, думают об этом, но пока нет времени, есть более срочные задачи.
15-20 летние - имелось в виду 15-20 лет опыта. Это обычно адекватные и грамотные чуваки, с которыми приятно побеседовать.
> Меня сегодня собеседовали ВПЯТЕРОМ
Богатая компания, раз может выкинуть 5 ч рабочего времени на каждого кандидата.
>>649332
Вот вроде многое ты говоришь адекватно, но чувствуется сильное отторжение от паттернов, как от явления в целом. Получается у вас поощряется линейный код? Или как вы пишете? Может ты имеешь ввиду что-то более конкретное, чем все явление обобщенно?
Просто при использовании ооп (и даже без него) паттерны сами собой вырисовываются, т.к. уже практически любую схему взаимодействия кода между собой назвали каким-нибудь именным паттерном. В конце концов те же фреймы паттерны используют во всю, и многое идет на пользу, разве нет?
>Ты ничего не понимаешь в процессе собеседования.
А ты ничего не понимаешь в разработке.
У меня складывается ощущёние, что ты просто залётный из треда про БД и думаешь, что самый умный на доске.
В ПХП помимо баз данных много есть вещей.
Собственно, сами бд со стороны программирвания нужны только для того, чтобы самому хранение и выборку не писать.
Если человек знает про индексы, но не знает про современные инструменты для работы с БД, то никому он такой не нужен.
>Про паттерны та же ерунда, я пока не видел ни одного примера их использования в реальном коде
Все современные приложения на пхп основаны на PSR-7, PSR-15 и middleware, что представляет собой паттерн "Цепочка обязанностей". Без паттерна "Репозиторий" в крупном проекте сейчас вообще нихуя не делается, паттерн "Команда" обязательно используется в домене для каскадных изменений и очередей. Прокси используются в ОРМ, а как вообще можно писать ООП код, не используя декораторы? Как можно писать АПИ не используя итераторы? Как можно использовать у себя в проекте сторонние либы без адаптеров?
Никто блядь не сидит и не придумывает а куда бы впихнуть еще паттерн, ты просто следуешь бест практис и здравому смыслу и твой код сам принимает форму паттерна.
Сам факт того, что тебе это приходится объяснять говорит о том что ты нубас, причем с предубеждениями, а требования у тебя завышенные. У тебя даже варианта нет, что если человек толковый, то он с этими индексами разберется изи, это ж не бином ньютона в конце концов.
И вообще твой спич звучит как высер манагера: "бизнесу нужны", "оставим конкурентам", "нанялся, накривокодил".
Мой поинт не изменился, я твои хотелки на себя примерил, но нихуя не понял, а зачем ты мне? Нахуя ты обосрался тому, кто твоим критериям соответствует?
Где искать такие галеры (удаленка)?
На последней удаленке ничего этого не было. Писали весь код в контроллерах.
Тащи бест практис с собой. Это все не так сложно, главное говорить убедительно на митингах.
Обращай внимание на стек. Версии фреймворков посвежее, базы. Сколько опытных программистов в команде. Можно совсем по охуевшему попросить показать код, но такое скорее на офисных собесах канает, на удаленке думаю тебе покажут хуй.
Есть трелло в качестве таск трекера.
Есть задачи зачастую с очень краткой формулировкой и частенько блокированные другими задачами.
Есть дейли отчет: дублирование статусов задач в рабочий чатик.
В том и беда что фреймворк свежий был, а код уже говном завонялся.
Нехорошо. Лучше раз в день всем созвониться хотя бы на привет/пока, если нечего обсуждать, чем безлико дрочить тасктрекер с хуй пойми какими соседями. В случае чего там все и обсуждается. Скрам версия удаленки.
Ну и, назови мне широкие и конкурентные относительно других языков, сферы применения пхп без БД.
Везде абсолютно в каждом языке есть много вещей помимо БАЗ.
Но я слегонца хуею, в 2020 пхп-бекендеры оказываются решили что базы не нужны.
>>649417
А ты работаешь? или кукаретник? Не ради троллинга спрашиваю - мне интересно. Какой последний проект был в котором такое пилили?
Всмысле ты отказался разговаривать с другими разрабами на удаленке? Или просто уже ливнул и обсуждать уже поздно варианты?
>пхп-бекендеры оказываются решили что базы не нужны
Так то это ты с луны ёбнувшийся и решивший, что бд это самое главное в веб-программировании. Тогда как это просто способ хранения данных.
Ещё и заявляешь тут, что пхп это приложение к бд. Сам с себя не хуеешь?
>без БД
Есть способы хранения в жсон, статические хтмл, да куча способов хранения данных вообще.
Жаль, что ты кроме индексов в бд ничего не знаешь и не умеешь.
Не понимаю, как реализовать триггер для бд. Нужно при каждом INSERT чистить базу от старых записей. Доки Доктрины пиздец скупые, написано про четыре типа эвентов и примеры нихера не объясняют. В гугле все примеры тоже уровня 2+2.
Что мне сделать, чтобы автоматически чистить таблицу от старых Entity? Объясните русским языком, пожалуйста.
Работаю, не кукаретик.
А какое "такое"? Если проект на актуальном симфони с доктриной, то все это там уже есть.
На мой взгляд идея крайне хуевая.
Завязывать бизнес логику на инфраструктурные события, да еще и в сторонней библиотеке, хуйня полная. Ты разрушаешь саму идею использования доктрины, для тебя процесса сохранения не должно существовать, а ты триггеры какие-то на него завязать хочешь.
Ты должен генерить свое "доменное" событие типа "Создал залупу коня" и хенлить его в отдельном воркфлоу, удаляя че там тебе надо. Но и это тоже говно - скачек нагрузки на запись и ты бомбишь свою базу двойной дозой радости.
В идеале нужно вынеси чистку в консольную команду и дергать её раз в несколько минут.
>для тебя процесса сохранения не должно существовать
В смысле, а зачем я тогда вызываю persist() или merge(), а после них - flush()? Автоматически в БД ничего не падает.
>В идеале нужно вынеси чистку в консольную команду и дергать её раз в несколько минут.
А как добавить в проект cron, чтоб он сам потом разворачивался? Инструменты и плагины выбраны тим-лидером, там ничего менять нельзя.
>>649503
Будь я не внутри волшебного фреймворка, то конечно. Но тут база должна корректно создаваться при последовательном выполнении миграций. Мне миграцию с триггером надо руками создавать?
1280x720, 0:27
>В смысле, а зачем я тогда вызываю persist()
persist() вещь абстрактная, она даже не означает что у тебя есть база, просто условное хранилище. Идея как раз в том чтобы не завязываться на воркфлоу реляционной базы.
>Инструменты и плагины выбраны тим-лидером, там ничего менять нельзя.
Ну нельзя так нельзя, хули. Тимлиду виднее. Наебашь триггеров прям в базе, как выше советуют, пусть он себе волосы на жопе рвет потом.
>пусть он себе волосы на жопе рвет потом
Если я скажу, что мне нужно то-то и то-то, оно будет добавлено, но я не знаю, что мне нужно. Не в реадми же писать, что при разворачивании проекта после композера и npm добавьте руками в крон вот этот милый скриптик, который чистит БД.
>Не в реадми же писать, что при разворачивании проекта после композера и npm добавьте руками в крон вот этот милый скриптик, который чистит БД.
Это функционал баз данных, гугли CREATE TRIGGER MySQL/Postgre
Это может быть не только крон, это может быть демон или вообще отдельный сервис. Если сам не шаришь как у вас такое происходит, то спроси своего тимлида. Я лишь попытался тебе объяснить, что чистка должна происходить независимо от вставки.
Я знаю, как создать триггер. Я не знаю, как это сделать в философии Симфони+Доктрин, где я вообще мимо Доктрины и ее миграций базу шатать не должен.
Я пытался с ними разговаривать.
1 идет на контакт кое-как.
2 футболит.
продакт при попытке уточнения требований и деталей по таске несет какую-то хуйню, которая ничего не уточняет.
Ушел с концами, т.к. сгорел нахуй с ними.
Я спросил, как сделать триггер, мне ответили "хз, не делал, надо гуглить". Вот я пришел на двач за советами мудрыми. Фреймворк же должен облегчать жизнь!
>Фреймворк же должен облегчать жизнь!
Так погугли же! Вряд ли это настолько редкий вопрос, что гугл промолчит
>Фреймворк же должен облегчать жизнь!
Это такая ловушка "простоты". Фреймворк не облегчает жизнь сам по себе. Точно так же jquery не облегчает жизнь сам по себе (и хуй на него, он мертв. Что впрочем ждет и некоторые фреймы).
Ни то ни другое или их аналоги не обещают облегчить тебе жизнь больше, чем ты облегчаешь ее себе сам с помощью собственного скила.
Меньше полагайся на чужой результат и больше думай, делай и разбирайся сам. Тогда тебе и фреймы будут помогать, и даже лучше - ты сможешь помогать им. А до тех пор такие утверждения лишние. Желание гттовой помощи на любую хуйню по запросу - это больной рак ит под названием вайтишник. Просто сиди, разбирайся, делай. Ни одна технология не должна быть проще, чем это ей позволяет предмет, так что начать надо хотя бы с этого.
Нихуя ты мне абстрактно помог, теперь бы что-нибудь конкретное отсюда унаследовать
Унаследуй способность делать, а не ныть.
Пили свои велосипеды. Пиши какую нибудь CRM на голом php, реализовывай анимацию на голом javascript
То есть сейчас на хостинге у меня 7 РНР, а мне нужно чтобы юзался пятый?
Я предпочитаю простой, понятный код. Если вместо паттерна "Стратегия" можно написать функцию со свитчем и с несколькими подфункциями, то я сделаю так, а не буду городить кучу мелких классов.
Пример: есть 2 вида скидок:
- скидка N% от цены заказа
- N-й товар идет бесплатно, если купить N товаров
Вопрос: нужно ли тут городить паттерн Стратегия? Ответ: нет, пока не нужно. Проще сделать по функции на каждый вид скидок. Так весь код будет рядом и его легко можно осмотреть и подправить что-то. Когда видов скидок будет десяток (никогда), тогда будем делать для них классы.
Мда, вот так все просто и интересно. Начать изучать чтоли
Ебать, сам выдумал хуйню, сам её подебил. Стратегия в пхп это блядь шизофазия в чистом виде. Этот паттерн нужен для изменения поведения в КАНПЕЛИРУЕМОЙ программе. Когда у тебя просто нет другого способа обработки разных ситуаций, ведь объект уже в памяти. Нахуй она нужна в пхп, когда под каждый запрос все объекты с нуля создаешь?
Вот ответь лучше на это >>649417
>как вообще можно писать ООП код, не используя декораторы?
>Как можно писать АПИ не используя итераторы?
>Как можно использовать у себя в проекте сторонние либы без адаптеров?
>Когда видов скидок будет десяток (никогда)
>(никогда)
В смысле никогда? Это ты так за хозяина бизнеса решил?
Тебе то откуда знать что он выдумает через неделю?
>- напишите интернет-магазин на symfony + react за 6 часов
Если ты после 3 лет работы на технологии не можешь на фреймворке написать интернет магазин за 6 часов - ну как бы тебе не надо программированием заниматься.
Это я решил применить принцип YAGNI, и не городить масштабируемую систему на сотни видов скидок, когда фактически нужны только 2 вида.
>>650020
Не понял, при чем тут компиляция. Стратегия может пригодиться при работе со сторонней библиотекой, когда ты не можешь менять ее код, но можешь добавлять свои Стратегии для работы с даннными.
>>649968
Если у меня 2 вида скидок, я не собираюсь строить масштабируемую систему на сотни видов скидок. И так как желания бизнеса угадать невозможно, то и спроектировать грамотно такую систему заранее тоже малореально. Потому я делаю функцию и свитч в соответствие с принципом YAGNI. Рекомендую почитать про хлеб и пекарей: https://habr.com/ru/post/153225/
Увы, замечаю нездоровую тенденцию делать десятки микроклассов (из 1-2 методов на десяток строк) там, где можно сделать несколько функций. С этим мы будем бороться, конечно.
>>649532
В Доктрине есть события. Но я крайне не рекомендую их использовать, кроме каких-то исключительных случаев (пример такого случая: полное логгирование изменений в БД). В большинстве случаев вместо события можно просто вписать вызов нужной функции в код.
Например: надо после правки товара пересчитать скидку на него. Не пиши события, найти сервис редактирования товара и добавь туда эту функцию.
Недостаток событий в том, что они затрудняют чтение кода, не ясно, какие есть листенеры и когда они вызываются, трудно отследить последовательность действий. Почти всегда вместо события лучше влепить явный вызов нужной функции.
Крон-таск. Зачем тут триггеры и события - не понимаю. Просто раз в час удаляй устаревшие записи.
Если же надо чистить именно сразу, то поставь после того места, где делается инсерт, вызов функции очистки без всяких триггеров и событий.
> А как добавить в проект cron, чтоб он сам потом разворачивался?
Договоритесь хранить кронтаб в проекте.
>>649417
> Все современные приложения на пхп основаны на PSR-7, PSR-15 и middleware,
Вроде в Симфони нет middleware. Да и оно хорошо работает только на уровне модификации запросов/ответов (куки зашифровать, залоггировать что-нибудь).
> паттерн "Команда" обязательно используется в домене для каскадных изменений и очередей
Что мешает без команды просто вызывать нужный метод? Мне кажется, что "Команда" нужна в случае использования со всякими очередями, может быть там, где требуется их откатывать (десктопные приложения), но в большинстве случаев можно обойтись без неё.
> как вообще можно писать ООП код, не используя декораторы?
Берешь и пишешь. Не понимаю, что мешает обойтись без них. Приведи пример удачного использования декоратора. Я всегда рад узнать что-то новое.
> Как можно писать АПИ не используя итераторы?
Приведи пример, я не понимаю, где в API используются итераторы.
> Как можно использовать у себя в проекте сторонние либы без адаптеров?
Берешь и используешь. По принципу YAGNI. Если завтра потребуется (маловероятно) поменять библиотеку, просто найдем места, гда она вызывается и поменяем там.
Такое ощущение, что ты любишь усложнять код на ровном месте и делать лишнюю работу. Какой код проще и понятней - тот, где прямолинейно и императивно все записано (паттерн Transaction Script), или тот, где есть всякие события, очереди, декораторы, команды и десятки классов из 20 строчек?
Крон-таск. Зачем тут триггеры и события - не понимаю. Просто раз в час удаляй устаревшие записи.
Если же надо чистить именно сразу, то поставь после того места, где делается инсерт, вызов функции очистки без всяких триггеров и событий.
> А как добавить в проект cron, чтоб он сам потом разворачивался?
Договоритесь хранить кронтаб в проекте.
>>649417
> Все современные приложения на пхп основаны на PSR-7, PSR-15 и middleware,
Вроде в Симфони нет middleware. Да и оно хорошо работает только на уровне модификации запросов/ответов (куки зашифровать, залоггировать что-нибудь).
> паттерн "Команда" обязательно используется в домене для каскадных изменений и очередей
Что мешает без команды просто вызывать нужный метод? Мне кажется, что "Команда" нужна в случае использования со всякими очередями, может быть там, где требуется их откатывать (десктопные приложения), но в большинстве случаев можно обойтись без неё.
> как вообще можно писать ООП код, не используя декораторы?
Берешь и пишешь. Не понимаю, что мешает обойтись без них. Приведи пример удачного использования декоратора. Я всегда рад узнать что-то новое.
> Как можно писать АПИ не используя итераторы?
Приведи пример, я не понимаю, где в API используются итераторы.
> Как можно использовать у себя в проекте сторонние либы без адаптеров?
Берешь и используешь. По принципу YAGNI. Если завтра потребуется (маловероятно) поменять библиотеку, просто найдем места, гда она вызывается и поменяем там.
Такое ощущение, что ты любишь усложнять код на ровном месте и делать лишнюю работу. Какой код проще и понятней - тот, где прямолинейно и императивно все записано (паттерн Transaction Script), или тот, где есть всякие события, очереди, декораторы, команды и десятки классов из 20 строчек?
Отторжение из-за того, что паттерны применяют просто ради того, чтобы они были. Человек прочел учебник про паттернам, увидел подходящее место для Стратегии и влепил её (или сделал класс Money, когда увидел работу с деньгами). При этом код стал сложнее читаться, разбросанным по большому числу классов. Когда требуется править код, требуется делать много изменений. Если бы он не применял паттерны, а просто сделал несколько функций, все было бы проще.
Вот такой результат получается, когда человек не способен задать себе вопрос: какую выгоду я получу, использовав тут паттерн? Ты способен ответить на такой вопрос?
Другая типичная ошибка - строительство сложной масштабируемой системы там, где масштабирование не требуется и с 99% вероятностью не потребуется. Каждому хочется почувствовать себя строителем звездолета, а не рядовым автомехаником. А мне потом в их коде ковыряться приходится и думать, стоит ли выпрашивать время на выкашивание всех этих паттернов.
Типичный пример звездолетостроения: требуется сделать поиск по 2-3 параметрам. Звездолетчик пишет классы Query, QueryBuilder, QueryProcessor, StringTerm, NumericRange и тд. Хотя можно было просто написать функцию find($name, $minScore, $maxScore, $includeArchived). Или find(Filter $f). Ошибка зведолетчика: он думает, что завтра добавится 10 видов параметров и 10 видов условий, но только вот прошло больше года и не добавилось ни одного.
Читайте про пекарей и хлеб.
>Это я решил применить принцип YAGNI, и не городить масштабируемую систему на сотни видов скидок, когда фактически нужны только 2 вида.
Вообще надо смотреть что пишешь. Если какой-то онлайн магазин, то лучше бы сразу предусмотреть эту систему, чем потом сбоку её прикручивать.
>Вроде в Симфони нет middleware.
Симфони с четвертой версии это и есть middleware. После ебли с бандлами, сервисами и прочей хуйней пришли к этой концепции. Просто, красиво, независимо и расширяемо, хули еще надо?
>Что мешает без команды просто вызывать нужный метод? Мне кажется, что "Команда" нужна в случае использования со всякими очередями
Правильно кажется. Когда у тебя один бизнес процесс порождает побочные, то у тебя уже образуется очередь. Ты сам советовал для очистки устаревших записей использовать крон. Триггером для удаления может быть запрос из браузера, крон, событие из очереди, прямой вызов метода. И триггером для создания новой записи тоже. И здесь важно соблюсти единообразие. Нужно свести все эти способы к одному: команде и хендлерам. Приложение реагирует на создание команды, а не на частный способ обращения к нему.
>Берешь и пишешь. Не понимаю, что мешает обойтись без них.
Пишешь процедурный код. Тут без комментариев.
>Приведи пример, я не понимаю, где в API используются итераторы.
Итераторы используются для представления сложных объектов виде массивов. Потоки: апи отдает данные в поток вывода, клиент принимает данные из потока ввода. Запрос один, а данных дохуя. Пагинация поверх пагинации: в апи пятнадцать элементов на страницу, а у тебя сорок четыре, закрыл итератором и тебе похуй по сколько там апи отдает.
>Берешь и используешь.
А потом ноешь на двощах, че это никто не идет чистить твою легаси парашу.
>просто найдем места, гда она вызывается и поменяем там.
Ты вообще со сколькими кодовыми базами в своей жизни работал? Ты понимаешь сколько кода нужно переписать чтобы выпилить, например, доктрину или газл, сколько потенциальных ошибок и багов это повлечет? Никто в здравом уме тебе не даст в таких объемах код переписывать. Бля, щас ты наверно охуеешь, но классы фреймворка точно такие же либы, которые грузом висят в твоем коде. Ебать я насмотрелся на таких залуп понурых, которые сидят на втором симфони и мускуле замшелом просто потому что с какого-то хуя несколько лет назад решили что чужие классы не нужно своим интерфейсом закрывать.
>Какой код проще и понятней - тот, где прямолинейно и императивно все записано (паттерн Transaction Script), или тот, где есть всякие события, очереди, декораторы
Бля, ну если у тебя бизнес логики на десять срок кода, то можешь их и в индекс.пхп прописать. А если в твоей манере написать хотябы тысяч двести строк кода, то земля пухом тому кто с этим макаронным монстром столкнется.
Вообще все это звучит очень странно. Ну не может человек с опытом командной разработки не понимать зачем нужна архитектура, солид хуелид и какие-никакие абстракции. Давай колись, ты тралль или джун, косящий под бывалого?
>Вроде в Симфони нет middleware.
Симфони с четвертой версии это и есть middleware. После ебли с бандлами, сервисами и прочей хуйней пришли к этой концепции. Просто, красиво, независимо и расширяемо, хули еще надо?
>Что мешает без команды просто вызывать нужный метод? Мне кажется, что "Команда" нужна в случае использования со всякими очередями
Правильно кажется. Когда у тебя один бизнес процесс порождает побочные, то у тебя уже образуется очередь. Ты сам советовал для очистки устаревших записей использовать крон. Триггером для удаления может быть запрос из браузера, крон, событие из очереди, прямой вызов метода. И триггером для создания новой записи тоже. И здесь важно соблюсти единообразие. Нужно свести все эти способы к одному: команде и хендлерам. Приложение реагирует на создание команды, а не на частный способ обращения к нему.
>Берешь и пишешь. Не понимаю, что мешает обойтись без них.
Пишешь процедурный код. Тут без комментариев.
>Приведи пример, я не понимаю, где в API используются итераторы.
Итераторы используются для представления сложных объектов виде массивов. Потоки: апи отдает данные в поток вывода, клиент принимает данные из потока ввода. Запрос один, а данных дохуя. Пагинация поверх пагинации: в апи пятнадцать элементов на страницу, а у тебя сорок четыре, закрыл итератором и тебе похуй по сколько там апи отдает.
>Берешь и используешь.
А потом ноешь на двощах, че это никто не идет чистить твою легаси парашу.
>просто найдем места, гда она вызывается и поменяем там.
Ты вообще со сколькими кодовыми базами в своей жизни работал? Ты понимаешь сколько кода нужно переписать чтобы выпилить, например, доктрину или газл, сколько потенциальных ошибок и багов это повлечет? Никто в здравом уме тебе не даст в таких объемах код переписывать. Бля, щас ты наверно охуеешь, но классы фреймворка точно такие же либы, которые грузом висят в твоем коде. Ебать я насмотрелся на таких залуп понурых, которые сидят на втором симфони и мускуле замшелом просто потому что с какого-то хуя несколько лет назад решили что чужие классы не нужно своим интерфейсом закрывать.
>Какой код проще и понятней - тот, где прямолинейно и императивно все записано (паттерн Transaction Script), или тот, где есть всякие события, очереди, декораторы
Бля, ну если у тебя бизнес логики на десять срок кода, то можешь их и в индекс.пхп прописать. А если в твоей манере написать хотябы тысяч двести строк кода, то земля пухом тому кто с этим макаронным монстром столкнется.
Вообще все это звучит очень странно. Ну не может человек с опытом командной разработки не понимать зачем нужна архитектура, солид хуелид и какие-никакие абстракции. Давай колись, ты тралль или джун, косящий под бывалого?
>Давай колись, ты тралль или джун, косящий под бывалого?
Может даже вордпрессник. Вп будто специально именно такому подходу следует.
>Вп будто специально именно такому подходу следует.
Там один подход - сейчас сделаем одну функцию, а дальше видно будет. В стиле:
>не городить масштабируемую систему на сотни видов скидок, когда фактически нужны только 2 вида
Принцип YAGNI же. Зачем блогоплатформе гибкая архитектура с кучей классов?
Ну а потом понеслась - начали накручивать плагины, дополнения и имеем что имеем. Эа этот вордпресс всему пхп досталось.
> Симфони с четвертой версии это и есть middleware.
Что-то в документации ничего такого не гуглится. Гуглится только middleware для Messenger компонента. А я вел речь о HTTP middleware.
> Нужно свести все эти способы к одному: команде и хендлерам. Приложение реагирует на создание команды, а не на частный способ обращения к нему.
Не нужно. Гораздо проще просто сделать метод, который можно напрямую вызвать. Просто и логично. Чем создавать какие-то команды, передавать в какие-то очереди, чтобы потом в коде невозможно было разобраться.
Чтобы использовать очереди и команды, должна быть веская причина. Например: необходиомость вынести долгие операции в фоновый режим. И то, это влечет за собой кучу проблем (например: фоновая операция выполнилась с ошибкой, что теперь делать. Как отлаживать такие ситуации.).
И вообще, я тебе предложил привести конкретные примеры, где бы пригодились эти декораторы, итераторы и что ты там еще предлагал, но ты их привести не можешь. Твой пример использования итераторов в API я просто не понял из-за сумбурного описания.
> Ты понимаешь сколько кода нужно переписать чтобы выпилить, например, доктрину или газл,
Ты на полном серьезе предлагаешь сделать адаптер к Доктрине? С интепретатором DQL? Ты на полном серьезе предлагаешь "заменить" Доктрину на что-то другое? Это нереально, это по сути переписывание всего кода с нуля.
> Ты вообще со сколькими кодовыми базами в своей жизни работал?
Ответный вопрос: опиши свой адаптер для Доктрины, который ты, по твоим уверениям, делал. Я почему-то сильно сомневаюсь в его существовании.
>Что-то в документации ничего такого не гуглится.
Ну это ты почему то считаешь, что если используешь паттерн, то должно быть огромными буквами написано его название. Вот тебе видео, в котором один из контрибьютеров рассказывает как все устроено в современных фреймворках, буквально с ноля, до симфони 4
https://www.youtube.com/watch?v=pz6VdH4_BSg
И вот еще до кучи видео от автора доктрины о том как вообще пхп разработка пришла туда, где она сейчас.
https://www.youtube.com/watch?v=v1I57-_Rsv0
Тебя с примерами за руку проведут через десяток лет эволюции пхп кода. Расскажут как рождается сложность, и как её пытались победить тысячи людей. Если уж эти видео тебя ничему не научат, то я тогда свой ебальник закрою точно.
>Не нужно. Гораздо проще просто сделать метод, который можно напрямую вызвать. Просто и логично.
Ты создашь метод, я создам метод, Вася создаст метод. А потом еще методы для другого функционала, а потом я уволюсь нахуй, а ты будешь сидеть с сотней несовместимых методов и горящей жопой таской. Я не зря спрашивал про твой опыт, любой кто работал с крупным проектом знает: есть вещи, которые поменять НЕВОЗМОЖНО. Еще пол года назад было возможно, а теперь нет. Я буквально сейчас чекаю самописную либу, объекты которой используются в сотнях мест, а места, в которых они используются в тысячах. Изменяя классы этой либы ты в принципе не можешь оценить последствия своих решений.
>Твой пример использования итераторов в API я просто не понял из-за сумбурного описания.
Хули там непонятного. Про стримы в гугле почитаешь. Вот тебе пример итератора http://phpfiddle.org/lite/code/exbh-xipj Апи отдает по пять, ты выводишь двенадцать, при этом не замечаешь что есть какое-то апи, или какая-то пагинация вообще.
>Ты на полном серьезе предлагаешь сделать адаптер к Доктрине? С интепретатором DQL?
Хватит тролить тупостью. Ты создаешь свой интерфейс, который делает то что тебе нужно. И реализуешь его своим классом, который уже обращается к доктрине. Когда припрет, то ты через di просто подменишь реализацию где хочешь и на что хочешь, при этом не сломав нихуя в другом месте.
>опиши свой адаптер для Доктрины, который ты, по твоим уверениям, делал. Я почему-то сильно сомневаюсь в его существовании.
Когда я говрю "Доктрины", то имею ввиду EntityManager, внутри которого спрятан UnitOfWork. UnitOfWork заменяется своим Persister сервисом, через который управляешь транзакциями persist(), flush() итд. Интерфейсы репозиториев пишутся свои, к ним доктриновская реализация. EntityManager используется только внутри этой реализации, там хоть DQL пиши, хоть дрочи вприсядку, я бы выбрал последнее. Вуаля, когда выйдет третья доктрина придется переписать только классы реализаций, работа нудная, но вполне рутинная и выполнимая.
>Что-то в документации ничего такого не гуглится.
Ну это ты почему то считаешь, что если используешь паттерн, то должно быть огромными буквами написано его название. Вот тебе видео, в котором один из контрибьютеров рассказывает как все устроено в современных фреймворках, буквально с ноля, до симфони 4
https://www.youtube.com/watch?v=pz6VdH4_BSg
И вот еще до кучи видео от автора доктрины о том как вообще пхп разработка пришла туда, где она сейчас.
https://www.youtube.com/watch?v=v1I57-_Rsv0
Тебя с примерами за руку проведут через десяток лет эволюции пхп кода. Расскажут как рождается сложность, и как её пытались победить тысячи людей. Если уж эти видео тебя ничему не научат, то я тогда свой ебальник закрою точно.
>Не нужно. Гораздо проще просто сделать метод, который можно напрямую вызвать. Просто и логично.
Ты создашь метод, я создам метод, Вася создаст метод. А потом еще методы для другого функционала, а потом я уволюсь нахуй, а ты будешь сидеть с сотней несовместимых методов и горящей жопой таской. Я не зря спрашивал про твой опыт, любой кто работал с крупным проектом знает: есть вещи, которые поменять НЕВОЗМОЖНО. Еще пол года назад было возможно, а теперь нет. Я буквально сейчас чекаю самописную либу, объекты которой используются в сотнях мест, а места, в которых они используются в тысячах. Изменяя классы этой либы ты в принципе не можешь оценить последствия своих решений.
>Твой пример использования итераторов в API я просто не понял из-за сумбурного описания.
Хули там непонятного. Про стримы в гугле почитаешь. Вот тебе пример итератора http://phpfiddle.org/lite/code/exbh-xipj Апи отдает по пять, ты выводишь двенадцать, при этом не замечаешь что есть какое-то апи, или какая-то пагинация вообще.
>Ты на полном серьезе предлагаешь сделать адаптер к Доктрине? С интепретатором DQL?
Хватит тролить тупостью. Ты создаешь свой интерфейс, который делает то что тебе нужно. И реализуешь его своим классом, который уже обращается к доктрине. Когда припрет, то ты через di просто подменишь реализацию где хочешь и на что хочешь, при этом не сломав нихуя в другом месте.
>опиши свой адаптер для Доктрины, который ты, по твоим уверениям, делал. Я почему-то сильно сомневаюсь в его существовании.
Когда я говрю "Доктрины", то имею ввиду EntityManager, внутри которого спрятан UnitOfWork. UnitOfWork заменяется своим Persister сервисом, через который управляешь транзакциями persist(), flush() итд. Интерфейсы репозиториев пишутся свои, к ним доктриновская реализация. EntityManager используется только внутри этой реализации, там хоть DQL пиши, хоть дрочи вприсядку, я бы выбрал последнее. Вуаля, когда выйдет третья доктрина придется переписать только классы реализаций, работа нудная, но вполне рутинная и выполнимая.
>>645512
>>647817
Bump решением первой части вектора с учетом замечаний:
https://ideone.com/aXqwbZ
ОП, my dear, посмотри пожалуйста, когда найдешь время.
Решил все-таки использовать абстрактные методы, чтобы не нарушать тот принцип, который ты упоминал в учебнике.
По-прежнему очень интересно, как можно составить решение с твоим форматом входящего массива - никак в толк не возьму. Pасскажи, пожалуйста.
Также есть общие соображения по поводу дальнейшего антикризисного решения. Как насчет определения метода в Company, который создает копию департаментов, производит над ними манипуляции, после чего использует их для создания нового объекта данного класса и печатает репорт?
Такая практика вообще имеет место быть, когда метод определенного класса создает объект того же самого класса? Это нормально?
1. Тесты, чтобы понять свой уровень скилла и найти темы которые херово знаю
2. Полезные статьи где на пальцах объясняют ООП, на сайте где я работаю все через функции
3. Как развиваться наиболее эффективно, чтобы зарплату можно было просить больше?
И самый интересный вопрос, как заставить себя работать в эпоху удалёнки?
>Полезные статьи где на пальцах объясняют ООП, на сайте где я работаю все через функции
Читай всё подряд + практикуйся.
>как заставить себя работать в эпоху удалёнки?
Поработать на дноработе до этого.
>Полезные статьи где на пальцах объясняют ООП, на сайте где я работаю все через функции
Я ООП понял после Мейерса. где-то на середине книги щелкнуло и я познал дзен.
>на сайте где я работаю все через функции
Ор, уж не с тем ли сверхразумом отрицающим архитектуру ты работаешь?
Как первая работа считаю нормальной, но вот поддержка старых велосипедов и внедрение новых немного напрягает
>Вот тебе пример итератора http://phpfiddle.org/lite/code/exbh-xipj
О, прикольно. Можешь еще что-то наподобии накидать ключевых слов? Мб какие-то структуры из spl, которые имеют место быть в вебе
ОП, помоги с SILEX разобраться с аутентификацией,
я сделал класс class TokenAuthenticator extends AbstractGuardAuthenticator, настроил фаирвол, руты, отправляю хэдер с X-AUTH-TOKEN в контроллер для которого требуются определенные права - все ок, токен проверяется, доступ предоставляется или отклоняется.
Но как мне сделать контроллер для проверки формы логина/пароля? Сделать свой контроллер в котором вызывать методы TokenAuthenticator как в мануале (пикрил), или для это уже реализовано, не могу понять.
Исходники:
Точка входа https://github.com/enotocode/birthday_reminder/blob/master/src/server/public/index.php
Токенатентификатор (я его скопировал из доков https://symfony.com/doc/current/security/guard_authentication.html)
https://github.com/enotocode/birthday_reminder/blob/master/src/server/Classes/TokenAuthenticator.php
Контроллер-Аутентификатор
https://github.com/enotocode/birthday_reminder/blob/master/src/server/Controllers/AuthenticationController.php
> Вот тебе пример итератора http://phpfiddle.org/lite/code/exbh-xipj Апи отдает по пять, ты выводишь двенадцать, при этом не замечаешь что есть какое-то апи
Поясни, я нихуя не понимаю. Какая разница, итератор тут или нет, если ты все равно результаты загоняешь просто в форич и перебираешь до последнего?
мимо пытаюсь разобраться с паттернами
Открываешь доку по SPL и читаешь. Там список с кошкин хуй. Открываешь список паттернов и читаешь, там тоже от силы пара десятков. Это часа два времени, нихуя сложноного.
>>652364
>Какая разница, итератор тут или нет, если ты все равно результаты загоняешь просто в форич и перебираешь до последнего
В том-то и дело что без итератора мы не можем их никуда засунуть. Это ресурс, причем дискретный, который нужно теребить после каждой порции данных. А с помощью итератора мы его представляем в виде непрерывного массива.
сука с пикчи в голос
Если по простому, то просто кладешь в кэш на минуту инфу о том что хост лежит, и вместо хоста дергаешь кэш. В идеале нужно ввести сущность "Хост" и у него чекать доступен он или нет. Тогда можно и отслеживать статус в реальном времени и логи вести удобнее будет. Можно будет в неловкой ситуации закричать "начальник он обосрался" и пруфануть, а то хули они лежат вообще.
да зачем сущность то вводить? просто функция висит которая чекает. и вот интересует как мне это обставить? если верить ддокам по пыхе то если file_get_contents не может получить, то возвращает false. но вернет ли он мне сейчас его ?
без курла. его нет на проекте и подключаться он не будет. заказчик ебанутый чутка, да
К нему и все вопросы.
Ебать, он тебя рабочего инструмента лишил, а тебе норм. Пусть сам ебётся тогда.
Как фиксить это говно?
npm install выполняется нормально.
>начальство таких подбирает
А я вот тут учил бекенд, базы данных, паттерны, пару фреймворков познал.
На собеседовании говорили - ну немного верстать надо уметь, кнопочку там подправить например. Ну ок - это тоже не сложно.
Посадили на вёрстку, где я говно делаю потому, что не умею во фронтенд особо. Поработаю пару недель и если ситуация не изменится - ну их нахуй.
Я так смотрю - у них там все универсалы, а код на проектах уровня вордпресса, от которого я стараюсь держаться подальше.
Вот так начальство работников подбирает - в вакансии было написано знание пхп, желательно фреймворков и тд. Потому и делаем говно.
Ну ты бы хоть скрин бы кинул. Ошибка чего? Ошибка в каком то php файле? Ошибка сервера 256 лол? Ошибка в консоли браузер?
Кусок кода с проверкой логина на на уже имеющийся в БД работает, но кусок с INSERT INTO не работает.
Что я делаю не так?
Дополняю.
При вводе новой инфы возвращается только "Array ( )", это, скорее всего, 66 строка, где проверяется массив fetchAll после запроса SELECT.
Попробуй каждую строчку дампануть по очередно. Поймешь в какой у тебя что то не так работает
Бамп
есть два контроллера head.php и product.php. один обрабатывает шаблон где head со всеми мета тегами и seo парашей, а второй соответственно выводит данные о товаре для контентной части. каждый из них соответственно передает обработанные данные в свой шаблон head.tpl и product.tpl соответственно. мне нужно так же доработать seo и opengraph парашу в head.tpl, и добавить туда данные о товаре которые приходят в product.tpl и который отдает контроллер product.php
так вот: я могу как то вызвать из head.php функцию-обработчик из product.php или мне придется копипасть? сами функции в product.php никак не инкапсулированны и записаны через public если чо
Дело в том, что каждому юзеру за участие в опросе положено начисление баллов, User::addRating($int rating).
Хочу начислять их в Poll:addVotedUsers() и написать там
$user->addRating($poll->getPrice()). Получается сайд-эффект, но который обязателен всегда.
Так можно делать или за такое убивают нахер?
Погуглил, похожий пример, в доках доктрины в методе addEntry() кроме добавления записи еще и увеличивается $balance.
https://www.doctrine-project.org/projects/doctrine-orm/en/2.7/cookbook/aggregate-fields.html#using-an-aggregate-field
Получается, сайд-эффекты можно, или это несчитово за сайд-эффект?
У тебя каша в голове. Я уже тут говорил кому-то: забудь нахуй все эти передать, вызвать метод, добавить. Возьми бумажку и рот вытри опиши на ней по пунктам свой бизнес процесс, без кода, базы и прочей хуйни.
Пользователь голосует за пункт опроса, при этом пользователю начисляется рейтинг.
Что в себе эта фраза содержит:
1) Есть опрос.
2) Есть пункт опроса.
3) Есть пользователь.
4) Есть рейтинг пользователя.
5) Рейтинг пользователя увеличивается, когда пользователь проголосовал.
Это твоя бизнес транзакция. Выполнив её мы подбиваем итог, что из наших сущностей участников поменялось и как. Их может быть хоть триста. Если они вписываются в бизнес процесс, то все норм.
Этим и занимается доктрина, весь её сложный механизм нужен не просто для того чтобы данные в таблицы сохранять, для этого и актив рекорд подойдет. Идея как раз в том чтобы отслеживать изменения в объектах бизнес транзакции.
Идем дальше. Подробно рассмотрим процесс голосования.
Голосуя пользователь подписывается под пунктом опроса, внося себя в список проголосовавших за опрос.
1) Есть список проголосовавших.
2) Когда пользователь вносится в список проголосовавших, он считается проголосовавшим.
Подробно рассмотрим процесс начисления рейтинга.
У опроса есть стоимость, которая используется для начисления рейтинга проголосовавшему
1) Есть стоимость опроса.
2) Стоимость добавляется к рейтингу
И так далее. Ты создаешь все эти сущности по мере поступления: рейтинг, стоимость, пользователь, хуй в носу. А потом таким же образом решаешь как их компоновать, руководствуясь в первую очередь своим процессом. Потом описываешь сами процессы их взаимодействия. В итоге получается что-то примерно такое https://3v4l.org/AREPJ .
И только теперь ты решаешь как сохранять изменения своих сущностей в базу. Создаешь таблицы, прописываешь маппинги доктрины и прочую хуйню-малафью.
У тебя каша в голове. Я уже тут говорил кому-то: забудь нахуй все эти передать, вызвать метод, добавить. Возьми бумажку и рот вытри опиши на ней по пунктам свой бизнес процесс, без кода, базы и прочей хуйни.
Пользователь голосует за пункт опроса, при этом пользователю начисляется рейтинг.
Что в себе эта фраза содержит:
1) Есть опрос.
2) Есть пункт опроса.
3) Есть пользователь.
4) Есть рейтинг пользователя.
5) Рейтинг пользователя увеличивается, когда пользователь проголосовал.
Это твоя бизнес транзакция. Выполнив её мы подбиваем итог, что из наших сущностей участников поменялось и как. Их может быть хоть триста. Если они вписываются в бизнес процесс, то все норм.
Этим и занимается доктрина, весь её сложный механизм нужен не просто для того чтобы данные в таблицы сохранять, для этого и актив рекорд подойдет. Идея как раз в том чтобы отслеживать изменения в объектах бизнес транзакции.
Идем дальше. Подробно рассмотрим процесс голосования.
Голосуя пользователь подписывается под пунктом опроса, внося себя в список проголосовавших за опрос.
1) Есть список проголосовавших.
2) Когда пользователь вносится в список проголосовавших, он считается проголосовавшим.
Подробно рассмотрим процесс начисления рейтинга.
У опроса есть стоимость, которая используется для начисления рейтинга проголосовавшему
1) Есть стоимость опроса.
2) Стоимость добавляется к рейтингу
И так далее. Ты создаешь все эти сущности по мере поступления: рейтинг, стоимость, пользователь, хуй в носу. А потом таким же образом решаешь как их компоновать, руководствуясь в первую очередь своим процессом. Потом описываешь сами процессы их взаимодействия. В итоге получается что-то примерно такое https://3v4l.org/AREPJ .
И только теперь ты решаешь как сохранять изменения своих сущностей в базу. Создаешь таблицы, прописываешь маппинги доктрины и прочую хуйню-малафью.
>$poll->vote($vote);
А это вообще законно? Разве не должна такая логика храниться вне объекта, где-нибудь в классе PollService? Опрос не может голосовать, яблоко не может выжимать из себя сок.
Алсо, как приверженца делать любую сущность классом, хочу спросить.
Вот ты сделал аж 7 классов для базовой реализации опроса, а дальше - больше. В реальной жизни они лежат в разных файлах или как-то комбинируются?
А если опросы бывают радио и с чекбоксами, то такие опросы будут наследоваться от AbstractPoll и определять свой vote() в CheckboxPoll и RadioPoll или распадутся на более сложную логику?
А если в опросах может быть несколько вопросов? Это я не оверинженерю, я описываю реальный проект.
Логика не может храниться вне объекта. Она может храниться в другом объекте. Ты мой пост читал? Опиши свой бизнес процесс и исходя из него реши в каком объекте хранится логика. Названия типа PollService хуевая тема. Они нихуя не говорят что на самом деле происходит. FillPoll, Voting, Polling ты пишешь код чтобы его потом читать, так пиши понятно.
Слишком много скобочек. Здесь спокойно можно обойтись одним уровнем вложенности.
Там никакой полезной информации.
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/root/.nvm/versions/node/v12.16.1/bin/node',
1 verbose cli '/root/.nvm/versions/node/v12.16.1/bin/npm',
1 verbose cli 'run',
1 verbose cli 'dev'
1 verbose cli ]
2 info using npm@6.13.4
3 info using
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle @~predev: @
6 info lifecycle @~dev: @
7 verbose lifecycle @~dev: unsafe-perm in lifecycle true
8 verbose lifecycle @~dev: PATH: /root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/www/node_modules/.bin:/root/.nvm/versions/node/v12.16.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle @~dev: CWD: /var/www
10 silly lifecycle @~dev: Args: [ '-c', 'npm run development' ]
11 silly lifecycle @~dev: Returned: code: 1 signal: null
12 info lifecycle @~dev: Failed to exec dev script
13 verbose stack Error: @ dev: `npm run development`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:311:20)
13 verbose stack at ChildProcess.<anonymous> (/root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:311:20)
13 verbose stack at maybeClose (internal/child_process.js:1021:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid @
15 verbose cwd /var/www
16 verbose Linux 4.19.76-linuxkit
17 verbose argv "/root/.nvm/versions/node/v12.16.1/bin/node" "/root/.nvm/versions/node/v12.16.1/bin/npm" "run" "dev"
18 verbose node v12.16.1
19 verbose npm v6.13.4
20 error code ELIFECYCLE
21 error errno 1
22 error @ dev: `npm run development`
22 error Exit status 1
23 error Failed at the @ dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
Там никакой полезной информации.
0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli '/root/.nvm/versions/node/v12.16.1/bin/node',
1 verbose cli '/root/.nvm/versions/node/v12.16.1/bin/npm',
1 verbose cli 'run',
1 verbose cli 'dev'
1 verbose cli ]
2 info using npm@6.13.4
3 info using
4 verbose run-script [ 'predev', 'dev', 'postdev' ]
5 info lifecycle @~predev: @
6 info lifecycle @~dev: @
7 verbose lifecycle @~dev: unsafe-perm in lifecycle true
8 verbose lifecycle @~dev: PATH: /root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/var/www/node_modules/.bin:/root/.nvm/versions/node/v12.16.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9 verbose lifecycle @~dev: CWD: /var/www
10 silly lifecycle @~dev: Args: [ '-c', 'npm run development' ]
11 silly lifecycle @~dev: Returned: code: 1 signal: null
12 info lifecycle @~dev: Failed to exec dev script
13 verbose stack Error: @ dev: `npm run development`
13 verbose stack Exit status 1
13 verbose stack at EventEmitter.<anonymous> (/root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack at EventEmitter.emit (events.js:311:20)
13 verbose stack at ChildProcess.<anonymous> (/root/.nvm/versions/node/v12.16.1/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack at ChildProcess.emit (events.js:311:20)
13 verbose stack at maybeClose (internal/child_process.js:1021:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid @
15 verbose cwd /var/www
16 verbose Linux 4.19.76-linuxkit
17 verbose argv "/root/.nvm/versions/node/v12.16.1/bin/node" "/root/.nvm/versions/node/v12.16.1/bin/npm" "run" "dev"
18 verbose node v12.16.1
19 verbose npm v6.13.4
20 error code ELIFECYCLE
21 error errno 1
22 error @ dev: `npm run development`
22 error Exit status 1
23 error Failed at the @ dev script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]
>В реальной жизни они лежат в разных файлах или как-то комбинируются?
Каждый класс это отдельный файл, ясен хуй. Без этого автозагрузка нормально работать не будет, сейчас все делается по PSR-0, PSR-4. Это в сниппете пришлось все на одной странице писать, там по другому нельзя.
>А если опросы бывают радио и с чекбоксами, то такие опросы будут наследоваться от AbstractPoll и определять свой vote()
Абстрактный класс используется только для переиспользования повторяющегося кода. Логика должна быть типа "одинаковые методы выносим в абстрактный класс".
>CheckboxPoll и RadioPoll или распадутся на более сложную логику?
Будет логика - будет и распад. Я нихуя не знаю какие у тебя там требования, хули гадать. Вообще постами на двоще такое не очень удобно описывать, даже сниппеты с несколькими классами писать залупа та еще.
Братан, я в любой непонятной ситуации сношу node_modules и заново ставлю, попробуй и ты, и кеш нпма почисти еще
Делал это уже. Один хуй баги эти идут.
Я тут начал подозревать, что это может быть как-то связано с анальным хороводом прав и пробросом папок в докер.
Хотя из-под рута запускается, должно быть вообще похуй.
Винда сраная говна в жопу залила.
Попробовал на VDS - все нормально и работает в 5 раз быстрее.
Учитывая что на ноуте у меня i5, а на вдс 2 ядра 2 гига.
Ты вообще в какой ОС девелопишь? В смысле в какой ОС у тебя IDE стоит?
А хуй знает на самом деле. Прям хорошей книги по моделированию я не знаю, обычно все это в статьях. Гугли domain modelling, вот например неплохой конспект лекций http://stg-tud.github.io/eise/WS11-EiSE-07-Domain_Modeling.pdf
Щас домен тесно связывают с DDD, но я бы новичку не рекомендовал в DDD упарываться. Сначала научись моделировать, а потом уже грузи башку иммутабельностью, контекстами и прочей хуйней.
Хотя если есть желание, по DDD две книги основные "синяя" и "красная", правда они не по пхп. По пхп тоже есть, но там хорошие мысли сопровождаются хуевым кодом.
теперь запануем?
Вопрос - я не очень понимаю как работают подключения к базе данных.
Каждый раз когда в ПХП выполняется мой запрос - создается новое подключение? И когда скрипт выполняется полностью - подключение к базе данных умирает? Или подключение остается открытым? И если другой пользователь запускает этот же скрипт - я создаю новое в пхп подключение получается? Или пхп находит еще открытое подключение и использует его?
А в системах которые не "умирают" после выполнения скрипта - допустим в node я создаю подключение к базе, выполняется скрипт - а после него остается открытое подключение к базе?
Еще существует такая вещь как пул подключений. Для чего это нужно?
Пасиб, учту.
На убунте, и то потому что там есть i3wm, с ним очень удобно. А так на винде раньше работал с виртуалкой для дев, помню там какое-то говно в гите вечно было с символами переноса строки, и я пока не настроил гит фор шиндовс то у меня любой коммит делал весь файл зеленым
Работаю на PHPStotm, необходимо работать с БД MySQL.
Добавил подключение через вкладку Database, проверил подключение, все работает.
Пишу в скрипте $link= mysqli_connect('localhost', 'root','', 'forum');
Запускаю и получаю ошибку: Fatal error: Uncaught Error: Call to undefined function mysqli_connect() .
Помогите, анончики, молю.
Братан, это гуглится в один клик. Надо включить расширение mysqli. Если ты на винде, то поставь OpenServer или любую WAMP хуйню, в которой дяди уже настроили все для тебя. А если ты на линухе, то тем более привыкай гуглить даже как дышать и пердеть.
Бля, не хочу ставить эти уебанские сервера, они неудобные пиздец.
Пытался гуглить, не нашел ответ, который бы мне помог.
Зато нашел варнинг "Unable to load php_mysqli.dll", хз, как фиксить.
В php.ini есть extension=php_mysqli.dll.
Ну да. Поднимать все нужные сервисы и выключать одной кнопкой неудобная хуйня. Ебаться с конфигами самому тоже всяко удобней, заодно учишься сам разбираться хули dll не работает, разбираешься где их качать, pear хуйню там всякую. Интерфейс для настроек тоже неудобно нихуя, через консоль вернее получается.
В общем сыглы, готовые сервера для не шарящих в админстве сплошная обуза.
>Unable to load php_mysqli.dll
Потому что у тебя его просто нет. Гугли как на винду на мыху установить mysqli. А вообще используй пдо, он просто лучше
ссылка на гугл диск — shorturl.at/cmuB1
Если совсем просто, то это софт для создания и запуска виртуальных машин.
В реальности конечно не для создания, а для упаковки, и не для запуска, а для управления, и не виртуальных машин, а контейнеров.
Но аналогия более-менее точная.
так я могу поставить линукс и запускать там проги как на виртуалке или там чисто терминал?
Сам просил просто, а теперь в залупу лезешь. Контейнер это по сути и есть линукс система, но не совсем виртуальная. И нужна она именно для запуска "проги", но по определенным правилам.
Допустим ты накалякал три контейнера на базе убунты: nginx, php-fpm и postgres.
Еще ты накалякал между ними сеть.
Потом ты накалякал что Nginx контейнер слушает 80 порт твоей машины и стучится в php-fpm контейнер.
Потом накалякал что папка с твоим проектом монтируется в php-fpm контейнер.
Тогда если перейти в браузере по адресу из конфига nginx, то он постучится в php-fpm контейнер, а тот загрузит файлы проекта и ты увидишь результат в браузере.
те я как бы из винды будут видеть этот файл,но он будут работать под линуксом и сторонними прогами,как браузер я могу оттуда вытащить результат?
Бля, ну не буду я тут википедию переписывать иди и почитай епты.
Винды в уравнении нет. Докер для винды это "настоящая" виртуальныая машина с линуксом, в которой запущен докер.
Сначала ты монтируешь диск C к виртуальной машине, потом при запуске контейнера ты монтируешь часть уже виртуального диска к контейнеру. Если у тебя прокачанная удача, то все заработает нормально и все всё увидят.
Спасибо.
Очередной бамп вопросу.
Если тебе приходится писать код для лендоса дважды, то тебе лучше сменить профессию.
Просто у меня знакомство с пыхой было не самым лучшим, посредством моего опрокидывания, конечно же. Поэтому я бы хотел нормально ему выучиться, чтобы не выглядеть посмешищем, я же не прошу чего-то большего
Да не пишу я дважды код для лендоса, откуда ты это взял?
Определил что у тебя в очке бутылка по кодовой фразе "отвращение к языку". Добро пожаловать в клуб.
Ни так пиздуй на завод или в шахту. Хули ты людей на бабки разводишь?
Ничего не знаю, клиенты не жалуются, а как я делал, это их не должно интересовать. Но мне от этого совестно, поэтому хочу заниматься делом, которое меня увлекает честно, но из-за собственной лени и возможного страха я так и не решился пылесосить документацию пыхи. Поэтому я и спросил, есть ли какие-то в тырнете комплексы для таких ленивых и красивых как я ?
Стандартный комплекс. Принимать ректально, за пол часа до еды. Пылесосишь документацию - мое почтение.
что ж ты такой неприветливый, сказал бы сразу - я не помощник, а агрессор. Я всего лишь хочу делать свою работу качественно, что же в этом плохого?
Бля, так бы сразу и сказал. Тогда нужен качественно другой уровень. Тут уже нужно применять комплекс только с утра, а то джавистом станешь.
что, нужно в рука держать такой огромный дилдо? Это и есть комплексы по изучению пыхи? Ну тогда я не так уж и далеко ушёл, пойду навёрстывать упущенное!
Докер упаковывает программу и нужные ей файлы в "контейнер". В "контейнере" своя файловая система, изолированная от хоста. Также, в "контейнер" можно пробрасывать папки с хоста, чтобы они были в нем видны в определенном месте файловой системы. В линуксе это работает нативно, в Windows запускается виртуальная машина с линуксом, а в ней уже контейнер.
>>654129
Видимо надо с сайта PHP скачать расширение и положить в нужную папку (папка ext внутри папки PHP, я думаю).
>>653917
> Каждый раз когда в ПХП выполняется мой запрос - создается новое подключение? И когда скрипт выполняется полностью - подключение к базе данных умирает?
Да. Да.
> А в системах которые не "умирают" после выполнения скрипта - допустим в node я создаю подключение к базе, выполняется скрипт - а после него остается открытое подключение к базе?
Там используется пул. Пул нужен, чтобы не создавать/убивать соединения, а "брать" их из пула на время выполнения скрипта, и после использования возвращать в пул.
Пул дает выигрыш, если установка соединения медленная. В базах вроде MySQL, вроде бы такой проблемы нет. У пула есть и недостаток - возможна ситуация, когда скрипт начнет транзакцию, но не закоммитит ее, и вернет в пул такое соединение, а потом оно достанется другому скрипту и он продолжит эту транзакцию вместо того, чтобы начать с "чистого листа".
Возможно, PDO выбрасывает исключение, а их показ на хостинге отключен. Тогда надо смотреть логи (журнал ошибок PHP), там будет причина ошибки. Как смотреть логи - зависит от хостера, у кого-то они в админке есть, у кого-то надо в консоли команды писать.
>>651299
По моему, твой пример с итератором можно переписать без итератора, и код станет проще. Делаем функцию вроде getCatFacts($limit), в ней обычным циклом for() дергаем API нужное число раз. Получаем тот же результат, только без сложного класса-итератора. Еще есть вариант с использованием функции-генератора, он тоже проще, чем итератор. Но в плане читабельности, на мой взгляд, проще всего будет именно обычный цикл for(), обычный императивный код.
Возможно, ты имел в виду ситуацию, где нужно выдавать данные неограниченным потоком. Тогда стоит использовать функцию-генератор. Хотя я на практике с такими случаями не сталкивался, чтобы в ответ на вызов метода API шел длинный пото данных.
> Я не зря спрашивал про твой опыт, любой кто работал с крупным проектом знает: есть вещи, которые поменять НЕВОЗМОЖНО. Еще пол года назад было возможно, а теперь нет. Я буквально сейчас чекаю самописную либу, объекты которой используются в сотнях мест, а места, в которых они используются в тысячах. Изменяя классы этой либы ты в принципе не можешь оценить последствия своих решений.
Разве не то же самое с командами и обработчиками? При большом объеме кода там точно так же все будет зависеть от всего и ничего нельзя будет поменять. Чем обработчик событий на шине отличается от сервиса в монолитном коде? Он точно так же выполняет какую-то логику.
> Ты создаешь свой интерфейс, который делает то что тебе нужно. И реализуешь его своим классом, который уже обращается к доктрине. Когда припрет, то ты через di просто подменишь реализацию где хочешь и на что хочешь, при этом не сломав нихуя в другом месте.
В реальном приложении могут быть тысячи обращений к Доктрине. И понадобятся сотни хорошо документированных интерфейсов (так как тайп-хинты в PHP ограничены в возможностях), сотни реализаций адаптеров, только ради возможности заменить Доктрину на что-то другое. Хотя это может и никогда не потребоваться.
Я согласен, что твой подход действительно упростит переход на новую версию библиотеки. Но ценой больших трудозатрат.
Возможно, PDO выбрасывает исключение, а их показ на хостинге отключен. Тогда надо смотреть логи (журнал ошибок PHP), там будет причина ошибки. Как смотреть логи - зависит от хостера, у кого-то они в админке есть, у кого-то надо в консоли команды писать.
>>651299
По моему, твой пример с итератором можно переписать без итератора, и код станет проще. Делаем функцию вроде getCatFacts($limit), в ней обычным циклом for() дергаем API нужное число раз. Получаем тот же результат, только без сложного класса-итератора. Еще есть вариант с использованием функции-генератора, он тоже проще, чем итератор. Но в плане читабельности, на мой взгляд, проще всего будет именно обычный цикл for(), обычный императивный код.
Возможно, ты имел в виду ситуацию, где нужно выдавать данные неограниченным потоком. Тогда стоит использовать функцию-генератор. Хотя я на практике с такими случаями не сталкивался, чтобы в ответ на вызов метода API шел длинный пото данных.
> Я не зря спрашивал про твой опыт, любой кто работал с крупным проектом знает: есть вещи, которые поменять НЕВОЗМОЖНО. Еще пол года назад было возможно, а теперь нет. Я буквально сейчас чекаю самописную либу, объекты которой используются в сотнях мест, а места, в которых они используются в тысячах. Изменяя классы этой либы ты в принципе не можешь оценить последствия своих решений.
Разве не то же самое с командами и обработчиками? При большом объеме кода там точно так же все будет зависеть от всего и ничего нельзя будет поменять. Чем обработчик событий на шине отличается от сервиса в монолитном коде? Он точно так же выполняет какую-то логику.
> Ты создаешь свой интерфейс, который делает то что тебе нужно. И реализуешь его своим классом, который уже обращается к доктрине. Когда припрет, то ты через di просто подменишь реализацию где хочешь и на что хочешь, при этом не сломав нихуя в другом месте.
В реальном приложении могут быть тысячи обращений к Доктрине. И понадобятся сотни хорошо документированных интерфейсов (так как тайп-хинты в PHP ограничены в возможностях), сотни реализаций адаптеров, только ради возможности заменить Доктрину на что-то другое. Хотя это может и никогда не потребоваться.
Я согласен, что твой подход действительно упростит переход на новую версию библиотеки. Но ценой больших трудозатрат.
>Делаем функцию вроде getCatFacts($limit)
А функция один хуй будет в объекте, и цикл будет в объекте, и императивный код будет в объекте. И этим объектом будет Альберт Эйнштейн контроллер.
>Разве не то же самое с командами и обработчиками?
Команда вещь абстрактная, там могут быть любые поля, любые данные. У метода есть сигнатура, ты ожидаешь конкретные параметры и конкретным образом их обрабатываешь. Чем больше методов, тем больше вариантов, и тем больше шансов обосраться при изменении сигнатуры.
>Разве не то же самое с командами и обработчиками?
Разумеется нет. Обработчики нихуя не знают друг о друге. Удалил старый, добавил новый и вообще похуй как там оно работало.
>В реальном приложении могут быть тысячи обращений к Доктрине.
Ты такие приложения вообще видел, кукаретик? Обращения у тебя к энтити менеджеру, хоть сто, хоть тысяча - интерфейс один.
>Хотя это может и никогда не потребоваться.
Всегда требуется. Кеширование, перенос сервиса в апи, nosql изъебы.
>Но ценой больших трудозатрат.
Заебал. Ну нахуй ты вступаешь в полемику если нихуя не понимаешь о чем говорищь? Любой крупный проект за шесть лет переписывается как минимум дважды. Я тебе дураку скинул видео где компетентный человек объясняет почему. В том числе и потому что некомпетентные дебилы плодят за месяц технический долг ТЫСЯЧЕЛЕТНИЙ. Пиздец вообще, ты рассуждаешь типа: ну сяду ебать, перепишу там хули. В крупном проекте с хотя бы пятью активными программерами в неделю прирост кодовой базы ~2К сток. Ты блядь столько не прочитаешь даже, куда там нахуй понять или переписать. Хватит хуйню нести.
>неделю прирост кодовой базы ~2К сток
Больше.
В зависимости от задач каждый из этих 5 хоть каждый день по 2к+ может выдавать. Но в целом за неделю активного пердолинга в 5 лиц думаю гораздо больше 2к будет все равно.
Вольный пересказ документации?
>каждый из этих 5 хоть каждый день по 2к+ может выдавать
Ага - 4 строки в минуту. Все 8 рабочих часов.
А через неделю этих уже поехавших увезут в дурку и наймут других - выжимать.
Ты понял мою мысль.
Алсо, в дурку больше шансов уехать при дебаге 5 дней в неделю, за который может и 10 строк в итоге не запушишь, зато забудешь как тебя нахуй зовут. От обычного кода настолько не заебываешься.
Сап, программач.Нужна небольшая консультация.
Написал скрипт. Скрипт делает запрос, принимает в ответ JSON, декодирует(получается нихуевый такой ассоциативный массив с кучей вложений) Далее, он берет из него нужные мне строки и заносит в базу данных.
Хочу немного ускорить скрипт(снизу прилагаю кусок кода). Нужно ли создавать переменные типо, $url, $id, $sql. Если мне нужно обработать тысяч 500 строк то я полагаю это должно сильно замедлять выполнение скрипта, правильно? Может подставлять все сразу напрямую в mysqli_query?
foreach($items as $value){
$url=end($value["sizes"])["url"];
$id=$value["user_id"];
$sql="INSERT INTO users (ID, photoURL) VALUES ('$id', '$url')";
$result=mysqli_query($link, $sql);
Я только учусь, поэтому сильно не ругайте)
Разобрался, в чем прикол был. У меня в талице 4 столбца (ид, логин, пароль, число постов), а я указывал всего два параметра (логин и пароль), а поскольку столец с количеством постов не заполнялся автоматически, требовал вписчываться вручную, запрос и не уходил.
Теперь другая беда - запис дублируется, блять. Как фиксить? У меня всего один раз ексекут делается, страница не перезагружается. В чем дело?
Во первых большие JSON файлы парсятся не целиком, а постепенно. Чем нибудь вроде этого https://github.com/salsify/jsonstreamingparser . С памятью будет охуенчик, скорость соответственно тоже прибавится.
Во вторых вставку в базу делай пакетно. Примерно по 2К записей за раз. В идеале использовать UPSERT или скипать уже вставленные записи. Чтобы продолжать сразу с проблемного места, если все пойдет по пизде посреди процесса.
>Примерно по 2К записей за раз
Я делаю запросы к vkapi, там ограничение на 1000 записей, соответсвенно так и получается что я делаю по 1000 записей за раз.
Там не один огромный файл на 500 тыс, просто нужно прогнать много данных через скрипт.
В принципе у меня все работало, просто снес базу, решил заново спарсить, да и немного доработать скрипт.
>Этим и занимается доктрина, весь её сложный механизм нужен не просто для того чтобы данные в таблицы сохранять, для этого и актив рекорд подойдет.
Можешь пояснить за отличие актив рекорд от доктрины? Я периодически слышу, что доктрина "круче", типа серьезные проекты делаются на симфони на доктрине, а вот ActiveRecord в Yii2 - хуета. И почему тогда Laravel топчик, если там тот же Eloquent по сути та же AR, или я путаю?
Мимо проходящий анон.
На просторах стак овер флоу был такой ответ:
ORM - Active Record и Data Mapper. Отличаются они только тем, что в AR методы работы с БД хранятся в самом объекте, а в DM - отдельно. Вследствие чего последний считается более академически правильным (разделение ответственности) и дает больше преимуществ в сложных проектах. Примерами реализации AR являются Yii AR и Eloquent, DM - Doctrine и Atlas.Orm.
>уходит, они должны быть лаконичными
>хуета с первой ссылки гугла, подредакченная лаконичной хермакакой, в результате чего получается шизофазия, которой позавидуют любители SOLID
>собеседуемый сидит с еблом Епифанцева, пытаясь проанализировать хватит ли его атлетического опыта, чтобы достигнуть двери раньше, чем буйный шиз напротив сможет что-нибудь сделать
Как оценивал "лаконичность"? Ты сеньор-помидор из гугла, чтобы знать прикладную область настолько, чтобы свободно оперировать терминами, не вкладывая в них свое "понимание"?
Я думаю, тебе нужно сделать свой контроллер для этого, который проверит логин/пароль и выдаст нужный токен. Если ты используешь токены, то у тебя stateless аутентификация (без сессий и кук) и выдачу токенов ты организуешь сам. GuardAuthenticator лишь проверяет токены, он в такой ситуации не имеет дела с логинами/паролями.
>>651539
В функции printReport() стоило ставить перенос строки после точки, чтобы не было таких длинных строк. А так, код выглядит верно.
Вместо констант вроде Employee::MANAGER можно было использовать Manager::class - это встроенная константа, которая возвращает имя класса.
Для антикризисных мер стоит разобраться с клонированием объектов и магическим методом __clone(). Сделать несколько копий компании и дальше над ними проводить эксперименты. Придется также добавить методы для поиска работников по условиям, увольнения, изменения базовых ставок. Если запутаешься, то погугли в архивах тредов эту задачу и посмотри, как другие решали антикризисные меры.
В генераторе ходов вместо констант ходов (вверх, вниз итд) можно было использовать координаты вроде [+1, 0] (смещение по X и Y). Тогда не пришлось бы копипастить кучу одинаковых блоков кода. Также, можно разделить выбор хода на этапы:
- генерация возможных ходов
- отсев невозможных ходов (на занятую клетку, за границы поля)
- оценка оставшихся ходов
- выбор лучшего
Также, "вариант хода" можно сделать объектом с полями x, y.
Поле можно реализовать еще так: просто хранить в нем массив животных и на каждом ходе генерировать текстовое представление, не сохраняя его в массив. Выгода в том, что нам не надо тогда из класса животных при ходе обновлять поле, достаточно просто поменять координаты животного. У поля были бы методы вроде displayField(), isOccupied($x, $y), occupy($x, $y) (занимает клетку, удаляя других животных с клетки).
site.com/123 (после слэша только цифры, любое количество)
преобразовывались в:
site.com/?p=123
Нагуглил кучу гайдов по синтаксису htaccess и типичным заменам, но так и не смог написать работающее правило, сайт ложится с ошибкой 500 от моих попыток.
С меня как всегда
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m=m||function(){(m.a=m.a||[]).push(arguments)};
m.l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(61898841, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/61898841" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
Вставить вот сюда
# Добавление Счётчиков посещений
$wgHooks['BeforePageDisplay'][] = 'addscripts';
function addscripts( $out, $sk)
{
$out->addScript("<!-- Yandex.Metrika counter -->
[содержимое скрипта со всеми тегами и ОБЯЗАТЕЛЬНОЙ ЗАМЕНОЙ ВСЕХ КАВЫЧЕК " на СЛЭШ С КАВЫЧКАМИ \" ]
<!-- /Yandex.Metrika counter -->");
};
Но где там что менять я не понимаю, в синтаксисе ноль. С меня тонна нефти
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m=m||function(){(m.a=m.a||[]).push(arguments)};
m.l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(61898841, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/61898841" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
Вставить вот сюда
# Добавление Счётчиков посещений
$wgHooks['BeforePageDisplay'][] = 'addscripts';
function addscripts( $out, $sk)
{
$out->addScript("<!-- Yandex.Metrika counter -->
[содержимое скрипта со всеми тегами и ОБЯЗАТЕЛЬНОЙ ЗАМЕНОЙ ВСЕХ КАВЫЧЕК " на СЛЭШ С КАВЫЧКАМИ \" ]
<!-- /Yandex.Metrika counter -->");
};
Но где там что менять я не понимаю, в синтаксисе ноль. С меня тонна нефти
Кодстайл просто пиздец, вырвиглаз лютый. Почитай PSR или что-нибудь. Поставь PHPSTORM и нажми там "переформатировать исходный текст" что ли, не знаю.
tg: @sandfer
написал тебе в телеграм
Это копия, сохраненная 3 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.