• Обзор особенностей ядра Андроида

      “А я… карбюратор промываю!”
      Анекдот


      Введение

      В детском садике мы с единомышленниками препарировали кузнечиков в надежде разобраться в их строении. В школе распаивали радиоприёмник “Россия”. В институте дошла очередь до автомобилей, гайки которых были многократно переставлены. Интересы поменялись, но желание “разбирать” иногда просыпается, и сегодня оно направлено на Андроид.

      Сколько раз вас выручало наличие исходников Андроида? Меня — уже не счесть. Андроид — открытый проект, но, к сожалению, у нас есть возможность только читать; править код Андроида, не будучи сотрудником Google, практически невозможно. Погрустим над этим моментом и загрузим репозиторий. Как это сделать, отлично описано на официальном сайте.


      Читать дальше →
    • Тонкости анализа исходного кода C/C++ с помощью cppcheck

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

      В этой статье будут рассмотрены возможности cppcheck по вылавливанию утечек памяти, полезные параметры для улучшения анализа, а также экспериментальная возможность по созданию собственных правил. Сегодня никаких сравнений анализаторов «кто лучше», статья полностью посвящена работе с cppcheck.
      Читать дальше →
    • Смарт-поинтеры и RAII на службе программиста

      Исторически так сложилось, что руководство желает, чтобы задача была выполнена быстро. Для этого программисты сохраняют красоту и чистоту кода. Этот пост появился как напоминание о редкоиспользуемых нововведениях в C++11 – смарт-поинтерах, позволяющих указывать функтор для освобождения ресурсов.
      Для примера возьмем файловый поток FILE из stdio.h, который любят за простоту и скорость, попробуем добавить ему красоту и базовую гарантию при исключениях:
      unique_ptr<FILE, decltype(&fclose)> my_file(fopen("test.txt", "w"), &fclose);
      if(my_file)
        fwrite("test", 4, 1, my_file.get());
      

      В результате код зависит только STL и требует небольшой модификации обращений к файлу, пишется быстро, выглядит современно. Вот так получился RAII в чистом виде.
      Как это работает?
      • +14
      • 9.3k
      • 8
    • Интервью с Бьерном Страуструпом о языке C++

      image
      Считанные часы остались до Нового 2014-го года, в котором в числе прочего всем нам был обещан новый стандарт C++14. Однако он будет не большим самостоятельным обновлением, а лишь доработкой C++11, багфиксом, который придаст текущей версии языка завершенный вид. На этом фоне Уильям Вонг (англ. William Wong) от ресурса electronicdesign.com взял интервью у Бьерна Страуструпа (дат. Bjarne Stroustrup), создателя C++. Беседа затронула несколько тем: от истории разработки C++ и особенностей стандарта C++11 до проблемы обучения этому языку программирования.

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

      Читать дальше →
    • Уже скоро новое рабство: теперь с витаминами и минералами

      • Translation
      image

      Когда-то давным-давно каждый отвечал за свою работу и ни у кого не было вопросов. Люди трудились на предприятиях: в конторах и на заводах. Были, правда, исключения — люди искусства, аристократы, предприниматели — но их было немного.

      Законы, постановления и статистика — все строилось на этом предположении; но чем дальше, тем больше то, чем люди занимались расходилось с тем, что понималось под этой анахроничной рубрикой из 50-х. У меня есть опыт объяснения представителям пограничной службы того, что моя «работа» состоит в заключении контрактов в стране А для клиента в стране B, а также в написании книг и продаже приложений. Повторять не советую.
      Читать дальше →
    • Kingston MobileLite Wireless — обзор чудо-гибрида

        Что обьявляется главным козырем андроидов в спорах за мировое господство, когда речь заходит о памяти устройств? Разумеется, поддержка карт памяти, и этого не отнять. Ну конечно, яблоки стали побольше, даже по 128 гигабайт, но цена за такие девайсы существенно превышает стоимость карточки microSD соответствующего объема. И что же делать? Без боя сдаваться зеленым человечкам? Безропотно признавать, что Apple наживается на несчастных фанатах бренда? Не совсем, есть пара вариантов, вроде Camera Connection Kit, но они специализированные, а есть гаджет попроще, неуникальный, но достойный внимания. Под катом — краткая история о Kingston MobileLite Wireless — устройстве, с помощью которого контент может попадать на смартфон (андроид или яблоко) и копироваться со смартфона на карту памяти или флешку.Сразу отмечу, что это чудо умеет еще и подкармливать смартфон от встроенной батарейки, правда не очень мощной — всего 1800 мАч.Kingston Mobile Lite Wireless
        Читать дальше →
      • Безопасен ли Telegram? Или как я искал закладку в MTProto

        Telegram — мессенджер для смартфонов позиционирующий себя как безопасный, защищающий не только от злоумышленников, но и от гос. структур вроде АНБ. Для достижения этой безопасности Telegram использует собственную разработку — криптографический протокол MTProto, в надежности которого сомневаются многие, сомневаюсь и я.
        Читать дальше →
      • C++ трюки и советы из Boost на каждый день

        • Tutorial

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

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

        Что вас ждёт под катом:

        • Избегаем вызовов макросов вместо функций, на примере max/min.
        • Вызываем оптимальную функцию, на примере std::swap и её специализации в разных пространствах имен.
        • Ускоряем вставку в std::vector.
        • Деструкторы в C++11.

        Читать дальше →
      • Майнинг и как он работает: матчасть

        • Tutorial

        Привет, %username%!
        Я расскажу и покажу как работает основа генерации денег в криптовалютах — майнинг. Как создается первый блок, новые блоки и как появляются деньги из ниоткуда.
        Чтобы было проще понять, мы напишем свой импровизированный майнер для импровизированной криптовалюты HabraCoin.
        Читать дальше →
      • Использование квадродеревьев при расчёте пробок 2ГИС

          Даже не являясь навигатором, 2ГИС собирает и показывает информацию о пробках. Во-первых, это необходимо для построения оптимальных маршрутов, а во-вторых — такие данные очень нужны пользователям в больших городах.

          В 2ГИС сервис пробок появился в сентябре 2011 года и сегодня работает в пяти городах (Новосибирск, Санкт-Петербург, Красноярск, Уфа, Казань). В планах на ближайшее будущее — запустить пробки во всех городах-миллионниках.

          Под катом история про то, с какими проблемами мы столкнулись и как их решили.

          Читать дальше →
        • 2000 человек, 3K проектов в год: что такое PPM, и зачем это нужно вам

          • Tutorial
          image
          Пример ресурсного плана, где мы видим распределение сотрудников по задачам на несколько месяцев вперёд. У одного из них будет перегрузка через 3 месяца.

          Одна из главных проблем руководителя — это получение актуальной информации о ходе проектов, за результаты которых он отвечает. По моей практике, до внедрения PPM руководители тратят очень много времени просто на то, чтобы проверить, что всё везде идёт по плану. Грубо говоря, 60% рабочего времени может уходить просто на то, чтобы понять, что все справляются, и вмешиваться не надо. С другой стороны, после внедрения PPM всю эту работу делать уже не надо – она делается автоматически системой. А вам только приходят алерты для ситуаций, в которых требуется внимание. Получается удобный и очень практичный инструмент управления по исключениям.

          Ниже — короткий ликбез про то, что это вообще такое, когда и для чего внедряется, как суровая российская реальность меняет процессы и несколько советов из практики. И рассказы про 4 самых интересных внедрения из моей практики.
          Читать дальше →
        • Математический фокус для MP3, JPEG и Гомера Симпсона

          • Translation
          Девять лет назад я посещал курс физики в колледже, и мой профессор рассказал одну вещь, которая поразила меня. Я думаю, не будет преувеличением сказать, что это одно из наиболее широко используемых математических открытий — от оптики до квантовой физики, радиоастрономии, сжатия MP3 и JPEG, рентгеновской кристаллографии, распознавания голоса и МРТ. Этот математический инструмент называется преобразование Фурье, в честь французского физика и математика 18-го века Жозефа Фурье. Им пользовались даже Джеймс Уотсон и Фрэнсис Крик, чтобы декодировать структуру двойной спирали ДНК из рентгенограмм, произведенных Розалиндой Франклин. (Крик был экспертом по преобразованиям Фурье, он в шутку назвал свою книгу «Преобразования Фурье для орнитологов», чтобы объяснить суть Уотсону, заядлому любителю птиц).
          Читать дальше →
        • Рейтинг постов хаба


          Привет, Хабр!

          Решил посмотреть лучшие посты своего любимого хаба и с ужасом обнаружил, что такой фичи нет.

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

          Читать дальше →
        • Ежедневная работа с Git

          • Tutorial
          Я совсем не долго изучаю и использую git практически везде, где только можно. Однако, за это время я успел многому научиться и хочу поделиться своим опытом с сообществом.

          Я постараюсь донести основные идеи, показать как эта VCS помогает разрабатывать проект. Надеюсь, что после прочтения вы сможете ответить на вопросы:
          • можно ли git «подстроить» под тот процесс разработки, который мне нужен?
          • будет ли менеджер и заказчик удовлетворён этим процессом?
          • будет ли легко работать разработчикам?
          • смогут ли новички быстро включиться в процесс?
          • можно ли процесс относительно легко и быстро изменить?


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

          Далее очень много букв случайным образом превратились в пост.
        • Простыми словами о преобразовании Фурье

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

          image (с) xkcd

          Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
          • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
          • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
          • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
          • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
          • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
          • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
          • Как по цифровой последовательности восстанавливают исходный сигнал


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

          Итак, приступим?
        • Пишем красивый идиоматический Python


          Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.

          Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
          Читать дальше →
        • Эссе на тему «Как стать программистом?»

            Вместо вступления

            После открытия публичного доступа к Q&A разделу Хабрахабра появилось множество вопросов по теме «Как стать программистом?». Бесспорно, прекрасно то, что так много людей хотят избрать для себя эту интересную профессию. Многих интересует конкретное направление (web, game development) или язык (PHP, Java, C#, JavaScript, Ruby). Выработать универсальную инструкцию достаточно сложно, если не сказать невозможно. Поделиться с вами своими мыслями по этому вопросу я бы и хотел сегодня.
            Читать дальше →
          • Промежуточные итоги биржевого стартапа

              Биржа, как стартап. Звучит довольно необычно. Сразу в голову лезет огромное количество юридических моментов, регуляторских замутов и т.д. Казалось бы, просто так не начать.

              Но, как многим известно, существуют удачные попытки противостоять бюрократии финансового мира. История этого противостояния носит, конечно же, во многом виртуальную составляющую — электронные платежные системы. А как мы хорошо знаем, мир софта, пусть и виртуальный, при должном умении и упорстве вполне реально монетизируется.

              Историю развития такого противостояния/дополнения можно долго расписывать. Но мы остановимся на одном из крайних событий этого фронта: криптовалюты. И даже еще сузим повествование: криптовалютные биржи.

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

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