Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    UniServer
    @UniServer
    насчет мемкешеда - я ничему не удивлен, на чтение это хорошее речение, но если у тебя начинает вылетать определенное кол-во апдейтов - мемкешед становится не просто узким местом, он становится реально проблемой)
    кстати проблемой которую легко решает редис)
    Roman Levishchenko
    @index0h
    На счет мемкэша - столкнулись с multiget/multiset ~30% ожидания при выполнении (по результатам профайлера). Сомневаюсь что redis решит эту проблему так как вытеснений довольно много.
    UniServer
    @UniServer
    через бинарное дерево не вышло срезать нагрузку ?
    ну и я бы на хайлоаде, не делал за раз выборку большого количества ключей, все-таки это атомарка, пока идет атомарка - оежит мютекс(лок) я бы попробовал вынести индексы кудато в канкаррент хэшмап
    раз в тик я бы его дублировал на ноды, ложил бы на локальный хэшпам райт мютекс, после дублирования открывал бы уже для рид мютексов которые между собой не создавали бы локов на чтение, чтолько на запись
    UniServer
    @UniServer
    как то так) правда это если там объемы не космические)
    Oleksandr Mosur
    @johnnywidth
    ребята, кто на чем по большей части пишет проекты, я имею ввиду основная работа?
    я с go пару месяцев, сам на php пишу, в последнее время работаю с magento
    Oleksandr Mosur
    @johnnywidth
    может есть у кого ссылки на хорошие best практики тех же restfull api, не hello world, а нормальные, человеческие решения, с подключением к базам, пробрасыванием их внутрь приложения, т.е. к хендлерам, как следить за завершением коннектов, использование middleware. В общем в таком духе не хватает материалов. А то после мира скриптового, не строго типизированого языка, как то много вопросов появляеться в ходе написания не больших вещей. Буду рад вашему отклику)
    Roman Levishchenko
    @index0h

    Основная - php.
    По поводу лучших практик: на каждой работе и каждом проекте они отличаются)) Из самого базового - можешь почитать Макконнелла. На счет "golang best practies" - подбирайте под проект с помощью компании добра))

    По поводу материалов, рекомендую почитать как сделано чужое https://github.com/avelino/awesome-go.

    Oleksandr Mosur
    @johnnywidth
    Если ты о "совершенном коде" макконела, то читал, хорошая книга))
    Roman Levishchenko
    @index0h

    @/all Всем привет.
    Недавно очень заинтересовался подходом микросервисов. Кто-то может поделится опытом по таким пунктам:

    1. Есть ли альтернативы Consul, как Discovery Service?
      По ковырял на досуге, штука интересная, но не хочется стать жертвой эффекта утенка))

    2. Как стоит подходить к логгированию?

      • Централизированно по Logstash+ElasticSearch+Kibana стеку, например отправляя логи по udp на вход Logstash
      • Децентрализированно, аля в файл
      • Комбинировано, logstash должен сам подсасывать логи из каждого сервиса
    3. На счет сбора метрик:

      • На сколько зрел InfluxDB И есть ли кейсы, когда его противопоказано применять?
      • Если есть опыт и с InfluxDB и с statsd+grpahite - очень интерстно сравнение.
    4. По реализации внутреннего протокола общения сервисов:

      • Очень интересны минусы protobuf в сравнении с например json
    Roman Levishchenko
    @index0h

    По поводу организации самого кода

    Интересны комментарии по проектам: https://github.com/gocircuit/circuit И https://github.com/koding/kite

    Yehor Smoliakov
    @egorsmkv
    Тест
    Nikolay Kirsh
    @xboston
    @eg0r тест пройден
    TheMrViper
    @TheMrViper
    Как в GORM проверять произошла ли ошибка?
    Например при gorm.DB.Create(*struct)
    Roman Levishchenko
    @index0h

    http://godoc.org/github.com/jinzhu/gorm#DB.Create
    func (s DB) Create(value interface{}) DB
    Походу ошибка в случае появления должна быть в *db.Error

    Но стоит перепроверить

    TheMrViper
    @TheMrViper
    именно так)
    TheMrViper
    @TheMrViper

    Вопрос по архитектуре:

    Использую GORM, ну и при авторизации пользователей, заношу указатель на структуру в сессию. Добавил я этой структуре методы, например такие как, AddMoney(sum int). Насколько это правильное решение, учитывая то что, к этому методу обращение только из админки или скрипта робокассы. В самом методе я конечно же перезагружаю структуру наново.
    Еще к примеру у неё есть метод Ban() который может вызвать только администратор.
    Так вот стоит ли городить такое, насколько это плохо?
    Или просто добавить методы авторизации/регистрации и так к каждой структуре, что бы ничего лишнего.

    Roman Levishchenko
    @index0h

    На счет моделей с методами, есть 2 подхода: тонкие модели и толстые модели.
    Тонкие модели (Repository) как праивло более безопасны потому как не содержат в себе логики работы с бд и т.д. Все это выполняет репозиторий. Для крупных проектов - MUST HAVE. Для чего-то на коленке на одну БД - будет накладно.

    Толстые модели (AR) - для мелких проектов более удобны потому как БЛ можно по большей части вместить в модели и не превратить их в шлак.

    --

    По безопасности: если работаешь в комманде - передавая кому-то AR - ты ОБЯЗАН помнить, что на смом деле еще передаешь подключение к БД и всю БЛ этой модели. Например удаление пользователя (даже soft вариант) можно будет выполнить в любом участке кода, где есть доступ к модели.

    У репозиториев такая проблема по сути отсутствует потому как модель сама по себе только хранит данные, максимум что она умеет делать - это проверять их правильность (например граничные диапазоны). Репозиторий в свою очередь получив данные на обработку обязательно их валидирует по полной программе, если все ок - выполняет действие, если же не ок - сообщает об этом.

    --

    По своему опыту скажу: встречался с не праивльным использованием репозиториев, переписали на AR, получилось лучше. На другом проекте AR - наследие, но он проекту вообще не подходит.

    TheMrViper
    @TheMrViper
    как в Gorm правильно делать LOCK TABLE READ?
    Roman Levishchenko
    @index0h
    raw sql?
    TheMrViper
    @TheMrViper
    кроме этого, есть еще что то? всмысле встроенное в GORM
    Roman Levishchenko
    @index0h
    На сколько я понял нету
    bubblehub
    @bubblehub
    Роман спасибо за видео по Go/ Не останавливайтесь :)
    Sunil
    @Suneal
    NO english?
    Sunil
    @Suneal
    What do you guys use to debug ing go?
    Alexander Popov
    @ruelephant
    @Suneal u have problem? :)
    всем привет
    Alexander Popov
    @ruelephant
    роман, сделайте копилку для пожертвований :)
    Alexander Popov
    @ruelephant
    живые то есть?
    Oleksandr Mosur
    @johnnywidth
    есть слак чат по Go -> http://4gophers.ru/slack
    там походу живее идет)
    TheMrViper
    @TheMrViper
    Всем, привет)
    кто что может сказать?
    neekolife
    @neekolife
    всем првет
    Alex Ivanov
    @contributorpw
    Всем привет. Есть ли актуальный список литературы уже на русском языке? Мне нужно для заказа в публичную библиотеку.
    Vitalii
    @Crandel
    Всем привет, я тут статью написал, вдруг кому пригодится
    https://habrahabr.ru/post/303600/
    Shane Matte
    @shanematte
    Всем привет! В чем ошибка, я уже З**лся, cannot find package "github.com/gorilla/websocket"
    Ahsaan-566
    @Ahsaan-566
    What does this piece of code means?
    adjMatrix = make([][]float64, numCities)
    yash-sri
    @yash-sri
    Hi all I just wanted know is there any library available in golang which will give me the real time logs of the application on any webpage....
    yash-sri
    @yash-sri
    truth adjuster
    @truthadjustr
    nice..checking on it
    Alexander Garin
    @legion-zver

    Все привет, я на go написал web Фреймворк под воздействием gin... Поюзайте пжлста, очень хочется критики и предложений ;))

    http://github.com/itrabbit/just

    Muhammad Sadiq
    @mdsadiq
    Is there any configurable library available that can be used to send notification in all medium[sms,email,push] ?
    Nsamba i
    @i_nsamba_twitter
    hello, am having this Error: Read-only file system, when I run mkdir -p $GOPATH on mac...