Архив за 23 августа 2023

Признается не ожидал такой реакции сообщества на мою первую статью о кризисе депопуляцииЧитать полностью »

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

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

Для начала, почему я выбрал Rust? Во-первых, я хотел попробовать что-то новое, раньше я писал на простом Python, не имея опыта с чем-то более низкоуровневым и сложным, и во-вторых, этот язык выглядит перспективным и интересным.

Читать полностью »

Быстрый двоичный поиск без ветвления - 1


Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2Читать полностью »

8 + 2 = 16 или откуда берутся лишние байты

В языках низкого уровня, таких как C, на котором написан Postgres, для обращения к данным в памяти всегда используются стандартные размеры, независимо от того, сколько места на самом деле занимают элементы данных. Например, стандартное 32-битное целое число, которое может хранить значение немного более четырёх миллиардов, всегда считывается как четыре байта. То есть, даже если значение числа равно нулю, под него выделяется четыре байта памяти. Это называется выравнивание (alignment).

Читать полностью »

Команда отечественного аналога Google Play — онлайн-магазина приложений RuStore для операционной системы Android — поделилась свежими новостями о проекте. Как оказалось, подавляющее большинство приложений (93%), которые разработчики загружают в RuStore, проходят проверку и становятся доступными для пользователей. 

Компания Microsoft готовит большое обновление для своего знаменитого графического редактора Paint в операционной системе Windows 11. О грядущих новшествах рассказал тематический ресурс Windows Central, хорошо себя зарекомендовавший в прошлые годы. 

Как и в любом достаточно динамическом языке, в JavaScript из коробки есть способы разобрать в рантайме структуру его значений — определить типы, ключи объектов, получить конструкторы и прототипы.

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

Рефлексия в JavaScript и TypeScript: обзор основных техник. Как сгенерировать CLI-интерфейс для класса - 1

Читать полностью »

Первый компьютер появился у меня дома в 6 лет. Это была Сура ПК8000 с черно-белым телевизором. Затем я попробовал игры на MSX-2 с цветным монитором, различные модели БК, PC и ZX Spectrum.

Последний был моим любимцем на протяжении нескольких лет. Он достался мне в корпусе от “Суры”, которую собирали на заводе в Пензе, с черно-белым монитором “Корвет” и двумя дисководами. Естественно, что в начале 90-х я понятия не имел, как выглядит настоящий “Спектрум”. Важнее было, что софта для него, в отличие от “Суры” и БК, было навалом, а клоны были во многих семьях и проблем с обменом коллекциями не существовало.

OPQAM, IJKL, 67890. О том, как нам реально повезло с курсорными клавишами - 1
Клавиатура Суры ПК8000

Что бесило, так это кривые сочетания клавиш управления во многих играх. Какой синклер-джойстик? Почему OPQAM? Есть же нормальные курсорные стрелки на клавиатуре?

OPQAM, IJKL, 67890. О том, как нам реально повезло с курсорными клавишами - 2

Скриншот выбора управления в игре Rolling Thunder (Keyboard ― те самые OPQAM)

Что еще хуже, при написании программ приходилось либо долго втыкать в мелкие наклейки на клавишах, либо заучивать сочетания. Отдельных кнопок для управления курсором или того же backspace не было.

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

Но после того, как я посмотрел на клавиатуры популярных компьютеров конца 70-х и начала 80-х, я решил, что создатели ПК не особенно заморачивались, и взяли за базу печатные машинки. Действительно, кому могут понадобиться курсорные клавиши, расположение которых будет одинаковым на всех клавиатурах, которые можно нажимать одной рукой, да еще вслепую?
Читать полностью »

Как пишет Bloomberg со ссылкой на данные американской Ассоциации полупроводниковой промышленности (Semiconductor Industry Association, SIA), Huawei обходит санкции при помощи ряда секретных предприятий по производству полупроводников — так называемой сети теневого производства. В конечном счете, отмечает Bloomberg, это способствует реализации технологических амбиций Китая.

Huawei, оказавшийся в центре торговой войны между между США и Китаем, в прошлом году начал строительство мощностей по производству чипов. Компания получила гранты, эквивалентные $30 млрд  от китайского правительства и своего родного города Шэньчжэнь. Такие данные содержатся в докладе  базирующейся в Вашингтоне Ассоциации полупроводниковой промышленности (Semiconductor Industry Association, SIA). Huawei приобрела по меньшей мере два существующих завода и строит по меньшей мере еще три, сообщила группа в презентации для своих членов, с которой ознакомилось агентство Bloomberg.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js