Pull to refresh
37
Karma
0
Rating

30 фильмов про IT и киберпанк, которые можно пересмотреть на новогодних праздниках

Timeweb Cloud corporate blog Cyberpunk Popular science Science fiction
Digest
На новогодних праздниках можно позволить себе отдохнуть и посмотреть старое и новое кино. Фильмы про IT подбирал так, чтобы можно было найти на любой вкус. Ниже список, которым решил с вами поделиться.

Читать дальше →
Total votes 62: ↑45 and ↓17 +28
Views 21K
Comments 99

«Магическая константа» 0x5f3759df

Инфопульс Украина corporate blog Abnormal programming *Sport programming *Entertaining tasks Programming *
Translation
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →
Total votes 212: ↑210 and ↓2 +208
Views 112K
Comments 188

Безопасно рисуем иконки в ПЗУ и ловим UB в C++ коде на IAR компиляторе

C++ *Programming microcontrollers *

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

Сегодня будем выводить иконку на черной белый графический LCD — но это слишком простая задача. Потому что перед тем как её вывести, необходимо её нарисовать. Рисовать можно в Paint, потом использовать генератор, который переведет растровое изображение в код и использовать его для вывода на экран.

Но мы не ищем простых путей, поэтому иконку будем рисовать сами на С++ для CortexM4 микроконтроллера и сразу в ПЗУ, чтобы не зависеть от всех этих внешних программ, заодно и посмотрим как можно отловить ошибки в уже существующем коде (студентов), которые никто не заметил (даже PVS-Studio).

А еще некоторые компиляторы запрещают делать UB для кода исполняющегося во времени компиляции, поэтому можно отлавливать и UB. Например, мой IAR прекрасно ловит переполнения int. Но обо всем поподробнее.

Чтобы было просто — рисовать будем круг.

Читать далее
Total votes 18: ↑17 and ↓1 +16
Views 3.7K
Comments 37

Другой взгляд на многопоточность

System Programming *C *Concurrent computing *CPU
Sandbox

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

Читать далее
Total votes 25: ↑24 and ↓1 +23
Views 20K
Comments 26

Применение биполярных транзисторов с микроконтроллерами

Electronics for beginners
Tutorial

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

Читать далее
Total votes 100: ↑100 and ↓0 +100
Views 32K
Comments 77

Источник опорного напряжения — один из принципов и одна из реализаций

Circuit design *Manufacture and development of electronics *DIY Electronics for beginners
Как не счесть «алмазов в каменных пещерах» — так не счесть случаев, когда необходимо втиснуть какую-нибудь характеристику «непрерывного» внешнего мира в «дискретное» нутро цифровых алгоритмов или извлечь обратно. Как помнят многие — это делается с помощью аналого-цифровых (АЦП, ADC) и цифро-аналоговых (ЦАП, DAC) преобразователей. Но только более посвящённые — обратят при этом внимание на источник опорного напряжения для преобразований (ИОН, Reference), который во многом определяет стабильность и абсолютную точность полученного результата. Конечно, есть некоторое число случаев, когда можно произвести измерение или генерацию отношения двух токов или напряжений. Тогда достаточно подать большее из них на опорный вход преобразователя. Но это — именно «некоторое число».

Желающих ознакомиться с одним из принципов и одной из реализаций температурно-стабильного ИОН — приглашаю под кат. Помощь в этом — предоставит симулятор LTSPICE (несмотря на то, что человек с КДПВ сказал: «My favorite CAD is solder»). Желательно — знание закона Ома, правил Кирхгофа, принципов работы биполярного транзистора (на уровне модели Эберса-Молла) и идеального операционного усилителя.

КДПВ1: Robert Allan Pease — the czar of bandgap. «Орденские цепи» — из ИМС стабилизаторов в корпусе TO-3.


Читать дальше →
Total votes 68: ↑66 and ↓2 +64
Views 16K
Comments 15

Володя, где мой компьютер? Проблемы школьной информатики в России

Sport programming *Programming *History of IT Popular science
✏️ Technotext 2021

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

Читать далее
Total votes 32: ↑30 and ↓2 +28
Views 27K
Comments 205

Проверка корректности адресов в памяти на Cortex-M0/M3/M4/M7

Programming microcontrollers *Manufacture and development of electronics *Electronics for beginners
Привет, Хабр!

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


Одна из весьма полезных и при этом почему-то в готовом виде нигде не описанных возможностей на микроконтроллерах Cortex-M (всех) — это возможность проверки корректности адреса в памяти. С её помощью можно определять размеры флэша, ОЗУ и EEPROM, определять наличие на конкретном процессоре конкретной периферии и регистров, прибивать упавшие процессы при сохранении общей работоспособности ОС и т.п.
Читать дальше →
Total votes 72: ↑72 and ↓0 +72
Views 12K
Comments 41

Производительность распределенного хранилища: препродакшн тесты

Selectel corporate blog High performance *Configuring Linux *Data storages *

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

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

Нужно сказать, что больше всего я работал с Ceph, поэтому в основном методология строится исходя из этого опыта, но, если не вдаваться в детали, то подход к тестированию более-менее одинаков для всех распределенных программных хранилищ данных (SDS).
Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 2.6K
Comments 2

Hello Word смарт-контракт для TON (FreeTON)

Solidity *Cryptocurrencies

Одна из интересных тем, о которой мне хотелось бы сегодня рассказать - это программирование смарт-контрактов. За язык на котором мы будем программировать свой смарт возьмем Solidity, а в качестве платформы будем использовать FreeTON

Читать далее
Total votes 9: ↑7 and ↓2 +5
Views 8.7K
Comments 3

Запуск Adobe Flash в Chromium браузере после 12 января 2021

Google Chrome Adobe Flash
Sandbox

В сети все еще существует какое-то количество страниц, написанных с использованием веб-фреймворка Adobe Flex, а также языка Action Script. Для того, чтобы переписать их на современный лад, многие будут рады продолжить пользоваться инструментами разработчика (Dev Tools), как в Google Chrome.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Views 57K
Comments 15

Владельцы MAPS.ME отменили изменения и вернули старое приложение. Надолго ли?

VDSina.ru corporate blog Open source *OpenStreetMap *Geoinformation services *Software

Слева — старое приложение, справа — декабрьская версия от южнокорейцев. Источник: «Смерть MAPS.ME?»

В ноябре 2020 года Mail.Ru Group продала MAPS.ME южнокорейской компании Daegu Limited (входит в состав платёжной системы Parity.com), и уже 20 декабря 2020 года новые владельцы выпустили обновление, которое практически убило приложение.

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

К счастью, новые владельцы осознали глубину своей ошибки и откатили изменения. В апдейте от 30 декабря 2020 года восстановлена вся функциональность. Казалось бы, победа? Справедливость восторжествовала? Нет, в это слабо верится.
Читать дальше →
Total votes 70: ↑63 and ↓7 +56
Views 56K
Comments 58

Швеция: что ждать от релокейта к суровым северянам

getmatch corporate blog IT-emigration IT career

Стокгольм по праву называют скандинавской Силиконовой долиной. 

Cюда стоит ехать за работой в прогрессивных компаниях, которые являются лидерами отрасли: Spotify, Klarna, Erisson, Skype, Minecraft и др. Предлагаем вдохновиться карьерными перспективами и посмотреть рассказ Александра Любоженко об опыте переезда в Стокгольм и работе в Spotify.

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

Что ждет разработчика после переезда? Говорим про перспективы для IT-специалиста, структуру расходов и особенности релокейта. 

Читать про релкоейт в Швецию
Total votes 43: ↑34 and ↓9 +25
Views 49K
Comments 324

Поиск замены депозита в облигациях с учетом того, что с 1 января 2021 года все выплаты облагаются налогами

JavaScript *Node.JS *API *Data visualization *Finance in IT
Case
✏️ Technotext 2021

Полгода назад, летом 2020 года я написал скрипт поиска ликвидных облигаций на Мосбирже (статья в закладках у 194 человек, рейтинг +45). Скрипт нужен для поиска облигаций, которые можно купить прямо сейчас с доходностью гораздо выше банковского вклада.

Сейчас, в начале 2021 года модифицировал прошлогодний скрипт, потому что проценты по вкладам так и остаются на очень низких уровнях, а с началом 2021 года ещё и изменения в налоговом кодексе РФ подоспели. 

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

Облигации как замена вклада в 2021 году
Total votes 60: ↑59 and ↓1 +58
Views 34K
Comments 65

Изучаем RISC-V с нуля, часть 1: Ассемблер и соглашения

Programming microcontrollers *Circuit design *


Издеваться мы будем над микросхемой GD32VF103CBT6, являющейся аналогом широко известной STM32F103, с небольшим, но важным отличием: вместо ядра ARM там используется ядро RISC-V. Чем это грозит нам, как программистам, попробуем разобраться.


Кратко перечислю характеристики контроллера:


  • Напряжение питания: 2.6 — 3.6 В
    • Максимальная тактовая частота: 108 МГц
    • Объем ПЗУ (flash): 128 кБ
    • Объем ОЗУ (ram): 32 кБ
    • Объем Backup регистров (сохраняемых после сброса): 42 х 16 бит = 84 байта.
    • АЦП+ЦАП: 2 штуки АЦП по 10 каналов и 12 бит каждый плюс 2 ЦАП по 12 бит.
    • Разумеется, куча прочей периферии вроде таймеров, SPI, I2C, UART и т. д.
Total votes 36: ↑35 and ↓1 +34
Views 16K
Comments 38

ESP32 в окружении VSCode

C++ *Robotics development *Programming microcontrollers *Developing for Arduino *DIY

В нескольких следующих статьях я хотел бы детально рассмотреть настройку окружения VSCode для работы с фреймворком ESP-IDF. Не совсем популярная комбинация ПО обладает как преимуществами, так и недостатками, которые при детальном рассмотрении мы попытаемся исправить, обойти или превратить в достоинства.

Изыскания проводятся в рамках разработки программно-аппаратного комплекса полетного контроллера на чистых кватернионах, без применения углов Эйлера.

Поскольку предполагается многопользовательская удаленная разработка, то мы решили вначале отработать выбор и настройку самой среды разработки. После нескольких экспериментов с Eclipse, Visual Studio и QT Creator выбор пал на кроссплатформенный VSCode и плагин от разработчика Espressif IDF для работы с фреймворком ESP-IDF.

В качестве «сердца» контроллера рассмотрим двухъядерный микроконтроллер ESP32, который обладает рядом преимуществ, и которые планируется использовать и раскрыть в проекте, а именно:

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

Clang-Tidy для автоматического рефакторинга кода

Auriga corporate blog Programming *C++ *Designing and refactoring *Compilers *
Tutorial

Существует много инструментов для анализа кода: они умеют искать ошибки, «узкие места», плохую архитектуру, предлагать оптимизацию. Но много ли среди них инструментов, которые могут не только найти, но и исправить код сами?


Представьте, что у вас есть большой проект на С или С++ (или даже С#), который разрабатывался много лет и многими людьми. В результате разные части проекта выглядят по-разному – нет единого стиля имен переменных, функций, типов данных. То есть в разных частях проекта использовался разный coding style: где-то имена в верхнем регистре, где-то CamelCase, где-то с префиксами, в других местах – без… Некрасиво, в общем.


Читать дальше →
Total votes 13: ↑13 and ↓0 +13
Views 13K
Comments 5

Пока смерть не разлучит нас или всё о static в C++

Programming *Perfect code *C++ *C *
Sandbox


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

Читать дальше →
Total votes 11: ↑9 and ↓2 +7
Views 100K
Comments 22

История домашнего аудио: золотая эра Hi-Fi

Аудиомания corporate blog Gadgets History of IT Old hardware Sound
Магнитная звукозапись и винил, получившие массовое распространение после Второй мировой войны, изменили акустическую экосистему в домах людей. Они не только преобразили подход к прослушиванию музыки, но и поменяли саму музыку. Рассказываем, как это произошло.

Total votes 16: ↑14 and ↓2 +12
Views 14K
Comments 5

Information

Rating
Does not participate
Registered
Activity