TabunStatusFetcher, или теперь никто не придёт незамеченым
Мне внезапно понадобилось поймать <insert_name_here> в Табуне, а обновлять страницу… в конце концов, я программист.
Посему навалял такую вещь:

Q: Что оно вообще делает?
A: Постоянно проверяет заданный список пользователей, если кто-нибудь пришел — оповещает сигналом.
Q: Как её включить?
A: Открываем консоль, набираем java -jar путь_к_файлу, жмём enter.
Q: Можно ли добавить сразу несколько пользователей?
A: Угу, через запятую.
Q: Где звуковые оповещения!? Мне что, каждые пять секунд смотреть в окошко?
A: Поставь около jar-а какой-нибудь wav-звук (например, этот), переименованный в «alarm». Он и будет оповещением.

Версия для Gnome с поддержкой оповещений:
Посему навалял такую вещь:

QA:
Q: Что оно вообще делает?
A: Постоянно проверяет заданный список пользователей, если кто-нибудь пришел — оповещает сигналом.
Q: Как её включить?
A: Открываем консоль, набираем java -jar путь_к_файлу, жмём enter.
Q: Можно ли добавить сразу несколько пользователей?
A: Угу, через запятую.
Q: Где звуковые оповещения!? Мне что, каждые пять секунд смотреть в окошко?
A: Поставь около jar-а какой-нибудь wav-звук (например, этот), переименованный в «alarm». Он и будет оповещением.
Версия для Gnome с поддержкой оповещений:
70 комментариев
похоже тег немного недостоверен.
Да и я сам не против глянуть.
Спойлер
КодURL targetURL = new URL(«tabun.everypony.ru/profile/Revizor/»);
String tabun = «tabun.everypony.ru»;
HttpClient client = new DefaultHttpClient();
HttpHost host = new HttpHost(tabun, 80);
HttpResponse resp;
HttpGet get = new HttpGet(targetURL.toURI());
get.addHeader(new BasicHeader(«Host», tabun));
get.addHeader(new BasicHeader(«Connection», «keep-alive»));
get.addHeader(new BasicHeader(«Accept-Encoding», «gzip»));
resp = client.execute(host, get);
Header[] headers = resp.getAllHeaders();
for (Header header: headers) {
System.out.println(header.getName()+":"+header.getValue());
}
Scanner scaner = new Scanner(resp.getEntity().getContent(), «utf-8»);
scaner.useDelimiter("\\A");
while (scaner.hasNext()) {
System.out.println(scaner.next());
}
(Правда тут я использую обычный URLConnection. Но результат от этого не меняется :) )
Для варианта с HttpResponse — org.apache.http.conn.EofSensorInputStream
И это притом, что для других сайтов Accept-Encoding: gzip прекрасно работает. Хотя, опять же, не для всех.
BasicHttpRequest request; BufferedReader reader; HttpResponse response; InputStream input; URL url; try { request = new BasicHttpRequest(); url = new URL("http://tabun.everypony.me/profile/Revizor"); response = request.doGetRequest(url); for (Object key : response.getHeaders().getHeaders().keySet()) { System.out.println(key + ": " + response.getHeaders().getHeaders().get(key)); } reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(response.getInputStream()))); String line = ""; String page = ""; while ((line = reader.readLine()) != null) page += line + "\n"; System.out.println(page); } catch (IOException e) { e.printStackTrace(); }:)
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
Но как от версии Java зависит отправляемая на сервер и принимаемая информация? Запрос уходит нормально, я в этом уверен, на других серверах он работает, это тоже проверено. Конечно, в спецификации написано, что сервер сам решает, сжимать или не сжимать ответ при запросе с Accept-Encoding, но тогда я не понимаю, почему именно мне Табун сжимать отказывается. При том я побовал и полностью дублировать запрос своего браузера, только с Accept-Encoding, и тоже ничего. Странно это…
Сегодня еще с работы проверю.
паранойя
Опробую
2.3.3 у меня, как купил телефон, так и не менял. Samsung gt-s5830.
Воть
В самой популярной ос двойной клик по jar файл сделает тоже самое и даже лучше…