понедельник, 24 октября 2011 г.
Как в java swing программно установить фокус (focus) на некотором компоненте
Для программной установки фокуса на компоненте swing (например, текстовом поле JTextField) рекомендуется использовать функцию Component.requestFocusInWindow().
суббота, 17 сентября 2011 г.
Создание zip архивов на java
Недавно столкнулся с необходимостью создания резервных копий определенных файлов в приложении на java, резервные копии чтобы меньше занимали место было решено сжимать в zip архивы.
Для работы с zip архивами в java существует стандартный пакет java.util.zip, с использованием которого также можно запаковывать и распаковывать архивы формата gzip.
Ниже приведен исходный код метода для архивирования директории со всем её содержимым
Для работы с zip архивами в java существует стандартный пакет java.util.zip, с использованием которого также можно запаковывать и распаковывать архивы формата gzip.
Ниже приведен исходный код метода для архивирования директории со всем её содержимым
private static void directoryToZip(File directory, File zipFile) throws IOException {
URI base = directory.toURI();
Deque queue = new LinkedList();
queue.push(directory);
OutputStream out = new FileOutputStream(zipFile);
Closeable res = out;
try {
ZipOutputStream zout = new ZipOutputStream(out);
res = zout;
while (!queue.isEmpty()) {
directory = queue.pop();
for (File child : directory.listFiles()) {
String name = base.relativize(child.toURI()).getPath();
if (child.isDirectory()) {
queue.push(child);
name = name.endsWith("/") ? name : name + "/";
zout.putNextEntry(new ZipEntry(name));
} else {
zout.putNextEntry(new ZipEntry(name));
InputStream in = new FileInputStream(child);
try {
byte[] buffer = new byte[1024];
while (true) {
int readCount = in.read(buffer);
if (readCount < 0) {
break;
}
zout.write(buffer, 0, readCount);
}
} finally {
in.close();
}
zout.closeEntry();
}
}
}
} finally {
res.close();
}
}
суббота, 10 сентября 2011 г.
Как в java проверить наличие соединения с интернетом
Один из способов проверить наличие соединения с интернетом - просто протестировать загружается ли некоторые сайты или нет. Для проверки лучше всего использовать крупные сайты, про которые известно, что крайне маловероятно они в какой то момент станут недоступны, например google.com, ya.ru. Либо проверять последовательно доступность нескольких сайтов - если хоть один из них доступен - значит соединение с интернетом присутствует.
Ниже представлена функция проверяющая наличие соединения с интернетом, путем проверки доступности сайта ya.ru.
Ниже представлена функция проверяющая наличие соединения с интернетом, путем проверки доступности сайта ya.ru.
private static boolean checkInternetConnection() {
Boolean result = false;
HttpURLConnection con = null;
try {
// HttpURLConnection.setFollowRedirects(false);
// HttpURLConnection.setInstanceFollowRedirects(false)
con = (HttpURLConnection) new URL("https://ya.ru").openConnection();
con.setRequestMethod("HEAD");
result = (con.getResponseCode() == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (con != null) {
try {
con.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
return result;
}
четверг, 7 июля 2011 г.
Как можно проверить является ли строка числом на java?
Этот вопрос возникает наверное у каждого начинающего (и не очень) программиста на java. Есть несколько способов выполнить вышеописанную задачу.
Способ первый - использование метода Integer.parseInt(String string).
Способ второй - использование регулярных выражений.
Этот метод выполняется примерно с одинаковой скоростью вне зависимости от того является ли строка числом.
Способ третий - проверка по очереди каждого символа в строке.
При тестировании данный метод показал на удивление хорошие результаты - более чем в 3 раза быстрее, чем самый быстрый случай для первого и второго метода.
Третий метод и второй для преобрахования строк не подходят, в отличие от первого (при небольшой доработке).
Поэтому если задача стоит только в определении является ли строка числом - то лучше всего подойдет именно третий метод, если же помимо прочего ещё и необходимо преобразовать строку в число то лучше воспользоваться 1 методом, немного видоизменив его.
Способ первый - использование метода Integer.parseInt(String string).
public boolean checkString(String string) {
try {
Integer.parseInt(string);
} catch (Exception e) {
return false;
}
return true;
}
Этот способ очень быстро выполняется если строка является числом (в 5-10 раз быстрее, чем способ с использованием регулярных выражений), и очень долго - если строка числом не является (примерно в 1,5 раз дольше, чем способ с использованием регулярных выражений). Способ второй - использование регулярных выражений.
public boolean checkString(String string) {
if (string == null) return false;
return string.matches("^-?\\d+$");
}
Этот метод выполняется примерно с одинаковой скоростью вне зависимости от того является ли строка числом.
Способ третий - проверка по очереди каждого символа в строке.
public boolean checkString(String string) {
if (string == null || string.length() == 0) return false;
int i = 0;
if (string.charAt(0) == '-') {
if (string.length() == 1) {
return false;
}
i = 1;
}
char c;
for (; i < string.length(); i++) {
c = string.charAt(i);
if (!(c >= '0' && c <= '9')) {
return false;
}
}
return true;
}
При тестировании данный метод показал на удивление хорошие результаты - более чем в 3 раза быстрее, чем самый быстрый случай для первого и второго метода.
Третий метод и второй для преобрахования строк не подходят, в отличие от первого (при небольшой доработке).
Поэтому если задача стоит только в определении является ли строка числом - то лучше всего подойдет именно третий метод, если же помимо прочего ещё и необходимо преобразовать строку в число то лучше воспользоваться 1 методом, немного видоизменив его.
четверг, 30 июня 2011 г.
Как удалить вирус GuardGuard.exe
Для начала что делает вирус GuardGuard.exe :
Алгоритм лечения от заразы:
- создает TCP порты и соединяется с другими зараженными компьютерами.
- создает файлы в папках временных файлов (Temp).
- исполняется также из папок временных файлов.
- перехватывает процессы.
Алгоритм лечения от заразы:
- Отключаем восстановление системы (желательно, но не обязательно).
- Перегружаем в безопасном режиме (при загрузке Windows нажимаем F8 и выбираем пункт безопасный режим).
- Ищем на диске поиском guardguard.exe. Удаляем. Обычно это временная папка (C:\Windows\Temp), заодно оттуда можно удалить все остальное.
- Запускаем regedit.exe (Пуск -> Выполнить -> regedit).
- Ищем "guardguard" и удаляем все ключи с этой строкой.
- Перегружаем компьютер и пытаемся работать.
- Не забудьте включить "Восстановление системы" (если отключали).
воскресенье, 5 июня 2011 г.
#E154. Ошибка установщика классов (Class installer failed). Ошибка 2: Не удается найти указанный файл.
На днях после обновления файрвола столкнулся со странным глюком. Не работала ни одна сетевая карта, а при установке драйверов на них в лог записывалоь сообщение:
#E154. Ошибка установщика классов (Class installer failed). Ошибка 2: Не удается найти указанный файл.
На просторах интернета нашел простое решение этой проблемы.
Итак, по шагам:
1. Убиваем все сетевухи (это для удобства - можно и не удалять)
2. Сносим в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network параметр CONFIG
3. Перезагружаем комп
4. Сетевухи автоматически устанавливаются - всё работает
#E154. Ошибка установщика классов (Class installer failed). Ошибка 2: Не удается найти указанный файл.
На просторах интернета нашел простое решение этой проблемы.
Итак, по шагам:
1. Убиваем все сетевухи (это для удобства - можно и не удалять)
2. Сносим в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network параметр CONFIG
3. Перезагружаем комп
4. Сетевухи автоматически устанавливаются - всё работает
понедельник, 16 мая 2011 г.
Как сохранить файл установки приложения из магазина Nokia OVI прямо на ПК
1. Необходима регистрация непосредственно в магазине. Войдите в магазин и выберете свой телефон
2. Перейдите на страницу приложения, которое хотите загрузить
3. Нажмите Отпр. другу
4. В адресной строке браузера "send-to-freind" замените на "download" и нажмите Enter
5. Появится окно с выбором места сохранения файла. Сохраните файл
6. Используя notepad ++ откройте сохраненный файл
7. Удалите 4 предложения в самом верху, включая пробелы
8. Сохраните файл
9. Измените расширения файла с sis.dm на sis
10. Установите приложение на свой мобильный
2. Перейдите на страницу приложения, которое хотите загрузить
3. Нажмите Отпр. другу
4. В адресной строке браузера "send-to-freind" замените на "download" и нажмите Enter
5. Появится окно с выбором места сохранения файла. Сохраните файл
6. Используя notepad ++ откройте сохраненный файл
7. Удалите 4 предложения в самом верху, включая пробелы
8. Сохраните файл
9. Измените расширения файла с sis.dm на sis
10. Установите приложение на свой мобильный
Подписаться на:
Сообщения (Atom)
Ярлыки
java
(31)
оптимизация
(7)
CPanel
(5)
svn
(5)
windows xp
(5)
ошибка
(5)
свой сервер
(5)
файлы и папки
(5)
gui
(4)
регулярные выражения
(4)
jacoco
(3)
redmine
(3)
windows
(3)
автоматизация
(3)
защита данных
(3)
резервное копирование
(3)
сервер
(3)
JavaScript
(2)
Oracle SQL
(2)
adsl модем
(2)
apache maven
(2)
apache tomcat
(2)
coverage
(2)
dropbox
(2)
excel
(2)
firewall
(2)
netbeans
(2)
office 2007
(2)
samsung
(2)
system tray (системный трей)
(2)
xerox
(2)
вирусы
(2)
принтер
(2)
сериализация
(2)
удаленный рабочий стол
(2)
HTML
(1)
JFileChooser
(1)
MySQL
(1)
Nokia
(1)
Ovi
(1)
P660R-T1
(1)
WakeOnLan
(1)
blogger.com
(1)
ctfmon.exe
(1)
email
(1)
flash память
(1)
ftp
(1)
integration testing
(1)
ip
(1)
jQuery
(1)
jvisualWm
(1)
log4j
(1)
look and feel
(1)
myBatis
(1)
php
(1)
serialVersionUID
(1)
skype
(1)
smtp
(1)
ssh
(1)
swing
(1)
torrents
(1)
unit-testing
(1)
unix
(1)
vpn
(1)
windows 7
(1)
xStarter
(1)
zip
(1)
безопасность
(1)
вход в систему
(1)
дизайн
(1)
документация
(1)
заправка
(1)
интернет
(1)
логирование
(1)
мышь
(1)
патч
(1)
перенос
(1)
печать
(1)
плагины
(1)
почтовые сообщения
(1)
программирование
(1)
процессы
(1)
прошивка
(1)
сеть
(1)
сеть. ошибка
(1)
скрытые файлы
(1)
списки
(1)
фильтрация
(1)
фокус
(1)
часовые пояса
(1)
шифрование
(1)
экран
(1)