Pull to refresh
36
0.1
Maxim Firsov @FirsofMaxim

Mobile developer

Send message

Типичные случаи утечки памяти в Java

Reading time4 min
Views74K
Большинству разработчиков известно, что сборщик мусора в Java не является универсальным механизмом, позволяющим программисту полностью забыть о правилах использования памяти и о том, в каких случаях осуществляется его работа. Ниже описаны типичные случаи утечки памяти в java-приложениях, встречающиеся повсеместно.
Итак, о чём должен помнить каждый java-программист.
Читать дальше →
Total votes 113: ↑104 and ↓9+95
Comments80

Игры, выжавшие из NES максимум (часть 1)

Reading time5 min
Views61K
Вспомишь игры, в которые заигрывался на NES (в народе известной как «Dendy»), и диву даешься, насколько, в сравнении с современностью, проста и даже примитивна была игротека тех времен. Однако, если хорошо покопаться в архивах картриджей, там можно найти на удивление много игр, обладающих отличной графикой и выдающимся звуком, которые никак не ожидаешь встретить на такой слабой консоли.

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

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

Тряхнуть стариной
Total votes 141: ↑131 and ↓10+121
Comments148

Маленькие хитрости Java. Часть 2

Reading time5 min
Views108K
В продолжение первой статьи я добавлю еще несколько штрихов о наиболее часто встречающихся ошибках и просто плохом коде, с которым часто приходится иметь дело при работе с уже написанными проектами. Я не выносил это в первую часть, так как эти ситуации встречаются гораздо реже, но поскольку первая часть вызвала много позитивных отзывов, решил продолжить. Спасибо всем комментаторам, отзывам и замечаниям. Я постараюсь избежать допущенных ошибок. Итак, продолжим:

Buffered Streams

//медленно
InputStream is = new FileInputStream(file);
int val;
while ((val = is.read()) != -1) {
}
//быстро
InputStream is = new BufferedInputStream(new FileInputStream(file));
int val;
while ((val = is.read()) != -1) {
}

Казалось бы — очевидная истина, неправда ли? Но как показал чужой код и опыт собеседования кандидатов, часть разработчиков определенно не понимает в чем преимущество буферизованных стримов. Кто до сих пор не разобрался — метод read() класса FileInputStream:
public native int read() throws IOException;

Согласитесь, каждый раз делать системный вызов, чтобы считать один байт несколько расточительно. Собственно для того, чтобы избежать этой проблемы и были созданы оболочки-буферы. Все что они делают — при первом вызове системного read() считывают несколько больше (в зависимости от указанного размера буфера, котрый по умолчанию равен 8 кб) и при следующем вызове read() считывают данные уже из буфера. Прирост производительности — на порядок. Системные вызовы, на самом деле, это не всегда плохо, например:
System.arraycopy(src, srcPos, dest, destPos, length);

В случае копированния массива — системный метод будет гораздо быстрей реализованного на java. И еще — считывайте данные порциями, а не по байтам, это тоже позволит прилично сэкономить.
Читать дальше →
Total votes 93: ↑84 and ↓9+75
Comments91

Приближенное решение алгебраических и трансцендентных уравнений

Reading time3 min
Views38K

Введение


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

Методы численного решения нелинейных уравнений


Задачу решения я разделил на 3 части:
  • Аналитический способ отделения корней
  • Численные методы уточнения корней
  • Программная реализация вычислительного процесса
Целью статьи, как я уже называл является разбор и анализ численных методов, по этому в этой статье аналитический способ отделения корней я рассматривать не буду.
Читать дальше →
Total votes 50: ↑29 and ↓21+8
Comments24

Почему ИТшнику стоит стать ИПшником и почему не стоит регистрировать ООО

Reading time7 min
Views86K
В этой статье даются ответы на нижеследующие вопросы, основываясь на личном опыте и опыте коллег.

1. Почему стоит начать работать «в белую»
2. Почему на начальном этапе ИП лучше ООО
3. Что делать, если партнёров несколько

Если вы – начинающий или уже опытный фрилансер и подумываете о работе «в белую», но ещё точно не определились с вопросами «Стоит ли оно того?» и «ИП или ООО?», вэлком
под кат
Total votes 371: ↑361 and ↓10+351
Comments183

Автоматическое увеличение номера сборки в Xcode

Reading time2 min
Views3.3K
Пользователи и тестировщики могут найти ошибки, которые вы наверняка уже исправили. Иногда пользователи используют старую версию приложения, иногда ваши исправления не так хороши, как вы думали. В обоих случаях небольшой уникальный номер версии, отображаемый в приложении, может сэкономить часы вашей работы.

Это можно сделать
Читать дальше →
Total votes 33: ↑30 and ↓3+27
Comments15

Микро-фреймворк Robotlegs. Обзор способов инжекта

Reading time5 min
Views6.4K
Введение

Robotlegs является MVC фреймворком для создания приложений на flash/flex. Данный фреймфорк базируется на библиотеке swiftsuspenders, в которой реализуются механизмы инжектирования с помощью метатега [Inject]. В гугле достаточно много материала по использованию данного фреймворка. Поэтому не буду останавливаться непосредственно на инжекте. Однако во всех статьях, которые мне попадались, описывался именно механизм инжекта, но объявлению инжектируемых классов отводилось слишком мало внимания. Именно способам объявления инжектируемых классов я бы и хотел посвятить данную статью.
Читать дальше →
Total votes 9: ↑7 and ↓2+5
Comments0

Как я заработал $200K на рынке образовательных приложений iOS

Reading time12 min
Views23K
Данную статью хочу приурочить к одновременно выходу второй версии моего приложения Word Wizard и взятию новой отметки в $200 000 в Apple AppStore. Далее я постараюсь поделиться своим опытом и мыслями об образовательном рынке, а также рассказать свою историю успеха. Надеюсь что эта информация будет полезна многим независимым разработчикам. Для тех же кто создает образовательные продукты на платформе iOS моя статья даст возможность оценить рынок приложений в этой сфере.



Собственно начну с продаж и рейтинга, а затем расскажу подробнее про мой личный опыт.
Итак, поехали ...
Total votes 227: ↑202 and ↓25+177
Comments64

Линейная алгебра для разработчиков игр

Reading time19 min
Views765K
Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
Читать дальше →
Total votes 314: ↑296 and ↓18+278
Comments61

Как знание MVP поможет сэкономить время и силы стартаперу?

Reading time3 min
Views2.6K
На мой взгляд, каждый стартапер должен знать и хотя бы частично использовать элементы MVP в своих проектах. В этой статье освещены основные моменты MVP, знание которых сэкономит вам время, нервы и деньги.

Что же такое MVP и чем он так хорошо? Ответ на этот вопрос ниже, а начнем с того, что многие из нас сталкиваются с такой дилеммой: «Есть отличная идея, но надо много времени и средств для реализации». Возможно, пару дней эта идея не покидает ваш разум, но потом вы понимаете своё бессилие, и на этом все заканчивается. А все могло быть по-другому…
Читать дальше →
Total votes 45: ↑35 and ↓10+25
Comments47

Шаблоны проектирования при разработке под Android. Часть 1 — Введение

Reading time4 min
Views28K
Писать программки для смартфонов — мое хобби. Все началось с того, что я купил свой первый смартфон Nokia E51 на Symbian и мне очень нравилось что его функционал можно было расширить через установку дополнительных программ.
Но однажды я не нашел необходимой программы и решил написать ее сам. Так и началось мое увлечение программами для смартфонов.

После того как глава Nokia заявил, что дни Symbian сочтены, я решил изучить платформу Android.

Для лучшего усвоения материала я решил написать полезную, хотя бы для себя, программку. Но написать ее не по детски, когда куски примитивного кода копируются из документации, а по взрослому с разработкой архитектуры, и использованием современных технологий программирования TDD, MVP и IoС.
Читать дальше →
Total votes 25: ↑16 and ↓9+7
Comments8

AppCode — Новая IDE для Objective-С от JetBrains

Reading time1 min
Views11K
Только что был анонсирован выпуск JetBrains AppCode, новой интегрированной среды разработки для Objective-C.

Как присуще всем IDE компании JetBrains наиболее сильные стороны AppCode: редактор кода с умным автодополнением, анализом кода проекта и подсказками по его улучшению, широкий спектр надежных рефакторингов, удобный отладчик с возможностью запуска кода на устройствах (iPhone или iPad), и удобная интеграция с системами контроля версий (SVN, Git, Mercurial, Perforce, и т.д.)

image

Конечно же присутствует интеграция с Xcode. Можно просто открыть проект Xcode, создать новый Xcode проект и пр. AppCode позволяет в любой момент переключаться в Xcode и обратно с сохранением всей структуры проекта. Для редактирования некоторых типов файлов, например xib, storyboard, автоматически используются инструменты Xcode. Более полный список функциональности можно посмотреть тут.

Продукт коммерческий, бесплатно можно пользоваться в течение 30 дней. Также можно получить бесплатную лицензию, если вы работаете над open-source проектом.

Фидбэк приветствуется!
Total votes 63: ↑55 and ↓8+47
Comments36

Пьеса «Разработка многопользовательской сетевой игры.» Часть 3: Клиент-серверное взаимодействие

Reading time7 min
Views15K


Часть 1: Архитектура
Часть 2: Протокол
Часть 4: Переходим в 3D

С третьей частью я немного задержался. Но как говорится лучше поздно чем никогда…

Итак, продолжаем разговор.

В третьей части нашей постановки мы реализуем протокол, напишем сервер и клиент которые будут взаимодействрвать по сети. И (ОМГ!) танки будут ездить!
Под катом то, что вы давно хотели, но боялись спросить…

Добро пожаловать в зрительный зал.
Total votes 72: ↑68 and ↓4+64
Comments41

Обзор нововведений в Xcode 4.2 для iOS-разработчика

Reading time4 min
Views4.4K
Одновременно с релизом iOS5 разработчики получили в свое распоряжение обновленный Xcode 4.2, в котором ожидаемо обнаружились некоторые новые «фичи». Под катом кратко рассмотрим основные нововведения, представленные в XCode 4.2.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments8

Простая GSM-сигнализация из подручных материалов

Reading time3 min
Views131K
На днях к нам обратился старый знакомый. Он живет в частном доме и пару раз к нему пытались зайти без приглашения неизвестные личности. Назрела необходимость в установке сигнализации. Ставить дом на пульт оказалось слишком дорого. Оптимальным решением показалось просто оповещать хозяина звонком на мобильник при сработке одного из датчиков движения.


Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments65

Вкусняшка при разработке Android-приложений в Eclipse

Reading time2 min
Views6.9K

Все уже в курсе о выходе Android 4.0 Ice Cream Sandwich. Одновременно обновился SDK и другие файлы для разработки под Android, в том числе ADT Plugin for Eclipse. Надеюсь, на Хабре появятся статьи о новшествах в 14-й версии Android Development Tools. Я расскажу лишь об одной новой возможности, которую мне лично не хватало.

Читать дальше →
Total votes 67: ↑53 and ↓14+39
Comments27

Пишем шейдер на AGAL

Reading time10 min
Views16K
Ни для кого уже не секрет, что Flash Player 11 имеет поддержку GPU ускорения графики. Новая версия вводит Molehill API, позволяя работать с видеокартой на достаточно низком уровне, что с одной стороны даёт полную волю фантазии, с другой требует более глубокого понимания принципов работы современной 3D графики.
Читать дальше →
Total votes 50: ↑47 and ↓3+44
Comments13

Общая статистика независимого разработчика — Johnny-K (продолжение)

Reading time6 min
Views4.7K

Когда-то давно, больше, чем полтора года назад, один хороший человек Вадим Старыгин взял и разместил мою статистику за 2009 год на Хабре. В 2009 году жизнь моя в качестве независимого разработчика игр не закончилась, с тех пор обросла новыми достижениями, о чем и поведаю в продолжении той статистики.
Читать дальше →
Total votes 96: ↑88 and ↓8+80
Comments30

ООП — Организация Освобождения Палестины

Reading time5 min
Views16K
Эта статья является изложением в письменном виде моего личного восприятия программирования и Объектно-ориентированного программирования в частности. Здесь собраны и душевные негодования, и переживания за программистов всего мира. Всё, конечно же, подкреплено исходным кодом.


Читать дальше →
Total votes 113: ↑76 and ↓37+39
Comments64

Information

Rating
2,527-th
Location
Снежинск (Челябинская обл.), Челябинская обл., Россия
Date of birth
Registered
Activity