• Структуры данных в картинках. ArrayList

      Приветствую вас, хабралюди!

      Взбрело мне в голову написать несколько статей, о том как реализованы некоторые структуры данных в Java. Надеюсь, статьи будут полезны визуалам (картинки наше всё), начинающим java-визуалам а также тем кто уже умеет писать new ArrayList(), но слабо представляет что же происходит внутри.



      Сегодня поговорим о ArrayList-ах

      ArrayList — реализует интерфейс List. Как известно, в Java массивы имеют фиксированную длину, и после того как массив создан, он не может расти или уменьшаться. ArrayList может менять свой размер во время исполнения программы, при этом не обязательно указывать размерность при создании объекта. Элементы ArrayList могут быть абсолютно любых типов в том числе и null.

      Поверить на слово
    • Обработка аннотаций в процессе компиляции

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

        Аннотации, как инструмент метапрограммирования появились вместе с релизом Java 5 в далеком 2004 году. Вместе с ними появился инструментарий Annotation Processing Tool, на смену которому пришла спецификация JSR 269 или Pluggable Annotation Processing API. Что интересно, этой спецификации без малого 10 лет, но свою популярность в Android разработке она начала обретать только сейчас.

        О возможностях, которые открывает эта спецификация мы поговорим чуть позже (будет мнооого кода), а сперва, не хотите ли поговорить о компиляции Java кода?
        Читать дальше →
      • «Галоп пикселя — часть первая» — базовые понятия, этапы взросления, прикладные упражнения

        • Tutorial


        «Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
        «Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
        «Галоп пикселя», часть III — Анимация (линк)
        «Галоп пикселя», часть IV — Анимация света и тени (линк)
        «Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

        Всем хорошо известно, как мейнстрим подстегивает появление публикаций, связанных с тем, что популярно «на этой неделе». Последние полгода я часто натыкался на статьи «знакомство с пиксель-артом». Начинались они, как правило, с перечисления возможностей определенного софта. Однако за вычетом вопроса выбора программы и беглого перечисления известных фактов ни на йоту не приближали читателя к пониманию того, как этот пиксель-арт готовить. Именно этим досадным упущением мне хотелось бы заняться на первых же страницах 2015-года.

        В данной публикации мы не рассматриваем программы, но копаем нечто большее. Сами пиксели. От истоков, начав с четырехцветной CGA-эры, вплоть до эпохи ренессанса. В публикации мы не рассматриваем игры, не поем дифирамбы художникам прошлого (разве что самую малость), занимаясь именно процессом создания простейшего пиксель-арта. Данный материал будет интересен начинающим артистам и интересующимся. Статья практически не содержит теории, нудных умозаключений и представляет сторонний взгляд на мир пиксель-арта со стороны некоего самоучки, который предпочел открыть каждую из Америк самостоятельно, не оглядываясь на официальных, общепризнанных и задокументированных Колумбов. Статья снабжена обильным количеством поясняющих иллюстраций, примеров, и советов.

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


        Лопатить пиксели
      • Dagger 2.11 & Android

        В данной статье рассматривается использование специализированного модуля Dagger 2 под android и подразумевается, что у вас есть наличие базовых знаний по Dagger 2.


        В Dagger 2.10 был представлен новый модуль специально для Android. Данный модуль поставляется как дополнение, состоящий из дополнительной библиотеки и компилятора.
        В версии 2.11 были некоторые небольшие изменения, в частности некоторые классы, были переименованы, поэтому будет использоваться именно эта версия.

        Читать дальше →
      • Dagger 2. Часть первая. Основы, создание графа зависимостей, Scopes

          Всем привет! В последнее время появилось много средств, библиотек, которые существенно облегчают написание кода под Android. Только успевай за всем следить и все пробовать. Одним из таких средств является библиотека Dagger 2.


          В сети уже много различного материала, посвященного данной библиотеке. Но когда я только начинал ознакамливаться с Dagger 2, читал статьи, смотрел доклады, я во всем этом находил один общий недостаток — мне, как человеку, не работавшему со Springом и прочими подобными фреймворками/библиотеками, было довольно сложно понять, откуда берутся зависимости, как они "провайдятся" и что вообще там происходит. На слушателей/читателей обычно сразу "вываливается" большое количество кода с новыми аннотациями. И это как-то работало. В итоге, после доклада/статьи в голове все никак не могло сложиться в единую понятную картину.


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


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

          Читать дальше →
        • Процедурные миры из простых тайлов

          • Translation
          image

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


          На изображении ниже показан набор тайлов (тайлсет), на основании которого сгенерирован мир из видео. Мир снабжён примечаниями, которые помогут представить его в настоящей среде.
          Читать дальше →
          • +27
          • 16.8k
          • 8
        • learnopengl. Урок 1.1 — OpenGL

          • Translation
          • Tutorial
          Здравствуйте. Несколько недель назад я начинал серию переводов статей по изучению OpenGL. Но на 4 статье один хабровчанин заметил, что мои переводы могут нарушать лицензию, по которой распространяются учебные материалы, предоставленные в исходной статье. И действительно, мои переводы нарушали лицензию. Для разрешения этой проблемы я обратился к авторам того набора уроков, но так и не смог добиться нормального ответа. По этой причине я связался с автором другого, не менее (а возможно даже и более) крутого, набора уроков по OpenGL: Joey de Vries. И он дал полное разрешение на перевод его набора уроков. Его уроки гораздо более обширные, чем прошлый набор, поэтому эти переводы растянутся на долго. И я обещаю, будет интересно. Заинтересовавшихся прошу под кат.

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

          На счет уроков по Vulkan: к сожалению мне тяжело сейчас написать уроки по данному API по причине скудной видеокарты на данный момент, которая просто не поддерживает Vulkan API, поэтому уроки по данному API будут только после обновления видеокарты.
          Читать дальше →
          • +39
          • 210k
          • 9
        • «Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

            «Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
            — к/ф «Трасса 60»



            Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

            Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

            Содержание


            Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
            Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
            Глава 3 What You Can't SayО чем вы не можете сказать.
            Глава 4 Good Bad AttitudeСлово «хакер».
            Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
            Глава 6 How to Make WealthКак стать богатым.
            Глава 7 Mind the GapОсторожно, разрыв.
            Глава 8 A Plan for SpamПлан для спама.
            Глава 9 Taste for MakersВкус — созидателям.
            Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
            Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
            Глава 12 Beating the AveragesLisp: побеждая посредственность.
            Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
            Глава 14 The Dream LanguageБыть Популярным, часть 2.
            Глава 15 Design and ResearchПроектирование и исследование.

            Под катом хронология переводов и благодарности.
            Читать дальше →
          • Мой топ-100 книг по Программированию, Компьютерам и Науке: часть 1

            • Translation
            Недавно сайт Fog Creek взял у меня интервью, и один из вопросов был связан с моими любимыми книгами по программированию, кодированию и разработке программ. Мне этот вопрос запомнился потому, что я давно себя считаю заядлым книжным ботаником. Книжный ботаник я потому, что безумно люблю книги о науке, компьютерах и программировании. Каждые несколько месяцев я уделяю день или два исследованию недавно изданной литературы и покупке наиболее понравившихся экземпляров. Я мог бы вечно разговаривать о своих любимых книгах. Ведь у меня их так много.

            Меня настолько заинтересовал вопрос о книгах, что я решил начать новую серию статей на своём сайте catonmat о моих топ-100 книгах о программировании, программном обеспечении, науке, физике, математике и компьютерах. В каждой статье я буду размещать по пять книг, ведь разбивать огромное задачи на маленькие подзадачи — это самый простой способ их решать (GTD — get things done).

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

            image
            Читать дальше →
          • Курс пиксель-арта

              Это перевод публикации «Les Forges Pixel Art Course».

              pdf на английском.

              Часть 1: Правильные инструменты
              Часть 2: Линии и кривые
              Часть 3: Перспективы
              Часть 4: Тень и свет
              Часть 5: Палитры цветов
              Часть 6: Сглаживание
              Часть 7: Текстуры и размытие
              Часть 8: Мир тайлов

              Предисловие


              Есть много определений пиксель-арта, но здесь мы будем использовать такое: изображение пиксель-арт, если оно создано целиком руками, и присутствует контроль над цветом и позицией каждого пиксела, который нарисован. Несомненно, в пиксель арте включение или использование кистей или инструментов размытия или машин деградации (degraded machines, не уверен), и других опций ПО, которые «современны», нами не используются (вообще-то put at our disposal значит «в нашем распоряжении», но по логике вроде правильнее так). Он ограничен инструментами такими как «карандаш» и «заливка».

              Тем не менее не скажешь, что пиксель-арт или не-пиксель-арт графика — более или менее красива. Справедливее сказать, что пиксель-арт другой, и он лучше подходит для игр стиля «ретро» (как Супер Нинтендо или Гейм Бой). Вы можете также комбинировать техники изученные здесь, с эффектами из не-пиксель-арта, для создания гибридного стиля.

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

                Приветствую всех! Решил поведать вам свою историю, возможно, кому-то это будет интересно. А если это кого-то вдохновит на подвиги – значит, я не зря взялся за эту статью.

                Коммерция


                Недавно стукнуло 3 года с того момента, как я стал профессиональным гейм-девелопером. Слово «профессиональный» здесь не в смысле «крутой разработчик», а в том плане, что это является моим единственным источником дохода.
                Итого, с 2009-го по 2011-й было разработано 7 игр. Количество геймплеев со всех игр стремится к 100 миллионам, а доходы с этих игр – к [вырезано цензурой]. Но об этом я сегодня писать не буду, ибо в этом мало романтики, и слишком много цифр. Сегодня речь пойдёт о том, что же предшествовало выбору профессии.
                Читать дальше →