Экспериментальная версия плагина (v.2) для IntelliJ IDEA

Друзья, многие из вас (в частности, пользователи операционной системы Mac OS) просили нас улучшить работу плагина для IntelliJ IDEA.

IntelliJ IDEA
Мы активно работаем над этой задачей и уже близки к ее решению.

Сегодня мы подготовили для вас новую экспериментальную версию в которой (скорее всего) исправлены все существующие ошибки.

Просим всех у кого наблюдается падение плагина под Mac OS или Linux попробовать установить экспериментальную версию и посмотреть все ли работает.

Скачать ее вы можете здесь.

Если что-то не так, пожалуйста подробно опишите, что происходит, какая у вас версия ОС, IDEA, по возможности присылайте скришноты. Это поможет нам оперативно воспроизвести ошибку и быстро все исправить.

Спасибо за понимание. Мы стараемся для вас!
  • ,

Update JavaRush 2.0

Друзья! Подоспело очередное обновление JavaRush. В рамках текущего апдейта мы исправили часть ошибок, о которых вы нам писали, и реализовали ряд предложенных вами функций.

JavaRush Update
Список того, что мы сделали в рамках текущего релиза:

  • Добавлена возможность сброса прогресса больших задач.
  • Исправлены некоторые ошибки в работе плагина для IntelliJ IDEA на Mac OS.
  • Добавлена возможность регистрации на стажировку для владельцев подписок из JavaRush 1.0 (Premium Project, Internship, Internsip+, Mentor, Mentor+).
  • Исправлены задачи на ввод данных с консоли, использующие Scanner.
  • Теперь сайт поддерживает HTTPS.
  • Добавлена корректная поддержка решений задач с бесконечными циклами и deadlock.
  • Улучшены условия и механизм проверки таких задач: task1632, task0101, task0140, task1924, task2909 (13), task1602.

  • Появилась возможность редактировать собственные комментарии.
  • Добавлены всплывающие подсказки для кнопок в WebIDE.
  • В тестовом задании для стажировки добавлена ссылка на литературу.

  • Улучшена верстка лекций.
  • Исправлены опечатки в описании подписок.
  • Исправлены заголовки к задачам на ввод кода.
  • Улучшено отображение страницы с условиями задач в плагине.

  • В раздел «Истории Успеха» добавлены авторы историй.
  • Добавлена модерация историй успеха перед публикацией.

  • Добавлен открытый доступ к описаниям задач, недоступных для решения (если пользователь не залогинен или еще не дошел до этой задачи).

level15.lesson12.home09

Программа работает, но не проходит тест. Подскажите в чем bug?
/* Парсер реквестов
Считать с консоли URl ссылку.
Вывести на экран через пробел список всех параметров (Параметры идут после ? и разделяются &, например, lvl=15).
URL содержит минимум 1 параметр.
Если присутствует параметр obj, то передать его значение в нужный метод alert.
alert(double value) - для чисел (дробные числа разделяются точкой)
alert(String value) - для строк

Пример 1
Ввод:
http://javarush.ru/alpha/index.html?lvl=15&view&name=Amigo
Вывод:
lvl view name

Пример 2
Ввод:
http://javarush.ru/alpha/index.html?obj=3.14&name=Amigo
Вывод:
obj name
double 3.14
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;

public class Solution {
    public static void main(String[] args) throws IOException
    {
        BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
        URL url = new URL(r.readLine());
        String s = url.toString();
        String s1 = s.substring(s.indexOf("?")+1);
        if (s1.contains("&"))
        {
            String[] s2 = s1.split("&");
            for (String line : s2)
            {
                if (line.contains("=")&&!line.contains("obj"))
                {
                    String attributeName = line.substring(0, line.indexOf("="));
                    System.out.print(attributeName+" ");
                } else  if (!line.contains("=")&&!line.contains("obj"))
                {
                    System.out.print(line+" ");
                } else {
                    String attributeName = line.substring(0, line.indexOf("="));
                    System.out.print(attributeName+" ");
                }
            }
            System.out.println("");
            if (s1.contains("obj"))
            {
                String value = s1.substring(s1.indexOf("obj=")+4, s1.indexOf("&"));
                if (value.contains("."))
                {
                    try
                    {
                        double d = Double.parseDouble(value);
                        alert(d);
                    }
                    catch (NumberFormatException e)
                    {
                    }
                } else
                    alertS(value);
            }
        } else {
            if (s1.contains("=")&&!s1.contains("obj"))
                System.out.println(s1.substring(0,s1.indexOf("=")));
            else if (s1.contains("=")&&s1.contains("obj"))
            {
                System.out.println(s1.substring(0,s1.indexOf("=")));
                try
                {
                    double value = Double.parseDouble(s1);
                    alert(value);
                }
                catch (NumberFormatException e)
                {
                    alertS(s1);
                }
            }
            else
                System.out.println(s1);
        }

    }
    public static void alert(double value) {
        System.out.println("double " + value);
    }

    public static void alertS(String value) {
        System.out.println("String " + value);
    }
}
  • ,

com.javarush.test.level24.lesson14.big01- 15 задание

Добрый день. Не проходит 15 задание. не понимаю почему(
public class Ball extends BaseObject
{
    double speed;
    double direction;
    double dx, dy;
    boolean isFrozen;

    public Ball(double x, double y, double speed, double direction)
    {
        super(x, y, 1);
        this.speed = speed;
        this.direction = direction;
        this.isFrozen = true;
    }

    @Override
    public void draw(Canvas canvas)
    {
        canvas.setPoint(x, y, 'O');
    }

    @Override
    public void move()
    {   if (isFrozen)
        {
            y += dy;
            x += dx;
        }
    }

    public void start()
    {
        isFrozen = false;
    }

    public void setDirection(double direction)
    {
        this.direction = direction;

        double angel = Math.toRadians(direction);
        dx = Math.cos(angel) * speed;
        dy = -Math.sin(angel) * speed;
    }

    public void checkRebound(int minx, int maxx, int miny, int maxy){}



    public double getSpeed() {return speed;}

    public double getDirection() {return direction;}

    public double getDx() {return dx;}

    public double getDy() {return dy;}

    public boolean isFrozen() {return isFrozen;}
}
  • ,

Восемь вещей, которые мне помогли найти работу

Привет, войтишник! Решил поделиться своей историей. Начав обучение в конце 2014 и несколько раз забрасывая все куда подальше, 2 месяца назад я получил работу.

В этой статье я не буду рассказывать о том, как и что я писал в резюме, о чем говорил с HR и как я учил английский (об этом будет отдельный пост). Я не буду углубляться в то что я и где учил. Я просто поделюсь своими наблюдениями и размышлениями, возникавшими у меня по ходу обучения по поводу и без. Я поделюсь тем, что считаю хорошим и плохим в околовойтишной сфере. А так же перечислю 8 вещей, которые помогли мне стать программистом. Поехали!
  • ,

Я без ума от моей работы

Достаточно давно планировал написать свою благодарность javaRush да всё руки не доходили. Заранее приношу свои звинения за ошибки в грамотности и пунктуальности.
Все началось примерно в сентябре 2015го. Сидел я на своей работе. Занимался тех поддержкой пользователей в бовольно крупной компании. Было мне 24 года. Никакого отношения к программированию я никогда не имел. Сидел работал, выполнял бессмысленные заявки, помогал криворуким пользователям, заполнял какие то ненужные отчеты. Я понял что нужно что то менять. А вдруг меня уволят? А я так то нефига же не умею =( Примерно в июне 2015го к нам в отдел взяли нового парня. Он писал на пыхе(PHP). Я видел как горели у него глаза когда он создавал свой проект с нуля. И вот в сентябре я понял что нужно что то менять. Думаю нужно учить какой нить язык программирования. Чисто случайно наткнулся на javaRush и тут понеслось. Я как заядлый геймер просто втянулся в обучение. Было тяжело. Многое не понимал. Очень много тратил времени на каждую задачу. Благо на работе делать было нечего и я мог свободно заниматься самообразованием. Я занимался минимум 6 часов в день. За +-2 месяца я прошел 10 уровней. Мне очень все нравилось и хотелось продолжить, но цена за премиум подписку была слишком высока для меня. Решил нужно копить. Пока денег небыло я начал читать «философия java» и параллельно смотреть ролики с девколибри по андроиду. Все тихо мирно получалось. И тут появились новогодние скидки.
Примерно 10го декабря я психанул и потратил все деньги с кредитной карты на подписку ментор плюс.
И начал я погружение в увлекательный мир программирования. Самое тяжелое было то что никто меня не поддерживал, кроме лучшего друга. Очень тяжело было наткнуться на непонимание моего увлечения. Примерно к июню я прошел 20-23 уровня и решил создать резюме на хедхантере. Если честно я особо не надеялся найти новую работу. Просто хотел мониторить вакансии. Спустя месяц мне позвонили и пригласили на собеседование. После этого звонка я поверил в свои силы.
Моё первое настоящее собеседование. Меня трясло. Пот лился ручьями. Я сидел в переговорной на против 4х парней. Ууух все было как в тумане. Мы пообщались. Отвечал на все вопросы и был в шоке с себя. После собеседования мне обещали позвонить. Ну — ок. Я особо не надеялся. Выйдя с собеседования у меня расползлась улыбка на все лицо. Я понял что на все что меня спросили я ответил и ответил правильно.
Мне позвонили. И тут я стал думать менять мне работу или нет. Родительской поддержки небыло. Мне пророчили хорошее будещее на текущем месте. Это было очень тяжело. Я не мог спать постоянно думал о том какое решение принять. И я его принял.
Через три недели я уже работал джуном. Я должен был программировать микроконтроллеры. 3 месяца испытательный срок. Кстати ушел на зп меньше чем было. Спустя пару недель я понял, что микроконтроллеры это не моё и меня от них воротит. Совсем не то чему я учился на javaRush. Это не программирование. Мне нужно было знать какие то технические процессы и много ненужной мне информации. Отдельно хочется сказать о моем «тимлиде». Кроме как м*дак я не могу сказать о нем ничего=) Просто на любой мой вопрос я слышал — разбирайся сам. Через 2 месяца испытательного срока я понял чт нужно валить.И снова хедхантер и снова поиск. Мой друг параллельно мне устроился разрабом в крупную фирму в нашем городе. Они писали программы\моду для расчета бюджета и всего такого. Он подсказал что мне нужно почитать — sql и парсеры xml. Откликнулся на вакансию. Позвонили. Собеседование. Я чувствовал себя спокойнее. Отвечал по честному. Если не знал ответа то говорил, что нне знаю, но могу загуглить. Обещали набрать. Через полторы недели мне прислали офер. Я был безумно рад. Потому что по результатам собеседования мне предоложили достаточно высокую зп.
И вот 14 декабря 2016 подошел конец моего испытательного срока. Я работаю в классой команде, которая делится со мной знаниями. Я безума от моей работы. Работаю часов по 10 вдень. Хочу быстрее изучить все по максимуму. Очень сильно устаю. Хочется развеять иллюзии по поводу работы разработчиком — это очень не легкий труд. Если кто то дочитал до этого места: хочу советнуть хотя бы немного изучить sql, парсеры — без этого ну реально помоему никак. Огромное спасибо всей команде javaRush за данные мне знания. Спасибо и тем кто писал свои истории успеха — вы реально помогли мне не струсить и уйти с переспективной работы на работу более низкой зп. Ребят если нравится программировать, копаться в коде- не бойтесь. Учитесь, развивайтесь и все у вас получится.
P.S. все 40 уровней я так и не прошел. Осилил примерно 27-29. И до поддержки ментора и реального проекта не дробрался. Возможно в будущем году продолжу, но это уже не точно. Знания с которыми я проходил собеседования были много выше других ребят — это мне сказали теперь уже мои коллеги. Кстати недавно собеседовал парня — он тоже учился на javaRush и его знания реально были много лучше других ребят.

level10.lesson11.bonus02 Почему не компилируеться на сервере?

Ніяк не можу зрозуміти, чому задача не компілюється на сервері.
package com.javarush.test.level10.lesson11.bonus02;

import java.io.*;
import java.util.HashMap;

/* Нужно добавить в программу новую функциональность
Задача: Программа вводит с клавиатуры пару (число и строку) и выводит их на экран.
Новая задача: Программа вводит с клавиатуры пары (число и строку), сохраняет их в HashMap.
Пустая строка – конец ввода данных. Числа могу повторяться. Строки всегда уникальны. Введенные данные не должны потеряться!
Затем программа выводит содержание HashMap на экран.

Пример ввода:
1
Мама
2
Рама
1
Мыла

Пример вывода:
1 Мыла
2 Рама
1 Мама
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, Integer> map = new HashMap<String, Integer>();
        String key;
        int value;

        while (true) {
            String line = reader.readLine();
            if (line.isEmpty()) break;
            try
            {
                value = new Integer(line);
            } catch (NumberFormatException e) {
                break;
            }

            key = reader.readLine();
            if (key.isEmpty()) break;

            map.put(key, value);
        }

        for (HashMap.Entry<String, Integer> pair : map.entrySet()) {
            System.out.println(pair.getValue() + " " + pair.getKey());
        }
    }
}

У мене все компілюється і нормально працює.
Результати роботи
1
Мама
2
Рама
1
Мыла

2 Рама
1 Мама
1 Мыла
  • ,

Акция от JavaRush

Акция на JavaRush

АКЦИЯ!
Дорогие друзья! Спешим поделиться с вами радостной новостью: с 13.12 до 23.12 каждый из вас может приобрести Премиум аккаунт JavaRush не за $200, а за $100 — javarush.ru/sale.jsp

ВНИМАНИЕ!
Вы можете приобрести Премиум аккаунт даже в том случае, если вы только начали заниматься на JavaRush и еще не прошли первые 10 уровней.

Поэтому, если вам нравится проект и вы хотите получить от него максимальную отдачу за минимальную стоимость, воспользуйтесь текущим предложением — javarush.ru/sale.jsp
  • ,

level06.lesson11.bonus02

Приветствую, коллеги. Компилируется без ошибок, работает, тест не проходит, никак не могу найти проблему.
Спасибо всем за внимание.

package com.javarush.test.level06.lesson11.bonus02;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/* Нужно добавить в программу новую функциональность
Задача: У каждой кошки есть имя и кошка-мама. Создать класс, который бы описывал данную ситуацию. Создать два объекта: кошку-дочь и кошку-маму. Вывести их на экран.
Новая задача: У каждой кошки есть имя, кошка-папа и кошка-мама. Изменить класс Cat так, чтобы он мог описать данную ситуацию.
Создать 6 объектов: дедушку(папин папа), бабушку(мамина мама), папу, маму, сына, дочь.
Вывести их всех на экран в порядке: дедушка, бабушка, папа, мама, сын, дочь.

Пример ввода:
дедушка Вася
бабушка Мурка
папа Котофей
мама Василиса
сын Мурчик
дочь Пушинка

Пример вывода:
Cat name is дедушка Вася, no mother, no father
Cat name is бабушка Мурка, no mother, no father
Cat name is папа Котофей, no mother, father is дедушка Вася
Cat name is мама Василиса, mother is бабушка Мурка, no father
Cat name is сын Мурчик, mother is мама Василиса, father is папа Котофей
Cat name is дочь Пушинка, mother is мама Василиса, father is папа Котофей
*/

public class Solution
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String gfatherName = reader.readLine();
        Cat catGFather = new Cat(gfatherName);

        String gmotherName = reader.readLine();
        Cat catGMother = new Cat(gmotherName);

        String fatherName = reader.readLine();
        Cat catFather = new Cat(fatherName,null, catGFather);

        String motherName = reader.readLine();
        Cat catMother = new Cat(motherName, catGMother, null);

        String sonName = reader.readLine();
        Cat catSon = new Cat(sonName, catMother, catFather);

        String daughterName = reader.readLine();
        Cat catDaughter = new Cat(daughterName, catMother, catFather);

        System.out.println(catGFather);
        System.out.println(catGMother);
        System.out.println(catFather);
        System.out.println(catMother);
        System.out.println(catSon);
        System.out.println(catDaughter);
    }

    public static class Cat
    {
        private String name;
        private Cat mother;
        private Cat father;

        Cat(String name)
        {
            this.name = name;

        }

        Cat(String name, Cat mother, Cat father)
        {
            this.name = name;
            this.mother = mother;
            this.father = father;
        }


        @Override
        public String toString()
        {
            if ((mother == null)&&(father == null))
                return "Cat name is " + name + ", no mother"+", no father";
            else if (mother == null)
                return "Cat name is " + name + ", no mother"+", father is " + father.name;
            else if (father ==null)
                return "Cat name is " + name + ", mother is " + mother.name+", no father";
            else
                return "Cat name is " + name + ", mother is " + mother.name+", father is " + father.name;



        }
    }

}

Все сделано,но видимо не так как хочет великий сервер. Помогите разобраться.

public static void main(String[] args) throws Exception
    {
        BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
        int summa = 0;
        int i = 0;
        one:
        while(i < 1)
        {
            String vvod = read.readLine();
            if(vvod.equals("сумма"))
            {

                System.out.println(summa);
                continue one;

            }
            else
            {
                int n = Integer.parseInt(vvod);
                summa +=n;
            }
        }

    }


Я не знаю, может быть нужно сделать, что бы после каждого подсчета (сумма) сумма сбрасывалась. Но если добавить после вывода суммы сброс (summa = 0) то сервак все равно не принимает. Никакого порыва к творчеству, нужно делать так, как требует великий и могучий… Печалька.
  • ,

com.javarush.test.level18.lesson10.home05 Работает, но не проходит тесты.

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


/* Округление чисел
Считать с консоли 2 имени файла
Первый файл содержит вещественные(дробные) числа, разделенные пробелом. Например, 3.1415
Округлить числа до целых и записать через пробел во второй файл
Закрыть потоки. Не использовать try-with-resources
Принцип округления:
3.49 — 3
3.50 — 4
3.51 — 4
-3.49 — -3
-3.50 — -3
-3.51 — -4
*/


import java.io.*;

public class Solution {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuffer sb = new StringBuffer();
        String file1 =br.readLine();
        String file2=br.readLine();
        br.close();
        br = new BufferedReader(new FileReader(file1));
............................
       //тут было чтение и обработка входных данных
...................................

        sb=new StringBuffer();
........................................
//обработка выходных данных 
.....................................
       

        BufferedWriter bw = new BufferedWriter(new FileWriter(file2)); 

..............
// запись в файл результата
..............
        br.close();
        bw.close();
    }
}


Входные данные: 3.1415 3.49 3.50 3.51 -3.49 -3.50 -3.51
3.285
Выходные данные:3 3 4 4 -3 -3 -4 3
Вроде работает согласно спецификации… что не так?
  • ,

Как стать программистом (часть 3)

Первая часть статьи: определяемся с пулом технологий
Вторая часть статьи: основные источники информации
Четвертая часть статьи: Выбери среду разработки и установи на свою рабочую машину всё необходимое ПО

Как стать программистом

Дополнительные, но важные источники информации: форумы


Форумы очень важны, как бы ни учился, самостоятельно или на курсах, они — кладезь народной мудрости. Хотя прежде чем дойти до правды, тебе придется хорошенько прошерстить информацию оттуда. Но это полезный навык.

  1. ru.stackoverflow.com/questions/tagged/java — старый и полезный форум. Есть раздел на русском, но куда более обширной является его английская версия.
  2. toster.ru/tag/java/info — аналог Stackoverflow от создателей знаменитого Habrahabr
  3. javatalks.ru/ — чисто «джавистский» форум.
  4. help.javarush.ru/ — специальный форум для обсуждения задач JavaRush и не только.
  5. www.reddit.com/r/learnjava/ — тут тоже никто не будет смеяться над вопросами новичков.

Еще дополнительные источники информации: книги и справочники.
Онлайн-справочники по программированию

  1. docs.oracle.com/javase/7/docs/api/ — официальная документация. Сухая, непростая. Тем не менее, рекомендуется постепенно к ней привыкать, причем с самого начала. На английском.
  2. www.tutorialspoint.com/java/java_documentation.htm — простой справочник. Тоже на английском.

Книги по программированию

Самые простые и доступные по изложению книги по программированию. Как справочники не использовать!

  1. Head First in Java — мировой бестселлер серии Head First издательства O’Reilly. Написана с юмором и большим количеством лирических отступлений. Если чувствуешь себя неуверенно — рекомендуем.
  2. Книга Якова Файна «Программирование на Java для детей, родителей, бабушек и дедушек». На русском, рассчитанная в первую очередь на юных программистов, но не только.

Более фундаментальные издания для начинающих. Учебно-справочного толка.

  1. Кей Хорстманн «Java SE 8. Базовый курс» — неплохой учебник.
  2. Герберт Шилдт «Java 8. Полное руководство» — очень полный справочник.
  3. Брюс Эккель «Философия Java» — местами очень полезно. По ней есть викиучебник — wikijava.it-cache.net/index.php?title=Глава_1_Thinking_in_Java_4th_edition

Наконец-то краткое подведение итогов (исходя из всех трех частей статьи):

  • Выбираем один или два основных источника теории, строим учебный план, исходя из них. Присматриваемся к дополнительным источникам. Теорию узнаем из нескольких источников.
  • Чтобы научиться программировать, нужно программировать. Иначе никак. Поэтому в первую очередь обращаем внимание на практику: её нужно делать и проверять. Поэтому нужен либо интерактивный курс, либо преподаватель. На крайний случай — советчики на форумах.
  • Очень много информации есть на форумах. Её поиск занимает время, но оно того стоит. Не нужно стесняться задавать «глупые» вопросы.
  • Выбираем дополнительно книги, которые тебе понравились, заносим в закладки пару-тройку видеокурсов, документацию Java и справочные курсы.

Исходя из этого, у нас три пути:

Путь первый. Максимально эффективный.

Онлайн-курсы JavaRush + info.javarush + документация Java + форумы + книга + справочник + видео

  1. Основной источник знаний — интерактивные курсы JavaRush. Они здорово сэкономят твое время, так как в них, помимо лекций и проверяемых задач есть ссылки на хорошие источники дополнительных знаний. Плюс на курсе тебя будут учить искать информацию и составлять резюме. Ты будешь сосредоточен на главном — программировании, а не где найти источник информации. Но когда нужно искать, тебе придется искать.
  2. Регистрируемся на форумах.
  3. Покупаем/загружаем одну-две книги. Можно одну из самых простых, вторую — справочник.

Путь второй. Всё еще эффективный. Но очень дорогой.

  1. Основной источник знаний — дорогие курсы или персональный наставник. Он делает то, что JavaRush — объясняет теорию, говорит, где можно найти дополнительную информацию, выдает и проверяет задания. Только за гораздо большие деньги. И еще человеческий фактор прибавь. К слову, многие наставники рекомендуют JavaRush в качестве дополнения к их урокам ;).

Второй и третий пункт — те же, что и в первом пути.

Путь третий. Тернистый.

Если ты готов потратить очень много времени, приложить массу усилий, но совсем не готов к материальным тратам — тебе нужны бесплатные онлайн-курсы, микс из онлайн-видеокурсов и форумов. Выше — ссылка на массу полезных тебе материалов. Можешь пройти первые 10 уровней по JavaRush, скачать пару книг и поселиться на YouTube. А на форумах консультируйся насчет твоих решений.

Первую часть статьи читайте здесь.
Вторую часть статьи читайте здесь.
Четвертую часть статьи читайте здесь