> Ctrl+Shift — циклическое переключение остальных раскладок
Чисто русская фишка :) По умолчанию ведь Alt+Shift. и надо сказать, Alt+Shift лучше чем Ctrl+Shift. Чем? А очень просто: когда вы редактируете текст (или пишете программу в частности), вы чтобы выделить все слово нажимаете… что? да, верно — Ctrl+Shift+Left/Right. И, ой! А что это язык переключился?!?
Ещё есть KdbFlip — software.muzychenko.net/rus/
Циклически меняет раскладку по CapsLock (настраиваемо).
Но главная его фишка в «нефиксирующем переключении». CapsLock работает для раскладок, как Shift для регистра. Например, нажатие CapsLock+й при активной русской раскладке введёт q. Работают также и комбинации с Shift: CapsLock+Shift+ъ введёт }
Очень удобно, когда в тексте на одном языке встречаются редкие символы из другого
Кстати если ввести впереди дефис, то результат поиска – все файлы кроме pe.pdf, опять загадка.
Похоже для windows это не «дефис» а «минус». Получаем как в поиске google: минус значит «кроме, без». Если без минуса оно не находит pe.pdf, то с минусом как раз его и должно найти.
Стоит, наверное, добавить, что на принимающей стороне такой одноразовый пароль надо проверять не только с учётом текущего 30-секундного интервала, но также предыдущего и следующего.
Вот почему:
1) Допустим, время у Алисы hh:mm:29 и counter получился равным xxx0. Пока она вычисляла хэши и пересылала пароль Бобу, у того уже наступило hh:mm:31. Соответственно, Боб получит значение counter = xxx1, и пароль Алисы окажется не верным.
2) Допустим, часы у Боба отстают на 3 секунды. В hh:03:00 Алиса посчитала и отправила пароль. Боб же получил его, когда на его часах всё ещё hh:02:59. В этой ситуации его counter уже будет отставать на 1. И пароль снова окажется не верным.
Фактически, это расширит «окно» действия пароля до 90 секунд.
Чтобы снизить влияние этого фактора, можно ввести дополнительные проверки — учитывать предыдущий/следующий интервалы, только если текущее время близко к ним.
Скажем, проверять предыдущий, если time.time() % 30 < 5, а следующий, если time.time() % 30 > 25.
например, в IntelliJ IDEA (даже в бесплатной community edition) есть богатый набор разнообразнейших инспекций для статического анализа кода www.jetbrains.com/idea/
например, в IntelliJ IDEA (даже в бесплатной community edition) есть богатый набор разнообразнейших инспекций для статического анализа кода www.jetbrains.com/idea/
вся портянка про «Далее требовалось перед сборкой в jar-архив скидать все ресурсы (картинки и .properties-файлы) в директорию со скомпилированными .class-файлами.» не нужна, если ресурсы положить в scr/main/resources вместо src/main/java — Maven тогда сам сделает именно то, что вы «навелосипедили» (он даже сам догадается не фильтровать картинки)
немного оффтопик, но, может, кто-то может сделать что-то подобное с панелью баннера в MS Office Starter Edition? (в смысле, автоматически прятать её, когда запускается Word / Excel)
я сразу на «сути» не выкладывал линки, так как если кому понадобится, то в Buzz можно оставить вопрос или комментарий. А «сути» таких возможностей не содержат :)
альтернатива собственного производства: profiles.google.com/DMitskevich/posts/NnWhTNT91C9
чтобы не держать компьютер в рабочем состоянии, я его просто «усыпляю». как только я подключаюсь к нему по туннелю, он «просыпается». (видимо срабатывает Wake on LAN :)
1) а) если вы считаете, что первый алгоритм, это алгоритм с «откатами», тогда у меня нет претензий.
Единственное что хочется заметить, что из этого алгоритма легко вытекает сложность О(nm): у нас два вложенных цикла, один длиной n, другой — m. А вот сложность для второго алгоритма не так тривиальна. Поэтому мне показалось. что вы говорили именно о втором алгоритме, объясняя что из-за возможных «откатов» мы получаем О(nm).
б) >>… а так даже если вторая буква из пятисот не совпала, вы все-равно все пятьсот шерстите.
Посмотрите алгоритм ещё раз внимательнее. Алгоритм выходит сразу после нахождения несовпадения. Кстати использованный прием рекомендуется для избежания break-переходов.
2) рекуррентное соотношение не имеет ничего общего с рекурсией. Числа Фибоначчи, факториал — это все рекуррентные соотношения. А обычный способ вычисления рекуррентного соотношения — это не рекурсия, а динамическое программирование.
3) хорошо, теперь буду знать, что «лес деревьев» == «бор» :)
1) в Решении «в лоб» по моему вы намудрили с «откатами». Вот оно решение в лоб:
for (int i=0; i<str.length-s.lenght; i++) {
if (str[i]==s[0]) {
boolean f = true;
for (int j=1; j<s.length && f; j++) {
f = str[i+j]==s[j];
}
if (f) return i;
}
}
return -1;
а теперь попробуем реализовать алгоритм с «откатом». Получится что-то типа:
int f = 0;
for (int i=0; i<str.length; i++) {
if (str[i]!=s[i-f]) {
i -= i-f; // "откат"
f = i+1;
}
else if (i-f+1==s.length) {
return f;
}
}
return -1;
не очень тривиально, как вам кажется?
2) вычисление Z-функции и Алгоритм Кнута-Морриса-Пратта (КМП) по видимо можно записать в виде рекуррентного соотношения и вычислить при помощи динамического программирования.
Запись рекуррентного соотношения займет всего несколько строк, и заменит страницу текста с (не очень понятными) объяснениями и рисунками.
3) вопрос по термину «бор (trie)». Никогда не слышал о таком. Может быть вы имели ввиду «лес деревьев»?
А у меня следующий вопрос — как Sphinx берет данные для индексирования? Он с каким то интервалом проходит весь view catalog? Или может тригеры какие нибудь вешает в базу на изменения данных? view catalog в конечном счете может оказаться очень большим. И в каком режиме Sphinx читает view catalog — dirty read? Или он лочит все таблицы?
Если используется словарь «en-ru(yo)» (или «en-ru(ie)»), то Firefox определяет его и показывает в списке, как просто «English» (стандартный только-английский словарь там обозначен «English / United States») — может, в этом дело?
Если использовать словарь «en-ru», то в меню он будет обозначен «English / Russian Federation» —
(ini-файл c названием использует только Опера)
Так ведь именно это такой словарь и даёт (особенно если учесть, что алфавиты не пересекаются). Единственный (теоретический) недостаток в том, что работать такой «комбинированный» словарь может медленнее, чем два раздельных словаря с предварительным определением языка. Но кажется мне, что если это «определение» делать более-менее универсальным (а не ограничиваться только русским и английским), то и скорость работы вполне может отличаться в другую сторону.