Страницы

четверг, 23 августа 2012 г.

понедельник, 20 августа 2012 г.

Bombermen на Java: часть 1

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

среда, 27 июня 2012 г.

Переадресация с hello-page на default-servlet

На работе возникла задача.
Исходные данные:
Есть приложение, которое содержит несколько сервлетов, привязанных к своим адресам:
"/appName/servlet1/*"
"/appName/servlet2/*"
etc.
В корне приложения  "/appName/" лежит index.html - hello-страница, не содержащая ничего полезного.


Задача:
страницу приветствия нужно убрать, обращение к  "/appName/" должно переадресовываться на сервлет по-умолчанию, находящийся по адресу "/appName/config/"

пятница, 15 июня 2012 г.

Возможности Eclipse

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

среда, 13 июня 2012 г.

Обновление блога

Я не публиковал ничего в течении месяца, все интересное скидывал в черновики. Там уже накопилось заметок 20 и я буду постепенно формировать сырые мысли в пригодную для прочтения форму.

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

среда, 21 марта 2012 г.

Документация к проектам - формат Wiki

15 минут назад поставил MediaWiki на локальную машину. Домашняя wiki мне нужна не для праздного любопытства. Я давно искал инструмент для ведения документации к своим проектам  и Wiki прекрасно подходит для этого. Другие известные мне решения - txt/doc-документ,  записи на бумаге или в отдельном блокноте - меня не устраивали. Очень благодарен автору статьи Lone game developer за эту идею.

вторник, 13 марта 2012 г.

Обратно к 3D графике

Пересмотрел свое отношение к 3D графике. Раньше мне казалось, что это технология, от которой можно получить пользу только имея команду маститых художников, которые месяцами будут рисовать модели с кучей полигонов. Мое мнение изменилось после двух вещей:

среда, 7 марта 2012 г.

Пара хороших книг

Отличная книга по языку C (poor C, никакого C++):
http://publications.gbdirect.co.uk/c_book/
Я искал информацию об Input/Output на C - написано ровно столько, сколько нужно. Простая, лаконичная книга.

Вторая книга из другой области - она об искусстве вести переговоры:
"Договориться можно обо всем! Как добиваться максимума в любых переговорах"
Автор: Гэвин Кеннеди, как пишет Ozon "ведущий специалист в мире по переговорам". Верю, мне эта книга на многое просто открыла глаза.
Что интересно, в книге - рассказаны достаточно простые и понятные вещи, которые будут полезны отнюдь не только "большим боссам", но и любому человеку во множестве жизненных ситуаций. Рекомендую :)

четверг, 1 марта 2012 г.

DOU - Креш-тест резюме

На DOU сейчас проводиться интересный проект - "Креш-тест резюме". Можно прислать резюме и солидный человек разберет его плюсы и минусы. Результаты регулярно публикуются в открытом доступе.

понедельник, 27 февраля 2012 г.

Binding: Go & C

Я уже писал о своем интересе к Go. Чуть больше недели назад поставил Ubuntu (с помощью wubi), и начал разбираться как можно написать работающий Helloworld, в котором С-шная функция будет вызываться кодом написанным на Go.

пятница, 17 февраля 2012 г.

Bret Victor - Inventing on Principle

Прекрасное выступление. Мне очень понравились как прикладные примеры, показанные вначале (слыхал раньше об отладке переменных игры на лету, но не видел в действии), так и выводы в конце, предлагающие переосмыслить цели в жизни.
http://vimeo.com/36579366

четверг, 16 февраля 2012 г.

Конференции: Time Management, Agile

Я регистрировался на 2 онлайн-конференции, проводившиеся на сайте itbrunch.com.ua:
  • «В гостях у Agile практиков»
  • «Time Management»
Обе я пропустил :)
Но доклады, которые на них были записаны можно посмотреть в формате слайд-шоу (звук + слайды):
http://itbrunch.com.ua/schedule/

О логировании

Статья, после которой я научился эффективно использовать логи:
http://www.javacodegeeks.com/2011/01/10-tips-proper-application-logging.html

Отличное описано:
  • для каких случаев какие уровни нужно использовать;
  • что, как и когда выводить;
  • возможности паттернов логгирования.
Еще там упоминалась интересная библиотека:  Perf4J. Процитирую ее краткое описание:
Perf4J is to System.currentTimeMillis() as log4j is to System.out.println()
Нужно будет попробовать.

вторник, 14 февраля 2012 г.

NothingHandler, AnythingHandler

Хочу поделится анти-паттерном, которым я очень увлекался полгода назад. На днях для него придумалась классная формулировка: "Писать nothing_ и anything_ handler-ы".

четверг, 9 февраля 2012 г.

Go, OpenGL

Долго пытался собрать в кучу все, о чем хотелось рассказать - никак в цельный пост с единой темой не складывалось. Потому, просто напишу чем я занимался последнюю неделю:

понедельник, 30 января 2012 г.

Javascript: передать функцию с заданными значениями аргументов

Нужно передать функцию, которая должна быть выполнена с определенными аргументами? Оберни ее в анонимную функцию:

someGuiElement.onclick = alert("Hello world");
// будет сразу выполнена - и onclick будет присвоен результат выполнения  alert("Hello world") - т.е.  undefined, так как alert() ничего не возвращает


someGuiElement.onclick =  function()) {alert("Hello world") };
// а так все ок

среда, 25 января 2012 г.

Finite-state machine GUI с помощью JavaScript

В данный момент я делаю web-gui для одной мощной и полезной, но не очень дружелюбной к пользователю проги. Начинка уже более-менее нормально работает, дальше пришла пора улучшать интерфейс.

среда, 18 января 2012 г.

JUnit, форматирование логов

Захотелось немного порядка и эстетики в логах юнит-тестов - написал базовый для всех юнит-тестов  класс, который строит вот такие таблички:

+----------------------------------------+---------+
|      TEST                              | PASSED? |
+----------------------------------------+---------+
|RendererFilter.lastNthOccurence         | NO      |
+----------------------------------------+---------+
|RendererFilter.PathResolver             | YES     |
+----------------------------------------+---------+
Очень классно и удобно - всего две строки в каждом тесте, и все готово:
testNameIs("TestName"); //в начале
...
testPassed(); // в конце
На мой взгляд этого достаточно - по таблице можно быстро посмотреть что не прошло, и искать подробности ниже в логах Exception-ов JUnit-а.
Ссылка на исходник.

пятница, 13 января 2012 г.

Required Projects в Eclipse

Хочу дать пояснения еще одному тегу:
dev_tools я буду использовать как обобщение для всех возможных IDE, редакторов, профайлеров и прочих программ, которые хоть сами написать код и не напишут, но в работе могут помочь.

В Eclipse код к проекту можно подключить различными способами:
  1. добавить нужные пакеты к исходникам;
  2. добавить Jar;
  3. добавив Required Project.
Зачем нужен третий пункт?

вторник, 10 января 2012 г.

Когда тянет использовать instanseof ...

Строить логику на проверках к какому классу принадлежит обьект - плохо. Аргументы я не обдумывал, но в утверждении интуитивно уверен.

Один из вариантов "хорошего" подхода: Liskov substitution principle. Вкратце - все public методы должны быть еще в самом корне иерархии. Все что выше:
1) должно любым способом их реализовывать;
2) не должно добавлять новых открытых методов и полей.
В чем плюс - если в чьем-то коде есть метод doSomethingWith(SomeBaseClass param) - он  никогда не сломается, какой бы наследник SomeBaseClass ни передавался.

Но иногда надо, чтобы наследники таки отличались от базового класса. Как же тогда использовать эти возможности там, где мы получаем BaseClass?