Думаете, я с головой ушла в оффлайн, и по тэгу “гранит науки” у меня будут только вести из скучных официальных академических стен? А вот хрен вам :) Чем больше я углубляюсь в процесс выгрызания уже этого разнесчастного диплома, тем больше мне хочется всё же держать нос по ветру и всячески фтыкать в интересное на Курсере. Вот, например, какая штука сегодня пришла мне в почту. Как всегда, кликабельно, если кому охота заценить мой результат:
Что за курс такой? А
продолжение специализации по всяким “облакам”, следующий курс после двух (
1 и
2) частей зубодробительного Cloud Computing Concepts. Только на сей раз - уже без кучи задач на бумажке, только практика, и вообще, “talk is cheap, show me the code!” Становится жарко… но в то же время и интересно!
Если говорить о стиле преподавания вообще и о преподавателях в частности - я, в общем-то, так и не смогла до конца “отойти” от шпарящего аки пулемёт сурового индийского профессора с CCC. После этого товарища практически любой преподаватель кажется дико медленным :) Вот, собственно, и тут… ведут курс два профессора, один объясняет по большей части теоретические моменты (правда, практически всё из этого уже так или иначе затрагивалось в CCC, посему я какие-то моменты скипала, а остальные смотрела лишь затем, чтобы повторить слегка подзабытое), а второй - помимо академической карьеры также занимающий должность ведущего разработчика в Yahoo - рассказывает про экономику облачных систем (а также то, когда в принципе есть смысл заморачиваться с “облаком”, а когда - нет) и, собственно, код. Как прикладной код для решения конкретных задач на всяческих Hadoop-Storm-Spark-etc, так и, что не менее интересно, код, на котором написаны сами эти системы. Для меня, например, было весьма интересно (хоть и не то чтобы удивительно) узнать, что Storm написан на Clojure, а Spark на Scala, со скаловским же API. Опять же, после этого очень весело слушать народ, удивляющийся, какое это отношение функциональное программирование имеет к облачным технологиям :) Ну да ладно.
Конспектов на сей раз делать пришлось достаточно немного - опять же, курс был ориентирован в основном на непосредственную практику программирования. А вот от домашних заданий в достаточно большом количестве было никуда не деться. Вообще, изначально планировалось, что домашние задания на программирование будут неизбежными и обязательными, а тесты - опциональными, просто “для красоты”. Но потом на форуме курса начали жаловаться всяческие менеджеры и им подобные - “как так, я тоже хочу сертификат, разве лично мне обязательно программировать, чтобы понимать эти технологии” - и специально для них запилили второй способ сдачи на сертификат: или набрать нужное (весьма высокое) количество баллов на тестах (в которые также входили midterm и final экзамены), или сделать часть заданий на программирование и часть тестов на некий суммарный необходимый балл.
Я, конечно же, всё равно придерживалась первого, “хардкорного”, трека - но чисто интереса ради эти самые midterm и final глянула. Хихихи. Надеялись откосить от программирования совсем? Зря надеялись. Материал этих тестов (сдававшихся, кстати, “на время”) имел прямые отсылки к учебным примерам кода из PDFок - команды установки нужного софта, идиомы того или иного ПО, те или иные методы внутренних API… в общем, если уж и не программировал задания, то как минимум разобраться в учебных примерах студент был без малого должен. Правильно сделали, я считаю - вроде и шанс дали, но марку всё равно держат.
Да, как написано в описании курса - чистая правда, прикладные задачи решались на апачевском открытом стеке технологий. Знакомый народ в личном общении, помнится, жаловался на сложность установки того же Hadoop на YARN “с нуля” - но, как выяснилось, к счастью, уже всё поставлено до нас: есть такая замечательная вещь, как Hortonworks Sandbox, образ виртуальной машины для виртуалбокса, в котором почти всё нужное уже есть, а чего нет, то достаточно легко парой команд доставить. И этот самый сэндбокс и предлагалось скачать. Что и сделала.
Единственный минус - виртуалка там сугубо консольная, без малейшего намёка на GUI, заточенная сугубо на работу по SSH. На самом деле - жаль. Потому что, учитывая, что весь материал курса преподавался на Java - всё же без внятной IDE как-то… не так. В официальных учебных материалах (на каждой неделе помимо лекций были ещё раздаточные материалы с обучающими примерами по каждому из рассматриваемых фреймворков) и самих заданиях рекомендовали использовать nano, но мне без подсветки синтаксиса и автоиндентации как-то не то что “не так”, а совсем плохо. Посему консольный emacs - наше всё, и раз уж GUI не было от слова “совсем”, я как раз зазубрила в нём несколько новых хоткеев :)
Но вообще - жаль, что Java зафорсили. Ибо с первой же недели (где задание было по большому счёту номинальным, запилить маленький хеллоуворлдик с word count просто в оперативной памяти) приходилось много матюгаться в монитор - какая ж, ёлки-палки, эта ваша Java “квадратно-гнездовая”! Да, это именно там надо было отсортировать HashMap по значению, и, учитывая, что по условию задачи оно должно было запускаться на JDK 7 (читать как “фиг вам, а не лямбды”) - через дикую, дичайшую задницу. И так практически везде - Hadoop, Storm, HBase (как же, гм, многословны все эти запихивания и получения значений посредством 100500 геттеров-сеттеров!), Giraph и даже Spark MLlib на последней неделе! Хотя уж последний-то сам Дьявол велел бы делать на Scala… но, видимо, для большинства народа это всё же какой-то rocket science, и в итоге скаловские библиотеки вызывались через джавовские костыли вида Function f = new Function() и тому подобное безобразие. Бррр. Но - чего не сделаешь ради учёбы!
Вообще, этому курсу я без малого благодарна. Как минимум за то, что мотивировал наконец-то взять и покрутить все те модно-крутые штуки, о которых я слышала ещё пару лет назад на вводном курсе по анализу данных, но у меня вечно не доходили руки хотя бы по минимуму применить их на практике. Эти вот MapReduce, потоковая обработка данных, процессинг больших графов, библиотеки для машинного обучения (нет, сейчас уже практически никто не кодит градиентный спуск “руками”)… Теперь я хотя бы представляю себе оно не только в теории, но и на конкретных API (и что забавно, кстати - вроде и не успела ещё даже сертификат-то получить, но забавный синхрон случился, начали в почту и линкедин слать вакансии с упоминанием того же Hadoop). Уже хотя бы ради этого проходить курс стоило. И вам рекомендую, чтобы модные “бигдаты” не проходили стороной, и можно было написать хотя бы простецкий агрегатор-анализатор твитов на том же Storm под какую-нибудь тему (этого в курсе не было, но, поверьте мне, после этих материалов эта задача вам сложной не покажется) и использовать его в качестве ссылки на проект при последующем трудоустройстве.
Короче, пока полёт нормальный. Учимся дальше - и, разумеется, пишем об этом больше. До связи!