Задать вопрос
  • Есть ли подводные камни в использовании ссылок Golang в горутинах?

    @Zolg
    но открыл для себя особенность, что если передавать ссылку в горутину, в горутине будет самое последнее значение переменной в цикле
    это не 'особенность', это основная фича ссылок. В любом ЯП.

    Сама переменная - это некоторая область в памяти, в которой записано то, что в этой переменной содержится.
    При передаче параметра по значению ('без ссылок') создается еще одна такая же область в памяти, куда копируется содержимое исходной переменной. И код вызванной функции работает уже со своей копией.

    При передаче параметра по указателю ('с сылками') копия переменной не создается, а в вызываемую функцию передается адрес (указатель, ссылка) области памяти в которой лежат оригинальная переменная. И вызванная функция работает уже с ним.

    Очевидно, что когда два куска кода одновременно могут писать читать в одно и то же место памяти - они мгновенно 'видят' изменения, вносимые каждым.

    И, естественно, в общем случае без дополнительных усилий это не thread/goroutine/etc. safe. Причем в случае, если сама переменная - что-то посложнее int, то эффект от такой одновременной работы может быть гораздо более занятным, чем просто изменение значения.
    Ответ написан
    2 комментария
  • Стоит ли использовать esbuild для сборки фронта сегодня?

    @deliro
    Я пару недель назад перевёл сборку фронта с rollup на esbuild. Время сборки упало с 13с до 200мс (x65 ускорение). У коллег на M1 это время стало вообще 40мс

    Из минусов заметил только отсутствие таргета ES5 (ну как заметил, об этом в доках пишут везде). Кстати, перевод таргета на ES6 уменьшил размер бандла незначительно (в основном за счёт сокращения function() в ()=>)

    Больше проблем нет
    Ответ написан
    2 комментария
  • Один проект или коммерческая разработка?

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

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно вообще без JS, только стилями и невидимым чекбоксом, но разметка должна быть специфической:

    Ответ написан
    Комментировать
  • Почему так тяжело решать задачи?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Это нормально. Мозг развивается практикой и процесс этот мало того, что не быстрый, так ещё и бесконечный.
    Ответ написан
    Комментировать
  • Почему так тяжело решать задачи?

    saboteur_kiev
    @saboteur_kiev Куратор тега IT-образование
    software engineer
    Попробуй поднять 300 кг, если никогда до этого не занимался тяжелой атлетикой.
    Думаешь через 5 месяцев станет легко?

    Мозг также само развивается не так быстро, как хочется.
    Это только кажется что прочитал 10 книг и стал умнее. Надо решить тысячу задач, чтобы мозг привык их решать и начал оптимизировать собственные процессы.

    Решай, смотри чужие решения. После того, как решил задачу каким-то неэффективным способом, а потом нашел улучшение а потом еще и подсмотрел чужое - ты будешь гораздо лучше понимать почему хорошее решение хорошее.
    Ответ написан
    2 комментария
  • Что нужно знать перед изучением angular и react?

    Про Реакт не скажу, но в Ангуляре (если мы о 2-м - 4-м) очень важной зависимостью является RxJS. Это сама по себе очень полезная вещь.
    Более того, я бы посоветовал вместо Ангуляра и Реакта посмотреть на замечательный фреймворк CycleJS, который построен на идее RxJS. У него очень простая, чистая и мощная архитектура. Если её освоить - многое увидится в новом безоблачном свете. Главный минус CycleJS в отсутствии готовых комплектов вроде Material для Ангуляра. Это скорее инструмент, чем готовое решение. Но в обучении это лишь плюс - больше простора для практики.

    Кроме того, полезно освоить концепцию функционального программирования, насколько это возможно в JS. Идею иммутабельных (персистентных) структур данных. Основные функции высшего порядка (вроде map, flatMap, foldLeft/reduce и др). Функциональную композицию и point-free (tacit) стиль. Очень рекомендую посмотреть на библиотеку Ramda. Всё это не является обязательным пререквизитом для Ангуляра и Реакта, но может существенно повлиять на то, как Вы пишете код.

    CycleJS и Ramda - точно помогут в более углублённом изучении JS.
    Angular очень хорошо учить по книге ng-book 2.
    Ответ написан
    Комментировать
  • Курс или полный гайдлайн по git?

    Попробуйте следовать https://www.atlassian.com/ru/git/tutorials/compari...

    К проблеме которую вы описали:

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


    Не сливайте feature-ветку пока она не будет полностью протестирована и code-rewiew'ирована.
    Склеивайте комиты в feature-ветке, чтобы их в итоге было не больше 1-3.

    Из собственного опыта могу сказать, что чем крупнее и неспешнее проект - тем проще следовать git-flow.
    А вот когда 1-2 разработчика и нужно вот сейчас ещё вчера запилить 10 фич... бывает сложновато.

    Это вопрос дисциплины и организованности. Как ставятся задачи, как вы фокусируетесь на текущей фиче (нельзя носиться по всему проекту и фиксить по пути всё что под руку попалось). Организации самого проекта в конце концов - как изолированы компоненты и т.д.
    Ответ написан
    Комментировать
  • Где найти книги или курсы по PHP, где даётся проектирование приложений с учётом ООП?

    DollyPapper
    @DollyPapper
    Их не нужно сравнивать. Эти подходы дополняют друг друга. Внутри методов класса ты как ни крути пишешь процедурный код.
    Ответ написан
    Комментировать
  • Как быстро вникнуть в чужой код?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Задавать окружающим вопросы. Ртом. Повторять пока не станет понятно
    Ответ написан
    5 комментариев
  • Как запустить n горутин на golang?

    uvelichitel
    @uvelichitel Куратор тега Go
    habrahabr.ru/users/uvelichitel
    Например так
    //На N промежутков
    step:=(end-start)/N
    for n := 0; n < N; n++ {
        from := start + n*step
        to := from + step
        group.Go(func() error{ 
             return process(from, to)})
         })
    }
    Ответ написан
    Комментировать
  • Как запустить n горутин на golang?

    @12rbah
    Честно говоря не совсем понял в чем проблема, просто запускайте горутины в цикле, который будет иметь кол-во итераций зависящее от start-end.
    Ответ написан
    2 комментария
  • Как понимать програм-е, и писать собственный код?

    @rPman
    Как эффективнее всего выйти из этих рамок , и научиться писать собственный код?
    Решать задачи не через использование готовых решений но и до крайностей не доходить. Совершенно нормально не заниматься разбором видеофайлов на низком уровне, хватит научиться пользоваться ffmpg.

    Еще важный момент - правильный выбор задач.

    Задача не должна быть слишком сложной - иначе неудачи отобьют желание учиться.
    Задача не должна быть бессмысленной - найдите какую-нибудь простую задачу, которую вы делаете руками постоянно, файлики переименовываете, запятые в экселе лишние удаляете ручками,... вроде простые задачи руками легко, но и польза от автоматизации будет.
    Выбирайте удобный и приятный для использования именно вам инструмент, а не то что советую откружающие. Одно время все говорили - бери bash крутой скриптовый язык, мегакруто, мегаудобно... ага, но мне почему то на php скрипты общего назначения писать получается гораздо удобнее, и читабельнее абракадабры.

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

    Чтобы научиться писать код, надо писать код. Да, даже если не получается просто брать и решать задачу, даже если ее решения не видно.
    Ответ написан
    Комментировать
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    EvgenyMamonov
    @EvgenyMamonov Куратор тега Go
    Senior software developer, system architect
    Бенчмарки - это хорошо, но очень важно понимать что именно там меряли и почему результаты именно такие.

    Несколько лет назад я тоже делал бенчмарки Python, PHP, Node, Go.
    Для меня были важны две вещи:
    1 - скорость ответа сервера/кол-во запросов в секунду
    2 - объём сервиса в памяти, т.к. от этого зависит стоимость ресурсов

    На тесте, где сервисы не делали запросы в базу - из всех четверых лучше всего отработал Go с приличным отрывом, цифры, к сожалению, уже не помню.

    Но вся эта разница сошла на нет, как только добавился всего один простой SQL запрос в базу, в таблицу с 10 строками. И на этом фоне разница по скорости ответа была меньше 10%.

    Иными словами если ваш сервис работает с базой - критической разницы по скорости работы между Go/Rust/PHP/Node/Java, особо не будет.

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

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

    Один экземпляр Go занимал в памяти порядка 6мб RAM, при том, что Pytho+Django порядка 60мб.
    Node уже не помню сколько, но что-то близкое к Python'у.

    Вот тут уже, когда серверов у вас будет много - количество серверов с Go у вас будет в 10 раз меньше, соответственно расходы за эти сервера у вас будут в 10 раз меньше :)

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

    Где-то читал статью, что у людей было API на порядка 40 серверов на Node, после переписывания на Go - серверов осталось два, из которых второй запасной :)
    Ответ написан
    13 комментариев
  • Как обновить сайт из git репозитория?

    BorLaze
    @BorLaze
    Java developer
    Не надо загружать ветки. Ветка - для разработки. master - для "боевого кода".

    Релизуем фичу в ветке, проверяем, если считаем, что все ок, мержим ее в мастер.
    На коммит в мастер стартует CI/CD, который прогоняет тесты (они ведь у вас есть, правда?) и, в случае успешной сборки, проливает код на прод.
    Ответ написан
    1 комментарий
  • Стоит ли учить Jquery в 2021?

    @Guccigang
    Нет, не стоит совсем. Лучше хорошенько подтянуть нативный JS и переходить на React/Vue.
    Ответ написан
    Комментировать
  • Почему многие крупные сайты тормозят по самые помидоры?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    Все очень зависит. Медленно отдавать данные может бэк, или какие-то его части, медленно может в принципе работать ваше интернет соединение, может фронт жрать как не в себя, могут тормозить внешние ресурсы.

    7 баллов из 100

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

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

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

    Чтобы запоминать информацию, ей нужно пользоваться, а не просто складировать в голове.
    Ответ написан
    Комментировать
  • Как запустить несколько сайтов на одном хосте, так чтоб у каждого был свой набор Docker контейнеров и чтоб они были доступны по одному 80 порту?

    Используй traefik в качестве балансировщика. Nginx каждого приложения светить наружу не надо. На руду смотрит только traefik. Что и куда проксировать описывается в labels сервиса в docker-compose
    Ответ написан
    Комментировать