• Нормальна ли практика работы с шаблоном для веб разработчика?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Разница есть прежде всего для заказчика. Разница между использованием готового шаблона и индивидуального дизайна такая же, как между покупкой костюма в магазине и пошивом на заказ. Даже лучший магазинский костюм никогда не будет сидеть так же хорошо, как сшитый конкретно под заказчика. Со стороны исполнителя порядочно предупреждать заказчика получает ли он индивидуальный продукт или ширпотреб и выступаете ли вы в данном процессе изготовителем продукта или просто перепродажником.
    Ответ написан
    Комментировать
  • Почему не работают ссылки на локальном сервере laravel?

    @Kostik_1993
    Web Developer
    URL Generation
    Route URL Generation & Extra Parameters
    In previous releases of Laravel, passing associative array parameters to the route helper or URL::route method would occasionally use these parameters as URI values when generating URLs for routes, even if the parameter value had no matching key within the route path. Beginning in Laravel 6.0, these values will be attached to the query string instead. For example, consider the following route:
    Route::get('/profile/{location}', function ($location = null) {
        //
    })->name('profile');
    
    // Laravel 5.8: http://example.com/profile/active
    echo route('profile', ['status' => 'active']);
    
    // Laravel 6.0: http://example.com/profile?status=active
    echo route('profile', ['status' => 'active']);


    Взято как ни странно тут

    Собственно так все будет работать
    $banner = \App\Banner::find(1);
    Route::resource('banners', 'BannerController');
    echo  route('banners.show', $banner);
    
    $photo = \App\Photo::find(1);
    Route::resource('banners.photos', 'BannerPhotosController');
    echo route('banners.photos.show', [$banner, $photo]);


    Кстати ['name' => 'banners.*'] это лишнее, по дефолту у вас и так будет задано имя указанное первым аргументом
    Ответ написан
    Комментировать
  • Как вывести файлы в каталоге linux, но без лишней информации?

    moropsk
    @moropsk
    man ls
    Ответ написан
    Комментировать
  • В PHP канонично сначала проверить, потом сделать или попробовать и обработать ошибку?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    В таком примере, как вы привели, if() проверяет только условие существования файла или директории. А try-catch обработает бОльшее число ситуаций: если это не файл, а директория, если права не позволяют читать, если устройство гакнулось и не прочиталось.
    пример автора вопроса
    # Вариант 1:
    f getFileContent(filename){
      if (!file_exists(filename)) {error: file not found}
      return file_content(filename)
    }
    
    # Вариант 2:
    f getFileContent(filename){
      try return file_content(filename)
      catch FileNotFoundException {error: file not found}
    }


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

    Условные операторы только для локальной логики внутри функции. Отлов исключений может иметь многоуровневую иерархию вне функции, класса. Например, случай не файла-а-папки отловится в одном, а случай нечитаемого сломанного устройства – на самом верхнем уровне всего приложения. И по-разному будут обработаны.

    Внешние материалы по теме:
    1. Пост по теме (на англ.)
    2. скорость выполнения с исключениями и без (без быстрее)
    3. Exception patterns, в частности:


    Ответ написан
    6 комментариев
  • В PHP канонично сначала проверить, потом сделать или попробовать и обработать ошибку?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Очень хороший вопрос и тема, в которой самое чудовищное количество самых дремучих северий на единицу кода.

    В общем случае, по умолчанию, никаких проверок и траев с кетчами быть не должно.

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

    Пример: В обоих приведенных выше случаях мы имеем масло масляное: попытка подменить пхп в выборосе ошибки. Вопрос - зачем? Если файл не найден, то РНР сам прекрасно сообщит нам об ошибке, причем в подробностях, и скажет в чем конкретно заключается проблема. А по строчке "file not found" иди гадай - путь ли кривой или в имени файла опечатка, или вообще пустоту передали.

    Любые проверки надо делать только тогда, когда есть осмысленный сценарий их обработки.

    И обсуждать выше приведенные примеры имеет смысл только если автор вопроса предоставит такой сценарий. тупое error: file not found таким сценарием не является. Так что в общем случае оставляем код в покое и не устраиваем никакого карго культа из перехвата ошибок.

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

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

    Но повторюсь, если нет никакого осмысленного сценария обработки ошибки, то ловить её не надо.
    Ответ написан
    6 комментариев
  • Как перестать говнокодить и принимать неверные архитектурные решения?

    miraage
    @miraage
    Старый прогер
    как писать поддерживаемый код?

    Если уж очень коротко, то соблюдать SOLID/GRASP. Мне понравился твит одного из авторов React Router:
    https://twitter.com/mjackson/status/1171524189850701825

    Most common mistake software developers make: putting stuff in the wrong place. Coupling responsibilities and concepts that should be kept separate.
    For me, this is 95% of software development. Just figuring out *where* things belong.


    Что гуглить, что учить?

    Фундаментальные знания, вроде вышеупомянутых SOLID/GRASP, паттерны (не только классические паттерны, но и вообще, общеизвестные решения определённых задач), базовые структуры данных. Фреймворки/библиотеки всегда будут приходить/уходить, что-то будет забываться. А фундаментальные знания всегда актуальны.

    Может литературу какую почитать посоветуете?

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

    Можно ли себя называть миддлом, если твой код говно?

    Не пытайтесь себя оценить. В каждой компании свои понятия миддла. А если кто-то 35 лет на лиспе кодил, а потом прыгнет на Angular - кто он, джун или сеньор?
    И, да, все мы в какой-то степени пишем говнокод. Если кто-то Вам доказывает, что он пишет супер чистый код - не слушайте.

    И ответ на главный вопрос.
    Как перестать говнокодить и принимать неверные архитектурные решения?

    Это невозможно. Все проекты, которые чуток сложнее CRUD-ов, рано или поздно обрастают говнокодом. Никто не пишет идеальный код. Код должен работать и решать проблемы бизнеса.
    Ответ написан
    6 комментариев
  • Как Вы вносите размер комиссий Апворка в доходы?

    @vism
    Ваш бухгалтер ошибается.
    Ваш доход это то - что в итоге упало на счет, то что будет проходить валютный контроль.
    Комиссия апворка это их доход и с него они плтатят НДС.

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

    Меняйте срочно бухгалтера, понабрали студентов там каких-то
    Ответ написан
    Комментировать
  • Как вы проектируете классы в ООП и их взаимодействие?

    @xfg
    В PHP сообществе вообще не развиты вопросы проектирования и архитектуры. Большинство лепит, что придумает. PHP изначально родился для примитивных homepage, вобрал в себя всю несерьезность, низкий порог входа и как следствие довольно слабое комьюнити, что часто становится объектом для шуток.

    Искать ответы на вопросы проектирования и архитектуры нужно в Java. Например там почти каждый с самых азов слышал о де факто ставшей стандартом слоистой архитектуре, она же layered architecture, она же n-tier architecture и видел изображение похожее на это
    main-qimg-91d7188a63a833488f92239028d0ae
    Из которой нужно понять, что всю программу можно разделить на несколько слоев и зависимость между слоями должна быть направлена сверху вниз, но не наоборот. Таким образом, например фреймворк может быть инкапсулирован в presentation слой и в любой момент безболезненно заменен на другой, так как другие слои ничего о нем не знают. Вся бизнес-логика инкапсулирована в domain слой в виде plain old java object, который не зависит вообще не от чего, а также предоставляет интерфейсы (репозиториев например) для инфраструктурного слоя и только в этом слое фактически и будет тот самый настоящий ООП, который все так упорно пытаются найти. Никакого стороннего кода в бизнес-логике нет, а соответственно весь сторонний код можно в любой момент поменять, не трогая бизнес-логику вообще.

    Для этого нужно открыть какую-нибудь книгу, где за руку проведут с нуля до конкретного приложения построенного с использованием этой архитектуры. Например Implementing domain-driven design, хоть эта книга и о DDD, но я уже говорил, что слоистая архитектура это де факто. С опытом, будет понятно, что в более простых приложениях количество слоев можно уменьшить, понимая на какой компромисс придется пойти, что иногда можно объединить domain и часть infrastructure и получить всем известный шаблон Active Record или вообще выбросить эти слои и получить шаблон transaction script, когда для решения просто не требуется что-то более сложное. Придет понимание, как можно начать с transaction script и в итоге постепенно катиться в сторону domain layer, через active record или не через active record если это когда-нибудь понадобится и тому подобное. Cтанет понятно, зачем, как и когда использовать патерны о которых написал Мартин Фаулер в своей книге Patterns of Enterprise Application Architecture.

    Полученные знания можно применить к любому языку. В том числе и PHP. Будет хорошо, если уровень этого сообщества хоть чуть-чуть будет подтягиваться к уровню Java, вместо того чтобы бомбить пятиуровневые ифы создавая такую цикломатическую сложность, что все метрики кода горят ярче красного.
    Ответ написан
    Комментировать
  • Как создать приложение - задачник (mvc приложение на чистом php)?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Не бездарна, просто не уделили еще достаточно времени пониманию работы приложений и реальному ООП) Но этим стоит заняться - книги есть, видеокурсы есть.
    Примеры приложений можно поискать.
    Что здесь нужно?
    1. Точка входа (index.php), которая будет перенаправлять на реальную страницу
    2. Способ сопоставления роута с реальным экшеном контроллера
    3. Группа классов контроллеров
    4. Группа классов моделей (сущностей)
    5. Группа шаблонов (вьюх)
    6. Другие группы классов (сервисы, модули и т.п.) по необходимости
    Если совсем трудно без фреймворка, попробуйте влоб написать процедурный php для решения задачи, потом вычленять код в методы и классы с конкретным предназначением. Почитайте в документации знакомого Вам фреймворка раздел про жизненный цикл запроса и разберите все по полочкам. Успехов!)
    Ответ написан
    1 комментарий
  • В каком стеке web технологий одновременно: высокий порог входа, высокие зарплаты и в целом не проблема найти удалёнку?

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

    Развивайтесь в сторону создания более сложных вещей - там и технологии поймутся.
    Более сложные - это всевозможные веб-приложения, забудьте о сайтах.
    А приложения могут быть уже какими угодно и с большим разбросом по сложности - может быть CRUD админка которую любой индус накидает, а может быть какая-нибудь замороченная система бизнес-аналитики, где кнопки в браузере - это только 10% от всего функционала, и это одна из причин почему ищут фуллстеков. Фуллстек в состоянии взять фичу и сделать её полностью, а не "накидать кнопок и ждать бекенд" или "сделать апишку и отдать фронту".
    Ответ написан
    14 комментариев
  • Чем отличается react от vue, основное отличие?

    0xD34F
    @0xD34F Куратор тега React
    у одного пять букв в названии, у другого три

    освойте js, и подобные вопросы перестанут вас волновать
    Ответ написан
    Комментировать
  • Могли бы вы поделиться хорошим техническим заданием на разработку сайта/веб-приложения?

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

    Так, например, если вы работаете с государственным или окологогосударственным заказчиком/исполнителем, весьма вероятно, вам придётся подготовить ТЗ в соответствии с требованиями ГОСТ-19 и 34 (в особенности ГОСТ 34.602-89 и ГОСТ 19.201-78), которые предполагают создание очень формальных и подробных документов.

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

    Для какой-нибудь дизайнерской разработки (стиль, лого, графика), когда велика изначальная неопределённость, что же требуется сделать, лучшим вариантом может являться вообще достаточно общий бриф.

    Резюмируя: определитесь с требованиями к ТЗ, а, отталкиваясь от них, уже можно искать какие-то варианты.
    Ответ написан
    Комментировать
  • Где посмотреть\почитать нормальные уроки по ООП в PHP?

    php666
    @php666
    PHP-макака
    Надо не уроки смотреть всяких идиотов, а читать книги людей, чье мнение признано сообществом и которые написали книги.
    Гради Буч - для освоение сути ООП
    Мартин Фаулер - про архитектуру, про CRUD, про доменные объекты. Одной этой книги достаточно, что бы прокачать себя так, что ни один видеокурс в жизни не сделает.

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

    20ivs
    @20ivs
    Пользователь пока ничего не рассказал о себе.
    они такие волшебные могут работать чуть ли не круглые сутки

    годами работают. что сервера, что сетевое оборудование. это тебе не твой домашний тп-линк, которые ходишь перезагружать каждые полчаса.
    5d5fa8b10d265281274902.png
    5d5faaa669196090353395.png
    Ответ написан
    4 комментария
  • Является ли это вирусом?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Файл лежит в AWS и срок получения его по данной ссылке вышел. Никакой магии
    Ответ написан
    9 комментариев
  • Почему не работает elseif в цикле?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    бардак в коде, которого можно было бы избежать, если использовать нормальную иде и нормальное форматирование кода. Фор влез в иф, елсиф внутри этого фора... короче, выписать ремня и нормально отформатировать.
    Ответ написан
    Комментировать
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

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

    Поэтому надо выкинуть эти фантазии из головы и заняться чем-нибудь полезным.
    Ответ написан
    13 комментариев
  • Какое самое удобное бесплатное api для поиска картинок?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    с правильной лицензией
    бесплатно
    https://pixabay.com/api/docs/
    https://www.pexels.com/api/
    https://unsplash.com/developers
    платно
    https://developers.shutterstock.com/

    с "ваще по всему" и "image reverse search" лучше парминга Гугла нету + поиск по картинкам дольше не показывается капча при автоматизаии

    ну и то же самое, кроме reverse, dukduckgo
    Ответ написан
    Комментировать
  • Какие языки программирования лучше всего оплачиваются в России, США и Европе?

    @mamontm
    Оплачиваются не языки программирование.

    Оплачивается умение ими пользоваться.

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

    о наблюдениям сервиса «Мой круг» в России последние пару лет по зарплатам лидируют...

    Вы неверно интерпретируйте данные.

    Просто ряд языков чаще используется в недорогих простых проектах. Что не отменяет их же использование в дорогих проектах. Но искажает понятие "средняя зарплата".

    Плюс недорогих проектов всегда намного больше. Что еще более искажает понятие "средняя зарплата".

    Ну то есть математически-формально всё так как описано в обзоре зарплат.

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

    Причём если Scala и Elixir два года назад по зарплатам опережали прочие языки с сильным отрывом и за последние годы выросли по зарплате несильно, то Go и Objective-C за эти же два года совершили сильный отрыв от остальных языков и догнали Scala и Elixir

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

    P.S.:
    Узнаю типичный страх начинающего новичка (и типичное заблуждения уже начавшего новичка, который уже успел разочароваться в том, что ему не предлагают сходу 100 500 миллионов баков в месяц, как об этом все трубят) -

    "Я выучу не тот язык и карьера будет погублена"
    "Я выучу тот язык и карьера пойдет вверх".

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

    Важно ваше умение программировать. А это понимание/знание - алгоритмов, парадигм, концепций, паттернов.

    Эти вещи из языка в язык повторяются.
    Трудно выучить только первый.

    Сменить язык программисту с опытом - не сложно.
    Ответ написан
    8 комментариев