В общем, можно экспериментировать, смотреть и предлагать реализовать новую функцию команде разработчиков gitlab. Вот тут, например, предлагается добавить получение permanent link также как в github'е.
Вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, А была бы заменена на Г, Б станет Д, и так далее.
Года три назад, делал систему автоматического определения оптимального передвижения техники по корпусу во время технического обслуживания электролизеров на алюминиевом заводе. По большому счету это NP задача, но она была сведена к достаточно приемлемому алгоритму на базе алгоритма Дейкстры — поиска кратчайшего пути в графе. Работает очень быстро. Так получилось, что из всей команды опыт в алгоритмах был только у меня и делал эту задачу соответсвенно один.
Там же занимался базами данных и понимание сложности очень помогало при профилировании запросов к базе / переписывании меделенных sql-запросов.
Сейчас на текущей работе участвую в разработке WebGL-приложения. Не сказать, что каждый день используются какие-то хитрые алгоритмы, в основном математика, но буквально вчера коллега реализовал дельта-кодирование вершин, что позволило сэкономить объем передаваемых данных на 30%. Алгоритм простой, но не зная его не получилось бы экономии трафика.
Еще друг показывал тестовое задание, которое он решал — по сути это быстрый саггестер для заданного набора строк. Прямолинейное решение O(n) с использованием сбалансированного дерева O(log n).
В общем, мое капитанское мнение такое. Не зная алгоритмы можно кодить и кодить довольно хорошо. Но зная алгоритмическую базу, математику, открывается абсолютно новый класс задач, которые программист без профильных знаний решить, увы, не сможет.
Не хочу сказать, что Apple не помогает своим пользователями (Apple Support работает и работает хорошо). Но все-таки ответы от компании (пусть даже такие как у Microsoft) все же лучше, чем полное молчание.
Хочу поделиться своими наблюдениями относительно Apple.
У меня много разных устройств от Apple. Когда осенью у многих пользователей была проблема с зависанием устройства при доступе к какому-либо сервису, работающему c iCloud, был большой тред на их форуме discussions.apple.com, при этом представителей компании с объяснениями ситуации не было. Apple просто в итоге выпустила обновление с исправлением проблемы.
Сейчас еще есть похожая ситуация, с которой я столкнулся буквально вчера. При обновлении iOS до 9-ой версии на разных устройствах (iPhone'ы, iPad'ы) у многих людей стала отваливаться или просто медленно работать сеть (где-то читал, что они в этой версии что-то сильно переработали в сетевом стеке). В итоге на форуме у Apple опять есть треды (более 50 000 просмотров), где пользователи пытаются решить возникшую проблему, дают друг другу те или иные советы. Но при этом официальных сообщений от компании нет.
С модульностью все ок. Реализация модульности в es6 напоминает модульность в python (import… from '...') hacks.mozilla.org/2015/08/es6-in-depth-modules. Поддержка в браузерах на данный момент (январь 2016) на эксперементальном уровне, но можно использовать babel для транспиляции, в своих production проектах мы так и делаем.
Зайду издалека. Создателям больших фреймворков без физической предметной области, ничего не мешает использовать ООП для решения своих задач. ExtJS со своей коллекцией виджетов яркое этому подтверждение. Итого, у ExtJS предметная область UI, у меня — некие поздравляющие сущности.
Но все-таки искать какую-то серьезную идеалогоческую базу в этом игрушечном примере не надо (комментарий об этом есть в статье). Основная цель статьи заключалась в том, чтобы показать как одна и та же задача решается в ES5 и ES2015. То что пришлось лезть в дебри «composition vs. inheritance» объясняется тем, что мне показалось интересным сделать небольшой экскурс, чтобы назначение Object.assign() было более очевидным.
По ощущениям gitlab сильно отличается от github, но тем не менее некоторые вещи очень похожи, например, возможности markdown разметки, исключение пробельных символов из diff'а. Горячие клавиши отличаются, но их список также доступен по «?».
В общем, можно экспериментировать, смотреть и предлагать реализовать новую функцию команде разработчиков gitlab. Вот тут, например, предлагается добавить получение permanent link также как в github'е.
Пример выше для взлома шифров, зашифрованных методом подстановки, шифр Цезаря — это просто его разновидность.
Взламывается частотным анализом, который программируется довольно просто, вот мои эксперименты с ним https://github.com/myshov/programming_in_haskell/blob/master/lesson5/caesar_crack.hs
Там же занимался базами данных и понимание сложности очень помогало при профилировании запросов к базе / переписывании меделенных sql-запросов.
Сейчас на текущей работе участвую в разработке WebGL-приложения. Не сказать, что каждый день используются какие-то хитрые алгоритмы, в основном математика, но буквально вчера коллега реализовал дельта-кодирование вершин, что позволило сэкономить объем передаваемых данных на 30%. Алгоритм простой, но не зная его не получилось бы экономии трафика.
Еще друг показывал тестовое задание, которое он решал — по сути это быстрый саггестер для заданного набора строк. Прямолинейное решение O(n) с использованием сбалансированного дерева O(log n).
В общем, мое капитанское мнение такое. Не зная алгоритмы можно кодить и кодить довольно хорошо. Но зная алгоритмическую базу, математику, открывается абсолютно новый класс задач, которые программист без профильных знаний решить, увы, не сможет.
У меня много разных устройств от Apple. Когда осенью у многих пользователей была проблема с зависанием устройства при доступе к какому-либо сервису, работающему c iCloud, был большой тред на их форуме discussions.apple.com, при этом представителей компании с объяснениями ситуации не было. Apple просто в итоге выпустила обновление с исправлением проблемы.
Сейчас еще есть похожая ситуация, с которой я столкнулся буквально вчера. При обновлении iOS до 9-ой версии на разных устройствах (iPhone'ы, iPad'ы) у многих людей стала отваливаться или просто медленно работать сеть (где-то читал, что они в этой версии что-то сильно переработали в сетевом стеке). В итоге на форуме у Apple опять есть треды (более 50 000 просмотров), где пользователи пытаются решить возникшую проблему, дают друг другу те или иные советы. Но при этом официальных сообщений от компании нет.
Скорее всего, имеется в виду составное присваивание переменной/константы после объявления с помощью let/const:
Здесь вместо let можно написать const, переменная просто не обновится.
Но все-таки искать какую-то серьезную идеалогоческую базу в этом игрушечном примере не надо (комментарий об этом есть в статье). Основная цель статьи заключалась в том, чтобы показать как одна и та же задача решается в ES5 и ES2015. То что пришлось лезть в дебри «composition vs. inheritance» объясняется тем, что мне показалось интересным сделать небольшой экскурс, чтобы назначение Object.assign() было более очевидным.