Хорошее подробное описание try-with-resources в Java 7:
Better Resource Management with Java SE 7: Beyond Syntactic Sugar
2011-09-08
2011-07-07
Интересное про память и Java
javaspecialists.eu/archive/Issue193.html
Вообще имеет смысл прочитать все его выпуски.
В частности же:
на 64-bit серверах с 64-bit java полезно попробовать опцию
-XX:+UseCompressedOops
64bit архитектура == 64bit указатели (vs 32bit = в 2 раза больше).
С этой опцией JVM указатели (не все) оптимизирует ==
- жрет меньше памяти
- меньше байт прокачивать по шинам.
Вообще имеет смысл прочитать все его выпуски.
В частности же:
на 64-bit серверах с 64-bit java полезно попробовать опцию
-XX:+UseCompressedOops
64bit архитектура == 64bit указатели (vs 32bit = в 2 раза больше).
С этой опцией JVM указатели (не все) оптимизирует ==
- жрет меньше памяти
- меньше байт прокачивать по шинам.
В Java7 будет сексуально выглядящий Javadoc
http://download.java.net/jdk7/docs/api/
Хотя лично мне нравится chm версия: упакованная, быстрая, со сквозным индексом и поиском.
Хотя лично мне нравится chm версия: упакованная, быстрая, со сквозным индексом и поиском.
Работа территориально распределенных коллективов
Для удаленной работы одного GMail/GTalk бывает недостаточно.
Skype ~ GTalk только без архива на сервере и более распространненый.
JIRA (и другие аналогичные продукты), Wiki, Jing - уже почти всё что нужно.
Недавно наткнулся на интересный продукт:
Team Viewer
совместная работа, презентации, удаленное управление, тех поддержка и тд
Изучаю...
Skype ~ GTalk только без архива на сервере и более распространненый.
JIRA (и другие аналогичные продукты), Wiki, Jing - уже почти всё что нужно.
Недавно наткнулся на интересный продукт:
Team Viewer
совместная работа, презентации, удаленное управление, тех поддержка и тд
Изучаю...
fun
Стараюсь всякий нетехнический бред писать в ЖЖ.
Но убогость ЖЖ просто доканывает.
Картинку по простому нельзя разместить. Обязательно ритуал вида "найдите три китайских девственницы, поститесь с ними три года, на четверый в самую большую луну пойдите на..."
В blogger просто зашел и разместил!
В блог добавляется preview, при клике на картинке открывается полная версия.
Манул IKEA по сборке Стоунхенджа и говнотвиттер:


PS: ну и немного о технике...
Эта гребля с ЖЖ напомнила мне о книге, которую я рекомендую прочитать всем.
Жизнь внутри пузыря.
Она как бы историческая и про интернет, но работая в большой "реальной" корпорации "я плакалъ".
Но убогость ЖЖ просто доканывает.
Картинку по простому нельзя разместить. Обязательно ритуал вида "найдите три китайских девственницы, поститесь с ними три года, на четверый в самую большую луну пойдите на..."
В blogger просто зашел и разместил!
В блог добавляется preview, при клике на картинке открывается полная версия.
Манул IKEA по сборке Стоунхенджа и говнотвиттер:


PS: ну и немного о технике...
Эта гребля с ЖЖ напомнила мне о книге, которую я рекомендую прочитать всем.
Жизнь внутри пузыря.
Она как бы историческая и про интернет, но работая в большой "реальной" корпорации "я плакалъ".
2011-07-04
Сравнение схем БД
Я работаю с MSSQL и MySQL и часто приходится сравнивать изменения в БД.
* Делаю так: скриптую БД с разбивкой всех объектов на индивидуальные файлы, после чего сравниваю, используя diff tool с возможностью сравнения директорий.
Очень просто и удобно.
Сама папка находится под DVCS Mercurial/HG т.е. можно смотреть историю изменений.
* Знаю про другой способ (работает в т.ч. между серверами разных версий т.к., например, скрипты MSSQL 2008 и 2000 довольно сильно отличаются).
Для MySQL: devart.com/ru/dbforge/mysql/studio
Для MSSQL: devart.com/ru/dbforge/sql/datacompare
Сам активно не пользовал, но один знакомый активно использует и очень хвалит.
* Есть что-то ещё?...
* Делаю так: скриптую БД с разбивкой всех объектов на индивидуальные файлы, после чего сравниваю, используя diff tool с возможностью сравнения директорий.
Очень просто и удобно.
Сама папка находится под DVCS Mercurial/HG т.е. можно смотреть историю изменений.
* Знаю про другой способ (работает в т.ч. между серверами разных версий т.к., например, скрипты MSSQL 2008 и 2000 довольно сильно отличаются).
Для MySQL: devart.com/ru/dbforge/mysql/studio
Для MSSQL: devart.com/ru/dbforge/sql/datacompare
Сам активно не пользовал, но один знакомый активно использует и очень хвалит.
* Есть что-то ещё?...
2011-05-15
Скриншоты и скринкасты - просто и удобно
Потребовалось отправить в Jetbrains screen-cast бага (что он существует ;-).
Провел небольшое исследование: чем быстро и просто записать короткий screen-cast (изображение части экрана, курсор, звук с микрофона).
Нашел несколько вариантов, в итоге выбрал jing
Просто (ничего не надо настраивать), удобно.
Делает помимо видео, фотки куска экрана (PrtScn и последующее вырезание в редакторе достало).
Думаю о дальнейшем использовании.
PS: для скриншотов есть OpenSource sf.net/projects/greenshot - сегодня рассылка SF-ная принесла
UPD2: http://camstudio.org/ OpenSource утилита для записи скринкастов
Провел небольшое исследование: чем быстро и просто записать короткий screen-cast (изображение части экрана, курсор, звук с микрофона).
Нашел несколько вариантов, в итоге выбрал jing
Просто (ничего не надо настраивать), удобно.
Делает помимо видео, фотки куска экрана (PrtScn и последующее вырезание в редакторе достало).
Думаю о дальнейшем использовании.
PS: для скриншотов есть OpenSource sf.net/projects/greenshot - сегодня рассылка SF-ная принесла
UPD2: http://camstudio.org/ OpenSource утилита для записи скринкастов
2011-04-05
2011: Сменил default кодировку консоли cmd.exe на cp1251
Как известно default кодировка/codepage windows консоли cmd.exe DOS 866.
На дворе 2011 и я решился сменить её на кодировку остальной системы cp1251.
Узнать какая кодировка выставлена, можно набрав в cmd.exe команду chcp.
Сменить "на лету" можно chcp 1251.
С UTF-8 chcp 65001, как мы уже выяснили не работает.
Чтобы сменить на постоянной основе требуется:
После чего потребуется перезапуск.
Найдено здесь.
Пора избавляться от старого барахла.
Если очень захочется запустить что-то старое DOS-овское "chcp 866" в помощь.
Замеченые минусы:
давно надо было у архиваторов выставить кодировку файлов UTF-8, пришлось некоторые архивы пережать.
На дворе 2011 и я решился сменить её на кодировку остальной системы cp1251.
Узнать какая кодировка выставлена, можно набрав в cmd.exe команду chcp.
Сменить "на лету" можно chcp 1251.
С UTF-8 chcp 65001, как мы уже выяснили не работает.
Чтобы сменить на постоянной основе требуется:
Start->Run->regedit HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage сменить кодировку в OEMCP с 866 на 1251
После чего потребуется перезапуск.
Найдено здесь.
Пора избавляться от старого барахла.
Если очень захочется запустить что-то старое DOS-овское "chcp 866" в помощь.
Замеченые минусы:
давно надо было у архиваторов выставить кодировку файлов UTF-8, пришлось некоторые архивы пережать.
2011-03-22
Mercurial - Hg
Начал читать http://hginit.com
Читая раздел для SVNщиков утер слезу - до чего верно пишет.
После этого полезно mercurial.selenic.com/guide
В UTF-8 не работает (глюк windows). Поэтому не chcp 65001 (меняет кодировку консоли на UTF-8), а chcp 1251 - ваш друг.
Для работы удобнее всего оказался cmd.exe /X /K chcp 1251 && cd "путь"
Отличная утилита HgWin, вызывается из командной строки (hgwin cmd) и открывает GUI окошко. Если сразу в GUI, то TortoiseHG вполне.
Отличная короткая статья об организации процесса подходящего и для моих проектов: http://stevelosh.com/blog/ 2010/05/mercurial-workflows- stable-default/
Относительно коммитов решил, что буду коммитить часто. Как ограничение "вечером не должно оставаться незакоммиченной работы".
Чтобы не зафлудить репозитарий сырым кодом буду применять следующее соглашение:
1. закомичиваемый код должен компилироваться (этого можно достичь даже вечером, пустые методы с todo написать и тд)
2. если тесты не прошли или нет времени на все тесты, то commit message должен начинаться с "?": ?Обзвон нескольких телефонов в списке
3. если тесты проходят и по ощущениям код хороший, то commit message не начинается с ? и ! т.е. любые другие символы
4. если код отлично прошел тесты на DEV SERVER и его можно пытаться выкладывать на PRODUCTION, то commit message начинается с !
5. на бой выкладываются только ревизии с commit message начинающиеся на !
6. после выкладки на бой (вроде полетело, чуток поглядели - летит) тегируем версию "YYYY-MM-DD major.minor примечания"
7. после некого интервала (ничего не вылезло, клиенты не звонят с воплями) мержим default в stable
x. если вдруг потом обнаружен баг, переключаемся на "YYYY-MM-DD
major.minor примечания" в stable, правим / build, test, func/sys test, deploy / tag "ymd major.minor примечания"2, merge это исправление в default
y. если хочется надолго всё сломать - локальный feature clone. Из которого потом pull, merge в local#default и rm -rf feature clone
PS1:
Мучился вопросом: как бранчи случайно названные одинаково разными программистами не пересекаются?
Ответ: пересекаются! Рекомендуют именовать приватные бранчи "программист-название бранча".
http://nubyonrails.com/ articles/five-features-from- mercurial-that-would-make-git- suck-less
Про бранчи vs клоны общий совет такой:
для собственных нужно лучше делать локально клоны.
Именованые бранчи для длительных линий разработки, типа есть три версии программы 1.0, 2.0, 3.0. Переход на новую версию стоит денег и не все пользователи переходят, сидят на 1.0 и 2.0, однако баги, возможно какие-то вкусняшки им давать необходимо (они купили). Дескать это хорошее применение для бранчей.
PS2:
Разумеется все теоретики запада против хранения генерируемых файлов в репозитарии - их можно моментально создать, любой версии, когда понадобятся (class, jar, war, ear, javadoc).
Сгенерированные исходники (Google Protobuf, из WSDL) - нельзя менять, но хранить в VCS можно. Для анализа, что менялось или "почему всё сломалось". Но менять нельзя!
Если в сгенерированные исходники надо внести изменения - советуют от них наследоваться, либо использовать композицию, тогда сгенерированный код может следовать за обновлениями, а не останется на века в той версии где подправили.
Читая раздел для SVNщиков утер слезу - до чего верно пишет.
После этого полезно mercurial.selenic.com/guide
В UTF-8 не работает (глюк windows). Поэтому не chcp 65001 (меняет кодировку консоли на UTF-8), а chcp 1251 - ваш друг.
Для работы удобнее всего оказался cmd.exe /X /K chcp 1251 && cd "путь"
Отличная утилита HgWin, вызывается из командной строки (hgwin cmd) и открывает GUI окошко. Если сразу в GUI, то TortoiseHG вполне.
Отличная короткая статья об организации процесса подходящего и для моих проектов: http://stevelosh.com/blog/
Относительно коммитов решил, что буду коммитить часто. Как ограничение "вечером не должно оставаться незакоммиченной работы".
Чтобы не зафлудить репозитарий сырым кодом буду применять следующее соглашение:
1. закомичиваемый код должен компилироваться (этого можно достичь даже вечером, пустые методы с todo написать и тд)
2. если тесты не прошли или нет времени на все тесты, то commit message должен начинаться с "?": ?Обзвон нескольких телефонов в списке
3. если тесты проходят и по ощущениям код хороший, то commit message не начинается с ? и ! т.е. любые другие символы
4. если код отлично прошел тесты на DEV SERVER и его можно пытаться выкладывать на PRODUCTION, то commit message начинается с !
5. на бой выкладываются только ревизии с commit message начинающиеся на !
6. после выкладки на бой (вроде полетело, чуток поглядели - летит) тегируем версию "YYYY-MM-DD major.minor примечания"
7. после некого интервала (ничего не вылезло, клиенты не звонят с воплями) мержим default в stable
x. если вдруг потом обнаружен баг, переключаемся на "YYYY-MM-DD
major.minor примечания" в stable, правим / build, test, func/sys test, deploy / tag "ymd major.minor примечания"2, merge это исправление в default
y. если хочется надолго всё сломать - локальный feature clone. Из которого потом pull, merge в local#default и rm -rf feature clone
PS1:
Мучился вопросом: как бранчи случайно названные одинаково разными программистами не пересекаются?
Ответ: пересекаются! Рекомендуют именовать приватные бранчи "программист-название бранча".
http://nubyonrails.com/
Про бранчи vs клоны общий совет такой:
для собственных нужно лучше делать локально клоны.
Именованые бранчи для длительных линий разработки, типа есть три версии программы 1.0, 2.0, 3.0. Переход на новую версию стоит денег и не все пользователи переходят, сидят на 1.0 и 2.0, однако баги, возможно какие-то вкусняшки им давать необходимо (они купили). Дескать это хорошее применение для бранчей.
PS2:
Разумеется все теоретики запада против хранения генерируемых файлов в репозитарии - их можно моментально создать, любой версии, когда понадобятся (class, jar, war, ear, javadoc).
Сгенерированные исходники (Google Protobuf, из WSDL) - нельзя менять, но хранить в VCS можно. Для анализа, что менялось или "почему всё сломалось". Но менять нельзя!
Если в сгенерированные исходники надо внести изменения - советуют от них наследоваться, либо использовать композицию, тогда сгенерированный код может следовать за обновлениями, а не останется на века в той версии где подправили.
2011-02-27
Java tips #1
* Использую следующие дополнительные параметры запуска javac в IDE:
можно использовать "облегченную" версию -Xlint:all -Xlint:-serial
Javac сообщает гораздо больше интересного (хинты) о коде.
Вообще у JVM просто огромное количество настроек...
А resource patterns у меня
* Jdbc batches действительно ускоряют массовые операции
How To Use JDBC addBatch Method with MySQL for Improved Performance
Правда у большинства JDBC Drivers (MySQL единственное известное мне исключение) нельзя в batch получить autoinc PK, т.е. они не подойдут, либо использовать ручную генерацию PK.
-J -ea -Xlint:all -Xlint:-serial -J -XX:+AggressiveOpts -J -XX:+UseFastAccessorMethods
можно использовать "облегченную" версию -Xlint:all -Xlint:-serial
Javac сообщает гораздо больше интересного (хинты) о коде.
Вообще у JVM просто огромное количество настроек...
А resource patterns у меня
?*.properties;?*.xml;?*.gif;?*.png;?*.jpeg;?*.jpg;?*.html;?*.htm;?*.dtd;?*.tld;?*.conf;?*.mp3;?*.wav;?*.mid;?*.midi;?*.ftl;?*.css;?*.js;?*.ico
* Jdbc batches действительно ускоряют массовые операции
How To Use JDBC addBatch Method with MySQL for Improved Performance
Правда у большинства JDBC Drivers (MySQL единственное известное мне исключение) нельзя в batch получить autoinc PK, т.е. они не подойдут, либо использовать ручную генерацию PK.
Подписаться на:
Сообщения (Atom)