• Подборка интересных фактов о великих айтишниках

      Джордж Буль


      Джордж Буль (1815 — 1864) — английский профессор математики, чьи работы способствовали созданию современной символической логики. Его алгебра логики, называемая булевой алгеброй или булевой логикой (алгебраическая структура, дополненная дистрибутивная решётка и часть математики, которая изучает подобные структуры) — основополагающая для проектирования современных цифровых схем. Работы Буля воплотились в приложениях, которые он никогда бы и представить себе не смог.
      Читать дальше →
    • Диагностика неисправностей блока питания с помощью мультиметра

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

      Дисклеймер номер раз: Данная статья относится только к обычным блокам питания стандарта ATX, она не относится к проприетарным стандартам блоков (например как у старыx рабочиx станциях DELL или SUN), использующим другую распиновку ATX-коннектора. Внимательно сверьтесь со схемой и убедитесь в том, что ваш блок питания является стандартным прежде чем проводить диагностику, во избежании причинения вреда вашему компьютеру.

      Дисклеймер номер два: Вы должны понимать что вы делаете и соблюдать технику безопасности, в том числе электростатической (в т.ч. работать в антистатическом браслете). Автор не несет ответственности за порчу оборудования или вред здоровью вследствие несоблюдения или незнания техники безопасности и принципов работы устройства.


      Перейдем к теории:

      Стандарт ATX имеет 2 версии — 1.X и 2.X, имеющие 20 и 24-пиновые коннекторы соответственною, вторая версия имеет 24-x 4 дополнительных пина, удлиняя тем самым стандартный коннектор на 2 секции таким образом:
      image

      Прежде чем мы начнем, расскажу про “правила большого пальца” по отношению к неисправностям:
      1) Проблемную материнскую плату легче заменить чем починить, это крайне сложная и многослойная схема, в которой разве что можно заменить пару конденсаторов, а обычно это проблемы не решает.
      2) Если вы не уверены в том что вы делаете, то не делайте этого.

      Читать дальше →
    • Обход встроенной защиты PIC-микроконтроллеров

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

      Взлом МК PIC18F1320


      Я подумал, что было бы неплохо попробовать что-нибудь из тех техник взлома микроконтроллеров семейства PIC, о которых я слышал. Обычно PIC-микроконтроллеры имеют некоторое количество так называемых fuse-бит, которые служат для защиты от чтения или модификации каких-то частей памяти. Однако бывают случаи, когда возникает необходимость прочитать содержимое уже запрограммированного и защищенного контроллера (на законных основаниях). Типичный пример — потеря компанией технической документации на устройство, либо увольнение тех людей, которые изначально разрабатывали защищенную прошивку микроконтроллера. Такое так же часто случается, когда компания хочет обновить линейку своих продуктов.
      Ну, сами понимаете, есть еще некоторые ситуации, когда такие навыки могут пригодиться.


      Читать дальше →
    • Создание мультизагрузочного USB HDD или флешки



      Загрузочный USB Flash или HDD накопитель удобен тем, что можно отказаться от использования CD/DVD для установки ОС и использования диагностических программ типа Memtest, MHDD, Acronis TI.

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

      Существует множество решений для флешек (например, http://eee-pc.ru/wiki/софт:usb_multiboot), но, как правило, они не работают с USB HDD. На хабре я нашел только статью об установке Win7 с USB HDD, но год назад попытки воспроизвести это не увенчались успехом. Для установки Windows 7 с флешки существует MS Win7 DVD Tool, но он опять же не работает с HDD. Поэтому давайте создадим свой мультизагрузочный USB HDD с помощью GRUB4DOS.

      Нам понадобится:
      • USB HDD (все описанное должно работать и для флешек).
      • ОС Windows (естественно можно аналогично сделать это и из ОС на базе Linux, но у меня сейчас нет возможности проверить работоспособность и наличие «подводных камней»).
      • Материнская плата (BIOS) с поддержкой загрузки с USB накопителей. Если загрузка с USB не поддерживается, можно использовать Plop, об этом ниже.


      Читать дальше →
    • Краткое введение в SIM-карты

        Когда на вопрос «кем вы работаете?» я отвечал «разработчиком ПО для SIM-карт», даже технически подкованные люди частенько удивлялись. Многие думают, что SIM-карта это «что-то типа флешки».

        В этой статье я постараюсь кратко рассказать что такое SIM-карта (и смарт-карты в общем), зачем она нужна и что у нее внутри.

        На самом деле SIM-карта — это частный случай контактной смарт-карты с микропроцессором. По сути, представляет из себя достаточно защищенный микрокомпьютер с CPU, ROM (опционально), RAM и NVRAM (которая выступает в качестве аналога жесткого диска в PC), с аппаратными генераторами случайных чисел и аппаратной реализацией крипто-алгоритмов.

        В некотором приближении архитектуру микропроцессорной смарт-карты можно представить так:
        Архитектура смарт-карты

        Читать дальше →
      • Профессиональная эмиграция — Часть 1 — Проблема курицы и яйца и как с ней бороться, а также развенчание мифов

        Здравствуйте, Хабраюзеры.

        Этим постом я хотел бы начать цикл (если позволит время и будет интересно аудитории) про профессиональную эмиграцию, особенно без привязки к работодателю.
        Читать дальше →
      • Node.js: Обзор технологий разработки библиотек общего назначения

          node.js
          В этом посте я хочу обобщить и поделится полученным опытом при разработке библиотеки node-queue-lib. Я расскажу о технологиях, которые помогли мне довести дело до финального конца — работоспособного кода, который уже работает на одном из моих сервисов. Особенностью данной библиотеки является кросс-платформенный клиент, т.е. клиент работающий в node.js и браузере и основан на одном и том же коде. В посте будут описаны следующие инструменты, без которых разработка этой библиотеки превратилась бы в ад:
          • Тестирование (jasmine_node)
          • Покрытие кода тестами (istanbul)
          • Сборка клиенткой части библиотеки (browserify)
          • Автоматизированное тестирование клиента (phantomjs)
          • Поиск утечек памяти (memwatch)

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

          И дополнительно, повторю, что статья обзорная, и не ставит целью научить Вас виртуозно пользоваться всеми перечисленными инструментами. Я лишь покажу дверь, но откроете Вы её сами…
          Читать дальше →
        • Интерактивная SVG картограмма с помощью d3.js

          • Tutorial
          Приветствую вас, хаброжители! Сегодня я расскажу вам как сделать интерактивную SVG картограмму при помощи d3js.org, о возможностях этой JavaScript библиотеки в общем, а также придётся немного разобраться в том как и где лучше хранить геоинформацию для веба. В финале мы получим следующее:

          Картограмма
          Начать сие увлекательное путешествие можно под катом.
          Читать дальше →
        • Вертикальная черта, затем ноль

            Заголовок, выраженный словами, понадобился только для поисковой находимости. Но речь пойдёт о роли символьной конструкции «|0» в JavaScript.

            Впервые на неё я обратил внимание, когда переводил FAQ про asm.js и читал спецификации этого подмножества языка JavaScript. Там «|0» служит, например, для указания типа значения, возвращаемого из функции: увидели «|0» после значения — значит, перед нами знаковое целое.

            Вдругорядь я заметил конструкцию «|0» в примере кода на Гитхабе, где происходило преобразование к целому числу результата деления на 1024².

            Тогда глаза мои открылись, и я увидел прекрасные возможности:

            ( 3|0 ) === 3;       // целые числа не изменяет
            ( 3.3|0 ) === 3;     // у дробных чисел отбрасывает дробную часть
            ( 3.8|0 ) === 3;     // не округляет, а именно отбрасывает дробную часть
            ( -3.3|0 ) === -3;   // в том числе и у отрицательных дробных чисел
            ( -3.8|0 ) === -3;   // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
            ( "3"|0 ) === 3;     // строки с числами преобразуются к целым числам
            ( "3.8"|0 ) === 3;   // при этом опять же отбрасывается дробная часть
            ( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
            ( NaN|0 ) === 0;     // NaN приводится к нулю
            ( Infinity|0 ) === 0;     // приведение к нулю происходит и с бесконечностью,
            ( -Infinity|0 ) === 0;    // и с минус бесконечностью,
            ( null|0 ) === 0;         // и с null,
            ( (void 0)|0 ) === 0;     // и с undefined,
            ( []|0 ) === 0;           // и с пустым массивом,
            ( [3]|0 ) === 3;          // но массив с одним числом приводится к числу,
            ( [-3.8]|0 ) === -3;      // в том числе с отбрасыванием дробной части,
            ( [" -3.8 "]|0 ) === -3;  // и в том числе с извлечением чисел из строк,
            ( [-3.8, 22]|0 ) === 0    // но массив с несколькими числами вновь зануляется
            ( {}|0 ) === 0;                // к нулю также приводится пустой объект
            ( {'2':'3'}|0 ) === 0;         // или не пустой
            ( (function(){})|0 ) === 0;    // к нулю также приводится пустая функция
            ( (function(){ return 3;})|0 ) === 0;    // или не пустая
            

            Итак, во-первых, перед нами удобное средство отбрасывания дробной части.

            • По отношению к отрицательным числам оно полезно тем, что дробное число превращается не в ближайшее меньшее целое число (возрастая по модулю), как это случилось бы после «Math.floor()», а в ближайшее меньшее по модулю целое число (возрастая по значению). Нередко именно это и требуется.
               
            • По отношению к положительным числам оно полезно уж тем одним, что конструкция «|0» более чем на порядок короче по сравнению с «Math.floor()». Поэтому она может и должна вызывать у разработчиков привыкание не меньшее, чем та принятая в jQuery запись «$()», о которой я говорил четыре дня назад, что с неё никто добровольно не перейдёт обратно на «document.getElementsByClassName()», например.

            Во-вторых, перед нами удобное средство преобразования различных типов к целым числам.

            Читать дальше →
          • Обзор и установка The Game Closure DevKit в Ubuntu

            Неосвещённым событием на Хабрахабре стал выход The Game Closure DevKit. Это игровой движок, использующий Javascript и технологии HTML5 для создания Web, iOS и Android приложений.
            GC Devkit обладает интерфейсом для наблюдения объектов в запущенном приложении, при этом разработка на Javascript позволяет использовать среду отладки браузера. GC бесплатен даже для коммерческого использования, а код открыт под двойной лицензией GPLv3 и Game Closure Free License (GCFL). Основные особенности можно увидеть в видеоролике, размещённом на официальном сайте GC:


            Вкусно, не правда ли? Давайте попробуем поставить Devkit на Ubuntu.
            Читать дальше →
          • Популярно о генеалогии 3D-принтеров. Кто есть кто?

              Ситуация с 3д-принтерами напоминает ситуацию с Linux-дистрибутивами, особенно для новичка. Огромная куча конструкций под кодовыми именами, половина из которых поставляется в собранном виде, половину надо собирать как конструктор из деталей, а для еще одной половины все детали надо найти самому, да еще и напильником поработать. Кстати, откуда взялась третья половина — тоже непонятно. Попробуем в этом всем разобраться.
              image

              Читать дальше →
            • 19 команд ffmpeg для любых нужд

              • Translation
              • Tutorial
              От переводчика:
              Многие знают, что ffmpeg — это сила, но не все знают, какая именно. Он многогранен и безграничен, а его man объёмен и местами малопонятен, лишь немногие постигли дао профессиональной работы с ним. И тем не менее, этот инструмент может быть полезен почти всем, кто хоть иногда работает с видео и звуком, даже на бытовом уровне. О некоторых полезных консольных командах ffmpeg и пойдёт речь в статье. В некоторых местах я взял на себя смелость вставить ссылки на поясняющие статьи.


              ffmpeg — это кроссплатформенная open-source библиотека для обработки видео- и аудиофайлов. Я собрал 19 полезных и удивительных команд, покрывающих почти все нужды: конвертация видео, извлечение звуковой дорожки, конвертирование для iPod или PSP, и многое другое.

              1. Получение информации о видеофайле

              ffmpeg -i video.avi
              

              2. Превратить набор картинок в видео

              ffmpeg -f image2 -i image%d.jpg video.mpg
              

              Эта команда преобразует все картинки из текущей директории (названные image1.jpg, image2.jpg и т.д.) в видеофайл video.mpg

              (примечание переводчика: мне больше нравится такой формат:
              ffmpeg -r 12 -y -i "image_%010d.png" output.mpg
              

              здесь задаётся frame rate (12) для видео, формат «image_%010d.png» означает, что картинки будут искаться в виде image_0000000001.png, image_0000000002.png и тд, то есть, в формате printf)
              Читать дальше →
            • Подборка PSD: дизайн устройств Apple

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

                iMac


                PSD документ iMac + PSD Mac OS X внутри.
                Netcribe: Apple iMac PSD
                Ссылка для скачивания

                Читать дальше →
              • Фильтр Калмана

                • Tutorial


                В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
                Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
                Читать дальше →
              • Интерактивная инфографика с анимациями CSS и SVG

                • Translation
                • Tutorial
                Одной из наименее обсуждаемых функций, все чаще появляющейся в последних браузерах, является поддержка файлов формата SVG. Этот формат характеризуется абсолютной свободой в отображении: легко изменяется в размере, может быть отображен в любом разрешении без потери качества. Во многих случаях SVG весят гораздо меньше, чем, например, PNG или JPG.

                image

                Но самое клевое свойство SVG, о котором многие разработчики не знают, это то, что этот формат построен на спецификации XML. C помощью этого мы можем манипулировать элементами SVG файла используя технологии вроде CSS или JavaScript, с которыми разработчики уже знакомы.

                С правильным применением технологий и современным браузером, разработчики могут создавать впечатляющие анимации и эффекты с помощью SVG. Сегодня мы рассмотрим возможности SVG и создадим интерактивную векторную инфографику, демоверсию которой можно посмотреть здесь.
                Читать дальше →
              • Развёртывание репозиториев Linux

                Без синхронизаций и т.д., в варианте «есть хостинг» или «файловая помойка» и надо быстро выкатить хранилище пакетов для дистрибутива Linux (так чтобы можно было подключиться к этому репозиторию и поставить оттуда всё необходимое). Иногда обновляться в ручном режиме — копированием по тому же адресу с перезаписью. Раз в полгода или год. Задача типовая и я её опишу в полуавтоматическом режиме.
                Читать дальше →
              • Cила CSS поможет тебе принять форму, SVG!

                • Tutorial

                Нам нужно:
                1. Установить на сайте собственные иконки с помощью SVG.
                2. Они должны управляться с помощью CSS (форма, размер, заливка, эффекты в том числе и их поведение).
                3. Они должны иметь маленький вес и находиться в одном месте для экономии http запросов.
                4. Работать во всех основных современных браузерах.

                демо
                Читать дальше →
              • Введение в Jasmine

                • Tutorial

                Программирование на стороне клиента давно стало нормой, а объем JavaScript кода и его сложность постоянно растут. Часто тестирование применяется только на серверной стороне, но при этом не стоит забывать о тестировании клиентского кода. Для тестирования JavaScript как на стороне клиента, так и для Node.js можно с успехом применять Jasmine.

                Jasmine это BDD фреймворк (Behavior-Driven Development — Разработка на Основе Поведений) для тестирования JavaScript кода, позаимствовавший многие черты из RSpec.

                Читать дальше →
              • Сборник полезных ссылок для системного администратора

                  Думаю у каждого грамотного системного администратора есть коллекция ссылок на полезные в работе ресурсы. Я имею в виду различные сайты и блоги, на которых выкладываются полезные с точки зрения системного администратора посты.
                  Предлагаю ими поделиться в формате ссылка — описание.
                  Пример: habrahabr.ru — разнообразные статьи и новости на IT и около-IT тематику.

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

                  P.S. Хабр, опеннет и лор можно не упоминать. Можно выкладывать ссылки на конкретные статьи, если считаете их очень полезными.

                  Начну с себя (т.к я администрирую linux, то и ссылки у меня в основном соответствующие):
                  Читать дальше →