Кирилл Данилов (donz_ru) wrote,
Кирилл Данилов
donz_ru

Category:

Графоманство vs тупняк сервисов для графоманов

Дописывал отчет по Индонезии в ЖЖ, нажал "Сохранить" и получил "Client error: post too large". Максимальный размер поста в ЖЖ - 65535 байт. Кодировка - UTF-8, значит на один кириллический символ приходится два байта.
Ладно, фигня, по привычке нажимаю назад. И что я вижу? Вижу версию, которую сохранял до этого, а все, что успел написать после, ушло в никуда. Сразу жму вперед, мне предлагают заново отослать данные для отображения страницы. Значит в памяти фаерфокса все сохранено, осталось только достать. Фаербаг показывает только часть отосланного - говорит, его ограничения не позволяют показать все полностью. После получаса матов и гугления, попросил помочь php-программера. Он все-таки нашел фичу в фаербаге. Чтобы получить отсылаемые данные полностью, надо включить Net Monitoring, на строке Post при отсылке данных вызвать контекстное меню и клацнуть на "Copy location with parameters". После чего останется только слабать программку, которая декодирует из x-www-form-urlencoded назад в обычный текст. В общем, все закончилось хорошо. Запись укоротил, перейдя на короткие ссылки на картах Гугля. Но вот если бы не стоял у меня фаербаг...
Какого фига ЖЖ не выдало вместе с ошибкой сам текст, чтобы я его исправил? Какого фига при нажатии на "Назад" ФФ показывает мне не ту страницу, с которой я ушел? Почему вообще нет стандартной фичи для доступа к отсылаемым данным? Подобная ошибка довольно частая из-за херового юзабилити блогов и форумов. К тому же при попытке отсылки может банально сбойнуть интернет-провайдер.
Теперь всегда сначала жму на "Просмотр", только потом на окончательную кнопку. Так и до паранойи недалеко.

Исходник для декодирования x-www-form-urlencoded назад в строку на Java:
import java.net.*;
import java.io.*;

public class URLDecode
{
    public static void main( String[] args ) throws Exception
    {
        File in = new File( args[0] );
        File out = new File( args[1] );
        out.createNewFile();
        final int BUFFER_SIZE = 1024;
        char[] buf = new char[BUFFER_SIZE];
        FileReader fr = new FileReader( in );
        StringBuilder sb = new StringBuilder( BUFFER_SIZE );
        try
        {
            int i;
            while( ( i = fr.read( buf ) ) != -1 )
            {
                sb.append( buf, 0, i );
            }
        }
        finally
        {
            fr.close();
        }
        String s = URLDecoder.decode( sb.toString(), "utf-8" );
        FileWriter fw = new FileWriter( out );
        try
        {
            fw.write( s );
        }
        finally
        {
            fw.close();
        }
    }
}
Tags: it, java, жж, казлы
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 4 comments