Как стать автором
Обновить
52
0
Абдуллин Дамир @damirazo

Ведущий разработчик ПО

Отправить сообщение

Шаблон backend сервера на Golang — часть 1 (HTTP сервер)

Время на прочтение 17 мин
Количество просмотров 31K

UPD. Ссылка на новый репозиторий проекта с поддержкой развертывания в Kubernetes


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


Шаблон включает:


  • Передачу параметров сервера через командную строку github.com/urfave/cli
  • Настройка параметров сервера через конфигурационный файл github.com/sasbury/mini
  • Настройка параметров TLS HTTP сервера
  • Настройка роутера регистрация HTTP и prof-обработчиков github.com/gorilla/mux
  • Настройка уровней логирования без остановки сервера github.com/hashicorp/logutils
  • Настройка логирования HTTP трафика без остановки сервера
  • Настройка логирования ошибок в HTTP response без остановки сервера
  • HTTP Basic аутентификация
  • MS AD аутентификация gopkg.in/korylprince/go-ad-auth.v2
  • JSON Web Token github.com/dgrijalva/jwt-go
  • Запуск сервера с ожиданием возврата в канал ошибок
  • Использование контекста для корректной остановки сервера и связанных сервисов
  • Настройка кастомной обработки ошибок github.com/pkg/errors
  • Настройка кастомного логирования
  • Сборка с внедрением версии, даты сборки и commit

Вторая часть посвящена прототипированию REST API.


Третья часть посвящена развертыванию шаблона в Docker, Docker Compose, Kubernetes (kustomize).


Пятая часть посвящена оптимизации Worker pool и особенностям его работы в составе микросервиса, развернутого в Kubernetes.


Ссылка на репозиторий проекта.

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 7

RabbitMQ против Kafka: отказоустойчивость и высокая доступность в кластерах

Время на прочтение 14 мин
Количество просмотров 38K


Отказоустойчивость и высокая доступность — большие темы, так что посвятим RabbitMQ и Kafka отдельные статьи. Данная статья о RabbitMQ, а следующая — о Kafka, в сравнении с RabbitMQ. Статья длинная, так что устраивайтесь поудобнее.

Рассмотрим стратегии отказоустойчивости, согласованности и высокой доступности (HA), а также компромиссы, на которые приходится идти в каждой стратегии. RabbitMQ может работать на кластере узлов — и тогда классифицируется как распределенная система. Когда речь заходит о распределенных системах, мы часто говорим о согласованности и доступности.

Эти понятия описывают, как система ведет себя при сбое. Сбой сетевого соединения, сбой сервера, сбой жесткого диска, временная недоступность сервера из-за сборки мусора, потеря пакетов или замедление сетевого соединения. Все это может привести к потере данных или конфликтам. Оказывается, практически невозможно поднять систему, одновременно и полностью непротиворечивую (без потери данных, без расхождения данных), и доступную (будет принимать операции чтения и записи) для всех вариантов сбоя.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Комментарии 4

56 проектов на Python с открытым исходным кодом

Время на прочтение 13 мин
Количество просмотров 97K
image

1. Flask


Это микро-фреймворк, написанный на Python. Он не имеет валидаций для форм и уровня абстракции базы данных, но позволяет вам использовать сторонние библиотеки для общих функций. И именно поэтому это микро-фреймворк. Flask предназначен для простого и быстрого создания приложений, а также является масштабируемым и легким. Он основан на проектах Werkzeug и Jinja2. Вы можете узнать больше о нем в последней статье DataFlair о Python Flask.

2. Keras


Keras — нейросетевая библиотека с открытым исходным кодом, написанная на Python. Она удобна для пользователя, модульная и расширяемая, а так же может работать поверх TensorFlow, Theano, PlaidML или Microsoft Cognitive Toolkit (CNTK). В Keras есть все: шаблоны, целевые и передаточные функции, оптимизаторы и многое другое. Он также поддерживает сверточные и рекуррентные нейронные сети.

Работа над последним проектом с открытым исходным кодом на основе Keras — Классификация рака молочной железы.
Читать дальше →
Всего голосов 37: ↑30 и ↓7 +23
Комментарии 21

Очень много YouTube-каналов для прокачки английского языка для программистов

Время на прочтение 4 мин
Количество просмотров 60K
Привет, Хабр!

С помощью YouTube можно ощутимо и сравнительно быстро улучшить английский.
Понимание на слух как минимум. Истина не нова, но мало кто смотрит английский YouTube, потому что легко потеряться в бесконечности каналов. Но для вас я собрал самые стоящие каналы!

Добавляйте в закладки и подписывайтесь на меня!
Дальше вас ждет много крутых статей.

Поучить английский


AJ Hoge. На его канале есть всё: от базовых слов до размышлений о важности языка тела в общении. Чувак пилит видосы уже много лет, материальчик накопился.

EngVid. Если бы можно было выбрать что-то одно для улучшения английского, то это оно. Разные преподы и тематики, постоянное обновление, бездонный ресурс. Ещё сайт одноимённый крутой, с удобной навигацией — можно найти очень узкую тему по интересам.
Читать дальше →
Всего голосов 59: ↑52 и ↓7 +45
Комментарии 19

Шпаргалка по структурам данных в Go

Время на прочтение 6 мин
Количество просмотров 63K

Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
Читать дальше →
Всего голосов 52: ↑47 и ↓5 +42
Комментарии 10

Microsoft рассказала о стоимости платной поддержки Windows 7

Время на прочтение 2 мин
Количество просмотров 28K


С 14 января 2020 года Windows 7 превратится в тыкву перестанет получать обновления. Microsoft прекращает поддержку этой ОС, но оставляет возможность платной подписки на обновления — это необходимо, например, компаниям, которые не могут отказаться от «семерки» в силу ряда причин.

Ранее стоимость не была озвучена, представители корпорации лишь заявили, что цена будет повышаться год от года. Собственно, это достаточно логично — ни один программный продукт не может поддерживаться бесплатно в течении многих лет. Необходимо выделять на это ресурсы, и понятно, что Microsoft не желает делать это бесплатно. Так вот, сейчас компания рассказала о том, сколько будет стоить подписка на обновления «семерки».
Читать дальше →
Всего голосов 27: ↑24 и ↓3 +21
Комментарии 60

Telegram как корпоративный стандарт

Время на прочтение 4 мин
Количество просмотров 29K
Эффективная коммуникация в команде — как хорошие дороги в стране: без них только на трехколесных телегах за три месяца из Москвы в Питер, а не сильную экономику строить. И, если в команде нет удобных коммуникационных инструментов, работать такая команда будет трудно и неэффективно. У нас в ИТ тоже бывают сложности с коммуникациями. Когда тебе нужно кому-то написать, то не знаешь, куда податься: кто-то предпочитает почту, у кого-то есть Viber, у кого-то WhatsApp, у кого-то Facebook Messenger. Приходится тратить массу времени только на то, чтобы выяснить, как лучше всего связаться с человеком, не говоря уже об использовании зоопарка каналов. Более того, без налаженных коммуникаций вырастают накладные расходы при работе сотрудниками, работающими удалённо. И несколько месяцев назад я понял, что так продолжаться больше не может и пора прийти к единой модели.
Читать дальше →
Всего голосов 46: ↑24 и ↓22 +2
Комментарии 156

База данных штрихкодов скачать бесплатно без регистрации (и прочей хурмы)

Время на прочтение 5 мин
Количество просмотров 87K
Добрый день. В открытом доступе наконец-то появился огромный справочник штрихкодов с наименованиями товаров, категориями и брендами.

Мы работаем над ним лет 8 и теперь в нем около 3 миллионов штрихкодов в стандартах EAN (EAN-13, EAN-8) и UPC (UPC-A, UPC-E).
Читать дальше →
Всего голосов 114: ↑114 и ↓0 +114
Комментарии 54

Подборка полезных слайдов про Linux

Время на прочтение 1 мин
Количество просмотров 46K
Недавно мы опубликовали перевод журнала про инструменты отладки для Linux, а теперь предлагаем подборку полезных слайдов для начинающих Linuxоводов от того же автора.


Читать дальше →
Всего голосов 60: ↑55 и ↓5 +50
Комментарии 30

Воскрешение трупа. Через четыре года Adobe возобновила цикл обновлений Flash Player NPAPI под Linux

Время на прочтение 3 мин
Количество просмотров 20K


В феврале 2012 года компания Adobe приняла решение прекратить выпуск Flash Player (NPAPI) под Linux. Вместо этого решили в партнёрстве с Google выпускать плагин через единый интерфейс PPAPI (Pepper API) в браузере Chrome, общий для всех платформ. Таким образом, версия 11.2 стала последним обособленным браузерным плагином Flash Player под Linux, хотя для остальных платформ Adobe продолжила осуществлять поддержку, а под Linux выходили только обновления безопасности для 11.2. В то же время, плагин PPAPI обновлялся синхронно с отдельными плагинами под Windows и Mac.

Спустя четыре с половиной года Adobe изменила позицию.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 62

Работа с ВК API при создании игры для ВКонтакте

Время на прочтение 1 мин
Количество просмотров 9.2K
Около полугода назад был снят часовой видеовыпуск о том, как просто написать игру для социальной сети ВКонтакте, в котором никак не затрагивалась тема использования ВК API. В этом небольшом видеокурсе я хочу показать наглядность использования ВКонтакте API для ваших будущих или текущих проектов.

Читать дальше →
Всего голосов 13: ↑5 и ↓8 -3
Комментарии 2

Руководство к дескрипторам

Время на прочтение 10 мин
Количество просмотров 165K

Краткий обзор


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

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

Читать дальше →
Всего голосов 51: ↑48 и ↓3 +45
Комментарии 5

Трансформер Lenovo Yoga 2 Pro. Умеет в любой позе

Время на прочтение 10 мин
Количество просмотров 17K
Производители всё сильнее пытаются подсадить пользователей на относительно новый класс устройств – универсальные трансформеры, планшето-буки. Вариантов множество: кто-то делает отцепляющуюся клавиатуру, а всю начинку прячет в экранный модуль. Кто-то прячет начинку в обе части, так что отцепляемый планшет получается на одной ОС, а «клавиатурный док» позволяет его превратить в полноценный Windows-девайс. Кто-то лепит двусторонний экран, чтобы при закрытии крышки вы могли продолжать работать с сенсорной стороной. Ну а кто-то делает ноутбуки, которые можно развернуть на 360 градусов – сегодня на тесте у нас оказался девайс именно такого типа.



Встречайте – Lenovo IdeaPad Yoga 2 Pro – планшетобук с действительно говорящим названием, ибо без восточных практик так раскорячиться ни у кого не выйдет!
Читать дальше →
Всего голосов 30: ↑24 и ↓6 +18
Комментарии 34

VPN в каждый дом

Время на прочтение 1 мин
Количество просмотров 189K


Всем привет! Желание сделать VPN сервер максимально простым в установке и удобным в использовании назревало уже давно. За основу я взял L2TP/IPsec, эта технология нативно поддерживается всеми устройствами и в отличии от PPTP не вызывает проблем при подключении через сотовых операторов.

tl;dr
Для установки нам потребуется машинка с Ubuntu 14.04 на борту и «белым» IP-адресом, любой VPS подойдет. Достаточно ввести эту волшебную строчку:
 curl -sS https://raw.githubusercontent.com/sockeye44/instavpn/master/instavpn.sh | sudo bash 

и через несколько минут у вас будет рабочий VPN с управлением через браузер (httр://ip-address:8080/) или консоль (instavpn -h).
Читать дальше →
Всего голосов 88: ↑77 и ↓11 +66
Комментарии 245

Как просто написать распределенный веб-сервис на Python + AMQP

Время на прочтение 7 мин
Количество просмотров 28K
Привет, Хабр. Я уже довольно давно пишу на Python. Недавно пришлось разбираться с RabbitMQ. Мне понравилось. Потому что он без всяких проблем (понятно, что с некоторыми тонкостями) собирается в кластер. Тут я подумал: а неплохо бы его использовать в качестве очереди сообщений в кусочке API проекта, над которым я работаю. Сам API написан на tornado, основная мысль была в исключении блокирующего кода из API. Все синхронные операции выполнялись в пуле тредов.

Первое, что я решил, это сделать отдельный процесс(ы) «worker», который бы брал на себя всю синхронную работу. Задумал, чтобы «worker» был максимально прост, и делал задачи из очереди одну за другой. Скажем, выбрал из базы что-нибудь, ответил, взял на себя следующую задачу и так далее. Самих «worker»ов можно запустить много и тогда AMQP выступает уже в роли некоего подобия IPC.

Спустя некоторое время из этого вырос модуль, который берет на себя всю рутину связанную с AMQP и передачей сообщений туда и назад, а также сжимает их gzipом, если данных слишком много. Так родился crew. Собственно, используя его, мы с вами напишем простой API, который будет состоять из сервера на tornado и простых и незамысловатых «worker» процессов. Забегая вперед скажу, что весь код доступен на github, а то, о чем я буду рассказывать дальше, собрано в папке example.
Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Комментарии 22

Очень необычная презентация планшета

Время на прочтение 1 мин
Количество просмотров 569
Попалась замечательная презентация планшета, не смог пройти мимо, не поделившись.



Если б все рекламировали подобным образом, продажи уж точно возросли бы :)
Всего голосов 157: ↑136 и ↓21 +115
Комментарии 29

Бозон Хиггса найден?

Время на прочтение 1 мин
Количество просмотров 1.2K
С большой долей уверенности ожидается, что завтра в 9 утра по восточному стандартному времени (EST) ученые Большого Адронного Коллайдера в ЦЕРН объявят об обнаружении бозона Хиггса с массой 125 ГэВ при уровне статистической достоверности в 3.5 сигма. Несмотря то, что для полноценного утверждения об открытии необходима статистическая достоверность в 5 сигма, все, что больше 3 позволяет заявить о признаках существования частицы.

Насколько показал небрежный поиск в Интернете, два главных детектора ATLAS и CMS независимо друг от друга получили данные о существовании теоретически описанной частицы.

Подробности тут и в Гугле.
Всего голосов 110: ↑96 и ↓14 +82
Комментарии 102

Новичкам про Windows Phone 7

Время на прочтение 5 мин
Количество просмотров 789
По результатам двух мероприятий (BizSparkCamp и Nokia Developers Day) набрал для себя некоторое количество полезной информации про Windows Phone 7. Ранее с этой платформой был практически не знаком по очевидным причинам (в России этих устройств пока нет), так что впечатления абсолютно чистые, ничем не замутненные.

Вкратце: платформа весьма интересная и перспективная, но некоторые идеологические моменты выглядят довольно таки спорными. Подробности — см. ниже.
Читать дальше →
Всего голосов 55: ↑35 и ↓20 +15
Комментарии 40

XNA — Быстрый старт для новичков

Время на прочтение 2 мин
Количество просмотров 4.1K
Не так давно на хабре была опубликована статья XNA/XNA 3.0 – Быстрый старт для профи, которая заставила меня написать свою статью. Мой вариант, эдакий «Быстрый старт для новичков». Я и сам не так давно был «нубом» и еще помню через что мне пришлось пройти.

В данном материале будут представлены ссылки на статьи с которых стоит начать (большинство из них находятся на сайтах, ссылки на которые дал товарищ Zakus в своей статье).

P.S.Это мой первый хабратопик, поэтому просьба громко не ругаться и по возможности сразу указать на ошибки.
Подробности под катом
Всего голосов 15: ↑13 и ↓2 +11
Комментарии 2

Информация

В рейтинге
Не участвует
Откуда
Казань, Татарстан, Россия
Дата рождения
Зарегистрирован
Активность