Как стать автором
Обновить
37
0

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

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

Дерево отрезков

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

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

Читать далее
Всего голосов 7: ↑7.5 и ↓-0.5+8
Комментарии5

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

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров6.1K

Привет Хабр!

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

Читать далее
Всего голосов 15: ↑12 и ↓3+9
Комментарии12

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

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

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

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

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

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

Читать далее
Всего голосов 15: ↑14 и ↓1+13
Комментарии0

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

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

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


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



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

Всего голосов 19: ↑18 и ↓1+17
Комментарии4

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

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


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

Читать дальше →
Всего голосов 21: ↑17 и ↓4+13
Комментарии10

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

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

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

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

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

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

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


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

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

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

facial biometrics

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


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

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

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

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

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

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



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



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

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

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

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

Читать далее
Всего голосов 30: ↑27 и ↓3+24
Комментарии5

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

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

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

Читать далее
Всего голосов 67: ↑65 и ↓2+63
Комментарии71

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

Время на прочтение21 мин
Количество просмотров31K
Мессенджер Авито – это:

  • 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 в частности, так и вообще про работу с большим количеством постоянных соединений.


Читать дальше →
Всего голосов 51: ↑50 и ↓1+49
Комментарии1

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

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

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

Читать далее
Всего голосов 6: ↑6 и ↓0+6
Комментарии0

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

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

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


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


Liskov Substitution Principle

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


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

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

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

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

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


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

Go Channels Internals

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

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

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


Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии2

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

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


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


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


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


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


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


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

GraphQL и Golang

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


Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии11

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

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


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

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

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

Читать дальше →
Всего голосов 42: ↑41 и ↓1+40
Комментарии72

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность

Специализация

Software Developer, Software Architect
Golang