Как стать автором
Обновить
-29
0
Андрей @Andrey_Dolg

Full stack

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

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

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

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

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

Мой опыт в Airflow: как повысить стабильность загрузки данных в 5 раз

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 4

Тебе нужна своя стратегия

Уровень сложности Простой
Время на прочтение 10 мин
Количество просмотров 30K

Каждый человек мечтает о лучшей жизни, но не многие "приземляют" свои желания и цели на конкретные задачи сегодняшнего дня.

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

Сейчас мы пройдем путь от вашего прошлого, до вашего будущего; от ваших целей, до задачи на ближайшие 2 часа.

Создать свою стратегию
Всего голосов 50: ↑38 и ↓12 +26
Комментарии 50

Как работает компьютер: глубокое погружение (на примере Linux)

Уровень сложности Сложный
Время на прочтение 48 мин
Количество просмотров 129K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


Наконец, я сломалась и начала это выяснять. Мне пришлось перелопатить тонны ресурсов разного качества и иногда противоречащих друг другу. Несколько недель исследований и почти 40 страниц заметок спустя я решила, что гораздо лучше понимаю, как работают компьютеры от запуска до выполнения программы. Я бы убила за статью, в которой объясняется все, что я узнала, поэтому я решила написать эту статью.


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


Более удобный формат статьи.

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

Оптимизация SQL-запросов в Oracle

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

Всем привет. Меня зовут Михаил Потапов, я - главный системный аналитик компании "Ростелеком Информационные Технологии". В компании занимаюсь разработкой отчетности для сегмента B2B и проектированием хранилища данных, на базе которого эта отчетность функционирует. Работоспособность каждого отчета напрямую зависит от корректно выстроенных SQL-запросов к базе данных Oracle, поскольку при работе с большими объемами данных скорость выполнения запросов может существенно снижаться. Снижение скорости сильно затрудняет работу с отчетами для конечного пользователя, а в некоторых случаях и вовсе делает ее невозможной.

В этой статье мы рассмотрим основные принципы оптимизации запросов в Oracle SQL, которые помогут ускорить работу с базой данных и повысить эффективность работы. Сразу отмечу, что статья рассчитана на junior и middle-специалистов, которые пишут сложные запросы к базе данных, работают с большими объемами данных и при этом ранее с вопросом оптимизации не сталкивались. Статья не содержит подробное руководство к действию, но описывает базовые основы "культуры кода", соблюдение которых позволит снизить нагрузку на БД и даст возможность более эффективно извлекать из нее данные.

Читать далее
Всего голосов 18: ↑14 и ↓4 +10
Комментарии 23

Описательная статистика перформанс-распределений

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

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

Андрей Акиньшин @DreamWalker поговорил об этом в докладе на нашей конференции Heisenbug. И теперь, пока мы готовим следующий Heisenbug (где тоже будут доклады о производительности), решили опубликовать текстовую версию его выступления (а для тех, кому удобнее другие форматы, прикрепляем видеозапись и слайды). Предупреждаем: много букв, цифр, графиков и формул!

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

Я нашёл 213 уязвимостей безопасности в кодовой базе при помощи GPT-3

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

«Меня удручает ваш уровень кибербезопасности»

Краткая сводка: GPT-3 обнаружила 213 уязвимостей безопасности в git-репозитории. Для сравнения: один из лучших коммерческих инструментов на рынке (разработанный респектабельной компанией, которая занимается кибербезопасностью) нашёл лишь 99 проблем; впрочем, этот инструмент предоставляет контекст в более структурированном формате. После ручной проверки случайной выборки 50 из 213 уязвимостей, выявленных GPT-3, только одна оказалась ложноположительной. У обоих инструментов было много ложноотрицательных результатов.
Читать дальше →
Всего голосов 28: ↑25 и ↓3 +22
Комментарии 21

Chrome Headless против cloudflare JS challenge

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

Автоматизация сбора информации с различных ресурсов - обычная задача для людей разных сфер деятельности. Жаль, что не всегда бывает достаточно сделать простой GET запрос и разобрать полученный html. Веб-сайты, с которых собираются данные, принимают защитные меры для предотвращения автоматизированных запросов. Одной из таких мер является использование cloudflare. Сегодня мы посмотрим, как cloudflare выявляет ботов через javascript и коснёмся темы деобфускации скриптов.

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

Блокчейн аналитика в Dune Analytics на примере Uniswap

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

Есть такая платформа Dune Analytics, с помощью которой можно делать аналитику по данным из блокчейна, строить графики и дэшборды. В декабре 2022го в коллаборации с Uniswap они запустили курс 12DaysOfDune, в котором я поучаствовал. Хочу поделиться с вами заданиями первой недели курса и вариантами решений.

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

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

Бесит, что err != nil: главные инсайты из опроса Go-разработчиков

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

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

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

Декораторы, о которых вам не расскажут

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

От переводчика: мне понравился подход к объяснению декораторов, описанный в этой статье, а так как других вариантов перевода я не нашёл, я решил поделиться этим с аудиторией Хабра. Надеюсь что этот текст будет полезен как новичкам, так и опытным программистам.

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

Цель этого краткого руководства — развеять мифы, которые вы слышали о декораторах, и показать вам другие их стороны, о которых вы и не подозревали.

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

Английский, которому меня не учили

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

Или максимы Английского языка, которые бы я хотел знать 20 лет назад.

Чем отличается хороший геймер от плохого? Хороший геймер сидит и изучает игру. Он знает каждый закуток. Он может без запинки назвать все характеристики всех юнитов в Star Craft. А самый крутой игрок знает все пропускные способности желтых, красных и синих конвейеров. А плохой игрок использует чит-коды или assistant apps. 

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

Я не раз в своей жизни слышал, что Английский чрезвычайно сложен. Подобные заявления фактически являются чит-кодом. Вы просто сдаётесь и перестаёте пытаться. А зря. В английском языке есть очень много полезных и понятных вещей. 

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

Okay, let's go...
Всего голосов 135: ↑133 и ↓2 +131
Комментарии 174

Единственный способ полноценного контроля скорости на горных лыжах и сноуборде. Физика

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

В арсенале горнолыжника и сноубордиста есть всего два способа контроля скорости - удлинение траектории и проскальзывание.

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

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

Единственный способ полноценного контроля
Всего голосов 51: ↑39 и ↓12 +27
Комментарии 79

Жарим TOAST в PostgreSQL

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

У нас не подгорит!

Как PostgreSQL хранит большие значения столбцов? Какие явные и неявные ограничения есть у существующего механизма хранения? Что за проблемы вызваны этими ограничениями? И как можно решить эти проблемы, и расширить возможности PostgreSQL? Об этом, и чуть больше - данная статья.

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

Приколы с ChatGPT: обмануть или быть обманутым

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

Привет, Хабр! В этой статье я написал про ошибки и приколы, с которыми я столкнулся за пару дней использования ChatGPT. Сразу оговорюсь — таких жёстких примеров, как на картинке, у меня не было. Но были даже более интересные!

Читать далее
Всего голосов 41: ↑38 и ↓3 +35
Комментарии 89

(не) Безопасный дайджест: космическая социнженерия, сервера нараспашку и атаки на гигантов

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

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

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

Что делают арбитраж боты, что из себя представляет MEV, и почему это проблема всех блокчейнов

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

Disclaimer: обычно я пишу про крипту почти на ежедневной основе в канале миллениалы делают веб3, но когда удается найти что-то особенно интересное, получается лонгрид.

MEV maximum value that can be extracted from block production in excess of the standard block reward and gas fees by including, excluding, and changing the order of transactions in a block [initially referred to as "miner extractable value" во времена майнеров и PoW, но после мерджа у нас ни первого ни второго].

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

Assuming searchers are economically rational, the gas fee that a searcher is willing to pay will be an amount up to 100% of the searcher's MEV.

Но фокус в том что за одну транзакцию могут бороться много серчеров сразу (например в случае дексов) и газ физ могут правда доходить до 90% от MEV.

Так как стоимость транзакции = цена за газ * количетсво газа, а цена за газ -- высоко конкурентная переменная, появились програмируемые транзакции которые минимизируют необходимое количество газа.

Каким образом можно минимизировать необходимое количество газа:

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

Оконные функции SQL простым языком с примерами

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

Привет всем!

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

P.S. Если автор что-то не разобрал и не написал, значит он посчитал это не обязательным в рамках этой статьи))) 

Для примеров будем использовать небольшую таблицу, которая показывает оценки учеников по разным предметам. В БД табличка выглядит следующим образом

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

Добавляем ботов в мультиплеерный шутер на Unity

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

С ростом проекта в него приходит постоянно приходит новая аудитория: как матерые игроки, так и новички в жанре. Закинуть всех в один матч можно, но первым будет скучно, а вторым — сложно. В итоге всех можно потерять уже на старте.

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

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

Читать далее
Всего голосов 47: ↑46 и ↓1 +45
Комментарии 2

Взлом ГПСЧ с помощью машинного обучения

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

Выдача XORShift кажется случайной

Исследователь Мостафа Хассан (Mostafa Hassan) сумел взломать два генератора псведослучайных чисел (ГПСЧ) с помощью машинного обучения. Обученная двуслойная нейросеть предсказала выдачу генератора xorshift128 с точностью 100%.

Во второй части своей работы Мостафа описал ещё одну нейросеть, которая взломала популярный генератор Mersenne Twister (вихрь Мерсенна, MT, MT19937) тоже с точностью 100%.
Читать дальше →
Всего голосов 32: ↑32 и ↓0 +32
Комментарии 14

Информация

В рейтинге
4 318-й
Откуда
Bansko, Blagoevgrad, Болгария
Зарегистрирован
Активность