ANNO — сайт itnuts.ru

Блог, посвящённый IT-тематике, с примерами скриптов на PowerShell для создания паролей и обработки лингвистических особенностей русского языка.

Домен
itnuts.ru
Сайт
http://itnuts.ru
Отрасль
Информационные технологии
Ключевые слова
IT, PowerShell, скрипты, пароли, случайные символы, локализация, русский язык, многоязычность, программирование, автоматизация

Технологии

  • cms_and_site_builders: WordPress
  • javascript_libraries: jQuery
  • seo_signals: robots_meta

О сайте

Title: Блог об ИТ

---

[Skip to content (Press Enter)](content)

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

На моём рабочем столе всегда достойное место занимает 6 строчек Powershell-скрипта:

$pw=-Join("abcdefghijklmnopqrstuvwxyz".ToCharArray()|Get-Random -c 6) + -Join("ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()|Get-Random -c 6) + -Join("1234567890".ToCharArray()|Get-Random -c 6) + -Join("-@".ToCharArray()|Get-Random -c 1) $pw=($pw -split '' | Sort-Object {Get-Random}) -join ''

При желании всегда можно изменить сложность, удалить внешне схожие символы (цифра 0 и буква O; заглавная I и прописная l).

Много лет назад, когда проект Teampass назывался cpassman, в нём был косяк с локализацией интерфейса. Если в Web UI было несколько папок, то в английской версии было написано: “34 Folders”, а в русской – “34 Папкаs”. Это было очень смешно.

Действительно, в английском всё просто: есть единственное и множественное число. И всё. В русском, не будь он могуч, ситуация несколько сложнее:

- 21 папка; - 44 папки; - 17 папок.

Окончания пляшут, как им вздумается. К счастью, изобретать велосипед не нужно. Логика формирования окончания описана и доступна для всех языков: http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html

Вооружившись Powershell, перекладываем логику на бумагу:

Function Get-PluralForm() {Param([int]$num,[string]$pf1,[string]$pf2,[string]$pf3) switch($num) { {$num%10 -eq 1 -and $num%100 -ne 11} {"$num $pf1"} {$num%10 -ge 2 -and $num%10 -le 4 -and ($num%100 -le 10 -or $num%100 -ge 20)} {"$num $pf2"} Default {"$num $pf3"} } }

И получаем результат:

PS C:\ Get-PluralForm 22 день дня дней 22 дня

Сниппет прекрасно ложится на любой код. А, главное, – экономит нервные клетки перфекционистов. Если вы понимаете, о чём я

Каноническая страница: itnuts.ru

ANNO — сайт itnuts.ru | Строка