Архив за 06 апреля 2013

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

Последние четыре месяца посвящаю свободное от работы время написанию игрушечной ОС для x86_64. Исходный код лежит здесь.

Общая задумка (пока весьма далёкая от реализации) следующая: единое 64-битное адресное пространство с вечно живущими нитями (как у Phantom OS); виртуальная машина, обеспечивающая безопасность исполнения кода. На данный момент реализованы:

1. загрузка ядра при помощи multiboot-загрузчика (GRUB);
2. текстовый VGA-режим (16-цветов, kprintf);
3. простой интерфейс настройки отображения страниц;
4. возможность обработки прерываний на C;
5. идентификация топологии процессоров (сокеты, ядра, потоки) и их запуск;
6. работающий прототип SMP-планировщика с поддержкой приоритетов;

Пропустим описание multiboot-загрузки и работы с VGA-режимом (об этом не писал, разве что, ленивый). Про отображение страниц тоже не хочу писать, боюсь это будет скучно (может, в другой раз). Давайте лучше поговорим об обработке прерываний.
Читать полностью »

Скриншот расширения Link Properties Plus
Вашему вниманию представляется небольшая история появления расширения Link Properties Plus и описание того, как работает его основная часть.
Расширение позволяет узнать размер, дату последнего изменения и некоторые другие свойства файла по ссылке (в том числе прямую ссылку после всех перенаправлений) без скачивания всего файла целиком. Если, конечно, все это сообщает сервер.
Читать полностью »

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

  1. Активируется при загрузке страницы.
  2. Проверяет наличие записи окончания отсчета в Cookie браузера посетителя.
  3. Если запись есть — то считывает её. Если записи нету — то берёт время указанное в настройках скрипта, и делает запись в Cookie браузера посетителя.
  4. Производятся преобразования времени в формат для более гибкой настройки оформления счетчика.
  5. Выводится счетчик либо надпись о завершении отсчета (если время закончилось) в место вызова скрипта.

Читать полностью »

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

Как я получил универсальную электронную карту после 3 х месяцев ожидания

Этот короткий пост является продолжением предыдущего, более объёмного поста об универсальной электронной карте (УЭК).

Краткая предыстория

Оформил заявку на УЭК 9-го января 2013 года, 12-го февраля позвонили, сказали что нужно ждать ещё месяц. После месяца ожидания приехал в банк и там сказали, что ещё надо ждать. В итоге 4-го апреля мне позвонили и сказали, что можно забирать УЭК. 5-го апреля я получил УЭК.

Как выглядит реальная УЭК, какой функционал и какие проблемы

Уверен, что стоит начать с хорошего, но хорошего, если честно очень мало, поэтому опишу всё как было...Читать полностью »

Каждый программист трепетно относится к своему программному окружению. Очень важно добиться максимального комфорта в работе. В качестве своей операционной системы я использую Linux. Как минимум это полезно для меня на профессиональной почве. Изначально я выбирал Linux по этой причине — чем больше предпосылок будет для самосовершенствования, тем меньше останется моей лени. Linux помогает мне не забывать, что не все программы могут быть оконными. Рабочие и тестовые серверы, с которыми мне приходится работать, управляются из консоли. Доступ к удаленным серверам осуществляется по SSH. Без знания консоли трудно поднять, обновить или внести правки на сервере, потому я стараюсь осваивать эту оболочку по мере сил. Терминал постоянно радует меня своими возможностями, открывая то одну, то другую полезную программу или утилиту. Недавно я открыл для себя программу, позволяющую использовать IM в консоли.
Читать полностью »

Каждый программист трепетно относится к своему программному окружению. Очень важно добиться максимального комфорта в работе. В качестве своей операционной системы я использую Linux. Как минимум это полезно для меня на профессиональной почве. Изначально я выбирал Linux по этой причине — чем больше предпосылок будет для самосовершенствования, тем меньше останется моей лени. Linux помогает мне не забывать, что не все программы могут быть оконными. Рабочие и тестовые серверы, с которыми мне приходится работать, управляются из консоли. Доступ к удаленным серверам осуществляется по SSH. Без знания консоли трудно поднять, обновить или внести правки на сервере, потому я стараюсь осваивать эту оболочку по мере сил. Терминал постоянно радует меня своими возможностями, открывая то одну, то другую полезную программу или утилиту. Недавно я открыл для себя программу, позволяющую использовать IM в консоли.
Читать полностью »

Французская разведка заставила сисопа Википедии удалить статью
Штаб-квартира Центрального управления внутренней разведки Франции

Wikimedia France опубликовала заявление с решительным осуждением давления, которое оказывают сотрудники Центрального управления внутренней разведки (DCRI) на добровольца-сисопа Википедии.
Читать полностью »

Новый тип 3D принтеров в перспективе позволит печатать биологические ткани
Согласно исследованию, опубликованному в Science, группа ученых из Оксфордского университета создала 3D-принтер, позволяющий создавать необходимую структуру из капель жидкости, помещаемых в масло. Благодаря липидному слою, капли не смешиваются между собой, а сохраняют свою форму.
Исследователям удалось создать целую «сеть» из 35000 капель, которая, как заявляется, по своей эластичности сходна с мозговой или жировой тканью и может сохранять своё состояние вплоть до нескольких недель.
Читать полностью »

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

Blind Deconvolution — автоматическое восстановление смазанных изображений
В последние несколько лет интенсивно развивается новое направлении в теории восстановления изображений — слепая обратная свертка (Blind Deconvolution). Появилось достаточно много работ по этой теме, и начинается активное коммерческое использование результатов.
Многие из вас помнят конференцию Adobe MAX 2011, на которой они как раз показали работу одного из алгоритмов Blind Deconvolution: Исправление смазанных фотографий в новой версии Photoshop
В этой статье я хочу подробнее рассказать — как же работает эта удивительная технология, а также показать практическую реализацию SmartDeblur, который теперь тоже имеет в своем распоряжении этот алгоритм.
Внимание, под катом много картинок!
Читать полностью »