• В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    @mitya_k
    • Первая, причина, Go популярен за свою бедность синтаксиса, кому-то это нравится...
      Для больших компаний типа Google это плюс так, как можно посадить посадить 100500 программистов, которые вынуждены писать очень много однотипного болерплейта кода.
    • Вторая причина, там где требовалось решать низкоуровневые задачи, без бизнес-логики(например, много работать с байтиками), плюс требовалась многопоточность для этого приходилось использовать СИ++. Теперь есть простая альтернатива в виде Go. Опять же это актуально для больших компаний, где есть подобные задачи. Например, писать какой-нибудь парсер террабайтных логов
    • И последняя, можно сгенерить бинарь без зависимостей, что нравится работающим в DevOps, а для скриптования "богатый язык" особо не нужен. Опять же актуально для больших компаний, где есть большие отделы DevOps


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

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    Go > PHP:

    1. Приложения, в которых на инициализацию тратиться очень много времени и это критично. Грубо говоря, когда умирающая модель выполнения не подходит.
    2. Приложения, в которых нужно много памяти для обработки.
    3. Приложения, в которых необходима мультипоточность и реализация задержек во времени.

    PHP > Go:

    1. Приложения, в которых важна скорость разработки, а производительность на втором плане.
    2. Приложения, в которых важна легкость горизонтального масштабирования. Грубо говоря там, где умирающая модель оптимальна.
    Ответ написан
    3 комментария
  • В каких приложениях Go существенно эффективнее чем Node.js и PHP?

    Супер превосходства в производительности и не будет. Но при правильной архитектуре будет нормальное превосходство.
    В nodejs, например, чтобы распараллелить задачу на несколько ядер, нужно делать много доп. движений, вручную раскидывая задачи. В Go это делается автоматически и гораздо удобнее, просто используешь горутины, а рантайм сам беспокоится о том, запустить их конкурентно или параллельно. Ну и плюс, в го ты просто пишешь последовательный код, вместо колбэков, это легче.
    Строгая статическая типизация дает возможность вылавливать много проблем до релиза, код просто не скомпилится, вместо того, чтобы упасть в продакшне. Это очень критично для крупных проектов, над которыми работает много людей. Рефакторинг тоже проще по этой причине. Пхп и нода не дают такой возможности.
    Разработчики на го не редкие и не дорогие, они довольно быстро воспитываются из разработчиков на других языках, что тоже удобно компаниям. Плюс, код довольно стандартен, на го почти нет нескольких способов сделать одно и то же, он прививает единый подход.
    Сумма этих всех факторов и является причиной популярности го.
    Ответ написан
  • В каких приложениях 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 комментариев
  • Как убедить клиента что пора переделать проект?

    Athanor
    @Athanor
    Лайк + Решение: не жмись, нажми
    Давайте по порядку.
    1. Про «делать проще» или «закладывать архитектуру». Вы пошли по первому пути вполне закономерно, потому как зачем клиенту платить больше для решения своей задачи, если можно заплатить меньше? Для него это противоречит здравому смыслу. Поделюсь опытом, мы например работаем так всегда, но с небольшой (на самом деле ключевой) поправкой — мы планируем, как проект будет развиваться дальше и обязательно вместе с клиентом. Когда есть этот план работа строится итеративно, сначала выкатывается минимальная работоспособная версия (mvp), которая покрывает критический контур системы (то, без чего этот продукт точно не будет работать), затем v0, v1 и так далее. Мысль в том, что это нормальная практика. На счет «закладывать архитектуру», а откуда вы знаете какая она должна быть? Хватит пальцев одной руки чтобы посчитать сколько я видел клиентов, которые четко знают, что им нужно и в конце проекта что-нибудь не менялось. Зная это, как можно просчитать архитектуру или хотя бы даже желаемый функционал? Лучше идти итеративно и постепенно достраивать систему.

    2. Теперь про постоянные фичи, костыли и прочее. Тут упираемся в бизнес-аналитику и сбор требований. Нельзя работать в режиме Клиент сказал сделать фичу — Сделали фичу. Да ещё и по нескольку раз в день. Важно моделировать бизнес-процессы и встраивать их в существующую систему, вы-то, видно, это понимаете, но клиент-то — нет. Чтобы он понял это, с ним нужно общаться на его языке и строить работу от бизнеса. Задайте на брифинге вопросы «Какую цель вы преследуете, внедряя эту фичу? Как ещё можно достигнуть этой цели, может есть решение, которое вообще не потребует внедрения никаких фич, может это можно сделать бесплатно? Например у нас есть бизнес-аналитик, который, занимается только этим — задаёт нужные вопросы, объясняет последствия тех или иных решений, затем сам формулирует задачи, переведя их с языка бизнеса на язык разработки и начинается работа.

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

    4. Про, собственно, сам вопрос, как быть и как попробовать объяснить, что накопился огромный техдолг и его нужно рефакторить. Возвращаемся к тому же вопросу, с бизнесом нужно говорить на их языке. Сделайте презентацию, позовите клиента на вечерний чай (или чего покрепче) и покажите как сейчас и как могло бы быть. Покажите, что костыли и плохая архитектура замедляют разработку новых фич, что они УЖЕ переплатили вот *столько-то* и дальше будут переплачивать *вот столько-то* каждый месяц (ну хотябы приблизительно посчитайте). Покажите, что качество продукта неуклонно снижается, что в итоге всё работает медленно и из за этого они теряют клиентов вот в таких-то местах. Объясните, что да, сейчас всё работает и держится на ваших офигенно качественных костылях, но может произойти реальный крах вот *в такой-то момент*. Покажите, где для них наоборот есть точки роста, если сделать как вы говорите.

    Клиент должен быть разрабу друг и партнёр, а не мудак :)

    Надеюсь помог и вы что-то извлечёте из этого текста для себя, вообще чтобы более предметно говорить про это нужно больше конкретики :)

    P.S. Картинки — ТОП орал долго, спасибо)

    Павел Паленин
    Head of design in Athanor
    Ответ написан
    1 комментарий
  • Как использовать менеджеры пакетов? Composer, bower, другое?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Что-то ты запутался:
    * composer - это штука для управления зависимостями бэкэнда
    * bower - это штука для управления зависимостями фронтенда

    ключевые слова тут "управление зависимостями"

    Ты же беспокоишься, что в итоге у тебя будет торчать наружу. Так вот, не /vendor не /bower_components не должны быть доступны. Доступной у тебя должна быть одна директория - public_html в которой у тебя будет index.php и папка assets в которую и будет собираться вся media (css, js, картинки и т.д.). Как это организовать уже второй вопрос, на который тебе ответит гугл по запросу "сборщик проектов".

    И теперь по порядку:
    1) пользоваться отдельно Composer для PHP, и отдельно Bower
    да

    2) Придется параллельно пользоваться двумя разными менеджерами пакетов
    да

    3) Тогда вопрос, где размещать PHP и JS файлы собственно моего проекта? В /vendor и /bower_components?
    да, используй папки по умолчанию

    4) как это все организовать правильно, красиво и удобно?
    / .. framework_dirs ..
    /vendor
    /bower_components
    /public_html
    + assets/..
    + index.php

    ** По поводу bower, все что он генерит, многие кладут сразу в public_html, но т.к. у него нет возможности удалять лишние (например из всего пакета jquery оставить только 1 файл jquery.js), то я считаю, что полную папку лучше прятать и деплоить исключительно то, что нужно.
    Ответ написан
    3 комментария
  • Почему загружается только 20 фотографий?

    sayber
    @sayber Куратор тега PHP
    Да, я программирую на PHP и еще асинхронно!
    max_file_uploads
    Ответ написан
    Комментировать
  • Правда что идей для стартапа море?

    pavel_salauyou
    @pavel_salauyou
    Symfony2 & Angular разработчик
    есть идея, с вас разработка и тестирование, доли делим 80% на 20%, аналогов нету!
    Ответ написан
    4 комментария
  • В проектах начал использовать различные СУБД. Какие есть альтернативы phpMyAdmin?

    @bIbI4k0
    Питоню
    adminer.php . Действеннее не бывает. :-)
    Ответ написан
    Комментировать
  • Как осуществить возможность авторизации разных пользователей в разных вкладках или окнах браузера?

    Mr_Franke
    @Mr_Franke
    Front-end developer
    Можно использовать session storage. Он работает по принципу "одно окно, одна сессия" и поддерживается IE8+

    Вот цитата из статьи wiki:
    "Данные размещаются в отдельное для каждого домена локальное хранилище (оно доступно для всех скриптов из домена, который первоначально добавил данные) и сохраняются после закрытия браузера. Сессия сохраняется по принципу одна-страница-одно-окно и ограничивается жизнью данного окна, то есть для каждого открытого окна создается новая сессия, которая прекращает свое существование при закрытии окна и не зависит от домена открывшего ее. Сохранение сессии предназначено для предоставления отдельных экземпляров одного и того же веб-приложения для работы в разных окнах, не мешая друг другу[6]. В случае с Куки подобное становится крайне затруднительно или даже невозможно."
    Ответ написан
    Комментировать
  • Как осуществить возможность авторизации разных пользователей в разных вкладках или окнах браузера?

    tyzhnenko
    @tyzhnenko
    System Administrator, DevOps, QA Engineer
    Делаете wildcard домен в DNS сервере. *.user.domain.com.
    Куки ставите только для определенного домена.
    При заходе на www.domain.com есть только доступ к открытым данным или форма авторизации. При успешной авторизации перенаправляете пользователя на "свой" домен.
    Ответ написан
    Комментировать
  • Как осуществить возможность авторизации разных пользователей в разных вкладках или окнах браузера?

    Mandor
    @Mandor
    Вот пришло в голову: сделайте на сайт два алиаса: www.site.ru и www2.site.ru, ну и в случае если пользователь залогинен при повторном логине отправляйте на второй вариант (как вариант подойдет www.site.ru/1/ и www.site.ru/2/).
    Ответ написан
    Комментировать
  • Какую ОС лучше использовать для веб-программиста?

    поддерживаю вариант с виртуальными машинами...
    Ответ написан
    5 комментариев
  • В какой программе удобнее всего рисовать схему БД?

    @v_prom
    Ответ написан
    Комментировать
  • Планирую переход на linux, какой дистрибутив выбрать?

    А чем так уж плох микрософт для вас? Поставьте себе виртуал бокс и балуйтесь линуксом.
    Ответ написан
    3 комментария
  • Какой существует наиболее удобный на ваш взгляд способ работы с XML на JavaScript в AJAX приложениях?

    Для JavaScript очень много библиотек написано. Выбор зависит от задачи.

    Если нужно именно пробегать по XML - то есть SAX-парсеры. Хотя сомневаюсь, что это то, что вам нужно. Тут впору задуматься об использовании XSLT-преобразований.

    Можно преобразовать в JSON.

    Можно пользоваться XPath-выражениями. Они реализованы в jQuery например, но использует внутри querySelector().
    Ответ написан
    Комментировать
  • О требованиях к соискателю на должность программиста

    @switlle
    Моё мнение такое: Из каждой строки вычеркните одно - и получится разработчик хорошего уровня.
    Ответ написан
    Комментировать
  • Количество товаров в корзине — какое значение правильно выводить?

    3vi1_0n3
    @3vi1_0n3
    Правильнее и в видах товаров и в количестве штук.
    Ответ написан
    Комментировать
  • MyISAM vs InnoDB vs Что-нибудь

    bolnikh
    @bolnikh
    MyISAM гораздо быстрее, и если не страшно потерять часть данных, то можно использовать его. НО… MyISAM блокирует всю таблицу при вставке — и при некоторой нагрузке может случиться неприятное — запросы встанут в очередь. Так что надо тестировать.

    Лучше использовать хранилище данных в памяти — Redis, memcache — там проблем со вставками не будет. Но придется переписывать приложение, логика работы хранилищ в памяти совсем другая.
    Ответ написан
    Комментировать