• Конец прокрастинации или что такое ИКИГАИ?

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

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



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

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

      Под катом рассказ Петра Людвига на конференции Aletheia Business 2017 о том, как положить конец прокрастинации используя три простых инструмента. Как только вы внедрите их в свою жизнь, вы сразу заметите разницу. Вы будете более продуктивны, почувствуете себя счастливее и у вас появится больше энергии.


      Читать дальше →
    • Решение, которое нужно принять, чтобы не жалеть о жизни через 30 лет

      • Translation


      «Определение ада: «Тот человек, которым вы стали, в свой последний день на земле встретится с человеком, которым вы могли бы стать».
      — Автор неизвестен


      Читать дальше →
    • Внедрения реактива в архитектуру iOS приложений

      • Tutorial
      Большинство статей о функционально-реактивном программировании ограничиваются демонстрацией возможностей определенного инструмента в определенной задачи и не дают понимания как использовать всю мощь в рамках целого проекта.

      Хотелось бы поделиться опытом проектирования с использованием функционально-реактивного программирования под iOS. Это не зависит от выбранного инструмента, будь то RAC, RxSwift, Interstellar или же что-то еще. Так же это применимо при разработке под MacOS.

      В определенных моментах я буду писать, используя Swift + RAC4, поскольку это мои основные инструменты на данный момент. Однако, я не буду использовать в статье терминологию и особенности RAC4.

      Может быть вы зря отказывались от реактивного программирования и пора начать его использовать?
      Читать дальше →
      • +8
      • 11.5k
      • 6
    • Xcode: наверное, лучший способ работы со сторибордами


        Этот пост является вольным переводом статьи Xcode: A Better Way to Deal with Storyboards by Stan Ostrovskiy


        Некоторые примеры кода в оригинальной статье устарели (ввиду выхода Swift 3) и в переводе были изменены.


        Советы и рекомендации по работе с Interface Builder.


        Apple серьезно улучшили Interface Builder в новом Xcode 8. Использование size classes стало более интуитивным, возможность масштабирования сториборда — очень удобной, а полное превью прям в Interface Builder — просто великолепным. Для тех у кого были сомнения насчет использования Interface Builder, это может стать хорошими плюсами.


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


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


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

        В вашем проекте есть один файл main.storyboard, который выглядит вот так?



        С точки зрения дизайнера, все хорошо: полностью видно UI и навигацию. И это именно то, для чего Interface Builder и был создан.

        Но для разработчика это несет множество проблем:

        Читать дальше →
      • Speech.framework в iOS 10


          Обзор


          Очередная конференция — очередные новшества. Судя по настроениям нас ждет отмена клавиатур и устройств ввода. Apple в iOS 10 представила разработчикам возможность работать с речью. Мой коллега Геор Касапиди уже описал возможности Siri в своей статье, а я расскажу о Speech.framework. Рассмотренный в статье материал реализован в демо-приложении what_i_say. На момент написания статьи официальной документации нет, так что будем основываться на том, что рассказал Henry Mason.

          Читать дальше →
          • +15
          • 9.5k
          • 4
        • Да начнется unit-тестирование (Objective-C)

          Данная статья посвящена вопросу тестирования в рамках Objective-C используя Xcode 6. Рассматриваются стандартная библиотека для тестирования и сторонняя библиотека OCMock. Опытные разработчики, возможно, не найдут здесь слишком полезной информации, тем же, кто недавно встал на этот путь — статья откроет необходимые базовые знания по написанию unit-тестов на языке Objective-C.

          Для основы тестирования просьба обратиться сюда.
          Для основы unit-тестирования сюда.

          А теперь мы начнем изучение unit-тестирования в рамках Objective-C.
          Читать дальше →
        • Objective-c блоки и c++ лямбды

          • Tutorial
          Надеюсь, что пост будет полезен людям которые знакомы с лямбдами C++, но хотят изучить блоки Objective-C и наоборот.
          Здесь я постарался описать синтаксис замыканий, механизмы захвата контекста, управление памятью и взаимодествие лямбд и блоков между собой.
          Во всех примерах использовался Apple LLVM Compiler 4.2 (Clang). Для приведенного Obj-C кода не используется ARC, т.к я придерживаюсь мнения, что необходимо знать как работает non-ARC код, чтобы понять как работает ARC.
          Читать дальше →
        • [Письмо молодым] Как стать успешным, не потратить время впустую, и заработать деньги на любимом занятии

            Студенты счастливы. Учебные годы станут лучшим воспоминанием для многих. Моменты радости, переживания и любви останутся с ними навсегда. Это последние годы, когда ненужно зарабатывать деньги, чтобы жить и можно спать до обеда, не ощущая себя бездельником.
            Читать дальше →
            • +3
            • 12.3k
            • 9
          • [Письмо молодым] Мечтайте. Мечты сбываются. И я не знаю почему



              В детстве я мечтал о том, что стану богатым и буду путешествовать по уютным городам Европы. Но, находясь в центре Барселоны я не ощущал особенности момента. Все произошло последовательно и даже логично. Мой путь, который начался в небольшой деревне, продолжился в столице неожиданным для многих образом. А все потому, что я не боялся мечтать.
              Читать дальше →
            • Юнит-тестирование для чайников

              • Tutorial
              Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

              Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

              We need to go deeper
            • LLVM для исследователей

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

              Что такое LLVM?


              LLVM — это по-настоящему удобный для разборки и сборки «ранний» компилятор для таких традиционных языков программирования, как C и C++.

              LLVM настолько хорош, что считается «больше, чем просто компилятором» (это динамический компилятор, он работает с языками, не относящимися к семейству C, он представляет собой новый формат доставки для App Store и т. д. и т. п.). Все перечисленное верно, но для нашей статьи важно лишь приведенное выше определение.

              LLVM имеет несколько ключевых отличий от других компиляторов:

              • Главное новшество — промежуточное представление (ПП). LLVM работает с ПП, которое действительно можно прочитать (если вы умеете читать ассемблерный код). Возможно, кому-то это не покажется столь уж большим откровением, однако это свойство очень важно. ПП других компиляторов обычно имеют настолько сложную структуру, что их невозможно записать вручную, трудно понять и использовать.
              Читать дальше →
              • +64
              • 47.9k
              • 6
            • Каково это — быть разработчиком, когда тебе сорок

              • Translation
              Примечание от переводчика:

              Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



              Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

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

              image

              Эти размышления привели меня туда, откуда все начиналось.

              Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

              Мир в 1997 году


              Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

              Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
              Читать дальше →
            • Objective-C что такое на самом деле метод и self? + runtime

                Как self и _cmd оказываются в методе? Как работает dispatch table и категории? Что такое мета-класс? Сколько на самом деле методов у ваших классов в ARC и в MRC? Как работает swizzling?
                Интересно? Добро пожаловать под кат!

                ВНИМАНИЕ!

                Эта статья не рассчитана на начинающих разработчиков… Приношу свои извинения за то, что не рассматриваю многие моменты, которые должен знать Objective-C разработчик.


                Читать дальше →
                • +10
                • 20.4k
                • 4
              • Я, наверное, знаю ООП. Опыт объектно-ориентированного программирования и дизайна. Ответ «не знающим ООП.»

                После появления статей типа "Я не знаю ООП" — возникает желание внести ясность, «сорвать покровы» и «докопаться до истины».

                Принципы объектно-ориентированности


                Обычно выделяют (читай: на собеседовании требуют назвать) четыре «принципа объектно-ориентированного программирования»: абстракцию, инкапсуляцию, наследование и полиморфизм.

                На мой взгляд (не говоря о том, что абстракция и полиморфизм могут быть запросто отнесены к подразделам наследования), принцип тут один, в общем, тот же самый, что при проектировании баз данных: представление всего в виде объекта — некоторой штуковины со свойствами. Набор обычно бывает фиксированным, и тогда говорят о классе объектов, а даже если понятия класса и нет, то наличие свойств с определёнными названиями подразумевается логикой программы, т.е. нечто типа класса в виде некоего минимального набора свойств всё равно присутствует. В общем, воззрения восходят к давнему С-шному/паскалевскому типу данных struct/record. Потом к этому добавили немного «функциональности» (в смысле функционального программирования): значением свойства может быть функция, причём такая, которая имеет доступ к самой структуре/записи, значением одного из свойств которой она является. Сей феномен, в лучших традициях немецкого латиноязычного нейминга (когда опция называется «вариантом», а степень числа — «потенцией»), назвали «методом». Желание повторно использовать код, в сочетании с представлением каждого предмета как некоего подобия паскалевской «записи», привело к появлению концепции «наследования».
                Читать дальше →
              • Принцип подстановки Барбары Лисков

                  Привет, хабрачеловеки!

                  Захотелось вот поделиться сокровенным знанием по этой теме. К тому же материалов по этому, достаточно важному принципу проектирования классов и их наследования, в Рунете как-то негусто. Имеются формулировки вида:

                  «Пусть q(x) является свойством верным относительно объектов x некоторого типа T. Тогда q(y) также должно быть верным для объектов y типа S, где S является подтипом типа T.» © Wikipedia

                  Но они выносят мой мозг меня совершенно не радуют.

                  Если хочется услышать объяснение этой хрени умной фразы — прошу под кат.
                  Читать дальше →
                • Уязвимость ВКонтакте: доступ к превью фотографий из диалогов и скрытых альбомов любого пользователя

                  Коротко


                  Была обнаружена уязвимость в мобильной версии сайта vk.com. Она позволяла просматривать превью скрытых фотографий, в том числе фотографии из диалогов пользователей, плюс можно было получить информацию о пользователях лайкнувших это скрытое фото. На данный момент уязвимости уже нет — её устранили полгода назад. ВКонтакте выразили благодарность в размере 700$ (нет, не в голосах).
                  Подробнее
                  • +50
                  • 104k
                  • 6
                • Сейчас 2016 год — почему же никто так и не может сделать достойно приложение для работы со списками задач

                  • Translation
                  image

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

                  И это не означает недостаточное внимание к теме. Имеется целая область Интернета, занимающаяся увеличением производительности повседневной деятельности людей. Сюда входят 5 «простых путей» (Simple Ways), 31 «гениальный совет» (Genius Tips) и одна «таинственная уловка» (One Weird Trick). Сотни приложений составляют гамму от симпатичных формирователей списков до электронного сквалыги, который буквально изводит вас, пока вы занимаетесь своей, по его мнению, «полной ерундой». Это замечательно работает, заставляя затрачивать уйму времени на организацию и планирование вместо того, чтобы фактически получить сделанный материал. Поверьте мне, я делаю это постоянно. И я не один такой.

                  Стартап «iDoneThis» («Я сделал это») выявил, что 41% задач, помещённых пользователями в его систему, так и не был выполнен. Возможно, следовало бы назвать этот стартап «iAin’tDoingThis» («Я не сделал это»), потому что очевидно это, чем длиннее ваш список, тем меньше он выполняется.
                  Читать дальше →
                • 7 правил создания красивых интерфейсов. Часть 2

                  • Translation


                  Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Сегодня мы публикуем вторую часть перевода. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

                  Мы говорили о правилах создания чистых и красивых интерфейсов.

                  Вот эти правила:
                  1. Свет падает сверху (Часть 1)
                  2. Сначала черное и белое (Часть 1)
                  3. Увеличьте белое пространство (Часть 1)
                  4. Научитесь накладывать текст на изображения
                  5. Научитесь выделять и утапливать текст
                  6. Используйте только хорошие шрифты
                  7. Крадите как художник

                  Читать дальше →
                • 7 правил создания красивых интерфейсов

                  • Translation


                  Недавно мы в «Я люблю ИП» закончили курсы по дизайну от trydesignlab.com. И это одна из самых важных статей, которую нам посоветовал ментор в процессе обучения. Именно поэтому мы решили её перевести. Посмотреть все наши работы с курсов можно в ВКонтакте по тэгу #design101@iloveip.

                  Вступление


                  Сначала о главном. Это руководство не для всех. Это руководство прежде всего для:
                  • разработчиков, которые хотят уметь делать хорошие интерфейсы для себя, если вдруг прижмёт;
                  • UX-дизайнеров, которые знают, что хороший UX-дизайн продаётся лучше в красивой UI-упаковке.

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

                  А пока давайте я расскажу, что вы найдёте в этой статье.

                  Читать дальше →
                • Три наиболее значимых нововведения с приходом watchOS2

                  Итак, о чем действительно стоит упомянуть при переходе к разработке на watchOS2 — это следующие три пункта:

                  • WKInterfacePicker
                  • Complications
                  • WCSession

                  В данной статье я коротко расскажу о каждом из них.
                  Читать дальше →