Задать вопрос
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Я понимаю, о чем вы пишите и почему. Ваш код работает, т.к. решает поставленные задачи и удовлетворяет потребности ваших клиентов. Имеет ли он право на жизнь? Да, но только в вашем отдельно взятом случае.

    Дело в том, что ваш код не гибок, в нем отсутствует масштабируемость, его невозможно поддерживать.

    Что если вам потребуется сделать блог, в котором нужно иметь комментарии, которые обновляются в режиме реального времени? И комментарии могут содержать HTML, но такой, чтобы ваш сайт не могли взломать?
    А еще комментарии короче 2000 символов по воскресеньям платные. Оплата через Яндекс.Деньги.
    Вы все это делаете, все работает.
    Затем заказчик вам говорит, я хочу запустить такую же систему другу, но с оплатой по понедельникам через WebMoney.
    Вы копируете сайт, переписываете функцию оплаты.
    Дальше ваш заказчик видит, что у друга больше денег, он просит добавить WebMoney к себе.
    Вы опять переписываете код. Добавляете условия.
    Потом к вам приходит друг заказчика и хочет другое оформление. Вы переписываете его функции.
    Затем он просит добавить поиск по названиям записей к себе на сайт. Вы делаете. Буквально на следующий день к вам приходит заказчик и тоже просит поиск, но не только по названиями, но и по телу статей и по комментариям. Вы делаете.
    Затем ваш заказчик видит, что дела у него идут в гору и он просит отменить платные комментарии и сделать просто платные аккаунты для всех. Вы переписываете.
    Тем временем друг просит вас сделать все тоже самое, но с его оформлением.
    Дела у заказчика идут в гору и сайт начинает тормозить. Вы делаете кэширование.
    Внезапно сайт заказчика попадает в топ и нагрузка резко увеличиваете настолько, что один сервер уже не справляется. Вы переносите все на самый мощный, но он его тоже мало.
    Нужно делать горизонтальное масштабирование.
    Для этого нужно переписать все функции, которые работают с базой данных. А их уже больше двухсот. И просто замена не подходит.
    Сайт открывается через раз, заказчик звонит вам каждые 2 часа и спрашивает, как там прогресс.
    И тут вам присылает письмо друг заказчика и говорит, что хочет перейти с MySQL на PostgreSQL.
    И вы понимаете, что вам надо будет переписать еще 300 функций, но на другом сайте. Вы его посылаете, поскольку вы и так в мыле.
    Друг жалуется на вас заказчику. Заказчик, не ставя вас в известность, нанимает другого исполнителя, у которого отваливается челюсть от того, что творится в системе. Он объясняет, что ему нужно будет потратить полгода, чтобы вникнуть в то, чтобы понять ваш код, но он может сделать все тоже самое за 4 месяца, причем для заказчика и его друга так, что это будет расширяемо и поддерживаемо не только им.
    Тем временем, спустя двое суток жизни на кофеине вы героически переписываете все функции заказчика и идете отсыпаться. После суток сна вы обнаруживаете на автоответчике сообщение, что вы уволены. А все потому, что забыли проверить функцию логина.

    А теперь разберем эту историю по частям. Почему же вас уволили?

    Незнание абстракций и шаблонов проектирования привело к тому, что вы вынуждены были поддерживать 2 разных проекта с практически одинаковой логикой.
    Например ORM смог вам помочь поддерживать 2 разные базы данных без каких-либо усилий. Сменить одну базу на другую стоило бы исправления конфигурации, а не переписывания 300 функций.
    Использование фреймворков позволило бы сократить время на реализацию подключений платежных систем. Многие из них имеют готовые реализации.
    Опять же в современных фреймворках, например в той же Doctrine реализован шардинг. В большинстве случаев ваши проблемы свелись к изменению настроек.
    Но даже если бы вы накосячили, то интеграционные тесты не позволили бы попасть говну в продакшен. А если бы оно и попало, ну накосячили вы с тестами тоже, то проблема была бы обнаружена на раннем этапе благодаря "сине-зеленому" развертыванию и она бы не затронула всех пользователей.
    И да, ваш код не прошел внешний аудит.

    Чтобы быть настоящим профессионалом, нужно не только знать, но и уметь применять на практике ООП, популярные фреймворки, шаблоны проектирования, тестирование и средства непрерывной интеграции, а еще пользоваться нормальными IDE и нести ответственность за сделанную работу.

    Когда пишете свой код, почаще задавайте себе вопрос: А если бы это был код для моего кардиостимулятора? Это поможет.
    Это вам для общего развития.
    Ответ написан
    5 комментариев
  • Плохо ли создавать проекты с нуля? Что значит быть про?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    "И соц. сети писал, и форумы и сервисы"

    Где ваша соцсеть хотя бы на десяток тысяч абонентов?
    Есть ваш форум, с ежедневным онлайном хотя бы 1000 человек?
    Что за сервисы, насколько они востребованы?

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

    @nomta
    1. Отключить внешние раздражители - очень важно. Телевизор и подобное лучше вообще убрать подальше.
    2. Научиться правильно отдыхать, в том числе - чтобы голова отдыхала. Закончили работу - переключайтесь на то, что происходит вокруг, общайтесь, забудьте вообще о работе. Можете 10 минут удерживать "пустоту" в голове, не думать ни о чем? Чтобы ни одна мысль не пролезла в голову? Дайте мозгу "проголодаться", сразу станет интереснее.
    3. Ваша проблема - не только Ваша, с ней сталкиваются практически все так или иначе. Приходится учиться, находить свой ритм работы и отдыха. Допустим, отдыхаете каждые полчаса. Каждый раз, завершив какую-то подзадачу, ставите отметку "выполнено". В связи с этим - полезная техника: составляйте план из микрозадач и, по мере их выполнения, ставьте галочки напротив каждой выполненной задачи. Мелочь, а хорошо помогает в плане концентрации.
    4. Одной из причин может быть то, что Вы ставите перед собой сразу много обязанностей, мозг воспринимает это как неподъемную задачу и блокирует ее выполнение. Разбивайте задачу на более мелкие и не обещайте себе выполнить непременно все. Отдыхайте, переключайтесь, развлекайтесь.
    5. Не держите все в голове - записывайте. Разгружайте голову. Когда занимаетесь - ведите подробные конспекты. Это помогает структурировать информацию. На экзамене очень выручает - Вы вспоминаете не информацию из учебника, а то, что сами записали в конспект, как будто это Ваше творение. Вам остается только воссоздать свой конспект на листочке, что обычно происходит легко, как будто само собой.
    6. Лучший отдых - это перемена занятий. Найдите противоположный вид деятельности, например, спорт, и работайте с реальной отдачей, до изнеможения. Уровень концентрации в вашей основной области повысится в разы.
    Пробуйте, ищите, учитесь. Есть целое направление - brain fitness, посмотрите, может, найдете что-то полезное и для себя.
    Ответ написан
    Комментировать
  • Как решить проблему с концентрацией?

    opium
    @opium
    Просто люблю качественно работать
    откажитесь от интернета
    купите кнопочный телефон за 300 рублей
    Ответ написан
    17 комментариев
  • Можете накидать заданий на yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Сделайте что-то общественно полезное. Можно принять участие в разработке самого yii2. Можно написать модуль или виджет, который будет востребован сообществом. Наверняка у Вас есть куча наработок, которые надо "шлифануть" и можно выкладывать на github.
    Ответ написан
    Комментировать
  • Как закреплять основы javascript на практике?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    Люто рекомендую www.codewars.com.
    Просто чудо, что он есть. Его можно использовать для изучения многих языков. Думаю Вам, как и мне собственно, он будет полезен для освоения как JavaScript, так и CoffeeScript.
    Есть 8 уровней сложности. Ко многим заданиям прилагаются тесты. Так что заодно и с Test-driven development познакомитесь. Тесты есть готовые, но можно и свои пробовать писать.
    Задания можно обсудить в разделе "Discuss". Там все грамотно сделано и спойлеры скрыты.
    После выполнения доступно посмотреть на решения других пользователей и проголосовать за самое находчивое решение и за "best practice". Это дает не слабый левелап.
    Совет: делайте все на localhost, а после уже готовый код вставляйте для проверки в окно "Your Solution". Так проще поэтапно отслеживать код и можно потихоньку прийти к решению.
    P.S. Сам как раз решаю эти задачки и активно пользуюсь learn.javascript.ru для справки.
    Ответ написан
    1 комментарий
  • Тупиковое и медленное развитие, лекарство?

    @4iloveg
    Full-Stack HTML Developer
    Почитай книгу "Программист фанатик" там много дельных советов о том как расти.
    Ответ написан
    Комментировать
  • CMS на базе Yii2?

    Я пересмотрел несколько существующих разработок CMS (если их вообще можно так назвать на данном этапе) на базе Yii2 - Skeeks, Easyii, Dotplant итд. Это всё просто большие куски кода, эксперименты... Никакой чёткой концепции, структуры, ничего нет. Yii2 - это фреймворк не для создания CMS однозначно. У меня есть несколько готовых проектов (интернет-магазины) на базе этого фреймворка - все очень быстро работают, всё ОК. Я создавал свои модели товаров, категорий, статей, прайсов итд. Есть SEO, удобная админка с контролем заказов и быстрых заявок, мультиязычность, корзина, модуль мультивалютности, экспорт прайсов в XML, разделение цен по уровню доступа для оптовиков и прочие базовые фишки, которые используются интернет-магазинах. Даже обновление цен и наличия через Excel. Всё сделано под заказчика. Но... Они все заточены под конкретную задачу, "реюзать" их код не получится (разве что, частично с передалками). Зато очень удобно расширять функционал и поддерживать такие проекты - нет никаких ограничений. Да и с безопасностью всё нормально, никаких вам бекдоров или "детских" болезней, характерных для популярных CMS.
    Если ищете готовые CMS решения на базе Yii2 Framework - их нет. Лучше создать своё. А ещё лучше - скомбинировать. Например, как базовая CMS только для контента - Wordpress, Modx или Joomla (или любая другая популярная CMS с хорошим большим сообществом и большим количеством дополнений), а для дополнительного функционала - устанавливайте фреймворк Yii2 на поддомен и подключайте его через API или напрямую к базе основной CMS (через модели).
    Ответ написан
    1 комментарий
  • Тупиковое и медленное развитие, лекарство?

    voronkovich
    @voronkovich
    Нужно позволить всякому шлаку проплыть мимо вас. Не нужно вкладывать много времени в изучение того, что завтра изменится. Лучше тратить время на фундаментальные вещи, срок жизни которых больше 5-10 лет.
    Примеры:
    • Реляционные СУБД. Я использую их уже лет 10, и ничего принципиально нового (с точки зрения разработчика) в них не появилось. Я как изучил SQL 10 лет назад, так и пользуюсь им до сих пор. В тоже время, я знаю достаточно хипстеров, которые каждый день пишут на новом фреймворке и при этом не смогут составить запрос с joinами. Изучайте реляционные базы данных и SQL - они будут жить еще лет 20-ть;
    • ООП. У меня на полке лежит книга банды 4-х, которую я купил давно. Мне не нужно каждый год покупать новый экземпляр из-за того, что шаблоны проектирования вдруг взяли и "устарели". Изучайте ООП. Оно будет актуальным еще очень долгое время;
    • Регулярные выражения;
    • Командные оболочки sh/bash;
    • и т.д.

    Короче говоря, не тратьте время на синтаксис, тратьте его на семантику.

    И поменьше читайте хабр. Полезной информации там все меньше и меньше, и в то же время, подобные ему ресурсы создают у людей чувство неполноценности, из-за того что они не используют "этот новый супер-мега фреймворк".
    Ответ написан
    5 комментариев
  • Bootstrap 3 или 4?

    NikitaRain
    @NikitaRain
    Full-Stack Developer.
    Изучайте лучше пока 3 версию. Разница в коде там будет не колоссальная чтобы переучиваться
    Ответ написан
    1 комментарий
  • Тупиковое и медленное развитие, лекарство?

    Konstantin18ko
    @Konstantin18ko
    Стоматолог
    Хочешь быстро выкачивать в продакшен? Вруби режим Vanille. Пиши, параллельно свой проект. Зацепись за один язык как основной и дальше учи всё в нем вдоль и поперёк. Затем, как всё выучишь, хватай самый сложный фраемворк и от сложного к простому начинаешь разбирать. Это мой подход.
    Для наглядной статистики: я врач, у меня 8 часовой рабочий день. С сентября 2016 начал изучать PHP и JavaScript. С 1 января по 9 января 2017 пишу програму которая помогала мне писать истории больных. Сейчас программа пользуется популярностью и ей пользуется вся ординаторская. Сейчас проект переписывается на Symfony 3.
    Что мне понадобилось: время после работы, интернет.
    Ответ написан
    22 комментария
  • Как без лишних костылей сделать разные конфиги для БД в Yii2 advanced?

    qonand
    @qonand
    Software Engineer
    папка environments содержит скелет для настроек приложения зависимых от окружения. Тоесть по факту, когда Вы разворачиваете проект в определенном окружение и выполняете команду init происходит копирование конфигов из папки environments в соответствующие папки и уже в них Вы указываете все параметры которые зависят от окружения (доступы к БД и т.п.). Соответственно в конфигах /common/config/main.php и т.п. указываются настройки не относящиеся к окружению (список компонентов и т.п.)

    Как без лишних костылей сделать разные конфиги для БД в Yii2 advanced?

    итого Вам нужно:
    1. Выполнить инициализацию проекта с помощью init
    2. Заполняете данные доступа в конфигах с префиксом -local
    Ответ написан
    6 комментариев
  • Upwork - в какое время больше всего заказов?

    @artem78
    В своё время задавался точно таким же вопросом и для себя написал небольшой скрипт считающий статистику по кол-ву проектов.

    b1a50bb4620c49c19bc893548903f519.png

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

    @huwesu
    Сортировка нафиг не нужна.
    Если вы и будете сортировать, то будете для этого использовать уже готовые библиотеки.
    Ответ написан
    Комментировать
  • Какие алгоритмы нужно знать веб разработчику?

    @mletov
    Зависит от того, что собираетесь программировать. В большинстве случаев, как написали выше, - никакие, но...
    Работал в одной конторе, встала хитрая задача найти оптимальные сочетания, что-то вроде комбинаторики, из нас троих ни один ее не решил, знаний матчасти не хватило, в итоге, в лоб тупо перебором подгоняли.

    Тут гораздо важнеее не web/mobile/desktop, а предметная область.
    Ответ написан
    Комментировать
  • Какие алгоритмы нужно знать веб разработчику?

    @unabl4
    ruby on rails web dev
    Фактически никакие. Больше упор лучше делать на структуры данных, паттерны, архитектуры, инфраструктуры и т.д и т.п
    Ответ написан
    2 комментария
  • Какие алгоритмы нужно знать веб разработчику?

    2ord
    @2ord
    Не помню когда какой алгоритм использовал последний раз в веб-разработке.
    Из алгоритмов порой может использоваться разве что линейный и бинарный поиск в массивах. В любом случае, как правило, такие алгоритмы реализованы в стандартных библиотеках и поэтому остаётся лишь вызвать нужную функцию.
    Порой нужно посчитать что-то несложное, например статистику с выборкой по разным таблицам в БД или что-то по простенькой формуле. Изредка-изредка попадаются немного более сложные задачи. Но задач типа динамического программирования или по искусственному интеллекту не жди - такие задачи обычно решаются программистами с другой квалификацией, независимо от веб-разработки.

    В веб-разработке важно чтобы запрос к серверу занял как можно меньше времени. Для этого нужно быстро обратиться к БД, что-то посчитать и вернуть ответ. Пользователь не любит ждать. Порой нужно использовать техники кеширования данных и некоторые другие оптимизации.
    По-моему, основными факторами задержки являются:
    1. неоптимальные запросы к БД
    2. неоптимальный выбор структур данных и, как следствие, понижение скорости работы и повышенные требования к памяти
    3. повторяющиеся операции в коде
    4. блокирующие операции в коде
    5. неоптимальная отдача статического контента сервером
    Ответ написан
    Комментировать
  • Какие алгоритмы нужно знать веб разработчику?

    @Za0r
    pop()
    Как новичок,и как полный ноль в математике(вот совсем ноль,даже задачу за 7ой класс не решу) советую "Грокаем алгоритмы",как раз питон там,но есть опечатки,которые заметны если вдумчиво читать
    Ответ написан
    Комментировать