• Фотографии рабочих мест хабражителей и…

      image
      Хабражители редко ходят друг к другу в гости. И, в то же самое время, хотят взглянуть на то, как устроились другие. Может быть, даже, позаимствовать разные интересности.

      Пока вы дома, самое время вооружиться фотоаппаратом и поделиться видом своего рабочего места (домашнего).

      По возможности, описываем:
      1. 7 любимых гаджетов.
      2. 7 ежедневных программ.
      3. 7 интересных открытий, которыми вы часто пользуетесь.

      Приоткройте занавесу тайны в своей обители.

      PS: Бонус для владельцев ноутбуков — подключаем 2 монитора.
      Читать дальше →
    • Сжатие мобильной графики в формат ETC1 и открытая утилита

        При развитии free-to-play мобильной игры вместе с новыми фичами регулярно добавляется и новая графика. Часть ее включается в дистрибутив, часть скачивается в ходе игры. Для возможности запуска приложения на устройствах с небольшим размером оперативной памяти разработчики применяют аппаратно сжатые текстуры.



        Формат ETC1 обязателен к поддержке на всех Android-устройствах с OpenGL ES 2.0 и является хорошей отправной точкой оптимизации потребляемой оперативной памяти. По сравнению с форматами PNG, JPEG, WebP загрузка текстур ETC1 осуществляется без интенсивных расчетов обычным копированием памяти. Также улучшается производительность игры по причине меньших размеров данных текстур пересылаемых из медленной памяти в быструю.
        Читать дальше →
      • Flutter I — Введение и установка

        Flutter — новый инструмент от Google, позволяющий разработчикам писать кроссплатформенные приложения, которые можно запускать на различных системах (например, на Android или iOS) с общей кодовой базой.


        введение и установка


        Сам инструмент написан на C и C++. Предоставляет движок для 2D рендеринга, React-подобный FRP фреймворк и набор виджетов в стиле Material Design. На данный момент распространяется версия alpha:0.0.20, но несмотря на довольно "сырую" версию, уже можно создавать продвинутый интерфейс, работать с сетью и даже с файловой системой.

        Читать дальше →
      • Необразованная молодёжь. Ответ бизнеса

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


          Дорога к хорошей работе всегда непростая и требует усилий
          Читать дальше →
        • Android Architecture Components. Часть 4. ViewModel

            image

            Компонент ViewModel — предназначен для хранения и управления данными, связанными с представлением, а заодно, избавить нас от проблемы, связанной с пересозданием активити во время таких операций, как переворот экрана и т.д. Не стоит его воспринимать, как замену onSaveInstanceState, поскольку, после того как система уничтожит нашу активити, к примеру, когда мы перейдем в другое приложение, ViewModel будет также уничтожен и не сохранит свое состояние. В целом же, компонент ViewModel можно охарактеризовать как синглтон с колекцией экземпляров классов ViewModel, который гарантирует, что не будет уничтожен пока есть активный экземпляр нашей активити и освободит ресурсы после ухода с нее (все немного сложнее, но выглядит как-то так). Стоит также отметить, что мы можем привязать любое количество ViewModel к нашей Activity(Fragment).

            Компонент состоит из таких классов: ViewModel, AndroidViewModel, ViewModelProvider, ViewModelProviders, ViewModelStore, ViewModelStores. Разработчик будет работать только с  ViewModel, AndroidViewModel и для получения истанца с ViewModelProviders, но для лучшего понимания компонента, мы поверхностно рассмотрим все классы.
            Читать дальше →
          • Приглашаю на летние открытые лекции по игровой индустрии в ВШБИ

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

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

              В программе:

              • 4 августа(пятница) 2017 лекция на тему «Игровая индустрия: менеджмент»
              • 7 августа(понедельник) 2017 открытая лекция на тему «Попади в геймдев! Особенности трудоустройства в игровую индустрию»
              • 9 августа(среда) 2017 день открытых дверей по программам игровой индустрии
              • 11 августа(пятница) 2017 года лекция на тему «Игровая индустрия: художник в компьютерных играх»
              • 18 августа(пятница) 2017 года лекция на тему «Игровая индустрия: маркетинг»
              • 23 августа(среда) 2017 года открытая лекция «Геймдизайн: игровые механики»

              Под катом подробности про каждое мероприятие и ссылки на регистрацию.


              Читать дальше →
            • Почему следует полностью переходить на Kotlin

              • Translation


              Хочу рассказать вам о новом языке программирования, который называется Kotlin, и объяснить, почему вам стоит использовать его в своём следующем проекте. Раньше я предпочитал Java, но в последний год пишу на Kotlin везде, где только можно. И в данный момент я не представляю себе ситуации, в которой лучше было бы выбрать Java.


              Kotlin разработан в JetBrains, и участие тех же людей в создании наборов IDE, таких как IntelliJ и ReSharper, хорошо заметно по самому языку. Он прагматичен и краток, благодаря чему написание кода превращается в приятный и эффективный процесс.


              Хотя Kotlin компилируется в JavaScript и скоро будет компилироваться в машинный код, я сконцентрируюсь на его первичной среде — JVM.


              Итак, несколько причин, почему вам следует полностью переходить на Kotlin (порядок случаен):

              Читать дальше →
            • Основы реактивного программирования под Android на практическом примере

              1. Введение в реактивное программирование


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

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

              RxJava — реализация ReactiveX с открытым исходным кодом на Java. Базовыми строительными блоками реактивного кода являются Observables и Subscribers. Подробнее с базовой основой можно ознакомиться в статье Грокаем* RxJava, часть первая: основы.

              RxAndroid — расширение к RxJava, которое позволяет планировщику запускать код в основном и дополнительных потоках Android приложения и обеспечивает передачу результатов из созданных дополнительных потоках в основное для агрегации и взаимодействия с интерфейсом пользователя.
              С целью более полного понимания основных принципов реактивного программирования рассмотрим практический пример для платформы Android. И начнем с настройки окружения для разработки.
              Читать дальше →
            • Введение в Size Classes в Xcode 6

              Привет всем! Сегодня хотелось бы сделать небольшое введение в такую штуку, как Size Classes. Она появилась недавно вместе с Xcode 6, документации по ней от самой Apple совсем немного.

              Итак, для чего же предназначена Size Classes? Все мы знаем, что на подходе уже iPhone 6 двумя (как минимум) разными размерами дисплея (4,7 и 5,5), после чего разработчикам еще больше придется заморачиваться с версткой UI для них + само собой расширения iPad«ов. В итоге количество всех поддерживаемых экранов будет около 7 (маленький привет Android). Герой сегодняшнего дня — Size Classes — как раз и предназначен для того, что бы помочь решить данную проблему.
              Читать дальше →
            • Руководство по локализации для iOS

              • Translation
              • Tutorial

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

              Процесс локализации — трудоемкий, а его шаги потихоньку меняются по мере обновления XCode. Этот пост объясняет каждый шаг на основе последней версии XCode (7.3.1).

              Переведено в Alconost
              Читать дальше →
            • Shake Detector для Android на RxJava



                Вступление


                Началось все с того, что была поставлена задача отменять последнее действие в приложении при встряхивании устройства. Но как понять, что случилось это самое встряхивание? Через пару минут изучения вопроса стало ясно, что надо подписываться на события от акселерометра и дальше пытаться как-то определить, что устройство встряхнули.
                Обнаружились и готовые решения. Все они были довольно похожи, но в чистом виде они меня не устраивали, и я написал собственный «велосипед». Это был класс, который подписывался на события от сенсора и менял свое состояние по мере их поступления. Потом пару раз я и мои коллеги подкручивали шестеренки этого велосипеда, и в результате он стал напоминать нечто из «Безумного Макса». Я пообещал, что, как выдастся свободное время, приведу это безобразие в порядок.

                И вот, читая недавно статьи по RxJava, я вспомнил про эту задачу. «Хм, — подумал я, — RxJava выглядит очень подходящим инструментом для такого рода проблем». Не откладывая в долгий ящик, взял и написал решение на RxJava. Результат меня поразил: вся логика заняла 8 (восемь!) строк! Я решил поделиться своим опытом с другим разработчикам. Так появилась на свет эта статья.

                Надеюсь, этот простой пример поможет принять решение тем, кто размышляет о применении RxJava в своих проектах.

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

                Приступим!
                Читать дальше →
              • Разработка архитектуры нового приложения для пассажиров Uber

                • Translation
                — Здравствуйте. Скажите, сколько стоит сделать приложение типа Uber?

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

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

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

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


                Читать дальше →
              • ASO оптимизация. Составление семантического ядра для магазинов приложений

                • Tutorial
                Всем привет! Меня зовут Владимир Баранов, я занимаюсь ASO и обладаю экспертизой в оптимизации приложений, начиная от малобюджетных читалок, заканчивая приложениями с многомиллионной аудиторией: дейтингами, играми и чатами.

                Это будет первая статья цикла “Популяризация ASO”. В этом цикле я опишу все этапы оптимизации приложения, какими сервисами пользуюсь и на что нужно обращать внимание при проведении оптимизации.

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



                Полтора года назад я принял вызов прочитать 100 книг за год. Авантюра полностью себя не оправдала, так как некоторые книги я перечитывал, но однозначно оказалась полезной. По итогам последних двух лет я составил список книг, которые каким-то образом повлияли на мою жизнь. Составлял я его для себя, но позже решил, что он пригодиться и вам.
                Читать дальше →
              • Шпаргалка по SOLID-принципам с примерами на PHP

                  Тема SOLID-принципов и в целом чистоты кода не раз поднималась на Хабре и, возможно, уже порядком изъезженная. Но тем не менее, не так давно мне приходилось проходить собеседования в одну интересную IT-компанию, где меня попросили рассказать о принципах SOLID с примерами и ситуациями, когда я не соблюл эти принципы и к чему это привело. И в тот момент я понял, что на каком-то подсознательном уровне я понимаю эти принципы и даже могут назвать их все, но привести лаконичные и понятные примеры для меня стало проблемой. Поэтому я и решил для себя самого и для сообщества обобщить информацию по SOLID-принципам для ещё лучшего её понимания. Статья должна быть полезной, для людей только знакомящихся с SOLID-принципами, также, как и для людей «съевших собаку» на SOLID-принципах.

                  Читать дальше →
                • Главные характеристики качественного кода

                  • Translation


                  Как часто вы поражаетесь, читая чужой код, и думаете «господи, ну и каша...». Скорее всего, достаточно часто. И можете ли вы быть уверенным, что никто не думал также когда читал ваш код? Другими словами, насколько вы уверены в чистоте своего кода? Можно быть уверенным только если полностью понимаешь, что значит чистый код.


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


                  1.Плохой код делает слишком много, чистый код сфокусирован


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


                  Но я бы не ограничивал определение классами. В свой последней статье Ральф Вестфал (Ralf Westphal) представил более широкое определение принципа единственной обязанности:


                  Функциональная единица на определенном уровне абстракции должна отвечать за один аспект требований системы. Аспект требований это признак или свойство требования, которое может изменяться независимо от других аспектов.
                  Читать дальше →
                • Изучаем OpenGL ES2 для Android Урок №4. Текстуры

                    Перед тем как начать

                    » Если вы новичок в OpenGL ES, рекомендую сначала изучить предыдущие 3 урока: раз / два / три
                    » Основы кода, используемого в этой статье, взяты отсюда и отсюда.

                    Результатом данного урока будет дельфин прыгающий над поверхностью моря.


                    Читать дальше →
                    • +16
                    • 13.9k
                    • 2
                  • 5 ошибок, которые мешают программисту построить карьеру

                      Сложна и непредсказуема карьерная лестница IT-шника. Иногда можно споткнуться и упасть только потому, что не поспеваешь за технологиями. Не будем впадать в панику, а будем учиться на ошибках других. Делимся.

                      Читать дальше →
                      • +6
                      • 14.3k
                      • 1
                    • Android Dev: продолжение подкастов о профессиональной разработке под Android

                        Привет, Хабр! В школах начинается новый учебный год, коллеги возвращаются из отпусков, а мы начинаем новый сезон наших подкастов о разработке под Android! Как известно, андроид разработчики делятся на две категории: кто слушает наш подкаст и кто о нем еще не слышал. Данная статья как раз для того, чтобы восполнить ваши пробелы непрослушанных выпусков и привлечь новых слушателей, с новыми комментариям к нашим обсуждениям. В новом сезоне мы снова окунемся с головой в большие темы, требующие детального разбора, но и не забудем держать слушателей в курсе последних новостей.

                        Но прежде, чем анонсировать темы предстоящих выпусков, мы пройдемся по прошлым четырнадцати, ведь многие из них до сих пор не теряют свою актуальность и рекомендованы к прослушиваю каждому, кто не безразличен к разработке приложений под Android.
                        Читать дальше →
                        • +16
                        • 12.2k
                        • 8
                      • Дорожная сеть OpenStreetMap

                          Один из главных параметров карты — это информативность. Грубо говоря, это то, сколько информации можно считать с карты своими глазами. На самом подробном масштабе всё выглядит просто: места на экране много и нужно рисовать всё, что интересно пользователю (есть у нас в файле данных). Хотя тут остаётся важная задача — определить, что же всё-таки ему интересно. На обзорных масштабах всё сложнее: данных слишком много и надо выбрать те, которые повысят информативность и наглядность карты. Одновременно с этим карту нельзя перегружать. Если отобразить всё, то она станет нечитаемой. А пригодных для отображения на обзорном масштабе без предварительной обработки видов интересных пользователю объектов практически нет!

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


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