Задать вопрос
  • Сколько стоит час веб-разработчика-фрилансера?

    @deliro
    Ты веcь такой кругом молодец, то знаешь, это знаешь. А теперь представь себе среднестатистический проект, который должен приносить бизнесу деньги. За две недели работы ты едва напишешь хлипкий CRUD для данных, неправильно смаппив бизнес-сущности в объекты ORM, ещё через месяц натянешь какой-то слайдер на jQ, попутно захватив 2мб JS кривых библиотек, а через два заказчик поставит тебе плохую оценку, потому что твой ценник он оплатил не за то, что ему нужно, а потому что ты знаешь монады, которые ему даром не сдались.

    А теперь давай представим простого программиста. Из алгоритмов он с трудом вспоминает сортировку пузырьком, а двусвязный список — предел его знаний о структурах данных, и даже этим списком он пользовался два раза в жизни. Хаскель он никогда не видел в глаза, C++ учил только в школе, вместо этого пишет неэффективный код на PHP. И у него есть опыт. За день он распишет сущности, за второй сделает универсальный CRUD, на третий день поднимет фронт на React'е с SSR. Да, внутренности проекта будут "медленными". Вместо O(logN) что-то будет выполняться за O(N) или даже O(N^2), но всем похер. Пока всё работает на приемлемом уровне — бизнес радуется.

    Кстати, к чему эта поучительная лапша? Я хотел сказать, что всеми этими модными словами можно пугать друзей и преподавателей, но в реальной жизни все алгоритмы уже реализованы, все типы данных уже подобраны оптимально. Знать их полезно для себя (чтобы мозг не атрофировался), но не для работы. Для работы тебе нужны такие навыки как:

    * Оптимальный баланс между говнокодом и идеальным кодом
    * Оптимальный баланс между скоростью разработки и оптимизацией кода
    * Оптимальный баланс между поддерживаемым кодом и костылями
    * Умение использовать те инструменты, с которыми ты работаешь. Опять же, для того, чтобы писать быстро, при этом имея минимальное количество говнокода и обеспечивая максимальную поддерживаемость (в пределах сроков). Например, можешь выкинуть в помойку свой Vim, как бы круто ты себя не чувствовал, разрабатывая в консольном редакторе, если продукты от JetBrains позволят за это же время сделать что-то лучше или чего-то больше
    * Чувство "знаю больше менеджеров". Это то чувство, когда тебе кажется, что "вот эта фича скоро изменится" и надо сделать архитектуру заранее более гибкой. Или "вот эту фичу мы через месяц выпилим" и не надо тратить на неё силы — напиши костыль и через месяц с чистой совестью удали его
    * Знания, как сделать ту или иную фичу. Потому что фичи повторяются (немного видоизменяясь) от проекта к проекту. И если ты сделал что-то за два дня, в следующий раз ты похожее сделаешь за три часа

    Что касается инструментов, выбери любой полноценный фреймворк, который умеет решать 90%+ потребностей "из коробки": Symfony, Django, Laravel

    Всякие "минималистичные" поделия вроде Falcon, Flask (в PHP не знаю, я на питоне пишу) оставь хипстерам. Пусть они говорят: "Мой фалкон такой быстрый, он написан на Cython". Тебя это не должно волновать, потому что бизнес с твоей скоростью разработки уже заработал достаточно денег, чтобы купить ещё десять серверов, пока фалконисты неделю гуглили, как прикрутить миграциии и запустить юнит-тесты на VPSке за пять баксов.
    Ответ написан
    5 комментариев
  • Зачем учить алгоритмы сортировки, если есть уже готовые методы сортировки?

    longclaps
    @longclaps
    Алгоритмы сортировки - стандартный материал для обучения студентов теме "сложность алгоритмов". Это как диктант - слова и без тебя есть, а научиться писать их всё-таки надо.
    Ответ написан
    Комментировать
  • Рус/Анг версии сайта. Как вывести нужный язык нужному IP?

    swanrnd
    @swanrnd
    Издатель HTML5 игр
    А не смущает что некоторые пользователи в СНГ за пределами РФ лучше знают русский?

    Лучше определять по языку браузера: Как определить язык браузера пользователя?

    А так: https://www.php.net/manual/ru/book.geoip.php
    Ответ написан
    Комментировать
  • Как сохранять заполненность полей формы при ошибке отправки (если поле не проходит валидацию)?

    Stalker_RED
    @Stalker_RED
    Либо после отправки заполнять форму этими-же данными,
    либо вообще не позволять отправить ее, а проверку делать на js, возможно используя ajax.

    В идеале сочетать оба способа, чтобы работало и без js.
    Ответ написан
    Комментировать
  • Правда ли что рынок веб разработки "перегрет"?

    OTCloud
    @OTCloud
    Программирование и Архитектура ПО
    100% перегрет, но не программистами или веб-мастерами, а индивидами, которые решили что веб это просто и легко и не стоит сильно париться над своими скиллами и знаниями.
    Ответ написан
    8 комментариев
  • Для чего в MVC модель?

    @vanillathunder
    Модель - это не только сущности, под модели подразумевают всю бизнес логику(Сервисы, хэлперы, запросы к бд и тд)
    Ответ написан
    Комментировать
  • Рынок digital-услуг переполнен?

    DevMan
    @DevMan
    любой рынок сейчас наполнен, любой.
    но найти пряморукого сантехника/электрика/дантиста/айтишника - проблема.

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

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    С разделителями в бд вообще никогда ничего хранить не надо.
    Если информация о файлах в БД не нужна, то не хранить её там вообще.
    Делать отдельные папки будет вполне достаточно.
    Ответ написан
    5 комментариев
  • Как исправить запрос MySql?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    и дубликатов по идее быть не может
    Почему не может? Вы раз в сутки копируете сообщения за двое суток. Дубли просто обязаны появиться.
    Ответ написан
  • Почему не подключается к БД через ssh?

    а у вас mysql разрешен доступ не на локалхост ?
    Ответ написан
    Комментировать
  • Можно ли подтвердить свою квалификацию IT-специалиста без диплома?

    Zoominger
    @Zoominger Куратор тега IT-образование
    System Integrator
    Не бросайте учебу, пожалеете.
    Кстати, это уже 3643794-й вопрос про ВО и IT, могли б и по сайту погуглить для приличия.
    Ответ написан
    3 комментария
  • Как сортировать по части строки?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Нормализуй базу, вынеси даты в отдельную таблицу и работай уже с ней в нормальном формате, с join'ами. А не вот этот весь треш.
    Ответ написан
    6 комментариев
  • Какой стиль программирования выбрать, чтобы не вникать спустя время в проект?

    sim3x
    @sim3x
    TDD

    Забыли, что делает проект
    Запускаем тесты
    Смотрим, возможно остались ошибки с todo
    Фиксим их
    По пути смотрим на юзерстори
    Находим место, где требуется внести правку в юзерстори
    И далее по циклу

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

    @kova1ev
    Представь у тебя есть какой-нибудь метод, который принимает в агрументах объект, например, типа User
    doSomething(User user)
    Ты можешь передавать в этот метод любой объект типа User или объекты классов, наследующих User.
    Но можно сделать еще гибче, например описать некий интерфейс UserInteface и указать в определении метода его:
    doSomething(UserInterface user)
    Теперь ты можешь передавать в метод объект любого класса, который реализует интерфейс UserInterface.
    Разумеется, изначальный класс User из этого примера тоже должен реализовывать этот интерфейс.

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

    И, как уже написали выше, один класс может реализовывать несколько интерфейсов.
    Ответ написан
    Комментировать
  • Как связать число со строкой в MySQL?

    Adamos
    @Adamos
    Если у вас в одной ячейке хранится несколько значений, значит, вы не привели данные к нормальной форме. Никакими костылями исправить это не получится (точнее, варианты есть, но они будут еще хуже).
    В данном случае напрашивается отдельная таблица и связь один-ко-многим или многие-ко-многим через нее, банальнейшее решение для SQL.
    Ответ написан
    1 комментарий
  • На чем написать игру?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    на каком языке можно написать игру?

    крестики-нолики на любом, ну практически.

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

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

    Как вы выбрали на чем писать игру?

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

    Редакторы и прочие движки не интересны

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

    tsklab
    @tsklab
    Здесь отвечаю на вопросы.
    Вытащил все комплектующие из корпуса и собрал на столе.
    Только процессор и память (или без неё проверить звуковые сигналы).
    Ответ написан
    Комментировать
  • Фронтенд и бекенд в разных репозиториях или в одном?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    Как хранить исходники вместе или раздельно по разным репозиториям? Какие плюсы и минусы каждого способа?
    Мне кажется тут вопрос не столько в "плюсах и минусах" сколько в здравом смысле. Мне не совсем понятно, что в конечном счёте означает "бекенд на python, фронтэнд на angular". Это два независимых проекта, способных работать автономно друг от друга и "общаться", например, через API, разработка которых происходит параллельно и независимо друг от друга, при этом какие-либо части проектов не пересекаются между собой (например, куски HTML/CSS/JS/etc кода не копируются в бекенд-часть)? Если так - то крайне логично разделить это на два отдельных репозитория, т.к. это по сути два разных проекта, связанных между собой весьма косвенно. Если же у Вас проекты имеют более прочную связь между собой или степень контаминации исходного кода выше той, что я описал ранее - то это один проект и дробить его на множество репозиториев, лично я смысла не вижу никакого (а то мы так дойдём до "давайте хранить HTML-код в одном репозитории, CSS в дургом, JS в третьем и т.д.).

    P.S. Обычно, такие вещи разъясняет штатный тимлид, а не коллеги по форуму :)
    Ответ написан
    5 комментариев
  • Почему столько восторгов вокруг типизации? По-моему без нее намного проще, не?

    Minifets
    @Minifets
    Hello world!!!
    Дополню все остальные ответы, что не стоит путать строгую типизация со статической.

    Typehint-ы в том же php намного упрощают понимание и разработку кода, оставляя его все также слабо типизированным языком.
    Ответ написан
    3 комментария
  • Как сделать сортировку в sql но чтоб одна строка была сверху списка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Очевидно, что раз id является более приоритетным признаком сортировки, то он и должен идти впереди. Ну и, поскольку TRUE эквивалентно 1, а FALSE - 0, то сортировка по такому условию должна идти в обратном порядке.
    ORDER BY `id` = :id DESC, `date`
    При этом стоит учесть, что индекс при такой сортировке работать не будет. Возможно, что выгоднее будет отдельно получить эту строку, отдельно остальные строки.
    Ответ написан
    Комментировать