<< Предыдущая | На главную | Следующая >>

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

Небольшое расследование на тему возникновения ошибки в процессе авторизации в tomcat:

"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 Ca
cheManager 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

На днях был озадачен в логе никому не нужным update. Hibernate почему-то обновлял запись пользователя при каждом обращении к его объекту.

Читать дальше ...

Ярлыки :

Asus EEE PC 901 - лучший нетбук администратора

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

Читать дальше ...

Ярлыки : , ,

Проблема с UDMA на ICH7 и CentOS 5

На одном из серверов столкнулся с чудной проблемой - SATA диски распознавались как IDE и отказывались работать на нормальной скорости через UDMA.

В результате непродолжительных боёв выяснилось, что просто необходимо в 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

Читать дальше ...

Ярлыки : , ,

Рекурсивная конвертация файлов с помощью iconv

How to recursive convert files with iconv to UTF-8

Задался сегодня задачей конвертации проекта в UTF-8. Изрядно порывшись в интернете нашёл тучу неработающих или криво работающих вариантов. В результате был рождён следующий гениальный скрипт под названием /usr/bin/fconv

Читать дальше ...

Ярлыки : , ,
<< Предыдущая | На главную | Следующая >>