Search
Write a publication
Pull to refresh
4
0.1
Send message

Реализуем эффективный тупль с помощью C++26

Level of difficultyMedium
Reading time7 min
Views11K

Свет видел много любительских реализаций std::tuple, и реализация своих велосипедов — наверное, это действительно действенный способ обучения: вряд-ли можно сказать, что ты что-то по-настоящему понимаешь, если не можешь объяснить, как это что-то устроено.

Многие пытливые умы на протяжении десятилетий задавались вопросом: как же реализован std::tuple, как мне реализовать свой тупль (кортеж)? [1]

И немало было дано ответов на такие вопросы и написано статей ([2]). Однако я берусь утверждать, что все они имеют один фатальный недостаток! Конкретнее, они все рассматривают в основном лишь один (и при этом неэффективный) способ реализации: с помощью множественного наследования или рекурсивного инстанцирования, имеющий в свой очередь множество своих недостатков, главный из которых — неэффективное использование памяти.

В то время как современный C++ позволяет реализовать тупль гораздо проще (без обилия шаблоноты) и эффективнее.

Войти в мир эффективных реализаций туплей

А ваша зарплата в рынке? Простой, как топор, способ это узнать

Level of difficultyEasy
Reading time8 min
Views31K

Представьте, что в уголке экрана отображается зарплатный виджет. Как погодный, только зарплатный. И он вам показывает что-то типа "Ваша з/п - 115% от рынка. Работайте спокойно." Или - "Ваша з/п - 75% от рынка. Пора обновить резюме".

Виджет обещать не буду.

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

Статья может быть полезна сформировавшимся айтишникам, которые не меняют работу каждый год-два. А особенно полезна она ленивым айтишникам (типа меня), которым лень хотя бы раз в полгода-год выходить на рынок.

Далее

OSINT Podcast: подборка подкастов

Reading time1 min
Views1.9K

Подготовил для вас самые стоящие OSINT-подкасты, они нацелены на разные сферы применения. Надеюсь, что они также помогут прокачать вам свои профессиональные навыки, узнать последние новости из мира разведки по открытым источникам, а заодно и прокачать английский язык.(ибо, каждый подкаст на EN)

1. Grey Dynamics — подкаст с участием бывших и действующих сотрудников разведки, работающих в серой зоне.

2. The NDS Show — подкаст разведывательного сообщества, посвященный геопространственной разведке и OSINT.

3. NeedleStack — бывший директор по информационным технологиям Белого дома и безопасник из ЦРУ обсуждают советы, приемы и понимание практик OSINT.

4. Open Source Intelligence (OSINT) and Investigation — подкаст, ориентированный на детективов, сотрудников правоохранительных органов, журналистов. 

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

5. The Pivot Podcast — подкаст, созданный при поддержке Maltego и посвященный OSINT и информационной безопасности. В каждом эпизоде ​​участвуют один или два эксперта из Maltego, а также внешний специалист, которого пригласили поделиться опытом и советами.

Ещё больше познавательного контента из мира OSINT в Telegram-канале — @secur_researcher

Читать далее

Как сделать анализатор кода за два дня

Level of difficultyMedium
Reading time23 min
Views9.6K

Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаем вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.

Читать далее

Глубокое погружение в CancellationToken: эффективное управление отменой в .NET

Level of difficultyMedium
Reading time14 min
Views17K

Привет, Хабр! Меня зовут Давид, я C#-разработчик в SimbirSoft. В современном программировании эффективное управление ресурсами и контроль за выполнением задач становятся ключевыми аспектами для создания надежных и масштабируемых приложений. В C# одним из важнейших инструментов в для достижения этих целей является механизм Cancellation Token. Эта концепция позволяет разработчикам изящно и безопасно управлять долгосрочными или ресурсоемкими операциями, обеспечивая возможность их отмены по требованию.

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

Читать далее

«Некрасивое» получение TCP-статистики существующего сетевого соединения в desktop-приложении .NET для Windows

Level of difficultyMedium
Reading time4 min
Views1.7K

Некоторое время назад у одного из клиентов начало сбоить desktop‑приложение, в разработке которого я участвовал. Проблему локализовать не получалось очень долго — в том числе потому, что она никак не воспроизводилась на компьютерах и разработчиков, и тестировщиков.

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

Эта заметка о том, как без использования Wireshark добавить в приложение.NET Framework /.NET 5+ для Windows код получения статистики TCP‑соединения (количество перезапрошенных (retransmitted) и переупорядоченных (reordered) байт, а также некоторую другую информацию).

Вполне вероятно, эти данные пригодятся и вам — если вы используете долгоживущие или «бесконечные» TCP‑соединения (по типу Twitter Streaming API).

Итак, приступим!

Читать далее

Проектирование эффективной системы кэширования для высоконагруженной системы

Reading time5 min
Views24K

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

Читать далее

Собеседование в энтерпрайз

Level of difficultyEasy
Reading time7 min
Views9.2K

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

Читать далее

Задача трёх тел (не китайская нефантастика)

Level of difficultyMedium
Reading time21 min
Views52K

Однажды, выполнив в Гугле запрос "Three body problem" ("Задача трёх тел"), я был просто поражен - первая страница результатов состояла только из ссылок на роман китайского писателя-фантаста Лю Цысиня с соответствующим названием, а также на телесериал, снятый по этому роману, т.е. ссылок на собственно задачу трёх тел не было вообще! Мне это показалось удивительным и несправедливым, поскольку сама по себе задача трёх тел тоже может выглядеть увлекательной в популярном изложении. В этой публикации я постарался привести некоторые доказательства этого утверждения.

Читать далее

Реверсинжиниринг PWN-тасков или эксплуатируем бинарные уязвимости (Часть 2 / Stack1)

Level of difficultyMedium
Reading time2 min
Views1.2K

Друзья всех приветствую! Продолжаем «пывнить» :) Кто не прочитал первую статью — она есть ТУТ!

Перед началом оставлю пару полезных ресурсов:

Теория — Статьи на тему, что такое и с чем едят Buffer Overflow

Практика — Крутые таски на тему PWN от Codeby Games

В этой статье будем решать таск Stack1 (скачать EXEшник можно ТУТ).

Читать далее

Живее всех живых: FreeDOS исполнилось 30 лет! А что там с перспективами?

Reading time4 min
Views8.9K

В 1994 году появилась альтернатива MS-DOS, которая получила название FreeDOS. Это свободная операционная система с текстовым интерфейсом, о которой знают миллионы пользователей ПК. ОС не только не устарела, но и продолжает развиваться — в первую очередь, благодаря энтузиастам. Подробности — под катом.

Читать далее

Долгий путь микропроцессора на рынок или учимся читать новости про российские литографы

Level of difficultyHard
Reading time10 min
Views53K

Пару дней назад Хабр в списке новостей вывел и эту - В России создали и тестируют собственный литограф . Новость не вызвала у меня особого интереса - кроме того, что на Хабре завелась особая математика, +68 – 24 = +58, и вот почему.

Читать далее

Загадочное дело о пропавшей точке

Level of difficultyEasy
Reading time6 min
Views19K

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

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

В компании на тот момент было множество шаблонов с устаревшими версиями. В некоторых шаблонах использовались устаревшие условия договоров, в других — старый логотип компании или неправильный шрифт и так далее. Системой стало невозможно управлять, и клиент попросил нас найти решение.
Читать дальше →

Почта не ходит далее 500 миль – ЧаВо

Reading time9 min
Views15K
История про электронную почту, которая не уходила дальше 500 миль от отправителя, давно стала бородатой классикой. Я думал, что нормальная реакция – просто посмеяться, но нашлось не так мало людей, пожелавших доказать автору, что такого не могло быть, потому что… В конце концов автор не выдержал и выпустил целый FAQ. Итак, встречайте:

ЧаВо по электронной почте, которая не уходила дальше 500 миль


Я получил множество ответов на публикацию «Почта не ходит дальше 500 миль». Мой рассказ был много раз перепечатан и разошёлся гораздо шире, чем я мог надеяться. Большая часть ответов – благодарности за забавную историю и предложения работы (кстати, спасибо за них, и мне бы хотелось, чтобы они продолжали приходить!) Однако немало было и тех, кто выискивал в моём рассказе неточности и противоречия, придираясь к мелочам. Вместо того, чтобы отвечать на каждый такой выпад, я просто собрал наиболее часто встречающиеся вопросы и ответил на все сразу.

1. Это правда было, или история – всего лишь байка?

Это быль. В то время я отвечал за централизованную систему электронной почты в кампусе Университета Северной Каролины в Чапел Хилл (Chapel Hill). Кроме того, я занимался и настройкой электронной почты тех подразделений, которые по каким-то причинам использовали собственные сервера. Главное в контексте этой истории то, что я написал файл конфигурации почтового сервера, sendmail.cf, который использовался большинством серверов кампуса.
Читать дальше →

Многообразие связных списков

Level of difficultyMedium
Reading time13 min
Views11K

Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что‑то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики выделений динамической памяти в вашем коде.

Связать себя со знаниями!

Базовые концепции аллокаторов

Reading time10 min
Views19K

Находясь в поисках какой-то агрегированной информации о стандартных приёмах, используемых при проектировании кастомных аллокаторов, я обнаружил, что существует достаточное количество статей о том, как аллокаторы работают в C++, каких-то базовых вариантах или наоборот очень специфических версиях, но ничего достаточно общего. Попался только замечательный доклад замечательного Андрея Александреску про неправильную архитектуру std::allocator и собственно базовые концепции построения своего нового самого крутого в мире аллокатора. Эта статья является довольно вольным переводом второй части его выступления с моими небольшими дополнениями. Конечно же, категорически рекомендую посмотреть оригинальный доклад, но, если вы любитель текстовых версий, прошу под кат.

Выделить знания...

Префиксы/суффиксы в нейминге переменных, функций и т.д

Level of difficultyEasy
Reading time5 min
Views28K

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

Читать далее

Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании. Часть 1

Level of difficultyEasy
Reading time8 min
Views32K

Для аналитиков, владение SQL — это база. И от познаний в SQL зачастую зависит, отправит ли вам компания, где вы собеседуетесь — оффер.

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

Читать далее

ref locals и ref returns в C#: подводные камни производительности

Reading time7 min
Views25K
В языке C# с самого начала поддерживалась передача аргументов по значению или по ссылке. Но до версии 7 компилятор C# поддерживал только один способ возврата значения из метода (или свойства) — возврат по значению. В C# 7 ситуация изменилась с введением двух новых возможностей: ref returns и ref locals. Подробнее о них и об их производительности — под катом.

Читать дальше →

Information

Rating
7,052-nd
Registered
Activity