• "Частая" смена работы. Нормально ли это?

    @antonwx
    "Бегунков" не любят те шарашкины конторы, от которых есть поводы бегать. Если же фирма нанимает специалиста и предлагает справедливые условия труда и оплаты и адекватное руководство, то такая фирма знает, что действительно хороший специалист не будет иметь повода уйти кроме личного. Так что это даже плюс, своеобразный дополнительный фильтр тех, с кем связываться не стоит.
    Ответ написан
  • Лучшее решение для генерации PDF/Word под Laravel?

    @arteezy
    https://mpdf.github.io/
    Я это использовал. Нужно было генерть календарь бронирования помещений. Для PDF вообще идеально
    Ответ написан
  • Лучшее решение для генерации PDF/Word под Laravel?

    Tomio
    @Tomio
    backend developer (python, php)
    knp-snappy - прекрасный вендор для генерации PDF как из html, так и из указанного урла, с сохранением всех стилей, ссылок, картинок и пр. Единственное, что заметил, - он не понимает css стиль display: flex =) В остальном всё супер. Можно сделать вывод в файл, мгновенное скачивание, и рендер на экран.
    Ответ написан
  • Где найти единомышленников по веб-разработке?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    и личного роста

    сбежать с фриланса и пойти на фуллтайм, желательно не удалённый, в контору где пишут качественный код
    Ответ написан
  • PHP: с чего начать, как учить и что в итоге знать?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    На первые несколько пунктов попробую написать рекомендации в свободной форме.


    Первое и самое главное — чтобы хорошо изучить программирование на РНР, надо хорошо изучить программирование. Это очень важная вещь. Большая часть людей, пишущих на РНР, не имеют ни малейшего представления о программировании. Даже о таких базовых вещах, как форматирование кода, отладка, профайлинг, обработка ошибок, файловые операции. Можно заметить, что я не говорю об ООП. Это совсем отдельная тема, ООП надо учить специально. К сожалению, из 100 человек, которые говорят, что знают ООП, 90 являются банальными копипастерами, выучившими синтаксис, но не понимающими смысла объектов. Но чтобы играть в шахматы, недостаточно знать, как ходят фигуры.


    Ещё неплохо бы ответить себе на вопрос — для чего ты хочешь выучить программирование на РНР? Вопрос совсем не праздный. Многие люди смешивают в нем кучу разных понятий. К примеру, здесь уже упоминали CMS. и действительно, если речь идёт о зарабатывании денег, то кастомизация Джюмлы и написание к ней говномодулей в финансовом плане куда более выгодны, чем умение писать что-либо с нуля. Для фриланса, во всяком случае.

    Вообще, РНР можно использовать очень по-разному. И для каждого случая это будет свой язык.
    • Можно склепать гостевую или сайт-визитку на «голом» РНР — и ничего плохого или позорного в этом нет. Наоборот — это плюс языка, который годится и для таких целей, не таща за собой пару миллионов строк кода ради сайта из пятисот.
    • Можно написать профессиональный портал, взяв за основу какой-то из существующих фреймворков, и заниматься его развитием.
    • Можно написать кастомный хайлоад проект, для которого нужно будет писать собственный фреймворк опять на голом РНР.
    • Можно, как уже говорилось, клепать сайты на основе какой-нибудь ЦМС.


    Вариантов масса! поэтому нужно определиться сначала, чего хочется.


    Там выше говорили про JS+CSS — не надо слушать, это полная ерунда. Фронтенд программирование — совсем отдельная вещь, куда больше визуальная, чем абстрактная. И, слава богу, все больше работодателей начинают понимать это. Хотя опять же — если фрилансишь и на все руки мастер — то без этого никуда.

    Но если работать хардкорным серверным программистом в команде, то об HTML/JS/CSS нужно иметь только общее представление (поскольку тексты на этих языках являются, вообще-то, практически единственным результатом работы РНР).


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


    Теперь по остальным

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

    Фреймворки — обязательно. Тут, правда, стоит проблема выбора, но принципиальной разницы между ними нет. Yii — неплохой выбор.

    Гитхаб тебе не нужен, знать его не обязательно. Знать надо git.
    А вот что является обязательным для веб-программиста — это умение пользоваться гуглем. Хотя бы на уровне умения скопипастить в поисковую форму сообщение об ошибке или написать вопрос «Что такое git» ;-)

    Потому что для работы в команде какую-либо систему контроля версий знать надо, а git является стандартом де-факто. Понимать принцип работы и базовые команды — чекаут, коммит, пуш.
    Ответ написан
  • Время интернет-магазинов прошло?

    alexyarik
    @alexyarik
    Битрикс разработчик
    Вы верно подметили для малого / среднего бизнеса и для этого есть предпосылки:
    1) Спад Российской экономики шестой год подряд. Меньше денег, меньше покупают
    2) За 2019 закрылось более 700 000 предприятий (ИП и т.д.), за 2018 год закрылось 300 000 предприятий
    3) Гораздо реже стали открывать новый бизнес
    4) Повышение НДС, онлайн-кассы, сборы давят продажи.
    5) Способов привлечения трафика больше не стало, как и его удешевления не наблюдается. Яндекс совсем обнаглел, стал хуже Гугла. Золотая реклама в директе, бриллиантовое продвижение в поиске.
    6) Покупательский спрос сильно упал, все прогнозы на 2020 год об ещё большем падении спроса.
    7) Старт интернет-магазина для малого бизнеса стал дороже
    Речь идёт про 2018, но не думаю, что в 2020 ситуация по цене старта стала дешевле.
    8) Трудно конкурировать с крупными игроками. Например, по доставке и по оптовым ценам. Оптовая цена закупки для малого бизнеса напрямую зависит от объёмов. В том же беру доставка 100 рублей, у частного интернет-магазина не будет такой цены доставки.
    Ответ написан
  • Как правильно экранировать символы в SQL запросы, если нужно отправить HTML-код?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    HTML никак специально экранировать не нужно. И вообще ничего экранировать не нужно. Экранирование - это треш, угар, прошлый век и инъекции. Данные в БД надо просто посылать отдельно от запроса.

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

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

    Чтобы вставить данные в mysql, и вообще никогда не думать ни про какое "экранирование", надо
    1. Все переменные в запросе заменить на знаки вопроса
    2. Подготовить запрос к исполнению
    3. Привязать переменные к знакам вопроса
    4. Выполнить запрос.

    Как я уже говорил, функций, которые начинаются на mysql, в языке давно нет. Остаются только те, которые начинаются на mysqli и PDO. Вот для них я и приведу примеры.

    mysqli
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменем
    $stmt = $mysqli->prepare($query); // подготавливаем
    $stmt->bind_param("ss", $type, $reporter); // привязываем
    $stmt->execute(); // исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение mysqli
    PDO
    $type = 'testing';
    $reporter = "John O'Hara";
    $query = "INSERT INTO contents (type, reporter) VALUES(?, ?)"; // заменяем
    $stmt = $pdo->prepare($query); // подготавливаем
    $stmt->execute([$type, $reporter]); // привязываем и исполняем

    Важно! Чтобы этот код работал, сначала надо правильно установить соединение PDO

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

    Используйте метод updateOrCreate. В последнем абзаце раздела написано, что этот метод можно использовать в отношениях.
    Пример.
    $post = Post::find($id);
    $post->comments()->updateOrCreate(['user_id' => 2], ['is_verified' => 1, 'level' => 0]);
    Ответ написан
  • Стоит ли хранить зашифрованные данные пользователя в Local/Session Storage на клиенте?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Это просто идеальная иллюстрация к известному высказыванию Дональда Кнута "Преждевременная оптимизация - корень всех зол".

    Сначала высасываем из пальца проблему: "тратится время на обращение к бд". Сколько там его тратится, тратится ли вообще, замедляет ли это систему, является ли вообще это проблемой - все эти вопросы нам неинтересны. Мы хотим грудью на амбразуру, стать героем и получить медальку.

    После этого начинаем проблему решать.
    Значит, чтобы сэкономить время на запросе к базе, которая обычно лежит локально и обычное обращение занимает микросекуны, мы решаем закэшировать данные на клиенте. Который может быть в тысяче километров, а пинг в сотни миллисекунд - не редкость. И вот мы решаем что клиент будет с каждым запросом отправлять массив данных. Причем таких данных, которые на сервере и так. есть. Гениально!

    Стоит ли так делать и почему;
    не стоит потому что не надо высасывать проблемы из пальца.
    Какой будет прирост производительности
    Отрицательный
    Как Вы решаете подобные вопросы.
    МЫ ИХ НЕ РЕШАЕМ.
    Мы решаем реальные проблемы, объективно существующие.
    А воображаемые проблемы высосанные из пальца решать не следует.
    Ответ написан
  • Актуально ли создание небольших сайтов и магазинов в качестве подработки?

    @Sergey750il
    Сейчас очень много сервисов на которых даже далекий от IT человек, сможет собрать годный сайт для мелкого бизнеса.
    Ответ написан
  • Какая вставка в бд будет быстрее? Задать в insert значения к столбцам либо использовать default?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Господи, опять оптимизируем несуществующие проблемы

    Десятки тысяч в минуту это вообще не о чём.
    На моей рабочей пукалке с дешевым ХДД 10 тысяч вставляются за пол-секунды. Обычными подготовленными запросами.
    На нормальном сервере с SSD будут сотни тысяч. в секунду. про минуты вообще речи не идет.

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

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

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Вообще, паранойя должна быть профессиональнам заболеванием программистов, так же как и шахматистов.
    Но не до такой же степени!

    Я даже сосчитать не могу, по скольким параметрам этот вопрос дурацкий, начиная от юридического термина "присвоить общедоступный код(!)" и заканчивая тем фактом, что код - не симфония Пушкина "Приплыли", которую будут переиздавать 20 лет. Уже через пол-года ты не сможешь без стыда смотреть на свое творение, и чтобы не сгореть со стыда, будешь его переделывать. Через год он уже не будет работать на новй версии пхп и вообще станет никому не нужен. А как его добрабатывать - ты его уже защитил? Если переписывать - это уже другой код будет.

    Но если отвечать в лоб, то в мире открытого программного обеспечения есть такое понятие как лицензия. Которая может прямо оговаривать невозможность копирования кода отдельно от лицензии. И вот в лицензии можешь самоудовлетворять своё эго сколько угодно. Поскольку больше ни для чего другого все равно она не нужна.
    Ответ написан
  • Как уже на собеседовании понять, какое в компании качество кода?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    Хочется сказать - скажи.
    Только учти, что тогда никакой работы не найдёшь, везде есть говнокод
    Ответ написан
  • Какой язык программирования для Back-end производительнее?

    FanatPHP
    @FanatPHP
    Чебуратор тега PHP
    Ну да, ну да.
    Википедия, фейсбук, порнхаб - все эти сайты жутко лагают и вообще лежат не поднимаясь.
    А наш диванный специалист по социальным сетям, который и гостевую-то написать не может не запутавшись в двух строчках, вещает про зашквар и проблемы с производительностью.

    Ничего в мире не меняется, Моцарту тоже приходилось отвечать на подобные вопросы.
    Ответ написан
  • Как защититься от html и xss атак в laravel?

    @Kostik_1993
    Fullstack Web Developer | PHP | Laravel | Vue.js
    Очередной вопрос из серии ничего не вижу и Гугл не даёт ответ. У Laravel есть документация, в ней есть раздел шаблонизатора, скажите, вы обратили внимание на разницу написания переменных? Если нет советую пойти почитать ещё раз!
    P.S. {{ }} {!! !!}
    Ответ написан
  • Дельные советы по резюме?

    vt4a2h
    @vt4a2h
    Senior software engineer (C++/Qt/boost)
    Дельные советы по резюме?

    Удалить. После этого идти учиться.

    Честно признаться, я бегло посмотрел ваш код на плюсах. Моя оценка: я бы даже на стажировку не взял. Основываясь на резюме и примерах кода, у вас просто нет релевантных профессии знаний.
    Ответ написан
  • Вид интернет бизнеса?

    Zoominger
    @Zoominger
    System Engineer
    Подскажите что можно придумать для подработки в интернете с

    Продавать "бизнес-пакеты" для заработка в Интернете.

    Ответ: ничего. Абсолютно.
    Ответ написан
  • Как получить из static наследника к protected и public переменным?

    @davidnum95
    В статическом методе нельзя обращаться к полям класса. Ответ: никак.
    Ответ написан