Pull to refresh
-1
0
Send message

«Умная» детская коляска «Максимка»

Reading time12 min
Views17K
Во время прогулки с ребенком в коляске мозг немного освобождается от ежедневных забот и начинает мыслить творчески. Так, в одной из прогулок, и родилась идея умной детской коляски, которая может предоставить родителям некоторую информацию, в какой-то мере обеспечить безопасность передвижения по улицам, сделать коляску выделяемой из множества других.
Как у меня обычно бывает, когда приходит какая-то идея, то она обдумывается, а потом (Остапа начинает нести) она обрастает дополнительными функциями о которых изначально не задумывался. Эти мысли зажигают страсть творчества и начинается процесс.

image

Итак, все началось с того, что во время прогулки необходимо было видеть текущее время, чтобы знать время прогулки…
Total votes 52: ↑51 and ↓1+71
Comments64

Эмулятор RFID

Reading time14 min
Views69K

Эмулятор карт EM Marine



Наверняка каждому из нас, кто хоть раз бывал в обычных офисах, было интересно, как же функционируют эти бесконтактные пропуска. В данной статье мы разберёмся с принципом работы бесконтактных карт и сделаем эмулятор буквально из трёх радиодеталей.
Читать дальше →
Total votes 124: ↑120 and ↓4+164
Comments91

Делаем копию карты-пропуска по фото

Reading time5 min
Views153K

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


Читать дальше →
Total votes 49: ↑46 and ↓3+58
Comments79

Вера Глушкова: «Вирус кибернетики витал над городом Киевом»

Reading time11 min
Views8.9K


Во второй части интервью музейному проекту DataArt старший научный сотрудник киевского Института кибернетики Вера Глушкова вспоминает, как жили советские студенты, рассказывает о хэппининге «Кибертония», на который в 1960-х ходил весь Киев, и его возрождении в 1970-х, о футбольной кибернетике Валерия Лобановского и о том, что значит быть дочерью знаменитого ученого.
Читать дальше →
Total votes 26: ↑24 and ↓2+29
Comments10

Притворяемся что пишем на C#, но только на Powershell

Reading time5 min
Views17K

Powershell — удобная API построенная на .net. Powershell позволяет пользователям писать скрипты, не упираясь в программирование, при этом получая схожие результаты. Что происходит на КДВП, автор объяснит позже по тексту. Сейчас нам срочно нужно притвориться, что мы программируем на C#.

TL;DR: Postman не нужен, если есть Powershell. Но сперва нужно зайти издалека.
Читать дальше →
Total votes 30: ↑26 and ↓4+31
Comments18

Что нового в C# 8?

Reading time14 min
Views74K

«Восьмерка» еще даже не вышла RTM а я уже пишу про нее пост. Зачем? Ну, основная идея что тот, кто предупрежден — вооружен. Так что в этом посте будет про то что известно на текущий момент, а если это все подстава, ну, поделом.


Читать дальше →
Total votes 108: ↑98 and ↓10+88
Comments230

Разложение науки идеологией

Reading time5 min
Views47K
Привет, Хабр! Представляю вашему вниманию перевод статьи «The Ideological Corruption of Science» автора Lawrence Krauss.

Лоренс Краусс. Письмо в газету Wall Street Journal


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

image
Читать дальше →
Total votes 135: ↑132 and ↓3+174
Comments445

В черном-черном океане живет черная-черная рыба с альбедо кожи 0.5%

Reading time2 min
Views43K

Черным океан мы назвали потому, что рыба живет на большой глубине, куда практически не проникают солнечные лучи. Там царит вечная ночь. А рыба реально черная — поверхность тела поглощает 99,5% света.

На фото рыба не кажется такой уж черной, потому что вспышки камеры очень яркие. Даже 0,5% отраженного света хватило, чтобы увидеть рыбку во всей красе.

Природа ничего не делает просто так. Некоторые существа, проживающие на дне океана, люминесцируют, привлекая жертв, плывущих на свет. Это разумный способ выживания. Черная рыба использует свою расцветку для того, чтобы спрятаться от хищников. Это альтернативный способ выжить.
Читать дальше →
Total votes 73: ↑70 and ↓3+94
Comments76

Неопределённое поведение и теорема Ферма

Reading time4 min
Views54K
В соответствии со стандартами C и C++, если выполнение программы приводит к переполнению знаковой целой переменной, или к любому из сотен других «неопределённых действий» (undefined behaviour, UB), то результат выполнения программы может быть любым: она может запостить на Твиттер непристойности, может отформатировать вам диск…
Увы, в действительности «пасхальные яйца», которые бы заставляли программу в случае UB делать что-то из ряда вон выходящее, не встречались со времён GCC 1.17 — та запускала nethack, когда встречала в коде программы неизвестные #pragma. Обычно же результат UB намного скучнее: компилятор просто оптимизирует код для тех случаев, когда UB не происходит, не придавая ни малейшего значения тому, что этот код будет делать в случае UB — ведь стандарт разрешает сделать в этом случае что угодно!
В качестве иллюстрации того, как изобилие UB в стандарте позволяет компилятору выполнять неочевидные оптимизации, Реймонд Чен приводит такой пример кода:

int table[4];
bool exists_in_table(int v)
{
    for (int i = 0; i <= 4; i++) {
        if (table[i] == v) return true;
    }
    return false;
}

В условии цикла мы ошиблись на единицу, поставив <= вместо <. В итоге exists_in_table() либо должна вернуть true на одной из первых четырёх итераций, либо она прочтёт table[4], что является UB, и в этом случае exists_in_table() может сделать всё что угодно — в том числе, вернуть true! В полном соответствии со стандартом, компилятор может соптимизировать код exists_in_table() до
int table[4];
bool exists_in_table(int v)
{
    return true;
}

Такие оптимизации иногда застают программистов врасплох.
Читать дальше →
Total votes 107: ↑104 and ↓3+101
Comments129

Что такое LLVM и зачем он нужен?

Reading time9 min
Views87K

Всем привет! Думаю, у многих сразу возник другой вопрос — а зачем вообще нужна ещё одна статья про LLVM, ведь на хабре их и так больше сотни? Моей задачей было написать "введение в тему" for the rest of us — профессиональных разработчиков, не планирующих создавать компиляторы и совершенно не интересующихся особенностями устройства LLVM IR. Насколько я знаю, подобного ещё не было.


Главное, что интересует практически всех — и о чём я планирую рассказать — вынесено в заголовок статьи. Зачем нужен LLVM, когда есть GCC и Visual C++? А если вы не программируете на C++, вам стоит беспокоиться? И вообще, LLVM это Clang? Или нет? И что эти четыре буквы на самом деле означают?

Читать дальше →
Total votes 97: ↑92 and ↓5+119
Comments136

Магические сигнатуры методов в C#

Reading time9 min
Views31K

Представляю вашему вниманию перевод статьи The Magical Methods in C# автора CEZARY PIĄTEK.


Есть определенный набор сигнатур методов в C#, имеющих поддержку на уровне языка. Методы с такими сигнатурами позволяют использовать специальный синтаксис со всеми его преимуществами. Например, с их помощью можно упростить наш код или создать DSL для того, чтобы выразить решение проблемы более красивым образом. Я встречаюсь с такими методами повсеместно, так что я решил написать пост и обобщить все мои находки по этой теме, а именно:


  • Синтаксис инициализации коллекций
  • Синтаксис инициализации словарей
  • Деконструкторы
  • Пользовательские awaitable типы
  • Паттерн query expression
Читать дальше →
Total votes 65: ↑64 and ↓1+80
Comments70

Пора обновить ваш монитор

Reading time16 min
Views178K

Иллюстрация: Юлия Прокопова

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

Поэтому я оптимизирую настройки, чтобы показывать действительно, действительно хорошие буквы. Для этого необходим хороший монитор. Не просто нужен, а ОБЯЗАТЕЛЕН. А под «хорошим» я имею в виду настолько хороший, насколько это возможно. Это мои мысли, основанные на моём собственном опыте того, какие мониторы лучше подходят для программирования.
Читать дальше →
Total votes 142: ↑109 and ↓33+115
Comments991

Как я спас мир

Reading time4 min
Views37K
image

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

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

Интересное началось чуть позже — когда я уже вышел на перрон, толкая перед собой выпрошенную у мамочки сумку на колесиках, в которой лежал ионоулавливатель. И случайно наехал на мужчину, который брел в никуда с потерянным выражением на лице.
Читать дальше →
Total votes 117: ↑103 and ↓14+125
Comments198

Пламенные и ледяные моторы спутников

Reading time12 min
Views23K
Привет, с вами lozga в несколько непривычной роли автора поста корпоративного блога. В январе в челябинской Точке кипения прошла олимпиада «Астероидная безопасность», в рамках которой спутникостроители и преподаватели Южно-Уральского государственного университета Валерий Богданов и Руслан Пешков прочитали лекцию для школьников о двигателях для космических аппаратов. Этот материал – развернутая обработка лекции и моей беседы с ними.


Двигатель ориентации на топливной паре метан-кислород, фото NASA/John H. Glenn Research Center
Читать дальше →
Total votes 55: ↑55 and ↓0+55
Comments47

Алгоритм быстрого и простого объёмного рендеринга

Reading time9 min
Views14K

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

У моего ShaderToy были три основные задачи:

  1. Выполнение в реальном времени
  2. Простота
  3. Физическая корректность (… или типа того)

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

  1. Трассировка лучей непрозрачных объектов. Все объекты являются примитивами с простыми пересечениями с лучами (1 плоскость и 3 сферы)
  2. Для вычисления освещения используется затенение по Фонгу, а в трёх сферических источниках света применется настраиваемый коэффициент затухания света. Лучи теней не требуются, потому что мы освещаем только плоскость.

Вот как это выглядит:

ShaderToy screenshot
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments6

Что внутри у .wasm-файла? Знакомство с wasm-decompile

Reading time7 min
Views9.7K
В нашем распоряжении имеется множество компиляторов и других инструментов, позволяющих создавать .wasm-файлы и работать с ними. Количество этих инструментов постоянно растёт. Иногда нужно заглянуть в .wasm-файл и разобраться с тем, что у него внутри. Может быть, вы — разработчик одного из Wasm-инструментов, или, возможно, вы — программист, который пишет код, рассчитанный на преобразование в Wasm, и интересующийся тем, как выглядит то, во что превратится его код. Такой интерес может быть вызван, например, соображениями производительности.



Проблема заключается в том, что в .wasm-файлах содержится довольно-таки низкоуровневый код, который сильно похож на настоящий ассемблерный код. В частности, в отличие, например, от JVM, все структуры данных компилируются в наборы операций load/store, а не в нечто такое, в чём имеются понятные имена классов и полей. Компиляторы, вроде LLVM, могут так изменить входной код, что то, что у них получается, и близко на него не похоже. 

Как быть тому, кто хочет, взяв .wasm-файл, узнать о том, что в нём происходит?
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments4

Как работает рендеринг 3D-игр: текстурирование и фильтрация текстур

Reading time17 min
Views30K
image

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

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

Часть 1: обработка вершин

Часть 2: растеризация и трассировка лучей

Начнём с простого


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

Но при многослойном использовании и комбинировании с помощью сложных вычислений такие простые изображения в 3D-сцене могут создавать поразительно реалистичные изображения. Чтобы понять, как такое возможно, давайте полностью их отключим и посмотрим, как будут выглядеть объекты 3D-мира без текстур.
Читать дальше →
Total votes 33: ↑33 and ↓0+33
Comments7

Усложнение команд консоли, 1979−2020

Reading time14 min
Views30K
Моё хобби — открыть «Философию UNIX» Макилроя на одном мониторе, одновременно читая маны на другом.

Первый из принципов Макилроя часто перефразируют как «Делайте что-то одно, но делайте хорошо». Это сокращение от его слов «Создавайте программы, которые делают одну вещь хорошо. Для новой работы создавайте новые программы, а не усложняйте старые добавлением новых "функций"».

Макилрой приводит пример:

Для посторонних кажется удивительным тот факт, что компиляторы UNIX не выдают листинги: печать лучше осуществляется и более гибко настраивается с помощью отдельной программы.

Если вы откроете справку для ls, то она начинается с

ls [-ABCFGHLOPRSTUW@abcdefghiklmnopqrstuwx1] [file ...]

То есть однобуквенные флаги для ls включают все строчные буквы, кроме {jvyz}, 14-ти прописных букв, @ и 1. Это 22 + 14 + 2 = 38 только односимвольных вариантов.
Читать дальше →
Total votes 56: ↑54 and ↓2+70
Comments135

Чем развлечься в самоизоляции, или передаем данные с помощью звуковой карты

Reading time4 min
Views12K
Привет Хабр.

После недавней публикации про передачу OFDM, стало интересно проверить, каким способом эффективнее всего передавать данные по воздуху. Мы попробуем разные виды модуляции, и посмотрим какие из них лучше подойдут для передачи данных из одного конца квартиры или офиса в другой. Для тестов будет достаточно ноутбука, смартфона и программы MultiPSK.



Для тех кому интересно как это работает, продолжение под катом.
Читать дальше →
Total votes 20: ↑17 and ↓3+20
Comments32

23 непростых вопроса для JavaScript-собеседования

Reading time15 min
Views69K
Хотите подготовиться к собеседованию по JavaScript и ищете вопросы, на которых можно попрактиковаться? Если так — считайте, что ваши поиски окончены. Автор материала, перевод которого мы сегодня публикуем, говорит, что собрал более двух десятков вопросов по JavaScript, предназначенных для тех, кто хочет превратиться из джуниора в сеньора, для тех, кто стремится успешно пройти собеседование в сфере фронтенд-разработки и получить интересное предложение от работодателя.


Читать дальше →
Total votes 50: ↑30 and ↓20+23
Comments72

Information

Rating
Does not participate
Registered
Activity