Два дня назад решал похожую проблему. Остановился на mPDF, он умеет конвертировать html в pdf, при этом написан полностью на php. Для предпросмотра может не подойти, так как его понимание html отличается от понимания браузеров, но добиться хорошего результата для мягких форм вполне можно.
Когда я сел разбираться в нейронных сетях, то понял, что метод обратного распространения по сравнению с другими методами это как счёты по сравнению с суперкомпьютером. Для объяснения принципов и модельных примеров — пойдёт, для реальных задач он ужасен.
Добро пожаловать в 21й век! Some of the most common usages of ConsoleKit are allowing non-root users to mount removable media and suspending/shutting down the computer through common desktop applications
> кроме написания собственной хэш-функции и матерой обфускации реализации оной
Какой смысл обфусцировать реализацию, если ей можно будет воспользоваться?
Ок, вот вам выкладки. Было N юзеров, каждый со своей солью и хэшем. Вероятность войти под другим паролем — порядка N/(2^128). Теперь добавили M фиктивных хэшей. Вероятность войти под другим паролем — порядка (N+M)/(2^128). Если считать, что M>>N, то вероятность увеличилась примерно в M раз. Даже если M это миллиард (10^9), то это число всё равно ничтожно мало по сравнению с 2^128(=3.4*10^38) и подобным ухудшением безопасности можно принебречь.
Почему это? В базе данных находятся не все возможные хэши, а только их подмножество. Вы берёте любой пароль, хэшируете с солью, получается хэш и с огромной вероятностью его в базе нет — пароль не верный.
Какой смысл обфусцировать реализацию, если ей можно будет воспользоваться?
Вот этот вывод свершенно неочевиден.