Pull to refresh
0
Ермек Жанабаев @ermek1990read⁠-⁠only

User

Send message

Golang-дайджест № 1  (14 – 31 января 2021)

Reading time3 min
Views7.3K

Свежая подборка новостей и материалов со ссылками

Интересное в этом выпуске 

Поддержка ARM, Движок Diablo 2, Расшифровка паролей из браузеров, Сборщик js – аналог webpack

Приятного чтения!

Читать далее
Total votes 15: ↑14 and ↓1+16
Comments5

11 друзей Sanic’а – собираем асинхронное веб-приложение на Python

Reading time9 min
Views15K
Рано или поздно маленькие приложения разрастаются до нагруженных production-решений, поэтому программисту необходимо заранее продумать стек технологий. Для Python концептуальный выбор стоит между синхронными и асинхронными фреймворками. После появления библиотеки asyncio популярность асинхронных Python-фреймворков сильно выросла, потеснив таких монстров, как Django и Flask, и стало намного проще писать веб-приложения, способные пережить высокий RPS.

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

Статья поможет новичкам посмотреть, как можно использовать вместе различные асинхронные библиотеки. А опытные программисты могут сравнить представленное ниже решение со своими наработками и конструктивно покритиковать.
Читать дальше →
Total votes 28: ↑28 and ↓0+28
Comments10

Когда-то я внедрял ClickHouse в стартапе, где даже алерты мониторили индийцы — это был Дикий Запад

Reading time7 min
Views18K

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

Чтобы мониторить сеть и сервера, можно использовать самый разный софт. Главное — быть уверенным: если что-то пойдет не так, то сработает алерт. Вы увидите уведомление и успеете все починить. У них же было свое представление о мониторинге. Представьте, несколько комнат со столами, стульями и огромными плазмами на стенах, внутри сидят почти два десятка человек. На каждый монитор выведены разноцветные графики и рядом приклеены бумажки с номерами телефонов.

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

Покупка компании обошлась недорого, но содержание такой инфраструктуры стоило заоблачных денег. Индусы использовали дорогущую Vertica, где, кроме оплаты железа, нужно было еще отстегивать за лицензию. Мы решили попробовать переезд на ClickHouse. Это практически бесплатный аналог Vertica. Оба продукта работают по схожему принципу: колоночное СУБД с шардированием, с партиционированием данных.

И это было то еще приключение.

Читать далее
Total votes 34: ↑29 and ↓5+36
Comments28

Унифицируй это: как Lamoda делает единообразными свои Go сервисы

Reading time14 min
Views18K

Мы широко используем микросервисную архитектуру, хоть и не считаем ее панацеей, и чуть больше 2 лет назад начали переходить на язык Go. Он сравнительно прост и, на мой взгляд, очень хорошо подходит для создания простых, небольших и быстрых микросервисов. Эта простота имеет и обратную сторону: из-за неё возникает множество способов решить одну и ту же задачу.


Казалось бы, насколько сильно может отличаться один микросервис, который ходит в базу данных, от другого микросервиса, который ходит в соседнюю базу данных? Например, одна команда использует Go 1.9, glide, стандартный database/sql и одну структуру проекта, а в это же время другая команда использует Go 1.13, modules, sqlx и, конечно же, другую структуру проекта.


Когда один микросервис в компании отличается от другого, а он, в свою очередь, отличается от третьего — это замедляет разработку. А медленная разработка — это убытки повод для оптимизации.


Меня зовут Алексей Партилов, я техлид команды web-разработки в компании Lamoda. В этой статье я расскажу, как мы справляемся с разношерстностью около 40 наших микросервисов на Go. Статья будет полезна разработчикам, которые только вливаются в Go и не знают, с чего начать более сложный проект, чем “helloworld”.


image

Читать дальше →
Total votes 46: ↑40 and ↓6+48
Comments65

Учёные нашли T-клетки, открывающие перспективы универсальной противораковой иммунной терапии

Reading time4 min
Views16K


Учёные из Университета Кардиффа обнаружили новый тип Т-киллеров, которые дают нам надежду на универсальную противораковую терапию.
Т-клеточная терапия — извлечение иммунных клеток, их изменение и возвращение в кровь пациента в целях поиска и уничтожения раковых клеток — новейшая парадигма в лечении рака.

Наиболее широко используемая терапия, известная как CAR-T, персонализирована для каждого пациента, но нацелена лишь на несколько типов рака и не показала успех в лечении опухолей, которые составляют большинство раковых заболеваний.
Total votes 23: ↑22 and ↓1+28
Comments41

Похек Wi-Fi встроенными средствами macOS

Reading time13 min
Views63K


TL;DR Встроенные средства macOS позволяют выполнить некоторые атаки на Wi-Fi-сети. В статье описывается, как с помощью встроенного в Macbook Wi-Fi адаптера AirPort и macOS похекать Wi-Fi.

Обычно для аудита безопасности Wi-Fi-сетей используется классическая связка: виртуалка с Kali Linux + внешний USB адаптер типа Alfa AWU-blabla1337. Но оказывается, что с помощью macOS и встроенного адаптера Broadcom тоже можно делать грязь.

Содержимое статьи:

  • Мониторный режим на встроенном адаптере
  • Расшифровываем WPA трафик
  • Ловим хендшейки и PMKID
  • Собираем под макось пацанские тулзы: hcxtools, hashcat, bettercap
  • Брутим хеши на онлайн-фермах и локально

Йоу, камон мазафака
Total votes 46: ↑45 and ↓1+61
Comments29

История Интернет-порно. Часть 1

Reading time18 min
Views59K
Недавно в статье Великий порноэксперимент: история Интернета для взрослых, мы затронули важную для всех тему, однако упустили полноценную историческую часть, которая не менее важна и интересна, и пожалуй, заслуживает двух отдельных публикаций.

«Интернета просто бы не существовало без порно и Стартрека» — Рик Берман, продюсер телесериала «Звездный путь».

Disclaimer. В статье присутствуют изображения эротического содержания и полностью отсутствует какой-либо порнографический контент. Рассказывается о том, какое развитие обеспечил контент для взрослых в целом для медиаиндустрии и для сети Интернет после её рождения. Вы узнаете историю от порно-театров до наших дней, почему VHS победил BetaMax, о том, как «сисопы» заработали свои первые миллионы долларов на эротическом контенте, распространяя его миллионам человек еще до того, как появился Интернет, то есть тогда, когда в Интернете ещё никого не было. А также то, как Амазон и многие другие онлайн-корпорации, использовали модель Леви для работы с партнёрами, применявшуюся на ранних сайтах для взрослых, и то что двухфакторная идентификация впервые была изобретена для того, чтоб защитить пользователей от нежелательных порнографических email-рассылок, а не только для повышения безопасности.
Total votes 51: ↑46 and ↓5+54
Comments50

Open-source реализации отечественных криптоГОСТов

Reading time2 min
Views60K
На выходных решил поискать open-source реализации отечественных криптографических стандартов. Прежде всего интересовали новые: хэш-функция Стрибог (ГОСТ Р 34.11-2012), Кузнечик (ГОСТ Р 34.12-2015) и ЭЦП (ГОСТ Р 34.10-2012 или 2001 (без 512-бит) ). Старый ГОСТ 28147-89 специально не искал, поскольку найти его реализацию никаких проблем нет уже давно.
Итак, давайте посмотрим, что же получилось. Сразу предупреждаю, что корректность реализаций не проверял.
Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments64

Flutter, руководство для начинающих

Reading time15 min
Views31K
На дворе середина 2019 года, кроссплатформа плотно вошла в жизнь стартапов по всему миру, но все чаще в ее сторону смотрят и команды аутсорс-разработки, и клиенты, которые делают ставку на снижение затрат. Кто-то делает ставку на React Native, кто-то исследует возможности Kotlin Multiplatform, а новый гость подкаста AppsCast Евгений Сатуров saturovv последние полгода активно разрабатывает на Flutter, следит за обновлениями фреймворка и продвигает технологию в массы. Максимум полезных ссылок и советов для начинающего Flutter-разработчика: от гайдлайнов до репозиторием с примерами реализации архитектуры — в разговоре с Евгением.



AppsCast — подкаст, посвященный мобильной разработке и выходящий при поддержке конференции AppsConf. Каждые две недели новый гость, с которым мы с Даниилом Поповым (int02h) обсуждаем технологии, лучшие практики, жизнь разработчиков, а так же холиварим и делимся опытом.
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments9

Обзор 14 headless cms 2019

Reading time25 min
Views40K
Некоторое время назад в одной заметной на российском рынке публичной компании, в которой я работал, встал вопрос об использовании headless cms. Среди множества реализаций нужно было выбрать одну. Это рассказ о том, как я формировал критерии выбора, как анализировал cms-ки, и как этот анализ привел меня к мысли, что нужно писать свою. Обзор 14 headless cms под катом.


Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments10

Компактные строки в Java 9

Reading time3 min
Views15K
И снова здрасьте! Мы открыли очередной набор в, теперь уже девятую, группу «Разработчик Java» (а десятая группа в планах, внезапно, стоит на 31.12) и подготовили для вас интересные материалы и открытый урок.

Так что поехали.

Хотите уменьшить количество памяти используемой вашим Java-приложением? Посмотрите, как можно улучшить производительность с помощью компактных строк, доступных в Java 9.

Одним из решений по улучшению производительности, представленных в JVM (Oracle HotSpot, если быть точным), в качестве части Java SE 9, оказались компактные строки (compact strings). Их задача заключается в уменьшении размера String-объектов, что позволяет уменьшить общий объем (футпринт) памяти потребляемой приложением. В результате, это может уменьшить количество времени, затрачиваемого на сбор мусора.

Читать дальше →
Total votes 31: ↑23 and ↓8+15
Comments33

Тестовый клиент TON (Telegram Open Network) и новый язык Fift для смарт-контрактов

Reading time12 min
Views59K

Больше года назад стало известно о планах мессенджера Telegram выпустить собственную децентрализованную сеть Telegram Open Network. Тогда стал доступен объемный технический документ, который, предположительно, был написан Николаем Дуровым и описывал структуру будущей сети. Для тех, кто пропустил — рекомендую ознакомиться с моим пересказом этого документа (часть 1, часть 2; третья часть, увы, всё ещё пылится в черновиках).


С тех пор никаких значимых новостей о статусе разработки TON не было, пока пару дней назад (в одном из неофициальных каналов) не появилась ссылка на страницу https://test.ton.org/download.html, где размещены:


ton-test-liteclient-full.tar.xz — исходники лёгкого клиента для тестовой сети TON;
ton-lite-client-test1.config.json — конфигурационный файл для подключения к тестовой сети;
README — информация о сборке и запуске клиента;
HOWTO — пошаговая инструкция о создании смарт-контракта с помощью клиента;
ton.pdf — обновлённый документ (от 2 марта 2019 г.) с техническим обзором сети TON;
tvm.pdf — техническое описание TVM (TON Virtual Machine, виртуальной машины TON);
tblkch.pdf — техническое описание блокчейна TON;
fiftbase.pdf — описание нового языка Fift, предназначенного для создания смарт-контрактов в TON.


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

Разберёмся, как это сделать
Total votes 100: ↑94 and ↓6+88
Comments100

GraphQL API (CRUD) на Go

Reading time6 min
Views14K

image


Всем привет! О GraphQL много статей на Хабре, но пробежавшись по ним обнаружил, что все они обходят стороной такой замечательный язык как Go. Сегодня попробую исправить это недоразумение. Для этого напишем API на Go с использованием GraphQL.

Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments9

Картинки в вебе 2019

Reading time7 min
Views14K
Проблема с отображением картинок возникла с момента появления адаптивности в интернете. Мы хотим, чтобы сайт хорошо смотрелся на любом планшете, телефоне, в портретной или ландшафтной ориентации экрана, а также на супербольших дисплеях 5K. Также на рынке появились Retina-дисплеи с высокой плотностью пикселей (DPI), где обычные картинки выглядят размытыми. Растет доля мобильного трафика, и крупные ресурсы нацелены на экономную загрузку изображений. Рассмотрим, как решают эти проблемы на сайтах Apple, Tilda и блог-платформе Medium.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments4

Serverless по стоечкам

Reading time8 min
Views15K

Serverless ― это не про физическое отсутствие серверов. Это не «убийца» контейнеров и не мимолетный тренд. Это новый подход к построению систем в облаке. В сегодняшней статье коснемся архитектуры Serverless-приложений, посмотрим, какую роль играет провайдер Serverless-услуги и open-source проекты. В конце поговорим о вопросах применения Serverless.
Читать дальше →
Total votes 22: ↑20 and ↓2+18
Comments7

Путешествия банковской транзакции

Reading time8 min
Views150K
image

Некоторое время назад на Хабре уже мелькали посты о работе банкоматов: один и два, но оба они описывали принципы работы банкоматов и вообще карточного процессинга весьма поверхностно.
Для интересующихся под катом много подробностей работы карточного процессинга банка (много букв).
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments104

JavaScript: 7 полезных мелочей

Reading time4 min
Views23K
Автор заметки, перевод которой мы сегодня публикуем, говорит, что в JavaScript, как и в любом другом языке программирования, можно обнаружить множество маленьких хитростей, предназначенных для решения самых разных задач, как простых, так и довольно сложных. Некоторые из подобных приёмов широко известны, а другие, не такие распространённые, могут приятно удивить тех, кто о них не знает. Сейчас мы рассмотрим 7 полезных приёмов программирования на JavaScript.


Читать дальше →
Total votes 42: ↑38 and ↓4+34
Comments20

TDD: методология разработки, которая изменила мою жизнь

Reading time10 min
Views113K
На часах 7:15 утра. Наша техподдержка завалена работой. О нас только что рассказали в передаче «Good Morning America» и множество тех, кто впервые посещает наш сайт, столкнулось с ошибками.

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

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

image

Автор материала, перевод которого мы сегодня публикуем, полагает, что всего этого можно было бы избежать благодаря TDD.
Читать дальше →
Total votes 48: ↑42 and ↓6+36
Comments107

Создание веб-приложения на Go в 2017 году. Часть 4

Reading time5 min
Views31K
Содержание

В этой части я попытаюсь кратко пройтись по пропущенным местам нашего очень упрощенного веб-приложения на Go.

Читать дальше →
Total votes 22: ↑17 and ↓5+12
Comments77
1
23 ...

Information

Rating
Does not participate
Location
Los Angeles, California, США
Date of birth
Registered
Activity