• Как работать с сессиями в golang?

    @pcdesign
    Пользователь вводить данные, потом они сверяются с БД и если все правильно то должна генерироваться сессия?


    Верно.

    Предположим мы сгенерировали сессию, а что дальше, грубо говоря как понять что Иван это Иван а не Коля?


    Ну, внутри сессии в зашифрованном виде обычно хранится id юзера.
    session.Values["user_id"] = "123"

    Следуйщий вопрос, за что отвечает "something-very-secret" в переменной store и зачем он нужен?


    Это ключ шифрования. Чтобы в куках браузера хранить не в открытом виде данные, а в зашифрованном.

    И последний вопрос, на странице Gorilla sessions наткнулся на пакет https://github.com/boj/redistore , зачем он нужен?


    Это способ хранения сессий на бакэнде, в данном случае в базе данных редис.
    Но, к этому способу стоит подходить, когда он на самом деле нужен.
    Ответ написан
    Комментировать
  • В чём разница между json.Unmarshal и json.NewDecoder?

    json.NewDecoder используется при взаимодействии с API, а json.Unmarshal при работе с данными из памяти - например забрали массив данных с базы и потом обрабатываем его
    Ответ написан
    Комментировать
  • В чём разница между json.Unmarshal и json.NewDecoder?

    @ghostiam
    На Go писатель, серверов пинатель.
    json.Unmarshal использует массив байт, а json.NewDecoder это потоковый парсер, которому не нужно сразу хранить в памяти все данные для парсинга.

    Для парсинга json из файла или из запроса, я бы советовал json.NewDecoder, так как он будет меньше потреблять памяти (не нужно заранее считывать в память массив байт).
    Ответ написан
    Комментировать
  • Какую литературу можно найти по golang?

    @programrails
    Я бы рекомендовал изучение в такой последовательности:

    Beginner level (синтаксис языка):

    1. Начать с golang-book.ru . Это на русском и довольно неплохо для начинающего.

    2. https://golang.org/doc/effective_go.html - это уже на английском, но всё равно толково и хорошо заходит после 1-го пункта. Кратко, по делу, без воды, достаточно понятно.

    После прочтения этих 2 пунктов у Вас уже будут базовые понятия о языке.

    Intermediate level (concurrency - многопоточность):

    Как ни пытался, не смог определить какую-то конкретную универсальную книгу. На этом уровне много плохих книг, сложно выделить что-то хорошее. Относительно неплохими для этого уровня (пока что) показались:

    (продолжаем последовательность изучения Go по пунктам):

    3. Базовый веб сервер на Go Статья, без которой дальнейшее трудно заходит (книгоавторам всем дружно лень такое нормально объяснить).

    4. M. Curtis - Level Up Your Web Apps With Go
    Читал - и не понимал - что происходит? Чувак явно пишет рельсы на Go! Всё такое до боли знакомое... Что такое? А потом смотрю в профиле https://www.linkedin.com/in/mal-curtis/ - так он же пишет на работе на Ruby on Rails! Так что книжка отлично зайдёт рельсовикам, осваивающим Go. Книга неплохая, автор явно старался. Автор, ты хороший человек.

    5. K. Cox-Buday - Concurrency in Go. Tools and Techniques for Developers. Книга не очень удачная, но пока я не успел найти что-то получше. Автор - женщина, и глупая. Книга читается мучительно и крайне медленно. Охват материала неплох - но объяснения косноязычные, с водопадом лишних слов и эмоций, примеры кода неоправданно переусложнены, ряд тем вообще остались бы непонятыми, если бы не гугление. Читаю и матерюсь на каждом шагу.
    PS Последние 2 главы пошёл уже такой горячечный бред, что я просто не смог заставить себя читать этот ужас. Бросил. В общем, далее параграфа Queuing читать не стоит. Книга прекрасно иллюстрирует тезис, что, какими бы умными ни были женщины, они всё равно дуры, и нечего им в программировании делать (кроме разве что 1С).
    К сожалению, книгу прочесть всё-таки надо, ибо охват хорош - а заменить книгу особо нечем (в смысле другой книгой, продаваемой за деньги - разве что статьями).

    Есть ещё книга N. Kozyra - Mastering Concurrency in Go - но у неё ужасные отзывы - да и я пытался читать другую книгу по Go у этого же автора - и мне также крайне не понравилось.
    Смешно сказать - но по Go нет ни одной путёвой книги про Concurrency (единственное, ради чего Go был создан)!

    6. Лучшее объяснение Go Context, что я пока видел. Оно даже лучше официального (написанного индусом, и оттого плохого).

    7. M. Tsoukalos - Mastering Go - но только Chapter 10: Concurrency in Go – Advanced Topics - и исключая параграф Worker pools (он ошибочный - там ничто не сдерживает размножение горутин - какой же тогда это пул).
    Средне-удовлетворительная глава, звёзд с небес не хватает, интереснее всего был параграф Sharing memory using goroutines - частный пример Катькиного Confinement'а.

    Advanced level (микросервисы на Go):

    Я пытался читать N. Jackson - Building Microservices with Go - это оказалось невозможным, книгу написал какой-то сумасшедший безумец, находящийся в состоянии наркотического опьянения. Отзывы на Амазоне это подтверждают.

    Также я попытался читать M. Ryer - Go Programming Blueprints (2 ed) - только главу Chapter 10: Micro-services in Go with the Go kit Framework - не понравилось. Примеры кода сложноваты (автор пытается построить реальную систему - ну и дурак - вместо того, чтобы ограничиться демо-примером), объяснения сопутствующего материала никакие (по сути, их нет). Бесполезная глава. Несколько тем свалены вместе - но ни одна толком не объяснена. Очень слабенький автор.

    Вердикт: нормальной книжки по теме "Go микросервисы" пока не обнаружено. Придётся изучать эту тематику из статей и инструкций по использованию микросервисных Go-фрэймворков - вот списочек фрэймворков:


    Я начал с gRPC. Сначала прочёл официальную доку по protobuf (включая раздел о Go). Дока оказалась достаточно вменяемой. Но зато официальная дока по gRPC уже оказалась совершенно паршивой. Там 2 примера - попроще и посложней. Писали доку явно последователи тех, кто писал доку к первому ангуляру (т.е. те, кому я бы отрубил обе руки по самые плечи). Понять что-либо без исходников (к статье) - нереально. Но - исходники ещё надо найти, ибо в статье ссылки на них ... нет. Оказалось, исходники тут: https://github.com/grpc/grpc-go/tree/master/exampl... . Но даже с ними - всё довольно непросто понять - даже в простейшем примере. Потому что авторы умолчали о многих важных моментах. Т.к. им в падлу шевельнуть задницей лишний раз. В общем, есть нужда в нормальном авторе, кто опишет, что такое gRPC. Попробуйте почитать статью от Шизы - это слегка окультуренный сокращённый пересказ сложного случая.

    Рассмотрим Go Micro. Продукция очередного кретина (да ещё и спорного качества). Что, скажите, можно понять из таких "объяснений"? Кстати, ищите в Яндексе термин "Service Discovery" - здесь нужно понимать, что это. Посмотрите и Consul. Вот ещё разумная статья о Go-микросервисах. И ещё я понял - без предварительного изучения protobuf и gRPC понять Go Micro будет затруднительно (если вообще возможно). Желаю вам никогда не встретить на работе продукцию этого дегенерата. Go Micro показался мне китайским фонариком со встроенными компасом, радиоприёмником, часами, зарядкой, отвёрткой, точилкой для карандашей, ногтерезкой, и т.д.

    Идём дальше. Go kit производит намного более лучшее впечатление. Правда, документация не полная - автору не хватило терпения её закончить. Но всё же разобраться можно - есть исходники-примеры, снабжённые подробными комментариями. Автор мне понравился.

    Почитайте полезную статью-сравнение.

    Приложение:

    Гоняться за русскоязычными книгами по Golang не рекомендую. Я прочёл на русском:
    - А. Донован, Б. Керниган - Язык программирования Go
    Это совершенно отвратительная бездарная книга.
    и просмотрел оглавление русскоязычной книги:
    - М. Саммерфильд - Программирование на языке Go
    Хотя я её не читал, но беглый просмотр её оглавления создаёт самое негативное впечатление о книге. Такое ощущение, что это целенаправленная диверсия против изучающего golang, с целью развести его на время (прочтения) и деньги (при покупке). Марк Саммерфилд - это профессиональный графоман, посмотрите сами на его карьерный путь: https://www.linkedin.com/in/qtrac/

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

    М. Батчер, М. Фарина - Go на практике - на русском языке - эта книга вроде бы достаточно неплохая, но она для опытного разработчика - и она не излагает системно - а отрывисто.

    Пытаться читать спецификацию языка также не рекомендую - ничего не поймёте:
    https://golang.org/ref/spec

    Заключение

    Нормальной литературы по Go практически нет (кроме азов). Все микросервисные Go-фрэймворки плохо документированы, вынуждая разбираться в них по примерам с исходниками (!).

    Англоязычных книг по Golang в электронном виде бесплатно - много, более 30 (а то и под 50). Многие написаны индусами, или оторванными от жизни вузовскими преподами, или какими-то левыми любителями Go (у таких "книг" даже нет ISBN). Есть даже книги, написанные неграми! Все такие книги требуют осторожного выбора. Почему именно Go вызвал у окружающих непреодолимые позывы к графоманству? Такое впечатление, что многие авантюристы решили "срубить баблишка" на "хайповой" теме. Действительно, найти хотя бы нормальную книгу (не говоря уже о хорошей) - оказывается по факту крайне непросто - почему-то именно к Go примазались многочисленные негодяи и бездари - как ни в каком ином языке программирования.

    Всё, о чём я рассказал в этом посте, доступно бесплатно онлайн в электронном виде (Либген, к примеру).

    В общем-то, основное внимание при изучении Go следует уделить его возможностям по многопоточности (concurrency), которые включают низкоуровневые механизмы (как в C++) типа мьютекса и высокоуровневые механизмы типа каналов. Собственно, это как раз то самое, зачем Go вообще понадобился. Вторая по значимости тема в Go, как мне кажется, это микросервисы.
    Ответ написан
    Комментировать
  • Почему mariadb выдает ошибку: Packets out of order. Expected 0 received 1. Packet size=69?

    WebDev2030
    @WebDev2030 Автор вопроса
    Битриксоид до мозга и костей
    В общем проблема была именно в отсутствии root для любого хоста. Зашел в контейнер, далее вошел в mysql: mysql -u root -p Вводим пароль, если есть и далее
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
    Ответ написан
    Комментировать
  • Кодировка в PHP и MySQL, почему выводятся знаки вопроса?

    @Denis9999 Автор вопроса
    перерыл я кучу статей, исчерпывающих мануалов от людей которых задолбали подобными вопросами на форумах, и ничего не помогало, хоть ты тресни.
    Но решение нашел, надо в файле my.cnf (my.ini) в этой строке указать необходимую кодировку init-connect = "set names utf8"
    Ответ написан
    1 комментарий
  • Как сделать подобный фон?

    bersus
    @bersus
    https://bersus.design
    Если не получается с фоном, почему бы не попробовать absolute positioning с z-index?
    Ответ написан
    Комментировать
  • Изучение golang[курсы]?

    Color
    @Color
    Golang SWE, Cloud & DevOps
    Как правильно отметили комментаторы выше, есть замечательный курс от МРГ, там две части и скоро должна появиться третья. Он условно-бесплатный (можно платить и пройти экзамен на сертификат). Очень годный, там рассматриваются прямо практические задачи и их решение. Подойдет для среднего уровня разработчика, хотя и новичку можно попробовать. По каждой теме есть задания, очень хорошие.
    Первая часть
    Вторая часть

    Также могу порекомендовать порешать задачки на hackerrank.com и codewars.com.

    Посмотрите тур по го - но там совсем базовые вещи. Есть и на русском, кажется.

    Также неплохо будет почитать про бест праксис - это хорошо изложено здесь, но много.
    Также сразу учитесь правильной организации файлов проекта здесь.

    Ну и в целом читайте и смотрите все, что попадется под руку, поможет понять Go-way
    Ответ написан
    Комментировать
  • Как получить значения внутри sizes?

    neuotq
    @neuotq
    Прокрастинация
    У вас json поломанный, там лишнее кавычки вокруг квадратных скобок, в результате внутри photo не набор данных, а строка.
    $json = '{"photo": [ {"markers_restarted":true,"photo":"89f6559651:x","sizes":[["s",858136244,"195d27","LUU541je04g",75,28],["m",858136244,"195d28","5X0nTDYfROQ",130,48],["x",858136244,"195d29","8d1U8WuXDBo",604,225],["o",858136244,"195d2a","Yq9fT1Ueo3A",130,87],["p",858136244,"195d2b","3AiiPHulyak",200,133],["q",858136244,"195d2c","x-B5oe9Myhc",320,213],["r",858136244,"195d2d","RwVnagzyMgo",510,225]],"latitude":0,"longitude":0,"kid":"442decc8b415ad1496eee074ff555262","urls":["v858136244/195d27/LUU541je04g.jpg","v858136244/195d28/5X0nTDYfROQ.jpg","v858136244/195d29/8d1U8WuXDBo.jpg","v858136244/195d2a/Yq9fT1Ueo3A.jpg","v858136244/195d2b/3AiiPHulyak.jpg","v858136244/195d2c/x-B5oe9Myhc.jpg","v858136244/195d2d/RwVnagzyMgo.jpg"]}]}';
    
    $json_decoded = json_decode($json, TRUE);
    
    print_r($json_decoded['photo'][0]['sizes']);
    Ответ написан
    Комментировать
  • Почему click срабатывает 2 раза?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Потому что клик по label вызывает клик по чекбоксу. Можно проверять, откуда пришёл клик, и игнорировать всё, что не от input'а. А лучше - вместо click обрабатывать change.
    Ответ написан
    Комментировать
  • Как сделать обновление консоли с возможностью вводить данные?

    alfss
    @alfss
    https://career.habr.com/alfss
    Остановить отрисовку во время редактирования.
    Ответ написан
    4 комментария
  • Готовый слайдер на jQuery?

    @andreysuha
    Что то знаю
    Ответ написан
    Комментировать
  • Как с помощью js поменять язык на сайте?

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    Всё содержимое сайта должно как-то хранится на двух языках.
    Можно отмечать на странице все "мультиязычные" элементы, и при переключении языка — обновлять их на лету. Для этого нужно чтобы JS загружал откуда-то весь контент страниц на двух языках. И дополнительно использовать Intl для разных дат, списков, и всего такого.

    Но лучше если всё содержимое веб страницы будет генерироваться на сервере в соответствии с выбранным языком. Тогда для переключения языка нужно будет передавать на сервер запрос с параметром. Например это можно оформить как префикс к URL example.com/en/some-path
    Ответ написан
    Комментировать
  • Возможно HTML текст разложить на теги, слова и пробелы?

    DevMan
    @DevMan
    элементарно: любой xml-парсер разложит вход на ноды.
    остальное зависит только от вашей фантазии и способностей.
    Ответ написан
    Комментировать
  • Возможно HTML текст разложить на теги, слова и пробелы?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Самым корректным способом парсить HTML на PHP будет использование модулей DOM и XPath
    https://www.php.net/manual/ru/class.domdocument.php
    Либо обёртку над ними на подобии Simple HTML DOM.

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

    Kozack
    @Kozack Куратор тега JavaScript
    Thinking about a11y
    return axios.post(`https://api.vk.com/method/${method}`, baseParametres)
      .then(answer => answer.request)
      .catch(answer => Promise.reject(answer.error))

    Или так, что почти то же самое
    return axios.post(`https://api.vk.com/method/${method}`, baseParametres)
      .then(({request}) => request)
      .catch(({error}) => Promise.reject(error))
    Ответ написан
    2 комментария
  • Как сделать круговую обрезку аватара?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    На реакте и без библиотек...
    Вспомнился диалог из "Алисы..." (х/ф):
    - Нам надо разделиться...
    - Так, давай разделимся...
    - НО! ВМЕСТЕ!

    В интернете решений с уроками - просто навалом. Видимо, реакт все ресурсы забрал))
    Ответ написан
    2 комментария
  • Как идентифицировать каждый блок в jQuery?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Уберите уникальные id, добавьте общие классы.
    Если id нужен, положите его в data-атрибут корневого элемента комментария.
    Уберите атрибут style, его содержимое разместите в стилях класса соответствующего элемента.
    Вместо переключения двух классов у разных элементов переключайте один - у корневого элемента комментария.

    <div class="comment" data-id="187">
      <a class="comment-edit">Редактировать</a>
      <span class="comment-panel"></span>
    </div>

    .comment .comment-panel {
      display: none;
    }
    
    .comment.editing .comment-panel {
      display: inline;
    }
    
    .comment.editing .comment-edit {
      color: red;
    }

    const containerSelector = '.comment';
    const buttonSelector = '.comment-edit';
    const activeClass = 'editing';
    
    
    // вот вам ваш jquery
    $(containerSelector).on('click', buttonSelector, e => {
      const id = $(e.delegateTarget).toggleClass(activeClass).data('id');
      console.log(id);
    });
    
    // или, к чёрту jquery
    document
      .querySelectorAll(`${containerSelector} ${buttonSelector}`)
      .forEach(n => n.addEventListener('click', onClick));
    
    function onClick() {
      const container = this.closest(containerSelector);
      container.classList.toggle(activeClass);
      const { id } = container.dataset;
      console.log(id);
    }
    Ответ написан
    9 комментариев
  • Рендер содержимого тега в React?

    @i1yas
    В реакте есть конвенция, что теги с маленькой буквы трактуются как html теги, а с большой как компоненты.
    Назовите компонент Footer
    Ответ написан
    2 комментария
  • Как использовать linux сервер на windows 10?

    Kulaxyz
    @Kulaxyz
    Могу лучше
    Мне винда самому нужна бывает иногда, но разрабатываю на linux, просто 2 ос рядом стоят. Если принципиально только Windows, попробуйте Docker использовать.
    Ответ написан
    Комментировать