Search
Write a publication
Pull to refresh
-2
0
Вадим @Disasm

Пользователь

Send message

Игра Жизнь и преобразование Фурье

Reading time5 min
Views63K
Многие слышали о великом и ужасном быстром преобразовании Фурье (БПФ / FFT — fast fourier transform) — но как его можно применять для решения практических задач за исключением JPEG/MPEG сжатия и разложения звука по частотам (эквалайзеры и проч.) — зачастую остается неясным вопросом.

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

Логическая организация кэш-памяти процессора

Reading time3 min
Views44K
На днях решил систематизировать знания, касающиеся принципов отображения оперативной памяти на кэш память процессора. В результате чего и родилась данная статья.

Кэш память процессора используется для уменьшения времени простоя процессора при обращении к RAM.

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

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



Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.
Читать дальше →

Работа с «плохими» файлами в командной строке в Linux

Reading time4 min
Views79K
При работе в командной строке администраторы часто сталкиваются с необходимостью что-то сделать с определенным файлом: удалить, переместить, скопировать. При выполнении подобных задач зачастую приходится обращаться к файлам по имени, что может быть затруднительно, поскольку в именах файлов могут встречаться самые разные символы. Даже те, которых нет на клавиатуре. В этом плане работу может облегчить файловый менеджер, в котором файл можно просто выделить и совершить с ним нужное действие. Но для тех, кто привык работать исключительно в командной строке, предлагаются следующие способы.

В качестве shell-оболочки рассмотрим bash, как самую используемую. А в качестве операции над файлами рассмотрим удаление, как самую деструктивную.
Читать дальше →

КТ315 — рабочая лошадка отечественной электроники

Reading time3 min
Views140K
Хоть я и опоздал на день Радио — но о КТ315 я все-же напишу. Этот транзистор видели и паяли многие, но сегодня мы увидим, чем отличаются КТ315 выпущенные в разные годы, какова его конструкция, и сравним его конструкцию с современными зарубежными аналогами.

О производстве


КТ315 — первый транзистор, произведенный по последнему писку моды конца 60-х годов — это планарно-эпитаксиальной транзистор, т.е. коллектор, эмиттер и база изготовляются последовательно на одной пластине кремния: берется пластина кремния, легированная в тип n (это будет коллектор), затем выполняется легирование на некоторую глубину в тип p (это будет база), и затем — сверху еще раз легирование на меньшую глубину в тип n (это будет эмиттер). Далее пластину нужно разрезать на кусочки, и упаковать в пластиковый корпус.
Читать дальше →

Обзор RSS-ридеров — self-hosted альтернативы Google Reader

Reading time6 min
Views128K
По мотивам недавней записи решил опробовать ряд продуктов, которые, во-первых, открытые, а во-вторых, устанавливаются на собственный сервер. В обзор вошли:
  1. rssLounge
  2. Selfoss
  3. Feed on feeds
  4. Managing news
  5. Lilina
  6. Tiny Tiny RSS
  7. ZebraFeeds
  8. Rnews
  9. NewsBlur

Все ридеры требуют PHP (кроме последнего — NewsBlur работает на питоне).
Читать дальше →

Почему Erlang?

Reading time6 min
Views20K
Оригинал статьи: smyck.net/2012/04/22/why-erlang

Шансы, что вы читаете эту статью на устройстве с многоядерным процесcором, растут каждый день, вот почему все постоянно говорят про параллелизм (concurrency). Параллелизм для наших web приложений и API бэкендов, это когда вывод htop выглядит примерно как на картинке:

Concurrente htop

Я недавно был на великолепной Ruby конференции и три или четыре доклада были про параллелизм. Сообщество Ruby достаточно открыто и обсуждалось достаточно много возможностей: использовать потоки, использовать различные среды выполнения Ruby, чтобы обойти GIL, использовать больше процессоров, использовать модель акторов через библиотеки как Celluloid или даже использовать Akka через JRuby.

В то время как модель акторов, кажется, хорошо подходит для создания сетевых параллельных приложений, которые часто страдает от проблем, если среда выполнения, на которой реализовано приложение не имеет нативной поддержки. Существуют реализации для Ruby, Python и Java, но все они должны подстраиваться, чтобы достичь нормальной работы и не обязательно результат даёт наилучшую производительность. Это одна из многих причин, почему Erlang был бы намного лучшим выбором, но сначала, давайте немного уделим время модели акторов, чтобы понять, почему это так хорошо работает.

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

Устранение утечек памяти в приложении на Питоне

Reading time7 min
Views37K
imageНедавно мне довелось разобраться и устранить несколько утечек памяти в популярном фреймворке Торнадо. Не беда, если вы никогда его не использовали, потому что описанное будет мало связано с ним. Рассказать я хочу о методах, которые я использовал для поиска и устранения утечек.

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

Это схема отлично работает до тех пор, пока не появляются объекты, ссылающиеся друг на друга. Самый простой пример — узлы какого-то дерева, хранящие ссылки на свои дочерние и родительский узлы. Узлы продолжат ссылаться друг на друга, даже когда не останется других внешних ссылок ни на один из них. Самое неприятное, что такие узлы могут ссылаться на какие-то другие данные и не давать их освободить. Чтобы устранить такие циклические ссылки, в Питоне существует второй механизм освобождения памяти — сборщик мусора. Он запускается время от времени, ставя выполнение остального кода на паузу, и анализирует все неосвобожденные объекты.

Формально, циклические ссылки нельзя назвать утечками: сборка мусора рано или поздно уничтожит такие объекты. Беда только в том, что Питон не может сам определить, когда еще рано, а когда уже поздно. В моем случае система просто прибивала процесс с Питоном, если сборка мусора не начиналась вовремя.
Читать дальше →

1986ВЕ91Т: Что же внутри российского Арма?

Reading time3 min
Views77K
После предыдущих статей с внутренностями микросхем (1, 2) многие писали, что фотографии — это конечно интересно, но хотелось бы знать что есть что.

Сегодня возможность удовлетворить этот закономерный интерес наконец появилась. Ковырять будем 1986ВЕ91Т — это микроконтроллер Миландра, основанный на ядре ARM Cortex-M3 (официально лицензированного). Внутри — 128 КиБ флеш-памяти, 32 КиБ статической памяти, аппаратный USB и 80Мгц ядро, изготовлено по технологии 180нм.
Читать дальше →

От программирования к железу или «Почему оно не работает?».Ликбез

Reading time9 min
Views147K
image
Привет Хабр. В последнее время среди программистов все больше стала набирать популярность цифровая электроника, появляются все новые платформы, позволяющие без каких либо особых знаний в электронике собирать различные устройства. Сам я начинал заниматься аналоговой электроникой, позже — цифровой и программированием. Многие же — наоборот — сначала программированием, а потом пытаются заниматься железом, при этом знания по части электроники практически нулевые и люди не знают/не понимают элементарных для олдфажного электронщика вещей. В данной статье я постараюсь затронуть наиболее важные на мой взгляд моменты, как по части проектирования схем, так и по части разводки плат. Надеюсь мои советы помогут миновать некоторые грабли
Читать дальше →

Математическая модель двигателя Lego NXT

Reading time4 min
Views26K
Добрый день, уважаемые коллеги. В этой статье я хочу поделиться с Вами своими методическими наработками, которые использую в курсе «Теория автоматического управления» на кафедре СУиИ НИУ ИТМО.
Основной задачей, которую я перед собой ставил, было объединение теоретических знаний для решения практической задачи. Такой задачей стало управление приводами Lego робота. Лишний повод поиграть в игрушки, да и студентам проще воспринимать суровый матан… Вот пример описания этого набора: habrahabr.ru/post/166449.
Читать дальше

s3ql — файловая система на базе облачного хранилища

Reading time4 min
Views18K
image

Описание


При помощи S3QL вы можете создать файловую систему на базе облачного хранилища Selectel Storage, которую можно смонтировать в любой современной версии OS Linux, FreeBSD или Mac OS X.
Читать дальше →

Установка usbip на ubuntu 12.04 server

Reading time3 min
Views14K
Здравствуйте, сегодня я хочу рассказать вам как поставить usbip на сервер с установленной ubuntu 12.04 server.
USBIP(USB over IP) служит для проброса usb устройства по сети, будь то windows или linux клиент. Серверная часть увы только под linux.
Данное решение самый лучший, бесплатный и по моему единственный продукт позволяющий пробрасывать практически любые usb устройства.
Читать дальше →

Обзор IPSEC демона StrongSwan

Reading time5 min
Views84K

Введение


На хабре много статей про настройку IPSEC на разных девайсах, но относительно мало про Linux, а StrongSwan представлен поверхностно всего одной статьей.
В своем обзоре я затрону следующие вопросы:
  • Обзор демона StrongSwan;
  • Настройка Remote Access VPN на сертификатах.

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

Декомпиляция Java приложений

Reading time3 min
Views205K
Декомпиляция — процесс воссоздания исходного кода декомпилятором
Недавно я задался вопросом: Какой декомпилятор лучше?
Начал мучить Google, экспериментировать. В итоге нашел отличное решение. Как декомпильнуть любую программу и получить рабочие «исходники»? Об этом в сабже.
Читать дальше →

Скрытное подсоединие к оптоволокну: методы и предосторожности

Reading time13 min
Views115K
Статьи по прослушиванию оптоволокна достаточно редки в силу определенной специфики такого рода коммуникаций. По мере удешевления оборудования и стоимости организации каналов связи на основе оптоволокна, они давно применяются в коммерческой практике. Специалистам ИТ, отвечающим за вопросы безопасности коммуникаций, стоит знать об основных источниках угроз и методах противодействия. Данная статья представляет собой перевод научной работы, опубликованной в материалах конференции HONET (High Capacity Optical Networks and Enabling Technologies ) в 2012 году. В сети удалось найти полнотекстовый авторский препринт, датированный осенью 2011 года, который, хотя и содержит некоторые ошибки (авторы не являются оригинальными носителями английского языка), тем не менее достаточно хорошо описывает существующие проблемы.

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

Подводная лодка USS Jimmy Carter, её специальные задачи и подводные оптические кабели

Reading time9 min
Views42K
У нас есть такие приборы,
но мы вам про них не расскажем...


Данная статья возникла при сборе дополнительной информации для поста Скрытное подсоединие к оптоволокну: методы и предосторожности . Масштабность и техническая сложность мероприятий, описываемых в данной статье, заслуживает внимания широкой публики. Перевод, на самом деле, собран из нескольких источников. Более новых статей нет, но судя по тому, что лодки ходят, а АНБ отстраивает новые датацентры, всё идёт по плану.

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

Как запустить программу без операционной системы: часть 3: Графика

Reading time17 min
Views58K


В этой части попробуем сделать “невозможное”: научимся использовать графический дисплей без операционной системы. На самом деле это задача не из легких, особенно в случае работы в 32-х битном защищенном режиме, и особенно если хочется использовать приличное разрешение экрана а не 320x200x8. Но все по порядку: раз хотим графику – значит нужно работать с видеокартой.

Современные графические карты – это практически полноценные компьютеры по мощности не уступающие основному: тут и декодирование MPEG2 в качестве 1080p, поддержка 3D графики и шейдеров, технологии вроде CUDA, и многое другое. Это все выглядит весьма сложно. С другой стороны видеокарты – это всего лишь очередной PCI девайс, такой же, как и остальные. Это устройство мы даже “нашли” в предыдущей статье с номером класса устройства 0x03 (class_name=graphics adapter). Как и с любым, устройством с видеокартой можно работать при помощи портов ввода-вывода или MMIO областей памяти, а сама видеокарта может использовать DMA и прерывания для взаимодействия с основным процессором. Если посмотреть на диапазон портов ввода-вывода, доступных у видео карт, то мы увидим, что всего ей выделяется менее 50-ти байт – не так уж и много с учетом огромной функциональности, которой обладают современные видеокарты.
Читать дальше →

Victor, Charlie, Victor, Charlie, приём

Reading time5 min
Views24K
Каждый, кто хоть раз устанавливая дату и время на компьютере, видел аббревиатуру UTC, но не все знают откуда на самом деле берётся это время и почему оно так важно.

Идём в ногу со временем

Как мы делали Яндекс.Диск: серверная сторона, WebDAV и Erlang

Reading time5 min
Views51K
На прошлой неделе Яндекс.Диску исполнился год, и за этот год сервисом успели воспользоваться уже больше 8 000 000 пользователей.

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

Диск спасает файлы — не Шойгу

Для правильной синхронизации нужно не только уметь заливать файлы, но и реанимировать заливку в случае прерванного соединения, а также научить клиент учитывать изменения в файлах.
Читать дальше →

Нативное решение проблемы с дисками WD в Linux

Reading time1 min
Views46K
Владельцы дисков WD серии Green сталкиваются с слишком частой парковкой головок. В этой статье было описано как решить проблему с помощью DOS-утилиты wdidle3 от поддержки WD. Со времен этой статьи прошло много времени, но проблема осталась. Да и сам метод решения с помощью DOS-утилиты не является гуманным.
В процессе решения этой проблемы наткнулся на программу idle3-tools, с помощью которой можно указать время парковки головок из Linux.
Читать дальше →

Information

Rating
Does not participate
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity