Pull to refresh
22
0
Шауэрман Александр @Shamrel

Разнорабочий

Send message

Сравнение производительности C и C++ на примере сжатия Хаффмана

Reading time20 min
Views65K

Введение


Когда на IT-форумах задают вопрос «Быстрее ли язык программирования X языка Y», это обычно вызывает потоки эмоций и считается некорректным. Сродни вопросу про религию или предпочтение той или иной политической партии. Действительно, язык — это способ выражения мысли, идеи. В данном случае идеи программной системы. Он не быстр и не медлен. Он может быть более или менее лаконичным, более или менее точным. А скорость определяется не столько языком, сколько конечным кодом, который генерирует компилятор этого языка. Или скоростью интерпретатора в случае интерпретируемого языка.

Но это всё философия. А на практике обычно есть практическая задача разработки ПО. И, действительно, реализовать это ПО можно на десятке разных языков программирования. Поэтому, хоть это и «религиозный вопрос» в случае публичного обсуждения, вопрос этот часто возникает в голове IT-специалиста, стоящего перед конкретной задачей. «Сколько времени мне потребуется для реализации задачи на языке X и какие у полученного ПО будут характеристики, в том числе скоростные, по сравнению с реализацией этой задачи на языке Y». Понятное дело, точного ответа на этот вопрос нет, специалист опирается на свой личный опыт и отвечает как-то типа «с вероятностью 95%, написанная на ассемблере, эта задача будет работать быстрее, чем на php». Но, положа руку на сердце, опыт этот редко базируется на точных цифрах реальных задач, которые сам этот специалист реализовал. Нет, ну кто в здравом уме будет писать сложное ПО сначала на php, а потом его же переписывать на ассемблере, только чтобы измерить характеристики? В основном ограничиваются синтетическими тестами типа сортировки массива, построения и обхода бинарного дерева и тому подобных.
Читать дальше →

Принцип работы потокового шифра с примерами на C#. От Одноразового блокнота до потокового шифра на основе хеш-ф-и и CTR

Reading time7 min
Views23K
По ходу статьи, развивая идею «Одноразового блокнота», «изобретем» потоковый шифр на основе хеш-функции. Узнаем, что такое Counter Mode Encryption CTR.

Знание терминов «хеш-функция» и «Одноразовый блокнот» для чтения не обязательно.

Одноразовый блокнот


В «Одноразовом блокноте» шифротекст получается путем наложения ключа на открытый текст. Наложение можно сделать, например, с помощью побитового XOR: каждый бит открытого текста XOR-ится с соответствующим (таким же по порядку) битом ключа.

Каждый бит открытого текста XOR-ится с таким же по порядку битом ключа

Рис 1. Каждый бит открытого текста XOR-ится с таким же по порядку битом ключа
Читать дальше →

Вещи, которые вызывают недоверие и отталкивают ваших клиентов от сайта

Reading time4 min
Views28K
Дисклеймер: Вещи, о которых я сегодня поговорю для большинства людей связанных с веб-средой являются очевидными и вполне понятными (по крайней мере, мне так кажется), однако я не перестаю встречать их на необъятных просторах интернета и по сей день.

Итак, что же отпугнёт потенциального клиента от вашего сайта (речь будет в основном о продающих лендингах) или заставит его насторожиться:

Счетчики, таймеры, купить сейчас


image

Вы наверняка с ними сталкивались. Те самые счетчики, по истечении времени которых акция на товар или услугу пропадёт, цена снова взлетит до потолка или вообще так желаемая вами вещь пропадет со складов компании. Но это в лучшем случае.
Читать дальше →

Доработка USB-стека в микроконтроллерах STM32 и TivaC

Reading time5 min
Views31K
Наличие USB порта в современных микроконтроллерах открывает широкие возможности для самостоятельного изготовления разнообразных управляемых с компьютера устройств. На практике, однако, выясняется, что поставляемые производителем библиотеки для работы с USB нуждаются в доработке. Если вам интересен опыт подобной доработки для двух популярных семейств МК — добро пожаловать под кат.
Читать дальше →

Постигаем Си глубже, используя ассемблер

Reading time8 min
Views57K
Вдохновением послужила эта статья: Разбираемся в С, изучая ассемблер. Продолжение так и не вышло, хотя тема интересная. Многие бы хотели писать код и понимать, как он работает. Поэтому я запущу цикл статей о том, как выглядит Си-код после декомпиляции, попутно разбирая основные структуры кода.
Читать дальше →

Назови мне свою зарплату, и я скажу кто ты

Reading time6 min
Views151K
Эта статья родилась в качестве ответа на вот эту вот статью. А именно на вот этот пункт:
«Правило Лебедева» — никто внутри компании не должен знать, сколько получает другой. Не соблюдает ваш зам — увольняйте; не соблюдает профессионал — увольняйте; вы сами обмолвились — с этого момента работать у вас никто не будет, получать зарплату будут, а работать — нет. Будут выполнять письменно сказанное, но буквально понятое. Если профессионал получает много — это хорошо. Если об этом знают другие, они исследуют, а не говно ли он как человек.
Читать дальше →

Изготовление современного традиционного лука

Reading time9 min
Views71K
image

Попробуем описать такую сферу деятельности, как традиционное лукостроение. Рассмотрим необходимые знания, навыки, технологии и инструменты необходимые для создания луков на уровне «продвинутый любитель».
Читать дальше →

Что такое LoRaWan

Reading time9 min
Views225K


Напомню, что термином IoT (Internet of Things) обозначают различные устройства, которые используют выход в сеть для взаимодействия друг с другом. К примеру, умная розетка подключается к Интернету не затем, чтобы сидеть в социальных сетях. Она получает из Сети команды, которые отправляет ее владелец. И она вещь. Вещь, которая пользуется Интернетом.
Читать дальше →

Инопланетяне, постапокалипсис, Иисус и космические контрабандисты: самые интересные фантастические книги 2017

Reading time6 min
Views31K

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

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

Настройка Sublime Text 3, SW4 и STM32CubeMX для разработки STM32 под Linux

Reading time13 min
Views21K

Подобных статей достаточно много на просторах интернета, но хотелось бы написать актуальную вариацию. Лично я долгое время мучался в связке: Ubuntu — основная система, разработка под STM32 в виртуальной машине Windows 7. Но однажды меня это очень утомило и я таки решил потратить несколько дней на поиск решения и вылизывание полноценной среды под Linux Ubuntu. Забегу вперёд и скажу, что идеала я так и не добился, не удалось сделать realtime debug, как в Keil. В остальном всё очень пристойно.


Внимание, очень много текста и картинок!

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

Автоматное программирование. Часть 4. Эффективность автоматно-спроектированных программ

Reading time16 min
Views9.2K
В предыдущих двух статьях речь шла о диаграмме состояний и переходов, используемой для описания динамических процессов в автоматном стиле, и о том, что диаграмма состояний и переходов даёт наилучшее понимание таких процессов. Также были рассмотрены базовые методы реализации автоматов, заданных диаграммой состояний, и были очерчены артефакты автоматной схемотехники, доставшиеся от неё автоматному программированию. Но, до сих пор совершенно не затронут вопрос: насколько эффективны автоматно-реализованные программы?

Я бы сформулировал вопрос иначе: насколько эффективны автоматно-спроектированные программы? Такая формулировка вопроса намекает, что автоматное проектирование — источник высокой эффективности программ. Я ещё практически не касался столь важной темы как эффективность, и пример «Дисплей» идеально подходит для иллюстрации эффективности автоматного проектирования. В первой статье я познакомил читателей с «лабораторной» версией этого модуля, но тестировать я буду «боевой» вариант, процесс проектирования которого я приведу в следующей статье. Исследование эффективности будет выполнено для платформ msp430 и CortexM3.

Чтобы не быть субъективным, оценивая эффективность, нужно с чем-то сравнивать результаты. Поэтому я проведу тот же комплекс испытаний для неавтоматной реализации примера «Дисплей» любезно предоставленной michael_vostrikov, за что ему огромная благодарность и плюсы в карму.

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

Опыт разработки low power устройств на STM32L

Reading time7 min
Views26K
Довольно часто можно встретить статьи, посвященные использованию режимов пониженного энергопотребления. В большинстве случаев в них описываются достоинства и недостатки конкретного микроконтроллера, а все рекомендации сводятся к обобщенной фразе — используй режимы сна.
Читать дальше →

Освещение растений белыми светодиодами

Reading time13 min
Views274K
Интенсивность фотосинтеза под красным светом максимальна, но под одним только красным растения гибнут либо их развитие нарушается. Например, корейские исследователи [1] показали, что при освещении чистым красным масса выращенного салата больше, чем при освещении сочетанием красного и синего, но в листьях значимо меньше хлорофилла, полифенолов и антиоксидантов. А биофак МГУ [2] установил, что в листьях китайской капусты под узкополосным красным и синим светом (по сравнению с освещением натриевой лампой) снижается синтез сахаров, угнетается рост и не происходит цветения.


Рис. 1 Леанна Гарфилд, Tech Insider — Aerofarms

Какое нужно освещение, чтобы при умеренном энергопотреблении получить полноценно развитое, большое, ароматное и вкусное растение?
Читать дальше →

Австралия: небольшая реколонизация Земли

Reading time11 min
Views168K
Побывать в «ничейных землях» пустынь Австралии — это почти как попасть в научно-фантастический роман про колонизацию экзопланеты. Только взаправду. Белые люди системно пришли всего около 200 лет, и за это время успела сложиться молодая, эффективная и очень интересная инфраструктура. Так что ощущения просто космические.

В Австралии опасно. Не так, чтобы всё живое хотело вас убить, но близко. Смертей десятки в год, что близко не лежало в сравнении с ДТП, но зато они очень, скажем так, изобретательные. Например, к воде вообще нельзя подходить — там, в зависимости от водоёма, крокодилы, ядовитые кубомедузы, акулы и змеи. Благодаря одному немецкому туристу, последние слова которого были «Да нет тут никаких крокодилов», знаки об их наличии по шоссе Стюарта теперь на двух языках. А благодаря одной женщине, решившей искупаться во время менструации, мы теперь знаем, что акулы умеют подниматься вверх по течению ручья на 2 километра. Хворост около трассы для биваков туристов собирают строго гиды — отлучаться с асфальта опасно для жизни, потому что в топ-20 самых ядовитых змей мира всего 2 строки принадлежат неместным. К огромному неудовольствию австралийцев.


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

А ещё Австралия постоянно либо затоплена, либо горит, либо находится в короткой передышке между этими состояниями. Но давайте начну с самого начала. Сначала мы оказались в Nowhere Land Северной территории.
Читать дальше →

История предсказания переходов с 1 500 000 года до н.э. по 1995 год

Reading time18 min
Views44K
Это приблизительная расшифровка лекции о предсказании переходов (предсказании ветвлений) на localhost, новом цикле лекций, организованном RC. Выступление состоялось 22 августа 2017 года в Two Sigma Ventures.

Кто из вас использует ветвления в своём коде? Можете поднять руку, если применяете операторы if или сопоставление с образцом?

Большинство присутствующих в аудитории поднимают руки

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

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

Психологи объяснили, как склонить людей к покупке плохого товара. Всё дело в обзорах

Reading time3 min
Views30K
Главная задача маркетологов — впарить ненужный товар. Они не гнушаются никакими способами: врут в рекламе, накручивают рейтинги, используют Geektimes и другие тематические ресурсы для публикации обзоров товара. Главное, перед началом контекстной рекламной кампании создать необходимый «информационный фон» из благоприятных рейтингов, хороших отзывов и обзоров. Тогда человек, если начнёт искать информацию о продукте, везде будет видеть только хорошее. Его поймали в ловушку.

Нет обзоров — нет продаж. Этот нехитрый лозунг хорошо известен практикующим «онлайновым барыгам». Теперь он подтверждён научно: результаты своего исследования опубликовала в журнале Psychological Science группа психологов из Стэнфордского университета, Индианского университета в Блумингтоне и Калифорнийского университета в Лос-Анджелесе.

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

Шесть мифов о блокчейне и Биткойне, или Почему это не такая уж эффективная технология

Reading time9 min
Views207K
Автор статьи — Алексей Маланов, эксперт отдела развития антивирусных технологий «Лаборатории Касперского»

Неоднократно слышал мнение о том, что блокчейн — это очень круто, это прорыв, за ним будущее. Спешу вас разочаровать, если вы вдруг поверили в это.

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


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

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

Reading time9 min
Views126K
В этой статье мы поговорим о «магической» константе 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.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →

Обзор фантастики на Geektimes с 2009 по 2017 годы

Reading time23 min
Views44K
На geektimes есть хабы «Читальный зал» (про литературу для гиков), «Научная фантастика» (про научную фантастику), «Киберпанк» (про киберпанк). Как-то так повелось, что в эти хабы всякие деятели стали публиковать свои рассказы. Причём, это не только небольшие зарисовки, для лёгкого пятничного чтения, но и этакие «мыльные оперы»: в реальном времени можно следить, как авторы пишут главы рассказов, можно сказать, «Special for GT».

Я сейчас не хочу обсуждать целесообразность подобных публикаций на техническом ресурсе (кто-то за, кто-то против, кто-то предлагает создать отдельных хаб) или соответствие статей выбранным хабам. Так получилось, что последние пару лет я непериодически читал ресурс (вновь активно «сидеть» стал где-то только в последние полгода) и мне стало интересно — а сколько же фантастики тут вообще написано?



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

Как подсознательно побудить сотрудников соблюдать дедлайны проекта

Reading time6 min
Views12K
Управление проектом в любой сфере предполагает наличие дедлайнов. Есть главный, венчающий собой всю работу и говорящий о его завершенности/незавершенности. Как правило, планы включают в себя и другие дедлайны для этапов поменьше.

image

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

Information

Rating
Does not participate
Date of birth
Registered
Activity