Pull to refresh
0
0
Send message

Библиотека программиста: книги о том, как построить карьеру в IT

Reading time5 min
Views7.2K

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

Читать далее
Total votes 7: ↑6 and ↓1+10
Comments3

Настоящий хоррор: кибербезопасность в автомобильной индустрии

Level of difficultyEasy
Reading time14 min
Views13K


Автопром сделал первый шаг в цифровую эпоху еще в 1967 году, когда в Германии выпустили Volkswagen Typ 3 с электронной системой впрыска D-Jetronic от Bosch. Сегодня же компьютерные системы управляют почти всеми функциями большинства авто — от режимов работы двигателя до стеклоочистителей.


Как всегда, технический прогресс имеет свою оборотную сторону: чем больше роль ПО в работе техники, тем серьезнее угрозы информационной безопасности. Риски стали выше с появлением так называемых подключенных автомобилей — connected cars. Дошло до того, что хакеры могут дистанционно перехватить контроль над машиной в реальности: теперь это не просто фантазии сценаристов «Форсажа».


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

Читать дальше →
Total votes 32: ↑32 and ↓0+40
Comments34

Самый простой и подробный гайд по конкурентным коллекциям в C#

Level of difficultyEasy
Reading time18 min
Views23K


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

Конкурентные коллекции в C# предлагают встроенные механизмы для обработки конкурентного доступа, что делает их мощным инструментом в программировании с конкурентным доступом.

В рамках статьи я попробую объяснить System.Collections.Concurrent настолько, насколько это возможно, включая примеры и сценарии использования. Также будет затронута тема сравнения с неизменяемыми (immutable) и замороженными (frozen) коллекциями.
Читать дальше →
Total votes 43: ↑41 and ↓2+60
Comments26

Алгоритм Monte Carlo Tree Search простыми словами

Reading time11 min
Views12K

Можно ли научить ИИ играть в настольную игру и выигрывать в ней, если мы сами не знаем как это сделать? Да! И один из способов — использовать алгоритм Monte Carlo Tree Search (MCTS). Он актуален даже сейчас, в эпоху развития нейронных сетей.

У многих людей, в том числе и у меня, поначалу были сложности с пониманием алгоритма, как и с верой в то, что он может хорошо играть. В этой статье хочу рассказать об MCTS максимально просто и помочь разобраться в нем новичкам. В первой главе расскажу об основах, с которыми многие могут быть уже знакомы. Однако считаю, что они действительно важны для понимания. Подробности под катом!
Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments2

Как на самом деле Async/Await работают в C#. Часть 6. Анализ результатов компиляции асинхронных вызовов

Level of difficultyHard
Reading time24 min
Views5.7K

В этой статье мы продолжим разбирать содержание работы Stephen Toub-а: «How Async/Await Really Works in C#». В этот раз, в след за автором исходного Поста мы рассмотрим код, который генерирует C# компилятор для реализации асинхронных вызовов и множество связанных с этим сущностей-понятий-приемов, таких как: контекст исполнения, боксинг, стейт машина, стек, потоки, … Эта 6-я часть, пожалуй, основная часть всей работы, которая непосредственно отвечает на вопрос: «Как на самом деле Async/Await работают (и компилируются) в C#»

Там, где мне придется цитировать содержание исходного текста в переводе (то есть более-менее дословно переводить), оно будет выделено подчеркнутым курсивом.

Возможно вам будет интересно сравнить эту мою работу с первоначальным переводом.

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

Использование Postgres и JSONB для хранения товаров, характеристик и цен

Level of difficultyMedium
Reading time17 min
Views12K

Всем привет! Меня зовут Александр, в данное время я на фрилансе занимаюсь проектом по созданию очередного маркетплейса. В процессе работы мы столкнулись с далеко не новой проблемой организации хранения информации о товарах, имеющих различные характеристики и цену, зависящую от характеристик. На нашем проекте применяется принцип CQRS: запись осуществляется в Postgres, чтение происходит из OpenSearch, а данные между ними перемещаются по шине, реализованной на Kafka. Такой подход обусловил использование реляционной БД для решения несвойственной ей задачи.

Чтобы увидеть, почему эта задача не нак проста, как кажется с первого взгляда, представим, что в нашем каталоге есть футболки мужские всего с двумя атрибутами: цвет и размер. Мы хотим хранить товар с названием "Футболка Junior Developer", она представлена в синем, красном и зеленом цветах, и каждый цвет доступен в нескольких размерах. Добавляя немного сложности, представим, что цена конкретной футболки также варьируется в зависимости от цвета и размера. Как представить эту сущность в реляционной базе данных, с учетом того, что продавец футболки может в какой-то момент добавить новые атрибуты для своего товара, например, габариты упаковки для отправки (длина, ширина, высота)?

С одной стороны, можно использовать подход: Entity-Attribute-Value. Он позволяет гибко настраивать связи между сущностями, их атрибутами и значениями, сохраняя возможность динамического добавления новых атрибутов сущности. Однако у такого подхода есть свои недостатки. На них останавливаться не буду - в статье: "Замена EAV на JSONB в PostgreSQL" они приведены, также там есть сравнение по производительности и памяти EAV и JSONB.

Читать далее
Total votes 13: ↑10 and ↓3+9
Comments15

Как я в Испании с интернетом на горе два года мучился, а Starlink меня спас. Тест интернета от Илона Маска. Часть 1

Reading time7 min
Views21K

«Я джва года ждал» — реально про меня. Только ждал не игры, а нормального интернета, но как раз два года. И вовсе не потому, что интернет-связь в Испании, где живу, плохая. Когда жил под Гранадой, у меня был канал на 300 Мбит/с со стационарной телефонной линией и двумя номерами мобильной связи по цене в примерно 40 евро. За несколько лет работы отключили интернет лишь раз — когда во всем доме что-то там чинили. Все работало без «единого разрыва». Так, два мема в одном абзаце задействовал, теперь уже ближе к делу.

Проблемы начались два года назад, когда я переехал под Валенсию. Поселился в доме на горе — виды красивейшие (можно глянуть вот в этом посте), место крутое, да вот беда — с интернетом тут плохо. Именно потому, что гора. О своих злоключениях и спасении в виде Starlink (с его тестированием, конечно, плюс видео) — под катом.
Читать дальше →
Total votes 88: ↑86 and ↓2+113
Comments103

Погружение в индексы PostgreSQL

Level of difficultyEasy
Reading time9 min
Views29K


Автор статьи: Артем Михайлов

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

Индексы представляют собой структуры данных, которые позволяют базе данных быстрее находить и извлекать информацию. Они аналогичны оглавлениям в книгах, которые упрощают поиск определенной информации, указывая на ее местоположение. Правильное использование индексов может существенно улучшить производительность запросов, сокращая время обработки и уменьшая нагрузку на систему.
Читать дальше →
Total votes 22: ↑14 and ↓8+9
Comments1

Книги, о которых редко говорят

Reading time4 min
Views49K

Дал ему подборку книг, он приходит месяца через два, и с порога такой сразу:
— Я с друзьями не могу разговаривать.
— Ну да есть такой, недостаточек.
интервью Жака Фреско

Читать далее
Total votes 74: ↑72 and ↓2+87
Comments26

Сказ о том, как я за год решил более 600 leetcode задач

Level of difficultyEasy
Reading time7 min
Views93K

Всем салют!

Хочу рассказать вам историю о том, как я начинал с уровня — «не могу решить даже 1 easy задачу из 10» до уровня — «могу решить каждую вторую medium задачу» и прошел несколько coding сессий в таких компаниях как Meta, Booking, Careem, Avito...

Читать далее
Total votes 121: ↑112 and ↓9+129
Comments407

Уровни изолированности транзакций для самых маленьких

Level of difficultyEasy
Reading time11 min
Views20K

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

Если у вас есть собственные кейсы, которыми вы бы хотели поделиться, пишите в комментариях. 

Читать далее
Total votes 13: ↑10 and ↓3+10
Comments9

Курс «PostgreSQL для начинающих»: #3 — Сложные SELECT

Level of difficultyMedium
Reading time12 min
Views34K

Продолжаю публикацию расширенных транскриптов лекционного курса "PostgreSQL для начинающих", подготовленного мной в рамках "Школы backend-разработчика" в "Тензоре".

В этой лекции углубимся в расширенные возможности команды SELECT : как можно "сложить" и "вычесть" выборки (UNION/INTERSECT/EXCEPT), или запомнить и использовать в рекурсивных запросах (CTE), что дают оконные функции (WINDOW) и соединения (JOIN).

Как обычно, для предпочитающих смотреть и слушать, а не читать - доступна видеозапись.

Читать далее
Total votes 32: ↑31 and ↓1+34
Comments7

Современные технологии обхода блокировок: V2Ray, XRay, XTLS, Hysteria, Cloak и все-все-все

Reading time20 min
Views365K

Три месяца назад здесь на Хабре была опубликована статья “Интернет-цензура и обход блокировок: не время расслабляться”, в которой простыми примерами показывалось, что практически все популярные у нас для обхода блокировок VPN- и прокси-протоколы, такие как Wireguard, L2TP/IPSec, и даже SoftEther VPN, SSTP и туннель-через-SSH, могут быть довольно легко детектированы цензорами и заблокированы при должном желании. На фоне слухов о том, что Роскомнадзор активно обменивается опытом блокировок с коллегами из Китая и блокировках популярных VPN-сервисов, у многих людей стали возникать вопросы, что же делать и какие технологии использовать для получения надежного нефильтрованного доступа в глобальный интернет.

Мировым лидером в области интернет-цензуры является Китай, поэтому имеет смысл обратить на технологии, которые разработали энтузиасты из Китая и других стран для борьбы с GFW (“великим китайским файрволом”). Правда, для неподготовленного пользователя это может оказаться нетривиальной задачей: существует огромное количество программ и протоколов с похожими названиями и с разными не всегда совместимыми между собой версиями, огромное количество опций, плагинов, серверов и клиентов для них, хоть какая-то нормальная документация существует нередко только на китайском языке, на английском - куцая и устаревшая, а на русском ее нет вообще.

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

Читать далее
Total votes 126: ↑124 and ↓2+153
Comments136

Гауссов сплэтинг: как это выглядит

Level of difficultyEasy
Reading time11 min
Views16K
Пример работы гауссова сплэтинга. Этот ролик — не видеосъёмка реального мира, а рендер в реальном времени на настольном компьютере

Всплеск внимания к технике сплэтинга связан с представленной в августе этого года статьей 3D Gaussian Splatting for Real-Time Radiance Field Rendering [Трёхмерный гауссов сплэтинг для рендера radiance field в реальном времени]. До этого, в июле, эта научная работа исследователей Университета Лазурного берега, Института информатики Общества Макса Планка и французского Национального института исследований в информатике и автоматике вошла в пятёрку лучших работ SIGGRAPH 2023.

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

Сейчас исследователи бьются над поиском практического применения технологии и сканированием движения. В оригинальной работе речь идёт о воссоздании в первую очередь статичных сцен.
Читать дальше →
Total votes 65: ↑65 and ↓0+65
Comments13

Anki — настолько круто, что я даже представить не мог

Reading time4 min
Views145K

Если вдруг кто не знает, Anki - это бесплатная opensource программа для запоминания слов (и не только). Есть версии под декстоп и мобилы. Она довольно популярна при этом имеет интуитивно-НЕпонятный интерфейс. Мне понадобилось много лет, чтобы понять, насколько она крута, т.к. базовые статьи и туториалы этого не описывают. А многие люди используют ее даже не понимая ее возможностей.

Впервые про Anki я услышал много лет назад. Может быть 10 или больше, точно сказать сложно. Прочитал здесь на Хабре, что есть такая крутая штука как интервальное повторение, и что Anki как раз такая программа, которая использует этот механизм. Помню что в статье рассказывалось только про версию под декстоп.

Читать далее
Total votes 69: ↑60 and ↓9+66
Comments145

Что внутри у однорукого бандита? Разборка, моддинг, и написание кейгена. [Part 1]

Level of difficultyEasy
Reading time8 min
Views11K
Дисклеймер: азартные игры опасны для вашего кошелька и психического здоровья.

image

Япония — одна из немногих стран, где по сей день в ходу азартные игровые автоматы. Очень многие популярные в прошлом франшизы аниме и игр находят своё последнее пристанище в завораживающих устройствах, украшенных невообразимым количеством мигающего, кричащего, крутящегося и двигающегося. Да что там говорить, даже знаменитый «Евангелион» сделал как бы не больше прибыли со слот-машин и пачинко-автоматов, чем с самого сериала и кинофильмов вместе взятых!

И вот, в один из походов по барахолкам, моё внимание привлёк как раз один из таких девайсов.
Читать дальше →
Total votes 63: ↑63 and ↓0+63
Comments34

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

Level of difficultyHard
Reading time48 min
Views150K



Введение


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


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


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


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

Читать дальше →
Total votes 151: ↑151 and ↓0+151
Comments36

Как мы учились обходить блокировки VPN в Китае, чтобы быть готовыми к РКН

Reading time7 min
Views98K

В понедельник 7 августа пользователи VPN-сервисов из России заметили проблемы с подключением к серверам. По собранной в соцсетях и Телеграме информации, ограничения затронули наиболее распространенные VPN-протоколы OpenVPN,  L2TP, PPTP и WireGuard. На сбои в работе VPN-сервисов жаловались клиенты мобильных операторов — Мегафон, МТС, Билайн, Tele2, Yota, Тинькофф Мобайл. 

В этот же день на Xeovo обвалилось огромное количество тикетов, но к вечеру, когда инеформация о новой волне блокировок VPN ещё продолжала расходиться по рунету, и СМИ ещё собирали статистику, которую мы здесь приводим, мы уже закрыли большую часть из них и соединение наших клиентов было восстановлено. Как нам это удалось? Дело в том, что весь последний год мы посвятили борьбе с Великим Китайским файерволлом, а именно — с блокировками VPN в Китае.

Читать далее
Total votes 122: ↑119 and ↓3+153
Comments114

Что происходит, когда запускаешь «Hello World» в Linux

Level of difficultyMedium
Reading time15 min
Views28K

Сегодня я задумалась о том, что происходит, когда запускаешь в Linux простую программу «Hello World» на Python.

print("hello world")

Вот как это выглядит в командной строке:

$ python3 hello.py
hello world

Но внутри происходит гораздо больше. Я объясню, что там творится, и, что гораздо важнее, расскажу об инструментах, при помощи которых вы сами сможете исследовать происходящее. Мы воспользуемся readelf, strace, ldd, debugfs, /proc, ltrace, dd и stat. Я не буду рассматривать относящиеся к Python части, только объясню, что происходит при выполнении динамически компонуемых исполняемых файлов.
Читать дальше →
Total votes 98: ↑98 and ↓0+98
Comments10

Притворись моим покойным дедушкой, или Как пройти квест по взлому спутника

Level of difficultyEasy
Reading time13 min
Views17K
Череп снова в деле! Рассказываем, как прошёл самый крупный CTF (на этот раз космический) от RUVDS и Positive Technologies.


Реальная фотография нашего спутника

Если вдруг пропустили — наше космическое событие.
Читать дальше →
Total votes 56: ↑53 and ↓3+71
Comments21

Information

Rating
Does not participate
Registered
Activity