• DMA для новичков или то, что вам нужно знать

      Всем привет, сегодня мы с вами поговорим о DMA: именно о той технологии, которая помогает вашему компьютеру воспроизводить для вас музыку, выводить изображение на экран, записывать информацию на жесткий диск, и при этом оказывать на центральный процессор просто мизерную нагрузку.
      Если вам интересно, добро пожаловать под кат...
    • Продвинутая настройка VIM

      • Tutorial
      Одно из правил эффективного использования редактора гласит следующее — определите, на что у Вас тратится больше всего времени при наборе текста, и улучшите это.
      Как показывает практика, часто пользователи этого редактора ограничиваются установкой опций, коих конечно не мало. Затем ставят какой-нибудь плагин-мега-пак по советам знатоков, и вроде бы все устраивает, кроме… первого, второго, третьего…
      Но ведь если пойти дальше, можно обнаружить бесконечный потенциал для увеличения производительности в использовании своего редактора.



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

      Читать дальше →
    • Подтвержденные сертификаты от Coursera

        Новые площадки для массового онлайн образования (MOOC) наделали немало шума в прошлом году, дав бесплатный доступ всем желающим к курсам, предоставленным топовыми вузами (преимущественно, американскими). Некоторые уже начали поговаривать о скорой потери значимости традиционными вузами и вытеснении их такими площадками. Конечно, немало вопросов вызывает ценность выдаваемых сертификатов в глазах потенциальных работодателей. Похоже, что одна из топовых MOOC-площадок, Coursera, делает шаги к созданию этой ценности.
        Читать дальше →
      • 27+ ресурсов для онлайн-обучения


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

          Статья содержит перечень ресурсов для онлайн-обучения, представляющих интерес преимущественно для программистов.

          Читать дальше →
        • ASN.1 простыми словами (часть 3, заключительная)

            Продолжаю публикацию своей статьи "ASN.1 простыми словами". Предыдущие части статьи, размещённые на Хабре, можно найти здесь: ASN.1 простыми словами (кодирование типа REAL) и ASN.1 простыми словами (часть 2).
            Читать дальше →
            • +9
            • 16,1k
            • 4
          • ASN.1 простыми словами (кодирование типа REAL)

            Введение для Хабра


            Приведённый ниже текст является на самом деле первыми двумя главами моей статьи "ASN.1 простыми словами". Так как сама статья достаточно большая по меркам Хабра я решил сначала проверить являются ли знания по кодированию простых типов востребованными на этом ресурсе. В случае положительной реакции аудитории я продолжу публикацию всех остальных глав.


            Читать дальше →
          • Настройка оборудования на раннем этапе загрузки средствами ACPI (на примере FreeBSD)

              Несколько лет назад, когда CardBus и FireWire (IEEE 1394) еще были относительно «в ходу», многие производители ноутбуков в своей продукции использовали контроллеры семейства PCIXX21 и PCIXX11 фирмы Texas Instruments: один небольшой чип обеспечивал поддержку не только упомянутых интерфейсов, но и многих популярных стандартов сменных карт памяти.

              Такой чип (а именно, PCI7411) стоит и в моей NEC Versa S950. Этот малоизвестный ноутбук я в свое время предпочел даже ThinkPad-серии практически исключительно из-за более лучшей поддержки FreeBSD (оборудования в целом и спящего режима в частности) — специально тестировал в новосибирском Техносити перед покупкой. Долгое время я не пользовался встроенным кард-ридером, по привычке обходясь USB'шными «свистками». Но недавно я обнаружил, что FreeBSD до сих пор его не поддерживает. И если лет пять-шесть назад это можно было объяснить отсутствием нормального драйвера для этих контроллеров (нужно было что-то скачивать и собирать самому), то теперь я точно знал, что они «из коробки» поддерживаются во FreeBSD драйвером sdhci(4), о чем прямо сказано на странице руководства (и позже подтвердилось чтением исходников).

              Я начал неспешно гуглить на эту тему, и картина стала вырисовываться невеселая. Оказалось, что таких «счастливчиков», как я, немало. Многие постили в рассылки и форумы «портянки» dmesg и pciconf -lv, заводили баги в трекерах (например, OpenBSD PR i386/5843), но решения никто не предлагал. Более того, фактически поставив точку в вопросе, Александр Мотин, автор драйвера sdhci(4), в 2010 г. написал на форуме, что-де TI документацию на чип не дают, а значит, если производитель сконфигурировал чип неверно, а его настройка через BIOS не предусмотрена, сделать что-либо затруднительно. В свою очередь, Theo de Raadt закрыл i386/5843 со словами: «We do what we can. This vendor, amongst other, have their sdhc controllers locked out and hidden behind little undocumented bits. We've strugged before to find this information, and failed. If you can find this information on some other operating system, or in some vendor documentation, we would be thrilled.»
              Читать дальше →
            • Топ-5 самых впечатляющих книг, которые должен прочесть каждый разработчик ПО

                Не так давно промелькнула ссылка на достаточно свежее (осень 2011) англоязычное голосование со скромным названием "самая впечатляющая книга, которую должен прочесть каждый разработчик программного обеспечения" и описанием:

                Если бы вы могли вернуться в прошлое, к самому началу своей карьеры разработчика и сказать самому себе: «прочитай именно эту книгу», в самой начале своей карьеры разработчика, какую бы книгу вы рекомендовали?

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

                Однако в данном небольшом посте я возьму на себя смелость перечислить ТОП-5 тех самых книг, победивших в голосовании, переведенных на русский язык. И дать небольшие комментарии, ведь книги действительно этого достойны. Да, лично я бы поменял некоторые места, однако положимся на «мнение зала» ресурса Stack Overflow.
                Читать дальше →
              • Что такое искусственные нейронные сети?

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

                  Читать дальше →
                • Цветовые схемы в Vim

                  Про vim написано столько, что трудно себе представить, что какие-то темы остались неосвещёнными.Ан нет… Есть кое-что о чём написано совсем немного.Восполняем пробел. Я надеюсь что эта заметка понравится вимоводам и вимоманам.
                  Читать дальше →
                • Введение в Tkinter

                  image

                  Всем доброго времени суток!

                  Tkinter – это кроссплатформенная библиотека для разработки графического интерфейса на языке Python (начиная с Python 3.0 переименована в tkinter). Tkinter расшифровывается как Tk interface, и является интерфейсом к Tcl/Tk.
                  Tkinter входит в стандартный дистрибутив Python.
                  Читать дальше →
                • Как загружается FREEBSD

                  Для начала, опишем пациента. Я разбирал FREEBSD 8.0 Stable, а именно самый минимальный образ для загрузки с CD-ROM (44 мб). Я выбрал именно его, так как он самый маленький и удобный (для разбирательств).
                  Итак, начало для загрузки стандартное — по адресу 0000:7C00 грузится загрузочный сектор (только не забываем что у CD-ROM сектора по 2 Кб), и запускается на выполнение. Как оказалось, у данного CD-ROM, этот сектор является одновременно файлом /boot/cdboot, размером 1201 байт. Состоит этот файл из двух частей — основной и небольшой заглушки, которая понадобится позже. То есть карта памяти у нас такая:

                  image

                  Читать дальше →
                • 64-битная ОС на ассемблере



                    Разработчики из канадской компании Return Infinity специализируются на низкоуровневом программировании и экспериментальных разработках. На днях они выкатили новую версию BareMetal, 64-битной операционной системы, написанной полностью на ассемблере. Цель этого проекта — избавиться от неэффективного машинного кода, который генерируют компиляторы высокоуровневых языков вроде C/C++ и Java. Если изначально писать на ассемблере, то код получается более производительным и компактным. Вся ОС занимает 16384 байт, а программка “Hello World!” компилируется в файл 31 байт.
                    Читать дальше →
                  • Пишем собственный linux демон с возможностью автовосстановления работы

                    Уважаемые хабрапользователи, хотелось бы поделиться с вами опытом написания серверных демонов. В Рунете очень много статей по этому поводу, но большинство из них не даёт ответы на такие важные вопросы как:
                    • Как добавить демона в автозагрузку?
                    • Что делать, если в процессе работы произошла ошибка и демон рухнул?
                    • Каким образом обновить конфигурацию демона без прерывания его работы?

                    В рамках данной части рассмотрим следующие моменты:
                    • Принцип работы демона.
                    • Основы разработки мониторинга состояния демона.
                    • Обработка ошибок при работе, с подробным отчетом в лог.
                    • Некоторые вопросы связанные с ресурсами системы.

                    Для наглядности будет показан исходный код следующих частей:
                    • Шаблон основной программы.
                    • Шаблон функции мониторинга работы демона.
                    • Шаблон функции обработки ошибок.
                    • Ряд вспомогательных функций.

                    Читать дальше →
                  • Несколько подробностей о функции main

                    Однажды заинтересовался, содержимым стека функции main процесса в linux. Провел некоторые изыскания и теперь представляю вам результат.

                    Варианты описания функции main:
                    1. int main()
                    2. int main(int argc, char **argv)
                    3. int main(int argc, char **argv, char **env)
                    4. int main(int argc, char **argv, char **env, ElfW(auxv_t) auxv[])
                    5. int main(int argc, char **argv, char **env, char **apple)

                    argc — число параметров
                    argv — нуль-терминальный массив указателей на строки параметров командной строки
                    env — нуль-терминальный массив указателей на строки переменных окружения. Каждая строка в формате ИМЯ=ЗНАЧЕНИЕ
                    auxv — массив вспомогательных значение (доступно только для PowerPC [1])
                    apple — путь к исполняемому файлу (в MacOS и Darwin [2])
                    Вспомогательный вектор — массив с различной дополнительной информацией, такой как эффективный идентификатор пользователя, признак setuid бита, размер страницы памяти и т.п.

                    Далее о том как получить массив вспомогательных значений для i386 и x86_64, а также об остальном содержимом «сегмента» стека.
                    Читать дальше →
                    • +77
                    • 11,4k
                    • 8
                  • Бесплатные книги

                      Несколько книг по разным темам, которые находятся в открытом доступе.

                      Основы программирования
                      Читать дальше →
                      • +235
                      • 53,6k
                      • 32
                    • Операционная система реального времени QNX: Знакомство

                        Так сложилось, что моя деятельность связана с операционной системой реального времени (ОСРВ) QNX. Уже несколько лет занимаюсь разработкой как под эту ОС, так и некоторых частей самой системы. Обратил внимание на то, что поиск на хабре выводит немного результатов по запросу QNX, однако, мне кажется, что эта ОСРВ может быть интересна не только специалистам по встраиваемым и высоконадёжным системам, но и более широкой публике. Не секрет, что планшетный компьютер BlackBerry PlayBook производства компании RIM основан на QNX и имеет популярность и у нас.

                        Немного о QNX


                        ОСРВ QNX это не клон или дистрибутив Linux или ответвление какой-то другой UNIX-подобной системы. QNX самостоятельная UNIX-подобная операционная система реального времени, основанная на микроядре и передаче сообщений. Современные версии QNX имеют поддержку стандартов POSIX (и сертифицированны по ним). Первая версия QNX вышла в далёком 1981 году. С тех пор утекло достаточно много времени и поколения QNX сменяли друг друга: QNX2, QNX4 и, наконец, QNX 6 (или QNX Neutrino). Старичок QNX2 и сейчас ещё используется, хотя его расцвет пришёлся на 80-е годы прошлого столетия. Надёжная и более современная ОСРВ QNX4 могла конкурировать на десктопе с Windows в середине 90-х
                        Да, я хочу узнать больше о QNX.
                      • QNX система работала 15 лет без остановки пока…

                        • Перевод
                        Позвольте рассказать вам историю о компьютере с QNX, который работал 24 часа в день, 7 дней в неделю, 15 лет. Компьютер работал вполне хорошо пока… Ну да, я вернусь к этой части через минуту.

                        История началась в середине 90-х, когда компания по производству бумаги установила компьютер для контроля давления, температуры и различных других параметров с частотой 5000 раз в секунду. Несколько лет спустя, компания установила второй компьютер с QNX и настроила его как оперативный резерв первого. Таким образом, если бы первый компьютер когда-нибудь вышел из строя, то второй мог бы незамедлительно придти ему на смену.
                        Читать дальше →
                      • ОСРВ QNX: Немного о микроядре, потоках и процессах

                          Поскольку мой первый небольшой обзор операционной системы реального времени QNX показал, что среди жителей Хабра есть к ней интерес, то я решил продолжить цикл заметок. Мне кажется, что стоит немного рассказать о системной архитектуре QNX6. Думаю, что нелишне дать определение тому, что такое микроядро, и какие задачи оно решает. По ходу повествования будут также развенчаны два мифа, связанные с QNX. Но сначала…

                          Немного о POSIX


                          С выпуском каждой новой версии QNX (а надо отметить, что первая версия ОСРВ QNX появилась теперь уже в далёком 1981 году), разработчики использовали накопленный ранее опыт и делали систему лучше, в том числе и удобнее для разработчиков. Именно поэтому QNX Neutrino поддерживает стандарты POSIX 1003.1, например, управление потоками (threads), расширения реального времени (Realtime Extensions), дополнительные расширения реального времени (Additional Realtime Extensions) и профили прикладных окружений (Application Environment Profiles, AEP).

                          Зачем я об этом говорю?
                          Не знаю, но я действительно хочу узнать зачем.