• Objective-C Runtime для Си-шников. Часть 3

      image

      Всем привет. Сегодня я продолжу рассказывать вам о внутреннем устройстве Objective-C Runtime, а конкретно — о его реализации на уровне языка C.

      В прошлых статьях мы с вами подробно разобрались с селекторами и механизмом посылки сообщений объектам и классам. Сегодня я хотел бы закончить с сообщениями и рассказать о принципах работы некоторых встроенных возможностей языка Objective C.

      Тем, с кем мы ещё не знакомы, я предлагаю для начала прочитать первую и вторую части, а прочитавших и заинтересовавшихся прошу под кат.
      Читать дальше →
    • Objective-C Runtime для Си-шников. Часть 2



        Снова здравствуйте. Мой цикл статей посвящён тем программистам, которые перешли с языка C на Objective-C, и хотели бы ответить для себя на вопросы «каким именно образом Objective-C основывается на языке C?» и «как это все происходит изнутри?».

        Большое спасибо всем за обратную связь, именно проявленный вами интерес служит для меня стимулом продолжать свои статьи по доскональному изучению Objective-C Runtime. Я начал эту часть именно с тематики своих статей, потому что хочу сделать пару уточнений:

        1. Мои статьи — не руководство по Objective C. Мы изучаем именно Objective-C Runtime настолько низкоуровнево, чтобы понимать его на уровне языка C.
        2. Мои статьи — не руководство по языку C и дебаггерам. Мы опускаемся до уровня языка C, но не ниже. Поэтому такие вопросы, как представление данных в памяти, я не затрагиваю. Предполагается, что вы знаете все это и без меня.


        Конечно, статьи будут интересны так же и другим категориям программистов. Но имейте ввиду эти два пункта.

        Если вы еще не читали первую статью, то настоятельно рекомендую прочитать сначала её: http://habrahabr.ru/post/250955/. А если уже читали, то добро пожаловать под кат.
        Читать дальше →
      • Objective-C Runtime для Си-шников. Часть 1



        При первом знакомстве с Objective C он произвёл на меня впечатление уродливого и нелогичного языка. На тот момент я уже имел достаточно сильную базу в C/C++ и ассемблере x86, а так же был знаком с другими высокоуровневыми языками. В документации писалось, что Objective C это расширение языка C. Но, как бы я ни старался, мне всё же не удавалось применить свой опыт в разработке приложений для iOS.

        Сегодня он всё так же кажется мне уродливым. Но однажды окунувшись в глубины Objective-C Runtime я влюбился в него. Изучение Objective-C Runtime позволило мне найти те тонкие ниточки, которые связывают Objective C с его «отцом» — великолепным и непревзойдённым языком C. Это тот самый случай, когда любовь превращает недостатки в достоинства.

        Если вам интересно взглянуть на Objective C не просто как на набор операторов и базовых фреймворков, а понять его низкоуровневое устройство, прошу под кат.
        Читать дальше →
      • Продукты JetBrains по ценам прошлого года

          Нас постоянно спрашивают: «Когда же будут скидки?». Отвечаем: «Скидки — есть!».

          До 5 февраля на ВСЕ продукты JetBrains можно приобрести новую лицензию или обновить существующую со скидкой 40% от текущей цены.

          На этот раз акция не международная, а только для жителей трех стран: России, Украины и Беларуси. Мы понимаем, что курсы валют сильно пошатнулись и изменили цены в последние месяцы, и надеемся, что наша акция как-то компенсирует это и позволит вам не экономить на производительности и качестве кода.

          Как воспользоваться скидкой?
          Читать дальше →
        • JetBrains раздает бесплатные продукты студентам

            «Ученье — свет!» Согласны? Мы считаем, что залогом успеха во многих сферах жизни является именно качественное образование. Компания JetBrains всегда старалась помочь студентам получить глубокие знания, как прикладные, так и теоретические. Мы ведем ряд образовательных программ, стажировок и прочих образовательных мероприятий.

            Долгие годы на все наши продукты действовала 80-процентная скидка для студентов.

            Сегодня мы делаем еще один шаг в этом направлении и объявляем, что студенты (и преподаватели) могут бесплатно пользоваться нашими продуктами в целях обучения! Это касается всех наших IDE и инструментов для .NET-разработки (а TeamCity и YouTrack и так имеют бесплатные редакции или планы).

            Требования для студентов достаточно просты…
            Читать дальше →
          • Решение проблемы с циклическими ссылками в блоках ObjC

              О блоках в ObjC и правильной работе с ними написано очень много, в том числе и на хабре. Вопрос о том, как правильно работать с self в блоках, чтобы избежать циклических ссылок, регулярно задается на собеседованиях. При использовании таких фреймворков, как ReactiveCocoa количество блоков в коде сильно возрастает, при этом увеличивается шанс допустить ошибку и потерять в памяти объекты. Про попытку окончательно решить эту проблему, метапрограммирование для с99 с экстеншнами и блоками + хипстерсткие макросы с @ под катом.
              Читать дальше →
            • EditorConfig — Одни Настройки для всех Редакторов/IDE

                EditorConfig это конфигурационный файл и набор расширений, к большому количеству редакторов кода и IDE (Далее просто IDE).

                Его задача — создать единый формат настроек, и, раз и навсегда, решить вопросы вроде “табы или пробелы” для всех IDE и всех языков программирования. Такой файл может храниться в системе контроля версий проекта, что позволит всем его разработчикам использовать одну и ту же конфигурацию.

                Файлы .editorconfig можно найти в таких проектах, как jQuery, Ruby, WordPress, и многих других.

                Плагины доступны для большого количество IDE




                Давайте разберемся, как это работает.
                Читать дальше →
              • Эмуляция влияния глобальных сетей

                  В данный блог обычно пишут статьи, где Linux представляется user-friendly, ниже приведенный текст скорее относится к разделу «Linux не для всех» и будет интересен гораздо более узкому кругу хабрачитателей.

                  Часто возникает задача исследовать влияние задержек, потерь и джиттера на работу сетевого приложения. Подобная задача стоит в первую очередь перед специалистами, которые занимаются разработкой или внедрением решений VoIP, сетевых игр, потокового медиа контента. С большим распространением беспроводных сетей передачи данных, таких как GPRS, CDMA, спутниковых систем связи, исследования влияния параметров сетей передачи данных на работу приложений становятся особенно важными.

                  Рассмотрим схему, с помощью которой можно смоделировать влияние различных параметров сети передачи данных на исследуемое приложение. Для моделирование очень удобно использовать операционную систему GNU/Linux, в которой существуют все необходимые инструменты.
                  Читать дальше →
                  • +14
                  • 15.2k
                  • 4
                • Адам Лэнгли объяснил причины бага в iOS: лишняя строчка кода поломала всю безопасность

                    Вчера компания Apple выпустила обновление безопасности iOS 7.0.6 для iPhone 4 и более поздних моделей, iPod touch 5-го поколения и iPad 2+. Одновременно выпущен аналогичный патч 6.1.6 для iPhone 3GS и iPod touch 4-го поколения.

                    Обновление закрывает уязвимость CVE-2014-1266, которая позволяет злоумышленнику из «привилегированной позиции в сети» перехватывать и модифицировать пакеты в сессиях, защищённых SSL/TLS. Речь идёт о MiTM-атаке с подменой трафика.

                    В лаконичном пояснении Apple говорит, что при установке защищённого соединения по SSL/TLS система не способна определить аутентичность соединения. Проблему решили путём «добавления недостающих этапов валидации».
                    Читать дальше →
                  • Шпаргалка по С++11 для печати на кружке

                    • Tutorial


                    Вот захотелось мне такое сделать и я сделал.
                    Картинка под спойлером


                    Полноразмерная картинка (на случай если Хабр пережмёт картинку под спойлером). Подходит для печати на стандартной кружке, площадь поверхности 20 х 8.8 см, 300 dpi (ребята в магазине сувениров сказали, что это стандарт).
                    Шпаргалка, послужившая основой

                    P.S. Да, я в курсе, что у меня не вышло вместить 1300-cтраничный стандарт на одну кружку. В следующий раз точно получится, я уверен.
                  • Результаты конкурса на самый глючный код C++

                      После продолжительного обсуждения объявлены победители конкурса Grand C++ Error Explosion Competition. Награды должны были объявить в двух номинациях. Участники первой соревновались по максимальному количеству ошибок на минимальный объём кода. Вторая номинация — творческая, там важно не количество и размер, а качество и красота глюков.

                      В итоге, абсолютным победителем назван программист Эд Хэнвей (Ed Hanway), приславший такую программу.

                      #include ".//.//.//.//jeh.cpp"
                      #include "jeh.cpp"
                      `
                      Читать дальше →
                    • Resumable функции

                      • Translation
                      • Tutorial
                      На прошлой неделе в мире С++ произошло интересное событие. Компания Microsoft объявила о выходе обновления к компилятору С++ в Visual Studio 2013. Само по себе обновление компилятора отдельно от Visual Studio или её сервис-пака — уже нетривиальное для Microsoft событие. Но ещё интереснее то, что вошло в это обновление. Полный список можно почитать по ссылке выше, а я остановлюсь только на одном моменте — resumable функции. Для полного понимания ситуации: Microsoft изрядно протроллила и комитет по стандартизации С++ и разработчиков gcc\clang, выпустив (тут надо внимательно) реализацию экспериментальной и не утверждённой ещё возможности будущего стандарта C++17, основанной на экспериментальных и не утверждённых ещё возможностях будущего стандарта C++14, которые в свою очередь являются исправлениями не сильно ещё вошедших в повседневное программирование возможностей С++11.

                      Достаточно гиковский ход, не находите?

                      А ниже будет перевод статьи с meetingcpp.com, рассказывающей о том, что это за фича и как её использовать.
                      Читать дальше →
                    • Как я завалил собеседование в Twitter

                      • Translation
                      image


                      До 28 октября я должен был принять решение, буду ли я работать в Amazon по окончанию стажировки. Оставалось совсем немного времени, но мой друг Дэниел убедил меня, что если я попробую попасть в Twitter, то как раз успею пройти все интервью. Я не смог устоять.

                      Сначала меня попросили решить пару вопросов с Codility, дав на все про все час времени. Вопросы попались средней интересности («является ли слово анаграммой палиндрома» и «посчитать количество седловых точек в двумерном массиве»). Я был не слишком уверен в получившихся решениях, но вскоре Джуди прислала мне письмо с приглашением на телефонное интервью в среду в 17:30.
                      Читать дальше →