Pull to refresh
37
0

Товарищ пользователя

Send message

Оптимизация доступа к элементам слайса в Go

Level of difficulty Medium
Reading time 4 min
Views 6K

Привет Хабр!

В своей предыдущей статье про разбор кода победившего в VK Cup'22/23 я описывал как мне удалось ускорить копирование одной картинки в другую в 30 раз с помощью чёрной магии unsafe. Однако я не переставал задаваться вопросом, можно ли увеличить скорость еще больше. Я даже привлёк OpenAI в поисках решения, но он мне помог только с картинкой для обложки статьи. В итоге я нашел способ улучшить код еще в 2 раза. Чем и хочу поделиться.

Читать далее
Total votes 15: ↑12 and ↓3 +9
Comments 12

Golang-дайджест № 15 (1 – 30 марта  2022)

Reading time 4 min
Views 4.8K

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

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

Выпущены версии Go 1.18, 1.17.8, 1.16.15 взлом типов sum с помощью generics, используйте графический процессор Mac M1 с Go, набор инструментов для обфускации сборок Go, библиотека в стиле Lodash для Go 1.18

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

Читать далее
Total votes 15: ↑14 and ↓1 +13
Comments 0

Линтеры в Go. Как их готовить. Денис Исаев

Reading time 16 min
Views 36K

Предлагаю ознакомиться с расшифровкой доклада Дениса Исаева jirfag "Линтеры в Go. Как их готовить."


В go 50+ линтеров: в чем их профит и как эффективно встроить их в процесс разработки? Доклад будет полезен как тем, кто еще не использует линтеры, так и тем, кто уже применяет их: я раскрою малоизвестные трюки и практики работы с линтерами.



Кому интересно, прошу под кат.

Total votes 19: ↑18 and ↓1 +17
Comments 4

Автоматизируем все с Github Actions (Никита Соболев)

Reading time 29 min
Views 24K


Никита Соболев покажет множество функций Github Actions, поделится собственными впечатлениями и болями от первых месяцев использования, покажет, как сделать собственные инструменты.

Читать дальше →
Total votes 21: ↑17 and ↓4 +13
Comments 10

Для любителей программной инженерии

Reading time 3 min
Views 7.2K

Первый раз встретил книгу, в которой автор так конкретно и настоятельно рассказывает про методы декомпозиции требований для разработки архитектуры компонентов/сервисов программной системы, сопровождая описание отличной аргументаций и практическими примерами Я таких хороших описаний ранее не встречал (если кто встречал, поделитесь). Да и вообще, тема декомпозиции требований абсолютно не раскрыта в области Computer Science, всех учат больше кодированию, тестированию и системному дизайну с точки зрения отказоустойчивость. В вот в области декомпозиции требований и solution architect основном доминирует метод “функциональной декомпозиции”, который вроде как вообще растет из ООП и примеров в книгах на тему ООП. Собственно его все и используют, хотя по мнению автора (и не могу не согласиться) он сугубо пагубен и не приводит к возникновению элегантных и хороших архитектур программных систем, наоборот, плодя неэффективности и потери времени и денег при разработке и развитии программных систем.

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

Читать далее
Total votes 8: ↑5 and ↓3 +2
Comments 8

50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков

Reading time 44 min
Views 211K


Go — простой и забавный язык. Но в нём, как и в любых других языках, есть свои подводные камни. И во многих из них сам Go не виноват. Одни — это естественное следствие прихода программистов из других языков, другие возникают из-за ложных представлений и нехватки подробностей. Если вы найдёте время и почитаете официальные спецификации, вики, почтовые рассылки, публикации в блогах и исходный код, то многие из подводных камней станут для вас очевидны. Но далеко не каждый так начинает, и это нормально. Если вы новичок в Go, статья поможет сэкономить немало часов, которые вы бы потратили на отладку кода. Мы будем рассматривать версии Go 1.5 и ниже.
Читать дальше →
Total votes 80: ↑76 and ↓4 +72
Comments 270

Антиспуфинг: как системы распознавания лиц противостоят мошенникам?

Reading time 9 min
Views 14K
В этой статье попробую обобщить информацию о существующих методах liveness detection, которые применяются для защиты от взлома систем распознавания лиц.

facial biometrics

От чего защищаем?


С развитием облачных технологий и веб-сервисов все больше транзакций перемещается в онлайн-среду. При этом более 50% онлайн транзакций (ритейл) совершаются с мобильных устройств.

Рост популярности мобильных транзакций не может не сопровождаться активным ростом киберпреступности.
Случаи онлайн-мошенничества на 81% вероятнее, чем мошенничество в точках продаж.

16,7 млн. личных данных американцев были украдены только за 2017 год (Javelin Strategy and Research). Ущерб от мошенничества с захватом аккаунтов составил $5,1 млрд.

В России, по данным Group-IB, за 2017 год хакеры украли у владельцев Android-смартфонов более миллиарда рублей, что на 136% больше, чем годом ранее.
Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Comments 5

Как пересчитать электронную таблицу

Reading time 13 min
Views 6.3K
Предположим, я заказываю буррито для двоих друзей и хочу рассчитать общую стоимость заказа:



Поток данных в этой таблице немного сложно проследить, поэтому вот эквивалентная диаграмма, которая представляет таблицу в виде графа:



Округляем стоимость буррито El Farolito super vegi до 8 долларов, поэтому при доставке стоимостью 2 доллара общая сумма составит 20 долларов.
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 6

Всё как в жизни: законы проектирования космических кораблей

Reading time 4 min
Views 7.9K

Это перевод оригинальной статьи Дэвида Аткина. Дэвид — инженер, профессор, директор лаборатории космических систем центра робототехники Мэрилэнда. Я работаю продактом-менеджером в ИТ и нашла здесь много релевантных идей. Некоторые законы и вовсе выглядят очень универсальными.

Читать далее
Total votes 30: ↑27 and ↓3 +24
Comments 5

Альтернативы Raspberry Pi

Reading time 8 min
Views 81K

Свет клином не сошёлся на Raspberry Pi, и потому энтузиасты и гики могут экспериментировать с большим количеством самых разных одноплатных компьютеров (SBC). Предлагаю познакомиться с устройствами, которым под силу обрести популярность в 2021 году.

Читать далее
Total votes 67: ↑65 and ↓2 +63
Comments 71

Масштабируем WebSocket соединения на Go

Reading time 21 min
Views 30K
Мессенджер Авито – это:

  • 12 m уникальных пользователей в месяц;
  • Версии для всех современных платформ (Web, iOS, Android);
  • Достаточно нагруженное приложение – около 800 тысяч подключений онлайн по WebSocket (основной протокол общения с пользователями).

Александр Емелин из компании Авито — автор проекта Centrifugo — open-source сервера real-time сообщений, где основной протокол передачи данных как раз WebSocket. Сервер используется в проектах Mail.Ru (в том числе в Юле), а также во внутренних проектах Badoo, ManyChat, частично Авито и за рубежом (например, Spot.im). Сейчас сервер базируется на доступной всем Go-разработчикам библиотеке Centrifuge.

На конференции Golang Conf 2019 Александр рассказал, как команда Авито решала проблемы при работе с WebSocket — как про детали, касающиеся Go в частности, так и вообще про работу с большим количеством постоянных соединений.


Читать дальше →
Total votes 51: ↑50 and ↓1 +49
Comments 1

Узнать врага: как MITRE TTP помогают определить атакующего

Reading time 7 min
Views 3.6K

Количество способов, которые используют хакерские группировки, чтобы атаковать компании, кажется бесконечным, но на самом деле это не так. Практически все тактики и техники киберпреступников проанализированы и задокументированы в общедоступной базе MITRE ATT&CK. В этом посте мы расскажем о том, как во время расследования реального инцидента использование базы MITRE ATT&CK помогло нам выяснить, какая группировка атаковала компанию-клиента.

Читать далее
Total votes 6: ↑6 and ↓0 +6
Comments 0

Деконструкция LSP

Reading time 5 min
Views 5.2K

Здравствуйте, меня зовут Дмитрий Карловский. А вы на канале Core Dump, где мы берём разные темы из компьютерной науки и деконструируем их по полочкам. А на этот раз мы начнём деконструировать принципы SOLID начиная с наиболее конкретного.


В далёком 1987 году Барбара Лисков сформулировала принцип разработки имени себя.


Liskov Substitution Principle

Он позволяет понять правильно вы написали полиморфный код или нет. Но прежде чем его сформулировать нам надо разобраться с некоторыми понятиями, которые входят в определение..


Видео запись этого разбора.

Читать дальше →
Total votes 21: ↑11 and ↓10 +1
Comments 17

flutter_idiomatic – starter-kit успешного проекта

Reading time 4 min
Views 3.7K

Здравствуйте! Меня зовут Андрей. Больше известен, как #кодеротбога (это самоирония, если что). Осваиваю Flutter в режиме «live-code», уже 567 трансляций. Без купюр – «from zero to hero», начиная с учебника по Dart и до полноценного «open-source» проекта в продакшене. А ещё, я скоро заканчиваю собственный онлайн-курс на 100 часов занятий – учитель учится у своих учеников. Благодаря интенсивной практике и предыдущему богатому опыту на ReactJS, сформировал набор соглашений, который хочу представить для получения фидбека: «Ваш звонок очень важен для нас, оставайтесь на линии».


Читать дальше →
Total votes 2: ↑1 and ↓1 0
Comments 3

Go Channels Internals

Reading time 12 min
Views 22K
На Go можно реализовать тысячи goroutine одновременно без больших требований к железу. При этом горутины могут легко и просто обмениваться данными между собой и синхронизироваться с помощью каналов. Но как устроены каналы внутри? Об этом написано не так уж много, а в условиях многопоточки и асинхронного кода хорошо бы не просто работать с каналами, а понимать, как их использовать более практично и эффективно.

Егор Гришечко, старший разработчик в Insolar, разрабатывает блокчейн для b2b сегмента (по сути, стартап), и у команды как раз большая многопоточка и много асинхронного кода. Егор не только разобрался на практике, как работают каналы, что это такое и как они вообще устроены внутри. Он еще рассказал о каналах внутри команды, а потом, увидев интерес, поделился на конференции Golang Conf 2019.

Сегодня мы публикуем расшифровку его доклада.


Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 2

Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть

Reading time 14 min
Views 135K


Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.


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


Небольшая часть урожая


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


Сегодня в меню


  1. Что такое гидропоника и почему она гораздо проще, чем почва с червячками
  2. Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
  3. Питание растения как алгоритм
  4. Как быстро собрать прототип гидропонной установки
  5. Что такое capsicum chinense и как выжить при дегустации
Total votes 248: ↑248 and ↓0 +248
Comments 327

GraphQL и Golang

Reading time 16 min
Views 31K
Технология GraphQL за последние несколько лет, после того, как компания Facebook перевела её в разряд опенсорсных, стала весьма популярной. Автор материала, перевод которого мы сегодня публикуем, говорит, что попробовал работать с GraphQL в среде Node.js и на собственном опыте убедился в том, что эта технология, благодаря её замечательным возможностям и простоте, неслучайно привлекает к себе столько внимания. Недавно он, занимаясь новым проектом, перешёл с Node.js на Golang. Тогда он и решил испытать совместную работу Golang и GraphQL.


Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Comments 11

Автоматизация выявления модификаций в образе договорных документов с помощью модели N-грамм

Reading time 12 min
Views 2K


Каждый современный человек знает о том, что подписывать какой-либо документ нужно не раньше, чем его прочитал. Нарушившие это несложное правило иногда удивляются неожиданным последствиям, которых можно было бы избежать, если до подписания изучить документа, включая то, что написано мелким шрифтом. Уловки в договорах со стороны поставщиков услуг используются как составная часть анекдотов и кинофильмов. Например, в фильме «Ослеплённый желаниями» главный герой расторг весьма невыгодную сделку с дьяволом, несмотря на незнание условий расторжения договора, описанного в статье 147, параграфа 3, 3-ей части договора. Подобная ситуация иногда возможна в реальной жизни с поставщиками услуг. В интернете можно найти описание курьёзных случаев, когда клиент банка изменил условия договора в свою пользу, и это явилось неожиданностью для банка. В сегодняшней статье мы расскажем про крайне полезный для банков и других кредитных организаций алгоритм, позволяющий в автоматическом режиме выявлять внесенные модификации в образах договорных документов. Так что заглядывайте под кат!
Читать дальше →
Total votes 5: ↑5 and ↓0 +5
Comments 2

Мифы о 152-ФЗ, которые могут дорого обойтись оператору персональных данных

Reading time 10 min
Views 92K
Всем привет! Я руковожу центром киберзащиты DataLine. К нам приходят заказчики с задачей выполнения требований 152-ФЗ в облаке или на физической инфраструктуре.
Практически в каждом проекте приходится проводить просветительскую работу по развенчанию мифов вокруг этого закона. Я собрал самые частые заблуждения, которые могут дорого обойтись бюджету и нервной системе оператора персональных данных. Сразу оговорюсь, что случаи госконтор (ГИС), имеющих дело с гостайной, КИИ и пр. останутся за рамками этой статьи.

Читать дальше →
Total votes 42: ↑41 and ↓1 +40
Comments 72

MQTT/UDP, предвесенние итоги: дистанционная конфигурация и цифровая подпись

Reading time 3 min
Views 4.8K
Зима кончается, и это повод подвести очередную черту и рассказать, что нового появилось в MQTT/UDP.

Для начала, ссылки на предыдущие введение и статью.

Спасибо всем, кто с интересом отреагировал и отдельно тем, кто делился мыслями. Вы мне очень помогли с подходом к цифровой подписи. Итак, что изменилось по крупному:

  • Появился механизм гибкого расширения протокола: Tagged Tail Records, TTRs
  • На его базе сделана схема цифровой подписи пакетов
  • Сделан механизм дистанционной конфигурации компонент
  • Поднят полный цикл CI: сборка, юнит-тесты, сквозные тесты протокола (4*4 языка программирования)
  • Реализация на Си теперь поддерживает разные архитектуры и умеет интегрироваться с разными ОС и мониторами.
  • Есть публичные пакеты для Питона и Луа, хотя, конечно, они уже устарели.

Ну и многое по мелочи: интеграция с OpenHAB, конфиг-файлы и логгинг, проверка совместимости с облачным MQTT сервисом, сделан тестовый пример для Wemos D1 (NodeMCU), сделан тестовый пример для atmega128+ethernet (не ардуино), сделан пример протокольного коннектора на Яве (CCU825), сделан пример информера-контроллера в desktop tray (наконец-то я могу включать свет в комнате в два клика мышки:), и ещё разное.

Теперь по порядку.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 2

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity

Specialization

Software Developer, Software Architect
Golang