Pull to refresh
0
@sir_psiho_sexy read⁠-⁠only

User

Send message

Неожиданная красота простых чисел

Reading time 8 min
Views 64K
image

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

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

В природе и в нашей жизни простые числа используются повсюду: цикады выстраивают по ним свои жизненные циклы, часовщики применяют их для вычисления тиканья, а в авиационных двигателях с их помощью балансируется частота воздушных импульсов. Однако все эти области применения бледнеют на фоне факта, знакомого каждому криптографу: простые числа находятся в самом сердце современной компьютерной безопасности, то есть они напрямую несут ответственность за защиту всего. Видите замок в адресной строке браузера? Да, это значит, что используется двухключевое «рукопожатие», основанное на простых числах. Как защищается при покупках ваша кредитная карта? Тоже при помощи криптографии на основе простых чисел.

Однако несмотря на то, что мы постоянно полагаемся на их уникальные свойства, простые числа оставались для нас неуловимыми. На протяжении всей истории математики величайшие умы пытались доказать теорему о предсказании чисел, являющихся простыми, или о том, как далеко друг от друга они должны располагаться.
Читать дальше →
Total votes 158: ↑155 and ↓3 +152
Comments 43

Книга «Классические задачи Computer Science на языке Python»

Reading time 8 min
Views 19K
image Многие задачи в области Computer Science, которые на первый взгляд кажутся новыми или уникальными, на самом деле уходят корнями в классические алгоритмы, методы кодирования и принципы разработки. И устоявшиеся техники по-прежнему остаются лучшим способом решения таких задач!

Книга даст вам возможность глубже освоить язык Python, проверить себя на испытанных временем задачах, упражнениях и алгоритмах. Вам предстоит решать десятки заданий по программированию: от самых простых (например, найти элементы списка с помощью двоичной сортировки), до сложных (выполнить кластеризацию данных методом k-средних). Прорабатывая примеры, посвященные поиску, кластеризации, графам и пр., вы вспомните то, о чем успели позабыть, и овладеете классическими приемами решения повседневных задач.
Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Comments 5

Дозиметр для Серёжи. Часть II. «столетние трубки» vs мирный атом

Reading time 27 min
Views 58K
В первой части своего повествования я рассказал о производителях, без сомнения, ТОП-овых белорусских дозиметров. Несмотря на все их достоинства, основные недостатки — отсутствие в розничной продаже и высокая цена даже на вторичном рынке — сводят полезность упомянутых приборов для рядового пользователя к нулю. Основная претензия к оборудованию для контроля радиационного фона со стороны обывателя — должно быть просто и дешево. Поэтому сегодня я попробую описать свое видение простых, сделанных на коленке сигнализаторов радиоактивности. Никаких там сцинцилляторов за сотни и тысячи долларов, намотки трансформаторов и травления печатных плат. Сегодня под катом то, что под силу каждому человеку обладающему стандартным уровнем технической грамотности.

Читать дальше →
Total votes 86: ↑82 and ↓4 +78
Comments 176

Путешествие по Стеку. Часть 1

Reading time 7 min
Views 91K


В предыдущих материалах мы рассмотрели размещение программы в памяти – одну из центральных концепций, касающихся выполнения программ на компьютерах. Теперь обратимся к стеку вызовов – рабочей лошадке большинства языков программирования и виртуальных машин. Нас ожидает знакомство с удивительными вещами вроде функций-замыканий, переполнений буфера и рекурсии. Однако всему свое время – в начале нужно составить базовое представление о том, как работает стек.
Читать дальше →
Total votes 47: ↑44 and ↓3 +41
Comments 15

Особенности вызова функций в С++

Reading time 33 min
Views 59K

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


  • Регистры и их назначение при вызове функций.
  • Передача и возврат простых типов и структур.
  • Как передача по ссылке и по значению влияют на оптимизации тела функции компилятором.
  • Как используется место при многочисленных вызовах функций.
  • Механизм виртуальных вызовов.
  • Оптимизация хвостовых вызовов и рекурсии.
  • Инициализация структур, массивов и векторов.

Осторожно! Статья содержит большое количество кода на C++ и ассемблере (Intel ASM с комментариями), а также множество таблиц с оценками производительности. Всё написанное актуально для x86-64 System V ABI, который используется во всех современных Unix операционных системах, к примеру, в Linux и macOS.

Читать дальше →
Total votes 51: ↑51 and ↓0 +51
Comments 29

Шпаргалка по аббревиатурам C++ и не только. Часть 1: C++

Reading time 20 min
Views 54K
Когда-то я собеседовался на должность C++ разработчика в одну приличную и даже известную контору. Опыт у меня тогда уже кое-какой был, я даже назывался ведущим разработчиком у тогдашнего своего работодателя. Но на вопросы о том, знаком ли я такими вещами, как DRY, KISS, YAGNI, NIH, раз за разом мне приходилось отвечать «Нет».

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


Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Comments 29

Домашний ЧПУ-фрезер как альтернатива 3D принтеру, часть четвертая. Общие понятия обработки

Reading time 6 min
Views 33K
Начав писать про стратегии обработки, я понял что творю «обезьяний набор» — пошаговое руководство даже не для чайников, а для идиотов, мои шаги повторить можно, сделать свои по образцу тоже, но понимания не добавляется. В свое время, когда я внезапно решил стать фрезеровщиком, имея в бэкграунде высшее медицинское, МБА и 10 лет компьютерного ритейла, мне было очень сложно продираться через терминологию и абсолютно новый понятийный аппарат.

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

image

Ниже — моя скромная попытка пробежаться по базовым понятиям фрезерной обработки с краткой расшифровкой. Терминологию я использовал русскую из делкамовских учебников, она может не совпадать с другими CAM программами, но я думаю тут уже интуиция и гугл спасут. Ну и как всегда, капелька личного опыта по обработке пластиков на хоббийных станках.
Читать дальше →
Total votes 63: ↑61 and ↓2 +59
Comments 52

Делаем из Vim-а конфетку

Reading time 17 min
Views 137K

Вы под давлением коллег или сокурсников из более успевающих групп решились на отчаянный шаг, способный разделить вашу жизнь на период "до" и "после" (прошли vimtutor), и теперь не знаете что делать с вашими новообретёнными способностями? А может вы всё ещё сидите в какой-нибудь IDE и в ус не дуете зачем вам "эти ваши программистские блокноты" и "какой-то там Vim"? Тогда присаживайтесь поудобнее и налейте себе лимонад, сейчас я вам всё по полочкам разложу.


Читать дальше →
Total votes 54: ↑50 and ↓4 +46
Comments 252

Почему вам стоит использовать язык Ада для программирования вашей системы

Reading time 6 min
Views 24K


Язык программирования Ада родился в середине 1970-х, когда министерство обороны США и министерство обороны Британии решили заменить сотни специализированных языков программирования для встроенных вычислительных систем, всё чаще использовавшихся в военных проектах. Язык Ада разрабатывали так, чтобы это был единственный язык, способный работать на всех этих встроенных системах, и при этом обеспечивавший надёжность и быстродействие уровнем не хуже специализированных.

После обновления от 1995 года язык приспособили для систем общего назначения, добавив объектно-ориентированное программирование, не теряя из вида ключевые ценности – надёжность, простоту поддержки и эффективность. Сегодня написанное на Ада ПО формирует основу не только военного оборудования, но и коммерческих проектов в сфере авионики и систем управления воздушным трафиком. Код на Ада управляет такими ракетами, как Ариан-4 и 5, многими спутниками, и бесчисленным количеством других систем, в которых небольшие сбои могут иметь серьёзные последствия.

Возможно, Ада подойдёт и для использования в вашем следующем встроенном проекте.
Читать дальше →
Total votes 48: ↑44 and ↓4 +40
Comments 22

Построение диаграмм и графов в Doxygen

Reading time 9 min
Views 59K


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

Она завершает цикл статей о системе документации Doxygen. На этот раз статья посвящена построению различных диаграмм и графов в Doxygen. В ней мы рассмотрим основные их виды, различные способы их настройки и оформления, а также приведём ряд примеров и советов по их использованию.
Читать дальше →
Total votes 23: ↑23 and ↓0 +23
Comments 2

Оформление документации в Doxygen

Reading time 5 min
Views 57K


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

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

В данной статье я отвечу на этот вопрос. Для этого мы рассмотрим общие принципы оформления документации Doxygen, познакомимся с ними, и посмотрим на примерах, чего можно добиться, основываясь на них.
Читать дальше →
Total votes 32: ↑30 and ↓2 +28
Comments 1

Документируем код эффективно при помощи Doxygen

Reading time 18 min
Views 342K


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

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

В этой статье мы сначала познакомимся с самой системой и её возможностями, затем разберёмся с её установкой и базовыми принципами работы, и, наконец, завершим знакомство рассмотрением различных примеров документации, примеров того, как следует документировать те или иные части кода. Словом, познакомимся со всем тем, что позволит вам освоиться и начать работать с этой замечательной системой.
Читать дальше →
Total votes 52: ↑52 and ↓0 +52
Comments 39

Генерация звука на микроконтроллерах AVR методом волновых таблиц с поддержкой полифонии

Reading time 12 min
Views 31K
Микроконтроллеры AVR довольно дешевы и широко распространены. Наверно, с них начинает почти любой embedded разработчик. А среди любителей правит балом Arduino, сердцем которого обычно является ATmega328p. Наверняка многие задумывались: как можно заставить их звучать?

Если посмотреть на существующие проекты, то они бывают нескольких типов:

  1. Генераторы квадратных импульсов. Генерация с помощью ШИМ или дергать пины в прерываниях. В любом случае, получается очень характерный пищащий звук.
  2. Использование внешнего оборудования типа MP3 декодера.
  3. Использование ШИМ для вывода 8 битного (иногда 16 битного) звука в формате PCM или ADPCM. Поскольку памяти в микроконтроллерах для этого явно не достаточно, то обычно используют SD карту.
  4. Использование ШИМ для генерации звука на основе волновых таблиц, подобных MIDI.

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



Заинтересовавшихся прошу под кат.
Читать дальше →
Total votes 60: ↑59 and ↓1 +58
Comments 71

Политкорректность проникает в Россию через книги про проектирование чипов на SystemVerilog для не-начинающих

Reading time 11 min
Views 19K
Наконец-то в России вышел учебник по SystemVerilog уровнем выше чем для начинающих. Учебник описывает технологии и приемы, которые спрашивают на интервью в NVidia, Intel, AMD, Apple и другие электронные компании: использование concurrent assertions и functional coverage, что сейчас требуют не только от инженеров по верификации, но и от дизайнеров микросхем; алгоритм работы симулятора с дельта-циклами; вменяемое объяснение static timing analysis; схемы коммуникации аппаратных блоков через аппаратные очереди; реализацию этих коммуникаций с помощью конечных автоматов с трактами данных и т.д.

В главе про последнее российского читателя может озадачить упоминание «политкорректной системы». Что бы это значило? Это вероятно намек на казус, который произошел в округе Лос-Анжелес в 2003 году. Чиновники Лос-Анджелеса попросили производителей, поставщиков и подрядчиков прекратить использование терминов «master/slave» («хозяин» и «раб») в отношении компьютерного оборудования, так как одному из работников округа эти термины напомнили про рабовладельческое прошлое.

Сейчас авторы технической литературы избегают терминов master/slave. В современной Америке работают и афро-американские инженеры (например София Мвокани из Камеруна — на фото слева), и использование старых терминов выглядит архаично, как выглядели бы например термины «пан/холоп» в украинской технической литературе вместо принятых «провідний/ведений» (рус. «ведущий/ведомый»).

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



Полное изображение эмблемы под кожанкой Татьяны Александровны — под катом, но в основном я буду рассказывать про дельта-циклы и конечные автоматы:
Читать дальше →
Total votes 43: ↑32 and ↓11 +21
Comments 47

Компактный контроллер для паяльника Ersa i-Tool. Часть 1

Reading time 5 min
Views 23K

Те, кому приходится паять время от времени, хорошо понимают, как влияет удобство и качество инструмента на результат работы. Лично мне нравится оборудование немецкой фирмы Kurtz Ersa, в частности паяльные станции, оснащенные паяльником i-Tool. Однако блок станции (например серии i-CON) представляет собой весьма громоздкое и тяжелое устройство, предназначенное для стационарного использования. А ведь иногда так хочется взять привычный инструмент с собой в отпуск на море в командировку или на выездную работу.


И тогда я озаботился вопросом создания более компактного варианта контроллера для паяльника от Ersa. Что из этого получилось, под катом. Первая (текущая) часть посвящена анализу оригинальной станции. Во второй (будущей) части будет рассмотрена разработка аппаратной части компактного контроллера, а также его программирование.

Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Comments 36

Реверсим паяльную станцию HI-END класса

Reading time 16 min
Views 66K


У нас было несколько фотографий основной печатной платы, видео из YouTube с осциллограммами напряжений на стоках мосфетов, комментарий на форуме с перечислением ёмкостей резонансных конденсаторов, а также несколько видеозаписей распаковок со съёмками процесса разогрева жала. Особое беспокойство вызывало видео с измерением пиковой потребляемой мощности при разогреве. Нет ничего более грустного, чем сгоревший свежекупленный на амазоне картридж стоимостью четыре тысячи рублей. Но… давайте начнём всё с начала.
Читать дальше →
Total votes 116: ↑115 and ↓1 +114
Comments 89

Сделаем код чище: Что можно исправить в ядре Linux

Reading time 5 min
Views 37K
Наверняка многие хотели бы попробовать что-то изменить в ядре Linux к лучшему, но не знают с чего начать. Я хочу описать несколько проблем, исправить которые под силу каждому, и на примере показать путь от нахождения проблемы до опубликования её исправления в списке рассылки. По ходу повествования читатель познакомится с некоторыми вспомогательными утилитами.
Читать дальше →
Total votes 87: ↑86 and ↓1 +85
Comments 29

Разработка многозадачной микроядерной ОС — Планировщик

Reading time 6 min
Views 16K
После того, как вы прочитали базовые шаги по написанию Hello World ядра из цикла имеющихся на Хабре статей, самое время приступить к серьезной разработке самых базовых инструментов: аллокатора кучи и планировщика.

Важно:
1. Эта серия уроков для новичков. Цель — сформировать целостную картину мира. Очень долго у меня в голове была теория Таненбаума и я не мог ее связать с практикой. Тем у кого то же самое — посвящаю эту статью.
2. Код самый простой и тупой, но максимально понятный. Моя цель дать вам понимание чтобы вы смогли написать свое ядро, гораздо более крутое чем это.
3. Репо опубликую как только посчитаю его готовым для широкого круга. Я пишу небольшую часть, отлаживаю, и снимаю видеоурок. У меня нет готового продукта.

Честно говоря я долго думал стоит ли начинать писать статьи и делать видеоуроки на столь изьезженную тему. Но страсть к системному программированию и отсутствие структурированной информации на русском языке все же подтолкнули меня на этот эксперимент. Посему, если труд мой окажется востребованным, статьи планирую выпускать не реже чем раз в месяц и не чаще чем раз в неделю.
Total votes 51: ↑48 and ↓3 +45
Comments 40

Что не так с методом Бейтса

Reading time 15 min
Views 62K
Упражнения по методу Бейтса – хорошо известная методика улучшения зрения, альтернативная постоянному ношению очков. Некоторое время назад у меня был положительный опыт применения этой методики; и тем сильнее было удивление от того, что в википедии эта методика считается ненаучной, а упоминание позитивного опыта её применения в обсуждении одной из статей вызвало резкое отторжение и неприятие.

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

Читать дальше →
Total votes 39: ↑19 and ↓20 -1
Comments 77

«САПР для всех, даром, и пусть никто не уйдет…» или первые шаги в программировании FreeCAD на Python

Reading time 8 min
Views 28K
Возможно, вам уже ранее попадались мои заметки по первым шагам в программировании САПР на примере NanoCAD.

Надо отметить, что для человека не умеющего программировать и знающего САПР на уровне «электронного кульмана» это было удивительное приключение. Однако, NanoCAD это все же в первую очередь коммерческий продукт. Его бесплатная версия не обновлялась, уже около шести лет и порядком устарела в плане возможностей для разработки.

А ведь так хотелось, чтобы как в одной замечательной повести: «Счастье для всех, даром, и пусть никто не уйдёт обиженный!» . Поэтому было принято решение, внять совету боевого товарища DrZugrik и установить себе FreeCAD.

Итак, по горячим следам пишу для вас материал, всего за один день я узнал, как подружить эту САПР с Anaconda, написал на Python простенький скрипт, который рисует квадратик с текстом и протестировал его на работоспособность в Windows и Linux. О чем я собственно готов вам по шагам рассказать и показать, чтобы вы тоже могли это сделать.

Хотите поближе познакомиться с очаровательной парочкой Python и FreeCAD? Тогда милости прошу под кат.


Читать дальше →
Total votes 24: ↑23 and ↓1 +22
Comments 9

Information

Rating
Does not participate
Registered
Activity