Pull to refresh
9
0
Олег Стрельников @oleg1977

User

Send message

Что такое Теория Флагов или как эффективно жить на несколько стран

Reading time5 min
Views21K

Представьте картину. Вы живёте в той точке планеты, в которой хотите в данный момент. Вы уверены в сохранности своего капитала, что всё лежит в надежных банках, и никто это у вас не отнимет. Ваша приватность остается вашим личным делом. И вы не платите никакие налоги (ну или платите очень низкие). Звучит слишком хорошо, чтобы быть правдой, но это как раз то, к чему стремится Теория Флагов.

Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments72

Ссылки и ссылочные типы в C++

Level of difficultyMedium
Reading time47 min
Views114K

Продолжаем серию «C++, копаем вглубь». Цель этой серии — рассказать максимально подробно о разных особенностях языка, возможно довольно специальных. Это пятая статья из серии, список предыдущих статей приведен в конце в разделе 6. Серия ориентирована на программистов, имеющих определенный опыт работы на C++. Эта статья посвящена ссылкам и ссылочным типам в C++.


Термин «ссылка» широко используется и в обыденной жизни, в компьютерных и других науках и поэтому его смысл сильно зависит от контекста использования. В языках программирования под ссылкой понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, расположенному в другом месте, имеющему другой размер и т.д. Объекты ссылки удобно использовать на стеке, они легко копируются, что позволяет получить доступ к объекту, на который эта ссылка ссылается, из разных точек кода. В той или иной форме ссылки поддерживаются во всех языках программирования. В ряде языков программирования, таких как C#, Java, Pyton и многих других, ссылки, по существу, являются концептуальным ядром.



В C роль ссылок играют указатели, но работать с ними не очень удобно и в C++ появилась отдельная сущность — ссылка (reference). В C++11 ссылки получили дальнейшее развитие, появились rvalue-ссылки, универсальные (передаваемые) ссылки, которые играют ключевую роль в реализации семантики перемещения — одном из самых значительных нововведений C++11.



Итак, попробуем рассказать о ссылках в C++ максимально подробно.


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

Простой backend на C++: это возможно?

Reading time5 min
Views46K

Была у меня мечта - писать backend на C++. А вот разбираться в unix socket'ах, TCP, многопоточной/асинхронной обработке запросов и во многом другом совсем не хотелось. Не верил я, что до сих пор нет каких-то минималистичных фреймворков. И сегодня я вам расскажу, как можно просто сделать HTTP API микросервис на C++ с помощью фреймворка Drogon.

Поехали!
Total votes 32: ↑32 and ↓0+32
Comments24

Неопределенное поведение может привести к путешествиям во времени

Reading time6 min
Views13K

Языки C и C++ печально известны большими областями на картах, которые отмечены предупреждением “тут обитают драконы”, а если говорить более формально, речь идет о неопределенном поведении (undefined behavior).

Когда мы сталкиваемся с неопределенным поведением, может произойти все что угодно. Например, переменная может быть одновременно и true, и false. В блоге Джона Регера (John Regehr) есть парочка интересных примеров неопределенного поведения, а также определены несколько победителей объявленного в комментариях конкурса на самый сумасшедший объектный код, генерируемый компилятором в результате неопределенного поведения.

Читать далее
Total votes 15: ↑11 and ↓4+7
Comments29

C++20 Ranges — Полное руководство

Reading time8 min
Views30K

C++20 Ranges, также известная как STL v2, представляет из себя более эффективную замену существующих алгоритмов и технических средств STL. В этой статье мы пройдемся по изменениям, введенным Ranges (диапазоны/интервалы), обсудим представления (views), которые представляют собой новый подход к композиции алгоритмов, и рассмотрим примеры реализации FizzBuzz с использованием трех разных методов, в каждом из которых используются некоторые аспекты библиотеки Ranges.

Однако сразу следует отметить, что Ranges — это одна из фич, реализованных в C++ 20 в полуготовом состоянии. C++23 должен приблизить нас к полной поддержке всего задуманного в рамках Ranges. Поэтому в некоторых примерах будет использоваться библиотека range v3.

Читать далее
Total votes 12: ↑8 and ↓4+4
Comments28

Обработка текста с помощью textutils с примерами

Reading time8 min
Views2.8K

Набор утилит для потоковой обработки текста появился уже в первых версиях Unix и доступен практически везде. Это такие команды как cat/tac, head/tail, cut, grep, sed, sort, uniq, wc, nl, fmt. Каждая из этих утилит выполняет свою простую обработку текста, но комбинируя их в конвейере, т.е. передавая стандартный вывод одной команды на вход следующей, можно обрабатывать тексты произвольного размера или быстро решить некоторые задачи.

Для этого нужно усвоить несколько приемов
Total votes 5: ↑3 and ↓2+1
Comments2

Хьюстон, что-то опять пошло не так?

Reading time5 min
Views17K
Возвращение человека на Луну перенесено на 2025 год. Не успел начаться август, а, кажется, в космической индустрии посыпалось все, что могло. Без фатальных событий, к счастью, но явно спокойный период прошел: отметились и NASA в Лунной программе, и Boeing с Blue Origin в своих космических проектах, а началось все с «Науки». Космическая отрасль в системном кризисе?

Иллюстрация: Petra Ramešová

Луна-2024 — недостижима


Одна из ближайших целей Лунной программы NASA «Артемида» — это возвращение человека на Луну в 2024 году. Но теперь точно не ранее апреля 2025 года. Почему?
Читать дальше →
Total votes 72: ↑55 and ↓17+38
Comments97

Тюним thread model: Как нам удалось получить котировки с десятка американских бирж за 3 микросекунды

Reading time8 min
Views7.8K

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

Read more
Total votes 12: ↑12 and ↓0+12
Comments28

Новые рекорды: найдено 51-ое простое число Мерсенна

Reading time5 min
Views22K

(Примечание переводчика: не нашёл публикации (-ий) по данной теме на Хабре.)

Блоуинг Рок, Северная Каролина, 21 декабря 2018 года — организация Great Internet Mersenne Prime Search (GIMPS, масштабный Интернет-проект по поиску простых чисел Мерсенна) обнаружила самое большое известное простое число 282589933 - 1, состоящее из 24 863 048 знаков. Компьютер добровольца Патрика Ляроша вычислил его 7 декабря 2018 года. Патрик — один из тысяч, использующих бесплатное ПО GIMPS.

Новое простое число, также известное как M82589933, вычислено перемножением 82 589 933 двоек и вычитанием единицы. Оно превосходит предыдущее рекордное простое число более чем на полтора миллиона разрядов, в особом классе исключительно редких простых, известных как числа Мерсенна. Это всего пятьдесят первое открытое простое число Мерсенна; вычисление каждого последующего становится сложнее. Простые числа Мерсенна названы по имени французского монаха Марина Мерсенна, изучавшего эти числа больше 350 лет назад. Основанная в 1996 году GIMPS обнаружила последние 17 простых чисел Мерсенна.

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments42

Английский интернет-сленг

Reading time4 min
Views60K
В любом языке мира есть интернет-сленг. Английский – не исключение. «How r u» и «OMG» пишут на форумах, засыпая неискушенного пользователя непонятными наборами букв вроде «btw». Зачастую бывает действительно сложно понять, что же имеет в виду потенциальный собеседник и какой посыл скрывается за всеми этими бесчисленными аббревиатурами. Изучим вместе реалии английского интернет-сленга.

image
Читать дальше →
Total votes 29: ↑24 and ↓5+19
Comments78

Все английские времена в одной простой схеме

Reading time3 min
Views219K

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

Как это часто бывает, по-настоящему понимаешь какую-то тему, только когда начинаешь рассказывать о ней другим («метод Фейнмана»). Несколько друзей, позавидовав моим «успехам», попросили помочь разобраться с английским. Тут и обнаружилось, что хотя я уже успешно использую английский в повседневной работе, обучать ему кого-то ещё — это совершенно отдельный навык.

Первоначальная идея. Сначала разъяснить все английские времена за один присест удавалось, надёргав различных идей из интернета: обрывки чьих-то схем, начинали склеиваться в свою схему и обрастать собственными легендами, а применение времён почти всегда было проще пояснить, используя хрестоматийную «систему английских времен с точки зрения употребления глагола “to vodka”». С каждой новой импровизированной лекцией, схема и нарратив продолжали меняться. «Ученики» попадались с различным базовым уровнем, что позволило понять, откуда нужно начинать плясать, чтобы урок был понятен всем, кто хоть раз слышал что-то про глаголы have и be. Когда счёт обученных уже пошёл на десятки, я решил оформить идею в более стройную лекцию. От первых попыток преподавания английских времён, до этого момента прошло пять лет. За это время было обучено ещё пару сотен человек. Обучено — по приколу. Денег за эти уроки я не брал.

Читать далее
Total votes 69: ↑66 and ↓3+63
Comments130

Multithreading

Reading time77 min
Views176K

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

Читать далее
Total votes 22: ↑20 and ↓2+18
Comments3

Лучшее в мире видео-объяснение нейронных сетей, глубокого обучения, градиентного спуска и обратного распространения

Reading time1 min
Views56K
image

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

Из комментариев к прошлым публикациям мне стало понятно, что есть большое количество людей, кто не знает про канал, поэтому хочу поделиться четырьмя видео (+ русские субтитры и дубляж) и сэкономить время школьникам, родителям и учителям, чтобы они могли иметь быстрый доступ к самому интересному и качественному объяснению одной из самых важных тем современности.
Total votes 65: ↑61 and ↓4+57
Comments24

Введение в Android NDK

Reading time9 min
Views236K
Для разработки приложений под ОС Android, Google предоставляет два пакета разработки: SDK и NDK. Про SDK существует много статей, книжек, а так же хорошие guidelines от Google. Но про NDK даже сам Google мало что пишет. А из стоящих книг я бы выделил только одну, Cinar O. — Pro Android C++ with the NDK – 2012.

Эта статья ориентирована на тех, кто ещё не знаком (или мало знаком) с Android NDK и хотел бы укрепить свои знания. Внимание я уделю JNI, так как мне кажется начинать нужно именно с этого интерфейса. Так же, в конце рассмотрим небольшой пример с двумя функциями записи и чтения файла. Кто не любит много текста, тот может посмотреть видео версию.
Читать дальше →
Total votes 64: ↑60 and ↓4+56
Comments28

Современный C++ нас не спасет

Reading time5 min
Views22K

Я часто критикую небезопасные при работе с памятью языки, в основном C и C++, и то, как они провоцируют необычайное количество уязвимостей безопасности. Моё резюме, основанное на изучении доказательств из многочисленных крупных программных проектов на С и С++, заключается в том, что нам необходимо мигрировать нашу индустрию на безопасные для памяти языки по умолчанию (такие как Rust и Swift). Один из ответов, который я часто получаю, заключается в том, что проблема не в самих С и С++, разработчики просто неправильно их готовят. В частности, я часто получаю в защиту C++ ответ типа: "C++ безопасен, если вы не используете унаследованную от C функциональность" [1] или аналогичный, что если вы используете типы и идиомы современного C++, то вы будете застрахованы от уязвимостей типа повреждения памяти, которые терзают другие проекты.

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

Читать далее
Total votes 52: ↑32 and ↓20+12
Comments313

Что запрещает принцип Паули?

Reading time7 min
Views28K

Принцип запрета Паули с однозначной многочастичной волновой функцией эквивалентен требованию, чтобы волновая функция была антисимметричной по отношению к обмену частицами. Как это объяснить на пальцах? Легко - ткните пальцем в стол, в монитор, во что-нибудь твердое. Глубоко пронзили материю? Удалось достичь перекрывания атомных электронных облаков пальца и стола? Нет? Не удивительно. Читайте дальше, если хотите узнать, почему так.

Читать далее
Total votes 64: ↑63 and ↓1+62
Comments18

[в закладки] PDF-версия статей про Bash-скрипты

Reading time1 min
Views47K
Привет Хабр! Летом мы переводили цикл статей про Bash-скрипты — судя по отклику, статьи оказались для вас полезными. И, по многочисленным просьбам, мы решили сделать PDF-версию перевода.



Подробности под катом.
Читать дальше →
Total votes 41: ↑35 and ↓6+29
Comments20

Прочти меня: код, который не выбесит соседа

Reading time10 min
Views27K


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

Я расскажу о подходах, которые мы используем в Яндекс.Такси для написания читаемого кода на C++, Python, JavaScript и других языках.
Читать дальше →
Total votes 67: ↑58 and ↓9+49
Comments75

[Личный опыт] Черногория — страна, как сон. Самая простая история переезда

Reading time6 min
Views106K


Олег Маюрченко был фронтенд-разработчиком в белорусском офисе Object Style. В августе в Минске, по его словам, «начался полнейший дурдом», и он принял решение куда-то уезжать. Москва не рассматривалась, он жил там 16 лет, обратно не хотелось. Приняли решение поехать и посмотреть Черногорию. И очень-очень просто получили ВНЖ! Цены оказались абсолютно не драконовскими, а климат — идеальным.


Олег уехал и продолжил работать по удаленке на ту же компанию. С поиском долгсрочной аренды жилья ему помогало агентство «Черногория клуб». Олегу настолько понравилось в стране, что теперь он часто помогает другим, отвечает на вопросы в Фейсбуке. Мы поговорили с ним о его жизни в Будве, плюсах и минусах Черногории, местной кухне, налогах и жизни по принципам «полако».

Читать дальше →
Total votes 61: ↑57 and ↓4+53
Comments199

Соглашение Эйнштейна и einsum

Reading time8 min
Views18K

Удивительное дело, но в русскоязычном сегменте интернета почти нет материала, разъясняющего понятным языком соглашение Эйнштейна о суммировании. Не менее удивительно то, что материалов, позволяющих понять принцип работы функции einsum в русскоязычном интернете ещё меньше. На английском есть довольно развёрнутый ответ о работе einsum на stack overflow, а на русском только некоторое число сайтов, предоставляющих кривой перевод этого самого ответа. Хочу исправить эту проблему с недостатком материалов, и всех, кому интересно приглашаю к прочтению!

Погрузиться в einsum
Total votes 32: ↑31 and ↓1+30
Comments9
1
23 ...

Information

Rating
Does not participate
Location
Волгоград, Волгоградская обл., Россия
Date of birth
Registered
Activity