• Вы неверно измеряете загрузку процессора

    • Перевод
    Та метрика, которую мы называем «загрузкой процессора» на самом деле многими людьми понимается не совсем верно. Что же такое «загрузка процессора»? Это то, насколько занят наш процессор? Нет, это не так. Да-да, я говорю о той самой классической загрузке CPU, которую показывают все утилиты анализа производительности — от диспетчера задач Windows до команды top в Linux.

    Вот что может означать «процессор загружен сейчас на 90%»? Возможно, вы думаете, что это выглядит как-то так:



    А на самом деле это выглядит вот так:



    «Работа вхолостую» означает, что процессор способен выполнить некоторые инструкции, но не делает этого, поскольку ожидает чего-то — например, ввода-вывода данных из оперативной памяти. Процентное соотношение реальной и «холостой» работы на рисунке выше — это то, что я вижу изо дня в день в работе реальных приложений на реальных серверах. Есть существенная вероятность, что и ваша программа проводит своё время примерно так же, а вы об этом и не знаете.
    Читать дальше →
  • Бенчмарки в Go

    • Перевод

    Бенчмарки


    Бенчмарки это тесты для производительности. Довольно полезно иметь их в проекте и сравнивать их результаты от коммита к коммиту. В Go есть очень хороший инструментарий для написания и запуска бенчмарков. В этой статье я покажу, как использовать пакет testing для написания бенчмарков.
    Читать дальше →
    • +24
    • 20,3k
    • 2
  • Дешёвый хронограф для пневматики своими руками



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

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

    Читать дальше →
  • 5 Самых захватывающих событий, произошедших в космосе [перевод]

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


    Когда лётчики-испытатели прокачиваются до следующего уровня, получаются космонавты. И они настолько суровы, что могут использовать алмазы вместо жвачки. Мы уже говорили о крутых космонавтах, но вот что, ребята: в космосе всё круто. Поэтому вот вам ещё кое-что.

    image

    Читать дальше →
  • Я дойду

      — Да, милая, я тебя тоже люблю.
      Пальцы автоматически нажимают хоткей отправки сообщения. Я тру уставшие глаза, в которые неизвестный злой волшебник насыпал песка. Уже почти сутки без сна, надо выделить себе 4 часа. Это — мой цикл. Пять, шесть, семь часов — для меня самоубийство, я встану уставшим, недовольным, а значит, неэффективным. Следующая цифра — восемь, но это слишком много. Так что только 4 часа сна.
      Прогресс-бар, дергаясь, словно в конвульсиях, дополз до правой границы, уперся в нее и исчез.
      Я привычно лезу в лог отправки сообщений. Отклонений, вроде, нет. Четыре слоя шифрования, для скольких… для где-то тридцати символов. Надо будет до конца недели закончить скрипт-анализатор, а то вручную просматривать… бред.
      Читать дальше →
    • В ГД одобрен проект закона о блокировке сайтов с любым пиратским контентом

        Комитет Госдумы по информационной политике рекомендовал принять в первом чтении законопроект, который распространяет действие «антипиратского» закона на все объекты авторских и смежных прав.


        12 марта планируется рассмотреть поправки к закону, если все пройдет в обычном режиме, то с 1 июля 2014 года вступит в силу. Несколько следствий:

        1. Блокировать можно будет любые сайты за любой пиратский контент.
        2. Операторы связи, хостинг и владельцы сайтов освобождаются от ответственности за блокировку.

        Здравствуй дивный новый мир.

        image

        UPD: Подробности о том, чем хорош-плох этот закон, можно найти здесь: habrahabr.ru/post/214037
      • История одного байта

          Предисловие.
          Этот рассказ имеет свою длинную историю. Для многих это, возможно, будет махровый баян, но мне кажется он стоит того, что бы его прочитали новые люди.
          Во всех источниках, где я встречал его сведения об авторе были просты и незатейливы: Dmitry Galuscenko. Если кто-то может указать сайт или e-mail — напишите в комментариях, я с удовольствием добавлю.
          Итак, начнем.


          Мне не хватало байта. Всего одного. Да, да. Того самого, что из восьми бит состоит. Что? Hет, я не псих, хотя одному богу известно, сколь тонкой была граница отделявшая меня от этого состояния.
          Hо все по порядку
        • Создание гемов — Руководство

            Хотя на Хабре уже проскакивали статьи о создании гемов, они либо содержат устаревшую, либо неполную информацию.

            Как же на самом деле надо создавать, развивать и публиковать свои гемы?

            Современный подход заключается в использовании Bundler совместно с другими инструментами, такими, как Git, YARD и RSpec-2.
            Читать дальше →
          • Генератор миниатюрок из Nginx-а

              Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
              Что ж приступим...
            • Делаем настольное устройство для изготовления печатных плат в один клик

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

                image

                Ниже я расскажу о том, как делал этот девайс.
                Читать дальше →
              • Автоматическое определение подключения\отключения второго монитора

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


                  По сути, к реализации этой маленькой автоматизации меня сподвигла лень.

                  Собственно, с чего все началось.


                  У меня есть ноутбук с установленной gentoo, и i3wm оконным менеджером. Так же есть несколько мониторов(дома, на работе и т д). Разрешения на всех мониторах разные, способы подключения тоже (VGA, HDMI, DVI) разные. Активно, использую первые два.

                  Раньше, при подключении второго монитора, приходилось вызывать команды, которые инициализировали этот самый монитор. Запуск команды с автоматическим ключом, не всегда давал, желаемого результата(не угадывал разрешение).

                  xrandr --auto
                  


                  Потому, приходилось запускать эту же команду, но с набором других ключей, разрешение например.

                  --mode

                  И хотя, в xrandr для каждого монитора у меня есть несколько вариантов разрешений, есть одно (максимальное для данного монитора, которое удовлетворяет), но на каждом мониторе оно разное(так как сами мониторы разные).

                  Потому пришлось искать решение…

                  Читать дальше →
                • Создание API: в рамку и на стену

                  • Перевод
                  • Tutorial
                  Каждый программист — проектировщик API. Хорошие программы состоят из модулей, а протокол взаимодействия модулей — это тоже API. Хорошие модули используются повторно.

                  API — это большая сила и большая ответственность. У хорошего API будут благодарные пользователи; поддержка плохого превратится в кошмар.

                  Публичный API — не воробей, опубликуешь — не уберешь. Есть только одна попытка сделать все правильно, поэтому постарайся.

                  API должно быть легко использовать, но сложно использовать неправильно. Сделать что-то простое с помощью такого API должно быть просто; сложное — возможно; сделать что-то неправильно должно быть невозможно, или, по крайней мере, трудно.

                  API должен описывать сам себя. Изучение кода на таком API не вызывает желания читать комментарии. Вообще, комментарии редко нужны.

                  Перед разработкой API собери требования с долей здорового скептицизма. Осознай общие задачи и реши их.

                  Оформляй требования как шаблоны использования API. Сверяйся с ними в процессе проектирования.
                  Читать дальше →
                • О правомерности работы физического лица с магазином App Store в РФ

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

                    Итак, суть статьи заключается в том, чтобы понять: можно ли в РФ физическому лицу законно получать прибыль от продаж программ в App Store? Просмотр тематических форумов с подобными вопросами привел к выводу: мнения людей на этот счет расходятся. Одни считают, что можно, другие — что такая деятельность будет квалифицироваться как незаконная предпринимательская деятельность, т.к. договор от Apple — это агентский договор и в нем нет ни слова про авторские вознаграждения, и, как следствие, нужно регистрироваться в качестве индивидуального предпринимателя (ИП).
                    Читать дальше →
                  • Использование TileMill



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

                      В этом посте будут рассмотрены:
                      • Подготовка данных, перепроецирование в Web Mercator
                      • Повышение скорости обработки shape файлов
                      • Создание проекта и импорт данных в студию
                      • Создание точечного слоя землетрясений
                      • Стандартные селекторы и атрибутивная таблица

                      Интересно? Приглашаю под кат.
                      Читать дальше →
                      • +25
                      • 3,3k
                      • 1
                    • Еще один дайджест (теперь Go)

                        image Привет всем фанатам и интересующимся Go. Это 6-й выпуск дайджеста ссылок и новостей о набирающем популярность языке. Не сочтите за наглую попытку пропиарить ресурс, на котором я регулярно публикую новости все о том же Go. Все последующие выпуски «тулзовин и хреновин» будут публиковаться именно на 4gophers.com. Кроме того, по просьбам трудящихся, теперь есть подписка на рассылку.

                        Тема этого выпуска — GopherCon 2014. Это самая большая Go-конференция в этом году. Возможно, кто-то из читателей лично присутствовал и может рассказать о своих впечатлениях. Все найденные в сети доклады и материалы я стараюсь собрать в этом посте.

                        Читать дальше →
                        • +46
                        • 17,3k
                        • 6
                      • Организация многозадачности в ядре ОС

                        Волею судеб мне довелось разбираться с организацией многозадачности, точнее псевдо-многозадачности, поскольку задачи делят время на одном ядре процессора. Я уже несколько раз встречала на хабре статьи по данной теме, и мне показалось, что данная тема сообществу интересна, поэтому я позволю себе внести свою скромную лепту в освещение данного вопроса.
                        Сначала я попытаюсь рассказать о типах многозадачности (кооперативной и вытесняющей). Затем перейду к принципам планирования для вытесняющей многозадачности. Рассказ рассчитан скорее на начинающего читателя, который хочет разобраться, как работает многозадачность на уровне ядра ОС. Но поскольку все будет сопровождаться примерами, которые можно скомпилировать, запустить, и с которыми при желании можно поиграться, то, возможно, статья заинтересует и тех, кто уже знаком с теорией, но никогда не пробовал планировщик “на вкус”. Кому лень читать, может сразу перейти к изучению кода, поскольку код примеров будет взят из нашего проекта.
                        Ну, и многопоточные котики для привлечения внимания.

                        Читать дальше →
                      • Анализ приложения защищенного виртуальной машиной

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

                          К сожалению, статья будет достаточно тяжелая для обычного прикладного программиста, не интересующегося тематикой защиты ПО, но тут уж ничего не поделать.

                          Для более или менее адекватного восприятия статьи потребуется минимальные знания ассемблера (его будет много) а так-же навыков работы с отладчиком.

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

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

                          В качестве реципиента, по совету одного достаточно компетентного товарища, я выбрал немножко старый (но не потерявший актуальности, в силу качества исполнения) keygenme от небезызвестного Ms-Rem.

                          Вот первоначальная ссылка, где он появился: http://exelab.ru/f/index.php?action=vthread&forum=1&topic=4732
                          А потом он попал вот сюда: http://www.crackmes.de/users/ms_rem/keygenme_by_ms_rem/
                          Где данному keygenme был выставлена сложность 8 из 10 (*VERY VERY* hard).
                          Хотя, если честно, это слегка завышенная оценка — я бы поставил в районе 5-6 баллов.

                          Пожалуй, начнем.
                          Читать дальше →
                        • Мифы и легенды про Big Data


                            Один из наших кластеров для пилотных задач (Data node: 18 servers /2 CPUs, 12 Cores, 64GB RAM/, 12 Disks, 3 TB, SATA — HP DL380g)

                            — Что такое Big Data вообще?
                            Все знают, что это обработка огромных массивов данных. Но, например, работа с Oracle-базой на 20 Гигабайт или 4 Петабайта — это ещё не Big Data, это просто highload-БД.

                            — Так в чём ключевое отличие Big Data от «обычных» highload-систем?
                            В возможности строить гибкие запросы. Реляционная база данных, в силу своей архитектуры, предназначена для коротких быстрых запросов, идущих однотипным потоком. Если вы вдруг решите выйти за пределы таких запросов и собрать новый сложный, то базу придётся переписывать – или же она умрёт под нагрузкой.

                            — Откуда берётся эта новая нагрузка?
                            Если чуть углубиться в архитектуру, то можно увидеть, что традиционные базы данных хранят информацию очень дисперсионно. Например, у нас номер абонента может быть на одном сервере в одной таблице, а его баланс — в другой таблице. Быстродействие требует максимального разбиения данных. Как только мы начинаем делать сложные join'ы, производительность резко падает.
                            Читать дальше →