Pull to refresh
-14
Karma
0.1
Rating

да.

  • Followers
  • Following 1
  • Posts
  • Comments

Каналы на корутинах С++

ISPsystem corporate blog Programming *C++ *
Tutorial

В предыдущей статье я описал простой путь создания генераторов на корутинах С++. На мой взгляд генераторы неплохо демонстрируют работу с такими объектами как coroutine_handle и promise_type. На этот раз речь пойдет об awaitable объектах — еще одной неотъемлемой части поддержки корутин в С++. А рассматривать мы их будем на примере реализации каналов, аналогичных каналам в GoLang. Как С++ разработчик, я не в восторге от многих решений принятых в GoLang, но в их каналы влюбился с первого взгляда. Итак, приступим!

Читать далее
Total votes 13: ↑12 and ↓1 +11
Views 4.2K
Comments 4

Зачем С++ в Такси? Доклад Яндекса

Яндекс corporate blog High performance *System Analysis and Design *C++ *Designing and refactoring *
Бэкенд первой версии Яндекс.Такси, которая вышла в 2011 году, был написан на Python. Мы довольно долго не меняли основной язык, но постепенно пришли к идее о необходимости С++ в стеке технологий. Перед вами доклад о том, что мы переписали в первую очередь и почему, а также о трюках С++, которые помогают нам справляться с ростом.

— Добрый день. Меня зовут Александр Голубев, и сегодня я вам расскажу, зачем C++ появился в Такси.
Читать дальше →
Total votes 25: ↑22 and ↓3 +19
Views 8.8K
Comments 18

Асинхронность в С++20. Доклад в Яндексе

Яндекс corporate blog Programming *Perfect code *C++ *Compilers *
Привет, это Григорий Демченко из WhatsApp. Мой доклад посвящён использованию сопрограмм в C++20. Я не стал говорить про низкоуровневые примитивы и то, как компилятор поддерживает сопрограммы и преобразовывает соответствующий код. Вместо этого акцент сделан на практическом применении сопрограмм для решения конкретных задач высокопроизводительных масштабируемых систем. Это именно то, ради чего создавались сопрограммы в новом стандарте, и то, с чем разработчик будет иметь дело в процессе проектирования и программирования. Я постарался рассмотреть конкретные примеры и проблемы, с которыми можно столкнуться при использовании полностью асинхронного подхода.

— О чём я сегодня расскажу? Первое — введение в асинхронность. Далее мы рассмотрим примитивы, которые можно использовать в новом стандарте, и интеграцию с планировщиками. Также немаловажным аспектом будет являться работа со старым кодом, если мы пишем новый код с использованием нового подхода. Затем я покажу бонус, достаточно интересный и необычный. И подведём итоги того, что у нас получилось.
Читать дальше →
Total votes 28: ↑27 and ↓1 +26
Views 5.1K
Comments 6

Ищем дубликаты фотографий с помощью Perl

Perl *
Recovery mode
Tutorial

За 20 лет у меня скопилось несколько тысяч фотографий: праздники, свадьбы, рождение детей, и прочее, прочее... Понятно что снималось всё это на разные цифровики, присылалось почтой, сливалось через ICloud и GDrive, FTP, самба и т.п. По итогу всё это превратилось в дикий хаос папок и что-то найти в архиве можно было только с большим трудом.

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

Читать далее
Total votes 26: ↑24 and ↓2 +22
Views 3.3K
Comments 16

Введение в программирование: заготовка игры-платформера на SDL в 300 строк C++

Programming *C++ *Game development *
Tutorial

Этот текст предназначен для тех, кто только осваивает программирование. Я читаю лекции по C++ на первом курсе местного университета, и в качестве практикума предлагаю запрограммировать любую игру (не выношу проектов типа "софт бронирования книг в местной библиотеке"). Соответственно, чтобы помочь начинающим, я сделал некоторое количество заготовок, с которых можно стартовать свой проект. Например, заготовку олдскульного 3д шутера в 486 строк C++ я уже описывал, а вот тут можно посмотреть, что из неё сделали первокурсники.


В этот раз всё будет ещё проще, я хочу сделать заготовку под простейший платформер, вот так выглядит результат:



На данный момент проект содержит менее трёхсот строчек цпп:


ssloy@khronos:~/sdl2-demo/src$ cat *.cpp *.h | wc -l
296

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


Итак, поехали!

Читать дальше →
Total votes 58: ↑57 and ↓1 +56
Views 12K
Comments 124

C++20 в 2020: Модули

OTUS corporate blog Programming *C++ *
Translation

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

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

Немного истории

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

Модули C++ — это попытка уменьшить потребность в одной конкретной директиве препроцессора, #include. #include позволяет нам разделить исходный код на логические части — в частности, интерфейс (обычно расположенный в файле ".h" или "header") и реализацию (обычно расположенную в файле ".cpp" или "source"). Разделение на заголовочный и исходный файлы дает огромное количество преимуществ, включая:

Читать далее
Total votes 15: ↑13 and ↓2 +11
Views 6.5K
Comments 4

5 любопытных примеров лямбд в C++: рекурсия, constexpr, контейнеры и многое другое

OTUS corporate blog Programming *C++ *
Translation

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

Смотрите в статье.

Читать далее
Total votes 12: ↑10 and ↓2 +8
Views 5.1K
Comments 13

Проект Altos Labs. Как миллиардеры Кремниевой долины хотят жить вечно

ITSOFT corporate blog Biotechnologies The future is here

Джефф Безос и Юрий Мильнер — одни из инвесторов проекта

В октябре прошлого года большая группа ученых приехала в гигантский особняк Юрия Мильнера в холмах неподалеку от Пало-Альто. Они были протестированы на Covid-19 и в масках собрались в театре особняка на двухдневную научную конференцию. Еще несколько сотен ученых присоединились с помощью видеозвонков. Тема конференции: как можно использовать биотехнологии для омоложения людей.


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

Читать дальше →
Total votes 63: ↑57 and ↓6 +51
Views 32K
Comments 234

История HDD, часть II

Seagate corporate blog Data storage *Data storages *History of IT Old hardware

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

Сегодня жесткие диски достигли емкости 18 Тбайт, а скоро выйдут и более емкие модели, в том числе и благодаря технологии термомагнитной записи (HAMR). 3,5" форм-фактор жестких дисков сегодня утвердился, однако они не всегда были такими. В нашем цикле статей мы проведем небольшой экскурс в историю жестких дисков.

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

Читать далее
Total votes 16: ↑16 and ↓0 +16
Views 9.5K
Comments 9

WireGuard заработал в режиме ядра WindowsNT

GlobalSign corporate blog Information Security *Open source *System Programming *Development for Windows *


Разработчик WireGuard VPN Джейсон Доненфельд выпустил новую версию WireGuardNT, которая работает в режиме ядра WindowsNT (7, 8.1, 10, 11, 2012, 2016, 2019, 2022). Перенос всего кода в ядро значительно повышает пропускную способность туннеля практически на любых соединениях, особенно по WiFi.

Примечание. Чтобы запустить свою программу на уровне ядра Windows и не иметь проблем с Microsoft SmartScreen, разработчику требуется приобрести сертификат подписи кода типа EV, который стоит намного дороже, чем обычный сертификат подписи кода — примерно $2000 за трёхлетний. Хорошо, что у опенсорсного некоммерческого проекта WireGuard есть спонсоры.
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 8.8K
Comments 30

«Чертовски глупое решение»: история появления языка C

VDSina.ru corporate blog Programming *C *History of IT
Translation

Как ни сложно в это поверить, C не родился в виде истрёпанного руководства в бумажной обложке.

В том или ином виде, язык C повлиял на формирование практически каждого языка программирования, разработанного с 1980-х. Некоторые языки наподобие C++, C# и Objective C должны были стать прямыми наследниками C, а другие просто переняли и адаптировали его синтаксис. Программист, перешедший с Java, PHP, Ruby, Python или Perl, почти не испытает сложностей с пониманием простых программ на C, и в этом смысле C можно воспринимать как lingua franca программистов.

Однако C не возник из ниоткуда как единый монолит программирования. История C начинается в Англии, с коллеги Алана Тьюринга и программы, игравшей в шашки.
Total votes 74: ↑72 and ↓2 +70
Views 27K
Comments 31

Использование STL для обработки сигналов в реальном времени. Доклад в Яндексе

Яндекс corporate blog High performance *C++ *Sound
Компьютерные игры, обработка аудиосигналов в режиме реального времени и другие подобные приложения низкой задержки требуют, чтобы код был не только корректным. Он также должен исчислять требуемый результат надёжно за детерминированный срок выполнения. В этом докладе head of technology в компании Cradle Тимур Думлер timuraudio рассмотрел, в какой степени стоит использовать стандартную библиотеку С++ для создания приложений с подобными «real-time» ограничениями. Какие инструменты из стандартной библиотеки можно применять с уверенностью, что они не будут блокировать поток, ждать освобождения мьютекса, не будут выделять или освобождать память и совершать другие действия с недетерминированной задержкой? Каких средств из набора стандартной библиотеки следует избегать и почему? По пути Тимур обсудил малоизвестные и неожиданные аспекты этих привычных инструментов.

— Всем привет, меня зовут Тимур Думлер. Хочу сказать, что я обычно делаю доклады на английском языке. Это всего второй раз в жизни, когда я докладываю на русском, мне это немножко непривычно. Спасибо большое, что подключились, сегодня мы поговорим про использование стандартной библиотеки C++ для обработки сигналов в real-time.
Читать дальше →
Total votes 10: ↑9 and ↓1 +8
Views 3.6K
Comments 2

Как можно оптимизировать dot-product и не только. Доклад Яндекса

Яндекс corporate blog High performance *Perfect code *C++ *Server optimization *
Разработчик инфраструктуры качества поиска Яндекса Ильнур Хузиев ilnurKh взял простую задачу — скалярное произведение двух векторов — и попробовал выжать все соки производительности кода. Из доклада вы узнаете, как использовать возможности процессора, настройки компилятора (и даже попробовать превзойти его), какой была бы правильная постановка задачи, как выбирать приоритеты и архитектуру. Да, вопрос выбора абстракций может встать даже на примере настолько простой задачи.

— Сегодня мы рассмотрим достаточно простую функцию — скалярное произведение двух векторов, и попробуем провести различные оптимизации. Надеюсь, что приёмы, которые мы рассмотрим, будут применены не только в этой задаче, но и в других.
Читать дальше →
Total votes 18: ↑18 and ↓0 +18
Views 2K
Comments 2

Новости из жизни Haiku за июль-август 2021

Open source *C++ *Qt *Software

Здравствуйте, дорогие друзья.

Исторически сложилось, что изначально сообщество BeOS/Haiku обитало на qube.ru и Jabber-канале. Но, со временем оно перебралось в телеграмм канал и vk-сообщество, где участники сообщества, кто есть в VK, собирают и обсуждают новости проекта.

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

Читать далее
Total votes 18: ↑18 and ↓0 +18
Views 3.2K
Comments 11

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

Selectel corporate blog IT Infrastructure *Network technologies *
image

Подводные каналы связи, пролегающие на дне океанов и морей, — изобретение далеко не современное. Первая попытка проложить трансатлантический кабель телеграфной связи была предпринята в 1857 году. К сожалению, он порвался, так и не принеся пользы. Затем последовало еще несколько проблемных проектов. И только в 1866 году все получилось — кабель смог обеспечить надежную телеграфную связь между Европой и США.

С тех пор по дну океанов и морей были проложены десятки разных кабелей — телеграфных, телефонных, а также интернет-магистралей. К сожалению, иногда кабели все же рвутся, что приводит к сложным ситуациям. Давайте оценим аварии последнего времени и их причины.
Читать дальше →
Total votes 49: ↑49 and ↓0 +49
Views 12K
Comments 5

SerenityOS: Unix-подобная операционная система с кастомным ядром и графическим интерфейсом в стиле 90-х

Selectel corporate blog History of IT Software

Пару лет назад в сети появилась информация о проекте Serenity — Unix-подобной операционной системе для архитектуры x86 с собственным ядром и винтажным интерфейсом. При этом возможности операционной системы заявлялись вполне современные.

Это ОС, написанная с нуля, которая не базируется на коде уже существующих операционных систем. Авторы SerenityOS активно работали над поставленной целью — создание новой операционной системы, пригодной для выполнения большинства привычных нам задач. Код системы пишется на С++. Сейчас проект достиг нового уровня развития — в среде ОС уже можно поработать, составив собственное мнение о SerenityOS. Подробности о новинке — под катом.
Total votes 89: ↑87 and ↓2 +85
Views 18K
Comments 58

Неожиданные причины торможения программ и систем

Programming *Client optimization *Server optimization *
Translation

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

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

Разделы поста чаще всего никак не связаны друг с другом, поэтому можете выбирать самые интересные для вас.
Читать дальше →
Total votes 112: ↑111 and ↓1 +110
Views 39K
Comments 86

Альтернативная вселенная старых компьютеров

VDSina.ru corporate blog Old hardware Desktop PC's
Translation

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

Ну, это не совсем так… Действительно, мощность и производительность компьютерного оборудования выросла экспоненциально со времён первых компьютеров с хранящимися программами, появившихся примерно в 1948 году (Manchester Mark I). Соотношение цены и производительности улучшилось ещё существеннее.

Сложно сказать, насколько быстро происходили эти улучшения. Вполне можно сказать, что «очень быстро». Со времён зарождения технологии интегральных микросхем закон Мура сохранял свою истинность — количество транзисторов, которое можно разместить на кристалле, удваивалось примерно каждые два года. Однако ещё одна версия закона Мура — "производительность удваивается каждые 18 месяцев, или в 10 раз каждые 5 лет" — кажется слишком оптимистичной.
Однако для некоторых семейств микропроцессоров на относительно коротком промежутке времени эта версия тоже была справедливой.
Читать дальше →
Total votes 38: ↑36 and ↓2 +34
Views 10K
Comments 9

От жёсткого диска на антресолях до Ransomware: как утекает исходный код игр

VDSina.ru corporate blog Information Security *Game development *Games and game consoles
В начале июня компания EA сообщила о том, что её серверы взломали хакеры, похитившие 780 ГБ данных, в том числе исходный код игры FIFA 21 и движка Frostbite. Мы решили вспомнить, как на протяжении многих лет утекал в руки хакеров и широкой публики код различных игровых проектов.

Ultimate Mortal Kombat 3


image

Рекламные материалы порта игры для 3DO. На изображениях использованы скриншоты из версий для Sega Saturn и SNES

В своё время Mortal Kombat 3 получил огромную популярность, поэтому позже была выпущена его дополненная версия под названием «Ultimate Mortal Kombat 3» (UMK3), которую портировали на множество консолей, в том числе на Genesis, Sega Saturn и SNES. Разрабатывался и порт для Panasonic 3DO, но почти завершённый проект был остановлен (вероятно, из-за падения популярности консоли).
Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Views 9.2K
Comments 6

История жизни и смерти хакера, взломавшего пентагон и NASA в 15 лет

RUVDS.com corporate blog Information Security *Reading room Biography of geeks


Как правило, хакеры стараются вести скрытный образ жизни и соблюдать анонимность. Многим это удается, но некоторые из них обретают популярность вопреки собственной воле. Так случилось, например, с Кевином Митником или Робертом Моррисом. Но есть и другие компьютерные гении, о судьбе которых известно гораздо меньше, чем об их подвигах. Одного из таких парней, оставивших заметный след в истории мирового хакерства, звали Джонатан Джеймс. Это человек с яркой, но трагичной историей жизни, завершившейся ранней и таинственной смертью.
Читать дальше →
Total votes 113: ↑107 and ↓6 +101
Views 86K
Comments 142

Information

Rating
2,332-nd
Registered
Activity