среда, 30 июля 2014 г.

brute method of post image throught multipart/form data


  ResponseExtractor extractor = new HttpMessageConverterExtractor();

        String boundary = "*****";


        FileInputStream fileInputStream = new FileInputStream(new File(localPath));
        URL url = new URL(uriBuilder.build().toString());
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setUseCaches(false);

        conn.setRequestMethod("POST");

        conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
        DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

        dos.writeBytes("--" + boundary + "\r\n");
        dos.writeBytes("Content-Disposition: form-data; name=\"image\";filename=\"image.png\"\r\n");
        dos.writeBytes("\r\n");
        int bufferSize = 4096;
        int bytesAvailable;
        byte[] buffer = new byte[bufferSize];
        int bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        while (bytesRead > 0) {
            dos.write(buffer, 0, bufferSize);
            bytesAvailable = fileInputStream.available();
            bufferSize = Math.min(bytesAvailable, bufferSize);
            bytesRead = fileInputStream.read(buffer, 0, bufferSize);
        }
        dos.writeBytes("\r\n");
        dos.writeBytes("--" + boundary + "--\r\n");
        fileInputStream.close();
        dos.flush();
        dos.close();

        StringBuilder responce = new StringBuilder();
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            String buff;
            while ((buff = reader.readLine()) != null) {
                Log.d("Debug", "Server Response " + buff);
                responce.append(buff);
            }
            reader.close();
        } catch (IOException ioex) {
            Log.e("Debug", "error: " + ioex.getMessage(), ioex);
        }
        return responce.toString();


четверг, 5 июня 2014 г.

Определения, понятия, очевидности

Агрегация (композиция, включение)- методика создания нового класса путем включения существующих (машина состоит из колес, двигла...)
Делегирование - задача поставленная внешнему классу, перепоручается вложенному

Агрегация (агрегирование по ссылке) - отношение часть-целое, когда вложенный объект может существовать независимо от внешнего.
Композиция (агрегирование по значению) - внутренний объект не может существовать без объекта обертки.(университет - факультет)

Персистентность - сохранение состояния объектов между запусками программы.

Идентичность объектов  - есть равенство ссылок(java)
Эквивалентность объектов - есть равенство состояний объектов

Порядок инициализации объектов:

1. блок статической инициализации/инициализация статического поля базового класса.
2. блок статической инициализации/инициализация статического поля собственно класса.
3. Вызывается конструктор класса
3.1. Вызывается конструктор базового класса
3.2. Происходит инициализация переменных/ блоков инициализации в порядке их определения.
3.3. Вызывается остальной код конструктора.

Java and frustration

Java is very complex language. At least for me. I often fall into frustration learning it, especially passing tests like SCJP.


Var args syntax:

1:    static void varArgs1(int... args){}  
2:    static void varArgs2(int[] args){}  

3:    public static void main(String[] args) {  
4:      varArgs1(10, 20, 30);  
5:      varArgs1(new int[]{10, 20, 30});   //oyw. ok  
6:      varArgs2(10, 20, 30); //compile error  
7:      varArgs2(new int[]{10, 20, 30});  
8:  }