#8 Начинаю Сети и NodeJS

#8 Начинаю Сети и NodeJS

- 5 mins

Всем привет, блог стал запаздывать на один день, но думаю в следующий раз сделать все вовремя - в субботу. Решил поделиться с вами некоторыми своими успехами и наблюдениями. На этой неделе продолжал изучал алгоритмы, пробовал что-либо реализовывать, а также как всегда уделял время английскому языку и чтению общих статей из мира Javascript. Наконец до конца прочитал “Грокаем алгоритмы” и книга мне настолько понравилась, что в будущем собираюсь все-таки освоить Кормена или подобную литературу, очень уж интересная тема, а главное все эти алгоритмы применяются в огромном количестве технологий. Конечно я натыкался на некоторые пока сложные для меня темы, вроде динамического программирования, но в любом случае получил общее представление об этой методологии решения задач и возможно даже в темном переулке смогу пояснить за NP-полные задачи. Вот кстати “Mind-map” показывающая структуру этой книги, составленная Йоси Адлером:

Кажется чем-то сложным и объемным, но на самом деле все изложено в очень краткой форме.

О первом своем алгоритме я уже рассказывал в одной из прошлых записей, это был алгоритм бинарного поиска, который меня очень удивил и с помощью которого можно найти элемент в отсортированном списке всего за O(log n). Сейчас уже смог реализовать qsort на Javascript и он даже заработал(!):

qsort

Помимо qsort, очень понравился Алгоритм Дейкстры, который может находить “кратчайший путь” в взвешенном графе. Немного доработал его функцию и теперь кроме суммы (общий вес) этого пути показывается последовательность, т.е сам путь. Код правда немного грязноват и сложен на первый взгляд, но у автора книги он в принципе не намного лучше :smile:. Структуру самого графа и вспомогательных массивов можно найти на моем github :octocat:, сюда эту структуру решил не вставлять, потому что занимает слишком много строк. А вот и сам код:

Например если вызвать функцию для такого грaфа… graph1 …то будет вот такой результат

 
alg(graph) 
// "Cost: 5  Path: end <- A <- B <- start"

Я был изрядно удивлен когда после небольшой отладки код работал даже с более сложными графами вроде этого: graph2

 
alg(graph) 
// "Cost: 9  Path: end <- D <- A <- start"

Хотя в любом случае, поначалу пришлось немного попотеть, но как известно к любой задачи можно применить Метод Фейнмана :ok_hand: и после этого она решается без каких-либо проблем, так я и поступил. Кроме этих алгоритмов был реализован еще и поиск в ширину, он же BFS, код которого тоже находится на github, вот в этом разделе


Что дальше?

Некоторое время спустя я решил, что пора приступать к изучению NodeJS (в курсе Back-end разработчика, на Hexlet), как и советовал мне Кирилл, а также изучить какие-то основы сетей и сетевых протоколов. Пока ничего кроме “Компьютерные сети” Э.Таненбаума мне не посоветовали и прочитав оглавление я понял, что это далеко не самая простая для изучения литература, но с другой стороны мне нужны лишь основы. Так что если у кого-то есть советы по поводу литературы, буду очень признателен. Возможно мне даже и не понадобятся какие-то книги, может быть стоит ограничиться поиском в Google и чтением статей, посмотрим.

Как назло все ближайшие банковские терминалы Сбербанка в моем городе либо убрали, либо отключили из-за тех.обслуживания, поэтому пока не могу ни домен себе купить, ни курсы на Hexlet оплатить, ни оформить заказ на некоторые компоненты для моего интернета. Завтра выберусь в соседний город и попробую ещё раз. Эх, как же хорошо жить в деревне. На самом деле подумываю в будущем переехать в какой-нибудь большой город вроде Санкт-Петербурга или Москвы, мало того что там просто интереснее, так еще и очень часто проходят всякие IT-конференции или meetup’ы на которых я хотел бы побывать, но для таких переездов сначала нужно найти работу, так что “путь” еще совсем не близкий.

Всем пока и до следующей недели! :heart:

bird

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora