?

Log in

No account? Create an account

Entries by category: наука

[sticky post] До свиданья, CyberForum!

Внезапно.

После нескольких лет моего активного участия в конференции CyberForum.ru, в части, посвященной Java, когда я каждый день совершенно бескорыстно помогал разным людям, администратор форума вдруг пришел к выводу, что я занимаюсь агрессивной рекламой собственных сайтов. На том основании, что на форуме больше 1000 сообщений со ссылкой на сайт skipy.ru. Чуть не половину этих ссылок дал не я, а посетители моего сайта, но это не имеет значения. В результате во всех ссылках имя домена было заменено на *********** (более того, была настроена автоматическая замена skipy на ******** даже в личных сообщениях), а я был занесен в злостные нарушители и лишен модераторского статуса, который мне по собственной инициативе дал ЭТОТ ЖЕ ЧЕЛОВЕК, причем МЕНЬШЕ ЧЕМ ЗА МЕСЯЦ до описываемых событий. Когда я пытался объяснить, что это вообще-то ссылки на технические статьи, кроме них на сайте ничего нет и что мне нет необходимости раскручиваться, ибо у меня 10К уникальных посетителей в месяц, мне был задан вопрос "Это ж сколько форумов ты заспамил своими ссылками?"

В данной ситуации я не считаю для себя возможным продолжать участие в этой конференции. Всех, кто хочет продолжать задавать мне вопросы и получать консультации, прошу на http://javatalks.ru/. Здесь по крайней мере администрация адекватная. Да и люди хорошие.
Я достаточно часто сталкиваюсь с проблемами, вызваными неправильным чтением данных из потока (java.io.InputStream). В последнее время такие проблемы почему-то стали появляться особенно часто, в связи с чем я решил разъяснить принцип раз и навсегда и просто давать всем желающим ссылку.

И вот, как это делаетсяCollapse )

P.P.S. Напоследок хочу напомнить. Читать из потока byte, преобразовывать его в char простым приведением типа и пытаться построить из полученных "символов" строку - грубая ошибка. Это будет работать для латинских символов (да и то не во всех случаях!), а для нелатинских может работать лишь по счастливой случайности. Правильный вариант - сделать на основе InputStream экземпляр Reader, с указанием кодировки (new InputStreamReader(inputStream, "<имя кодировки>")), и читать уже из него. О кодировках можно прочитать тут: http://www.skipy.ru/technics/encodings.html