• Простейшая 3D игра на libGDX под Android в 200 строк кода

      Я преподаю в IT школе Samsung программирование под Android для школьников. Программа обучения охватывает множество разнообразных тем. В числе прочих предусмотрен один урок, знакомящий учеников с основами 3D-графики под Android. Стандартный учебный материал этого урока показался мне очень бесполезным по нескольким причинам:
      1. Используется голый OpenGL, а поскольку на практике в программировании игр чаще всего используются готовые движки, то это мало полезно для школьников в контексте их собственных проектов. Кто-то может возразить, что увидеть в деле чистый OpenGL полезно для понимания основ, но здесь вступает в дело 2-й недостаток.
      2. Урок очень непонятный. У типичного школьника, пусть и разбирающегося в программировании, нет достаточной базы, чтобы понимать многое из того, что описано в уроке (например матрицы многие пройдут только уже в ВУЗе).
      3. В конце урока мы приходим к результату — отрисовка 3-х треугольников средствами OpenGL. Это настолько далеко от реальной 3D-игры, что легко может отбить интерес у школьника.

      Поэтому я решил подготовить свой урок, описывающий основы использования libGDX под Android, а раз я все равно готовлю этот материал, заодно разместить его здесь — на хабре. В этом уроке мы сделаем наипростейшую 3D игру под Android, скриншот которой вы можете видеть во вступлении к статье. Итак, интересующиеся, добро пожаловать под кат.

      Читать дальше →
      • +24
      • 54.7k
      • 4
    • Включаем Samsung Multi Window в чужом приложении

      В новых смартфонах Samsung есть весьма интересная фича — Multi Windows.
      Она позволяет запускать одновременно два приложения в одном окне.
      К сожалению, кроме Samsung эту фичу пока что мало кто поддерживает.
      Но на самом деле её не так уж и сложно добавить к уже существующему приложению.
      Читать дальше →
      • +14
      • 21.5k
      • 5
    • Портинга и препроцессинга псто

        А многим ли из вас, уважаемые, не приходилось задумываться о том, как из одного набора исходников, без лишнего напряжения душевных сил собирать две независимых версии приложения — полную и не очень? Всем, поднявшим руку, скажу: ещё придётся, ой как придётся поломать голову над этим вопросом. Ну, или можно воспользоваться рецептом ниже.
        Читать дальше →
      • Большие изменения на Яндексе — платформа «Острова»: интерактивные ответы в результатах поиска

          Сегодня на конференции YaC/m мы объявили о том, что Яндекс планирует радикальное обновление вида результатов поиска. Во-первых, они меняются идеологически: теперь пользователь будет не просто находить ответы на свои запросы, но и сможет прямо на странице с выдачей решать свои задачи. А во-вторых, поисковые результаты обновятся визуально — дизайн станет частью нашего нового подхода в поиске. 


          Текст ниже написал Данила Ковчий, один из авторов платформы «Острова», о которой пойдёт речь дальше. Прямо сейчас он находится на сцене и не может запостить его сам. Дальше повествование пойдёт от его имени.

          Презентация Островов на Yet another Conference

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

          К делу


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

          Изменения в поиске делятся на два направления:
          — блочная выдача;
          — контекстно-зависимый интерфейс.
          Читать дальше →
        • Ресурсы, о которых должен знать каждый Android-разработчик

          • Translation
          Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

          В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

          Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
          Читать дальше →
        • Накладные расходы памяти у коллекций

            Мне было интересно, какие коллекции сколько съедают дополнительной памяти при хранении объектов. Я провёл замеры накладных расходов для популярных коллекций, предполагающих хранение однотипных элементов (то есть списки и множества) и свёл результаты на общий график. Вот картинка для 64-битной Hotspot JVM (Java 1.6):

            Читать дальше →
          • Браузер Yandex

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



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

              Читать дальше →
            • Маленькие хитрости Java

              Я уже достаточно много лет занимаюсь разработкой на java и повидал довольно много чужого кода. Как это не странно, но постоянно от одного проекта к другому я вижу одни и те же проблемы. Этот топик — попытка ликбеза в наиболее часто используемых конструкциях языка. Часть описанного — это довольно банальные вещи, тем не менее, как показывает мой опыт, все эти банальности до сих пор актуальны. Надеюсь, статья пригодится многим java программистам. Итак, поехали:

              new vs valueOf

              //медленно
              Integer i = new Integer(100);
              Long l = new Long(100);
              String s = new String("A");
              
              //быстро
              Integer i = Integer.valueOf(100);
              Long l = 100L;//это тоже самое что Long.valueOf(100L);
              String s = "A";


              Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах оболочках примитивных типов, кроме случаев, когда вам нужно конкретно выделить память под новое значение. Это связано с тем, что все они, кроме чисел с плавающей точкой, от Byte до Long имеют кеш. По умолчанию этот кеш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кеша. Значение из кеша достается в 3.5 раза быстрее чем при использовании конструктора + экономия памяти. Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной. В случае, если ваше приложение очень часто использует целые типы, можно увеличить кеш для Integer через системное свойство «java.lang.Integer.IntegerCache.high», а так же через параметр виртуальной машины -XX:AutoBoxCacheMax=<size>.
              Читать дальше →
            • Линейная алгебра для разработчиков игр

              • Translation
              • Tutorial
              Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
              Читать дальше →
            • Введение в Gestures

                или толкование жестов :)



                Сейчас мы на боевом примере поработаем с жестами в среде Android. Приложение будет клиентом сайта Astronomy Picture of the Day by NASA. На этом сайте ребята каждый день выкладывают какую-нибудь замечательную картинку, связанную с астрономией. Жестами мы будем ходить вперед/назад и вызывать диалог выбора даты. А чтобы было еще интересней — напишем его для Honeycomb.

                Статья состоит из двух частей: первая — покажет, как создавать жесты с помощью приложения Gestures Builder и выгружать их из эмулятора в отдельный бинарный файл. Во второй части, мы загрузим его в наше приложение и начнем использовать.
                Читать дальше →
                • +29
                • 14.2k
                • 4
              • Orchard CMS для разработчика — часть 2

                  image
                  В продолжении статьи о разработке для open-source CMS Orchard рассмотрим вывод контента на страницу, обновление модулей и концепцию виджетов. И закончим модуль, позволяющий добавить к сайту на Orchard список пунктов быстрого перехода для закрепленного сайта Internet Explorer 9.
                  Читать дальше →
                • RoboGuice или «Андроид подсел на инъекции»

                    imageRoboGuice — это библиотека, которая позволяет пользоваться всеми преимуществами Contexts and Dependency Injection при разработке приложений на Андроиде.
                    Как несложно догадаться, RoboGuice основан на Google Guice.
                    Сразу оговорюсь, что в качестве перевода слова «injection» я буду использовать слово «инъекция».

                    Зачем колоться?


                    Думаю, что у многих читателей сразу возникнет вопрос: «Зачем эти сложности с CDI на мобильной платформе? Наверняка это всё занимает много места и медленно работает.»
                    Попробую убедить таких читателей в обратном, а именно в том, что CDI на мобильной платформе очень даже жизнеспособен и существенно облегчает жизнь разработчикам.
                    Читать дальше →
                  • Анализ памяти для Android приложений

                    • Translation
                    В Dalvik есть сборщик мусора, но это не значит, что можно игнорировать управление памятью. Даже наоборот — нужно быть особенно внимательным при использовании памяти, которая, как известно, на мобильных устройствах ограничена. В этой статье будут рассмотрены инструменты, которые значительно помогают следить за тем, как приложение использует память.
                    Читать дальше →
                  • Пишем приложение под Android с поддержкой Cloud to Device Messaging (C2DM)



                    Здравствуйте, читатели Хабрахабр!

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

                    Хотя C2DM является одной из фундаментальных возможностей платформы Android, информации о нем в рунете мало. Попытка изменить данную ситуацию и является одной из задач этого поста.

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

                    Читать дальше →
                  • Спрайты изображений в ASP.NET легче легкого с помощью NuGet

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

                    Sprite and Image Optimization Preview 3

                    Начнем с того, что фреймворк Sprite and Image Optimization был обновлен до версии Preview 3. Этот фреймворк – пример того, что Microsoft может планировать для ASP.NET в будущем и вместе с тем, того, что вы можете попробовать использовать уже сегодня. И этот фреймворк стал еще проще, поскольку появился в NuGet.

                    ScreenClip(3)

                    Читать дальше →
                  • Массовая почтовая рассылка через Exim или как не попасть в спам

                    Жизнь была прекрасна и все было в этом мире хорошо, пока почта с моего сайта не стала активно посылаться в спам практически всеми крупными почтовыми серверами. Особенно усердствовал в этом Gmail. Частенько меня принимали за спамера в Yandex, реже в mail.ru и rambler.
                    image
                    Исходя из совокупности представленных факторов стало понятно, что надо что-то делать с настройками своего почтового сервера Exim. Посмотреть, как это было сделано, приглашаю под хабракат.
                    Читать дальше →
                  • Чек-лист вёрстки. Что можно отдавать клиенту, а что надо переделывать

                      Идеальная вёрсткаВы PM. Как узнать – готова ли вёрстка к реальному использованию?
                      Вы заказчик. Как убедиться, что работа выполнена качественно?
                      Как оценить качество вёрстки?

                      Когда я стал тим-лидом, а позже PM, передо мной стала задача проверять вёрстку наших проектов. Нужно было выработать формальные, легкопроверяемые критерии, соответствие кода которым, должно было давать некую гарантию, что не будет факапов и ни клиент, ни программеры не сказажут потом “WTF?”.

                      Клиенту неважно насколько красив ваш код, но ему важен результат. Качественный код нужен фирме, т.к. он надёжней и в будущем его будет легче поддерживать.

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

                      Итак что же это за список?

                      Краткая версия теперь доступна на html5checklist.com (github), где можно вносить pull-request'ы.

                      История обновлений:
                      • 2015/08/11: Актуализировал рекомендации по оптимизации скорости загрузки. Добавил требование поддержки Retina. Дополнил «19. Мелочи» требованием что изображения должны масштабироваться в зависимости от размера окна.
                      • 2015/08/10: актуализирован список исключений для CSSLint
                      • 2015/07/29: актуализирован пункт №13 «плохо»/«хорошо»
                      • 2015/04/08: добавлено требование использования препроцессоров и рекомендация использования систем сборки
                      • 2013/04/25: добавлены анализаторами качества кода: CSSLint и JSHint, указан сайт подбора css font stack (спасибо @fliptheweb), мелкие уточнения (работу интерактивных элементов страницы, что не пропадает фон на высоких разрешениях, не должно быть пустых презентационных блоков, при проверках контента — пробовать удалять заголовки, менять местами блоки)
                      • 2013/04/24: добавил пункт об минимизации каскада (БЭМ-техники, MCSS, SMACSS), необходимости вписывания в экран моб. устройства, заменил ссылку на проверочный текст отображения стандартного html на код с normalize.css, поправил пример где в рекомендации встречался длинный каскад, упомянул про Opera на Presto и новый уровень семантики — в именах классов BEM.
                      • 2012/04/12: отсортировал пункты проверки в порядке важности, выделил главные, дополнил статью подробностями
                      • 2011/12/07: дополнил согласно доклада на WSD Минск'2011.
                      • 2011/07/19: добавлено про повышение надёжности вёрстки благодаря html5-тэгам, про необходимость favicon/apple-touch-icon, отсутствие багов при ресайзе textarea
                      • 2011/06/15: добавил пояснения какие ошибки валидации допустимы, рассказал про отсутствие официальной кнопки «HTML5 Valid» и про официальное лого HTML5 на сайте.


                      Далее с примерами - как проверить html, даже если вы ничего не понимаете в вёрстке.
                    • Тестирование Android приложений

                      Введение


                      image
                      Я уверен, что современных программистов не нужно убеждать использовать юнит тесты. И если при разработке приложений под android, модули не связанные с ним, мы можем протестировать с помощью знакомого всем JUnit'а (не всегда без костылей правда), то как тестировать user interface и использующие его классы? В этом нам помогут инструменты фреймворка android.test.

                      В данной статье мы напишем небольшое android приложение и протестируем его. Для работы нам будут нужны установленные jdk, android sdk, Eclipse и ADT плагин.
                      Читать дальше →
                      • +39
                      • 53.4k
                      • 6
                    • Хабраиндекс для статей по программированию под Android

                        С чего начать?


                        Пишем своё первое приложение на Android
                        Пишем первое приложение для Android
                        Создаем файловый менеджер
                        Основы программирования под Android на примере игры Судоку
                        Создание приложения в стиле Android
                        Спокойной ночи!

                        Читать дальше →
                        • +188
                        • 92.6k
                        • 43