• 0.12

  • +0.88

Моя статистика обучения - печаль?

Повествование будет сумбурным.

Я перешел на платную подписку в октябре или ноябре 2016 года. Сейчас я на 28-м уровне.
с 11-го по 20-й уровень у меня было много куража и азарта, воодушевления. Бывали минуты отчаяния, они сменялись восторгом «Я могу!».

Так получилось, что как раз с октября-ноября не было толком работы, был запас денег посвятить себя обучению. Что я и делаю. Помню задачи, над которыми сидел днями, они не давали мне покоя. Сейчас же произошли какие-то глобальные изменения.

Восторга практически нет. Может это и есть «пустыня отчаяния»? Пробовал рассылать резюме… и результаты заставили задать себе вопрос, как люди на 27-м уровне устраиваются на работу? На 18-м уровне составил план обучения в Microsoft Project. Получилось, что у меня на уровень уходит не менее 10 рабочих дней(самое быстрое 1 день, 20-й и 25-й не вложился. Рефакторинг отложил. И две бонусные 20-го не решил). Какой надо обладать отдачей, чтобы 40 уровней за 3 месяца пройти? Слышал такие истории.

В районе 26-го уровня стало интересно, а сколько реально времени я трачу на обучение в день. Начал засекать таймером. Засекал 9 дней… их хватило, чтобы всё стало на свои места… получилось в среднем 134 минуты в день, или по медиане 112 минут в день. То есть иметь в запасе 8 рабочих часов не обязательно… любой может работать и заниматься, за исключением редких случаев. Тот же, кто может удержать своё внимание 8 часов над учёбой… будет быстро прогрессировать. Это наверное те, кто за 3 месяца весь курс проходят.

И теперь ПЕЧАЛЬ. Ютюб статистику не даёт, пришлось считать ручками. Сколько я на него времени потратил за день. Посчитал за 10-е мая 2017-го… получилось 4 часа 26 минут 16 секунд + другое втыкание (из них минут 40 лекции по джаве:) ), которое не относится к учёбе. Итого 6 часов времени в трубу и менее 2-х часов на обучение… да уж, откуда взяться восторгу от себя…

Может мои цифры наведут кого-то на мысли? А можно просто насрать в комментариях.

P.S. Работа за компьютером — не для всех? Или это часть процесса обучения?

С уважением, Артём.

level18.lesson10.bonus02 и level18.lesson10.bonus03 (Бредовый результат - принят валидатором) + ошибка сервера.

Для выполнения этих двух задач полезно почитать 16-ю главу Философия Джава, минимум до Writer и Reader.
Также можно почитать теорию 19-го уровня.
bouns02

Вот такой результат был принят. Печалька.
Сделал задачу со второго раза, переписав код с нуля.
1. Читал символы через FileReader в StringBuilder.
2. Из StringBuilder прочитать строки. Пример есть в лекциях.
3. Найти максимальный ID — творчество.
4. Обработать входные данные — творчество.
5. Дописать увеличенный ID и данные в конец файла. Я делал через FileWriter. При чем дописано без перевода на следующую строку.

Без блоков try-catch. Всё в теле main.

Ошибка сервера в моём случае — лишние файлы в папке.
bonus03 с параметрами -u 1984798 Шорты пляжные red 159.00 12

исходные данные


ну это же ни в какие ворота. и bonus03 с первого раза прошел… Печаль, печаль, печаль.

bonus02
package com.javarush.test.level18.lesson10.bonus02;

/* Прайсы
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается со следующим набором параметров:
-c productName price quantity
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-c  - добавляет товар с заданными параметрами в конец файла, генерирует id самостоятельно, инкрементируя максимальный id, найденный в файле

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
String result = String.format("%n%-8d%-30.30s%-8.2f%-4d",id, strToAppend, Float.valueOf(args[args.length-2]), Integer.valueOf(args[args.length-1]));
Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String fileName = reader.readLine();
        reader.close();
        InputStreamReader fileReader = new FileReader(fileName);
        StringBuilder stringBuilder = new StringBuilder();
        int count;
        while ((count = fileReader.read()) > -1)
        {
            stringBuilder.append((char) count);
        }
        fileReader.close();

        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        ArrayList<Integer> stringArrayList = new ArrayList<>();
        while (true)
        {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                stringArrayList.add(Integer.parseInt(line.substring(0,8).trim()));
            }
        }
        Collections.sort(stringArrayList);
        bufferedReader.close();
        isr.close();

        Integer maxIDplusOne = stringArrayList.get(stringArrayList.size() - 1)+1;
        if (maxIDplusOne.toString().length()<8) {
            stringBuilder.append(maxIDplusOne);
            for (int i = maxIDplusOne.toString().length(); i < 8; i++)
            {
                stringBuilder.append(" ");
            }
        } else stringBuilder.append(maxIDplusOne);
        String arguments = "";
        if (args[0].equals("-c")) {

            for (int i = 1; i < args.length-2; i++)
            {
                arguments += args[i] + " ";

            }
            if (arguments.length()>30)
            {
                arguments = arguments.substring(0,30);
            }
            else if (arguments.length() < 30)
            {
                for (int i = arguments.length(); i < 30; i++)
                arguments += " ";
            }
            if (args[args.length-2].length()<8)
            {
                arguments += args[args.length-2];
                for (int i = args[args.length-2].length(); i < 8; i++)
                    arguments += " ";
            } else arguments += args[args.length-2];
            if (args[args.length-1].length()<4)
            {
                arguments += args[args.length-1];
                for (int i = args[args.length-1].length(); i < 4; i++)
                    arguments += " ";
            } else arguments += args[args.length-1];
        }
        FileWriter fileWriter = new FileWriter(fileName);
        fileWriter.write(stringBuilder.append(new StringBuilder(arguments).toString()).toString());
        fileWriter.close();
    }
}


bonus03
package com.javarush.test.level18.lesson10.bonus03;

/* Прайсы 2
CrUD для таблицы внутри файла
Считать с консоли имя файла для операций CrUD
Программа запускается с одним из следующих наборов параметров:
-u id productName price quantity
-d id
Значения параметров:
где id - 8 символов
productName - название товара, 30 chars (60 bytes)
price - цена, 8 символов
quantity - количество, 4 символа
-u  - обновляет данные товара с заданным id
-d  - производит физическое удаление товара с заданным id (все данные, которые относятся к переданному id)

В файле данные хранятся в следующей последовательности (без разделяющих пробелов):
id productName price quantity
Данные дополнены пробелами до их длины
String result = String.format("%n%-8d%-30.30s%-8.2f%-4d",id, strToAppend, Float.valueOf(args[args.length-2]), Integer.valueOf(args[args.length-1]));

Пример:
19846   Шорты пляжные синие           159.00  12
198478  Шорты пляжные черные с рисунко173.00  17
19847983Куртка для сноубордистов, разм10173.991234
*/

import java.io.*;

public class Solution {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            String fileName = reader.readLine();
            reader.close();
            InputStreamReader fileReader = new FileReader(fileName);
            StringBuilder stringBuilder = new StringBuilder();
            int count;
            while ((count = fileReader.read()) > -1) {
                stringBuilder.append((char) count);
            }
            fileReader.close();

            switch (args[0]) {
                case "-u": {
                    String arguments = "";
                    for (int i = 2; i < args.length-2; i++)
                    {
                        arguments += args[i] + " ";
                    }
                    String result = String.format("%n%-8.8s%-30.30s%-8.8s%-4.4s",args[1], arguments, args[args.length-2], args[args.length-1]);
                    Integer id = Integer.parseInt(args[1]);
                    FileWriter fileWriter = new FileWriter(fileName);
                    fileWriter.write(update(stringBuilder, id, result).toString());
                    fileWriter.close();
                }
                    break;
                case "-d": {
                    Integer id = Integer.parseInt(args[1]);
                    FileWriter fileWriter = new FileWriter(fileName);
                    fileWriter.write(delete(stringBuilder, id).toString());
                    fileWriter.close();
                }
                    break;
                default:
                    throw new Exception("wrong argument");
            }
        } catch (Exception e) {e.printStackTrace();}
    }
    private static StringBuilder delete(StringBuilder stringBuilder, Integer id) throws Exception{
        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder stringBuilderTemp = new StringBuilder();
        while (true) {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                Integer idx = Integer.parseInt(line.substring(0, 8).trim());
                if (!id.equals(idx)) stringBuilderTemp.append(line).append("\n");
            }
        }
        bufferedReader.close();
        isr.close();
        return stringBuilderTemp;
    }
    private static StringBuilder update(StringBuilder stringBuilder, Integer id, String result) throws Exception{
        System.setIn(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader bufferedReader = new BufferedReader(isr);
        StringBuilder stringBuilderTemp = new StringBuilder();
        while (true) {
            String line = bufferedReader.readLine();
            if (line == null) break;
            else if (!line.isEmpty()) {
                Integer idx = Integer.parseInt(line.substring(0, 8).trim());
                if (!id.equals(idx)) stringBuilderTemp.append(line).append("\n");
                else stringBuilderTemp.append(result).append("\n");
            }
        }
        bufferedReader.close();
        isr.close();
        return stringBuilderTemp;
    }
}