«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP #114 Аноним 2019/12/21 14:10:12  №1552970 1
php-noob-1.png (33, 500x500)
500x500
cat-cafe-osaka.jpg (157, 1024x683)
683x1024
cat-sad.jpg (194, 1024x768)
768x1024
rikka-ok.gif (545, 640x360)
360x640
Днями и ночами с неба льется снег, но мы по-прежнему изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет открыть стартап, кто-то заработать на лапшу быстрого приготовления, кому-то просто нечего делать.

В нашем треде отвечают почти на все вопросы, только бампайте каждые 5 дней.

Это тред и для начинающих. Слово "классы" у тебя ассоциируется только со школой, а в аттестате тройка по математике? Ты наш человек.

Предыдущий тред был тут: >>1511146 (OP) . Все старые треды есть в архиве: https://phpclub.tech/ (там есть поиск, так что можно легко найти обсуждение какой-то задачи или ответы на свой старый пост) или ищутся в гугле по словам "клуб изучающих php" и в архиваче.

Мейлач лежит? Есть запасной тред на доброчане: /s/res/23225.xhtml#i46467

Форматируй свой код, если хочешь, чтобы его читали (как, написано во втором посте).

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

С чего начать

У нас есть свои уроки по основам 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, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery. У нас в треде были люди, которые практически с нуля учились и смогли найти работу.
- Что будут спрашивать на собеседовании если 0 опыта - гонять по теории, по официальному мануалу PHP, давать дурацкие задачки на переворачивание строк, гонять по SQL (транзакции, внешние ключи, напиши запрос), по JS (как сделать анимацию при нажатии кнопки), ну погугли, не ленись
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
Аноним 2019/12/21 14:15:53  №1552980 2
grammar.png (56, 500x644)
644x500
Давайте будем писать код не как попало, а аккуратно. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть. Если каждый будет оформлять код как хочет, будет бардак.

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на рекомендации PSR, где все это описано подробнее и даны примеры оформления:

PSR-1 (рус.): https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2 (рус.): https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md
PSR-12 (англ.): https://www.php-fig.org/psr/psr-12/
Аноним 2019/12/21 14:32:44  №1552992 3
Мёртвый язык.
Аноним 2019/12/21 14:39:19  №1553002 4
Раньше писал на Yii2 и в ус не дул, а теперь перешел на другую работу, где проект - динозавр с лапшичным кодом с скриптами на 10 экранов.
Как в этом адовом говнокоде соорудить ООП, валидацию форм и ORM?
Алсо там даже Композер не юзается, нет автозагрузки классов с неймспейсами..
Аноним 2019/12/21 14:40:47  №1553004 5
>>1552992
Не мертвый. Просто о чем говорить когда и так все всем известно, Беня!
Аноним 2019/12/21 14:44:29  №1553011 6
>>1553002
Никак. Есть более срочные задачи. Вот последнии правки ага
Аноним 2019/12/21 15:23:31  №1553072 7
Кто-то уже юзает 7.4?
Аноним 2019/12/21 15:40:06  №1553080 8
>>1553072
Когда запилят

fn($var) => {
expr1;
expr2;
return expr3;
}

тогда приходите
Аноним 2019/12/21 17:54:49  №1553204 9
Аноним 2019/12/21 20:03:38  №1553403 10
>>1552992
Мертвый тред, мертвого языка
913-1181 Аноним 2019/12/21 23:00:06  №1553497 11
Ответы на посты из утонувшего треда, его можно найти в архиве или на phpclub.tech

>>1552283

> такие абстракции вообще нормально делать или можно как-то лучше? https://pastebin.com/4i0YJ2C3

Нет, это неправильный подход. Если у тебя есть "обычная" и "ленивая" (что бы это не значило) книга, то они должны реализовывать один интерфейс BookInterface, но по-разному. То есть в "обычной" книге метод getChapters() делает что-то одно, а в "ленивой" - другое. И метод getChapters() находится в "книге", а не снаружи её.

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

У тебя это не выполняется. Ты вручную проверяешь, какой интерфейс реализует объект. А зачем тебе вообще интерфейсы? Что тебе мешает проверять сразу имя класса? Если задачу можно решить простым кодом, не надо в него добавлять интерфейс просто "чтобы был". Должна быть причина для его добавления.

Также, если у тебя просто задача "скачать данные с сайта", то тебе не нужна сложная архитектура, выкинь эти интерфейсы, они будут только усложнять код и затруднят его поддержку.

>>1549188

> как сделать самопальный MVC?

Можешь взять за основу урок https://github.com/codedokode/pasta/blob/master/arch/mvc.md
Ответы на посты из утонувшего треда. Аноним 2019/12/21 23:02:02  №1553498 12
>>1551598

> Я не создам сто методов в ReportsController.
> Я создам сто методов в ClassGenerator. Ну или как то опишу один метод ClassGenerator максимально под общий случай запроса.

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

Плюс, например, в том, что мы отвязываем отчет от контроллера, от $_GET/POST и можем генерировать его программно из командной строки, например. Также можно отделить генерацию данных от представления, это позволит отображать данные отчета в разных видах: HTML, PDF, XLSX, JSON итд.

$r1 = new Report1(...);
$data1 = $r1->generate();
$xls = $xlsView->render($data1, $r1->getHeaders()); // или $xlsView->render($r1), или даже $r1->renderXls()

$r2 = new Report2(...);
$data2 = $r2->generate();

>>1551369

> на симфони скорее всего стоит доктрина которая нифига не Post.find_by, там придеться попотеть, но в принципе всё делается как на скринах в репе.

В Доктрине это пишется как $em->getRepository(Post::class)->findBy(...)
Аноним 2019/12/21 23:03:03  №1553501 13
>>1549619

>> В "условии" можно объединять условия с помощью операторов && (и) и || (или)
> А где такие тонкости узнать можно?

Это называется "булева" или "двоичная" логика. Есть специальный тип данных - "булев", в нем есть два значения - true (истина) и false (ложь). Есть строки, есть числа, а есть булев тип с такими значениями и их можно помещать в переменные и использовать в выражениях. Также, есть специальные операторы, которые работают с булевыми значениями.

Операции сравнения (<, >, ==, !=, ===, !==, <=, >=) возвращают булево значение. Например, 5 > 2 вернет true, а 5 == 6 вернет false. И когда ты пишешь if ($x == 5) то выражение в скобках возвращает true/false, а if в зависимости от этого выполняет или не выполняет код.

Проверить это можно командой var_dump, например: var_dump(5 > 2) выведет true.

Операторы вроде && или || принимают 2 булевых значения и возвращают новое. && вернет true, только если И справа, И слева от него true (а иначе он вернет false). || вернет true, если хотя бы справа ИЛИ слева есть true.

Оператор ! (НЕ) меняет значение на противоположное: !(true) дает false.

Например, var_dump(false && true) выведет false.

Почитать про булеву логику можно поиском по этому слову, а также тут:

- https://www.php.net/manual/ru/language.operators.logical.php
- https://www.php.net/manual/ru/language.operators.comparison.php
- http://www.mir-koda.ru/full_leson.php?id=7
- https://ru.wikipedia.org/wiki/%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF
- https://ru.wikipedia.org/wiki/%D0%91%D1%83%D0%BB%D0%B5%D0%B2%D0%B0_%D0%B0%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0 (сложными словами)
- https://inf1.info/logic

В общем, гугли и задавай вопросы.

Аноним 2019/12/21 23:04:45  №1553502 14
>>1549328

> Вопрос: можно пне по-умолчанию считать, что у пользователя включен джаваскрипт? Потому что половина функционала типа перетаскивание вопросов, визуальные редакторы работают на джаве. В крупных конторах предъявляют требования из разряда "САЙТ ОБЯЗАТЕЛЬНО ДОЛЖЕН РАБОТАТЬ БЕЗ ДЖАВЫ И ОТОБРАЖАТЬСЯ В ИЕ 6 !!"

А ты различай админку (редактирование тестов) и просмотр информации о тестах на сайте. Можно в одном случае требовать JS, а в другом заморочиться и сделать отображение без JS. Вообще, сейчас многие сайты не работают без JS, но я бы советовал публичную часть все же сделать работающей в любых условиях.

>>1545313

> Еще непонятным остается следующее - почему первые фигуристые скобки указывают на вторые в конце, а вторые - наоборот?

У тебя там лишняя точка с запятой после for():

for (....); { ... }

Это ошибка, так как точка с запятой заканчивает for, и скобки уже не относятся к нему и их содержимое выполняется просто один раз после выполнения цикла, а не как часть цикла.
Аноним 2019/12/21 23:06:33  №1553503 15
>>1544366

> Делаю задачу опа про систему тестов. Только начал, решил для простоты попробовать отправку почты через систему... и ничего не получается.
> Сайт развернут на хостинге бегета. Использую стандартный свифт-мейлер, встроенный. Прописал пароли в parameters.yml.
> Вопрос первый: почему у меня соединение не подтверждено? Я пароль/логин от хостера ввел, сам в свою почту зайти могу, надо в parameters.yml дополнительные параметры добавлять?

Ты путаешь логин/пароль для веб-интерфейса (которые ты вводишь руками на сайте хостера) с логином/паролем для протокола SMTP (которые отправляет твой скрипт перед отправкой почты). Вполне возможно, что у хостера они разные, или для твоего аккаунта вообще не разрешена отправка писем. Надо порыться в админке и поискать там параметры протокола SMTP: к какому хосту подключаться, к какому порту, с каким логином и паролем.

Возможно, что у твоего хостера нельзя отправлять через SMTP, а только стандартной командой mail().

Swiftmailer умеет слать как через SMTP, так и через mail() если я не путаю.

> Вопрос второй: а я могу тупо вместо смтп.бегет.ком вставить свою яндексовскую почту с логином и паролем? Так может прокатить?

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

> Вопрос третий: кого мне вообще тормошить? Провайдера/хостера? Просто если я обычную библиотеку типа PHPMailer вручную подключаю контроллеру, то так все отправляется. А системной почтой симфони 3.4 не отправляется. Куда копать-то?

Смотреть админку хостера, информацию в FAQ и в помощи.

Аноним 2019/12/21 23:07:30  №1553504 16
>>1544069

> хочу попердолиться с консольными приложениями. Системные потоки, все это. Но нихуя вообще не понимаю.
Подскажите что почитать в общем.

Основы использования консоли в Линукс. Потоки ввода-вывода, stdin, stdout, stderr, перенаправление ввода-вывода. Код завершения (код выхода).

Далее мануал https://www.php.net/manual/ru/features.commandline.php

>>1543949

> Не понимаю как должен работать класс аутентификации Auth. И гугл ничего толкового не выдаёт, кроме документации к ларавель и чего-то древнего.

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

- пометить пользователя как залогиненного под аккаунтом X (по сути, установить ему куки)
- разлогинить пользователя (удалить куки)
- определить, залогинен ли текущий пользователь, если да, под каким аккаунтом (проверить его куки)

Заметь, что здесь функции только для управления куками и состоянием залогиненности, и нет никаких форм логина, регистрации, восстановления пароля. Это ответственность других классов, контроллеров, которые будут показывать и проверять формы, создавать аккаунты, и залогинивать/разлогинивать пользователя с использованием класса Auth.

Так у нас получается четкое разделение ответственности:

- класс управления залогиненностью Auth
- класс управления пользователями UserManager (создание, удаление, проверка логина/пароля, генерация и проверка кода восстановления пароля)
- контроллеры форм логина, регистрации, восстановления пароля

Аноним 2019/12/21 23:08:59  №1553505 17
>>1543797

> Код: echo "$dollars долларов можно обменять на {$x * $y} рублей"
> А что с ними, куда пихать? Ругается. Зато с одной фигуристой скобкой не ругается, хотя нигде раньше ее не писал.

В скобках нельзя писать произвольные выражения, только переменные (и обращение к элементам массивов, полям, методам), а умножение использовать нельзя.

Маунал: https://www.php.net/manual/ru/language.types.string.php#language.types.string.parsing

>>1543434

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

Умножать нельзя внутри двойных кавычек. Снаружи - можно, например:

$x = $y * $z;
echo "x = $x\n";

>>1542931

> Я правильно понял, что PHP FastCGI работает только с Apache с помощью mod_fastcgi, а для Nginx есть только реализация FastCGI в виде PHP-FPM?

Нет. Если ты хочешь использовать протокол FastCGI, то ты запускаешь PHP-FPM и он готов принимать запросы по FastCGI. Слать их можно либо из нгинкса встроенными средствами, либо из Апача с помощью mod_fastcgi, хотя нгинкс тут справится явно лучше.
Аноним 2019/12/21 23:10:01  №1553507 18
>>1542610

> Сап пхпч. Что за (new static) и (new static($arg)). Кто может расшифровать?

static - это ссылка на класс текущего объекта. То есть, если эта строчка написана в методе, который вызван на объекте класса Some, то это создаст объект класса Some.

Если написано new self - то это создаст объект того класса, внутри которого написана эта строчка, а вот static создаст объект того класса, на котором вызван метод. Разница проявляется при использовании наследования.

class A {
\tpublic function x() {
\t\tnew self; // Создаст объект класса A (и выкинет, никуда не сохранив)
\t\tnew static; // Создаст объект A или его наследника
\t}
}

class B extends A {}

$b = new B;
$b->x(); // создает объект A и объект класса B

$a = new A;
$a->x(); // создаст 2 объекта A

К "статическим" функциям или классам это не имеет отношения.

>>1542561

> А где-нибудь есть список фреймворков?

Нет, но можно погуглить.
Аноним 2019/12/21 23:11:01  №1553508 19
>>1542550

> так в чем может быть проблема редиректа ссылок на самих себя?

Ищи постепенно. Сначала поставь в начало index.php что-то вроде die('End'); и посмотри - есть редирект или нет? Если есть - он до index.php (в настройках веб-сервера, htaccess итд), если нет - после. Если после, то поставь die подальше и снова посмотри. И так пока не найдешь место.

>>1542298

> Да я всё пытаюсь вот такую картинку нарисовать через svg

Погугли программу dot. Она умеет рисовать такие графы из блоков со стрелками, и расставлять прямоугольники, и в том числе генерировать на выходе SVG.

>>1542278

> а как на винде запустить файл? (PHP файл к консоли)

Урок есть: https://github.com/codedokode/pasta/blob/master/soft/cli.md

Аноним 2019/12/21 23:16:09  №1553509 20
>>1541367

> Работяги, как вы начинали писать на фреймворке? Просто когда начинаю писать - хочется закрыть и сижу афк. Не важно какой фреймворк. Без него почему-то и желание есть.

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

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

Ах да, перед этим надо выучить ООП, если ты его не знаешь, изучить DI и ORM. Что-то по этим темам есть у меня в гитхабе: https://github.com/codedokode/pasta/

>>1541124

> Ошибка при попытке сделать composer install: какой-то файл с гитхаба не удалось загрузить из-за ошибки 404 Not Found

Ссылка на репозиторий неправильная. Скопируй правильную из кнопки "clone this repository" с методом HTTPS на гитхабе.
Аноним 2019/12/22 09:57:53  №1553625 21
>>1553080

Нафига, если есть обычные коллбеки?
Аноним 2019/12/22 10:13:11  №1553630 22
>>1553625
Коряво

array_map(function($item) use($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4) {
return array_map(function($item) use($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4) {
.....
}, $item))
}, $array);
Аноним 2019/12/22 15:12:06  №1553913 23
image.png (50, 749x430)
430x749
Сап, есть простой код для отправки данных из формы на почту. Как сделать, чтобы он отправлял изображение из этой же формы? Текст отсылает нормально.
В форме стоит enctype="multipart/form-data".
Аноним 2019/12/22 15:35:58  №1553921 24
>>1553080

Это не нужно. Короткие стрелочные функции нужны для использования в качестве коллбеков в array_map, array_filter и тд.

А длинные стрелочные функции, как правило, не нужны. А если нужны - их можно писать через function. Я видел, как в JS пишут в стиле

const fn = () => {

}

И это ужасно нечитабельно. Вдвойне нечитабельно, когда так пишут коллбеки к промисам. Ведь когда мы пишем

function x() {

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

В общем. я был бы против того, чтобы тянуть идиотизм из JS в PHP. Правильно сделали, что разрешили только короткие стрелочные функции.
Аноним 2019/12/22 15:40:31  №1553923 25
>>1553921
>В общем. я был бы против того, чтобы тянуть идиотизм из JS в PHP. Правильно сделали, что разрешили только короткие стрелочные функции.

Как ты относишься к linq?
Аноним 2019/12/22 16:00:21  №1553938 26
>>1553921
Пиздос
array_map(function($item) use($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4) {
op1($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4);
op2($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4);
return array_map(function($item) use($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4) {
op3($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4);
op4($someVariableName1, $someVariableName2, $someVariableName3, $someVariableName4);
}, $item));
}, $array);
Аноним 2019/12/23 03:21:50  №1554333 27
1577048015.jpg (40, 500x353)
353x500
Охайо, няшки пэхапэшники.
На связи кунец 19 lvl.
Нет знаний в математике/английском.
Нет опыта в программировании от слова совсем.
По урокам в шапке треда дошёл до массивов за 7 дней, ленивых дней, если быть правдивым. Задачки все решал, сейчас более-менее свободно играюсь с условиями/переменными/циклами/массивами, стараюсь писать код красиво и понятно.
Недавно вот глянул, сколько нужно знать джуниору на пхп и просто сдох нахуй - невероятное количество информации, просто невероятное. А я всё же считаю себя тупеньким, знаний даже математики хватает на третий класс где-то, лол.
Итак, господа хорошие - за год/полтора я смогу дойти до уровня околоджуна, чтоб устроиться хотя бы за 30к? Не в ДС, но миллионик
Или нахуй это не нужно, и с моими реально нулевыми знаниями уйдёт куда больше времени и в целом я хуй анимешный, которому лучше в петлю залезть?
Без злобы, без доброты, просто скажите как есть. Стоит ли в эту клоаку лезть, или только время зря потеряю?
До джуна даже без JS нужно учить дохуя чего, меня это пиздец демотивирует.
Так ладно бы, если знал матан или английский - так и этого не знаю. Мозгов как у хлебушка.
В общем - выносите приговор, анончики. Пиздец мне или не пиздец?
А если не пиздец - посоветуйте пожалуйста если желание есть - хорошие методы учёбы, какие-нибудь секретики, или ещё что-то.
Жить хочется, устроиться хочется чтоб опыт побыстрее начать бить, но как только понимаю сколько всего учить придётся, и смогу ли выучить.. не знаю, в общем.
Посоветуйте что делать, в общем. Добра.
Аноним 2019/12/23 03:46:27  №1554341 28
>>1554333
пыха давно умерла
просто катись в жс
Аноним 2019/12/23 06:53:35  №1554387 29
АААААА, горю... болит.

Короче, надо отправлять емейл. Юзаю PHPMailer.
В качестве емейла отправителя зарегана мылосру почта (долбики в гугле не могут нормально мультиакк сделать, я зае* переключать левые почты)

В моем локальном WAMP все работает зашибись (письма приходят всё ок):
$mail->isSMTP();
$mail->Host = 'ssl://smtp.mail.ru';
$mail->SMTPAuth = true;
$mail->Username = 'хуйнамыло@mail.ru';
$mail->Password = 'хуйпароль';
$mail->SMTPSecure = ENCRYPTION_STARTTLS;
$mail->Port = 465;
$mail->SMTPSecure = 'SSL';
$mail->setFrom('хуйнамыло@mail.ru', 'хуйнамыло');
$mail->addAddress($email);
$mail->CharSet = "utf-8";
$mail->isHTML(true);
$mail->Subject = 'Вам посылка';
$mail->Body = 'Но я ее вам не отдам';
$mail->send();

Заливаю на помойного хостера, не работает:
2019-12-23 06:31:50 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

Чё делать? куда копать? сроки жмут, пердак горит, тяги хватит до луны.
Аноним 2019/12/23 07:05:22  №1554393 30
>>1554387
Может хостер блокирует письма?
Аноним 2019/12/23 07:44:00  №1554418 31
>>1554387
>2020
>$mail->isSMTP();
>$mail->Host = 'ssl://smtp.mail.ru';
>$mail->SMTPAuth = true;
>$mail->Username = 'хуйнамыло@mail.ru';
>$mail->Password = 'хуйпароль';
>$mail->SMTPSecure = ENCRYPTION_STARTTLS;
>$mail->Port = 465;
>$mail->SMTPSecure = 'SSL';
>$mail->setFrom('хуйнамыло@mail.ru', 'хуйнамыло');
>$mail->addAddress($email);
>$mail->CharSet = "utf-8";
>$mail->isHTML(true);
>$mail->Subject = 'Вам посылка';
>$mail->Body = 'Но я ее вам не отдам';
>$mail->send();
Аноним 2019/12/23 08:32:32  №1554451 32
Аноним 2019/12/23 08:34:07  №1554452 33
Аноним 2019/12/23 08:38:22  №1554454 34
>>1553913
а ты можешь не отправлять саму картинку, а ссылку на нее? Типа картинка лежит у тебя, а в письме делаешь ссылку вида <img src="путь к моей картинке" /> Так же наверное тоже будет работать и письмо меньше весить будет
Аноним 2019/12/23 08:50:17  №1554460 35
>>1554333
Делай уроки опа. Там очень хорошо продумано:
-Сначала ты изучаешь простой синтаксис
-Потом делаешь простой сайт
-Потом делаешь простой сайт по правилам - с отловом исключений, проверкой форм отправки и прочее
-Потом используешь маленький фреймворк и понимаешь его преимущества, потому что он за тебя уже решает часть того, что ты раньше руками делал
-Потом ты используешь большой фреймворк, где вообще все за тебя делается

Так что если дойдешь до последней стадии, то там за тебя фреймворк основную работу делает, ты сам пишешь пару строчек. Самое трудное - это начать, а потом все легче и легче.
За год легко до джуна дойдешь на одних этих уроках. Я сидел пять лет дулбаебом, делал сайты на штмл, а тут за пол-года уроков понял больше, чем за все прошедшее время.
Если посмотришь несколько фреймворков, то поймешь, что все они похожи. Это как с языком - вот учишь ты английский, тебе непривычно, потом пошел учить немецкий - а там все тоже самое, те же определенные/неопределенные артикли, так же вопросительные предложения строятся и так далее. То-есть выучил один - уже на 80% знаешь все остальные. Главное уроки делай оповы, тут актуальное по крайней мере.
Про мертвую пшп не слушай, большинство вакансий на нее. Ну и, на крайний случай, изучив пшп ты влегкую перекатишься на другой язык. Все тоже самое, те же конструкции
Аноним 2019/12/23 14:44:14  №1554829 36
>>1554460
Пиздец жирнота. Ты охуел просто..
Аноним 2019/12/23 16:00:09  №1554886 37
аноны, помогите нюфагу. нужно запилить компонент для битрикса, внутри которого еще будут вложены четыре компонента. как это сделать то? могу ток с одними компонентами работать если что, без вложенности, потому что это пока для меня сложна
Аноним 2019/12/23 16:23:25  №1554914 38
>>1554333
Имею похожие данные, лишь лвл чуть больше, две недели как занимаюсь по задачам опа. Секрета тащемто никакого нет, старайся заниматься как можно больше заданий, если че непонятно - гугли, пытайся работать с информацией. если не запоминаешь - конспектируй, еще советую распечатать роадмапы roadmap.sh, примеры вакансий на жунов (и зп!) - чтобы это все висело перед глазами и не забивал заниматься.
Аноним 2019/12/23 20:50:57  №1555170 39
Поясните за знание JS для PHP программиста. Его нужно знать на таком же уровне, как и PHP? Или можно по верхам пробежаться и этого будет достаточно?
Аноним 2019/12/23 20:54:20  №1555176 40
>>1555170
Попробуй сделать форму загрузки картинки через пост, чтобы валидация была на клиенте, запрос на клиенте, и клиент переделывал файл из jpeg png bmp в base64 строку. Вот примерно такой уровень должен быть, на язык похрен, но какую-то задачу обработки данных и вызова чего-то на клиенте должен сделать
Аноним 2019/12/23 22:19:18  №1555213 41
>>1554886
Сделай модуль с несколькими компонентами, а лучше не имей дел с битриксом
Аноним 2019/12/23 23:43:19  №1555239 42
Люди, помогите. Я не знаю как сделать отправку электронной почты.

Что мне надо - надо отправить письмо с вложениями. Так как я нуб и не шарю, я искал готовые решения - увидел PHPMailer. написал такой код:
$mail->SMTPDebug = 4;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'почта@gmail.com';
$mail->Password = 'пароль';
$mail->SMTPSecure = ENCRYPTION_STARTTLS;
$mail->Port = 587;
$mail->setFrom('43646@gmail.com', '56756757');
$mail->addAddress($email);
$mail->isHTML(true);
$mail->Subject = '123';
$mail->Body = '456';
$mail->send();

(да, я вчера уже спрашивал, но все молчат).

А оно мне пишет:
2019-12-23 23:35:01 Connection: opening to smtp.gmail.com:587, timeout=300, options=array()
2019-12-23 23:35:02 Connection failed. Error #2: stream_socket_client(): unable to connect to smtp.gmail.com:587 (Network is unreachable) [/home/PHPMailer/SMTP.php line 349]
2019-12-23 23:35:02 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting

(при этом на локальном все нормально отправляет, именно на хостере такое)

От отчаяния я решил вообще проверить отправку почты без ничего:
mail($email, "Загаловок", "Текст");
И вот это работает... но я не хочу ебаться с байтоебством перегонки вложений и кодировками - меня просто пугают эти примеры.
Я просто хочу отправить это ебучее письмо


Подскажите решение - может есть что готовое, которое бы работало через mail()
Аноним 2019/12/24 06:28:33  №1555301 43
>>1555213
>не имей дел
была бы такая возможность то уж давно бы
>модуль с несколькими компонентами
то есть мне еще самому модуль надо запилить чтобы эту хуйню реализовать?)))
Аноним 2019/12/24 08:51:25  №1555380 44
>>1555301
> была бы такая возможность то уж давно бы
Это самооправдания. Рынок айти огромный, вакансий кучи в любом Подзалупинске, не говоря уже про удалёнки. Ларавел, симфони, чего только нет.
Нет уж, если ты сидишь в говне на битриксе - значит, тебя это полностью устраивает и ты именно этого и достоин. Туда тебе тогда и дорога.
Аноним 2019/12/24 09:43:41  №1555411 45
>>1555380
>Рынок айти огромный, вакансий кучи в любом Подзалупинске
Может быть мне не повезло или искать не умею, но дела обстоят так - 4 вакансии для жуниоров, с#, qa, сисадмин, 1с, на другом сайте есть еще фулстак.

мимо
Аноним 2019/12/24 10:23:03  №1555441 46
>>1555411
Ищи во-первых на нескольких площадках, не зацикливайся об одной единственной.
Во-вторых, ищи не по слову Junior, а по стеку, например, PHP. Там могут быть разные варианты: стажёр, новичок, джуниор, junior, младший разработчик и так далее.
В-третьих, не стесняйся писать на миддловые вакансии. Так и говори: "да, я джуниор, но я соответствую вашей вакансии на 90%, вот у меня есть примеры работ и я готов учиться и вкалывать", запросто могут решить взять толкового джуна из расчёта, что быстро вырастешь и закроешь миддловую позицию. Плюс спрашивай знакомых, может кто ищет джуна. Плюс, пиши в рекрутинговые агенства, какие-то вакансии могут быть размещены у них, не попадая на hh.
Короче, не сиди на попе ровно, а мониторь рынок труда, если хочешь найти что-то стоящее.
Аноним 2019/12/24 10:38:16  №1555453 47
>>1555441
Ну не знаю, я не тот анон и из ДС2, но тут кажется адекватных вакансий штук 10-20 по любому бэкенд стэку на джунов, остальное это либо бред, либо нерелевантно. Фронты тоже не то что в полном шоколаде, на джуниоров там вечно ищут скорее версталу за 20к, нормальных вакансий типа фронт реакт/вью 60к или хотя бы 40 не так и много. Это если о хх.ру, через другие каналы больше, конечно.
Аноним 2019/12/24 11:22:45  №1555471 48
>>1555453
>но тут кажется адекватных вакансий штук 10-20 по любому бэкенд стэку на джунов
>для джуниоров
прикалываешься? в моем зажопье-миллионике в централ рашке не дальнезалупинск или усть-пиздинск было пару сениоров на питона, и штук 5 мидлов за полгода. 3 штуке на жсе тоже соответственно сениор с 300к/сек зпшкой и хуевым стеком технологий, один на руби. все остальное - пхп. при том что джунов минимум 10 штук было. именно на нем. это вот было пока я полгода работу искал
Аноним 2019/12/24 11:52:27  №1555489 49
Что я упускаю, если обучаюсь по PHP мануалу на русском языке? Он вообще полный? Я хоть и понимаю английский, но считаю, что ещё не достиг того уровня на котором могу обучаться адекватно. Или лучше пользоваться сайтами, как у ОПа, где все объясняется более подробно?
Аноним 2019/12/24 12:18:39  №1555516 50
>>1555441
Если по стеку искать, то вот так. Совсем печалька. Но я пока только вкатываюсь, ни знаний толком, ни опыта.
Кстати, хорошая ли идея будет наклепать сайтов, будто я фрилансил, но прикрыться NDA и вместо фирмынейм просто заглушки делать?
Аноним 2019/12/24 12:34:41  №1555544 51
>>1555516
там нет нда ты спокойно можешь добавлять себе в портфолио все что сделал
Аноним 2019/12/24 16:40:05  №1555696 52
>>1555544
Я о том, что даже если не смог во фриланс, то таким образом наебать, что дохуя сайтов уже сделал.
Аноним 2019/12/24 17:06:02  №1555719 53
>>1554454
Для этого её загружать куда-то нужно.
Сделал через phpmailer, короче.
Аноним 2019/12/24 18:19:45  №1555808 54
>>1554341
Пацаны, срочно хелпаните пожалуйста!

Есть массив со строкой и числом, число допустим 2.
Есть второй массив с заданными ключами и числами от 0 до 5, к примеру.
Вопрос: как узнать, сколько чисел во втором массиве больше числа в первом массиве? Как сравнить и проверить?
Как будет выглядеть такой код на практическом примере?
Заранее спасибо!
Аноним 2019/12/24 18:24:15  №1555815 55
>>1555808
Примерно такое
for (int i; i>array2.lenght;)
if (array1 > array2)
count++;
else continue

Аноним 2019/12/24 20:24:05  №1555978 56
IMG20191224222023.png (142, 720x1289)
1289x720
IMG20191224222034.png (79, 720x478)
478x720
Аноны, поясните пожалуйста, что в коде не так, и почему переменная $a выдаёт ебанутый ответ
Аноним 2019/12/24 21:14:21  №1556024 57
>>1555978
потому что if не в цикле
Аноним 2019/12/24 21:15:51  №1556026 58
>>1555978

С того что цикл foreach у тебя отделен от if.
То есть вначале ты ты выводишь список по росту. Потом выводишь $a = $a + 1 (0+1), то есть 1, после чего, без пробелов, безе перевода на следующую строку выводишь второе echo c $a равным 1.
Аноним 2019/12/24 22:19:55  №1556103 59
>>1555380
>Это самооправдания. Рынок айти огромный, вакансий кучи в любом Подзалупинске, не говоря уже про удалёнки
вот вы так говорите - а откуда тогда берутся студии-галеры?
вон тут где-то рядом обсуждали такую - где люди работали больше 8 часов в сутки (по договору могли и все 24 часа из 24), зарплаты платили через месяц и начальство еще возмущалось что кто-то недоволен.

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


Если бы рынок был настолько огромен, то такие галеры просто не находили бы себе сотрудников
Аноним 2019/12/25 00:17:33  №1556137 60
Аноним 2019/12/25 02:45:29  №1556162 61
cas1.jpg (34, 316x400)
400x316
>>1552970 (OP)

Привет, мой самый любимый тред на свете!

Я вкатывальщик-кун, разбираюсь в основах пхп, немного знаком с ксс-хтмл-дж, работой с базами данных и pdo, иду по гайду. Делаю свой аля список студентов.

Может кому-нибудь нужна микро-помощь с проектом? Хотел бы поучаствовать и больше научится чему-нибудь и полезным оказаться.

Аноним 2019/12/25 05:27:10  №1556222 62
>>1556162
пиши на почту superwebdev1337@mail.ru
Аноним 2019/12/25 05:46:45  №1556227 63
>>1556103
Я тебя сейчас удивлю, но большинство людей не особенно-то и хочет стараться ради достижения какой-то цели.
К примеру, сейчас можно зайти на любой сайт с вакансиями и убедиться, что программистам платят сравнительно дохуя. Ну и другие вакансии есть, востребованные и очень хорошо оплачиваемые. Но почему-то при этом целая куча людей работают таксистами, кассирами и прочим неквалифицированным персоналом. Почему? А потому что крутить баранку, ссать в уши про то, что "я бизнесмен, а такси-это хобби" и ныть про то, что денег нет легче, чем вкалывать, повышая свою квалификацию.
То же самое верно и для программистов. Многие работают там, куда их взяли, не пытаясь расти или менять работу. Многим вообще насрать, они плывут по течению и не задумываются ни о чём. Многим ссыкотно что-то делать, проще сидеть на жопе там, где уже сидится.
Короче, всегда есть варианты, но ты хотя бы лотерейный билет купи.
Аноним 2019/12/25 21:19:34  №1557157 64
1577308747592.jpg (39, 470x380)
380x470
>>1555380
> Это самооправдания. Рынок айти огромный,
Да. Ето так огромная яма с говном
> вакансий кучи в любом Подзалупинске,
Ага. У нас аж 3 крупныхпо меркам моей мухосрани лол. В двух ад, в третьей норм я работаю там но куча спорных моментов
Остальное - шараги с требованиями на уровне
> Знать ВордПресс друпал джумлу битрих модых yii ларавел симфани верстка адаптив ие6+ жыквери зп 15-25к ОСНОВНАЯ ОБЯЗАННАСТЬ ДЕЛАТЬ МАГАЗИНЫ НА ВОРДПРЕСС
Во многих городах с населением ~500к примерно так же ситуация, маня.

> не говоря уже про удалёнки.
Так говоришь словно беспроигрышный вариант лол. А по факту сидеть 24/7 на жепе дома проходит далеко не всем. Молиться чтоб тебя кинули. Плюс есть шанс что от тебя будут требовать чтоб ты был онлайн 25/7.

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

Бля. Ты напоминаешь одного чувака который у нас работал - много пиздел, рассуждал, юзал войти сленг к месту и не к месту - строили из себя короче дохуя умного. А по факту нихуя не делал. Этож ты тут хейтиш все кроме симфани?)

Короче пиздец у тебя манямир.
Аноним 2019/12/26 00:20:55  №1557274 65
>>1556227
я хз, я например с 14 лет развивался в десктоп и 3д программирование, охуенно знаю С++, разбираюсь в его стандартах вплоть до С++20. Всегда мечтал вкатится в разработку серьезного софта или 3д (не игры), а еще подумывал о серверном программировании.
Чтобы родаки отстали, закончил институт с корочкой программиста (программная инженерия), с серьезным дипломным проектом (в области шифрования улучшил один известный алгоритм)...

Прошло десять лет - теперь я работаю в госконторе, говнодрочу пыхапы сайт и пишу обертки над SQL запросами в MS Basic. Получаю 36к на руки...
В свободное время пытаюсь сделать игорь на юнити (но из-за работы сил на свой проект обычно уже нет)

Что в моей жизни пошло не так? Ну кроме того что я живу в мухосрани, а этой копеечной зарплаты не хватит на релокацию

Аноним 2019/12/26 06:07:52  №1557342 66
>>1557157
Не понимаю смысла ныть в чатик о том, что у тебя в городе нет вакансий, удалёнка тебе не подходит, там плохо, там страшно и тд и тп. Ты или встаешь и что-то делаешь, или сидишь в тёпленьком.

>>1557274
> Прошло десять лет - теперь я работаю в госконторе, говнодрочу пыхапы сайт и пишу обертки над SQL запросами в MS Basic. Получаю 36к на руки...
Звучит как пиздец, что можно сказать.
Но тут непонятно, если ты настолько охуенно знаешь С++, то какого чёрта ты сидишь в госконторе и пишешь на пыхе и бейсике? Тебя там цепью к батарее приковали что ли?
Возьми себя в руки и найди себе нормальную работу. Нет в твоей мухосрани -> ищи удалёнку или в соседних городах, много какие компании предлагают релокационный пакет. Или найди просто работу и у друзей позанимай по 5-10к на переезд, потом отдашь.
Аноним 2019/12/26 08:10:00  №1557387 67
>>1557342
>>1557274

Вся суть спора нищеты из провинции и мажора-масквича, которого папашка устроил себе в контору.

Нищук: у нас в деревне реально нет работы
Мажор: да ты праста плаха ищищшь я сразу нашел. Ты линивий

А вообще этого >>1557342 пидора-критикана надо гнать из треда. Он ничего путного не советует, только издевается над новичками, что в предыдущих тредах, что в этом.
Аноним 2019/12/26 08:10:43  №1557388 68
Аноним 2019/12/26 08:26:23  №1557390 69
>>1557387
Вот ни разу не попал, чтобы достичь своей текущей работы и денег я впахивал как папа Карло, успевая днём работать на галере, а ночью программировать и саморазвиваться. И да, я из провинции и мне потребовалось чуть меньше десяти лет чтобы в итоге оказаться на сеньорской вакансии в ДС. Начинал с 15 или 20к рублей, если не путаю.
А моим мессаджем, который ты всё никак не можешь уловить хз что с тобой не так, было то, что если ты сам не найдёшь себе хорошую работу, то никто её тебе не найдёт. И возможностей у тебя достаточно, на самом деле, потому что ты не умираешь, не инвалид хотя я уже начал сомневаться, не в рабстве и с какой-никакой базой .
Аноним 2019/12/26 08:34:30  №1557393 70
>>1557274
Вот это неудачник. Я скажу тебе, что пошло не так. Вместо того, чтобы переехать в ДС, жить сначала в хостеле с хачами, искать работу джуном по своему стеку, потом накопить на съем однушки за мкадом и тратить каждый день по 1,5-2 часа на работу ты выбрал сидеть в своей мухосрани у мамки под юбкой. Привык делать то, чего от тебя хотят родители, а если родители хотят чтобы ты гнил, как они, на нищенской зарплате, то ты так и делаешь. Карьера в айти - это не только хард скиллы
Аноним 2019/12/26 13:22:07  №1557690 71
>>1557390
>успевая днём работать на галере, а ночью программировать и саморазвиваться
Это - распиздевшийся школьник.
Саморазвивался он по ночам, лол.

мимошёл
Аноним 2019/12/26 19:43:53  №1558239 72
ПЫХаны, есть 2 таблицы:
user_group
id | name | user_ids

user
id | email

Есть ли смысл хранить в user_group.user_ids ID юзеров через запятую "1, 2, 3" или в любом случаем более правильно делать таблицу связей типа:
user_group_link_user
id | group_id | user_id

БД - MySQL

Может еще есть какие-то способы хранить массивы в полях таблицы?
Аноним 2019/12/26 20:16:25  №1558279 73
>>1558239
>user_group
>id | name | user_ids
groups
id | name

>user
>id | email
users
id | group_id | email

Так правильно, если я тебя правильно понял.
И не надо никаких лишних таблиц городить.
Аноним 2019/12/26 20:22:01  №1558288 74
>>1558279
В одной группе может быть несколько юзеров.
И почему названия таблиц во множественном числе?
Аноним 2019/12/26 20:25:26  №1558291 75
Аноним 2019/12/26 20:28:19  №1558301 76
>>1558288
>В одной группе может быть несколько юзеров.
Ну да. Связь один к множеству.
В таблице пользователей видишь group_id? Это ссылка на его группу.
Выбирать пользователей по группам тоже легко получается при таком раскладе.

>почему названия таблиц во множественном числе?
Потому, что таблица с пользователями и таблица с группами. Как их ещё называть? Чем тупее - тем лучше.
Аноним 2019/12/26 20:34:03  №1558321 77
>>1558301
А если юзер может быть и в группе 1 и в группе 2, то как быть?

Алсо в единственном числе нейминг вроде удобнее дня ООП схем, где модель так же называется User, объект называется $user, и обращение к свойствам читается приятнее: $user->id.
Аноним 2019/12/26 20:40:03  №1558337 78
>>1558321
>А если юзер может быть и в группе 1 и в группе 2, то как быть?
Городить таблицу связей тогда. Но это всё ещё гораздо лучше, чем пачка значений в одном поле таблицы БД.
Чем атомарнее значение - тем лучше.

>в единственном числе нейминг вроде удобнее дня ООП схем, где модель так же называется User
Он нормально с ним сочетается. Модель User - описывает одного пользователя и берёт свои данные из таблицы users(пользователи). Это по умолчанию везде принято.
Аноним 2019/12/26 20:43:24  №1558343 79
>>1558337
Но в SQL-запросах по мне так тоже приятнее писать:
WHERE user.id = 123
WHERE group.id = 234

Для неймнинга таблиц во множественном/единственном числе есть какие-то стандарты или это просто дело вкуса?
Аноним 2019/12/26 20:46:30  №1558349 80
>>1558343
>Для неймнинга таблиц во множественном/единственном числе есть какие-то стандарты
Стандартов нет, как таковых, но все более-менее современные ОРМ и вообще библиотеки настроены именно на множественное число по умолчанию.

>в SQL-запросах по мне так тоже приятнее писать
А мне приятнее использовать ORM и не страдать ерундой.
Аноним 2019/12/26 21:10:51  №1558390 81
Аноним 2019/12/26 22:13:36  №1558415 82
>>1557342
>>Но тут непонятно, если ты настолько охуенно знаешь С++, то какого чёрта ты сидишь в госконторе и пишешь на пыхе и бейсике?
Потому что в целом крае (не городе, а крае... а даже скорее в области) нет ни одной конторы где требуется С++/Java/C#.

Все что тут есть - это клепать сайты, батрачить на аутсосрной галере (это которые делают американские заказы, а платит российские зарплаты-копейки)... в лучшем случае 1С еще
Аноним 2019/12/26 22:17:47  №1558419 83
>>1557393
>на работу ты выбрал сидеть в своей мухосрани
чувак, мне надо пол-планеты перелететь чтобы в ваш мкад попасть - денег на это просто нет (ведь еще надо жить, и снять комнату в бомжатнике)
Аноним 2019/12/27 06:06:27  №1558502 84
>>1552970 (OP)
ребятки помогите с Yii2 христа ради, как передать Yii::$app->params->['currentUrl']
В чем смысл?
На одной из страниц есть формочка, в том числе ссылка на авторизацию, если нажать на эту ссылку то перейду на страницу ввода логина/пароля, мне надо чтобы после успешной авторизации меня перекинуло на страницу с формочкой. Хотел записать url этой страницы в Yii::$app->params->['currentUrl'], но блядь выдает что переменная Yii::$app->params->['currentUrl'] не определена. Как можно еще передать переменную глобально или как params осилить?
Аноним 2019/12/27 06:49:26  №1558513 85
как по английски называется минимальный набор джентельмена - то есть самый минимум?

На B начинается - но не могу вспомнить это слово
Аноним 2019/12/27 06:52:36  №1558514 86
Аноним 2019/12/27 07:16:51  №1558521 87
Анончики, хочу приобрести в переплете Котеров Д., Симдянов И. "PHP 7 в подлиннике", как думаете нормальный выбор для нуфага?
Аноним 2019/12/27 08:07:49  №1558542 88
Аноним 2019/12/27 08:21:33  №1558550 89
>>1558521
нет.
он и как справочник говно
Аноним 2019/12/27 12:14:22  №1558793 90
>>1558502
Yii::$app->params - возвращает массив с данными, которые заранее прописаны в конфиге. На лету не переопределишь.
Пиши в сессию Yii::$app->session.
Спасибо, что упомянул про yii2. Щя местный шизик придет кукорекоть что симфани лучше
Аноним 2019/12/27 13:40:21  №1558911 91
>>1558793
> симфани лучше
ларавел лучше
Аноним 2019/12/27 13:50:16  №1558915 92
>>1558911
Для хриланса да. Для еба круда который год тщательно разрабатывают - нет
Аноним 2019/12/27 14:11:16  №1558927 93
Аноним 2019/12/27 19:52:10  №1559178 94
>>1558502
Попробуй
Yii::$app->request->getReferrer()
Аноним 2019/12/27 20:21:18  №1559207 95
>>1558927
йоба круд это устаревший мем уже, это он про ROR, но это тема другого треда, так что забей.
Аноним 2019/12/27 22:14:22  №1559283 96
1WTbcpRHjdU92jL.jpg (71, 1200x675)
675x1200
>>1557342
> Не понимаю смысла ныть в чатик о том, что у тебя в городе нет вакансий,
Никто не ныл в чятик, дорогуша. Я расписал ситуацию в регионах. И как следствие в этом и кроется причина того, почему многим приходится возиться со всяким говном вроде битриха, чтоб выжить.

> удалёнка тебе не подходит,
Написал какие подводные у твоего беспроигрышного варианта, давен.

> Или найди просто работу и у друзей позанимай по 5-10к на переезд, потом отдашь.
Советы уровня /b.

В каком же сказочном мире ты живёшь. Типичный 100к в сек пиздобол

Аноним 2019/12/27 23:39:51  №1559314 97
>>1559283
>Советы уровня /b.
Я вообще не понимаю как люди могут писать о том, чего сами не пробовали, и еще верещать что их диванные советы работают, это ты "не хочешь".

Еще мне нравится, что когда начинаешь спрашивать дядь работающих за 200-300к в месяц, как они устроились на такую работу - так все сплошь через знакомых.
Не через знания, не через стаж, не через вклад в опенсорс, и даже не через "умные" собеседования, а блядь по знакомству, блядь программистом - "друг пристроил, бла-бла-бла, работы полно".
Такое практикуется даже в гугле/мыле/яндексе. (через hr там ищут только рабов - от того и такая текучка)
Аноним 2019/12/28 00:28:12  №1559329 98
>>1559314

Давайте не устраивать тут тред психологической помощи. А то вы сначала жалуетесь на зарплату в 36к, а потом рассуждаете о тех, кто зарабатывает 300к, хотя вам и 50к было бы неплохим повышением.

Люди, которые зарабатывают по 300к, просто талантливые, и связи тут не при чем. Как ты себе представляешь, взять архитектором "сына знакомой", платить ему 300к и получать ноль на выходе? Недалекие перспективы у такого бизнеса. "По знакомству" берут там, где результат не важен: чиновники, правоохранительные органы, суды, законодательные собрания, госпредприятия, живущие за счет бюджета, компании-распильщики, которые пилят бюджетные деньги.

Вот ты сам, со своей зарплатой в 36к, возьмешь себе "по знакомству" помощника, который будет брать у тебя, например, 18к и ничего не делать?

Либо у вас нет коммерчески востребованных навыков, либо, что вероятнее, вам просто нравится ныть вместо того, чтобы что-то делать. Не знаю, на какую зарплату может претендовать выпускник нашего треда, но думаю, что мы обучаем коммерчески востребованным навыкам. Если вам не хочется быть "рабом", вы можете выбрать любую другую специальность или открыть свой бизнес и начать торговать товарами с алиэкспресс.

А треды психологической помощи находятся в других разделах.
Аноним 2019/12/28 01:42:40  №1559336 99
>>1559329
Я о том что диванные советы не гарантируют свою правдивость, и многие кто их пишут - не имеют на это моральных прав из-за отсутствия опыта. Точно также как школьник прослушавший пару лекций пыхапы в ютубе не имеет права давать какие-либо советы по php.

Дяденька получающий 300к которого знакомый протолкнул не может рассуждать о том как легко устроится на работу - ведь сам он так не устраивался

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

И точно также мкадовцы не имеют права рассуждать о том как же легко сделать релокацию в другой город - ведь сами они этого не делали, им всё что нужно - встать с дивана и зайти в соседнюю дверь. Ну максимум сесть в метро, или на крайняк в электричку если надо там в питер или еще куда у них.
Аноним 2019/12/28 01:59:39  №1559339 100
>>1559329
>Люди, которые зарабатывают по 300к, просто талантливые
талант не всегда гарантирует успех. Сколько талантливых художников сдохло от голода потому что не смогли продать свой талант?

С программистами точно также - есть множество проблем почему программист себя не смог реализовать. Не все эти проблемы он может решить.

Если бы все было так легко, не существовало бы контор-галер. Иначе зачем талантливому программисту сидеть по 15 часов в день (по труд договору оказывается рабочий день не 8 часов, а "пока не сделаешь"), получать зарплату раз через раз и при этом видеть как эффективные менеджеры уволившие очередного недовольного "нытика портящего рабочую атмосферу" получили еще одну премию?
Нет таланта? Например разработчики метро 2033 одно время работали на такой галере, при том что американской галере (был скандал), они не талантливые?
Их всё устраивало? Человеку не очень нравиться быть рабом.

Да, есть фриланс - но всю жизнь не по фрилансишь, и серьезные проекты в фрилансе - это вопрос большой удачи или хороших связей (никто не будет фрилансить какой-нибудь портал банковского обслуживания на какой-нибудь фриланссру).
И фриланс так-то недалеко ушел от галер - есть мнимая иллюзия что ты работаешь на себя, и сам выставляешь себе условия... до достаточно одного кидалы и вот уже сидишь без электричесва потому что нечем заплатить. Так что приходится работать на резерв, то есть больше 12 часов

ну и конечно если у тебя в фрилансе нет связей, то работать придется на том что укажут - том же битрексе.
Аноним 2019/12/28 09:41:00  №1559474 101
Аноним 2019/12/28 15:10:45  №1559739 102
>>1559329
Люди, которые зарабатывают 300кк нифига не талантливые. Они просто могут себе это позволить. Т.е. просто берешь и ставишь такую сумму. И тебе могут платить столько. А могут и не платить. Нужно ставить себе такую цену, которую сам считаешь нужной (ну окей, завысить процентов на 20, для торга)
Аноним 2019/12/28 16:12:04  №1559827 103
>>1559739
Подозреваю, что всё немного не так - это зависит не только от их хотелок. Вангую, что и работают они с полной отдачей, а не в стиле - нахуячил и в продакшен, и жопа у них порой горит от сроков не меньше, чем у их начальников.
Аноним 2019/12/29 16:23:05  №1560502 104
Аноны, для нужд регистрации/авторизации использую либу cartalyst/sentinel.
Нормальный выбор? Или стоит какую то другую использовать?
Аноним 2019/12/29 16:37:25  №1560506 105
>>1555170
Этот прав. Первична психология.
Аноним 2019/12/29 16:38:08  №1560508 106
Аноним 2019/12/29 16:43:56  №1560518 107
>>1557690
Зря ты так. Все кого я знаю, кто был из нищуков и кто пришел к успеху - хуярили, не боялись менять работы и города, искали всегда работу лучше.
Тот анон прав - сам за себя не посуетишься - никто не посуетится. Редко кому из нищих везет прям, что деньги на халяву.
Я сам то - тот самый ебанат который никогда не суетился, вот в 33 вкатываюсь блядж в пхп.
Единственное от чего спокоен - словил определенный дзен.
Аноним 2019/12/29 16:48:29  №1560522 108
>>1559336
Если я правильно тебя понял, то. И?
И? Жизнь тяжела, не справедлива, и не всем одинаково дано. И? Сесть и ныть? Пить пивко по вечерам и катать в дотку?
Из моего нищего круга добились чего то только те, кто набрались храбрости хотеть. И что то делали. Пусть им было тяжелее чем остальным.
Аноним 2019/12/29 19:30:43  №1560639 109
>>1558419
>чувак, мне надо пол-планеты перелететь чтобы в ваш мкад попасть - денег на это просто нет (ведь еще надо жить, и снять комнату в бомжатнике)

Чувак, это такая чушь что просто не смешно нихуя. Я сам будучи пхп макакой перебрался в Питер со всеми твоими вводными: съемная хата, лететь через всю страну (я с ДВ), никакой помощи или страховки от друзей/родни.

Весь твой аутотренинг разбивается об несколько фактов:
1. У любой приличной конторы есть релокационный пакет. Даже в моей, хотя я переезжал сам и работу искал уже на месте. Чуваки, которым оплатили переезд спрашивали меня сколько подъемных дали, а я как еблан объяснял что я сам переехал.
2. У любого джуна/студента есть акки на биржах труда и они постоянно подрабатывают. Я сам своим джунам все время говорю: смари не перегори, не трать все время на кодинг. Просто они хотят себе уровень жизни выше, все эти айфончики новые, сходить на концерт, в норм ресторан.
3. Твоя зп ограничена только твоими компетенциями, ну или умением грамотно о них пиздеть. В том же Питере вполне реально получать 200к даже работая с битриксом.
4. Никто не мешает тебе искать вакансию в областном миллионнике, сидя в зажопинске, никто не запрещает тебе искать вакансию в ДС, сидя в миллионнике.
Аноним 2019/12/29 19:52:43  №1560663 110
>>1560639
>Я сам будучи пхп макакой
Просто для интереса - тебе сколько тогда лет было?
Аноним 2019/12/29 19:58:45  №1560670 111
Аноним 2019/12/29 20:02:14  №1560676 112
>>1560663
Ты не сравнивай себя с другими - нервы будут крепче
Аноним 2019/12/29 20:42:21  №1560702 113
Аноним 2019/12/29 20:44:24  №1560704 114
>>1560702
Себя есть смысл сравнивать только в ключе: сегодняшний - вчерашний, а с другими людьми - нехрен.

мимомакакен
Аноним 2019/12/29 20:49:47  №1560709 115
Здравствуйте, как можно вывести рандомную строку из нескольких элементов массива?
Аноним 2019/12/29 21:54:41  №1560738 116
>>1560709
Держи, братишка. https://3v4l.org/G9JjW

Старайся в новом году держаться подальше от пхп помойки.
Аноним 2019/12/29 22:54:14  №1560763 117
Аноним 2019/12/29 22:57:36  №1560765 118
Аноним 2019/12/30 02:18:21  №1560811 119
>>1560765
не-не, суть в том что из нескольких элементов в массиве нужно строку создать, а не из всех массивов
Аноним 2019/12/30 02:19:07  №1560812 120
>>1560811
не из всех элементов*
Быстрофикс, уже внимательность под утро теряю
Аноним 2019/12/30 07:27:27  №1560861 121
>>1560738
и куда идти-в питон или руби помойку?
Аноним 2019/12/30 11:11:39  №1560966 122
почему ларка качает кучу пакетов после создания проэкта,а не до него(до него он качнул немного пакетов какой то симфони)?
Аноним 2019/12/30 11:14:24  №1560967 123
>>1560966
Потому что она делает composer install просле создания проекта, а не до
Аноним 2019/12/30 11:16:01  №1560968 124
Аноним 2019/12/30 11:16:56  №1560969 125
а как вырубить запущенный сервер?
Аноним 2019/12/30 11:17:30  №1560970 126
>>1560968
composer create-project laravel/laravel MyEbaProject
Аноним 2019/12/30 11:19:17  №1560972 127
>>1560969
Перестать виндузятничать
Аноним 2019/12/30 11:22:39  №1560978 128
>>1560970
>composer create-project laravel/laravel MyEbaProject
начал грузит 6.8 версию,а выше я грузил 6.9
Аноним 2019/12/30 11:26:15  №1560980 129
>>1560978
composer create-project laravel/laravel=6.9 MyEbaProject --prefer-dist
Аноним 2019/12/30 11:27:20  №1560981 130
>>1560972
а что,обязателен линукс,вроде для винды все есть?
Аноним 2019/12/30 11:27:29  №1560982 131
>>1560978
Добавлю важное Тебе на работе никто жопу подтирать не будет
Аноним 2019/12/30 11:28:32  №1560984 132
>>1560981
Я тоже виндой пользуюсь. Но тебе нельзя пока что
Аноним 2019/12/30 11:28:44  №1560985 133
>>1560982
мне до работы далеко
Аноним 2019/12/30 13:13:08  №1561064 134
>>1560969
>Для завершения работы сервера нажми в консоли Ctrl + C (если ты читал мой гайд по командной строке то и так знаешь, что эта комбинация клавиш завершает выполняющуюся программу). https://github.com/codedokode/pasta/blob/master/soft/php-install.md

Оно?
Аноним 2019/12/30 14:03:57  №1561147 135
>>1560811
>из нескольких элементов в массиве нужно строку создать
Ну так обрежь сам массив перед обработкой.
https://3v4l.org/d6XfE
Аноним 2019/12/30 14:10:00  №1561156 136
>>1560981
Винда хуже подходит для разработки веб-приложений. Дело не в ней самой хотя имхо она то ещё говно, а в инфраструктуре и экосистеме.
К примеру, чтобы поставить какой-нибудь сервис в винду (например веб-сервер), тебе нужно скачать инсталлятор, он сделает какую-то магию и у тебя что-то где-то заработает.

В линуксе ты всегда знаешь, куда смотреть:
apt-get install nginx/чтоугодно - установит тебе сервер/базу данных/что угодно
service nginx start/stop/так_далее - можно управлять сервисом
cat /var/log/nginx - можно посмотреть логи
cat /etc/nginx - можно посмотреть конфиги
всё намного структурнее и понятнее, чем виндовая графонистая магия.

С непривычки оно конечно сложно заходит (если ты всю жизнь ездил на такси, а тут тебе предлагаю за руль сесть), но возможностей реально больше и в голову оно ложится лучше, потому как устроено логичнее. но говна везде хватает конечно
Я бы тебе посоветовал минимально поиграться с разработкой на винде (может, недели две или месяц), а потом перекатываться на линуксы. Если брать убунту и делать всё по мануалам, то довольно быстро освоишь, никакого rocket science тут нет и не было.
Аноним 2019/12/30 14:17:28  №1561174 137
>>1561156
>apt-get install nginx/чтоугодно - установит тебе сервер/базу данных/что угодно
>service nginx start/stop/так_далее - можно управлять сервисом
>cat /var/log/nginx - можно посмотреть логи
>cat /etc/nginx - можно посмотреть конфиги
>всё намного структурнее и понятнее, чем виндовая графонистая магия.
Есть какой-то список файловой системы - где и что смотреть?
Аноним 2019/12/30 14:18:39  №1561176 138
>>1561156
ну я пока просто поиграться,я еще с пхп не закончил
Аноним 2019/12/30 14:22:04  №1561184 139
и одному мне кажеться,что в ларавеле папки как то херово скомпанованы.какого хера роутинг называется вебом?
Аноним 2019/12/30 17:25:32  №1561381 140
Аноны, хочу сваять магазин, в принципе дополз до этого уровня. Но как бизнес-логика в приложения такого плана устроена - не очень понимаю.
Есть какой то магазин-пример?
Аноним 2019/12/30 17:29:58  №1561390 141
>>1561381
Ну опенкарт посмотри на гитхабе.
Аноним 2019/12/30 18:26:59  №1561464 142
>>1561390
Это что то типа CMS-ки?
Аноним 2019/12/30 18:29:53  №1561467 143
>>1561464
Типа того. CMSка для онлайн-магазинов.
Хочешь бизнес-логику магазинов узнать - там её навалом.
Аноним 2019/12/30 18:37:32  №1561478 144
Аноним 2019/12/30 18:41:21  №1561479 145
А вообще, вот условно - есть ли смысл на ларавел, или вообще на солянке из роутера, ORM и прочего - писать "стандартный " интернет магазин? Или стоит взять специализированное что то типа опенкарт?
Аноним 2019/12/30 20:01:35  №1561546 146
>>1561174
Ага, гугли "linux directory structure".
По первой ссылке:
https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard
Но там даже как бы и слишком много, как правило пользуешься /home, /var/log, /tmp, /etc, /usr/bin, usr/lib и как бы даже и всё.

Ну и в принципе, погугли какой-нибудь гайд по линуксам.
Тебе нужны базовая архитектура (демоны, пакетные менеджеры, конфиги, суперюзеры, исполняемые файлы и как это всё вместе работает), файловая система и пермишены + терминал (10 самых распространённых команд + пайплайны) + основы баша (потоки ввода-вывода, переменные среды, маски и по вкусу можно мини-скриптик написать).
Я думаю, если активно разбираться (не просто прочитать, я прям пробовать) и взять какую-нибудь статью https://habr.com/ru/post/184396/, можно чуть ли не в пару-тройку дней уложиться (один уйдёт на установку, если какие-то проблемы вылезут).
Аноним 2019/12/30 20:07:27  №1561553 147
>>1561479
Если интернет-магазин нужен твоему бизнесу (или другу/свату/брату), то возьмите любой saas типа shopify и не парьтесь, там всё уже решено и не потребуется тратить время на решение 100500 банальных задач отображеняи товара, а потом поддержку всего этого.
Если бизнесу уж совсем критично ставить у себя (по моему опыту, чаще всего это некритично, но доморощенные бизнесмены отчего-то ссут и всё хотят хостить у себя дома под кроватью) - то берите специализированное решение, тот же opencart или на крайняк cms'ку и обвешивайте плагинами.
Если у бизнеса куча денег, квалифицированных программистов и времени (не твой случай, иначе бы ты здесь не спрашивал), то тогда пишите самописное решение на чём вам больше нравится.
Если тебе хочется просто потренироваться в программировании, то делай сам на Laravel.
Аноним 2019/12/30 20:10:08  №1561558 148
>>1561553
А, ты наверное тот анон, что выше писал, что хочешь потренироваться. Если так, то всякие opencart'ы тебе для тренировки помогут мало, потому что они максимально заточены на накликивание всего мышкой, поэтому ты накликаешь себе что-то и ничему не научишься.
Туда можно заглядывать, но писать код нужно самому и с нуля (плюс-минус), иначе пропадает смысл тренировки.
Аноним 2019/12/31 10:26:20  №1561764 149
>>1561553
>>1561558
У меня двоякая тема. Вообще я программирую, и чисто технически я способен написать магаз. Но бизнес-логику я не вкуриваю вообще. Тоесть сам я понапридумываю то еще... Плюс такая дилемма - я не знаю рынка. Я так полагаю что магазы на опенкарт и магазы самописные на ларавел - это все таки две разных ниши? Зачем что то пилить на ларе задорого, если для этого хватит опенкарт по функционалу и возможностям и гораздо быстрее/дешевле?
Ну и раз уж мир пхп состоит из всяких цмс - то наверное можно окунуться в какую то его часть, и вроде опенкарт норм спроектированная система. MVC образная.






Аноним 2019/12/31 10:27:59  №1561765 150
А есть ли смысл учить PHP не программисту, а например, системному администратору.
Аноним 2019/12/31 11:21:21  №1561781 151
>>1561764
98% интернет-магазинов вполне типовые или сводятся к типовым решениям: витрина, корзина, чекаут, скидки, купоны, импорт, экспорт, под это уже давно написаны всевозможные решения и поэтому нет смысла что-то изобретать без причины. Но! Если у тебя дохуя уникальная бизнес-логика или охренительные нагрузки (если ты какой-нибудь алиэкспресс, эльдорадо или авито), то проще написать решение под себя, чем пытаться прогнуть и оптимизировать нечто уже готовое (оно априори менее гибкое и заточено на более распространённые сценарии).
Я бы на твоём месте взял любой существующий магазин и попробовал сделать его копию, сначала на этом opencart'е либо cms-ке, а потом уже самописную.

>>1561765
Сисадмину точно есть смысл научиться ставить знаки вопроса в конце предложения, чтобы превращать утверждения в, собственно, вопрос.
По существу: если тебе нужно поддерживать сервера на которых крутится что-то пехапешное, имет смысл выучить хотя бы основы (синтаксис, композер, флоу работы, php-fpm), чтобы легче было диагностировать проблемы и можно было самому что-то поправить простенькое.

Аноним 2019/12/31 13:02:35  №1561815 152
будете ковырять код под бой курантов?
Аноним 2019/12/31 13:50:00  №1561842 153
>>1561781
>>Я бы на твоём месте взял любой существующий магазин....

Ок, спасибо. Так и поступлю. С наступающим тебя и добра тебе.
И всех в треде с наступающим, желаю вкотиться в 300к в наносек. И ОП-у в отдельности респект и благих пожеланий.
Аноним 2020/01/01 01:10:08  №1562254 154
День добрый.
Имеется вот такой вот код: https://ideone.com/kvgG96
Вопрос: можно ли каким-то образом получить абсолютно тот же самый результат, только при этом использовав в коде цикл? Если да, то какие функции для этого нужно использовать? Помогите, пожалуйста.
Аноним 2020/01/01 01:29:25  №1562255 155
>>1552970 (OP)
Привет ребят, есть ли смысл сейчас вкатываться с нуля? Просто хотелось бы знать есть тут те кто начал с нуля и нашел работу или просто добился хорошего успеха в осваивании материла?
Аноним 2020/01/01 03:13:16  №1562265 156
>>1562255
Привет.

>есть ли смысл сейчас вкатываться с нуля?
Не, нету. Причина ниже.

>есть тут те кто начал с нуля и нашел работу или просто добился хорошего успеха в осваивании материла?
С нуля ты 33 года будешь учить, а индустрия вперёд движется и сегодняшний джун должен знать столько же, сколько вчерашний сеньёр. Сам прикинь какие объёмы.
Вкатываются только с вышкой по проганью и те, кто с детства этим занимается.
Аноним 2020/01/01 07:08:58  №1562297 157
>>1562255
Вкатываюсь с нуля, последний раз кодом занимался 10 лет назад, в средней школе что-то на дельфи было. За 2 недели прочитал 200 стр компутер саенс и половину задач из оп-сайта порешал. На работу не надеюсь, контор мало думал больше, целый 300к облцентр, вакансий и того меньше (3 бэка, 2 фронта, 1 фуллстак), притом все это в 2-х конторах, но есть должность интерн/трейни, в которую по-идее реально вкатиться и набраться опыта.
Аноним 2020/01/01 14:15:21  №1562483 158
Гугл в результатах пихает мне Swoft. Я прочитал про него всего один абзац, но уже хочу его форсить.
Аноним 2020/01/01 18:24:25  №1562598 159
Поясните по хардкору:
ЗАчем нужны области видимости методов и свойств public, protected, private. Что они делают, я понял. Но какого их НАЗНАЧЕНИЕ?
Желательно на примере.
Аноним 2020/01/01 18:25:58  №1562601 160
Ш
Аноним 2020/01/01 19:18:56  №1562618 161
>>1562598
>Но какого их НАЗНАЧЕНИЕ?
Скрыть важные элементы функционала от случайного использования. Наружу может смотреть даже один публичный метод\свойство, но внутри может быть ещё десяток скрытых - приватных.

>на примере
На каком? Примере кода или аналогия?
Аноним 2020/01/01 19:22:55  №1562623 162
>>1562618
Аналогия наверное.

Например, всеми любимый класс Animal и дочерний класс Cat.
Аноним 2020/01/02 05:37:48  №1562736 163
>>1562623
Echo "mimocrocodil ";
Cat::makeSound();

Class Cat extends Animal
{
Const SOUND = "Maw";

Protected static function getSound()
{
Return parent::getSound() . self::SOUND;
}

Public static function makeSound()
{
Echo self::getSound() . PHP_EOL;
}
}

Class Animal{
Private static function beforeSound()
{
Return "I say: ";
}

Protected static function getSound()
{
Return beforeSound();
}
}
Аноним 2020/01/02 12:27:30  №1563014 164
>>1562598
>ЗАчем нужны области видимости методов и свойств public, protected, private. Что они делают, я понял. Но какого их НАЗНАЧЕНИЕ?

Ты не забывай, что разработка коммерческого ПО - это не удел одиночек, а работа десятка людей, которым, в общем-то пофиг что пишут другие программисты.
Аноним 2020/01/02 19:38:41  №1563446 165
Что делать, если появляется ошибка Cannot redeclare a() (previously declared in /.../... .php:96) in /.../... .php on line 96 ?
Т.е. на ту же строку указывает, а там просто function a($e){
Аноним 2020/01/02 21:49:03  №1563516 166
>>1563446
Файл с кодом дважды не инклудится нигде у тебя? Симлинков на него нет?
Аноним 2020/01/03 08:00:51  №1563623 167
оказалось,что можно пользоваться консолью без всякого пердолинга
Аноним 2020/01/03 09:29:03  №1563657 168
>>1563516
Не, просто эта часть кода была в цикле. Я дурак.
Аноним 2020/01/03 14:58:21  №1563922 169
Посоветуйте по пыхе видеоролики, желательно плейлисты, читать оп-уроки не всегда есть возможность, а втыкнуть в наушник лекцию о циклах - хуже не станет.
Аноним 2020/01/03 15:45:21  №1563949 170
>>1563922
>втыкнуть в наушник лекцию о циклах - хуже не станет
Лол, вкатывальщик думает наебать систему.
Аноним 2020/01/03 15:49:08  №1563953 171
>>1563949
Пытаюсь бороться с тем, что голова дырявая, сегодня прошел задачу, завтра же с трудом повторю, тут либо распечатки нужны на каждом шагу, чтобы мозг впитывал информацию, либо вливание звука, поможет или нет, хз, но стоит попробовать.
Аноним 2020/01/03 15:54:35  №1563958 172
>>1563953
>поможет или нет, хз
Нет, не поможет. Никому никогда не помогало.
Нужно самому сидеть и делать раз за разом, а не аудиокнижки слушать на расслабоне.
Аноним 2020/01/03 16:09:07  №1563970 173
>>1562598
Позднее связывание. Можно создать protected метод, в нем сделать типа $this->toString() т.е. в методе родителя вызывать метод потомка.
Вообще это для так называемой инкапусляции.
Публичные методы - это твое АПИ, то, чем будет пользоваться клиент (другой программист, ты и тд), приватный метод - это что-то конкретное для данного типа. Например калькулятор что-то считает.
Аноним 2020/01/03 17:30:16  №1564062 174
есть к-л библиотеки вебсокета для пхп,чтобы прикрутить к ларке?
Аноним 2020/01/03 21:39:46  №1564327 175
А какие топовые российские компании щас используют PHP (кроме Skyeng)? Чувствую, что засиделся в своей говноконторе, вторую неделю мониторю вакансии, и кроме рогов с копытами ничего толком и нету.
Аноним 2020/01/04 07:15:10  №1564414 176
Аноним 2020/01/04 08:50:16  №1564446 177
>>1564327
Яндекс (но весь PHP потихоньку переписывается)
Аноним 2020/01/04 09:01:31  №1564456 178
>>1563953
Нужно сразу несколько решать, в идеале 3-5, тогда точно запомнишь, можешь ещё к похожим задачам свои фичи добавлять(валидацию например) или добавлять свои условия, код всегда с 0 нужно писать, я раньше обсирался и менял только те части, которые меняются в похожих задачах.

Ещё рекомендую параллельно разрабатывать свой простенький сайт, по мере получения знаний ты будешь понимать как добавлять те или иные фичи, и на нем же сможешь проверять свои реальные знания. Так же при работе с базой данных сразу учись в ручную писать запрос, например нужна тестовая таблица не создавай и не добавляй значения через графический интерфейс, а пиши вручную запросы.
Аноним 2020/01/04 09:24:54  №1564483 179
>>1564327
Skyeng - те ещё говношлёпы, судя по отзывам. Будь осторожнее с ними.
Аноним 2020/01/04 09:27:29  №1564485 180
>>1564062
Каждый тред приходит кто-нибудь с одним и тем же вопросом, хоть в шапку добавляй ответы.
Смотри в прошлых тредах, ищи в поиске по слову "сокет"
Аноним 2020/01/04 09:55:07  №1564519 181
>>1564446
У них же везде python/C++.
Аноним 2020/01/04 09:55:30  №1564520 182
Аноним 2020/01/04 10:41:49  №1564554 183
Приглашаю в тг конфу для вкатывающихся в пхп, писать
chchpr@yandex.ru
Аноним 2020/01/04 10:44:10  №1564557 184
Аноним 2020/01/04 13:56:58  №1564802 185
>>1564554
Из него надо выкатываться, а вы вкатываетесь.
Аноним 2020/01/04 14:31:22  №1564836 186
А нет ли такого только про питон?
Аноним 2020/01/04 14:44:37  №1564843 187
Аноним 2020/01/04 14:46:55  №1564844 188
>>1564519
Вакансии на пхп есть, вообще да, согласен, много питона и плюсов, но компания большая, так что там хоть нода, хоть скала
Аноним 2020/01/04 16:24:12  №1564934 189
>>1562254
Просто помещаешь набор ключей для формирования строк в массив.
https://ideone.com/2FMySE
Другое дело по каким правилам ключи в этот набор попадают, ты бы задание описал что-ли. Охуеть, давно я в телепатии не практиковался.
Аноним 2020/01/04 17:17:18  №1564969 190
Аноним 2020/01/04 18:06:48  №1565005 191
Ребят, как работать в цикле с числом переменной?
Вот к примеру мы имеем переменную:
$number = 7
Вопрос: как запихнуть эту переменную в цикл?
Как это будет выглядеть на примере? Точно в точности напишите пожалуйста, чтоб я не запутался.
-
И можно ли работать с элементами массива в цикле?
Как работать с числами/строкой, которые находятся в массиве?
Напишите пожалуйста мини-код на php, как это будет выглядеть.
Заранее спасибо, аноны!
Аноним 2020/01/04 19:18:48  №1565046 192
15564543854581.jpg (964, 2048x1536)
1536x2048
>>1564934
Анончик, ты гений! Спасибо тебе огромное! :3
Благодаря твоему коду для меня многое стало понятно.
Аноним 2020/01/04 19:34:01  №1565055 193
Аноним 2020/01/04 20:58:06  №1565124 194
Аноним 2020/01/05 09:34:43  №1565353 195
>>1565124
Спасибо тебе большое, анон! Благодаря тебе наконец-то стало всё понятно:З
Аноним 2020/01/05 17:54:09  №1565780 196
Аноны, такой вопрос, на фронте собираю большой массив, в котором как JS объекты, так и бинарные данные (файл).
JS объекты перегоняю в JSON
Но какие заголовки ставить? Файлы передаются с заголовком "Content-Type: form/multipart"
И в одном запросе с файлом я не могу оправить JSON? Причем JSON у меня не из формы в которой загружается файл.
Аноним 2020/01/05 20:30:34  №1565886 197
Только сейчас осознал, что по факту это старейший тред раздела.
То есть он пережил максимально токсичные времена, пережил совершенно безнадежных даунов, пережил всё.
Я не знаю сколько тут сменилось ОПов, помню ещё самого первого, который с трипкодом сидел. В общем удачи вам ребята в новом году, оставайтесь няшами.
Аноним 2020/01/05 23:09:26  №1566024 198
>>1562598

С помощью их ты определяешь правила использования поля или метода:

- только внутри данного класса (private)
- только внутри класса или в наследниках (protected)
- отовсюду (public)

Это нужно для таких целей:

- гарантия корректности кода. Если поле имеет тип private, то ты (автор класса) можешь осмотреть свой класс и гарантировать, что в него всегда пишутся только правильные значения. Ты определяешь правила работы с объектом. Если же поле имеет тип public, то как ты гарантируешь, что в нем всегда будут правильные значения? Ведь ты не знаешь, как другие люди будут использовать твой класс, как они будут к нему обращаться. Где гарантия, что Вася не запихнет в поле что-то непраивльное и твой класс начнет выдавать некорректные значения и не упадет с ошибкой? Модификаторы private/protected как раз дают гарантию, что это не произойдет.

Вообще, полезно писать код в стиле "защиты от дурака". Это не только в ООП возможно.

- хуже того, бывает, что при изменении одного поля (профессия) надо менять другое (зарплата). Без private, опять же, есть риск, что другие программисты не будут соблюдать это требование и создадут некорректное состояние полей объекта.

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

При этом защита полей/методы имеет смысл, даже если код пишет один человек. Если в коде всюду стоит public, а код огромный, ты сам можешь забыть правила работы с объектом и написать неправильный код. А с private/protected ты как бы огораживаешь класс и оставляешь только несколько методов, через которые можно менять его состояние.

Это еще называют "инкапсуляцией".

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

Кроме нескольких публичных методов, остальные методы и свойства закрываются от доступа снаружи модификаторами private или protected. То есть с объектом снаружи ничего нельзя сделать, кроме вызова публичных методов.

Это упрощает понимание кода: тебе не надо читать и разбирать код класса, достаточно прочитать название публичных методов (и может быть комментарии к ним). Также, это упрощает изменение кода: если какое-то свойство имеет уровень private, то доступ к нему возможен только из того же класса и тебе не надо бегать по всему коду и смотреть что там с этим свойством делается, тебе достаточно просмотреть один файл с этим классом.

При инкапсуляции автор класса таким образом задает ограничения, что можно делать с объектом.

Как плюс, мы можем поставить какие-то проверки в методах, и запретить установку неправильных значений свойств. Таким образом, снаружи записать неправильное значение в объект будет нельзя и автор класса может гарантировать его корректную работу в любой ситуации. Если у нас есть публичные свойства, то в них можно записывать что угодно, а приватные свойства изменять снаружи нельзя, можно только вызвать методы, которые что-то делают.

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

Если проводить аналогии, то можно представить кофе-машину. Ты нажимаешь кнопку (=вызываешь публичный метод) и получаешь кофе (=результат вызова этого метода), при этом ты не видишь что происходит внутри нее и тебе не надо в этом разбираться.

Вот пример класса с использованием инкапсуляции:

// Объект представляет собой ломаную линию из нескольких сегментов
// Показаны только публичные методы, остальное скрыто
class PolyLine
{
public function __construct(float $x, float $y) { ... }

// Добавляет еще одну точку к ломаной
public function addPoint(float $x, float $y): void { ... }

// Посчитать общую длину линии
public function calculateLength(): float { ... }
...
}

В нем всего 3 публичных метода, включая конструктор, и мы видим, что с объектом можно сделать только три действия:

- создать ломаную, указав начальную точку
- добавить к ломаной еще одну точку
- посчитать длину ломаной

Вот пример использования этого класса:

$line = new PolyLine(1, 1);
$line->addPoint(2, 2);
$line->addPoint(4, 7);
echo $line->calculateLength();

При этом код может проверять передаваемые значения, например, не разрешать 2 раза добавлять одну и ту же точку. Здесь не приведен код методов и мы не видим приватные поля и методы, но нам это и не требуется - и так понятно, как использовать класс.



Аноним 2020/01/05 23:14:33  №1566026 199
>>1562736

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

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

А то из-за таких примеров люди начинают писать пародии вроде EnterprizeFizzBuzz, хотя это лишь пародия.


Аноним 2020/01/06 06:19:05  №1566079 200
Аноним 2020/01/06 06:30:25  №1566081 201
>>1562598
Кароч нудную хуйню про определение, как оно там работает и шарады типа "смогу ли я вызвать метод" почитаешь в гугле.

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

Жизненные реалии в пхп мире как у ассасинов: ничто не истинно, все дозволено. И единственный способ написать крупный проект, не обосравшись и не выкинув код через пару лет - запретить нахуй все.

Вот джентельменский набор запретов от сеньора помидора:
1. Запрет на наследование. Везде final. Серьезно, оно тебя сожрет. Наследуемся только от абстрактных классов и то по праздникам, используем интерфейсы и кайфуем.
2. Запрет на публичность. По умолчанию все приватное. Возможно добавить пару публичных геттеров, но только если очень надо. Лапшичка типа $god->getHolySpirit()->getSon()->getFather()->ask('Бать, те нормально?') сразу пропадет.
3. Запрет на трейты. Тому, кто добавил в пхп этот ебаный костыль для множественного наследования, желаю рака пизды. Контролировать код или делать ревью если активно используются трейты невозможно. Ты можешь с умным видом заапрувить реквест, в котором вызывается демон ебущий тебя в жопу по ночам, и несколько месяцев не понимать хули с утра так очковина чешется.
4. Запрет на статические методы. Можно использовать для создания объектов или чего-нибудь типа ассертов, но статических методов, которые что-то делают с данными быть не должно.
5. Запрет на нестрогую типизацию. Только strict types, только хардкор. Никаких нахуй двойных равно или восклицательных знаков. Приведения типов явные (int) или intval. Сравнения только явные $myVal === false, а не !$myVal. И никаких empty, только isset. Ну и с возвращаемыми значениями тоже шоб четко было, если строка, то только строка и никаких блядь false.
6. Запрет на new. new должен использоваться только когда создаешь реально новую сущность, типа new HarkachPost. Инициализация объектов/сервисов из базы/конфига должна быть в DI контейнере или фабрике.
7. Запрет на конкретные методы типа eval, extract, exec, рефлексию, глобальные переменные и прочую залупу, зависит от уровня паранойи.

Каждый из этих пунктов может пристрелить твой проект, а если код пишется интенсивно и несколькими людьми, то по быстрому поправить или переписать не получится даже если выделят время, а выделят тебе хуй на воротник. И это только непосредственно по коду и только самое очевидное. Есть еще такая же гора приколов с базами, фреймворками и самим ооп.
Аноним 2020/01/06 09:01:23  №1566118 202
>>1566081
>Есть еще такая же гора приколов с базами, фреймворками и самим ооп.
Напиши пожалуйста, как будет время, у нас не пропадает.
> 2. Запрет на публичность.
> Лапшичка типа $god->getHolySpirit()->getSon()->getFather()
А что насчет QuaryBuilder доктрины и т.п.? Или это относится только к "нашему" коду?

Аноним 2020/01/06 10:45:14  №1566167 203
>>1566081
Ебать ты поехавший или несчастный.
Просто нужно уметь работать с наследованием/трейтами/статическими методами и прочей хуйней.
Нужно это уметь готовить, а не запрещать.
Аноним 2020/01/06 11:25:41  №1566187 204
Здравствуйте, аноны!
Застрял на последней задаче по массивам в ОП-посте. Вот все задачи делал нормально, всё получалось - а тут раз, и пиздец. Уже всевозможные варианты пробую, как эту задачу можно решить?
Подскажите пожалуйста, анончики, ибо я уже на пределе, от этой задачи кипят мозги. Но не могу же я её так бросить и уйти! Смысл тогда от учёбы? Препятствия нужно преодолевать всё-таки..
Аноним 2020/01/06 12:51:27  №1566278 205
>>1566187
Вот, к примеру. Это не полноценное выполнение задачи, я просто пытаюсь вывести несколько элементов массива с помощью функции array_rand.
Что я делаю не так, почему это говно не работает? Скобки правильно расставил, всё верно. В чём тогда прикол?
Один элемент - могу вывести, в прошлой задаче это уже было.
Два - не могу и баста. Что здесь не так?
Аноним 2020/01/06 13:40:00  №1566304 206
>>1566278
1. Парсер не понимает твоих бесконечных массивов в строке.
2. Массивы нумеруются с 0. $t[2] у тебя не существует пока.
https://ideone.com/xbJaiV
В будущем пости ссылку на код, а не скрины.
Аноним 2020/01/06 13:57:48  №1566309 207
>>1566304
> 1. Парсер не понимает твоих бесконечных массивов в строке.
Ничего не понял, у меня же идёт правильная нумерация?
> 2. Массивы нумеруются с 0. $t[2] у тебя не существует пока.
Так я для того и изменил нулевой индекс ключа на единицу
> https://ideone.com/xbJaiV
что есть «.» после функции "echo", и что за «PHP_EOL»? В уроках ОП-а ни слова об этом до массивов сказано не было, в мануале в описании функции «array_rand» - то же самое..

и у тебя идёт так же нумерация, те же скобки, то же оформление как и у меня, только с точкой после «echo», и с «PHP_EOL», ничего не понятно как это работает
Аноним 2020/01/06 15:39:13  №1566361 208
>>1566081
>Как оптыный пхп макакен ответственно заявляю, что в реальной жизни область видимости используется исключительно для контроля говнокодеров.

Так ведь они для этого создавались
Аноним 2020/01/06 16:06:18  №1566382 209
>>1566167
А я плюсану. Я видел туеву хучу проектов, где всё пошло по пизде. С этими простыми правилами они были бы хоть немного лучше.
К сожалению, как правило не ты пишешь говнокод, а ты подключаешься на проект и хватаешься за голову.
А спросить "хули вы понаписали говнокод, пидорасы?!" не можешь, потому что во-первых тебя пидорнут за токсичность, во-вторых ты и сам знаешь, что тебе ответят одной из вечных отмазок:
1 - Если можешь - сделай лучше;
2 - Оно и так работает;
3 - Оно приносит деньги, из которых тебе платят зарплату, так что не тявкай;
4 - Это всё не нужно, я 20 лет так программирую и всегда всё нормально было;
5 - Не демотивируй команду критикой;
И так далее.

Я серьёзно мечтаю о возможности подойти к любому говнокодеру и сказать ему в лицо, что в самом его существовании кроется серьёзная ошибка и что даже если он всю жизнь будет теперь пытаться исправить то, что сотворил, то кармический баланс всё равно будет отрицательным, поэтому в принципе лучшее, что он может сделать - это стерилизовать себя.
Больше мечтаю только дизлайках на гитхабе и вымирании экосистемы js, как таковой.
Аноним 2020/01/06 16:09:04  №1566383 210
>>1566309
Учебник ОПа написан давно и слегка ухабист. Не стесняйся гуглить и спрашивать.
Пояснил на пикче как смог.
Аноним 2020/01/06 16:30:55  №1566389 211
>>1566167
Или просто нужен человек (системный архитектор или как там его ещё могут назвать), который бы контролировал использование классов и интерфейсов.
Аноним 2020/01/06 16:48:40  №1566398 212
>>1566383
Теперь всё понятно стало и на свои места)
Ибо в который раз удивлялся тому, что у меня с трудом выходит решать задачки ОП-овские; было два варианта - или в уроках написано не всё, что нужно для решения заданий, либо я проёбываюсь и не вижу нужных и важных вещей. В последнем я уже начал сильно сомневаться.
Вот почему застрял на последнем задании, несколько дней убил на то, чтоб её попытаться решить(лол).
Теперь ты объяснил всё и я начал понимать, как это работает.
Спасибо большое, анончик! Добра тебе
Аноним 2020/01/06 16:57:33  №1566402 213
>>1566167
В моей простыне нет нихуя личного. Ну кроме пункта про трейты, отдам деньги хорошему человеку шоб ему сука в мозгу въебал пулю.

Представь что у тебя есть несколько программистов. И каждую неделю они высирают по 2к+ строк кода. Кто-то умеет готовить сметану на говне. Кто-то не умеет, но пробует. А кому-то похуй - делает как все.

1. Один из них придумывает охуительную идею использовать охуительный трейт и охуительное наследование от класса охуительного фремворка.
2. Ты с похмела или с недосыпа проскроллил это говно на код ревью, смерджил и пошел в отпуск.
3. Через два месяца эта залупа как рак распространяется по всему проекту.
4. Кто-то дописывает в трейт новый функционал и использует его в новых местах, кто-то вытаскивает охуительный класс из вендора и правит его, ломая пол проекта. А у фреймворка тем временем выходит новая версия, в которой охуительный класс выпилен с пометкой cancer aware.
5. Ты внезапно понимаешь что ты теперь с этим кодом навсегда. Переписать его = написать все заново. Не переписать = страдать и поскорее срулить на другой проект или даже в другую контору.

Просто нужно понимать что поддержка хоть сколько-нибудь крупной кодовой базы это работа, неприятная и скучная. Есть стартовый заряд порядка в виде базовой архитектуры и постепенная деградация и скатывание в бардак. Программисты постоянно пытаются срезать углы и наебать жизнь, а пхп предоставляет слишком много возможностей для этого.
Аноним 2020/01/06 17:31:56  №1566417 214
>>1566118
Если интересно, то канеш напишу попожжа.

По поводу билдера можешь почитать статью https://ocramius.github.io/blog/fluent-interfaces-are-evil/ между прочим от самого автора доктрины.
Если в краце:
1. Да инкапсуляция в QueryBuilder'е сломана.
2. Нет это не страшно в данном конкретном случае.
3. Это сделано только для красоты, сам решай стоит ли оно того не стоит.
Аноним 2020/01/06 18:10:18  №1566433 215
>>1566383
Спасибо тебе ещё раз, анон!
Благодаря тебе я наконец завершил задание, над которым бился несколько дней, хотя и несколько нестандартным способом. ну откуда я мог понять, что во всём виноват интерпретатор «ideone», через который я не могу нормальным путём решить эту задачу, написав хороший код?
Вот оно:
https://ideone.com/oA7vhN

Правда, после такого.. кхм, выполнения задачи я впервые почувствовал себя говнокодером.
Как говорил один друг: «работает - и хуй с ним, главное чтоб работало». Подход плохой, но в особенных моментах можно и допустить такое.
Но другого пути у меня нет, если я хочу решить эту задачу я без ноутбука пока, делаю всё на телефон, и потому могу кодить только через «ideone»
Всё, спасибо тебе ещё раз:З
Аноним 2020/01/06 18:24:38  №1566436 216
>>1566402
Вот что бы такой хуйни и не было, умные люди и придумали ООП.
Аноним 2020/01/06 18:34:09  №1566438 217
>>1566167
>Нужно это уметь готовить, а не запрещать.
Двачую.
Аноним 2020/01/06 18:57:53  №1566453 218
>>1566436
Чтобы не делать хуево, умные люди придумали делать заебись.
Аноним 2020/01/06 19:03:30  №1566454 219
>>1566453
Ну вот ООП - это заебись, который многие не понимают.
Аноним 2020/01/06 19:09:06  №1566456 220
>>1566454
А чего заебатого? Ты похоже ооп понял. Расскажи как сделать чтобы хотя бы мидлы писали более менее консистентный код без постоянного присмотра?
Аноним 2020/01/06 19:15:06  №1566460 221
>>1566456
>А чего заебатого?
Сведены к минимуму вся та херня, про которую писали выше.

>Расскажи как сделать чтобы хотя бы мидлы писали более менее консистентный код без постоянного присмотра?
ООП - не про косяки в коде, а про архитектору кода.
Аноним 2020/01/06 19:18:19  №1566464 222
>>1566456
>как сделать чтобы хотя бы мидлы писали более менее консистентный код без постоянного присмотра?
Не брать джунов на позиции мидлов.
Аноним 2020/01/06 19:51:48  №1566484 223
Аноним 2020/01/06 20:01:22  №1566488 224
>>1566464
Ты хоть раз программиста нанимал или собеседовал? Позиции на хедхантере, где тебе в уши ссут hrы.
На проекте есть работа и бесконечное количество способов её сделать. Люди все разные, и пишут все тоже по разному. Я не просто так иронизировал над познавшим ооп. Все познают. И все по своему. Из десяти человек одну и ту же задачу хорошо если двое сделают похоже. Нет объективно лучшего способа выполнения задачи, а если бы и был всех макак уже давно бы заменили кодогенерацией.

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

Чтобы хоть как-то держать программистов на одной волне разные изъебства применяются. Типа парного программирования, кросс ревью, на воркшопы всякие их слать. Просто надо всегда держать в голове что девяноста процентам на качество кода, на архитектуру и на ваш проект похуй. ВООБЩЕ ПОХУЮ. И их можно понять, они делают то что скажут, в залупу не лезут и тихо мирно пилят свои задачи. А если че, то соберут свои кружки, кубики рубики со стола и съебут. Таким всегда рады - просят немного, в залупу не лезут.

В итоге за более активной частью нужно следить потому что там постоянно генерится какая-то хуйня: это у нас не так, надо делать так, а фаулер сказал, а фаулер хуйлан, дейкстра вообще говорит ооп - говно. А за менее активной нужно следить потому что они будут повторять любую хуйню, раз услышав, до посинения.
Аноним 2020/01/06 21:17:07  №1566522 225
>>1566488
Вот тут абсолютно согласен, человек может иметь 3 года опыта и писать при этом каким угодно способом, потому что сильно зависит от конторы и задач человека на месте, может он там делал и поддерживал какую-то срм на пхп 4 версии два года из трех будучи единственным программистом в штате. А на собеседовании вполне нормален, сам по себе нормальный человек, бабл сорт напишет, тестовое типа тудулиста напишет, стандартную библиотеку знает
Аноним 2020/01/07 07:51:10  №1566645 226
>>1552970 (OP)
А куда вы прогондонили книгу ОПахуя? Охуенная книжка с аниме была, не могу найти.
Аноним 2020/01/07 07:51:57  №1566646 227
>>1566645
>>1552970 (OP)
>У нас есть свои уроки по основам PHP, они собраны и выложены по адресу http://codedokode.github.io/phpbook (вас отредиректит на другой домен, не читайте, не сохраняйте, не запоминайте его, он временный). Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то можно начать с него. Он простой и понятный. Там есть задачи, их нужно решать (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению. С другой стороны, если этот учебник тебе не нравится, можно читать любой другой. Или официальный мануал. Или все сразу.
Аноним 2020/01/07 08:45:25  №1566663 228
>>1566646
у вас оп-шапка говнище просто, там одна ненужная хуета, уберите эту парашу и нормально выделите эту ссылку чтобы нарот мог найти
Аноним 2020/01/07 13:57:01  №1566904 229
Пачаны, есть у кого на примете библиотеки для анализа изображений графиков?
Гугл ничего внятного не выдал.
Аноним 2020/01/07 18:01:33  №1567122 230
4.jpg (92, 876x844)
844x876
3.jpg (879, 1920x1430)
1430x1920
Может кто-то посоветовать нормальных плагинов для PHP к VSCode? Наверняка же тут не все сидят на платном PHPStorm-е.

Я поставил Саблайм 3, накатил один единственный плагин ПХП Компаньён и он сразу же мне в моём Hello World-е на Laravel подсветил в файле где посмотреть определение класса.

А в VSCode с кучей плагинов он не может просто пройти по файлам и посмотреть в каких файлах есть класс с таким названием. Ну камон, серьёзно?

Может какой-то другой нужен плагин для VSCode?

Подскажите, а то нет денег на PHPStorm.
Аноним 2020/01/07 19:46:40  №1567201 231
>>1567122
>нет денег на PHPStorm
Как хорошо, что торренты заблочены и никто не может спиратить пыхошторм!
Аноним 2020/01/07 20:13:36  №1567222 232
>>1567201
>спиратить пыхошторм
Возиться с кряками-мокрописьками не все любят, знаешь ли. Некоторые даже это всё покупают - не всем дано быть пидорахами совковыми.
Аноним 2020/01/07 20:48:18  №1567233 233
>>1567222
А устанавливать официальную бесплатную версию раз в 30 дней тоже я так понимаю не станешь.
Аноним 2020/01/08 01:11:26  №1567313 234
>>1567233

А че типа они такие глупые что можно просто удалить бесплатный триал, попросить новый с другого емейла и пользоваться еще 30 дней?
Аноним 2020/01/08 07:06:30  №1567366 235
>>1567222
Там все крайне просто устанавливается, пердолинга нет. Если принципиально любитель покупать софт, то кажется там есть версия на год для студентоты, попробуй ее использовать.
Аноним 2020/01/08 13:01:03  №1567523 236
>>1567122

PHP Intellisense нужен наверно.
Аноним 2020/01/08 13:04:03  №1567525 237
>>1567523

Он стоит, в том-то и дело. Слева список установленных плагинов.
Аноним 2020/01/08 13:08:18  №1567528 238
>>1566433

На ideone не работают mb-функции (вроде mb_substr), но все остальное (вроде как) работает.

Вместо попытки вставить сложное выражение в строку можно просто поместить его значение в переменную:

$word = $syllable[$t[0]];
echo "Слово: $word\n";

Но можно и прямо в строке писать, в фигурных скобках. Подробнее про вставку переменных в строку написано тут: https://www.php.net/manual/ru/language.types.string.php#language.types.string.parsing
Аноним 2020/01/08 13:21:27  №1567542 239
>>1566382

Это хорошо, что ты видишь косяки в коде. Но ты делаешь неправильные выводы.

У тебя выводы в стиле "я один д'Артаньян, а вокруг одни дураки, которых надо выгнать на мороз". Но если их выгнать, ты один сможешь сделать все их задачи? То-то. Тимлид бы сам их давно выгнал вместе с тобой (так как ты только жалуешься вместо того, чтобы придумать, как улучшить ситуацию), да вот только проекту это не поможет.

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

Рефакторинг существует, и обычно есть удобные возможности для него (например: модуль настолько криво работает, что проще отрефакторить, чем вставлять костыли или объем изменений такой, что проще написать заново с учетом недостатков). Естественно, во всем надо знать меру, а не бросать все силы на него, забыв про бизнес-задачи.

Ну и не стоит переживать. Если проект будет жить долго, ты все успеешь постепенно исправить. Если проект закроется - то и исправлять уже ничего не надо будет.
Аноним 2020/01/08 19:26:32  №1567801 240
>>1567542
Я делаю нормальные выводы.
Во-первых, действительно, я сам всё один не напишу, да и в принципе тех, кто старается делать качественно довольно мало и они очень быстро вырастают до лидов, так что мне приходится мириться с тем, что в команде обычно те ещё говношлёпы сидят. В лучшем случае они реагируют на правила и их можно заставить делать +- нормально, но это будет не их инициативой а того, кто бьёт их палкой. И начинать это делать надо как можно раньше, в идеале на старте проекта. Но такого не происходит, потому что даже об архитектуре зачастую задумываются не в начале, просто лепят фичи как попало пока не станет слишком поздно.

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

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

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

В пятых, проблема даже не столько в том, что говнокод есть, а в том, что пишут в первую очередь его. Любой бизнес старается на старте сэкономить ресурсы, поэтому любой стартап состоит из кусков дерма, обмотанных изолентой. И программисты этому совсем не помогают. Я принимал работы от нескольких топовых студий-атусорсеров России и некоторых из Европы (французы и ещё кто-то), таких, что сотни сотрудников, госзаказы, всякие адидасы в клиентах и так далее - и ты не представляешь, насколько там всё было ужасно. Я при всём желании не смог бы написать настолько херово. Видно, что даже не старались, делали на отъебись.

И ничего я с этим сделать не могу, приходится ныть на двачике.
Аноним 2020/01/08 23:08:01  №1567904 241
>>1567801
>И ничего я с этим сделать не могу
А ничего и не надо делать. Переделывать людей - незрелое желание.
Самим программистам не надо сильно заморачиваться на архитектуре и бизнесу это тоже не надо. А вот тебе надо.
Не думал что с тобой может быть не так? заведи себе уже петы и вылизывай их сколько влезет
Аноним 2020/01/09 04:39:08  №1567957 242
>>1567801

Я для себя делаю примерно такой вывод.

Может он неправильный. Скорей всего неправильный. Но кто его знает, может и правильный.

Суть в зарабатывании денег. Деньги зарабатывают не программисты (речь не о фрилансе сейчас), а менеджеры и всякие директора, которые заключают договора, короче, те кто непосредственно выбивают деньги, находят заказчиков. Задача программистов просто сделать так, чтобы не подвести всех этих замечательных людей, которые договорились с заказчиком сделать программу N за 100 квадрилиардов бачинских. А что ты там напишешь почти никого не колышит, главное чтобы не было как у Била Гейтса на презентации Windows 98, потому что добавление каждой новой фичи всё равно будет оплачиваться отдельно, а это поток денег.
Аноним 2020/01/09 06:51:45  №1567982 243
>>1567313
>>А че типа они такие глупые что можно просто удалить бесплатный триал, попросить новый с другого емейла и пользоваться еще 30 дней?

Они даже мейла не просят.
Аноним 2020/01/09 09:05:22  №1568022 244
Аноны, подскажите. Хочу на сервер отправить аякс запрос с телом собранным из данных разного формата. В теле и JSON и бинарный фаайл(картинка).
Какие заголовки использовать в запросе?
И как принять такие данные на сервере?
Аноним 2020/01/09 09:08:42  №1568023 245
>>1568022

Закодировать картинку в BASE64 и отправить в виде строки в JSON объекте.

> Алло, у меня картинка 50 мегабайт RAW фотография

Ну дак шли тогда ссылку на неё, а картинку выложи куда-то для отдельного скачивания.
Аноним 2020/01/09 09:15:16  №1568025 246
>>1567982

Кончился Триал, а дальше что? Взломать?
Я бы купил весь их ебучий набор за 250$, но не с моей зарплатой.
Это для 300к/сек москвичей не деньги, а у нас в провинции на это два месяца люди живут.
Аноним 2020/01/09 10:31:06  №1568087 247
>>1568025
Сука, ну не тормози. Ты же программируешь, решения должен принимать учиться, выбирать варианты, выбирать прости Господи "архитектуру" проекта, от которой вообще дохуя чего зависит.
А ты блядь сам скачать и посмотреть что из этого будет не омжешь?
Нахуй ты вообще такой беспомощный нужен кому?
Конкуренция среди вкатывальщиков растет. И с детскими болезнями ты нахуй никому не усрался.
А пхпшторм каждый месяц можно качать совершенно свободно новую триальную версию. Так у них и задумано.
Аноним 2020/01/09 11:08:03  №1568109 248
>>1568023
Не, так не пойдет. Именно одним ajax запросом текст/json и картинка. Если существует <form> - то JS собирает данные с помощью FormData. Этот объект тело запроса в с заголовком Content-Type: form/multipart.
Но у меня данные не из формы точнее из нескольких разных не связанных форм, и... тут я понял что собрать тело запроса в моем случае кажется можно объекта FormData, так как этот объект имеет методы для добавления новых полей в него, и это не зависти от реального html формы
Аноним 2020/01/09 11:47:53  №1568123 249
>>1564327
Надо понимать одну простую истину - если компания использует PHP, то она, конечно, не обязательно плохая (в смысле зп, получения опыта, интересных задач, скиллов сотрудников и т.д.), но все плохие компании скорее всего будут использовать PHP, потому что на нем проще сделать "хуяк-хуяк и в продакшен", потому что спецы на нем стоят дешевле, их полно, и компания _всегда_ сможет найти замену. Несмотря на всю эволюцию языка и экосистемы в целом за последние 2-3 года, он все еще является лакмусовой бумажкой "плохой" компании.
Я перекатился с PHP 2 года назад на python/go/c++, мой коллега - на java/kotlin, никто из нас ни разу не пожалел об этом.
Аноним 2020/01/09 11:53:40  №1568125 250
>>1568123
Поэтому данный тред с такой приветливой шапкой я бы назвал скорее вредным. Да, вы найдете себе работу гораздо быстрее, чем на другом стеке, но через 3 года вы только и будете думать, куда бы с него сбежать.
Аноним 2020/01/09 12:00:47  №1568127 251
>>1568087

Мне сложно принять решение, потому что я не знаю во что лучше вложить время прямо сейчас: прокачать vs code и sublime, которыми я точно смогу пользоваться всегда. Или вложить время в триал phpstorm с непонятным исходом. Пока что я склоняюсь к первому варианту. Мне нравится vscode сам по себе, но блэт почему он не может нати где у меня в папке определён класс, это не серьёзно. Полюбому может нужно какой-то плагин поставить. Собственно за этим я сюда и вкатился.

> сам скачай и посмотри

Да, и потрать время, когда можно просто спросить если чего-то не знаешь.

>>1568125

Я не думаю что у PHP программиста будут какие-то проблемы в освоении современных веб решений. А развиваться профессионально надо всегда. Годик-другой посидел в ВоВ вместо курсов и статей - отстал от индустрии.
Аноним 2020/01/09 12:09:29  №1568132 252
>>1568127
>Я не думаю что у PHP программиста будут какие-то проблемы в освоении современных веб решений.
Или лучше сразу вкатываться в нормальный стек и не тратить потом время и нервы на перекат.
Аноним 2020/01/09 12:43:09  №1568176 253
Где можно зарегить бесплатный домен?
freenom.com не регистрирует, dot.tk перенаправляет на фрином. В принципе, мне сейчас достаточно даже домена третьего уровня.
Аноним 2020/01/09 12:56:55  №1568184 254
>>1568127
>>потому что я не знаю во что лучше вложить время прямо сейчас
строчит посты о какой то хуите на дваче
>>Да, и потрать время,

Тебе еще много открытий предстоит
Аноним 2020/01/09 13:03:00  №1568188 255
>>1568184

Если я пишу на дваче, это не значит что я ничего не делаю. Поделал сегодня кое-какие дела по работе по-мелочи.
А в данный момент пытаюсь нагуглить что может заставить VS Code найти класс.
И кажется я нашел решение.
https://github.com/bmewburn/vscode-intelephense/issues/780
Аноним 2020/01/09 13:05:06  №1568189 256
>>1567957
>Деньги зарабатывают не программисты (речь не о фрилансе сейчас), а менеджеры и всякие директора
>договорились с заказчиком сделать программу N за 100 квадрилиардов бачинских
Я вот тоже на фрилансе с людьми договариваюсь и обсуждаю задачу, но вот деньги мне платят именно за решение задачи, а не её обсуждение.
Деньги зарабатывают именно программисты.
Аноним 2020/01/09 13:13:48  №1568197 257
>>1568132
Перекат сильно тяжко дался?
Я полувкатился. Пхп выбрал тупо потому что документация лучше и для понимания проще. Изначально вкатывался через Node.js. Вот там была боль-чере-боль. Для нуба нода сама по себе со всей этой асинхронщинойз нот френдли, дока не простая - требует понимания наследования в JS, так и решения больше чем "собери сам из солянки свой фрейм" отсутствуют. А ты на этом уровне куку от кодировки не отличаешь. Короче боль. Но на данный момент дрочка с пхп меня продвинула вперед и в ноде.

Питон юзал, Лутца ебанул, не сложную консольную поебень мог запилить. Но чето год назад посмотрел рыночек - питон либо крупные конторы, куда меня нуба не пустят, либо не вэб. Джанга/фласк гораздо реже используются. Хотя возможно за питоном будущее в бек-вэбе. А возможно пхп отобьет свое. Щас из него выкатываются, а значит криворукого школия станет меньше. И среднее качество кода возрастет.
Но и питон похоже растет, так что стоит немного его изучать начинать.
Какой есть на питоне микрофреймвор, аля Slim, что бы с роутерои и DI?

Я может ошибаюсь, но на мой взгляд когда есть опыт в другом стеке но в той же области - перекатиться не пиздец сложно. Я думаю что простой CRUD-сайтик на питоне я за тройку дней смогу зарядить, если упорно поебаться. Синтаксис я помню, ООП тоже +/-.
Но это все же с потолка мнение.

Аноним 2020/01/09 13:14:42  №1568198 258
>>1568189
>>Деньги зарабатывают именно программисты.
Но таки не себе
Аноним 2020/01/09 13:14:51  №1568199 259
>>1568087
>А ты блядь сам скачать и посмотреть что из этого будет не омжешь?
Что там может быть?
Триал кончится и нужно будет переустанавливать, может даже подчищать следы перед переустановкой. Зачем мне на этот пердолинг тратить время каждый месяц?
Поставил один раз Сублиме Текст на самом деле некоторый рабочий набор софта, накатил на него нужные плагины и пользуешься без мозгоебли этой детской.

Поставь хотя бы триал-ресет, или сам напиши, мартышка.
Аноним 2020/01/09 13:15:49  №1568202 260
Аноним 2020/01/09 13:31:38  №1568219 261
Selection049.jpg (122, 1129x777)
777x1129
Для тех кто пилит на Ларавеле в VS Code вот решение.
Во-первых, чтобы не сломалось слежение за файлами нужно выключить слежение в vendor, там тоже слишком много файлов как и в node_modules.
Если нужно за какой-то директорией из vendor следить, то добавляйте символическую ссылку на эту директорию ls -n ...
По-умолчанию текущая версия PHP Intelephanse не находит определение фасадов и прочих хелперов.
Чтобы находила, нужно поставить этот пакет
https://github.com/barryvdh/laravel-ide-helper
и сгенерить файлик, тогда через этот файл можно будет находить нужные классы
Аноним 2020/01/09 13:38:39  №1568233 262
>>1568199
>>Я пиздец экономлю время, тайм-менеджемнет
>>эффективно трачу время на дваче
>>Поставь хотя бы триал-ресет, или сам напиши, мартышка.
>>Провоцирование на срач
>>нее, это мне не мешает в эффективной работе. Я время берегу

Аноним 2020/01/09 13:43:41  №1568244 263
>>1568199
Хуй пойми когда поставил кряк и ноль проблем. Отваливается раз в полгода, за 5 секунд ищется новый.
Аноним 2020/01/09 13:54:59  №1568264 264
>>1568176
Сам нашёл. На noip.com домены третьего уровня.
Аноним 2020/01/09 14:04:10  №1568280 265
>>1568233
>срать зеленью в 2к20
Это кто ещё тут срач разводит.

>>1568244
>поставил кряк
Ещё мокрописек мне на ПК не хватало.
Аноним 2020/01/09 14:10:44  №1568291 266
>>1568233
>>эффективно трачу время на дваче
Ну а ты тратишь его на дваче и ещё пердолишься с тем, что должно работать всегда будучи один раз настроенным.

Ты пойми, макака, что не всем в кайф копаться на торрент-помойках, а потом накатывать сверху кряки и антивирусы. И это только потому, что тебе где-то такая же мартышка ерунды насоветовала.
Это вопрос чистоплотности. Как рабочей так и моральной.
Аноним 2020/01/09 14:33:14  №1568322 267
>>1568291
опять пиздаболие. Да угомонись уже.
Аноним 2020/01/09 14:45:26  №1568344 268
>>1568280
Как же я ору с тебя, дауна.
Кряк для жаба-приложений - это один jar-файл, который лежит себе мирно в папочке и запускается через java agent.
Аноним 2020/01/09 14:49:33  №1568350 269
>>1568344

От рута на рабочем компе с сорцами фирмы? :3
Аноним 2020/01/09 15:20:02  №1568400 270
>>1568344
>который лежит себе мирно в папочке
И запускается практически ежедневно с разрешением к сети и файлам проекта.
Дауна в зеркале ищи.
Аноним 2020/01/09 15:28:24  №1568413 271
>>1568350
На рабочем компе надо начальство просить купить лицензию на пхпсторм, либо сидеть на вскоде, валить с этой говенной конторы, которая жопится на нормальные инструменты для разработки.
Аноним 2020/01/09 15:32:08  №1568419 272
Аноним 2020/01/09 15:43:30  №1568440 273
>>1568350
Рут - это типа корневой доступ? А сорц - это исходник, верно понимаю? А код в жар-файле не посмотреть никак, чтобы понять, сливает он куда-то данные или нет?
За вопросы не бейте, я вкатывающися мимокрокодил.
Аноним 2020/01/09 15:45:59  №1568442 274
>>1568197
>Перекат сильно тяжко дался?
50/50
Питон я уже плюс-минус знал до переката, оставалось подтянуть, в го довольно быстро вкатился.

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

>Какой есть на питоне микрофреймвор, аля Slim, что бы с роутерои и DI?
Flask.

>Я может ошибаюсь, но на мой взгляд когда есть опыт в другом стеке но в той же области - перекатиться не пиздец сложно.
В целом да, плюс если удастся хорошо показать себя на собесах, то проседание по ЗП будет минимальным.
Аноним 2020/01/09 15:50:12  №1568443 275
>>1568440
>код в жар-файле не посмотреть
А оно надо - чужой код разбирать, когда своего хоть жопой ешь?

>чтобы понять, сливает он куда-то данные или нет?
Суть вопроса не в том - сливает он или нет, а в возможности этого слива. А она есть и даже не теоретическая, а вполне реальная.
Поэтому не стоит привыкать к этим крякам изначально, если ты не тупая пидораха конечно.
Аноним 2020/01/09 15:58:16  №1568449 276
>>1568440
Да.

PHPStorm работает из-под прав пользователя, не слушай того шизика про рут. Для работы, вообще говоря, крэк не нужен, достаточно нагуглить актуальный активейшн код, если хочется лицензии, их постоянно сливают. Но как уже неоднократно писали выше, можно юзать триальную версию либо бетку.
Аноним 2020/01/09 16:05:00  №1568454 277
>>1568443
>А оно надо - чужой код разбирать, когда своего хоть жопой ешь?
Как по мне, это будет реализовано типа "отправить юзердата на %сервернейм%", найти строку с сервером наверно весьма просто.
Аноним 2020/01/09 16:09:40  №1568459 278
>>1568454
Это, скорее всего, будет реализовано как делают сегодня все остальные крякероделы - скачивается нужный модуль с нужным функционалом под видом какого-нить обновления, в фоновом режиме естественно, и метаданные по твоему проекту улетают в неизвестную сторону.
Пойми, что коммунизма ещё не наступило и крякероделы этим не ради дружбы и поней занимаются, а для собственного профита. И если те же разрабы оригинального софта имеют прямой и честный профит с тебя в виде прямых и честных денег, то взломщики имеют непрямой профит, который идиоты обычно не видят.
Аноним 2020/01/09 16:14:46  №1568463 279
>>1568459
>скачивается нужный модуль с нужным функционалом
Так же никто не мешает подменить адреса серверов ЖетБрайнс на свои и выкачивать под видом тех же обновлений вообще чего угодно.
Аноним 2020/01/09 16:27:03  №1568469 280
image.png (75, 604x340)
340x604
Аноним 2020/01/09 16:33:06  №1568473 281
>>1568442
Понял, спасибо. Вторым потоком буду с питоном понемногу разбираться.

Аноним 2020/01/09 17:52:02  №1568568 282
Аноним 2020/01/09 19:46:50  №1568734 283
1578599181484.jpg (63, 525x688)
688x525
>>1568123
> Я перекатился с PHP 2 года назад на python/go/c++
Мне вот хочется начать что нить из этого учить. Есть свой проектик на котором всякие вундервафли тестирую. И вот думаю парочку йоба демонов совсем мелких написать не на пхп. Дабы пощупать какой нить другой язык.
На крестах писал давно, но в принципе помню совсем базовые вещи. конечно понимаю что он более низкоуровневый и там за большим кол-вом вещей следить нужно
Сколько про го не читал, всегда натыкался на то что жава быстрее, выше, сильнее. Но подкупает что го молодой и перспективный.
Про пытон знаю только что он "пхп на максималках для илиты".
Я в пэхэ щя на уровне мидамб и выше, но сравнивать в своей конторе особо не с кем. И чот как то дальше не двигаюсь. Думаю нужно немного очко кругозор расширить.
Если не трудно напиши пожалуйста как перекатывался. Почему именно их выбрал? Какие фреймворки и для каких проектов веб или не веб? с какого начал и прочее. с меня как обычно нихуя вечная благодарность
Аноним 2020/01/10 11:31:31  №1569054 284
IMG20200110131034.png (106, 720x782)
782x720
Сап, аноны.
Нихуя не понял суть задачи, объясните тугому.
Суть задачи в том, чтоб написать строку, в массиве установить ключи первыми десятью буквами из алфавита, а элементами выставить цифры типо для шифровки и функцией поменять текст на своего вида код шифрования.
Но вот косяк, о котором пишет ОП-хуй - не весь текст будет зашифрован.
Ещё и подсказку дал типо для глупеньких, что поможет функция array_flip.
Да вот только я нихуя не понял, нихуя. Ну что с того, что напишу я текст из задачи, заменю символы и ебану функцию array_flip?
Функция заменит мой шифр на первоначальный текст, и строка выведется в первоначальном виде, не зашифрованной.
В чём суть задачи, нихуя не понял?
Если нужно сделать так, чтоб весь код был зашифрован, то я сделаю так:
1. Пишу переменную, придаю ей значение в виде нужного текста(текст пишу через пробел, пример: «м ы с р а ж а л и с ь к а к м о г л и.»
2. Пишу ещё одну переменную, в неё добавляю функцию explode(а в неё я добавляю первую переменную), в результате чего у меня появляется массив с буквами из текста
3. Пишу переменную, в неё добавляю функцию array_flip, добавляю в неё массив
4. Вывожу переменную с функцией array_flip с помощью эха

Где я проебался? array_flip заменит буквы-элементы на ключи, в результате чего я получаю шифрование текста в виде цифр. Этого же хотел ОП-хуй в задаче?

Нужен шифр из всех букв алфавита - пожалуйста: делаю все команды что привёл выше, только в первую переменную добавляю все буквы из алфавита. С помощью array_flip меняю буквы на ключи-цифры.

Ну я так это понял. Что там ОП-хуй в задаче хотел - я сделал, но правда по-ебанутому. В чём прикол подобных дегенеративных задачек? Почему ОП не может нормально объяснить что к чему? В рот драл это говно, блядь.
Аноним 2020/01/10 14:46:09  №1569137 285
>>1569054
Кек.
А как ты работать собираешься, если элементарную школьную задачку осмыслить не способен? Посмотри типовое ТЗ на сайтах фриланса - там ещё хуже пишут.
Выкатывайся.
Аноним 2020/01/10 15:15:29  №1569145 286
>>1569137
Я двачер и школу прогуливал
Не выкачусь и всё равно буду решать эту хуйню
ХУЙ ТЕБЕ, ХОДЯЧИЙ ДЕМОТИВАТОР
Аноним 2020/01/10 15:30:36  №1569148 287
>>1569137
И имхо, цель задачи:
1. Доделай шифрование до нормального уровня
-
Берёшь, и вписываешь все буквы алфавита, придаёшь им нужную нумерацию. Шифр готов.
2. Доделай расшифровку зашифрованного текста
-
Это элементарно и понятно даже без подсказки ОП-а, функция проходилась в уроке по массивам

Чё, всё? Выкусил? Программа работает как надо, всё расписано правильно. Но ОП - ебучий дэбил, который не может нормально расписать задачу и что конкретно требуется. В итоге ребята пилят говнокод вместо того, чтоб сделать всё лучше и быстрее.
Жалуюсь на это не только я, почти в каждом треде ОП-а поносят за его умение расписывать задачи.
Аноним 2020/01/10 16:23:16  №1569183 288
>>1569054
Вбиваешь условие в поисковик, находишь решение, разбираешь что и как. Далее закрываешь вкладку с решением и его воспроизводишь. Эффект наверно не такой, как при решении с нуля, но по образцу тоже неплохо.
Аноним 2020/01/10 16:28:01  №1569191 289
>>1569148
Ну молодец ты у мамы значит - решил детскую задачку на 10 минут. Только вот пиздежа несоизмеримо много не по делу.
Аноним 2020/01/10 17:44:48  №1569239 290
>>1568109
...... тут я понял что собрать тело запроса в моем случае кажется можно объекта FormData

В таком ключе у меня все получилось одним AJAX запросом я отправляю как JSON так и несколько бинарных файлов(картинок).
Но вот вопрос к знатокам: как мне тот же набор файлов отправить на сервер но уже не эмулируя с помощью FormData отправку из формы?
Как сформировать такой пакет?
И как его потом распарсить уже на сервере? Получать такие данные я как понимаю нужно с помощью - file_get_contents('php://input');
Аноним 2020/01/10 17:58:47  №1569249 291
>>1569239
> но уже не эмулируя с помощью FormData отправку из формы
Никак. У JS же нет доступа к файловой системе. Ты можешь только попросить браузер отправить файлы, с помощью FormData или через сабмит формы. Там может можно нахуячить какой-то костыль через медиа возможности - типа начать стримить локальный файл, но это хуйня.
Аноним 2020/01/10 19:30:59  №1569303 292
>>1569249
>>У JS же нет доступа к файловой системе
А зачем мне доступ к файловой системе?

Файл загружается через форму, и сохраняется в js-объекте. JSON данные собираю отдельно.
Потом все это в кучу, и с помощью FormData эмулирую отправку формы.

По идее ничего не мешает файл+json отправить аяксом на сервер. Считать эти данные file_get_contents('php://input').

Проблема у меня в том что когда мы отправляем форму - мы кодируем в multipart/form-data. И по стандарту тело запроса для каждого поля должно иметь разделитель и собственный заголовок.

В конце концов мы же можем содрать со стороннего сервера разметку или картинки, и уже разбирать это не сервере. Хотя в парсерах я нихуя не шарю, может это и не так
Аноним 2020/01/10 19:33:55  №1569307 293
>>1569303
p.s.
>>Проблема у меня в том что когда мы отправляем форму
В принципе все можно собрать в ручную, и без FormData , и отправить на сервер, но тогда сервак воспримет это как запрос от формы, и разберет его соответственно. данные text в $_POST, файлы в $_FILES


А как на стороне сервера разобрать просто кучу данных?
Аноним 2020/01/10 19:52:44  №1569327 294
>>1552970 (OP)
Ребят, кто решал усложненную задачу про банкомат https://phpbooktest2.ga/l1/mou-ikkai.html?
В подсказке https://informatics.mccme.ru/mod/book/view.php?id=815 пишут код программы:

const int INF=1000000000; // Значение константы }бесконечность}
int F[n+1];
F[0]=0;
int m, i;
for(m=1; m<=n; ++m) // заполняем массив F
{ // m - сумма, которую нужно выдать
F[m]=INF; // помечаем, что сумму m выдать нельзя
for(i=0; i<k; ++i) // перебираем все номиналы банкнот
{
if(m>=a && F[m-a]+1<F[m])
F[m] = F[m-a]+1; // изменяем значение F[m], если нашли
} // лучший способ выдать сумму m
}

Так вот, я не понял, если
>Пусть F(n) -- минимальное количество банкнот, которым можно заплатить сумму в n рублей.
>Теперь заведем массив F[n+1], который будем последовательно заполнять значениями выписанного рекуррентного соотношения.

Получается, в строчке int F[n+1]; я вместо n, должен написать int F[6601]; так как нужно выдать 6600 рублей?

Что вообще обозначает массив F? Я не понял из-за рекуррентного соотношения

Аноним 2020/01/10 20:11:58  №1569338 295
>>1569327
Это говнокод.
Лучше сам напиши с нуля.
Аноним 2020/01/10 21:41:00  №1569372 296
>>1569327
> должен написать int F[6601]; так как нужно выдать 6600 рублей
Да.
> из-за рекуррентного соотношения
В данном случае это F(n) = min(F(n - a1), F(n - a2),..., F(n - ak)) + 1.
В коде это F[m] = F[m-a]+1; плюс условие if, плюс цикл в котором это все крутится
Важная для понимания алгоритма строка это
> Выведем рекуррентную формулу для F(n), считая, что значения F(0), F(1), ..., F(n - 1) уже вычислены. Как можно выдать сумму n? Мы можем выдать сумму n - a1, а потом добавить одну банкноту номиналом a1. Тогда нам понадобится F(n - a1) + 1 банкнота. Можем выдать сумму n - a2 и добавить одну банкноту номиналом a2, для такого способа понадобится F(n - a2) + 1 банкнота и т. д.
Аноним 2020/01/10 22:41:41  №1569381 297
Идите в жопу из-за вас опять до 2 часов ночи просидел.
Нельзя же просто так взять и пройти мимо задачи в интернете.

https://pastebin.com/6vnawu3x
Аноним 2020/01/10 22:49:59  №1569383 298
>>1569327

За такие алгоритмы убивать нахуй надо. Ниче непонятно.
Аноним 2020/01/10 23:01:29  №1569388 299
Кароч я так себе мыслю.

Вот типа есть у нас сумма.
Берём кароч самую большую купюру.
Сморим, делится эта сумма на цело на номинал купюры.
Нихуя?
Ок. Тогда берём остаток от деления и он становится новой суммой.
А допустим делится.
Ок. Сморим тогда сколько можем таких купюр дать.
И кароч вся эта херня повторяется пока сумма не кончится или купюры.
Ну пару-тройку ифов там накинул и нормально. Любой даун разберётся.
А в этом матане я ебал. Какие-то реккурентные функции. Сука ты бы ещё на побитовых операциях написал. Как блядь создатели квейка быстрый квадратный корень. Шоб после тебя код кто-то открыл и ахуел.

Да даже не обязательно рекурсию хуячить, просто цикл сделал какой-нибудь да и всё. Просто я хз я почему-то захотел рекурсию. И чё блядь? Стек не взорвётся, купюр же не миллиард.
Аноним 2020/01/11 00:15:11  №1569421 300
>>1569388
>Сморим, делится эта сумма на цело на номинал купюры.
А если делится? Ну вот так экономические системы совпали.
И теперь у тебя народ за российские рубли берёт баксы в банкоматах по цене белорусских.
Аноним 2020/01/11 14:37:59  №1570049 301
Интересует вот какая тема - а как правильно запросом вставлять данные в базу, если одним запросом сразу несколько таблиц обновляются?
База в момент вставки новых строк не блокируется же?
Допустим, нужно вставить данные в две таблицы последовательно двумя запросами. И во втором запросе нужно получить id строки вставленной в первом запросе из tab1 , допустим с помощью LAST_INSERT_ID().
Но если в промежуток между моим первым и вторым запросом еще кто то вставит строку в tab1, то я получу уже id не из мною вставленной строки, и соответственно моим вторым запросом я не верно вставлю данные
Как избежать такой проблемы?



Аноним 2020/01/11 14:43:11  №1570056 302
>>1570049
Гугли "транзакции" (transaction).
Аноним 2020/01/11 15:03:31  №1570069 303
>>1570056
Про транзакции знаю.
Это единственный вариант?
А как решается конфликт?
Допустим моя транзакция запущена. Делается 5 сек. ID строки будет 9.Сразу за моей через 1 сек кто то другой запустил вторую транзакцию,он тоже добавляет строки, но длится его запрос секунду. Какой ID будет у его строки как его транзакция выполнится? Тоже 9?
Таких вариантов конфликтов приходит в голову и не один
Аноним 2020/01/11 15:51:10  №1570104 304
>>1570069
Почитай про ACID и isolation levels.
Вкратце: при максимальном установленном уровне изоляции транзакций, БД гарантирует что данные изменяются так если бы транзакции исполнялись одна за одной. На самом деле они отрабатывают параллельно, но БД выкручивается с помощью снэпшотов и прочих хитростей.

Аноним 2020/01/11 16:31:04  №1570128 305
>>1552970 (OP)
Сделал свою днищенскую штуку на твиге без синфони. Отдельный скрипт отвечает за подгрузку и обработку каждого шаблона, открывается прямо через ЮРЛ. И мне кажется, что это как-то неправильно, ведь я видел как это выглядит в laravel. Как сделать нормальную систему роутинга чтоб один скрипт всё процессировал, обрабатывал URL с параметрами и передавал уже скрипту. Нигде не могу найти пример нормальной приложухи на твиге с роутингом.
Аноним 2020/01/11 17:49:52  №1570220 306
>>1570128
Если я правильно понял что ты спрашиваешь то нужно что-то типа вебсервер должен быть настроен так чтобы все запросы к несуществующим файлам отправлялись к index.php а в индексе ты изучаешь $_SERVER и все остальное и вызываешь что нужно.
Аноним 2020/01/11 18:09:25  №1570238 307
>>1570220
Так, ок, ща объясню, у меня есть шаблоны в папке, есть контроллеры. Я хочу сделать такую фабрику, которая обрабатывает URL и отдаёт её контроллеру, сейчас у меня тупо идёт обращение к контроллеру напрямую, в общем вообще нет роутинга. Проблема в том, что htaccess не хочет никак перенаправлять на индекс, ну ни в какую, я и в httpdconf, и в httpduserdir всё сделал нормально, но перенаправление просто не работает и жопа горит с этого. Я думаю, это как-то связано с тем, что я юзаю пользовательскую директорию. В /srv/http получше ситуация была
Аноним 2020/01/11 18:29:51  №1570249 308
>>1570238
> htaccess не хочет никак перенаправлять
404 пишет?
Аноним 2020/01/11 18:32:40  №1570251 309
Пхпшники воняют и выглядят как пиздец, общаться не умеют, пишут говнокод, хорошо что сменил стек, не понимаю че тут ловить
Аноним 2020/01/11 18:35:41  №1570255 310
>>1570249
Ничего не пишет. Просто не перенаправляет на index.php, а загружает вместо этого запрошенную страницу. Скрипты перенаправления из интернетика беру. Первая теория у меня пока что, что дело в RewriteBase
Аноним 2020/01/11 18:42:18  №1570259 311
>>1570255
Так у тебя не должно быть файлов с запрашиваемыми именами. Убери контролеры и теймплейты из папки в которую смотрит вебсервер. Там должен быть только индекс и ресурсы (картинки, стили, js, htaccess и т.п.)
Посмотри на структуру папок в laravel если он под боком. Там все гавно раскидано по своим папкам, а в web (которая доступна вебсерверу) необходимый минимум (то что должно быть доступно по прямому запросу, без роутинга).
Аноним 2020/01/11 18:47:58  №1570262 312
Аноним 2020/01/11 18:48:16  №1570263 313
>>1570259
Вот, спасибо! Структуру проекта брал у каких-то индусов и только сейчас понял свою ошибку.
Аноним 2020/01/11 18:57:07  №1570268 314
Аноним 2020/01/11 18:58:07  №1570270 315
Selection401.jpg (10, 266x243)
243x266
>>1570259

Разве там не public доступна веб-серверу?
Аноним 2020/01/11 19:17:08  №1570288 316
>>1570270
Наверное, я с ним не работаю. Делал только пару раз несколько мелких правок в уже готовых проектах. Анон его просто упоминал, потому и на него сослался.
Аноним 2020/01/11 19:18:11  №1570289 317
Странно
В приложухе в методе дочернего класса вызываю метод родительского - в который передаю функцию коллбеком.
Что то типа такого
https://ideone.com/imrudj

Но в моей приложухе работает только вариант с анонимной функцией. А с обычное - не рабоатет.
Версия пхп > 7
Че за херня?
Аноним 2020/01/11 19:22:16  №1570291 318
п.с. в приложении исключение - вызов неопределенной функции
Аноним 2020/01/11 19:30:38  №1570300 319
>>1570291
п.п.с

Все таки современный пхп перегружен деталями. Вот почему в function()use( $this){} - нельзя сразу $this передать для привязки контекста.
Нет нужно $t = $this городить.
Аноним 2020/01/11 19:36:33  №1570306 320
Пачаны, а в ПХП ресурсы изображений как объекты работают что-ли? Пытался копировать объекты клонированием и методом return new self($this->resource), но все изменения сливались в одно. А вот когда вручную прописал создание нового ресурса, копирование туда всей области и стандартный return new self($newResource), то всё заработало.
Как-то мало инфы по этому ресурсу изображения у них на сайте.
Аноним 2020/01/11 20:00:52  №1570328 321
>>1570289

$ php kek.php
Анонимная функция!Обычная функция!

Не знаю, у меня всё работает. Значит твой код не такой как ты пастнул в идеоне.
Аноним 2020/01/11 20:18:58  №1570344 322
>>1570328
>>Не знаю, у меня всё работает.
Короче у меня такая хуита в slim 3.9. По маршруту роута я создаю объект класса контроллера, и вызываю соответствующий метод. В нем - соответствующую модель, а в одном из методов модели я хочу пусть в естествоэспытательном контексте в метод родительского класса этой модели пробросить колбек - и происходит то что я описал. Анонимная функция нормально в колбек передается. А классическая - вызывает ошибку "вызов не определенной функции".
Если просто скрипт написать - без слима - все работает
Аноним 2020/01/11 20:23:58  №1570349 323
>>1570300
>Вот почему в function()use( $this){} - нельзя сразу $this передать для привязки контекста
Потому, что это не стрелочная функция, очевидно.

Сперва матчасть подтяни перед детской оценкой языков программирования.
Аноним 2020/01/11 20:37:05  №1570358 324
>>1570344
>А классическая - вызывает ошибку "вызов не определенной функции".
А ты ей неймспейс прописал?
Аноним 2020/01/11 21:27:33  №1570413 325
Selection403.jpg (138, 1106x675)
675x1106
Автор документации пхп могут в юмор
Аноним 2020/01/12 01:24:50  №1570523 326
Попытался тут зачем-то накатить веб сервер с пхп и БД как по гайду вместо сборки. Пхп и Апач работали, а как к этому прикрутить БД я не очень понял, потом подумал, нахера я вообще это делаю, всё и без этого работало, удалил Апач (просто удалил папку и из сервисов), попытался удалить MySQL, но он не удалялся (через панель управления, нажимал удалить, запускается установщик, кекает-пукает и закрывается без каких-либо сообщений или результатов), скачал назад опен сервер и он не запускается. Попытался назад накатить отдельный Апач, он теперь тоже не запускается, лел.
Можете посоветовать что-нибудь? Просто даже не представляю, куда посмотреть можно, чтоб что-нибудь понять.
Аноним 2020/01/12 04:49:36  №1570536 327
>>1570349
Типичный коммент - бесполезное пиздаболие.

Я просто сравнивал с привязкой контекста в JS через bind. В который напрямую передается this. В пхп - с какой то версии, по каким то причинам уверен в которых ты не разбираешься ровно так же как и я напрямую $this передать в use() нельзя. Только посредством копированния в переменную.
И причем ту стрелки.
Короче хуита.
Ответ можешь не писать, я тебе не буду отвечать. Жаль время тратить
Аноним 2020/01/12 09:33:28  №1570635 328
>>1570523
Накатил другую сборочку, вроде работает.
Аноним 2020/01/12 11:15:07  №1570763 329
>>1570358
Бля, а ты прав. При передачи функции в функцию - ей нужно нэймспэйс прописывать.
Спасибо.
Аноним 2020/01/12 11:46:12  №1570799 330
>>1570536
Ты нуб не только для пхп, но и для js даже.
Аноним 2020/01/12 13:27:36  №1570852 331
Анон здравствуй. Решил для себя изучить что то новое, чтобы мозг не простаивал без дела, выбрал пыху, учусь по учебнику спасибо.

Посмотри пожалуйста мой код, задача на рандом-нэйм генератор

https://ideone.com/EFh0nC

долго возился с array_rand, чтобы он у меня правильно брал значение из массива, подскажите пожалуйста что нужно дописать чтобы выводилось значение той ячейки, которую взял ключ randа

добра тебе анон
Аноним 2020/01/12 13:38:01  №1570857 332
Аноним 2020/01/12 13:44:57  №1570863 333
Аноним 2020/01/12 13:51:07  №1570872 334
Аноним 2020/01/12 13:51:19  №1570874 335
Аноним 2020/01/12 13:58:38  №1570882 336
Аноним 2020/01/12 14:11:04  №1570890 337
>>1570259
Ещё вопрос возник небольшой, у меня есть одменка и сам вебсайт, как лучше раскидать контроллеры и шаблоны для админки туда же, где и самого вебсайта, или отдельно всё это сделать с отдельными папками для шаблонов и контроллеров, только админовскими?
Аноним 2020/01/12 15:11:18  №1570931 338
>>1570890
Удобнекй ьудет когда админка отдельно, но вообще похуй. Если у тебя 3.5 контроллера то можно и вместе все закинуть.
Аноним 2020/01/12 19:18:04  №1571115 339
image.png (240, 1280x994)
994x1280
Собираю похапню, чтобы писать всякие говноскриптики на древнем говноноуте. Чисто для тренировки мозгов.
А у вас как проходит вечер воскресенья?
Аноним 2020/01/12 19:37:44  №1571148 340
>>1571115
В чём прекол пыхи для тренировки мозгов? Возьми хаскель, что ли, или лисп какой-нибудь.
Аноним 2020/01/12 19:42:50  №1571157 341
>>1571148
>тренировать мозги хуетой уровня эрланга или брейнфака
Я сказал тренировать, а не выебать и высушить
Аноним 2020/01/12 19:59:55  №1571180 342
>>1571157
Лисп самый простой язык.
Аноним 2020/01/12 20:02:21  №1571184 343
>>1571180
Самый простой - ассемблер, за ним си.
А функциональная параша никогда простой не была и не будет.
Аноним 2020/01/12 20:08:06  №1571189 344
>>1571184
Ты хуйню несёшь какую-то. Попробовал бы написать что-то на ассемблере, даже в простейших штуках с регистрами заебался бы. Это самая мозгоебля, я молчу про си. Ты, наверно, путаешь простой язык и его высоко/низкоуровневость.
Аноним 2020/01/12 20:13:45  №1571193 345
>>1571189
На сях я прямо вот сегодня допиливал модуль жопача, можешь сходить в ситред и посмотреть, туда высрал.
Он в разы проще всей этой эрлангопараши.
Аноним 2020/01/12 20:21:55  №1571195 346
>>1571193
Ты просто не дошёл до подводных Си, для этого нужно что-то более-менее сложное делать, проявляется непредсказуемое поведение и проблемки с памятью, буферами и так далее. Функциональные языки сложнее понять, но там когда понимаешь всё идёт как по маслу.
Аноним 2020/01/12 20:26:43  №1571197 347
>>1571195
>проблемы с памятью
В апаче написали свой аллокатор, ебаться с malloc/free напрямую тебя никто не заставляет.
>с буферами
Ну да, если ты не осилил ничего кроме gets и не проверяешь границы буфера - у тебя будут типичные даунопроблемы.
Аноним 2020/01/13 06:21:23  №1571414 348
>>1570069
Еще одна причина не использовать Mysql. В нормальных базах есть возможность вернуть значения при вставке. Типа INSERT ... RETURNING или INSERT ... OUTPUT. Транзакции тут помочь могут, но все-таки они не для того придуманы, чтобы поддерживать твои автоинкременты.
Решение получше - знать идентификаторы перед вставкой. А самое лучшее - использовать uuid.
Аноним 2020/01/13 06:29:08  №1571419 349
>>1568123
С одной стороны, я аплодирую тебе стоя и украду твой пост в свой
цитатник, действительно хорошо сказано.
С другой, мой личный опыт показывает немного другое, что именно пехапешники, натренировавшись на симфони, пытаются делать хорошо и правильно, думают об архитектуре, предметной области и так далее и тому подобное. А вот какие-нибудь nodejs'еры, сишники, рубисты и питонисты зачастую просто пишут то, что взбредёт в голову, не думая особо над правильностью. Были +- знакомые джависты с охренительными зарплатами, которые писали бекенд для параллельного проекта и у них он периодически выдавал ответ на предыдущий запрос вместо текущего (ну и прочие нёхи).

Применительно к беседе, я бы сказал, что во-первых, говнокодеров настолько много и джуниору настолько сложно отличать их от нормальных людей (да и не находится джун в выгодной позиции, скорее "куда возьмут - туда пойду", так что единственный вариант - это стараться попасть в компанию, где хотя бы выделены роли тимлидов, архитекторов и хотя бы говорят об архитектуре).
А во-вторых, мне кажется, джуну было бы сложно сразу вкатываться в джаву или что-то такое, потому что рынок устоявшийся и сеньористый. Проще вкатиться в php в хорошую компанию, вырасти до +- сеньора на этом стеке, а уже потом выбирать себе новый стек по душе. Пыха в этом смысле особо не ограничивает, есть и компании с очень хорошим техническим бекграундом, и даже те, где неплохо платят.
Аноним 2020/01/13 07:10:56  №1571445 350
>>1571414
>илитарный посгресодолбоёб опять несёт хуйню
Лишний раз убеждаюсь, что они просто не осилили даже mysql и уже лезут дрочить на постгрес/оракл/дб2/небо/аллаха.
Иди SQLite ковыряй, идиот.
>>1570049
>For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client.
Из официальной документации. Откуда вы нахуй блять такие лезете?
Аноним 2020/01/13 07:21:04  №1571454 351
>>1570799
Хех, может быть.
Но в отличии от тебяя целеустремленный и дичциплинированный. Мне не лень поебаться и поискать инфы. Так что я вырасту. А ты - нет.
А ты просто обычный пиздабол, коих в "войтивайти-биосфере" каждый второй.
Аноним 2020/01/13 07:25:57  №1571459 352
>>1569388
Ок, разменяй 11 рублей купюрами в 5 и 2 рубля. Пусть кассета с 1 рублём закончилась.
Аноним 2020/01/13 07:39:52  №1571474 353
>>1571445
Ебать ты гений. Вот тебе пример из реальной жизни. Я инсерчу по 1к записей в три потока в мульти мастер. Хз, че там у mysql огрызков популярно, какой-нить галера кластер.

Можно поступить как истинный mysql гений: использовать авто инкременты, добавить второй запрос на выборку last_insert_id(), завернуть эту хуйню в транзакцию, и как долбоебу сидеть ждать репликации ну или не ждать, мы же Mysql гении.
А можно генерить uuid'ы и ебошить без изоляции вообще.

Пиздец я уже насмотрелся на таких 200 IQ осиливших Mysql. Потом еще начинают ебенить процедуры для "удобного" получения идентификаторов. Триггеров навешивают, каскадной хуйни, малафьи. И удивляются, а хули так медленно у них приложение работает, наверное дело в пхп ебучем.
Аноним 2020/01/13 08:12:13  №1571494 354
>>1571474
>в 3 потока
>php
Дебил, ты?
Аноним 2020/01/13 10:02:37  №1571567 355
>>1571454
У тебя спеси больше чем нужно для твоего статуса войтишника.
Тебе пока надо закрыть варежку и слушать что старшие говорят, а не писать посты дескать - вот этот %языкнейм% плохой потому, что тут не так работает, а вот тут иначе делать надо было.
Это не у %языкнейм% проблемы, а ты через жопу делаешь.
Потом такие мартышки наслушаются друг-друга на таком самоподдуве и даже статьи на хабр пытаются писать, где их массово минусуют.

Ещё раз - учи матчасть.
Аноним 2020/01/13 10:22:33  №1571587 356
>>1571494
Ебать ты. Пусть будет не потоки, а три клиента одновременно делающих тяжелую хуйню
Аноним 2020/01/13 10:45:31  №1571626 357
>>1571474
Ты странный.
Во-первых, не у всех есть мульти-мастеры и галеры и не всем, у кого они есть, они реально нужны.
Во-вторых, с uuid'ами зачастую сложнее работать (особенно джуниору), потому что это строки. Более того, uuid'ы лучше генерировать на уровне базы данных, а не кода, потому что в случае генерации "кодом" ты рискуешь огрести проблем, связанных с подвисшими запросами, ретраями и прочим, что могла бы решить сама база (и вернуть тебе 100% нормальный uuid).

>>1570056
Здесь даже транзакции не нужны (точнее, транзакция неявно будет создана автоматически, если выставлен innodb_autoinc_lock_mode), mysql гарантирует, что автоинкрементные айдишники у строк, вставляемых одним запросом, будут последовательны. Так что все айдишники можно получить через LAST_INSERT_ID и ROW_COUNT.
Аноним 2020/01/13 10:46:00  №1571629 358
>>1571419
>именно пехапешники, натренировавшись на симфони, пытаются делать хорошо и правильно, думают об архитектуре, предметной области и так далее и тому подобное
Сейчас из пхп много выкатывающихся - язык подрос и повзрослел порядком, да и хайп спал. Остались только те, кому это интересно, поэтому и делают нормально - потому, что умеют.

Нынче самая трешатина в js творится. Все те быдлокодеры, за кого вчера пхп пинали, сегодня там обитают - у js порог входа сегодня ниже чем у пхп.
Аноним 2020/01/13 12:26:44  №1571734 359
>>1571626
Нихуя сложного тут нет. Ты либо знаешь как оно работает, либо не знаешь. Если уж речь зашла про джунов, то эти рекомендации в первую очередь для них:
1. Не используйте Mysql. Mysql это устаревший, вернее намеренно состаренный софт. Ну а хули ждать если Oracle покупает самую популярную бесплатную дб? Правильно нехуя тут ждать. На самый крайний случай MariaDb или Percona, и то если проект изначально жестко на них завязан. Как правило проект на Mysql это легаси, которое даже на версию 8.0.18 перевести невозможно.

Специально для новичков ремарка: что вообще означают эти ебанутые циферки версий? Эти циферки = возможности языка запросов. Спросите человека как быстро накидать в mysql таблицу 100К+ строк тестовых данных и посмотрите на его кислое ебало. Помимо этого есть еще куча приколов типа того что utf8 в mysql это на самом деле не utf8.

2. Не используйте числовые идентификаторы. Если вы пишете какую-нибудь тестовую хуйню за пять минут, то конечно похуй. Но если это коммерческий проект - используйте uuid'ы.

Чего такого хуевого в циферках? Числовые идентификатры псевдо уникальны и псевдо последовательны.
Почему псевдо последовательны? Потому что база не гарантирует их последовательность, только уникальность. Нихуя себе. Вот это поворот. По идее последнее число хранится в базе, но ничто не мешает использовать любое не занятое число. Также если "последовательность" дойдет до конца, а такое бывает т.к число увеличивается даже при неудачных запросах и дважды при апсертах, то просто пойдет сначала.

Почему псевдо уникальны? Они уникальны только в рамках одной "последовательности". Соответственно если серверов с нашей базой несколько нужно следить чтобы наши "последовательности" на них совпадали. Это к вопросу о репликации.

Но это еще не все. Как правило в коммерческой разработка баз несколько. Например логистика, 1С и наш сайт. Очевидно что числовой идентификатор будет везде разный и нужен уникальный ключ.

Но и это еще не все. Если мы пишем RESTful API, то у нас возникает еще несколько проблем. Операция создания нового ресурса должна быть идемпотентной т.е. при нескольких вызовах с одними и теми же данными должна создаваться только одна запись. Но есть проблемка: у нас нет идентификатора - он создается в базе. Это конечно можно решить, но с бОльшим гемором, чем используя uuid'ы. Плюс нам нужно возвращать данные в ответе, т.к. на клиенте еще нет идентификатора.

Бля, но ведь и это еще не все. Тут на сцену выходит наш код. Нам приходится писать наши модели таким образом что идентификатор в них не обязателен, хотя он обязателен, и во многих местах используется. Грубо говоря у объектов появляется состояние "не совсем готов к использованию". Например мы, скорее всего, не сможем отобразить коммент без идентификатора в листинге комментариев со ссылками на них. Ну и соответственно нужно написать, а главное вписать в модель наш код получения идентификаторов.
Аноним 2020/01/13 13:26:21  №1571802 360
аноны, есть вопрос по опенкарту: где искать title страницы? в контроллере или вьюхах?
Аноним 2020/01/13 13:33:12  №1571808 361
>>1571734
Не путай людей.

> Чего такого хуевого в циферках? Числовые идентификатры псевдо уникальны и псевдо последовательны.
А ещё они намного проще для работы с ними. Если у тебя не пиздец какой хайлоад с блокировками или репликациями (а у 99.99% проектов так и есть), то uuid'ы тебе не особенно помогут.

> Но это еще не все. Как правило в коммерческой разработка баз несколько. Например логистика, 1С и наш сайт. Очевидно что числовой идентификатор будет везде разный и нужен уникальный ключ.
Не путай тёплое с мягким, если у тебя есть несколько источников, то в каждом из источников у тебя будет локальный идентификатор и внешний, условно, id и 1c_id, хранить надо оба. Абстрактные "обобщённые" ключи и всякие аффинити - штуки достаточно редкие.

> Но и это еще не все. Если мы пишем RESTful API, то у нас возникает еще несколько проблем. Операция создания нового ресурса должна быть идемпотентной т.е. при нескольких вызовах с одними и теми же данными должна создаваться только одна запись
Ты очень сильно ошибаешься. Идемпотентными должны быть PUT-запросы. Сущности же как правило создаются POST'ами, которые как раз по определению не идемпотентны (и на самом деле проще для написания, потому что нет необходимости заранее генерировать уникальные ключи, а потом решать проблемы с дубликатами, обрывами соединения и так далее).

> Тут на сцену выходит наш код. Нам приходится писать наши модели таким образом что идентификатор в них не обязателен, хотя он обязателен, и во многих местах используется. Грубо говоря у объектов появляется состояние "не совсем готов к использованию". Например мы, скорее всего, не сможем отобразить коммент без идентификатора в листинге комментариев со ссылками на них. Ну и соответственно нужно написать, а главное вписать в модель наш код получения идентификаторов.
Тут ты втираешь нам какую-то дичь. Какое нахрен состояние "неготовности" к использованию? Ты сначала открываешь транзакцию, потом поочерёдно создаешь цепочку сущностей, если тебе нужно атомарно создать их несколько", потом коммитишь или откатываешь в случае ошибки. Всё, никакие велосипеды со вписыванием в код идентификаторов не нужны.
Аноним 2020/01/13 13:36:47  №1571812 362
>>1571629
> Нынче самая трешатина в js творится. Все те быдлокодеры, за кого вчера пхп пинали, сегодня там обитают - у js порог входа сегодня ниже чем у пхп.
Неистово плюсую, не могу не страдать от того ада, с которым приходится работать. Воистину, "миллионы мух не могут ошибаться". Желаю всей джаваскриптовой экосистеме скорейшей смерти, разложения и забвения (но я знаю, что такого не случится и это монопольное говно будет отравлять мне жизнь годами).
Аноним 2020/01/13 14:12:44  №1571851 363
>>1571808
>А ещё они намного проще для работы с ними
Чем проще? Я целую простыню написал о сложностях с числовыми идентификаторами. Uuid'ы не сильно медленнее и этого достаточно. "Помощь" от них именно в их глобальной уникальности и независимости от базы.

>если у тебя есть несколько источников, то в каждом из источников у тебя будет локальный идентификатор и внешний, условно, id и 1c_id
Забыл еще logistic_id. А еще забыл рассказать нахуя мне несколько идентификаторов одного и того же.

>Идемпотентными должны быть PUT-запросы
Я специально не писал тип запроса, потому что он не важен. Похуй PUT у тебя или POST, нужно избежать дублей.

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

>Какое нахрен состояние "неготовности" к использованию?
Поскольку у тебя нет идентификатора при создании придется писать конструктор без него:
new Comment(user_id, text, create_stamp). Поскольку поле id не задано getId() вернет null. Это и будет наше состояние неготовности. А должно быть так:
new Comment(id, user_id, text, create_stamp) и объект будет всегда работать одинаково.
Дураку понятно что нужно как-то засунуть идентификатор внутрь после сохранения. Это может сделать за нас orm, но только после запроса в базу. В доктрине например будет как-то так:
$comment = new Comment(user_id, text, create_stamp);
$entityManager->beginTransaction();
$entityManager->persist($comment);
$entityManager->flush();
// Здесь в сущности появляется идентификатор
$entityManager->commit();

Вообще странно что это нужно объяснять, если про апи и идемпотентность может быть не всем понятно, то уж это для любого джуна должно быть очевидно.
Аноним 2020/01/13 15:55:37  №1571918 364
Перепощу свой запрос из JS треда. А то там контингент про другое, хотя надеюсь найдется кто.

Аноны, кто шарит в node.js - у меня возник такой вопрос - вот допустим я со стороннего сайта собираю всю его разметку и файлы.
К примеру с помощью модуля http.request(options[, callback]) или
http.get(url[, options][, callback]).
Тоесть я получаю из этих методов объект типа stream, который потоком льет мне разные данные.
И текст, и бинарные данные(картинки и прочее). Где почитать - а как парсить этот поток? как определить тип данны? Как определить допустим начало и конец бинарного файла в потоке?
Прошу инфы и сурс по этому вопросу.

В принципе и для пхп тема актуальна для меня.
Аноним 2020/01/13 16:04:17  №1571924 365
>>1571567
Объясню почему ты ебанько.
1.Ты домысливаешь то, чего я не говорил. Я не говорил что пхп плох.
2. Ты ебанько потому что не аргументируешь свою позицию. Ты ведь не сказал почему в пхп this напрямую в use нельзя передавать. Ты этого не знаешь. Но естественно тебе это не важно, тебе только бы спиздануть.Потому что тебе хочется создать маня мирок где нубы, и ты на опыте.
3.Ты апелируешь ко всякой не нужной хуите - какая то спесь, старшие говорят, хабра-статьи блядь с минусами, ты что вообще несешь?
Да адекватному челу похуй вообще на все это говно. Нужно писать код, читать документацию. А все "сообщество" состоящее из хуй пойми кого - это в смузи-треды наверное.

Хотя понятно что то для того что бы себе веса поддуть. Ну и опиздеть.
Как и я - отвечаю тебе тупо по фану. Потому что нихуя этот диалог не значит.
Аноним 2020/01/13 16:14:44  №1571929 366
>>1571812
>>1571629
Ну, JS на фронте не умрет видимо никогда. Так что будет бурлить и бурлить. И бабло там будет - вэб морда, это то что завлекает клиента. А нода - вполне интересная вещь.
Вот только вкатываться в ноду средний вкатывальщик - охуеет от низкоуровневости, асинхронности и документации уровня "ну тип этот класс наследует от этого, ебись сам короче". А на экспрессе собирать банальный сайт на шаблонах - нахуя?
Аноним 2020/01/13 16:48:44  №1571957 367
Не твой прошлый собеседник, однако попробую ответить.
>>1571924
>Ты ведь не сказал почему в пхп this напрямую в use нельзя передавать.
На какой версии пилишь? По докам начиная с 5.4 $this неявно биндится. А версия эта ппц древняя. Собственно зачем после этого тебе надо передавать зис напрямую?
Если че use нужен для указания замыкаемых значений из родительского скопа, которые иным путем не могут попасть в замыкание.
Невозможность передать $this заключается в ошибке использования существующего имени. То есть $this у тебя в анонимной функции уже есть (само биндится), и ты дополнительно пихаешь еще через use. На этом моменте происходит ошибка.
И эта ошибка касается не только юзинга $this. Например function ($message) use ($message) {} выдаст абсолютно ту же самую ошибку, потому что имя $message уже занято.
Если есть острое желание перебиндить $this на лету, то это можно сделать через метод bind. Гуглить на раз по запросу анонимных функций, замыканий или Closure класса в пхп.
Аноним 2020/01/13 17:03:50  №1571972 368
>>1571957
Да я все понимаю. Я продолжаю эту не конструктивную беседу тупо по фану.
>>. То есть $this у тебя в анонимной функции уже есть (само биндится)
Однаок из документации :
"Замыкания могут также наследовать переменные из родительской области видимости. Любая подобная переменная должна быть объявлена в конструкции use. Начиная с PHP 7.1, эти переменные не должны включать superglobals, $this и переменные с теми же именами, что и параметры функции."

Без всякого сомнения разработчики пхп знают почему - "Начиная с PHP 7.1, эти переменные не должны включать superglobals, $this", однако я уверен что тот тип не знает причины этого так же как и я.

И как работает область видимости в JS и соответсвенно контекст this я тоже знаю.
Аноним 2020/01/13 17:25:45  №1572006 369
Делаю задачу на файлообменник. А как лучше сделать базу юзеров? Одну таблицу для зарегистрированных и другую для анонов или всех в одной таблице, но тогда получается, что поля типа имя, имейл и т.д будут nullable?
Аноним 2020/01/13 17:51:35  №1572038 370
>>1572006
Зависит от того насколько сильно тебе надо проработать задачу.
В идеале должен быть User, с которым мы можем ассоциировать клиента. У него есть id, пароль, какой-нить хеш безопасти, все что нужно чтобы его идентифицировать. User есть всегда, если не найден, то создается новый.
Также есть Identity, которое представляет нашего User'а миру. Имя, мыло, любимый цвет, вся хуйня.
Ну и напоследок есть Role, которая определяет что наш User делать может, а что нет.

Важно что все эти части могут храниться хоть в одной таблице, но в коде разделены на разные объекты.
Аноним 2020/01/13 19:56:54  №1572158 371
>>1571851
Ты гарантированно неправ в том, что исключительный по сложности случай возносишь в постоянный и учишь, по сути, оверинжинирингу. Люди без тебя разберутся где им и что использовать.
Аноним 2020/01/13 20:14:29  №1572176 372
>>1572006
>Одну таблицу для зарегистрированных и другую для анонов
Зачем для анонов таблицу делать? Если в базе нет его хеша, то это просто гость. Гостю надо порезать права - это деморежим твоего сервиса фактически.
Аноним 2020/01/13 20:35:48  №1572210 373
>Где почитать - а как парсить этот поток? как определить тип данны? Как определить допустим начало и конец бинарного файла в потоке?
У гугла и в документации. Где же ещё?
Аноним 2020/01/13 20:36:07  №1572211 374
Аноним 2020/01/13 22:55:28  №1572290 375
ребят вкатиться с ноды или Пайтона в пхп за день реально?В одну пиздатую компанию в своей мухосрани хочу,а там вакансии только на пхп джуна
Аноним 2020/01/13 23:14:21  №1572302 376
Аноним 2020/01/13 23:19:16  №1572303 377
>>1572302
да я вроде пару туториалов симфони посмотрел,такой же нодовский экспресс
Аноним 2020/01/13 23:22:45  №1572304 378
>>1572303
На подводных камнях завалишься сразу.

PHP отличается и от JS, и от Питона.
Аноним 2020/01/13 23:25:19  №1572305 379
>>1572303
Ну и да - Симфони на Экспресс вообще не похожа.
Аноним 2020/01/13 23:26:30  №1572306 380
>>1572304
а что конкретного стоит почитать посмотреть не посоветуешь?может какие-нибудь отличия всякие что можно на симфони где нельзя на джанге
Аноним 2020/01/13 23:27:24  №1572307 381
>>1572305
да я путаюсь сонный,хотел сказать Джанго, mvc ормки
Аноним 2020/01/14 00:06:24  №1572311 382
>>1568022

Используй multipart/form или как-то так, и положи JSON туда как текстовое поле.
Аноним 2020/01/14 00:28:12  №1572313 383
>>1571851

Ты немного страдаешь фанатизмом. Инженер должен понимать, что есть подходы X, Y, Z, у них есть такие-то недостатки и преимущества. А ты просто говоришь, что X - это единственно верный подход.

Идентификаторы (имхо) очень полезны при необходимости иметь распределенные копии БД и синхронизировать их (например: SPA или мобильное приложение, которое может работать какое-то время в офлайне с локальной копией базы). Очевидно, что в отсутствие соединения с БД не можешь выделять последовательные идентификаторы.

С другой стороны, плюс числовых идентификаторов в том, что они меньше весят, читабельнее для человека и дают более короткие URL.
Аноним 2020/01/14 06:39:38  №1572374 384
>>1572313
А ты страдаешь наивностью. Инженер тебе нихуя не должен, он будет сидеть чесать жопу, а потом скажет что все нужно переписать с нуля.

Мой изначальный пост был предназначен для джунов и вкатывальщиков. И я больше чем уверен большинство из них ни на секунду не задумывалось о недостатках авто инкрементных праймари ключей. А откуда им о них узнать? В документации не написано, что при использовании serial primary key ты превращаешь мульти мастер репликацию в ад, а свое апи в очень специфичную штуку, далекую от стандартов.

Я больше скажу. Мне приходилось видеть как более умные люди, с проектами ценой миллионы далларов попадали в эту ловушку. И исходя из их и своего опыта я могу со всей уверенностью и фанатизмом утверждать что в 2020 году в коммерческой разработке нужно уметь пользоваться, в первую очередь, глобально уникальными идентификаторами. Потому что все что можно сделать с авто инкрементом можно сделать на uuid'ах, но не наоборот.

Про читабельный короткий url кстати полная хуйня. Те кто хочет читабельные ссылки делает их читабельными:
https://www.mvideo.ru/products/smartfon-apple-iphone-11-pro-max-512gb-gold-mwhq2ru-a-30045457
https://www.clever-cloud.com/blog/engineering/2015/05/20/why-auto-increment-is-a-terrible-idea/
https://www.youtuba.com/watch?v=FU1yjkCqBB4
Аноним 2020/01/14 08:53:25  №1572461 385
>>1571851
> Чем проще? Я целую простыню написал о сложностях с числовыми идентификаторами.
Тем, что это строки. Что их нужно генерировать на клиенте заранее. Что их нужно правильно хранить на уровне бд и правильно сравнивать (в pg это означает ещё и кастинг типов). Что могут быть коллизии. Что тебе придётся или валидировать айдишники, прилетающие от клиентов, или смириться с тем, что там могут быть "00000000-0000-0000-0000-000000000000", "000000000000000000000", "", "15", "я покакал". Что в случае подвисшего соединения на уровне бд ты словишь ошибку вида duplicate key, если не используешь upsert. И так далее.
Это всё решаемо (я сам использую uuid'ы), но нахуя ты здесь орёшь, что их нужно использовать ПРЯМ ЩАС ВЕЗДЕ ТОЛЬКО ИХ? Тут сидят джуниоры, для которых просто запустить веб-сервер или просто законнектиться к бд - уже достижение. Ты понимаешь, что у них мозги лопнут ещё и с uuid'ами разбираться? Все ORMки поддерживают автоинкремент, ну и славно, пусть так и будет.

> Забыл еще logistic_id. А еще забыл рассказать нахуя мне несколько идентификаторов одного и того же.
Потому что у тебя потом появятся внешние системы (условно, google oauth provider и так далее), в которых айдишники будут свои. Единый сквозной id по всей системе - штука не всегда достижимая.

> Я специально не писал тип запроса, потому что он не важен. Похуй PUT у тебя или POST, нужно избежать дублей.
Ты пиздец странный. Никто избегать дублей не должен, в общем случае. PUT (или, кстати, PATCH) должен гарантировать идемпотентность, POST - нет.

> Как раз если идентификатор есть на клиенте ты в случае проблем на сервере просто отправишь его повторно и никаких дублей не будет.
И это уже будет update, а не create. Не путай защиту от дубликатов и операции создания/обновления.

> В доктрине например будет как-то так
По-хорошему следовало бы разделять набор полей, требуемый для создания сущности и набор полей самой сущности (там автозаполняемых полей может быть так-то дохрена). И то, что в доктрине для удобства предлагают оперировать полуинициализированными сущностями не означает, что это хорошо или что так везде.
Аноним 2020/01/14 12:23:50  №1572595 386
Анончики, не могу придумать, как должна выглядеть структура БД под мои требования, помогите плиз.

Мне нужна БД с рецептами для крафта, т.е. по сути что-то вроде этого
железная руда -> железный слиток
железный слиток -> шестеренка
железный слиток -> лом
шестеренка -> коробка передач


Как сохранить в БД все эти связи?
Аноним 2020/01/14 12:32:09  №1572601 387
>>1572595
Набор предметов и связей между ними - это по сути граф, так что смотри методы представления графа в реляционных бд.
Я бы хранил отдельно таблицу с предметами и отдельно со связами:
items (id, name, description, level, cost, icon)
item_dependencies (source_id, target_id)
Ну и кури работу с графами типа алгоритма Дейкстры, оно тебе потребуется, когда захочешь найти расстояние между двумя точками в графе, циклы и так далее.
Аноним 2020/01/14 13:24:55  №1572641 388
>>1572461
>Что тебе придётся или валидировать айдишники
А числовые идентификаторы ты не валидируешь что-ли? Не знаю зачем ты преувеличиваешь сложность. Это не бином ньютона, тут инфы на пару статей, а пользы на много денег.

>PUT (или, кстати, PATCH) должен гарантировать идемпотентность, POST - нет
Ты доебался со своим POST'ом. Вот тебе кароч статья "Идемпотентность апи для дошкольников" https://habr.com/ru/company/yandex/blog/442762/. Если и после нее не дойдет, то плиз не траль больше.

>По-хорошему следовало бы разделять набор полей, требуемый для создания сущности
Exactly. И идентификатор должен быть среди этих полей.

>в доктрине для удобства предлагают оперировать полуинициализированными сущностями
Давай ты просто напишешь сниппет, в котором у тебя будет сразу полностью инициализированная сущность.
Или можешь поправить мой https://3v4l.org/B1PQL чтобы работало так как ты считаешь правильным.
Аноним 2020/01/14 14:00:50  №1572668 389
>>1572641
> А числовые идентификаторы ты не валидируешь что-ли?
Это разные вещи, их не надо валидировать на этапе создания сущности.

> Если и после нее не дойдет, то плиз не траль больше.
Ты упорно пытаешься доказать мне, что если ты называешь белое чёрным, то и все так делают. Ну ок.

> Exactly. И идентификатор должен быть среди этих полей.
В случае uuid'ов - да. В случае инкрементальных айдишников - нет.

> Давай ты просто напишешь сниппет, в котором у тебя будет сразу полностью инициализированная сущность.
Пожалуйста: https://3v4l.org/k7CDM
Обрати внимание, всё статически проверяемо, если айдишник есть - то его можно получить, а если его нет - то нельзя, никакой неопределённости. Ситуация, когда ты полагаешься, что внутри function logEntity(Entity $e) { echo $entity->getId() . ' ' . serialize($entity) . PHP_EOL;} не произойдёт ошибки потому что это никто никогда не передаст туда недоделанную сущность - невозможна by design.
Аноним 2020/01/14 14:12:49  №1572677 390
Аноним 2020/01/14 14:37:02  №1572703 391
>>1572677
А зачем ты сеттер для text сделал, а а АААА? По феншую нужно новый коммент с новым id
мимо
Аноним 2020/01/14 14:41:19  №1572704 392
>>1572595
А обязательно использовать реляционные БД?
Аноним 2020/01/14 14:45:12  №1572708 393
>>1572703
Во-первыз, было лень много писать. Во-вторыз, не хотел ударяться в излишнюю иммутабельность, местным пехапешникам хотя бы с типизацией разобраться нормально для начала.
Аноним 2020/01/14 15:46:15  №1572756 394
>>1572708
>местным пехапешникам
>вы говно, а я в красивом платье красном
>хоть и написал банальную хуйню
Аноним 2020/01/14 16:01:46  №1572768 395
>>1572756
>хоть и написал банальную хуйню
>@
>неправильно
Вся суть хейтеров.
Аноним 2020/01/14 16:36:04  №1572783 396
>>1572668
>Это разные вещи
Схуяли разные? Какая разница пришел с клиента числовой id или uuid, все равно надо валидировать.

>В случае uuid'ов - да. В случае инкрементальных айдишников - нет.
Идентификатор это и есть то что отличает сущность от набора полей. Твой CommentBase это как раз такой, использовать его нигде нельзя, он нужен только чтобы донести данные до репозитория, где мы и получим настоящий коммент.

Превратив свой репозиторий в фабрику ты создал неприятное ограничение: невозможно создать объект без запроса в базу. Понятно что в сниппете мы схитрили, но в реальных условиях вызов функции generateId() равносилен INSERT запросу. Ну и еще ты забыл про возможность создания объекта вне фабрики. А сигнатура конструктора конечно правильная, как я и писал:
>А должно быть так: new Comment(id, user_id, text, create_stamp)

Теперь для полноты картины представь насколько был бы проще твой код с uuid'ом. Сразу минус наследование, минус запрос при создании объекта и минус фабричный метод.


Аноним 2020/01/14 17:00:08  №1572801 397
Сосисыч, нужна помощь.

Есть вариантик перекатиться в веб-макаку, где и спрос выше, чем на нынешнюю должность, и сама квалификация более актуальна, чем моя нынешняя профессия.

Суть работы: поддержка сайтов на неткате, баг фиксов и фикс багов.

Подскажи книг, где сразу же произходит инъекция связки php + sql в мозг (книга на пикриле подойдет?).


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

Но всерьез это не воспринимаю, скорее просто как небольшой спойлер того, что есть и что можно делать с пхп.
Аноним 2020/01/14 18:42:18  №1572895 398
>>1572783
Если тебя так сильно задел фабричный метод, то смотри мой первый сниппет.

> Идентификатор это и есть то что отличает сущность от набора полей. Твой CommentBase это как раз такой, использовать его нигде нельзя, он нужен только чтобы донести данные до репозитория, где мы и получим настоящий коммент.
Именно так, это DTO, он для того и нужен, чтобы формализовать структуру данных, необходимую для созания сущности.

> Превратив свой репозиторий в фабрику ты создал неприятное ограничение: невозможно создать объект без запроса в базу.
Нет, это не так. В моём коде ты можешь написать "new Comment". только тогда тебе придётся вручную задать все поля, которые гипотетически могут у этого объекта запросить (я о первом сниппете).

Более того, твой "объект", как ты его предлагаешь использовать, по своей природе сомнителен. Представь, что у него кроме айдишника есть целая куча автогенерённых (во время сохранения) полей типа даты создания и прочего. Тебя самого не пугает, что в твоей системе бродят объекты, неотличимые от настоящих, но при этом пустые? Как может существовать заказ без даты создания, к примеру? У тебя полюбому куча логики будет на неё завяано. И в теории стоит кому-то перепутать и прокинуть в систему $order = new Order() вместо $order = $order = new Order(); $db->persist($order) - как внутри системы в рантайме поплывут трудновоспроизводимые ошибки.
Я тебе уже второй или третий пост пытаюсь объяснить, что код должен быть статически корректен. Не должно быть возможности засунуть в гипотетический process несуществующую недоинициализированную сущность и получить от внешне валидного объекта NULL вместо значения там, где ты этого не ждёшь.
Всякие active record'ы. которые это позволяют, забивают на логику предметной области для ускорения написания шлёп-шлёп-кода.

> Теперь для полноты картины представь насколько был бы проще твой код с uuid'ом. Сразу минус наследование, минус запрос при создании объекта и минус фабричный метод.
Он был бы в точности таким-же, только GenerateId создавал бы uuid.

Аноним 2020/01/14 19:31:14  №1572940 399
>>1572895
>Если тебя так сильно задел фабричный метод, то смотри мой первый сниппет.
Он меня не задел. Фабричные методы и фабрики норм тема. Только у тебя фабрика слилась с репозиторием. И это не случайно - это результат зависимости от базы. Структура базы влияет на твой код, а он про неё вообще знать не должен.

>Именно так, это DTO, он для того и нужен, чтобы формализовать структуру данных, необходимую для созания сущности
Проблема здесь в том что у тебя dto превращается в сущность. Это отличный пример некорректного использования наследования. CommentBase и Comment не равноценны и не взаимозаменяемы. Полиморфизм убит. Помянем.

>Представь, что у него кроме айдишника есть целая куча автогенерённых (во время сохранения) полей типа даты создания и прочего
Я именно это и представил. Мой код был заведомо неправильным, и я просил тебя его поправить по своему разумению.
>Или можешь поправить мой
>чтобы работало так как ты считаешь правильным
Бля я думал это очевидно, ведь я уже упоминал что идентификатор должен быть в конструкторе.
>А должно быть так: new Comment(id, user_id, text, create_stamp)

Вообще самое важное здесь сохранение до формирования объекта. Вообще смысл существования модели в поддержании корректности состояния.
получаем данные -->
меняем модель -->
модель в непротиворечивом состоянии -->
сохраняем состояние в базу

А у тебя получается:
получаем данные -->
открываем транзакцию -->
сохраняем состояние в базу -->
меняем модель -->
модель в непротиворечивом состоянии -->
закрываем транзакцию

Такого странного нагромождения как у тебя я еще не видел, обычно просто делают возможность использовать метод generateId() в нужном месте кода.
new Comment($db->generateId(), $userId, 'Test comment')
С uuid'ом было бы так
new Comment(new Uuid, $userId, 'Test comment')


Аноним 2020/01/15 05:43:48  №1573016 400
>>1572940
Мне повторять, что у того, что ты называешь моделью (что, кстати, не совсем корректно), может быть дохера полей, определяемых во время создания/сохранения?
Соответственно, ты не можешь получить полноценную модель, просто имея данные. Всё, твоя схема
> получаем данные --> меняем модель --> модель в непротиворечивом состоянии --> сохраняем состояние в базу
заведомо некорректна.
Все эти противоречивые состояния - это опасная хуйня, которой не должно быть.
Если создаём сущность, то
> получили данные --> провалидировали --> записали
Если сущность обновляется, то
> получили данные --> провалидировали --> обновили модель --> записали
Сущности вообще нужны не для того, чтобы их сохранять (внезапно), а для того, чтобы ими можно было оперировать в бизнес-процессах, по сути это просто структуры данных.

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

> Проблема здесь в том что у тебя dto превращается в сущность
Это всего лишь способ определить набор необходимых полей, не понимаю, чего это тебя так пугает. Можно сделать тысячей способов, наследование я применил потому, что проще всего было написать с ним. Ну или с фабричным методом.

Я устал с тобой спорить, короче. Мы уже ушли от темы изначального спора и выясняем непонятно что.

С моей точки зрения, ты пытаешься использовать сущности до их создания (сохранения), что сразу порождает возможные некорректные состояния (да и в принципе состояния). Соответственно, так как единственный способ получить весь необходимые набор данных - это сделать запрос в базу, то и сущность у тебя в коде должна появляться после insert'а, а не до. И даже uuid'ы эту проблему не решат, потому что таких полей бывает вагон, created_at, updated_at, calculated_total, calculated_hash и тд и тп.
Как это делать, через отдельную структуру (наследовать здесь чуть проще, чтобы код не дублировать лишний раз), фабричный метод в репозитории (ничего страшного, объект ты и так создать можешь сам, через конструктор - этот фабричный метод отвечает за его создания через взаимодействие с бд) или как-то по-другому - не так важно, важно формализовать то, что ты используешь для создания и то, что ты используешь для, к примеру, апдейта.

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

А, и да, хватит называть сущности моделями! Мы здесь моделируем бизнес-процессы, в коде. И моделью является, сюрприз, модель бизнеса, всякие функции/сервисы calculatePrice, calculateDiscount + сущности, то есть Entity Object'ы.
Аноним 2020/01/15 05:52:25  №1573020 401
Всем привет.
Не очень понимаю, как работает шаблонизация. Вот я делаю задачку про студентов, там надо сделать так, чтобы можно было отредактировать запись из той же формы, поэтому, как я понимаю, неплохо бы чтобы после отправки загружалась форма, заполненная данными. Я беру из кук пароль, ищу по нему данные в бд, помещаю их в массив, делаю инклюд шаблона формы. В шаблоне пишу типа:
<form>
<?php if(!empty($result)):?>
<input value="<?=$result['name']?>">
<input>
<input>
...
<?php endif;?>
</form>
Но, если скрипт запускается в первый раз и кук ещё нет, то пхп ругается, что я пытаюсь вывести незаданную переменную. Я думал, что раз if не сработал, то вставки в инпутах тоже не должны работать и там будет просто пустое вэлью.
Аноним 2020/01/15 07:02:17  №1573045 402
>>1573020
Скорее всего у тебя есть $result, но в нём нет 'name'
Аноним 2020/01/15 07:17:55  №1573048 403
image.png (0, 167x27)
27x167
image.png (1, 312x66)
66x312
image.png (115, 1440x760)
760x1440
У меня какая-то фигня со шрифтами. Есть сайт, который использует нужные шрифты. Я их копирую к себе, подключаю, использую. И - внезапно! - шрифты другие. Причём, зараза, на первом сайте все шрифты выглядят нормально, а на моё почему-то русские с засечками (хотя засечек быть не должно).
Подключение:
@font-face {
font-family: OpenSansRegular;
src: url('./components/fonts/OpenSansRegular.eot');
src: url('./components/fonts/OpenSansRegular.woff2') format('woff2'),
url('./components/fonts/OpenSansRegular.woff') format('woff'),
url('./components/fonts/OpenSansRegular.ttf') format('truetype'),
url('./components/fonts/OpenSansRegular.svg#OpenSans-Regular') format('svg'),
url('./components/fonts/OpenSansRegular.eot?#iefix') format('embedded-opentype');
font-weight: normal;
font-style: normal;
}

Использование:
body {
font-family: OpenSansRegular;
}

В консоле хрома шрифт выводится правильно: font-family:OpenSansRegular;
Я не понимаю, как так вообще?
Аноним 2020/01/15 08:02:22  №1573060 404
Аноним 2020/01/15 11:00:41  №1573209 405
>>1573016
>Все эти противоречивые состояния - это опасная хуйня, которой не должно быть.
Ну охуеть теперь. Сам выдумал соломенно чучело, сам его победил. Я об этом и говорю уже сколько постов. У тебя единственный способ избежать противоречивого состояния - создавать Comment в репозитории. Это само по себе ограничение. Если ты просто напишешь new Comment(334, 'Коммент шредингера') ты не можешь знать сохранится он или нет.

>С моей точки зрения, ты пытаешься использовать сущности до их создания
Ты реально жопочтец. Мой поинт в том что uuid'ы позволяют создавать сразу корректные объекты, легко и непринужденно, а авто инкременты накладывают ограничения, при которых ты не можешь создать объект до создания записи в бд.
Вот так выглядит code first подход https://3v4l.org/c81Oi. Поскольку ты жопочтец препреждаю: этот код очень похож на продакшен код, но он специально упрощен, чтобы места меньше занимать. Как видишь он полностью непротиворечив, и в принципе не может попасть в некорректное состояние. Тут есть пример корректного наследования с соблюдением полиморфизма. А самое важное то, что здесь даже не воняет персистом - код полностью независим от базы.

>что ты называешь моделью (что, кстати, не совсем корректно)
>А, и да, хватит называть сущности моделями!
Вообще я старался упоминать поменьше терминов, и уж тем более поменьше вдаваться в DDD. А для тебя то как ты называешь утку похоже важнее того чем она является. Ну и вообще судя по терминологии и некоторым оговоркам имеет место карго культ. Без обид, но выглядит это как "мидл, но стремящийся всех заебать".

>Не всем нужно забивать гвозди микроскопом, особенно на доске для джунов
Не корректная аналогия. Тут правильней сравнить сварку и резьбовое соединение. Нужно сверлить дырки, нарезать резьбу, с циркулем ебаться, но результат получается более гибкий. А в целом есть такое понятие как best practices.
Аноним 2020/01/15 12:10:47  №1573260 406
Почему из PHP сейчас модно выкатываться, когда есть 7.4 (скоро 8 с JIT), есть Laravel/Symfony, есть composer, есть богоподобный PHPStorm. Короче, есть все для удобной, быстрой и качественной веб-разработки. Но люди продолжают валить. Почему?
Аноним 2020/01/15 12:31:43  №1573281 407
>>1573260
Это не язык микросервисов, это сейчас и не язык для MVP, так что ниша рыночная получилась жквери пхп мускл битрикс для мелкого бизнеса или клепание обычных крудов на том самом ларавел для компаний среднего пошиба.
Аноним 2020/01/15 12:44:51  №1573312 408
>>1573260
Всё нормально, пхп переходит из ниши для говнокодеров (не полностью, CMSки остаются) в нормальное программирование, при этом балласт сваливается и идёт говнокодить в мир js.
Серьёзные чуваки, которые писали на пыхе, остаются писать на пыхе.
Аноним 2020/01/15 12:50:35  №1573323 409
>>1573281
Вот кстати, часто вижу в вакансиях связку PHP+Go. Т.е. получается, что основной бэк пишется на PHP из-за удобных веб-фреймворков, а какие-то части выносятся в Go. Ведь писать весь бэк на Go сильно больно.
Аноним 2020/01/15 12:58:08  №1573339 410
>>1573312
>при этом балласт сваливается и идёт говнокодить в мир js.
Балласт ли.
Аноним 2020/01/15 13:04:25  №1573349 411
Аноним 2020/01/15 15:19:14  №1573505 412
>>1573312
С языка снял.

>>1573339
>Балласт ли.
Да обычные мартышки. JS сам по себе гораздо проще чем нынешний ПХП с его ООП в стиле Java-энтерпрайза.
Аноним 2020/01/15 15:41:13  №1573518 413
>>1573505
>чем нынешний ПХП с его ООП в стиле Java-энтерпрайза
Зачем тогда ПХП, если есть Java?
Аноним 2020/01/15 15:41:41  №1573520 414
>>1573312
>Серьёзные чуваки, которые писали на пыхе, остаются писать на пыхе.
Серьезные чуваки никогда не писали на пыхе.
Аноним 2020/01/15 15:45:41  №1573531 415
>>1573312
Удел PHP - мелкий и средний бизнес разной степени говнистости. Ну будет крупные фирмы с большими деньгами его использовать (те крупные, что используют щас, это легаси, выросшее из стартапа).
Аноним 2020/01/15 15:45:58  №1573532 416
Что в 2020 спрашивают на собесах по пыхе?
Аноним 2020/01/15 15:46:07  №1573534 417
>>1573520
Весь веб - это нихуя не серьезные чуваки.
Аноним 2020/01/15 15:46:20  №1573536 418
>>1573531
>Ну будет крупные фирмы с большими деньгами его использовать (те крупные, что используют щас, это легаси, выросшее из стартапов).
Не будут*
Аноним 2020/01/15 15:47:14  №1573538 419
>>1573312
>>при этом балласт сваливается и идёт говнокодить в мир js.
Извини, но "сваливать говнокодить" в node.js для нуба - это не взлетит.
Для хеловорда порог вхождения совсем разный. На пхп - просто index.php вы корне апача. А нода уже большего требует.
А если в ноде уйти дальше чем "мам, смотри я на экспрессе статику отдаю" - боюсь такой вкатывальщик говна поест.
А вот во фронт они конечно ломанутся табуном.

Аноним 2020/01/15 15:49:03  №1573539 420
>>1573534
Ну хз. Безопасность и какие-нибудь супернагруженные сервера банков это жёска. Это на джаве всё.
Аноним 2020/01/15 15:49:53  №1573540 421
Аноним 2020/01/15 16:03:20  №1573548 422
>>1573518
Такие вопросы бессмысленны - он занял свою нишу на рынке и так стало.
Аноним 2020/01/15 16:08:04  №1573555 423
>>1573534
Проснись, маня, и глянь зарплаты.
Аноним 2020/01/15 16:09:23  №1573556 424
>>1573531
Серьёзно, я не понимаю, почему кого-то там должно парить, какой у него удел? Почти весь веб один хуй такая же бесполезная работа, как и андройд-разработка, почти никакие разработчики ни на что на самом деле не влияют, важно лишь то, чтоб платили. Это только у романтиков программисты изменят мир, на деле же дай бог, чтоб в твоей работе была хоть одна миллионная процента уникальности. Даже нейросеточники ничего кроме обработки картинок не делают, что уж тут говорить про веб. Каждого можно заменить.
Аноним 2020/01/15 16:16:00  №1573561 425
>>1573538
Ну хз. Много пхпшников ноду знают неплохо. Просто потому, что голый пхп мало кому нужен и нужно подтягивать жавускрипт, а нода - суть тот же бекенд и понимается легко.

А так да - макаки сейчас все во фронтенде копошатся, а в ноду только самые смелые лезут и зачастую обламываются.
Аноним 2020/01/15 16:23:34  №1573565 426
>>1573556
>Серьёзно, я не понимаю, почему кого-то там должно парить, какой у него удел?
С точки зрения карьеры должны парить.
Аноним 2020/01/15 16:25:22  №1573570 427
>>1573565
Карьера программиста дальше только в менеджеры ведёт. Хоть ты яву дрочи, хоть пхп, хоть жс.
Поэтому и правда похрен.
Аноним 2020/01/15 16:27:39  №1573575 428
>>1573570
Java тимлид и PHP тимлид - это дичайше разные вещи и не только по ЗП.
Аноним 2020/01/15 16:30:34  №1573579 429
>>1573575
>Java тимлид
Не всем по кайфу копаться в 15-летнем бизнес-легаси.

А вообще примерно одинаково они получают.
Аноним 2020/01/15 16:32:27  №1573583 430
>>1573579
Тимлид в Сбере и тимлид в Сайенге одинаково получают?
Аноним 2020/01/15 16:34:32  №1573586 431
>>1573583
Давай без манёвров - я про среднюю зарплату говорил.
Аноним 2020/01/15 16:38:57  №1573592 432
>>1573586
Никаких маневров, это просто говорит о потенциальных возможностях языка. И да, это вполне средне.
Аноним 2020/01/15 16:40:27  №1573595 433
>>1573592
>возможностях языка
карьерных
Аноним 2020/01/15 16:41:40  №1573597 434
>>1573592
>говорит о потенциальных возможностях языка
Тимлид в Сбере говорит? Или в Сайенге? И причём тут сам язык?
Аноним 2020/01/15 16:43:32  №1573598 435
>>1573592
>это вполне средне
Средняя зарплата тимлида - везде примерно одинаковая в силу одних и тех же обязанностей. Язык тут вообще не причём.
Иди и посмотри на ХХ сам.
И не пиши этой детской ерунды тут больше.
Аноним 2020/01/15 16:55:27  №1573610 436
Аноним 2020/01/15 17:03:29  №1573616 437
>>1572801
Бамп.
Неужто пост настолько тупой?
Аноним 2020/01/15 17:04:48  №1573617 438
>>1573610
И где здесь дичайше разные вещи? Как ты разрыв в зарплате назвал.
Короче, ясно с тобой всё - маняврировать до последнего будешь.
Аноним 2020/01/15 17:11:54  №1573624 439
image.png (149, 500x500)
500x500
>>1573616
Сам перечитывал то, что написал?
Пишешь, что хочешь учить, спрашиваешь что тебе учить. Потом говоришь, что не серьёзно.
Может нам тебя ещё уговаривать начать?

Жаль пикрелейтед с нулевой программача убрали - хорошая ссылка была.
Аноним 2020/01/15 18:48:33  №1573716 440
>>1573561
>> ноду знают неплохо
Скорее хорошо знают предметную область. Разобрался с асинхронностью, событийно-ориентированностью - и вперед, ебашь круды. Промисы завезли. Асинк/авейт завезут, и прости Будда вообще ничем отличаться по написанию кода от пхп не будет. Когда знаешь что делать, понимание как делать приходит на ходу в обнимку с документацией которая у ноды - говно.

Есть конечно детали, и по настоящему сложное что то писать - нужно хорошо платформу знать.

Бля, когда же я отучусь трепать языком на ненужные темы блядь. Пиздец просто.
Аноним 2020/01/15 18:55:03  №1573724 441
>>1573716
>Скорее хорошо знают предметную область.
Ну так
Технологии > язык программирования
Аноним 2020/01/15 20:16:06  №1573795 442
>>1573045
Блин, вот если у меня нет $result, то всё, что между if и endif вообще не появляется, включая html код. То есть идет <form> и потом сразу </form> Так и задумано? Я думал это должно влиять только на пхп код во вставках.
Аноним 2020/01/16 05:44:09  №1573964 443
>>1573531
> те крупные, что используют щас, это легаси, выросшее из стартапа
Ну вот видишь, ты и сам всё понимаешь. Сначала появляются чуваки, у которых нет денег, но есть идея. Им дорого нанимать суперсеньоров и поддерживать долгую но пиздец производительнокачественную разработку на каких-нибудь крестах и они берут по возможности что-то компромиссное между ценой и качеством, зачастую - пыху.
В итоге они или умирают, или раскручиваются и взлетают, становясь ещё одним "легаси проектом на php". Из совсем недавнего, в последний год взлетел Ситимобил. Угадай, на чём он написан с одной попытки?

>>1573520
Серьёзные чуваки есть на любом языке, не передёргивай.

>>1573538
> Для хеловорда порог вхождения совсем разный.
Ну да, да, подловил. Начальный уровень на пыхе действительно проще, всякие вордпрессы, шаблончики, плеск и тд
Но с повышением уровня у пыхи есть симфони-like фреймворки и паттерны, архитектура и базы данных, что как-то сложна, многие идут сосать смузи на фронтенд или "фуллстеками".
Аноним 2020/01/16 06:35:46  №1573986 444
А что такое tpl файлы?
Аноним 2020/01/16 07:09:29  №1573998 445
>>1573986
Как правило, это шаблоны с html-ем и phpшными вставками.
В серьёзном(ТМ) программировании обычно разделяют файлы с логикой (кодом) и файлы с шаблонизацией/рендером html.

>>1573795
Я тыщу лет не использовал пехапешный шаблонизатор, но насколько помню, if'ы ограничивают вообще всё. Условно, представь, что перед каждой строчкой без php-кода, написан echo.
Аноним 2020/01/16 08:39:54  №1574059 446
>>1573998
Блин, ну хреново тогда. Ладно, спасибо.
Аноним 2020/01/16 09:19:32  №1574081 447
>>1573795
Пиши так:
<input value="<?=$result['name'] ?? 'аноним'?>">
и ничего отваливаться не будет.
if тоже убери.
Аноним 2020/01/16 09:42:29  №1574095 448
>>1574081
О, крутой оператор, чет не знал про него, спасибо.
Аноним 2020/01/16 10:21:18  №1574121 449
>>1573048

У тебя может быть версия шрифта с вырезанной кириллицей. Попробуй скачать/сделать (например, на Google Fonts) версию шрифта с кирилицей. Можешь скачать полную версию шрифта, но она скорее всего может быть тяжелой.

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

Вроде как моя мысль логичная и правильная, но везде их используют. Что у верстальщиков в голове, я понять никогда не мог, хотя сам верстал.
Аноним 2020/01/16 10:31:01  №1574131 450
>>1573209

Ты переживаешь по поводу необходимости простановки id, но зачем он тебе нужен? В той же Доктрине объекты прекрасно (кхм) связываются в графы, не имея id.

По коду тут: https://3v4l.org/c81Oi

Делать какие-то сложные функции прямо в сущностях вроде moderate() - плохо, так как там могут понадобиться зависимости, которых в сущности нету.

Наличие 2 разных сущностей для комментария очень все осложняет.

Далее, длинные id тяжелее воспринимать при отладке, чем короткие числа.

Использовать __toString плохо, так как это не позволяет обнаруживать ошибки, когда ты вместо строки передал объект. ты усложняешь обнаружение и отладку багов. Вместо неявного вызова __toString() лучше сделать явный метод asString() и использовать его.

Также, предлагаю тебе придумать, как в большом объеме кода найти все вызовы __toString, чтобы увидеть при рефакторинге, где этот метод используется. Я был бы очень рад такой информации, так как у нас криворучки тоже любят этот метод.

Также, я не очень понял, предлагаешь ли ты запретить невалидные сущности, если предлагаешь, то это неудобно, так как валидатор часто имеет сервисы-зависимости, может лезть в БД и куда-то еще. И его неудобно помещать прямо в сущность. Ну и без невалидных сущностей неудобно обрабатывать неправильно заполненные формы.

Аноним 2020/01/16 10:33:59  №1574133 451
>>1573716

В PHP есть Симфони и Доктрина, и код пишется последовательно, а что в Ноде? Там есть DataMapper, или лишь ActiveRecord?
Аноним 2020/01/16 10:42:50  №1574138 452
>>1573964
>В итоге они или умирают, или раскручиваются и взлетают, становясь ещё одним "легаси проектом на php". Из совсем недавнего, в последний год взлетел Ситимобил. Угадай, на чём он написан с одной попытки?

Да, поэтому нет смысла долгосрочно инвестировать себя в PHP. Если уж очень сильно хочется энтерпрайза, то учить надо не пых с Symfony, а жабу со Spring'ом. Надоест клепать круды и делать очередную абстракцию над абстракцией, можно перекатиться в бигдату, там тоже все на жабе. Надоест бигдата, можно катнуться в скалку с акторами и т.д. И все это делается в рамках одной экосистемы - опыт аккумулируется (а не обнуляется), зарплата растет, общий лвл в профессии монотонно прокачивается без нервов, срывов и кризисов выгорания. Так?
Аноним 2020/01/16 10:43:55  №1574139 453
>>1574133
Sequelize, TypeORM
Но хз, насколько они близки по функциональности к доктрине.
Аноним 2020/01/16 11:08:30  №1574154 454
Не видел ни одной нормальной ОРМ на пхп, все дико тормозит
Аноним 2020/01/16 11:13:36  №1574156 455
>>1574154
ОРМ это для джавы. Там все четко по спецификации JPA.
Аноним 2020/01/16 11:20:16  №1574166 456
>>1574131
>Использовать __toString плохо, так как это не позволяет обнаруживать ошибки, когда ты вместо строки передал объект. ты усложняешь обнаружение и отладку багов. Вместо неявного вызова __toString() лучше сделать явный метод asString() и использовать его.
Вот это сомнительное утверждение.
Вместо специально предназначенного метода предлагаешь всё вручную прописывать. Мартышкин труд какой-то.
Аноним 2020/01/16 11:26:27  №1574175 457
>>1574138
Ну мы сами разберёмся куда нам себя инвестировать, ок? Без твоих советов.
Аноним 2020/01/16 11:31:21  №1574183 458
>>1574175
Стало быть, ответ "да".
Аноним 2020/01/16 11:41:24  №1574190 459
>>1574183
Да как хочешь.

Только съеби со своими советами куда-нибудь в туман.
Аноним 2020/01/16 11:45:21  №1574196 460
>>1574190
Ты ебанутый? Я сам пыхарь, кидаю тему для обсуждения. Так что сам съеби, если нечего по делу сказать.
Аноним 2020/01/16 11:48:34  №1574206 461
>>1574196
Ты недоразвитый, скорее всего, какой-то. Только идиоту может придти в голову завалиться в пхп-тред и начать раздавать советы кому куда себя инвестировать.
Инвестируй себя нахуй.
Аноним 2020/01/16 11:59:17  №1574213 462
>>1574138
Если ты хочешь прямо сейчас пойти работать в крупную корпорацию - да, конечно, учи джаву.
У меня, например, есть знакомые сеньоры, которые на дух не переносят корпорации. Работают в стартапах и небольших денежних компаниях, на той же пыхе.
Аноним 2020/01/16 13:13:10  №1574279 463
>>1574196
Ну если пхп это "форк" джавы, то потенциально значит что и перекат будет сильно проще.
А вообще, мне кажется что сильно уверенному в себе мидллу+ любой перекат дасться легко.
Ну а если ты пять лет на пхп для битрикса писал - ну хуле тут скажешь. Тоже ниша.
Аноним 2020/01/16 13:52:36  №1574328 464
Как лучше сделать соединение с базой данных в bootstrap файле? Подключение идёт в переменную, и брать в классах как $GLOBALS['connection'], или передавать переменной? Или я совсем не правильно это понял?
Аноним 2020/01/16 15:48:00  №1574487 465
>>1574328
Глобальные переменные - зло.
Я хз, какое конкретно задание ты выполняешь (так что могу сейчас всё для тебя усложнить), но по-правильному нужно класть коннект в DI-контейнер и потом инжектить его во все сервисы, где тебе нужна работа с базой.
Аноним 2020/01/16 15:51:53  №1574492 466
>>1574487
Я делаю студентов (из ОП поста). В общем подумал так - сделаю общий DataGateway, где создается подключение через __construct и удаляется через __destruct, и наследоваться от него, например в StudentDataGateway
Аноним 2020/01/16 16:06:03  №1574504 467
>>1574487
Не путай человека. DI - это не категорическое требование. Это вариант.
Пусть сначала с PDO подрочится, с моделями.

>>1574328
Сделай отдельный класс DB. В нем создай подключение pdo, и сделай пару методов. Типа просто поиск по sql, с возвращением значения, без возвращения. Дефолтный поиск всех строк. DB можно сделать синглтоном, тупо для опыта. Так называемые "антипаттерны" тоже нужно поиспользовать, что бы понять где они нужны а где нет.
И уже от этого класса наследуй класс какой нибудь модели.
Я что то типа такого делал.
Аноним 2020/01/16 16:22:14  №1574515 468
>>1574504
>Не путай человека.
Но вообще он прав насчёт глобальных переменных, а DI-контейнер тупо удобен и пишется за 2 метода в 5 строк.
Аноним 2020/01/16 16:39:55  №1574522 469
>>1574515
Я и не спорю с тем что он прав. Но настоящее понимание придет ток когда сам дорастешь. Для этого придется и покосячить, когда поймешь чем плохо одно - гораздо лучше понимаешь чем хороша альтернатива.
Аноним 2020/01/16 16:54:03  №1574528 470
>>1574522
Помню когда своих студентов писал, то 3 раза переписывал пока не пришёл к чему-то похожему на слим. Перепробовал всякое на нём - фабрики, роутинг в yii стиле, синглтон, реестр, чёрта лысого. Месяца 4 игрался по вечерам.
Потом забавно было встречать это у других разработчиков на известных проектах.
Аноним 2020/01/16 17:19:58  №1574543 471
>>1574131
>Ты переживаешь по поводу необходимости простановки id, но зачем он тебе нужен?
Ну это демагогия. Id нужен для идентификации. Если ты будешь оличать комментарии по тексту, то текст станет твоим Id.

>Делать какие-то сложные функции прямо в сущностях вроде moderate() - плохо
>так как там могут понадобиться зависимости, которых в сущности нету.
Хз откуда ты это взял. И что заничт нету? Если нужен какой-то сервис, то он просто передается в конструктор или в метод. Понятно что "сервис" это интерфейс, определенный в домене, но на его реализацию в целом похуй.

>Вместо неявного вызова __toString() лучше сделать явный метод asString()
Ну вообще я согласен, использовать __toString() плохо. Использовать рефлексию еще хуже, но DI контейнер без неё не напишешь. Код, в котором я использую __toString() очень низкоуровневый. Он пишется один раз на проект и никогда не рефакторится. Класс Id вообще должен быть абстрактным. В идеале в такие же примитивы оборачиваются все значения, которые используются в домене.

>Также, я не очень понял, предлагаешь ли ты запретить невалидные сущности
>если предлагаешь, то это неудобно, так как валидатор часто имеет сервисы-зависимости, может лезть в БД и куда-то еще
Ты валишь все в кучу. Есть форма для пользовательских данных, и есть валидаторы этих данных. Если что-то там не валидно мы возвращаем пользователю ошибки. Лезут ли эти валидаторы в БД в общем-то до пизды.

А есть наша модель доменная охуенная. Не модель в смысле объект Comment, а модель в смысле совокупность объектов. Каждый объект или метод в ней - это набор правил. И если вот эти правила нарушаются, то это уже Exception. Мы формулируем уравнение, как ты писал "статически корректное", которое потом проверяем подставляя в него значения.
Если модель после всех манипуляций с ней не ебанулась с ошибкой, то мы получаем из модели состояние опять рефлексия. И сохраняем его. Или не сохраняем, а генерим события. Или сохраняем и генерим события. Это уже не важно, потому что мы абстрагировались от хранилища данных и можем себе позволить любую хуйню.
Аноним 2020/01/17 04:42:19  №1575112 472
>>1574121
>Что у верстальщиков в голове, я понять никогда не мог, хотя сам верстал.
Заказчик говорит "Сделай ИМЕННО эти шрифты".

И вырезанной кириллицы нет. Это именно те же самые файлы шрифтов. Взятые из одного проекта и добавленные в другой.
Аноним 2020/01/17 05:37:55  №1575127 473
Аноны, а можно ли стать фрилансером или удаленщиком сразу, минуя мучительные годы работы в офисе? Я просто хочу стать программистом только для того чтобы не ходить в офис. Готов работать больше и за меньшие деньги, чем получаю сейчас, лишь бы никогда не выходить из дому...
Аноним 2020/01/17 06:08:35  №1575133 474
>>1574131
> Также, я не очень понял, предлагаешь ли ты запретить невалидные сущности, если предлагаешь, то это неудобно, так как валидатор часто имеет сервисы-зависимости, может лезть в БД и куда-то еще. И его неудобно помещать прямо в сущность. Ну и без невалидных сущностей неудобно обрабатывать неправильно заполненные формы.
Ты не совсем прав, смешивая ответственности.
"Валидность" - это результат работы валидатора, а не состояния сущности.
Валидатор же и юзер не должны в принципе иметь никакого состояния.
Напишу быстрым псевдокодом:
$user = $userFactory->load($request->get('id'));
$changedUser = applyRequestToUser($user, $request);
$errors = $userValidator->validate($changedUser);
if count($errors) > 0 {
return new ErrorResponse($errors);
}

>>1574166
Нет, чувак мыслит в правильном направлении. Это не мартышкин труд, это конкретизация кода. Более того "asString" - тоже неправильно, потому что у объекта может быть множество строковых представлений. Json/debug output/serialized/xml/тд.

Аноним 2020/01/17 06:18:11  №1575138 475
>>1575127

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

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

Аноним 2020/01/17 06:23:03  №1575143 476
>>1575127
В двух словах - можно, но будучи удалёнщиком или (тем более) фрилансером ты обречешь себя на существование на том уровне, на котором ты есть сейчас. Обучение с учителем намного эффективнее, а без учителя в одиночку разбираться в разработке с нуля - это пиздец, как сложно.
Плюс, очень разные задачи. Удалённые джуниоры вынуждены конкурировать с индусами в работе за еду и ничего толкового им не дадут. А сами они выучиться не смогут, потому что смотри предыдущий пункт.
Поэтому самый нормальный выход - поработать хотя бы несколько лет в офисе и уже набравшись опыта, сидеть дома и выгорать, не выходя на улицу.
Сорян, анон, этот мир жесток и полон людей, с которыми приходится взаимодействовать. Хикки никому не нужны.
Аноним 2020/01/17 10:36:26  №1575311 477
>>1575143
>>1575138
А как быть хикарем и не залезать на плечи общества/мамы? Я просто ненавижу офис. Считаю что это самое худшее что может быть.
Аноним 2020/01/17 10:55:07  №1575328 478
>>1575311
Понять, что один в поле не воин и мир на самом деле устроен так, что добиться чего-то можно только коллективным трудом и ты или умеешь взаимодействовать с этими странными псевдоразумными биороботами, которыми он населён - или нет, но тогда извиняй, для полноценной жизни ты непригоден.
Это нормально с точки зрения популяции, иногда особи рождаются с отклонениями, в том числе и в социальном плане. В животном мире такие обычно живут вне стаи и быстро погибают.
Аноним 2020/01/17 11:20:29  №1575365 479
>>1575328
Так я не против трудиться коллективным трудом, я против общества ничего не имею. Просто очень устаю в этом офисе ебаном и не из за работы, а из за людей. Я ведь просто хочу работать из дома. Я же не против труда.
Аноним 2020/01/17 11:36:56  №1575379 480
>>1575365
Ты против коллективного труда. Ну что сказать, тебе не повезло, твоя стартовая позиция значительно сложнее, чем у многих других, бывает.
Можешь попробовать работать из дома, но по моему опыту, джун на удалёнку - это очень сомнительная затея.

Видишь ли, на джуна компания тратит больше, чем он ей приносит. Потому что платить она тебе будет, условно, 50к (зависит от региона), пользы ты будешь приносить на 20к, вреда на 20к (потому что множество багов, недоработок и так далее) и ещё придётся отвлекать тимлидов и прочих сотрудников на помощь, советы, ревью и так далее (а их зарплата в 3 раза больше твоей) - это ещё 50к расходов. В итоге 50+20+50-20=100к расходов несёт компания на среднего джуна, в течение минимум года, а обычно - даже больше. Это означает, что компания вложит в тебя где-то миллион-полтора ещё до того, как ты хотя бы начнёшь отбивать потраченные на себя деньги (а ведь ты можешь заболеть, уйти, заняться диверсиями, оказаться тупым и так далее).
И в случае с удалёнкой эти риски возрастают, так как коммуникация страдает, ты медленнее растёшь, хрен проверишь, что ты там делаешь и прочая и прочая.
Короче, ты и так в невыгодной для себя позиции (вынужден просить компанию инвестировать в себя миллион под честное слово), так ещё и с сомнительными хотелками, которые увеличивают риски компании получить убытки вместо прибыли.
Почти никто так делать не будет короче.

А насчёт фриланса тебе уже выше объяснили, будешь работать за еду и с анальным досмотром, без перспектив.
Аноним 2020/01/17 11:40:02  №1575381 481
>>1575379
> Ты против коллективного труда
Ну наверное тебе виднее против чего я.

Понял тебя, спасибо что разжевал.
По сути, у меня нет амбиций. Работа за еду из дома это же чистый рай на земле.
Аноним 2020/01/17 11:56:51  №1575401 482
>>1575381
> По сути, у меня нет амбиций. Работа за еду из дома это же чистый рай на земле.
Скорее всего, ты просто ещё молод и не проникся тем, насколько перманентно вокруг нас происходит пиздец. Если ты работаешь за еду, то ты зарабатываешь практически столько же, сколько и потребляешь.
А это означает, к примеру, отсутствие накопления запаса "на чёрный день". Заболят зубы - ты или потратишь на них 20к, или их лишишься (без качественных протезов потому что) или умрешь от боли. Воспалится аппендикс - пролежишь месяц на больничном, никто тебе на фрилансе платить деньги за это не будет, так что будешь работать прямо с больничной койки или умрешь с голоду. И так далее.
Аноним 2020/01/17 12:52:50  №1575469 483
Подскажите что тут не так? Мне нужно что-бы выводилась таблица умножения чисел на самих себя до 9. https://ideone.com/7cqfq2
Аноним 2020/01/17 13:14:56  №1575513 484
>>1575469
Очевидно, проблема где-то в днк. Вероятнее всего образовалась лишняя хромосома, но, может, просто что-то с кодированием белков.
У тебя $number не меняется нигде
Аноним 2020/01/17 14:07:04  №1575606 485
Аноним 2020/01/17 14:11:09  №1575614 486
>>1575606
Пользуйтесь блять нормальной IDEшкой, она вам подсветит всё.
У тебя опечатка, comDice1 vs compDice1
Аноним 2020/01/17 15:26:34  №1575647 487
15012463671730.jpg (54, 500x379)
379x500
Аноним 2020/01/17 15:29:45  №1575650 488
>>1575647
Ты выводишь строкой то же число, а не результат операции. Попробуй использовать конкатенацию.
Аноним 2020/01/17 17:29:12  №1575738 489
>>1575647
Дайте мне уже ответ готовый, я тупой дегенерат и ни слова не понял попробуй использовать конкатенацию из того, что сказал этот - >>1575650 анон.

Аноним 2020/01/17 18:17:03  №1575800 490
Аноним 2020/01/17 18:18:02  №1575802 491
>>1575647
У меня вообще не открывает по ссылке код. Кинь другим сайтом плз
Аноним 2020/01/17 18:20:00  №1575805 492
Аноним 2020/01/17 20:33:42  №1576000 493
>>1575127
фриланс лучше использовать максимум для подработок. Аноны выше правильно расписали все минусы