Search
Write a publication
Pull to refresh
17
0

User

Send message

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

Reading time7 min
Views46K

Почтовый ящик с письмами — это личная собственность человека. Никто не имеет права доступа к архиву, кроме владельца.

Забота о своём почтовом архиве тем более актуальна в нынешних условиях, когда любой внешний сервис может закрыться, обанкротиться или просто откажется вас обслуживать. Гораздо спокойнее хранить архив у себя — сделать резервную копию в надёжном домашнем хранилище.
Читать дальше →

Особенности реализации STL в Clang, GCC и Microsoft С++

Reading time21 min
Views21K

Любая программа состоит из данных и алгоритмов их обработки. Для написания программ на C++ в начале 90-х годов прошлого века Александр Степанов с коллегами разработал библиотеку STL. Я, Михаил Полукаров из команды разработки VK Teams, заглянул под капот этой библиотеки чтобы разобраться, как правильно ей пользоваться, в каких случаях лучше использовать другие библиотеки, а в каких стоит написать что-то своё. 

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

Читать далее

Кратко о форматах TLV, BER, CER, DER, PER

Reading time8 min
Views20K

Я хотел бы кратко рассказать о таких форматах данных, распространенных в ИТ-индустрии, в том числе в области инфраструктур открытых ключей (ИОК), смарт-картах, включая документы нового поколения на базе смарт-карт, в мобильной связи. Хотя рассматриваемые форматы и связаны с ASN.1, но некоторые из них ушли далеко за пределы этой области. О некоторых из них многие знают, но не все знают настолько, чтобы, допустим, уметь отличать BER от DER, а некоторые варианты типа PER вообще являются экзотикой.

Глубоко в тему погружаться не буду. Просто познакомлю с главными особенностями, чтобы понимать, что это такое и с чем это едят. Досконально и в полном объеме всё это описано в соответствующих стандартах ITU-T X.690 и ISO 7816.

Одна из моих мотивирующих задач — это уложить тему в своей голове по полочкам.

Правила абстрактной нотации (ASN.1) используются, когда надо специфицировать формат некой структуры данных. Сами правила описаны в стандартах ITU-T X.680–X.683. Пожалуй, что наиболее распространенный вариант применения — это форматы сертификатов X.509 и всего, что имеет к ним отношение. Пример текстовой нотации может выглядеть как-то так:

Читать далее

Подводные камни HttpClient в .NET

Reading time9 min
Views95K
Продолжая серию статей о «подводных камнях» не могу обойти стороной System.Net.HttpClient, который очень часто используется на практике, но при этом имеет несколько серьезных проблем, которые могут быть сразу не видны.

Достаточно частая проблема в программировании — то, что разработчики сфокусированы только на функциональных возможностях того или иного компонента, при этом совершенно не учитывают очень важную нефункциональную составляющую, которая может влиять на производительность, масштабируемость, легкость восстановления в случае сбоев, безопасность и т.д. Например, тот же HttpClient — вроде бы и элементарный компонент, но есть несколько вопросов: сколько он создает параллельных соединений к серверу, как долго они живут, как он себя поведет, если DNS имя, к которому обращался ранее, будет переключено на другой IP адрес? Попробуем ответить на эти вопросы в статье.
Читать дальше →

Дженерики в Go — подробности из блога разработчиков

Reading time10 min
Views20K

В Go 1.18 добавлена поддержка дженериков. Это самое большое нововведение с момента первого Open Source выпуска Go. Не будем пытаться охватить все детали, затронем всё важное. Подробное описание со множеством примеров смотрите в документе с предложением по улучшению языка. Материалом делимся к старту курса по Backend-разработке на Go.

Читать далее

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

Reading time8 min
Views71K

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

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

Читать далее

Обнаружение наличия функциональности в C++ на этапе компиляции

Reading time10 min
Views6.1K

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

Хорошо, если есть поддержка концептов или рефлексии. А что делать, если их ещё нет, или они не в полной мере поддерживаются?

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

Читать далее

Генерируем Rust обёртку для FMOD

Reading time27 min
Views3.5K

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

Это руководство содержит общий обзор и конкретные приемы написания сложной Rust обёртки для звукового движка FMOD с помощью парсера pest и квази-цитирования.

Читать далее

Шаблоны C++: как итерировать по std::tuple — основы

Reading time9 min
Views27K

Для большинства стандартных контейнеров перебор элементов можно осуществлять просто с помощью цикла for с диапазоном прямо во время выполнения. Но что насчет кортежей (std::tuple)? В этом случае мы не можем использовать обычный цикл, так как он не «понимает» список аргументов кортежа во время компиляции. В этой статье я покажу вам несколько приемов, которые вы можете использовать для итерации по элементам кортежа.

Читать далее

Как заходить в чужой монастырь

Reading time18 min
Views20K

Привет, Хабр!

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

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

Итак, рассмотрим ситуацию, когда в команду разработки (или в командЫ разработки) приходит новый руководитель, о котором самим участникам команды ничего не известно. И этот руководитель — вы.

Читать далее

Из чего состоит мировой эфир. Последняя теория Менделеева

Reading time8 min
Views55K

В марте 1869 года была опубликована первая версия периодической системы Менделеева. Систематический вид из рядов и групп она приобрела через пару лет – вот так выглядел вариант от 1871 года. Как известно (о чем я уже упоминал в статье про пределы таблицы Менделеева и элемент фейнманий). Дмитрий Иванович Менделеев (1834-1907) принципиально превзошел своих учителей и коллег, в частности, Роберта Бунзена, Жана Лекока Буабодрана и Лотара Майера в том, что пытался не только классифицировать уже известные к тому времени химические элементы, но и расположить их в соответствии с увеличением атомного веса и периодическим паттерном химических свойств. Поэтому он не только оставил в своей таблице пустые клетки, но и сделал два исключения из периодического закона на материале известных ему элементов. Тем не менее, Менделеев весьма превратно представлял себе варианты заполнения «краев» таблицы. Ошибки Менделеева, в которых он даже упорствовал, были связаны с двумя неверными исходными посылками. Во-первых, Менделеев всерьез воспринимал концепцию мирового эфира (написал о нем серьезную аналитическую статью в 1902 году), хотя, еще в 1887 году был неоднократно поставлен эксперимент Майкельсона-Морли, фактически доказавший, что эфир не существует. Кроме того, на момент составления таблицы еще не была известна внутренняя структура атома (атом считался неделимым), а также Менделеев не предусмотрел в таблице 8-й группы, то есть, столбца с благородными газами.

Читать далее

Unity: 8 причин отказаться от Coroutine в пользу Async

Reading time9 min
Views41K

Когда речь заходит об асинхронных операциях в Unity, на ум первым делом приходит coroutine. И это не удивительно, так как большинство примеров в сети реализованы именно через них. Но мало кто знает, что Unity поддерживает работу с async/await еще с 2017 версии.

Так почему же большинство разработчиков до сих пор использует coroutine вместо async/await? Во первых, как я уже упомянул, большая часть примеров написана с использованием coroutine. Во вторых, async/await кажется очень сложным для начинающих разработчиков. Ну и в третьих, когда речь заходит о коммерческих проектах, где основным из критериев является стабильность, предпочтение отдается проверенному годами подходу.

Но технологии не стоят на месте и появляются библиотеки, которые делают работу с async/await в Unity удобной, стабильной и самое главное высокопроизводительной.

Читать далее

18 февраля — День памяти Криса Касперски. Пять лет как нет Николая Лихачева

Reading time14 min
Views23K
Не могу поверить, но уже прошло пять лет как нет Криса. За это время мир очень сильно изменился. Ему очень было бы интересно жить в этом новом мире, мире блокчейна, биткоинов, эфириума, телеграмм каналов, мире биг-даты, машинного обучения, нейронных сетей и искусственного интеллекта, программ вымогателей, АПТ группировок, новых операционных систем, а также Windows 10 и 11. Но увы его нет с нами. От него остались только его книжки и статьи в разных журналах и его отец, который помнит всю его жизнь от момента рождения и трагического падения. Несмотря на то, что Крис уже не жил в России, он постоянно переписывался с отцом по электронной почте и присылал свежие фотографии. Отец же начал работу над книгой — биографией своего сына, кусочком которой он поделился со мной, а я делюсь с Вами.
Читать дальше →

Язык программирования C∀ (CForAll)

Reading time14 min
Views25K

Мой интерес к дизайну языков программирования приводит меня иногда к интересным, но почти неизвестным в широких кругах проектам. Один из таких проектов - язык C∀ (CForAll), разрабатываемый Университетом Ватерлоо. C∀ является расширением ISO C и обеспечивает обратную совместимость с C. Помимо исправления некоторых недостатков Си (которые можно исправить без нарушения обратной совместимости), в C∀ есть некоторые весьма интересные и оригинальные фичи: некоторые расширения классических управляющих операторов, альтернативный синтаксис объявления квалификаторов, кортежи и множественные операции, оригинальное расширение ссылок, своя реализация полиморфизма, сопрограммы и т.д.

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

Читать далее

Лучшие альтернативы для Docker

Reading time7 min
Views69K

Изобретение интермодальных контейнеров вызвало бум международной торговли и стало одним из основных элементов глобализации

Контейнеры от компании Docker произвели настоящую революцию в разработке, тестировании и развёртывании приложений. Хотя вовсе не она изобрела Linux-контейнеры. Ведь LXC и OpenVZ появились раньше под Linux, а до них много лет существовали Jails/Zones в BSD/Solaris.

Но именно Docker представил контейнеры в виде удобного и простого «массового продукта». Примерно как Apple позаимствовала идеи MP3-плеера и смартфона и доработала их. То же самое сделал Docker. Хотя не довёл дело до конца, то есть до получения прибыли.

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

Kernel Queue: The Complete Guide On The Most Essential Technology For High-Performance I/O

Reading time65 min
Views21K

When talking about high-performance software we probably think of server software (such as nginx) which processes millions requests from thousands clients in parallel. Surely, what makes server software work so fast is high-end CPU running with huge amount of memory and a very fast network link. But even then, the software must utilize these hardware resources at maximum efficiency level, otherwise it will end up wasting the most of the valuable CPU power for unnecessary kernel-user context switching or while waiting for slow I/O operations to complete.

Thankfully, the Operating Systems have a solution to this problem, and it's called kernel event queue. Server software and OS kernel use this mechanism together to achieve minimum latency and maximum scalability (when serving a very large number of clients in parallel). In this article we are going to talk about FreeBSD, macOS and kqueue, Linux and epoll, Windows and I/O Completion Ports. They all have their similarities and differences which we're going to discuss here. The goal of this article is for you to understand the whole mechanism behind kernel queues and to understand how to work with each API.

Read more

Щ — самая упорная из православных букв

Reading time5 min
Views32K
Прошлая статья была посвящена тому, как Щ появилась; загадкой остаётся то, как Щ сохранилась в современном алфавите. Вот, например, статья в «Литературной газете» от 16 декабря 1929 г. о готовившемся тогда под эгидой А.В. Луначарского проекте перевода русского языка на латиницу; в частности, предполагалось, что «сочетание звуков «щ» будет писаться двумя буквами».


Амбициозный проект Луначарского — далеко не первое предложение по упрощению русской орфографии, оставшееся нереализованным.
Читать дальше →

11 советов, как говорить по-английски свободно и уверенно, чтобы преодолеть языковой барьер

Reading time5 min
Views40K

Молчи – за умного сойдешь! Эта установка крепко сидит в голове людей, прошедших советскую школу обучения. Понимание, которое застряло внутри, что не нужно высовываться, если ты не уверен на 250% в том, что  хочешь сказать. В учебе это очень вредный совет, особенно в английском. 

Что же нам поможет заговорить на английском?

Читать далее

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

Reading time4 min
Views17K

С++ Top
Наверняка у читателя есть свои любимые сайты и блоги, посвящённые программированию на языке С++. Сегодня ваша коллекция пополнится.

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

Information

Rating
5,475-th
Registered
Activity