
В кроссплатформенных приложениях чего только не встретишь. Или напишешь. Вот, намедни родили против шерсти очередного ежика наступили на заботливо разложенных грабель, на сей раз под маком.
Рубрика «java» - 300
О том как я имя файла из С++ в Java передавал
2012-07-19 в 17:10, admin, рубрики: c++, indesign, java, macosx, Программирование, метки: c++, indesign, java, macosxПутевые заметки, или вкус кофе для слонов
2012-07-19 в 6:00, admin, рубрики: java, postgresql, взаимодействие, десктопные приложения, разработка, метки: java, postgresql, взаимодействие, десктопные приложения 
Уже догадались, о чем будет статья?
Третий год занимаюсь разработкой крупной системы на Java с использованием СУБД PostgreSQL. Система десктопная, клиент-серверная. Опытного Senior-Java-Developer-а у нас нет, поэтому приходится думать самим. Думать, строить, ломать, строить заново, опять ломать…
За время работы накопился некоторый опыт как по организации непосредственно работы с БД, так и по взаимоувязыванию этих платформ, о котором и хочу рассказать в этой статье.
Опишу выборочно некоторые вопросы, с которыми мы столкнулись при разработке и которые решили.
Читать полностью »
Как я вставлял Java 7 в работающее приложение, и что пришлось изобрести для С runtime
2012-07-18 в 20:39, admin, рубрики: c++, java, jni, windows, Программирование, метки: c++, java, jni, windows 
Однажды, в студеную зимнюю пору, в одно старое приложение на С++, успешно работавшее до этого годами, пришлось вставить новый Java runtime 7 вместо отлично работавшего Java 6. Ничто не предвещало, и вдруг.
Код в общем-то очевиден и прост — немного JNI, и вот он — больной зуб. Приведу код только для Windows, т.к. чудеса эквилибристики под маком не потребовались.
«Разбор полетов» — Episode 23 — И ты, Брут?
2012-07-17 в 16:42, admin, рубрики: Google, interview, java, leveldb, подкасты, разбор-полетов, метки: Google, interview, java, leveldb, разбор-полетов 
В очередном выпуске правильного подкаста главного зачинателя заменил другой популярный подкастер!Читать полностью »
Физика Robocode
2012-07-17 в 10:25, admin, рубрики: game development, java, Robocode, обучение, Спортивное программирование, метки: Robocode, обучение Данный материал изначально был подготовлен в качестве раздела статьи “Первые шаги в Robocode”, но я решил вынести его, т.к. он значительно увеличивал размер и без того большой первоначальной статьи и не является базовым и необходимым для осуществления первого шага. Если вы сразу заинтересовались вторым шагом или постепенно доросли до него, то прошу под кат.
Читать полностью »
Первые шаги в Robocode
2012-07-17 в 9:53, admin, рубрики: game development, java, Robocode, введение, Спортивное программирование, метки: Robocode, tutorial, введениеЯ пишу эту статью по просьбам в комментариях к статье “Как я стал чемпионом Robocode” и продолжая начатое в ней дело по привлечению внимания к Robocode русскоговорящих разработчиков. Robocode — это игра для программистов, в которой задача заключается в разработке системы управления танком. Для затравки приведу несколько роликов, чтобы показать о чём вообще пойдёт разговор:
ZooKeeper или пишем сервис распределенных блокировок
2012-07-17 в 0:36, admin, рубрики: java, nosql, zookeeper, высокая производительность, метки: zookeeperdisclaimer Так получилось, что последний месяц я разбираюсь с ZooKeeper, и у меня возникло желание систематизировать то, что я узнал, собственно пост об этом, а не о сервисе блокировок, как можно было подумать исходя из названия. Поехали!
При переходе от многопоточного программирования к программированию распределенных систем многие стандартные техники перестают работать. Одной из таких техник являются блокировки (synchronized), так как область их действия ограничена одним процессом, следовательно, они не только не работают на разных узлах распределенной системы, но так же не между разными экземплярами приложения на одной машине; получается, что нужен отдельный механизм для блокировок.
От распределенного сервиса блокировок разумно требовать:
- работоспособность в условиях моргания сети (первое правило распределенных систем —
никому не говорить о распределенных системахсеть ненадежна) - отсутствие единой точки отказа
Создать подобный сервис нам поможет ZooKeeper
В википедии написано, что ZooKeeper — распределенный сервис конфигурирования и синхронизации, не знаю как вам, но мне данное определение мало что раскрывает. Оглядываясь на свой опыт, могу дать альтернативное определение ZooKeeper, это распределенное key/value хранилище со следующими свойствами:
- пространство ключей образует дерево (иерархию подобную файловой системе)
- значения могут содержаться в любом узле иерархии, а не только в листьях (как если бы файлы одновременно были бы и каталогами), узел иерархии называется znode
- между клиентом и сервером двунаправленная связь, следовательно, клиент может подписываться как изменение конкретного значения или части иерархии
- возможно создать временную пару ключ/значение, которая существует, пока клиент её создавший подключен к кластеру
- все данные должны помещаться в память
- устойчивость к смерти некритического кол-ва узлов кластера
Обзор зарплат программистов Java/C++/C#/Delphi
2012-07-16 в 8:07, admin, рубрики: Delphi, java, salary, survey, Блог компании IT-Доминанта, вакансии, зарплаты, исследование, кадры, обзор, С++, метки: c++, Delphi, java, salary, survey, вакансии, зарплаты, исследование, кадры, обзор, С++ А мы (мы — это рекрутинговая компания IT-Доминанта), продолжаем публиковать результаты нашего исследования рынка заработных плат в IT индустрии.
Очередной пост мы решили посвятить:
- Java программистам
- С++ программистам
- C# программист
- Delphi программистам
Как я стал чемпионом Robocode
2012-07-13 в 10:52, admin, рубрики: game development, java, Robocode, истории успеха, метки: Robocode Я — Jdev, автор робота Tomcat, который в ноябре/декабре 2011 года был Королём Премьер Лиги общего зачёта Robocode (пруф) без единого поражения, сейчас занимает 3-е место из 911 в процентном зачёте и является героем моего повествования. Эту статью я решил написать для привлечения к этой игре внимания соотечественников, потому как одному защищать честь Российского флага становится уже тяжело (не считая двух моих роботов, лучший русский робот занимет 142-ое место). Рассказ я решил построить в виде журнала.
Читать полностью »
Тонны мусора и минимум полезной работы или скроллинг в Idea
2012-07-12 в 15:27, admin, рубрики: idea, java, метки: ideaСовсем недавно, перейдя на новый проект, я решил для разнообразия также перейти с Eclipse на Idea. С идеей у меня уже был опыт еще с 6-й версии, она мне нравилась, но проблем у нее было достаточно много. Тогда я отказался от нее в виду периодических глюков при долгой работе. Увидев, что уже на дворе 11-я версия я обрадовался и решил опять попытать счастья, так как по интерфейсу идея для меня гораздо приятней…
Около месяца назад заметил, что при активной разработке, когда выделенные под кучу 768мб памяти заполнены под 80%, любое действие, вроде движения мышкой, переключения фокуса, просто прокрутка колесом мышки или непосредственно скроллом в окне вызывает большое потребление памяти и оставшиеся 20% памяти съедаются за несколько секунд работы. После чего, естественно, про комфортную работу можно забыть и приходится перегружать среду в виду постоянного срабатывания сборщика. Сегодня эта ситуация меня окончательно достала и я решил узнать — в чем же собственно проблема?
Интуитивно я понимал, что вероятней всего каждое движение мышки и любое действие вроде прокрутки генерирует определенные события, которые потом обрабатываются, но ТАК МНОГО этих событий я не ожидал. Для затравки — 2 скриншота потребления памяти при движении мыши в окне редактора и скроллинге внутри открытого класса на 1000 строк:
Движение: 
Скроллинг: 
Обычная прокрутка в окне редактирования кода в пике съедает почти 100мб памяти за несколько секунд… Любое движение мыши генерирует объектов на десятки мегабайт… Единственный позитивный момент во всем этом, что все эти объекты потом собираются.

