Задать вопрос
  • Ошибка php не работает сингелтон, как исправить?

    php666
    @php666
    PHP-макака
    класс для БД не должен быть одиночкой
    Ответ написан
    Комментировать
  • Столбец удален, но не удален, как удалить столбец?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Мой хрустальный шар совершенно верно показал.
    Когда вы делаете add column columnname text - вы получаете NULL во всей этой колонке. Разумеется сразу после этого вы поставить NOT NULL не можете никак. Любая строка нарушает это ограничение и база отказывается ставить NOT NULL.
    Когда вы делаете add column columnname text NOT NULL - чтож, это может сработать в одном случае - у вас пустая таблица. Тогда ни одна строка не нарушает NOT NULL ограничение, у вас просто 0 строк. Если хоть одна строка есть - это невозможно. Вы просите default NULL и одновременно NOT NULL - так не бывает. В сообщении об ошибке говорится именно о добавляемой в этот момент колонке, не о какой-то другой существовавшей ранее.

    Вы должны указать какой-то не NULL default если хотите поставить NOT NULL на создаваемое поле. Либо очистить таблицу.
    Либо создать без NOT NULL, заполнить поле, потом уже делать NOT NULL.

    В postgresql действительно колонка не удаляется никогда. Но это деталь реализации и к сути вашего вопроса отношения не имеет.
    Ответ написан
    2 комментария
  • Полезно ли долго (и вообще) «велосипедить» в программировании?

    я замечаю что гораздо лучше всё усваиваю когда делаю всё с нуля

    Поверьте - так у всех.

    Но вы обратили внимание, что в школе вам рассказывали про опыты Галилея, а не дали два шарика и не сказали - разберитесь какой из них падает быстрее?

    Представьте что вы велосипедите долго-долго и разобрались с авторизацией и загрузкой файлов вдоль и поперек, а потом все же сталкиваетесь с каким-нибудь фреймворком и смотрите, а там загрузка сделана так же как у вас и вы бы могли не тратить год, на то чтобы дойти до этого, а просто сразу посмотреть. Смотрите на авторизацию и думаете - "о, а чо так тоже можно было?"

    Объем знаний слишком велик чтобы полсностью сгенерировать его самостоятельно. Best practice много и ко всем сразу сам не придешь. Чему-то учиться придется.
    Поэтому наилучшая схема чуть-чуть повелосипедить. Изучить пару фреймворков. Попробовать опять повелосипедить. Изучить еще один, а там, может быть, присоединиться к разработке какого-то..
    Ответ написан
    Комментировать
  • Полезно ли долго (и вообще) «велосипедить» в программировании?

    sim3x
    @sim3x
    Полезно редко, но глубоко велосипедить (переписать фреймворк, апи, сортировку, драйвер,...)
    Для себя
    Ответ написан
    Комментировать
  • Нужно ли комментировать код?

    DevMan
    @DevMan
    как минимум комменты помогают автоматическому дополнению кода и линтерам.
    плюс, по ним можно автоматически строить документацию.

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

    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 комментариев
  • Узко vs Широконаправленный разработчик?

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

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

    @green_goo
    Есть виртуальная машина(дебиан 10) с IP 192.168.0.5

    На своей машине(opensuse 15 с IP 192.168.0.4)

    Значит и в xdebug.remote_host надо указывать адрес 192.168.0.4
    А лучше не указывать remote_host, а включить xdebug.remote_connect_back
    Ответ написан
    2 комментария
  • Насколько важен программисту рейтинг вуза?

    @raiboon
    У меня такое мнение.

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

    Если они вам не по знаниям или не по карману, а армия не для вас, то поступайте в лучшее, что вам доступно.

    Если вам в армию не идти и вы выбираете между несколькими говеными провинциальными вузами, то не надо. Лучше идите работать, набираться опыта, но поступайте на любую заочку.
    Ответ написан
    Комментировать
  • Можно ли изучить Linux играя?

    @Zzzz9
    Мне нравится чумовая игруха iptables, чем больше народу тем интересней, одного закрыл, другого тормознул, чтобы черточка в iftop не доходила до конца(т.е. канал забит полностью) и с каждым уровнем можно ужимать канал интернета, я уже дошел до 2Мбит/с.
    Ответ написан
    1 комментарий
  • С чего начать путь product owner'а?

    NYMEZIDE
    @NYMEZIDE
    резюме - ivanfilatov.ru
    DP6DgNK.png
    вот пример, что нужно уметь, знать, понимать - Какие функции вообще он должен выполнять.
    Ответ написан
    4 комментария
  • Как избежать параллельных запросов MySql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    По-моему, это не вопрос, а очередная влажная фантазия.
    Один и тот же юзер не в состоянии создавать "параллельные запросы".
    Тут скорее логика хромает. Зачем-то сделано удаление записи, дальше идёт какое-то анонимное голосование(?!). почему-то можно ставить плюсы несколько раз.

    Удалите этот вопрос и вместо этого спросите, как сделать голосование нормально. В общем случае все делается 1 запросом.
    Ответ написан
    5 комментариев
  • Как лучше всего делать тестовые задания?

    0xD34F
    @0xD34F
    нормален ли такой подход?

    Да. Нет. Не знаю. Что за детсадовские вопросы? Уточните у рекрутера, какой вариант предпочтительней.
    Ответ написан
    Комментировать
  • Как сделать бонус каждую минуту?

    @oleg_ods
    Добавить в базу время начала начисления бонуса и при запросе значения бонуса вычислять разницу в минутах между текущим временем и временем начала начисления.
    Ответ написан
    2 комментария
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    боожечки, нежто тяжко расставить 5 таймеров и посмотреть сколько времени что выполняется? 2 минуты работы.
    Ответ написан
    Комментировать
  • Сколько стоит час веб-разработчика-фрилансера?

    @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.
    Ответ написан
    Комментировать