StringTokenizer и csv
StringTokenizer обрабатывает несколько разделителей как один
Если нужно написать быструю обработку данных из csv файла, то первое что приходит на ум воспользоваться StringTokenizer. Но надо знать про одну особенность этого класса - несколько разделителей он воспринимает как один. А в случае CSV-файла это приведёт к ошибке обработки пустых полей, поэтому лучше воспользоваться следующей конструкцией:
String row_fields[] = row.split("\t");
int fieldcntr =0;
String field1 = row_fields[fieldcntr++];
String field2 = row_fields[fieldcntr++];
Если же csv файл содержит строки, которые могут содержать в себе разделитель, то проще всего воспользоваться сторонней библиотекой, например:
OpenCSV
Обработка csv файла в этом случае так же проста:
Сжатие изображений для ускорения сайта
Для ускорения работы сайта приходится сжимать изображения. Подробнее о командах сжатия изображений.
Борьба с кракозябрами в запросах
Настраивая работу тэгов в pebble столкнулся с проблемой кривой кодировки для русскоязычных тегов, т.е. русскоязычные теги в Pebble у меня не работали...
408 ошибка, tomcat и Microsoft Internet Explorer 6
"HTTP Status 408 - The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser"
Ошибка в ehcache "singleton CacheManager"
Иногда наблюдаю в логах непонятную активность с повторяющимися сообщениями от hibernate о ненайденых настройках кэша. Что самое страшное эти сообщения дублируются сотнями, что говорит о ненормальности работы сервера и кэша ehcache.
Вчера в логах встретилось следующее сообщение:
[TP-Processor3] WARN net.sf.ehcache.CacheManager - Creating a new instance of CacheManager using the diskStorePath "/usr/local/tomcat/temp" which is already use
d by an existing CacheManager.
The source of the configuration was classpath.
The diskStore path for this CacheManager will be set to /usr/local/tomcat/temp/e
hcache_auto_created_1249728036213.
To avoid this warning consider using the CacheManager factory methods to create
a singleton CacheManager or specifying a separate ehcache configuration (ehcache
.xml) for each CacheManager instance.
Погуглив на эту тему, выяснил что оказывается старый метод кэширования был зависим от приложения, что и создавало тучи папок "ehcache_auto_created_" во временной папке томката. Лекарство от недуга, уже придумано в EhCache 1.2, для этого правим hibernate.cfg.xml file:
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.SingletonEhCacheProvider
</property>
И получаем единый кэш на весь экземпляр Tomcat.
Поиск утечек памяти (memory leaks) в Tomcat 5
Пришлось разбираться комплексно со всей системой.
Развлекуха с Hibernate
Asus EEE PC 901 - лучший нетбук администратора
В обзоре вы сможете прочитать о лучшем, на мой взгляд, продукте из этой серии, который позволяет решать "на воздухе" повседневные задачи администратора веб- и прочих серверов и кроме этого обладает идеальным соотношением цена/количество возможностей.
Проблема с UDMA на ICH7 и CentOS 5
В результате непродолжительных боёв выяснилось, что просто необходимо в grub в menu.lst добавить опции: ide0=noprobe ide1=noprobe . Эти опции отключают модуль generic_ide который перехватывает перед загрузкой на себя диск и никаким другим образом их потом нормально работать не заставишь.
Кстати перед перезагрузкой желательно проверить fstab так как все диски поменяют свои буквы с /dev/hd* на /dev/sd*. В моём случае конфигурация была всего с одним жёстким диском и нигде имена устройств прописаны напрямую не были, поэтому править ничего не пришлось. Кстати диск был /dev/hdc а стал /dev/sda , это тоже стоит учесть при настройке.
Итоговое меню для загрузки:
CentOS (2.6.18-53.1.14.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-53.1.14.el5 ro root=LABEL=/ ide0=noprobe ide1=noprobe
initrd /initrd-2.6.18-53.1.14.el5.img