Pull to refresh
18
0
Даниил Кузнецов @Porohovnik

User

Send message

Некоторые малоизвестные фичи, фокусы и причуды языка C

Reading time19 min
Views21K

В этом посте разобраны некоторые фокусы, причуды и фичи языка C (некоторые из них – весьма фундаментальные!), которые, казалось бы, могут сбить с толку даже опытного разработчика. Поэтому я потрудился сделать за вас грязную работу и (в произвольном порядке) собрал некоторые из них в этом посте. Примеры сопровождаются ещё более вольными краткими пояснениями и/или листингами (некоторые из них цитируются).

Конечно же, здесь я не берусь перечислять абсолютно всё, так как факты из разряда «функция nan() не может устанавливать errno, поскольку в определённых ситуациях поведёт себя как strtod()» не слишком интересны.

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

Читать далее
Total votes 68: ↑67 and ↓1+85
Comments44

Интегральные резисторы или О чем молчат в спорах про проектные нормы

Level of difficultyMedium
Reading time20 min
Views11K

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

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

Правильно, ничего! Но есть нюансы.
Total votes 94: ↑94 and ↓0+122
Comments18

Самые быстрые мьютексы

Level of difficultyEasy
Reading time8 min
Views5.8K

Cosmopolitan Libc хорошо известна своим «полиглотным жирным бинарным» хаком, который позволяем исполняемым файлам запускаться на шести операционных системах для AMD64/ARM64. Вас может удивить, что при этом она может быть лучше С‑библиотекой для вашего продакшена. Чтобы продемонстрировать это, давайте сравним библиотеку мьютексов Cosmo с другими платформами.

Мы напишем простой тест, который создает 30 потоков, увеличивающих одно и то же число 100 000 раз. Это поможет проверить, насколько хорошо реализация мьютексов справляется с задачей при интенсивном использовании.

Читать далее
Total votes 22: ↑20 and ↓2+21
Comments7

Принцип работы утилиты ping в Linux

Level of difficultyMedium
Reading time8 min
Views13K

Что такое ICMP протокол и с чем его едят? Что такое сетевая модель OSI? Как послать ICMP пакет на сайт и получить ответ? Как работает утилита ping на linux? Все это вы узнаете здесь.

Читать далее
Total votes 10: ↑8 and ↓2+9
Comments13

Дерево 2.0. От компьютерных чипов до сенсорных экранов на основе древесины

Reading time7 min
Views3.7K

Деревянный транзистор. Источник.

Давайте начистоту: для большинства людей «экологичность» ограничивается отказом от пакетов в супермаркете и выбором велосипеда вместо автомобиля, если ехать не очень далеко. А что, если бы можно было отказаться от пластика и металлов в электронике? Да, звучит, мягко говоря, безумно. Но разве может это остановить исследователей, которые экспериментируют с целлюлозными нанофибриллами? В этой статье посмотрим, как некоторые ученые видят деревянную электронику и станет ли «зеленое» цифровое устройство в ближайшее время возможным.
Читать дальше →
Total votes 35: ↑34 and ↓1+47
Comments15

«Железная стена». Доспехи пехоты XIV-XV века

Reading time25 min
Views6.6K

История развития доспехов - штука веселая. Обилие источников на XIV-XV век позволяет отслеживать изменения доспехов с шагом в десять лет. В итоге стоит несчастному воину в кольчуге затесаться не в "свой" век, как опытные камрады, сопоставив его с актуальной иллюстрацией из научпопа, сразу ткнут пальцем - архаика, надобно пластин навесить и желательно во все тело. Попробуем разобраться, в чем ходили простые пехотинцы, которым не повезло разжиться детальным надгробием с актуальной броней на момент смерти.

Читать далее
Total votes 46: ↑41 and ↓5+48
Comments45

std::array в С++ не медленнее массива в С

Level of difficultyMedium
Reading time14 min
Views11K

Или почему не нужно бояться того, что удобно работает. Узнаем, что по этому поводу пишет стандарт, потом заглянем в реализации std::array в libc++ и libstdc++, затем посмотрим на ассемблер некоторых операций с этими объектами. Завершим всё это дело, как и полагается, бенчмаркингом.

Проверить, так ли это
Total votes 39: ↑38 and ↓1+52
Comments45

Почему мы перестали спать и что с этим делать

Reading time7 min
Views55K
Рекорд по нахождению без сна составляет 11 дней. Человек, который его поставил, прошёл через звуковые и зрительные галлюцинации, думал, что он чернокожий баскетболист, и путал дорожные знаки с людьми. Эксперимент позапрошлого века на щенках показал, что они способны прожить без сна не более 5 дней — в несколько раз меньше, чем без еды. Отсутствие сна лишает нас способности мыслить трезво и влияет на здоровье. При этом многие сознательно лишают себя отдыха, работая по ночам. В мире наблюдается «эпидемия недосыпа».

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

Total votes 43: ↑41 and ↓2+39
Comments174

Ассемблер для программистов на языках высокого уровня: Hello World

Level of difficultyMedium
Reading time6 min
Views22K

Если вы начинали изучение программирования с JavaScript, Rust, C или любого другого высокоуровневого языка, то ассемблерный код может показаться вам непонятным или даже пугающим.

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

Здесь нет ничего привычного нам: мы не видим ни условных операторов, ни циклов, нет никакого способа создавать функции… Да даже у переменных нет имён!

С чего же вообще начать?

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

Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
Читать дальше →
Total votes 61: ↑57 and ↓4+69
Comments41

Файлы, отображаемые в память

Reading time3 min
Views93K
В этой статье я хотел бы рассказать о такой замечательной штуке, как файлы, отображаемые в память(memory-mapped files, далее — MMF).
Иногда их использование может дать довольно таки существенный прирост производительности по сравнению с обычной буферизированной работой с файлами.
Так что ж это такое?
Total votes 58: ↑51 and ↓7+44
Comments95

Заметка о новом интерфейсе linux kernel — gpio uapi

Reading time7 min
Views18K

Начиная с версии ядра 4.6-r1 нам стал доступен новый интерфейс для взаимодействия с подсистемой ядра gpio. Теперь существует три официальных способа работы с gpio и получения от них прерываний. Нет смысла углубляться в потребности для данной подсистемы, для малой части это суровые будни, для другой части веселое хобби, и для всех вместе в ядре была предоставлена новая возможность взаимодействия.


Заметка носит популярный характер, так как основных преимуществ, которые шли в комплекте с нововведением, а именно упрощение работы с gpio в контексте ядра касаться не будем.

Читать дальше →
Total votes 11: ↑11 and ↓0+11
Comments3

Считаем чужие деньги: сколько Хабр тратит на ППА в месяц?

Level of difficultyEasy
Reading time7 min
Views7.5K

Несколько недель назад от Хабра пришло уведомление о присвоении моему аккаунту статуса «Старожил». Это означает, что теперь есть возможность присоединиться к ППА — программе поощрения авторов.
Возникло желание понять, что такое ППА? Нет, не каковы Правила начисления вознаграждения, а чем является ППА для Хабра и его авторов.
Существует много оценочных суждений относительно ППА, но я, являясь сторонником фактов, решил взять карандаш, пару листов бумаги, калькулятор Электроника БЗ‑18М и произвести ряд вычислений. Вероятно, они будут интересны не только для меня.

SELECT * FROM habr
Total votes 67: ↑64 and ↓3+92
Comments120

Советский Need for Speed. Краткая история игры «За рулём»

Level of difficultyEasy
Reading time8 min
Views22K


Когда компьютеры были большими, а сверстники — маленькими, вместо работы каждый день нужно было ходить в школу, а программировать приходилось не в Visual Studio Code, а на калькуляторе МК-54, электронные, да и просто электромеханические игры считались чем-то особенным. Автомобили на радиоуправлении и изделия под лейблом «Электроника» вроде «Ну, погоди» и «Тайны океана» стоили дорого и относились, скорее, к предметам роскоши. Но существовала ещё одна игра, о которой мечтал, наверное, каждый советский школьник — она называлась «За рулём». Именно её мне подарили однажды на день рождения, и это был один из самых счастливых дней рождения в моей жизни.
Читать дальше →
Total votes 120: ↑119 and ↓1+160
Comments90

Самодельные суперконденсаторы (ионисторы)

Level of difficultyMedium
Reading time13 min
Views29K
Картинка Freepik

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

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

Думается, что этого перечисления уже достаточно, чтобы всерьёз задуматься об изготовлении таких устройств, так как любой самодельщик сможет найти для них, даже навскидку, множество применений.
Читать дальше →
Total votes 64: ↑61 and ↓3+82
Comments92

Что такое гамма кривая и зачем композерам работать в линейной гамма-кривой?

Level of difficultyEasy
Reading time4 min
Views3.9K

Начнем немного издалека: так уж сложилось, что наш глаз видит яркости окружающего мира в нелинейной кривой. Там, где в реальном мире яркость одного объекта может быть больше другого в 2 раза, для нашего глаза разница в яркости может показаться иной. Для наглядной проверки достаточно взглянуть на обычный линейный градиент:

Простое объяснение наболевшей темы.

Читать далее
Total votes 21: ↑21 and ↓0+21
Comments5

Серж Хумпич: человек, взломавший национальную банковскую систему Франции

Level of difficultyEasy
Reading time7 min
Views9.5K


Попробуйте произнести вслух: «взлом национальной банковской системы». В сознании сразу же возникает образ международной хакерской группировки, тщательно планирующей и осуществляющей атаки высочайшей технической сложности. И как-то не приходит в голову, что за таким взломом может стоять один человек, который, в общем-то, никогда раньше не задумывался о карьере хакера. Именно это произошло в 1997 году, когда уже немолодой инженер-программист Серж Хумпич поставил на уши крупнейшие кредитные организации Франции, придумав оригинальный способ оплачивать покупки картами, даже не имея банковского счета.
Читать дальше →
Total votes 31: ↑30 and ↓1+40
Comments24

Необычные приёмы отладки, которые браузер от вас скрывает

Level of difficultyMedium
Reading time8 min
Views14K

Список неочевидных, но при этом полезных хаков, которые позволят использовать отладчик вашего браузера1 более полноценно. Для понимания материала статьи потребуется как минимум средний уровень владения инструментами разработчика.
Читать дальше →
Total votes 70: ↑69 and ↓1+94
Comments12

Гипотеза континуума, современное состояние

Level of difficultyMedium
Reading time8 min
Views25K

Проблема континуума волновала математиков со времен создателя теории множеств, Кантора. Великий математик Гильберт поставил ее на первое место в своем знаменитом списке. В каком-то смысле она считается решенной - только многие не считают это решением, и она по-прежнему занимает умы философов и математиков.

Читать далее
Total votes 69: ↑66 and ↓3+85
Comments109

Как из вакансии понять, что наниматель-муд**: 5 признаков

Reading time3 min
Views56K

Всем привет! Я Тёма Логинов, за 4 года работы в digital я неоднократно искал работу, нанимал людей и помогал это делать другим.

Многие компании оформляют вакансии по-странному: предлагают работу за три рубля или вешают на одного сотрудника работу целого отдела. Рассказываю, как распознать такие вакансии, чтобы уберечь себя от работы на [ч]удаков.

Читать далее
Total votes 122: ↑91 and ↓31+87
Comments583
1
23 ...

Information

Rating
Does not participate
Location
Люберцы, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Software Developer, Game Developer
SQL
C++
C++ STL
Cmake
SQLite
PostgreSQL