- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
function generate_password($number) {
$arr = array('a','b','c','d','e','f',
'g','h','i','j','k','l',
'm','n','o','q','p','r','s',
't','u','v','w','x','y','z',
'A','B','C','D','E','F',
'G','H','I','J','K','L',
'M','N','O','Q','P','R','S',
'T','U','V','W','X','Y','Z',
'1','2','3','4','5','6',
'7','8','9','0','_');
$pass = '';
for ($i=0; $i<$number; $i++) {
$index = rand(0,count($arr)-1);
$pass .= $arr[$index];
}
return $pass;
}
И ведь не лень всё перечислять было?! А по{man}'ить Array-функции лень... И написать что-то типа, хм...
$alnum_ar = array_merge(range('a','z'),range('A','Z' ),range(0,9));
array_push($alnum_ar,'_');
Еще полезно убрать все ненужные пробелы. Форматирование конечно пострадает, зато файл будет меньше весить, с большей вероятностью застрянет в кеше винта.
код должен быть в первую очередь читабельным, а для опкода длина переменных роли не играет или вы всё еще не используете опкод кеш?
я просто люблю, когда пыхапешники рассуждают об оптимизации)
пыхеры неасилили даже AST и тем более оптимизирующие проходы. так что ни о каких оптимизациях в пыхоговне и речи нет.
а дальше - дело разраба как он читает маны и составляет алгоритмы.
с подачи ГК почитал бложик Расмуса - банальная двуличная шавка.
надо все делать руками и сторонними продуктами
хочешь не перепарсивать по 20 раз?
пожалуйте в еакселератор
хочешь держать объекты в памяти?
пожалуйте в мемкеш
хочешь делать что-то в фоне?
пожалуйте в крон
хочешь мапить урлы?
пожалуйте в мод_реврайт
все приложение -- набор кучи костыликов и перемычичков
манифест пыховца: к черту фреймворки
я все на коленке сделаю
пхп сам по себе сборище расширений пользующих все что сдеано сторонними руками. и что?
а зенд рулит и педалит. и солар тоже. не надо ляля.
Я привел Вам 3 примера того, когда в ПХП надо использовать костыль.
Вы, полагаю, с ними согласны, верно?
P.S. А строка работает наверно быстрее чем массивы раз в 10. А на счет опкода, пхп хранит название переменных, и иногда вычисляет хеш от названия переменной, естественно вычислять хеш от длинных названий дольше, но это такая мелочь по сравнению с остальным кодом.
Вот над чем стоит подумать:
- если надо поменять список доступных символов, будете лезть в код функции?
- если понадобиться генерировать пароли разным набором символов, будете копипастить методы, т.е. generate_password, generate_strong_password, generate_very_strong_password_with_russi an_symbols и т.д.?
1) Укоротить название функции, например MakePass!
2) Вынести строку с символами в heap-memory (global scope)
3) В строке для генерации перечислить все видимые ASCII (чтоб
никто не выё.., что символом мало для генерации паролей), лучше вручную,
конечно (опмитизатор в гору не пойдёт... гы гы)
4) strlen вызвать один раз перед циклом, а не $num-раз в цикле!
5) $i инициализировать перед циклом for, а блок инициализации for оставить пустым;
6) Имена переменных делать по возможности меньшими, чтобы внутреннюю таблицу
символом пощадить, да и вообще переменных поменьше.
7) В конце, byte-код из всего полученного сделать
1) 2) 3) 4) 6) - задротство.
А. еще вернее будет насрать на все и взяв диапазон ASCII по номерам + рандом + цикл составлять пароли. и не вые....ся :)
вот таким гавнокодом например :)
> 1) 2) 3) 4) 6) - задротство.
4 === правильное задротство?
и его вариаций?
это как - уникальный, еще уникальнее, еще более уникальная уникальность? ппц :-D
там еще внизу жесткие примеры идут.
$unique = md5( uniqid() ); // 32 characters long
уникализация. ога.
что бы для надежности
я же говорю: когда пхпшники говорят -- петросяны молчат)
//ойбля. пишу матан пхпшным синтаксисом. ну пиздец.
Даже статьи написаны о столкновениях в хэш-функциях:
http://eprint.iacr.org/2004/199
http://eprint.iacr.org/2004/264
http://eprint.iacr.org/2006/105
http://cryptography.hyperlink.cz/MD5_collisions.html
Все ссылки из Википедии.
P.S. Прошу прощения за троллинг, не удержался. ;-)
да, несколько секунд
qwertyuiopasdfghjklzxcvbnm
http://typingzone.com/?page=contest_az
http://typingzone.com/?page=contest_za
набор на клаве в порядке 1)abcdefghijklmnopqrstuvwxyz; 2) zyxwvutsrqponmlkjihgfedcba.
извините, но я умею как программировать, так и набирать на клавиатуре очень быстро, простите за занудство
хм.
и что даже чайку не попьете над проектированием не задумываетесь долго?
qazwsxerdcftvbgyunhjmikolp
с 5й попытки получился алфавит
(я про набор алфавита)
запихнуть, но об этом-то уже был коммент! Так, что Внимания у кого-то
не хватило.
*trollface*