Задать вопрос
  • Как понять что программирование это твое?

    Moskus
    @Moskus
    Вопрос, строго говоря, не имеет никакого отношения к программированию.
    Чтобы эта проблема исчезла, вам нужно психологически повзрослеть. Потому что у вас имеется, по вашему описанию, совершенно детский набор реакций, который будет проявляться в любой области деятельности:
    - стремление к немедленной гратификации (вознаграждению за любое проделанное действие);
    - проблемы с концентрацией внимания на одной задаче длительное время;
    - излишняя эмоциональность и раздражительность.
    Любая работа - это не развлечение, это на 90% - нудная и часто - неприятна рутина. Потому удовлетворение нужно научиться находить в этих 10%. Нужно также понять, что все вокруг вас не существует ради вашего развлечения. И наоборот, если что-то вам не нравится, скучно, тяжело - это не "мир против вас", это естественная ситуация, с которой все должны уметь справляться, чтобы, в итоге, не жить в постоянном стрессе и не умереть в 40 лет от инфаркта.
    Ответ написан
    1 комментарий
  • Где можно заказать code review?

    Konata69lol
    @Konata69lol
    backend developer (php/go)
    Устроиться на работу, где есть код ревью.
    Ответ написан
    4 комментария
  • В чем смысл быть гуру тостера?

    sashkets
    @sashkets
    Прекратил отвечать после 24.02.2022
    «ДАРОМ получили — даром давайте» (Матфея 10:8)

    П.С.
    Был случай, когда человек так нуждался в помощи, что рискнул дать рута. Помог. Моральное удовлетворение.
    Ответ написан
    Комментировать
  • Как правильно использовать middleware в Laravel?

    @grinat
    Нет. Хз в ларавел, но если там mvc, то данные запроса обратываются в контроллере, а middlaware там будет тем что стоит перед твоей обработкой в контролере. То есть например авторизация, мы в middlaware проверяем авторизован ли пользователь, если да, то передаем данные дальше на обработку в контролер. На практике их есть смысл заюзать если например пришел аналитик и сказал что если мы обрабатываем овощ, то надо выводить человеку сообщение: ты помидор, а у тебя куча контролер: картофанконтрлер, капустаконтролер, луккнотролер и т.п., и ты вместо того чтобы в них все вставлять сообщение ты помидор, добавляешь middlaware и в нем смотришь овощ ли это, и если да, то выводишь сообщение ты помидор.
    Ответ написан
    Комментировать
  • Почему многие компании пишут web-приложения на Java, а не на Node или php?

    tema_sun
    @tema_sun
    Потому что умеют писать на ней.
    Ответ написан
    Комментировать
  • Почему многие компании пишут web-приложения на Java, а не на Node или php?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Процитирую сам себя:
    У enterprise-приложений есть три основных качества:
    1. Большая и сложная кодовая база;
    2. Высокие требования по надёжности и производительности;
    3. Длительный срок эксплуатации.

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

    И добавлю, что Java изначально создавалась как язык максимально сопротивляющийся сознательному или бессознательному стремлению программиста выстрелить себе в ногу. Кроме того, она очень хорошо соответствует принципу наименьшего удивления.
    Ответ написан
    6 комментариев
  • Как обойти re-captcha в апи?

    Softer
    @Softer
    Ответ написан
    Комментировать
  • Как изменить структура словаря?

    longclaps
    @longclaps
    d = {"group1": ["var1", "var2", "var3"], "group2": ["var4", "var5", "var6"]}
    d = {v: k for k, vv in d.items() for v in vv}
    print(d)
    Ответ написан
    Комментировать
  • Тестовое задание (Junior Frontend), приемлемое ли?

    @uroot
    Дали 3 дня и после можно скинуть даже не полностью готовое.
    В этом вся соль. Делаете что умеете, а после пытаетесь сделать все остальное. От этого, видимо, будет зависеть ваша ЗП. Вам же не сказали, что нужно заверстать весь макет + анимация + API карты, иначе вы бездарь. Они дали типичный макет для их студии и хотят по максимуму проверить ваши навыки, понять что вы умеете. Но и вправду, не сильно понятно, зачем столько страниц верстать, можно было одну + карта.
    Ответ написан
    Комментировать
  • \. В sql файле?

    Melkij
    @Melkij
    DBA Team для вашего PostgreSQL?
    с помощью утилиты pgsql

    Не знаю таких. Что это за утилита, что делает, как это делает?

    что значит \.

    Так помечается конец данных для COPY. https://www.postgresql.org/docs/current/sql-copy.html
    End of data can be represented by a single line containing just backslash-period (\.).


    емнип, php вовсе не может выполнять copy from stdin как запросы, только как функции PDO::pgsqlCopyFromArray для PDO или pg_put_line, pg_end_copy для php-postgresql расширения.
    Ответ написан
    Комментировать
  • Как изучать паттерн MVVM и WPF?

    netrox
    @netrox
    Ответ написан
    Комментировать
  • Как в Crome DevTools можно просматривать все события страницы?

    @xtress
    Web-dev
    Выполните в консоли monitorEvents(document.body); Увидите все события по мере их появления. Если надо фильтровать - второй аргумент для этой функции: monitorEvents(document.body, 'click'); - покажет все клики.
    Ответ написан
    3 комментария
  • Можно ли распространять приложение в docker, чтобы скрыть его исходники?

    @spaceatmoon
    Забейте, такого еще не придумали. Я знаю только два способа обезопасить от кражи.

    1. Переписать на C++ и использовать DRM - Защита сомнительная, но т.к. вы не игры пишите, то 100%. Никто с этим мудохаться не будет.

    2. Переписать на C и зашить частички кода в микроконтроллеры, а микроконтроллеры объединить в кластер, а там механический аппарт с рычагами и кнопками.

    Микроконтроллеры можно использовать двух типов:
    а) Микроконтроллер военный. Это тот, в котором кристалл памяти не защищен и при активации ультрафиолета память очищается.
    б) Обычная китайщина. После записи не забудьте всё эпоксидкой залить.

    Есть еще один вариант, ничего переписывать не надо, но он сопряжен с рисками.
    Собираете сервер своими руками. В качестве жесткого диска можно выбрать такой SSD с функцией самоуничтожения, первый контур это взрывчатка, второй контур это что-то типа излучателя который выводит электронику по близости. Только сильно не играйтесь, а то в Ираке люди от этого мутировали.
    Ответ написан
    8 комментариев
  • Как не переборщить с желанием все спроектировать прежде чем писать код?

    t-alexashka
    @t-alexashka
    Сразу пишу legacy код
    Проектирование полезно. Особенно больших модулей. Не жалейте на него времени, это ускорит в дальнейшем разработку, и внедрение новых фич, когда вы уже наглядно будете видеть могут быть с этой фичей какие-то проблемы или нет. Да и после проектирования уже видно что на какие куски разбить при разработке.
    Ответ написан
    Комментировать
  • Как не переборщить с желанием все спроектировать прежде чем писать код?

    angrySCV
    @angrySCV
    machine learning, programming, startuping
    >не нравится как он написан
    пффф а ты что думал, в сказку попал? тебе и не должно нравиться, это для бизнеса где-то на 25 месте находится.
    -----
    чесно говоря я вообще не слышал чтоб реально на практике УМЛ использовали, для проектирования (хотя тема когда-то и была на хайпе).
    Ну да на черновиках набрасывают общие идеи, сам код также может быть тем черновиком для идей, но это всего-лишь черновик.
    =======
    >"Давай декомпозируем на задачи и начнем делать. По ходу реализации разберемся"
    очень грамотный, взвешенный подход. Основная проблема не опытных людей, попытка сразу выдать идеальный результат в вакууме, люди которые поопытнее знают что это сделать не возможно, а попытка идеальной проектировки приведет только к переусложнению и ухудшит разработку и вместо того чтоб гибко подгонять решение под постепенные уточнения, вы будете стремится все подогнать под рамки какой-то первой "идеальной" идеи реализации, на основе первого восприятия задачи (которое часто ошибочно).
    Ответ написан
    Комментировать
  • Что делать only frontend разработчику с backend?

    DevMan
    @DevMan
    не надо вам с этим разбираться. прост найдите человека/человеков, который это уже умеет и платите ему часть денег.
    вы получите меньше денег за задачу, но вы будете в плюсе: задачи закрываются быстрее, больше задач за период, вы не учите неведомый вам мир и качаетесь в том, что вам знакомо и близко.
    Д - делегирование.
    Ответ написан
    5 комментариев
  • Попросили проверить код, на что смотреть нужно?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Смотря зачем)). Я когда делаю Code Review критерии следующие:

    * Безопасность:
    - Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм))
    - Никаких trigger_error, только исключения.
    - Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так.
    - Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс.
    - За eval как правило шлю на **й.
    - @ допускается только в безвыходных ситуациях, например проверка json_last_error.
    - Перед работой с БД - обязательная проверка данных.
    - Никаких == и !=. Со swtich - единственное исключение, по ситуации.
    - Если метод возвращает не только bool, а еще что-то - жесткая проверка с ===, или !== обязательна.
    - Никаких условий с присваиваниями внутри. while($row = ...) - тоже идет лесом.
    - Магические геттеры/сеттеры разрешаются только в безвыходных ситуациях, в остальном - запрещены.
    - Конкатенации в sql - только в безвыходных ситуациях.
    - Параметры в sql - ТОЛЬКО через плейсхолдеры.
    - Никаких глобальных переменных.
    - Даты в виде строки разрешаются только в шаблонах и в БД, в пхп коде сразу преобразуется в \DateTimeImmutable (в безвыходных ситуациях разрешено \DateTime)
    - Конечно зависит от проекта, но как приавло должно быть всего две точки входа: index.php для web и console(или как-то по другому назваться) - для консоли.

    * Кодстайл PSR-2 + PSR-5 как минимум, + еще куча более жестких требований (для начала все то что в PSR помечено как SHOULD - становится MUST)
    - В PhpStorm ни одна строчка не должна подсвечиваться (исключением является typo ошибки, например словарик не знает какой-то из аббревиатур, принятых в вашем проекте). При этом разрешается использовать /** @noinspection *** */ для безвыходных ситуаций.
    - Если кто-то говорит, что пишет в другом редакторе и у него не подсвечивается, на эти отговорки кладется ВОТ ТАКЕЕЕНЫЙ мужской половой **й и отправляется на доработку)).

    * Организация кода:
    - Никаких глобальных функций.
    - Классы без неймспейса разрешаются только в исключительно безвыходных ситуациях.

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

    * Принципы MVC:
    - Никаких обработок пользовательского ввода в моделях, от слова совсем.
    - Никаких ***ть запросов в БД из шаблонов.
    - Никаких верстки/js/css/sql-ин в контроллерах.
    - В моделях НИКАКОЙ МАГИИ, только приватные свойства + геттеры с сеттерами.
    - В моделях разрешено использовать метод save(при наличии такого разумеется) только в исключительных ситуациях. Во всех остальных - либо insert, либо update.

    * Принципы SOLD:
    - Никаких божественных объектов умеющих во все.
    - Если метод для внутреннего пользования - private, никаких public.
    - Статические методы разрешаются только в случае безвыходности.

    * Принцип DRY разрешено нарушать в случаях:
    - Явного разделения обязанностей
    - В тестах (каждый тест должен быть независимым, на сколько это возможно)

    * Работа с БД:
    - Запрос в цикле должен быть РЕАЛЬНО обоснован.
    - За ORDER BY RAND() - шлю на***й.
    - Поиск не по ключам (конечно если таблица НЕ на 5 строк) запрещен.
    - Поиск без LIMIT (опять же если таблица НЕ на 5 строк) запрещен.
    - SELECT * - запрещен.
    - Денормализация БД должна быть обоснована.
    - MyISAM не используется (так уж)) )
    - Множественные операции обязательно в транзакции, с откатом если чо пошло не так.
    - БД не должна содержать бизнес логики, только данные в целостном виде.
    - Не должно быть нецелесообразного дерганья БД там, где без этого можно обойтись.

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

    * О людях:
    - "Я привык писать так и буду дальше" - не вопрос, ревью пройдешь только когда поменяешь свое мнение.
    - "Я пишу в vim-е и мне так удобно" - здорово, код консолью я тоже в нем пишу)) но есть требования к коду, если в них не сможешь - не пройдешь ревью.
    - "Я скопировал этот страшный метод и поменял 2 строчки" - это конечно замечательно, но по блейму автор всего этого метода ты, так что давай без говняшек, хорошо?
    - "Оно же работает!" - вот эта фраза переводится примерно так: "да, я понимаю, что пишу полную хрень, но не могу писать нормально потому, что руки из жо", я правильно тебя понял?))
    - "У меня все работает!" - рад за тебя, а как на счет продакшна?
    - "Там все просто" - не используй слово "просто", от слова "совсем". Вот тебе кусок кода (первого попавшегося с сложной бизнес логикой), где там ошибка (не важно есть она, или нет)? Ты смотришь его уже 2 минуты, в чем проблема, там же все "просто"))

    * Всякое:
    ActiveRecord (это я вам как в прошлом фанат Yii говорю) - полное говно, примите за исходную. По факту у вас бесконтрольно по проекту гуляют модельки с подключением к БД. Не раз натыкался на то, что в тех же шаблонах вызывают save, или update (за такое надо сжигать).
    То, что используется Laravel - это печально((. Что бы выполнить требования приведенные выше, приходится "воевать" с фреймворком.

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

    UPD

    Формализировал данные критерии по ссылочке: https://github.com/index0h/php-conventions
    Ответ написан
    55 комментариев
  • Какой task manager вы используете?

    dixam
    @dixam
    virtual consultant
    Большинство этих сервисов перекрывает Notion.so
    Попробуйте.
    Ответ написан
    Комментировать
  • Как создать иерархию классов?

    2ord
    @2ord
    Всего потребуется написать M×N трансформаций, где M - количество видов, а N - количество форматов.
    Вход: вид, сами данные, дополнительные параметры в зависимости от формата
    Выход: формат
    Операции: Построить
    Построить можно только зная из чего и в какой формат, то есть совсем абстрактно не получится.
    Ответ написан
    Комментировать
  • Linux дистрибутив для предприятия?

    Sanes
    @Sanes
    Для 150 пользователей нужет отдел IT, который не задает такие вопросы.
    Ответ написан
    Комментировать