• 12.41

  • +8.71

  • ,

Update JavaRush

Друзья! Наступило время второго весеннего обновления JavaRush =)

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

  1. Добавлена новая крутая фича. Она называется Continued Education. Теперь решения задач пользователей с подпиской Premium Pro сохраняются на сервере JavaRush. Это значит, что вы можете начать решать задачу в WebIDE, потом продолжить в плагине, и закончить в WebIDE на другом устройстве (или в любой другой последовательности).

  2. Синхронизация происходит:

    • когда вы жмёте на кнопку «Запуск» WebIDE, то есть запускаете решение;
    • когда вы отправляете решение на проверку (кнопка «Проверка» в WebIDE и IDEA);
    • когда вы жмете на кнопку «Анализ кода» в Web IDE или IDEA чтобы проверить стиль кода.

    После любого из этих действий решение будет загружено на сервер JavaRush, и вы сможете получить ваш код на другом устройстве в WebIDE и IntelliJ IDEA.

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

  4. Улучшены условия или механизм проверки таких задач: 3410(1,13), 2712(3,13), task3003, task1916, task1612, task3913(7), task2409, task4012, task1607, task3913, task3105, task3008, task2312(16), task1627, task2207, task4006, task3912, task1319, task1016, task1803, task3708, task1403, task3105, task2312, task4011, task3303, task3310(10), task3612, task3408, task3802.

  5. Оптимизирована работа сайта. Нагрузка на процессор устройства пользователя стала гораздо меньше.

  6. Обновлена система комментариев (появилась возможность ответить на комментарий другого пользователя, отправка по Ctrl+Enter, окно набора сообщений теперь сверху и т.д.).

  7. Добавлена возможность приглашать друзей из Vkontakte и Facebook.

  8. Аватарки учителей (Dark Master и Dark Grand Master) стали еще красивее =)

  9. Улучшена вёрстка страницы «История платежей».

  10. Уведомления в плагине стали более информативными.
  • ,

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

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

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

Итак, ты определился с технологиями и целью. Что дальше?


Выбери 2-3 основных источника знаний по Java, а также с десяток дополнительных. Но не забывай «гуглить», если что-то не ясно.

В первую очередь тебе нужно изучить Java Core — основа языка, от неё уже можно отталкиваться. Настало время подумать, как именно ты будешь учиться.

Самостоятельно или с наставником?

Наставник
Наставник — это здорово, но вряд ли кто-то будет бесплатно с тобой возиться и учить. А если платно… Время хорошего разработчика стоит немало. Плохой же тебе не нужен — чему он тебя научит? Тем не менее, если у тебя есть человек, готовый тебя консультировать, заручись его поддержкой.

Может на курсы Java пойти? Очень многие в качестве основного источника знаний видят очные курсы. Их сейчас очень много, но найти среди них достойные сложно. Если они и есть в твоем городе, то, скорее всего, или очень дорогие, или совсем бесплатные. Вторые — это курсы при компаниях. Для совсем зеленых новичков таких курсов не бывает: они рассчитаны на тех, кто прочно знает Java Core (а мы его только учить собрались), и чтобы на них попасть нужно пройти тесты. На курсах проходит весьма жесткий отсев, а самых лучших выпускников компании зачисляют в свой штат.

Теперь перемоем косточки дорогим курсам Java.

стоимость платных курсов
Если повезет и тебе попадется отличный преподаватель-практик, они имеют смысл. Однако цена в таком случае будет очень высока. И еще: сможет ли этот наставник уделить достаточно внимания лично твоему коду? Не факт.

В последние годы появилась масса доступных курсов, они обойдутся слушателю примерно в 100 долларов за месяц. Допустим, ты решил на них пойти, какой специалист-преподаватель там тебя ждет? Размышления на эту тему снова загоняют нас на DOU: иди туда и снова оцени зарплаты Java-разработчиков. Скорее всего ты понимаешь, что учить программистов должен не джуниор, а хотя бы «просто» Software Engineer. Средняя зарплата, например, у киевского специалиста этого уровня — 2000 долларов. Допустим, в группу набрали 20 человек. Это само по себе не очень хорошо, слишком большая нагрузка на преподавателя: он просто не сможет физически уделить внимание коду каждого студента.

Чаще всего учебная группа состоит из десятка учащихся. Все вместе они платят 1000 долларов в месяц. Школа, которая ведет курсы, помимо специалиста, должна оплачивать аренду помещений, оборудование, коммунальные счета. И желательно хоть что-то заработать (вряд ли вы найдете много филантропов при платных школах). В самом лучшем случае учителю достанется долларов 500. При этом он тратит 2-3 вечера в неделю на лекции и еще массу времени на проверку задач. По идее, чтобы научиться программировать, человек должен писать программы каждый день, минимум — 5 раз в неделю. Сколько кода сгенерирует за неделю один ученик? А десять? Добросовестный преподаватель должен всё это проверить и проконсультировать студента, что правильно, а что не так. Это — прорва времени.

Это мы ведем к тому, что нанимать хорошего специалиста на недорогие курсы — абсолютно нерентабельно. В самом лучшем случае, Once in a blue moon, как говорят «у них» или «когда рак на горе свистнет», как говорят у нас, ты попадешь на «фаната», которому жутко нравится не только программировать, но и преподавать. Поэтому он нашел себе такую не слишком выгодную подработку. Не денег ради, кайфу ради.

Следующий вариант — онлайн-курсы, платные или бесплатные.

online courses
Большинство платных онлайн-курсов — это те же самые «очные», только лекции проходят через интернет. Недостатки практически идентичные — не лучшие преподаватели, крайне мало времени уделяется практическим занятиям студента и проверке его кода. А вот бесплатные курсы можешь использовать в качестве дополнительных источников. Их можно найти, например, на Youtube — они представляют собой видеоуроки. Если знаешь английский, попробуй найти пару-тройку курсов на западных ресурсах, например, Coursera.

Неплохие видеоуроки Java на Youtube:
www.youtube.com/playlist?list=PLY4rE9dstrJzKUZHdGgECOjJLaZBcUdCC
Новичкам от почти новичка: www.youtube.com/channel/UCK5d3n3kfkzlArMccS0TTXA
Еще курс, немного не структурирован, но многие темы разобраны неплохо: www.youtube.com/channel/UCg1x1VDcSzviGGH995gHnjw
Когда немного освоишься в программировании, какие-то темы можно смотреть здесь: habrahabr.ru/company/golovachcourses/blog/218841/
habrahabr.ru/company/golovachcourses/blog/215275/

В этих статьях приведен план обучения (может пригодиться) и ссылки на записи видеолекций оффлайновых курсов. Несколько нудноваты, но местами полезны, информации — тонна.

Онлайн-курсы Java для начинающих

На английском языке, все рассчитаны на тех, кто ещё не программировал.
courses.caveofprogramming.com/courses/java-for-complete-beginners
www.coursera.org/learn/java-programming
www.edx.org/course/introduction-programming-java-part-1-uc3mx-it-1-1x-0

И тут одна загвоздочка…

Курсов и видеороликов много, из них можно почерпнуть очень много всего полезного. Однако при самостоятельном обучении возникает одно «но», очень принципиальное «но». Дело в том, что в программировании самое важное — программировать, то есть писать программы, а не изучать теорию. При самостоятельном обучении придется подбирать себе задачи самому, чтобы усвоить те или иные принципы. Новичку это непросто. Допустим, ты нашел источник упражнений: некоторые книги и бесплатные курсы содержат условия задач. Отлично, поехали решать!.. И тут кроется самая большая сложность: кто будет проверять правильность решения? Ты, наверное, удивишься, но даже если программа запускается и выдает правильный ответ, это вовсе не значит, что она работает правильно! Это может быть сладкой иллюзией. Что же делать? Новые технологии и всемирная паутина знают ответ на этот вопрос. И этот ответ — javarush.ru

javarush

Интерактивные курсы Java с автоматической проверкой задач



Мы разработали самый классный курс для изучения Java. И многие уже знают как он называется — JavaRush. Мы им гордимся, поскольку он из таких новичков, как ты, которые растеряно задают вопрос «что же делать, куда бежать, столько информации вокруг!» помогает делать программистов, готовых к первой работе. Самые главные «фичи» курса:

  • В нем есть продуманная структура. Поскольку его создавал практик, который отлично ориентируется в реалиях рынка, том, что нужно знать и уметь, в курсе отобрано только самое главное и в нужном порядке! Это очень важно для новичка. Для тебя, наверное, тоже, раз ты читаешь эту статью и пытаешься понять, как тебе действовать.
  • Курс на 80% состоит из практических заданий. За время обучения тебе придется решить более 1200 задач. Какие бывают задачи на JavaRush:

1. Маленькие «учебные» на закрепление пройденного в лекциях.
2. Хитрые задачи «на вырост». По уровню сложности они не отличаются от задач на закрепление, но специально помещены в курсе раньше, чем определенный кусок теории, необходимый для их решения. Это мобилизирует и заставляет человека гуглить и искать недостающий пазл теории. Всё как в настоящей работе.
3. Головоломные. Эти ребята заставляют включать голову на полную. Тебе нужно найти не теорию для решения, но само решение, алгоритм. Короче, хорошенько подумать. Это как задачи на сообразительность или задачи повышенной сложности из учебников.
4. Мини-проекты. Полезные большие задачи, разбитые на подзадачи для понимания, каким образом ведется разработка крупных проектов. Ты сам сделаешь несколько игр и полезных программ, которые можно применять в реальной жизни и дорабатывать.

  • И — самое важное — в курсе есть автоматическая проверка правильности решений! Вы можете решать задачи на странице курса или в IDE (интегрированная среда разработки, если еще не знаешь, что это такое, скоро узнаешь). Причем проверка эта происходит в считанные секунды. Это просто огромное преимущество JavaRush!
  • Курс на русском языке и лекции в нем поданы в виде текстового квеста, в котором ты будешь переходить с уровня на уровень, наращивая скиллы — скучно не будет!
  • В курсе даны ссылки на полезные дополнительные материалы, однако скилл гугления также намеренно прокачивается.
  • Вокруг JavaRush за 4 года существования образовалось огромное сообщество. В нем люди обсуждают задачи, решения, проблемы, делятся информацией.
  • Специальный сайт для решения и обсуждения задач: help.javarush.ru/
  • Основной курс состоит из 40 уровней, 10 из них — полностью бесплатны. Во время первого этапа обучения ты поймешь, подходит ли тебе JavaRush, так что тебе никто не продаст «кота в мешке», ты будешь точно знать, что покупаешь. К тому же цена всего курса очень доступна. Столько же ты заплатишь за два месяца обучения на «дешевых очных курсах». Ссылка на подписки на курс с ценами.
  • После прохождения курса (или большей его части) ты можешь записаться на стажировку — это совместная работа над настоящим серьезным проектом. Они проходят регулярно, и для этого тебе не нужно будет переезжать куда-либо. Успешное прохождение стажировки — красивая и не пустая строчка в твоем резюме со ссылкой на готовый проект.

Подробная статья о JavaRush — javarush.ru/24.html

Первую часть статьи читайте здесь
Третью часть статьи читайте здесь.
Четвертую часть статьи читайте здесь.
  • ,

Дополнительные материалы к лекциям CS50: Week 0 (лекции 1 и 2)

Кто еще не смотрел Гарвардский лекции по основам программирования заходите сюда: javarush.ru/cs50.html =)

Введение. Структура курса CS50


Дополнительные материалы к лекциям CS50
Друзья! Во введении мы напомним (или расскажем, кому как) о структуре CS50. Курс длится 12 недель. Каждую неделю проходит две лекции, а также всякие семинарские занятия и пояснения. Такие вот статьи, как эта, мы будем выпускать по мере готовности лекций. В ней будет краткое описание лекций, конспект «шортов» и дополнительной информации, а также перевод заданий практических заданий.

Лекции нулевой недели осветили следующие вопросы:

  • Двоичная система счисления.
  • ASCII
  • Алгоритмы и алгоритмичность мышления
  • Компиляторы
  • Язык Scratch
  • Булевы выражения
  • Условия
  • Циклы
  • Переменные
  • Функции
  • Массивы
  • Потоки
  • События

Цели нулевой недели:

  • Понять, каким образом информация может быть представлена в цифровом виде.
  • Изучить основные программные конструкции и понятия.
  • Создать собственную анимацию, игру или интерактивное действие на Scratch.
  • Произвести впечатление на друзей =).

CS50 Week 0 (Лекция 1-2): конспект

Алгоритмы

Алгоритмы
Надеемся, вы уже успели посмотреть лекции, и поняли, что алгоритм разбивает решение задач (разных задач, математических или «как доехать до станции метро N») на шаги. При этом каждый шаг должен выполнятся за конечное количество времени, да и самих шагов должно быть определенное количество.

А еще, следующий шаг зависит от предыдущего.

Подробнее об алгоритмах можно почитать, например, здесь: ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC#.D0.9C.D0.B0.D1.88.D0.B8.D0.BD.D0.B0_.D0.A2.D1.8C.D1.8E.D1.80.D0.B8.D0.BD.D0.B3.D0.B0

Если знаете английский, вот прекрасная анимация на TED авторства Дэвида Малана:
www.youtube.com/watch?v=6hfOvs8pY1k

Хотя в целом информация в ролике повторяет таковую в лекции=).

Двоичная система счисления

Двоичная система счисления
У нас 10 пальцев, и система — десятичная. То есть, любое, сколь угодно большое число мы можем представить с помощью цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. В зависимости от того, где в числе стоит цифра, она может означать разное: если эта цифра последняя, то она расположена в разряде единиц, предпоследняя — разряд десятков, еще левее — разряд сотен и так далее. По сути, любое число можно расписать в виде суммы цифр, каждая из которых умножена на десять в определенной степени. В случае единиц — нулевой. Например, 1573 = 3*100 + 7*101+5*102+1*103. Число, на степень которого умножаются цифры называется базой системы счисления. Для десятичной системы базой, логично, является десятка.

У компьютера пальцев нет, но есть два состояния: условно «ток идет» и «ток не идет», нулик и единичка. Соответственно все числа (да и вообще информация) в памяти компьютера состоят только из двух цифр — 0 и 1. Их расположение, как и в случае десятичной системы счисления, указывает на разряд. Только теперь число можно разложить на сумму цифр, помноженных не на степени десятки, а степени двойки.

0 в двоичной системе = 0
1 в двоичной системе = 1
2 в двоичной системе = 10
710=1112

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

Пример:

Давайте найдем десятичный аналог двоичного числа 1011012
Самая правая единичка = 1*20
Следующий нулик = 0*21
Третья справа единичка = 1*22
Четвертая = 1*23
… и так далее

1011012 = 1*20 + 0*21 + 1*22 + 1*23 + 0*24 + 1*25 = 1 + 0 + 4 + 8 + 0 + 32 = 4510

Представьте восемь лампочек, выставленных в ряд. У каждой из них — свой собственный выключатель.

Каждая из лампочек — это разряд. Да что представлять, вспомните самую первую лекцию (там есть такой агрегат) или вот вам виджет: cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html

Поиграйтесь с ним, потренируйтесь «прочувствовать» двоичную систему.
Перевод из десятичной системы в двоичную.

Тут тоже всё очень просто, если понимать суть. вот есть у нас число 5710. Чтобы перевести его в двоичную систему, нужно определить, какая максимальная степень двойки не превосходит это число. 26 = 64. Это явно многовато. А вот 25 = 32. Вот мы определили старший разряд. 3210 = 1000002. Теперь ищем следующий разряд. 57-32 = 25. Теперь для 25 ищем степень двойки, которая не превосходит 25. 24 = 16. Значит, следующий разряд у нас тоже равен 1. 32+16 = 4810 = 1100002. 57 – 48 = 9. 23 = 8, это больше, чем 9. Значит следующий разряд тоже будет единичкой.

32 + 16 + 8 = 5610 = 1110002.
57-56 = 1, то есть осталась только одна степень 20.

Таким образом 5710 = 1110012.

Если вдруг что осталось непонятым, можно подробнее почитать в викиучебнике, а если сильны в английском — вот маленькое дополнение к лекции.

ASCII

ASCII
Компьютер понимает только нулики и единички, а его память можно представить в виде ооочень длинной строки из лампочек с выключателями, как вы видели выше. Как представить цифры в компьютере мы уже поняли. А что с остальной информацией? Буквами, картинками? Скажем, в английском алфавите 26 букв. То есть теоретически мы можем представить буквы цифрами от 0 до 25, только в двоичной системе. Возникает следующий вопрос: а как понять, перед нами строчная буква или прописная? А знаки препинания? Знаки-«невидимки» вроде пробела? Словом, нужна система кодирования, Кэп! В 1960 годах существовало множество разных схем, кодирующих символы. Отсутствие единообразия оказалось проблемой, и в 1963 году Американский институт стандартизации ANSI разработал и ввел в обиход схему кодировки ASCII (American Standard Code for Information Interchange).

Каждый символ ASCII состоит из семи разрядов или семи бит, каждый из которых может принимать значение 0 или 1. В 7 бит можно поместить числа от 0 до 127 в двоичной системе, то есть у нас есть 128 чисел для кодирования символов. Казалось бы, достаточно для кодировки письменной английской речи?

Давайте посчитаем:

a-z — 26 вариантов
A-Z — еще 26
0-9 — 10
,;:~& и прочие знаки пунктуации — 32
И еще один пробел.
Итого — 95 символов.

Оставшиеся 33 вакантных варианта используют для так называемых управляющих символов, вроде перевода строки или возврата каретки.
ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg

Важно различать символы 0-9 и числовые значения 0-9. Символы 0-9 представлены значениями ASCII 48-57. Интересно отметить, что крайние правые четыре бита этих значений ASCII представляют собой двоичные представления числовых значений 0-9. Это несколько упрощает способ преобразования между значениями ASCII и их фактическими числовыми значениями.
Начинаем программировать?

Scratch

Scratch
Итак, Scratch. Об этом визуальном языке программирования и его основных командах вам рассказали в лекции.

Чтобы опробовать Scratch самостоятельно, переходим по ссылке scratch.mit.edu/ и нажимаем «Присоединиться». После регистрации вы можете начинать программировать онлайн. Да, кстати, на сегодняшний день Scratch отчасти русифицирован. Справка, правда, пока на английском.
При желании можно поиграть, а также посмотреть код студенческих проектов, которые демонстрировались в лекции. Вот Pikachu Pastry Catch: scratch.mit.edu/projects/26329354/

Или проект с сортировкой мусора по разным емкостям: scratch.mit.edu/projects/71161586/

Дэвид и компания просят вас не волноваться, если вам кажется, что вы не можете сделать столь сложные проекты: такой уровень уже требует определенной сноровки.

Задание

1. Чтобы лучше понять процессы, происходящие в Scratch, можно загрузить исходный код нескольких проектов отсюда: scratch.mit.edu/explore/projects/all/. Поиграйтесь, посмотрите. Изучать чужой код — это очень полезно. Это один из лучших способов узнать, что внутри у тех программ, до которых вы сами ещё не доросли. Когда вы начнете понимать, как работают эти приложения, можно смело идти дальше.

2. Теперь пришло время сделать что-то самостоятельно. Задание состоит в том, чтобы весело провести время, но при этом реализовать небольшой проект с нуля. Это может быть анимация, игра, интерактивное действо.

Требования к проекту:

  • Программа должна содержать по крайней мере два спрайта (персонажа, изображения), и один из них точно не должен быть кошкой=).
  • Должно быть по крайней мере три скрипта (дейтсвия).
  • Нужно исполнить по крайней мере одно условие, один цикл и одну переменную.
  • В программу нужно внедрить по крайней мере один звук.

То есть по сути ваш проект будет сложнее написанных на лекции, но проще, чем продемонстрированные игрушки про Пикачу и сбор мусора. Таким образом, в вашем проекте, вероятно, будет использовано несколько дюжин пазлов, из которых состоит код Scratch.

Если что-то не получается, возможно, следует изменить подход к решению задачи. Главное, без страха — в путь!

Предлагаем вам задавать вопросы, а также делиться своими проектами в комментариях.

Scratch: краткое руководство к действию
Спрайт — центральный объект проекта. Любой персонаж — кот, самолет, мячик — является спрайтом. Если вы добавили двух разных котов — это два разных спрайта.

Scratch CS50
У каждого спрайта есть скрипты, которые описывают его поведение. Это блоки действий.
Костюмы — это то, как выглядят объекты. Сами спрайты, по сути — это просто рисунки. Каждый спрайт может иметь несколько костюмов.

Чтобы создать спрайт, нужно либо выбрать его изначальный костюм из библиотеки Scratch, нарисовать свой собственный во встроенном редакторе, загрузить любое изображение или даже сделать фотку с помощью веб-камеры и загрузить её.

Все спрайты помещаются на так называемую сцену (stage). Сцена — по сути, наш холст, место действия программы.

Также к спрайту или к сцене можно привязать звуки из библиотеки, или же можно загрузить их или записать самостоятельно, с помощью микрофона.
Чтобы начать исполнение программы, нужно кликнуть по зеленому флажку в правом верхнем углу окна сцены. Но прежде, чем это сделать, нужно поместить в программу следующий блок:

scratch green flag
И присоединить к нему, как к детали конструктора, какие-то блоки. Например:

Scratch блоки
В таком случае при нажатии на флажок, спрайт, к которому привязаны действия, делает 50 шагов и мяукает.
Блоков у нас очень много. Они разделены на три вкладки: скрипты, костюмы и звуки. Давайте сделаем простенькую программу с условием. Если оно выполнится, кот мяукнет, не выполнится — останется молчаливым. Операторы обозначены зеленым цветом. Те из них, которые проверяют на истинность или ложность условия, отличаются острыми углами по бокам. Структуры проверки условий и циклы обозначены оранжевым. В них есть специальные отверстия, куда можно помещать другие блоки.

Циклы:

Повторить бесконечное количество раз
Scratch: повторить бесконечное количество раз
Повторить что-то определенное количество раз.
repeat
Повторить действие, если условие выполняется.
Scratch repeat until
Создавать переменные можно в блоке Data. Ниже в примере мы создали переменную x, и сразу появились действия, которые можно с ней проделать. Вы можете задать область видимости переменных: для всех спрайтов или для одного.

Scratch блок Data
Зеленый флажок — не единственное действие. Также в разделе Events вы можете обнаружить еще ряд управляющих условий. Например, вы можете выбрать, что делать по нажатию на кнопку или на сам спрайт мышкой.

Если понадобится дополнительная информация, можно её найти, например, здесь: younglinux.info/scratch/introduction

Что еще

Если ваш доступ к интернету оставляет желать лучшего, рекомендуем загрузить офлайновый редактор Scratch по адресу scratch.mit.edu/scratch2download/. Потом не забудьте переслать ваш проект в scratch.mit.edu/ с помощью меню Файл > Загрузить с компьютера.
  • ,

Уровень 22. Ответы на вопросы к собеседованию по теме уровня.

1. Как правильно сравнить две строки в Java?
Метод equals проверяет – совпадают ли строки.
boolean equals (Object o)
String s = "cat";
boolean test1 = s.equals("cat");//true
boolean test2 = s.equals("Cat");//false
boolean test3 = s.equals("c"+"a"+"t");//true


2. Как правильно сравнить две строки в Java игнорируя регистр букв?
Метод equalsIgnoreCase – совпадают ли строки, игнорируя регистр букв.
boolean equalsIgnoreCase (String str)
String s = "cat";
boolean test1 = s.equalsIgnoreCase("cat");//true
boolean test2 = s.equalsIgnoreCase("Cat");//true
boolean test3 = s.equalsIgnoreCase("cAT");//true


3. Как отсортировать список строк в алфавитном порядке?
Используя метод Collections.sort().
ArrayList<String> list = new ArrayList<>();
list.add("zas");
list.add("fas");
list.add("sd");
list.add("asdg");
Collections.sort(list);


4. В какой кодировке хранятся строки в Java?
Строки в java хранятся в Unicode.

5. Как преобразовать строку в кодировку Windows-1251?
String utf8 = "text";
byte[] bytes1251 = utf8.getBytes("windows-1251");
String win1251 = new String(bytes1251,"windows-1251");


6. Как разбить строку на отдельные слова?
а) String[] split(String regex)

б) StringTokenizer:
String s = "Good news everyone!";

StringTokenizer tokenizer = 
   new StringTokenizer(s,"ne");
while (tokenizer.hasMoreTokens())
{
 String token = tokenizer.nextToken();
 System.out.println(token);
}


7. Как развернуть строку задом наперед?
String s = "Bender";
StringBuilder s2 = new StringBuilder(s);
s2.reverse(); //будет "redneB";


8. Что происходит, когда мы пишем «A»+«b»+«C»?
Примерно следующее:
new StringBuilder().append("A").append("b").append("C").toString();


9. Что такое mutable и immutable типы?
Объекты, которые после их создания изменить нельзя, называются неизменяемыми или immutable.
Объекты, которые после создания можно изменить, называются изменяемыми или mutable.

10. Что дает типу String то, что его сделали immutable?
а) Безопасность.
String широко используется, как параметр для многих классов Java, в частности для открытия сетевых соединений, подключений к БД, открытию файлов и пр. И если бы строка изменялась, то мы могли получить доступ к объекту (файлу например), на который мы имеем право, затем изменить строку с именем (случайно или намеренно) и получить доступ уже к другому файлу.

Так же String используется в механизме загрузки файлов, и это — фундаментальный аспект. И если бы строка изменялась, то запрос на загрузку «java.io.Writer» мог бы быть изменён на «DiskErasingWriter».

б) Hashcode
Из-за того, что строка не изменяется, она кэширует свой хэшкод и не вычисляет его каждый раз, когда мы его вызываем, что делает строку очень быстрой как ключ для hashmap.

в) Многопоточность
immutable делает экземпляры строк потокобезопасными.

Mini Update (обновление редактора кода)

Mini Update (обновление редактора кода)

Спешим поделиться радостной новостью! Редактор кода на JavaRush получил новую функцию — Autocomplete.

JavaRush update
Теперь также как в IntelliJ IDEA редактор на сайте будет анализировать набранный вами текст и предлагать наиболее релевантные варианты продолжения (методы, классы, переменные).

Рекомендуем всем, кто еще не успел познакомиться с новым функционалом, сделать это как можно скорее — javarush.ru/

P.S. Не забудьте почистить кэш (ctrl + f5)
  • ,

Как я стал разработчиком за пол года?

Всем привет. Это очередная история трудоустроства на сайте javarush, где будут расхваливать джавараш.

Шучу, не будут. Или будут?

Конечно же будут, я ведь ждал момента написать эту статью ещё на 1х уровнях, когда читал чужие :)

Вообщем, начнём с самого начала.

В июне 2014 года я получил диплом бухгалтера. К 3му курсу университета я уже понял, что бухгалтером не буду, я зарабатывал в интернете — разные способы, арбитраж, подписки, дорвеи, сдл, гс и прочее, этого в интернете много, но и нюансов тоже очень много. Студенту хватало. После окончания универа я всё ещё продолжал «крутиться» в интернете, пока…

В январе 2015 года я подумал, что неплохо было бы стать программистом. Просто потому, что мне нравилась IT сфера, я сам давно был с ней связан и developer это логичный её исход (на тот момент это был исход, сейчас это лишь начало нового пути). Для реализации столь замечательной идеи я стал учить pyton 3. Я прошел базовый курс, задачки на логику и алгоритмы, это всё конечно да, но «где же эпичность, где же программы которые спасают мир?» — подумал я тогда. Через недельку я об этом забыл и забил — деньги были, жизнь шла… Но в феврале ко мне в гости приехала сестра с мужем, оба айтишники, и её муж рассказал о планирующихся курсах в их компании (не обучение, а просто курсы которые вводят в IT — ознакомительные, про разницу языков, про технологии, про проекты, цели IT и прочее) и посоветовал на них пойти. Я подписался на все обновления их фирмы и стал ждать…

В феврале 2015 года начался набор на эти курсы, желающих было много, всем бы места не хватило. Для прохождения был тест на знания английского языка и очень базовых понятий программирования. Т.к. я очень хорошо умею гуглить (кстати до сих пор считаю это САМЫМ важным скиллом программиста) и хорошо знаю английский — тест я прошел, отправил, через 2 недели получил весточку «Вы приняты, начало занятий...»

В марте 2015 года начались курсы. После первого занятия было объявлено о конкурсе, люди должны были самоорганизоваться в команды и выполнить командное задание. Само собой меня никто не взял, т.к. я ничего не умел. Зато сестра мне посоветовала начать учить java как распространённый и развивающийся язык. Благодаря своему умению гуглить я нашел сервис джавараш, нашел отзывы, почитал и таки что вы думаете — я купил подписку находясь на 2м уровне (не дожидаясь 10 бесплатных). Но тут подкрался ещё 1 момент…
В апреле 2015 года у меня была свадьба, соответственно кроме еженедельных курсов и заработков на хлеб времени осталось только на подготовку к свадьбе, и купленный джавараш стал ждать на 4м уровне. А после свадьбы…

В мае 2015 года я поехал в свадебное путешествие, после которого твёрдо решил начать учить джавараш, и таки что вы думаете? Вернувшись 6 мая домой, первым делом я сел учить java. Начал я это делать с 1 уровня javarush, и впринципе адекватно считаю, что мой путь в программисты стартанул именно 6 мая.
В июне 2015 года я был уже на 20 уровне джава раша. Собственно здесь основная часть отзыва о джава раш. Т.к. дальше 20 уровня я и не дошел. Что, как, я же трудоустроился! Ой можно устроится после 20 уровня? Нет. Нельзя. Так в чем секрет? Секрет в том, что до 20 уровня вы проходите основы джава, самую важную базу. И вы не просто проходите основу. Каждую из, мать её, основ вы повторяете десяток раз. Сраные роботы вам её разжевывают и заставляют вас искать кучу недоразжеванной информации, что качает скилл гуглинга (самого важного скилла любого программиста, помните об этом) и вот, ошибка за ошибкой, злость за злостью, неудача за неудачей вы проходите эти 20 уровней…

Здесь моя красивая разбивочка по месяцам теряется т.к. дальше её сложно произвести так разграниченно.
А дальше, после 20 уровня, я случайно попробовал андроид. И затянуло и понеслось. Я начал читать книги, смотреть видосы, онлайн уроки, текстовые уроки — куча всего (опять же, гуглинг!!), но везде я убеждался в 1м на 100%, именно благодаря джавараш я получил мощнейшие основы на которые сверху просто накатил андроид фреймворк, без основ я бы не смог понять андроид и писать для него приложения. Основоы — это ваш фундамент. Пропустив джавараш вы просто обосрётесь в реальном мире программирования, просто потому, что здесь огромная куча практики которая даже в самую медленно усваивающую голову вложит эту важную информацию! Нет, вы можете стать программистом и без джавараш, но это будет тяжелее и дольше *(я не рассматриваю вариант менторства и тяги за уши, это редкий случай и те кто имеют такого ментора здесь и не сидят).

С июня по сентябрь я был поглащён нюансами андроид которые я всё поглощал и поглощал (и все они всё ещё накатывались на базу джава, полученную здесь), а вот (тут мы вернёмся к месячной разбивке) к октябрю…
В сентябре 2015 года я понял, что я уже что-то знаю (шучу, в тот момент я себя считал уже почти мидлом, наверное) и решил, что мне нужна работа (семью то надо кормить), а именно работа андроид разработчика. Но как? Ведь толпы людей ищут эту работу, они как и я пишут одинаковые резюме, что же делать, подумал бы кто-то другой, я то парень хоть куда, я сразу решил, что искать работу буду когда напишу полноценное портфолио :) и начал его писать. Моей целью было 4 приложения: калькулятор с поточным вычислением (самый простой, считать на ходу), приложение клиент-серверное (сервер писал не я) которое адаптировало сайт онлайн энциклопедии в приложение, todo список с всеми фишками материального дизайна и ещё 1 адаптация онлайн энциклопедии, но уже с базой данных, материальным дизайном, сторонней библиотекой и ещё чем-то там. Вообщем план наметил и начал писать…

В ноябре 2015 года, а именно в 15 числах все мои приложения были готовы, код был на битбакет, приложения в плей маркете, я понял, что пора бы начать искать работу, я ведь парень хоть-куда :) Для того, чтобы искать работу, я решил собрать список команий моего города (Одесса), отсортировать их, оставив только те, которые занимаются андроид разработкой (ну или она хотя бы одно из их направлений). Для этого я написал минипрограмму которая спарсила данные с jobs.dou.ua/companies/ и выдала мне список 180 одесских IT компаний. К сожалению там были компании-однодневки, гавностудии, а так же отнесены всякие компании интернет провайдерво, я отсеивал их в ручную, и получил список из 63 компаний которые мне подходят. Я решил рассылать резюме в 3-5 компаний в день. Единственное что, я решил перед этим отдохнуть, сходить куда-то с женой(а то я учился по 8+ часов в день, + 2 часа работа. Работа кстати — где-то к июню я скопил сумму на год жизни вперёд и поэтому спокойно учился не тратя много времени на заработок) а рассылку начать с 20 числа. Единственное, что для успокоения совести я решил сделать (чтоб не казаться себе бездельником) это запостить своё резюме на work.ua. Спокойно запостив в среду объявление я пошел отдыхать.

20 ноября 2015 года, я получил на почту письмо, что одной компании понравилось моё резюме, а именно мои готовые проекты и они пригласили меня на собеседование. К моему удивлению, собеседование оказалось онлайн, а компания оказалась удалённой (к этому моменту я 4 года работал дома за компом, работа программистом на дому было моей мечтой). Я не подал виду, что я сижу с горящими глазами, а лишь спокойно ответил на все вопросы — технические и нет, и отправил свой код на код ревью своему будущему тим лиду. Через 3 часа волнений я получил ответ «мы бы хотели, чтобы вы у нас работали». Ну и я не стал особо спорить, хотите — как хотите :)))

24 ноября 2015 года был мой первый рабочий день в роли Android developer'a…

Рассказик то не маленький получился, его основная мораль, пожалуй, будет такова:
1) Учите основы. Для основ java нет ничего лучше javarush(поверьте, я умею гуглить :).
2) Учитесь гуглить. Это ещё важнее основ. Умея искать — вы сможете найти решение ЛЮБОЙ проблемы.
3) Учите английский. Я учил его час в день на протяжении обучения программирования, сейчас я ищу и читаю техническую информацию только в оригинале — её в разы больше, и она понятнее и свежее.
4) Пишите портфолио. Вы никому не нужны, но если вы что-то умеете и покажете это — то вы сразу выделитесь на фоне десятка таких же соискателей как вы, которые поленились написать портфолио.
5) Учитесь всегда. Каждый день вы должны узнавать что-то новое, хотя бы 1 мелочь.
6) Программируйте. Каждая строчка кода приближает вас на 1 шаг к вашей цели, всё приходит с опытом.
7) Не сдавайтесь. За время обучения минимум 5 раз на меня нападало уныние и тоска, неуверенность в собственных силах и слабость, но через не могу и не хочу я заставлял себя идти дальше и они сменялись вдохновением.
8)

Пожалуй это всё, что я хотел сказать. Стремитесь и всё получится, это я вам как Android developer с бухгалтерским дипломом говорю :)

P.S. не написал в основной часте статьи, но скажу тут. Помимо джавы\андроида\другого основного направления учитесь использовать прочие технологии нужные вашей профессии. Какие именно? Ну 100% Git, JIRA, Scrum, XML, JSON, REST api, HTTP и прочее. Конкретные примеры вы можете легко найти, посмотрев, что требуют работодатели у мидлов вашей специальности. Уж поверьте, эти «побочные» скилы учатся быстро и легко, т.к. они несложные, но ваш уровень и вашу цену поднимают, да и без них вы далеко не уедете :)

P.P.S. Ах да, на работе то я уже 2 месяца. Тим лид сказал, что я расту и всё ок, он же советует что почитать и как развиваться. После того как найдёте работу — именно ваш тим лид\ментор будут вашими богами — молитесь на них, цените и уважайте, благодаря ним вы будете расти дальше.
  • ,

Всех с наступающим Новым 2016 Годом !! :)

От компа ты оторвись,
Наш серьезный программист!
Сколько можно, в самом деле,
В мире жить сетей и цифр!

Оглянись скорей вокруг,
Сколько может быть подруг!
Выключай свой жесткий диск,
И пройдись, повеселись!

Сходи с милой в ресторан,
Посети побольше стран!
Жизнью этой наслаждайся,
Даже, если вдруг аврал!

Счастлив будь, всегда любим,
И ни в чем непобедим!

С Новым Годом, javarush'евшцы!
  • ,

Темы для Муверов

Для тех, кто не знает! Муверы — это короткие видео доклады одних учеников JavaRush для других учеников Java.

Создание Мувера — реальная возможность значительно улучшить свои знания и навыки в определенных темах и поделится информацией с другими, что значительно увеличит скорость и качество вашего обучения. Подробнее о Муверах здесь

Темы для Муверов

Ниже предлагаем список тем для Муверов (хотя если у вас есть другие темы по Java, можете снимать по ним доклады):

1. Как дебажить проект в IDEA?
2. Как работают Watсhes в IDEA? Возможности.
3. Как в IDEA задавать свой стиль кода?
4. Как в IDEA рефакторить проект?
5. Горячие клавиши в IDEA?

6. Что нового появилось в Java 7?
7. Что нового появилось в Java 8?

8. Что такое клиент-сервер?
9. Что такое веб-сервер?
10. Что такое сервер баз данных?
11. Что такое IP Address и домен?
12. Как установить и запустить Tomcat?

13. Что такое наследование? Приведите примеры, которые его объясняют.
14. Что такое инкапсуляция?
15. Что такое полиморфизм?

16. Что такое for-each? Как им пользоваться и как он работает?
17. Что такое исключения?
18. Что такое сериализация?
19. Что такое потокобезопасность? (thread-safe)

20. Расскажите о вашей любимой коллекции.
21. Что такое generics? Все нюансы работы. Какие бывают generics, как они работают?

22. Что такое паттерны проектирования?
23. Что такое MVC?

24. Основы HTML. Что это такое и несколько примеров.
25. Основы JavaScript.

Все свои Муверы присылайте Зойдбергу — vk.com/javarush_zoidberg
  • ,

Как максимально эффективно усвоить новые знания по программированию

Лучший способ качественно освоить новый материал – попробовать объяснить его другим!

усвоить новые знания по программированию

Именно поэтому на JavaRush есть Муверы – небольшие видео доклады, которые записывают одни ученики JavaRush для других учеников JavaRush!

Предлагаем всем-всем принять участие в создании, обсуждении Муверов! Это очень эффективный способ повышения эффективности вашей подготовки.

Немного подробнее о том «Как?» и «Зачем?».

Как сделать Мувер?

Как сделать Мувер?

Выберите интересную тему по Java здесь (помимо этого вы, конечно, можете взять свою тему по Java) Затем на основе данной темы вы записываете небольшой видеодоклад.

Продолжительность ролика 5, максимум 15 минут, не больше. Качество изображения и голос, роли не играют. Главное в Мувере — о чем Вы говорите.

Вот пара вариантов создания мувера:

1. Вы делайте презентацию, например, в PowerPoint. Затем запускаете программу, которая будет записывать звук и происходящее на экране. Листаете презентацию и рассказываете, как вы все это видите. Вуаля — мувер готов.
2. Вы просто на веб-камеру объясняете другим выбранную тему, как вы ее понимаете. Цель не рассказать все максимально правильно, а объяснить сложные вещи простыми словами и примерами.
3. На самом деле есть еще куча способов, Вы можете придумать свой формат мувера, если хотите…

Затем, Вы высылаете видео нам (отправляйте Муверы Зойдбергу — vk.com/javarush_zoidberg), а мы будем выкладывать их в группе и размещать на info. При этом все желающие, cмогут задавать в комментариях свои вопросы по теме доклада. Это очень полезно, как для докладчиков, так и для слушателей!

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

У Вас есть свое мнение — выскажите его! Стать голосом толпы может каждый!

Преимущества Муверов
Преимущества Муверов

Какие преимущества в этом для КАЖДОГО из ВАС:

1. Вы потренируетесь излагать материал для большой аудитории на тему программирования. Это поможет научиться правильно, технически грамотно и уверенно строить ответы на СОБЕСЕДОВАНИЯХ, при работе в КОМАНДЕ, при общении с заказчиками и т.д.
2. Очень важно получать информацию не только у профессионалов своего дела, но и у таких же учеников, которые уже преодолели эти проблемы и разобрались в текущем материале. Поэтому обмен информацией между людьми одного уровня и квалификации очень полезный.
3. Муверы – хорошая возможность разобраться в интересной новой теме, как докладчикам, так и слушателям. Поэтому записав видеодоклад вы принесете пользу и себе и своим коллегам.

Где можно посмотреть уже существующие Муверы?

Лучшие Муверы ученков JavaRush Вы можете посмотреть на YouTube-канале JavaRush Students: www.youtube.com/channel/UCMcDsSeqS531-HKz6GiJgtA
  • ,

Введение в Scrum

Понятие scrum пришло в мир IT из спорта, а точнее из регби. На данный момент это одна из более гибких и эффективных методологий в разработке ПО и его поддержке. Методология Scrum, которая построена на принципах тайм-менеджмента, делает акцент на качественном контроле процесса разработки.

Введение в Scrum

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

7 советов на пути от хорошего программиста к великому

Великие программисты являются таковыми не потому, что умеют писать идеальный код. В них есть нечто большее, например, дополнительные навыки, знания, особенности характера. Способов как этого добиться – множество. Мы же подобрали 7 основных советов для вас.

от хорошего программиста к великому