Pull to refresh
38
0
Пётр Ерёменко @prg

User

Send message
К сожалению не сталкивался с Kubernetes
p.s. Спасибо freeman1988 за вычитку наскоро переведённого материала.
Нет, не только у вас

Chromium Version 28.0.1500.71 Built on Ubuntu 13.04, running on LinuxMint 15
Спасибо за инвайт, могу теперь поделиться своими.
Последние две недели активно работал с администрированием приложения и алерта не было, а появился он 4 февраля. Меня это немного смутило :(
А триангуляция?
Сдавая недавно курсовую работу, обнаружил, что преподаватели не понимают ООП. А как дело дошло до паттернов проектирования — так плакать захотелось.

Первоначально пытался объяснить вкратце, также как и Вы — теорию. К сожалению не получилось.
Тогда пришлось на примерах, подобных примеру krolser рассказывать:
1. Для чего вообще нужны паттерны (на примере кофе :)
2. Каков смысл в их использовании (на том же примере)
3. Как создать конкретную реализацию в коде, зная паттерн

Так что имхо важно правильно начать. А то, пока на пальцах не объяснишь, некоторые программисты с пятнадцатилетним (а то и более) стажем считают, что:
— паттерн проектирования — это код, который скачали с интернета (с)
— паттерн проектирования — это когда нажал на кнопку, и нечто проверит вашу программу на правильность
— LSP, SRP, OCP — это бред и набор страшных букв

Это я к тому, что у Вас не сказано, что такое паттерн. Хотя бы напишите, что это свод здравых советов к тому, как проектировать приложения. Или нечто иное, что хорошо охарактеризовало бы паттерны…
Первое приближение создано, чтобы быть приближением к финальному алгоритму…
стразу после этого приближения описывается, насколько оно неэффективно
м-м-м… как бы сказать :)

берём брутфорс: два вложенных цикла. Сложность перемножается. То есть O(n*m), где n — длина строки, а m — длина шаблона.

берём алгоритм Рабина-Карпа: Предварительные вычисления сложности O(m) и потом опять два цикла, причём вложенный практически не запускается в холостую. Если взять base и q очень большими (но всё же простыми) числами, влазящими в int32, то на практике внутренний цикл можно не запускать — с огромной вероятностью совпадение хеш-значений будет свидетельствовать о совпадении строк.

Таким образом, сложность алгоритма в среднем случае O(m+n), что меньше O(m*n). В худшем случае сложность будет O(n*m), хотя вероятность такого случая на практике крайне мала.
«умножение кода символа на экспоненциально зависящее от позиции этого самого символа»
извините, имел в виду «умножение кода символа на экспоненциально зависящее от позиции этого самого символа число»

Пожалуйста, читайте внимательнее.

private int GetHashOfString(string s, int q, int b)
{
int result = 0;
int length = s.Length;

for (int i = 0; i < length; i++)
result = (b * result + s[i]) % q;
return result;
}

Разве умножение кода символа на экспоненциально зависящее от позиции этого самого символа может дать симметричную хеш-функцию?
на главной сразу после habrahabr.ru/linker/go/48275/ смотрится отвратно, ИМХО.
про то, как перейти от брутфорса к МП, а от МП к КМП хотел в следующий раз обзор сделать… вот только не знаю — есть ли смысл, поскольку:
1) есть хорошие визуализации, вроде этой (спасибо el777 )
2) немногим это будет полезно

хотя…
я конечно стараюсь писать то, как я это представляю, ознакомившись с другими источниками. может быть кому-то будет интересна мелочь, которую он не замечал (в принципе это и есть повод писать и читать статьи — менять систему отсчёта для знакомых вещей так сказать).

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

Information

Rating
Does not participate
Location
Бишкек, Кыргызстан, Кыргызстан
Date of birth
Registered
Activity