• Практические задачи по Java — для курсов и прочих занятий

      Практические задачи по Java — для курсов и прочих занятий


      Несколько вводных слов


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

      Дело в том, что каждое моё занятие состоит из двух частей. На первой я выступаю в роли лектора — рассказываю с примерами кода о какой-то новой теме (классы, наследование, дженерики и так далее). Вторая часть — практическая. Очевидно, что нет смысла просто рассуждать о программировании, надо программировать. Приоритет на занятиях — решение задач, то есть программирование чего-то как-то. Программирование на занятиях отличается от программирования дома, так как на занятиях можно задать вопрос, показать код, получить быструю оценку кода, комментарии по улучшению, исправлению написанного. Очень легко было найти задачи для самых первых занятий. Задачи на циклы, условные операторы, и ООП (к примеру, написать класс «Собака» или класс «Вектор»). Сервисы вроде leetcode позволяют даже проверить правильность решения таких задач сразу, онлайн. Но какие задачи дать студентам на занятии, которое было посвящено коллекциям? Потокам? А аннотациям? За несколько лет я придумал, или переработал несколько таких задач, и эта статья, по сути, является сборником этих задач (к некоторым задачам прилагается решение).
      Читать дальше →
    • Cocos2d-x — разработка простой игры

      • Tutorial

      1. Вводная часть


      В этой статье речь пойдет о разработке прототипа игры под Android/Linux с помощью Cocos2d-x. Cocos2d-x это кросс-платформенный фреймворк для создания двумерных игр и других графических приложений. Он создан на основе cocos2d-iphone, но вместо Objective-C Cocos2d-x использует C++. Приложения могут быть запущены на платформах: iOS, Android, Windows Phone, OS X, Windows, Linux.
      Эта статья о разработке приложения под Android/Linux, платформа разработки — Ubuntu.
      К сожалению, Cocos IDE существует только под Window и Mac, а под Linux версии не предвидится, но так как я очень люблю Ubuntu и это та платформа, с которой я работаю каждый день, я использую для разработки Clion.
      Некоторые части этой статьи — перевод соответствующих частей документации (http://www.cocos2d-x.org/wiki).
      Статья ориентирована на тех, кто начинает свое знакомство с Cocos2d-x. В ней я расскажу о том, как создать самое простое приложение со спрайтами, сценами и как работать с акселерометром. Это может быть неким стартом, чтобы в будущем идти дальше, углубляясь в API Cocos2d-x.

      2. Требования


      Определим необходимый набор инструментов, который нам понадобится.
      Ubuntu 14.04 — платформа разработки
      Cocos2d-x v3.8.1 — https://cocos2d-x.org/download
      CMake 2.8+
      JDK 1.6+
      Android SDK
      Android NDK r9d+
      Apache Ant — для сборки Android-сборки
      Python 2.7.5
      Clion 1.1 — www.jetbrains.com/clion


      3. Cocos2d-x


      Cocos2d-x появился в 2010 году, это проект с открытым исходным кодом, распространяющейся под лицензией MIT. Cocos2d-x позволяет писать на таких языках как C++, Lua и Javascript. Cocos2d-x быстрый, простой и обладает большими возможностями. В настоящее время много игр, написанных с помощью этого фреймворка, находятся в топе AppStore и Google Play.
      «Большие ребята», такие как Zynga, Wooga, Glu, Big Fish Games, Konami используют Cocos2d-x для разработки игр.

      Тут я должен сделать маленькое отступление. Дело в том, что Cocos2d-x позволяет использовать C++ для написания кода, и все это будет собираться под Android и Linux. Если использовать Cocos2d-JS, то можно писать на Javascript. Тогда в случае сборки для на Linux/Ubuntu код будет транслироваться в C++, а затем компилироваться. Это влечет много разных проблем (усложняет работу со сторонними библиотеками, например). В случае же web будет выполнятся java-script (кстати, время сборки в этом случае равна нулю, что неплохо).
      Если же использовать Cocos2d-x, то под web это не работает, но под Linux и Android код компилируется напрямую. Для Android, конечно же, используется Android NDK.

      Читать дальше →
      • +15
      • 69,4k
      • 4
    • О производительности Android-приложений

        Введение


        Первое, что я хочу сказать: статья не претендует на сильно глубокий уровень, скорее я хочу рассказать о том, что производительность это не только «быстрее с NDK на С++» и «экономьте память, а то сборка мусора будет часто запускаться», а это целый комплекс мер, потому что проблемы с производительностью возникают не когда одна функция медленно работает, а в комплексе.
        Не было ли у вас ощущения, что приложение тормозит, а вы уже не знаете что делать — и память вроде не жрет, и профайлером уже посмотрели, а решения все нет. Если да, то эти заметки для вас.
        Понятия и термины я переводить не буду, так как я думаю что почти все разработчики их не переводят.
        Читать дальше →
      • Jasig CAS — сервер аутентификации

          Если Вы разрабатываете веб-приложения, наверняка вы сталкивались с задачей реализации single sign on. В этой небольшой статье я кратко опишу готовое решение от Jasig.

          Краткое описание


          Jasig CAS (Central Authentication Service) — это веб-приложение, написанное на java. Чтобы начать им пользоваться, почти ничего не надо делать. Нужно загрузить, настроить, собрать, развернуть. И настроить клиентов (сайты на которых мы делаем single sign on).
          Читать дальше →
          • +4
          • 21,4k
          • 3
        • Мониторинг (измерение) потребляемого траффика в Linux

            Однажды мне потребовалось измерить количество трафика, которое «пожирает» некоторое приложение. Один из способов такого измерения — это установить прокси. Но что, если не хочется ставить прокси-сервер?.. Мне вот не хотелось. В поисках других способов я сначала перерыл Хабр, потом интернет. Так как я в своё время потратил на это много времени, то сейчас я создаю эту заметку, чтобы у других такой проблемы не возникло.

            ВАЖНО:
            Этот метод работает, если мы знаем по какому адресу (адресам) обращается наше приложение, или же с какого/каких портов.
            Итак, пошаговая инструкция для чайников
          • Java сертификация. Подготовка к SCJP

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

              Уточнение


              Так как Sun'a больше нет, то и экзамена SCJP тоже нет. Теперь он значится так:
              1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam.
              прочитать об экзамене и посмотреть задачи
            • Классификация документов методом опорных векторов

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

              Классификация


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