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

    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 комментариев
  • Пример проекта который включал бы всю "класссику" фронтенда?

    или более похож на реальный боевой проект

    Куча легаси кода, все тормозит и глючит. Половина проекта с горем пополам переписана на современный манер.

    Не видел ни одного крупного боевого проекта с большой историей, который был бы нормально написан.
    Ответ написан
    1 комментарий
  • Как работать командой над большим проектом?

    saboteur_kiev
    @saboteur_kiev Куратор тега Организация работы
    software engineer
    1. Договор - полюбому. Чтобы можно было прижучить.
    В нормальных команиях также секьюрити проводят регулярные таунхолы, особенно для новичков, где рассказывают о безопасности. И приводят пару примеров, как кто-то расшарил кусочек кода, как его засудили на много денег и добавили в черные списки всех компаний.
    Это для тех, кто по глупости может.

    2. Делите исходники на части. Автоматизируйте деплой так, чтобы разработчик это руками не делал и никуда не лазил - сделал коммит - CI сервер автоматом закачал все нужное из разных репозиториев и задеплоил. Надо нескольким разработчикам - сделайте несколько тестовых окружений, чтобы разработчик мог зайти в Jenkins или Teamcity, нажал одну кнопку и выбрал куда ему деплоить. Но своих логинов парлей у него не было.

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

    И это все равно не гарантия. Смиритесь =)
    Ответ написан
    1 комментарий
  • Как лучше организовать рабочее окружение для веб разработчика?

    @xfg
    linux + docker + git вот и всё окружение.
    Ответ написан
    Комментировать
  • Как лучше организовать рабочее окружение для веб разработчика?

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

    Если хотите серьезно в разработку - переезжайте на linux/mac. Все можно делать и на винде, но в какой-то момент станет жалко времени на постоянное решение мелких и не очень проблем. Да и держать в голове две системы на хорошем уровне понимания незачем, есть и более полезные навыки которыми можно это место занять.
    Ответ написан
    Комментировать
  • WordPress или MODx Revolution для корпоративного сайта?

    Sanes
    @Sanes
    С Modx проще. Хотя если тяп-ляп на шаблоне, то и WP покатит.
    Ответ написан
    Комментировать
  • Стоит ли покупать коленный стул?

    @AlexeyCarpenter
    Коротко не получится.

    Я изготавливаю коленные стулья по индивидуальному заказу уже несколько лет и столько же сижу на нем(я и моя жена). Мы сделали это основной своей работой. Могу сказать многое как о самом кресле, так и о людях, которые на них сидят. Но мы противники распространяемой магазинами идеи, что этот стул лечит все болезни и в таком духе. Но скажем точно, что сами не пересядем на обычное классическое кресло. Стоит ли покупать? Вот мои рассуждения. Может кому-то пригодятся.

    Однозначно, что сам по себе стул - это лишь приспособление. Он не нужен всем. Допустим, вы испытываете легкий дискомфорт от 3-4 часов работы сидя - у вас немного болит поясница, но эта боль быстро проходит после перерыва. Вы - человек, которого раздражает даже такой "изи" дискомфорт. Не покупайте стул. Период привыкания к нему вызывает еще больший дискомфорт. По своему опыту скажу, что на коленном стуле сидеть невероятно удобно лишь с месяцами и годами. В классическом кресле же, наоборот. С годами от такого кресла могут развиться или усугубиться многие болезни. Тут все индивидуально. У кого-то сразу появляются межпозвоночные грыжи а с ними и защемления нервов. У кого-то с позвоночником все норм, но нарушается кровоток в мягких тканях таза и пошло-поехало. Никуда не денешься от нашей анатомии. Коленный стул за счет наклона сидения ближе к положению при котором мышцы спины не испытывают чрезмерную нагрузку, чтобы удерживать спину прямо. Поэтому тем, кто настолько устал от боли в пояснице, что их не пугает ни период привыкания, ни нестандартная новая посадка, добро пожаловать. Вы не пожалеете.

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

    В течении дня сидящий активно меняет положение тела. Колени после привыкания вообще не жалуются. А мягкие ткани в бедрах и ягодицах испытывают меньшую нагрузку и в них улучшается кровоток(по сравнению с обычным креслом конечно).

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

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

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

    Мне в подростковом возрасте ставили диагноз остеохондропатия бугристости большеберцовой кости. Я не мог сидеть на полу опираясь на колени. Хоть с тех пор прошло около 10-ти лет и никакого лечения мне не прописывали я без проблем сижу на коленном стуле, хоть ходить на коленях, как здоровые люди, не могу вообще. Конечно, тут еще может играть качество материалов, из которых сделан коленный стул. В своих я использую 2 вида поролона с разной плотности, чтобы исключить продавливание подушки.

    Покупайте у тех, кто готов принять возврат в течении 14 дней.

    Лично мне удобно на стуле именно работать. Играть, смотреть кино на нем нет смысла. Мне он помогает сосредоточено и долго работать.
    Ответ написан
    6 комментариев
  • Как сделать фон текста в виде круга?

    SmthTo
    @SmthTo Куратор тега CSS
    Все перепёлки мира будут оплакивать мою смерть.
    1 комментарий
  • Зачем собирать проект на сервере?

    Stalker_RED
    @Stalker_RED
    У софта, библиотек, и прочих зависимостей бывают версии. Еще и у железа отличия бывают.

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

    Собрав у себя локально и перелив на сервер, у которого отличается окружение - рискуете получить кучу глюков, и чем больше оно отличается, тем сильнее рискуете.
    Ответ написан
    7 комментариев
  • "Uncaught SyntaxError: Unexpected end of input" - что это значит и как с этим бороться?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Вы забыли закрывающую фигурную скобку в конце.
    UPD: в конце функции. Еще у вас строка
    finish += arguments[i];
    недосягаемая, т.к. находится после return.
    function test() {
        var finish = 0;
    
        return function() {
          for (var i = 0; ; i++) {
            if (arguments[i] == "undefined") {
              return finish;
            }
            finish += arguments[i];
          } 
        }
        }
        var x = test();
        x(32,546,3);

    UPD UPD: блин, у вас еще и вечный цикл! Вы неправильно сравниваете на undefined. Там не будет такой строки. Вот так надо
    if (arguments[i] === undefined) {
       return finish;
    }

    UPD UPD UPD: еще вы не указали условие завершения цикла, это плохой тон. У объекта arguments (да, это объект а не массив) есть поле length, пусть цикл идет от нуля до length
    for (var i = 0; i < arguments.length ; i++) {
    Ответ написан
    Комментировать
  • Привязан ли как-нибудь интерфейс php к своей реализации?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Нет, не привязан. Это Liskov Substitution Principle и Interface Segregation Principle aka буквы L и I в SOLID.

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

    @ber_enot Автор вопроса
    Веб-разработчик, Vue.js / Node.js
    Спасибо всем ответившим!

    Нашел решение.
    Проблема была в конфигурации vue.config.js (использую vue-cli 3).

    Для глобальных переменных и миксинов SASS (SCSS) использовал плагин style-resources-loader.

    pluginOptions: {
        'style-resources-loader': {
          preProcessor: 'scss',
          patterns: [
            path.resolve(__dirname, 'src/scss/_variables.scss'),
            path.resolve(__dirname, 'src/scss/_mixins.scss'),
          ],
        }
      },


    Именно из-за него сборка занимала много времени. Изменение одной буквы в HTML-коде компонента приводило к пересборке всех компонентов, использующих SCSS.

    Решение проблемы:
    1. npm remove style-resources-loader
    2. удаление из конфига кода (см. выше)
    3. добавление в конфиг кода:
    css: {
        loaderOptions: {
          sass: {
            data: `
              @import "@/scss/_variables.scss";
              @import "@/scss/_mixins.scss";
            `,
          }
        }
      },


    Результат:
    DONE Compiled successfully in 1704ms 15:06:07
    App running at:
    - Local: localhost:8080
    Ответ написан
    Комментировать
  • Как написать большое приложение на Vue.js и не умереть?

    @Buzzzzer
    Возможно что то не так в конфигах webpack ?

    У меня сейчас в проекте порядка 600+ vue компонентов.
    Пересборка в dev с hot reload занимает 2-5 сек.
    (win, ram 16gb, ssd, какой то старенький i3)
    Ответ написан
    4 комментария
  • Почему не запускается next js?

    BuriK666
    @BuriK666
    Компьютерный псих
    > Couldn't find a `pages` directory. Please create one under the project root
    translate.google.com/
    Ответ написан
    1 комментарий
  • В чем разница между display:flex и display:inline-flex?

    @bes_internal
    webdev: perl, gentoo, html/css
    Особенности inline- элементов:

    - им можно задавать размеры, рамки и отступы, как и блочным элементам;
    - их ширина по умолчанию зависит от содержания, а не растягивается на всю ширину контейнера;
    - элементы в одной строке выравниваются вертикально подобно строчным элементам (verticacal-align)
    Ответ написан
    Комментировать
  • В чем разница между display:flex и display:inline-flex?

    SagePtr
    @SagePtr
    Еда - это святое
    Точно такая же, как между block и inline-block
    Ответ написан
    Комментировать
  • Как сделать быстрый ввод тегов В PhpStorm?

    @pu6elozed
    Bitrix, fullstack
    Это называется в шторме live templates. Там можно указать свои собственные шаблоны ака сниппеты. Собственно автор скорее всего так и сделал
    Ответ написан
    Комментировать
  • Как удалить элементы, не имеющие вложенных элементов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    document.querySelectorAll('div.color').forEach( el => {
      if (el.children.length === 0) el.parentNode.removeChild(el);
    });


    Ответ написан
    6 комментариев
  • На чем делается 3D анимация в JS?

    three.js и прочее это только библиотеки/фреймворки для удобства работы с WebGL, поэтому на вопрос "Как такая физика делается в JS" будет правильнее ответить WebGL. И если хочется понять как именно и что там работает, то начните с WebGL. А на чем конкретно в вашем случае было сделано, то это скорее всего three.js.
    Ответ написан
    Комментировать