Previous Entry Share Next Entry
2016-01

топор-driven девелопмент

я просто оставлю это здесь -
http://code.google.com/p/android/issues/detail?id=42265

что самое удивительное, все еще находятся люди, которые пытаются убедить меня в том, что Андроид - это лучшая мобильная ОС :)

(там дело мутное, может окажется что линух вообще этому багу тоже подвержен, а на андроиде он просто больше всех проявляется, но не похоже)

> It's worth noting that Linux is one of very few OSes that have a blocking RNG device
http://forum.xda-developers.com/showthread.php?t=1987032

а когда людям дают человеческий асинхронный апи - они ОПЯТЬ строят из него говнокод

> За пол-дня были сделаны свои реализации PointF, RectangleF, XmlDocument, System.IO.File и пр., которые по синтаксису такие же, как в .Net 2.0-4.0, но внутри используют уже реалии Windows Store. Для работы с ресурсами таки пришлось смириться с костылями для «осинхронивания асинхронов»:
http://habrahabr.ru/post/163773/

залетевший дятел таки разрушит цивилизацию, да

This entry was originally posted at http://wizzard.dreamwidth.org/257949.html. It has comment count unavailable comments. Please comment there using OpenID.

  • 1
sassa_nf January 10th, 2013
Про RNG.

Подтверждаю, что randomness depletion есть и у обычных линухов.

Выражается в жутких тормозах, если пытаться запустить несколько приложений, правильно инициализирующих свою криптографию. Линух ест по несколько байт энтропии для генерации случайных адресов, потом крипто модуль ест по несколько десятков байт для инициализации генератора псевдослучайных чисел.

Дела обстоят лучше у платформ с дешёвым оборудованием. Платформы с дорогим и надёжным оборудованием не имеют достаточно энтропии ни в работе диска, ни в работе HCA.

wizzard0 January 10th, 2013
> Платформы с дорогим и надёжным оборудованием не имеют достаточно энтропии ни в работе диска, ни в работе HCA.

Об этот феномен я уже головой приложился недавно, ага. Идеальный компьютер имеет ноль энтропии.

109 January 10th, 2013
казалось бы, должно быть наоборот. повсеместное распространение high-resolution таймеров должно было свести проблему практически на нет.

max630 January 10th, 2013
urandom же есть. Если совсем гарантиворанно настоящая энтропия не нужна - можно брать оттуда. Это уже особенность реализации библиотеки что она всегда из random кормится

wizzard0 January 10th, 2013
Является ли библиотека частью ОС, если юзер не может отказаться от ее использования вне зависимости от набора установленных приложений?

Так ли важен для ASLR (это не библиотека, это компонент ядра, если что) криптографически стойкий рандом, при том, что на 32-битных системах с непустым адресным пространством и 4к страницами энтропии выходит 3-10 бит на адрес?

Ну, такое...

sassa_nf January 10th, 2013
urandom is not secure.

1. получить достаточно длинный seed из urandom.
2. с помощью SHA-256 получить цепочку seeds, которые будут получать следующие пользователи
3. подождать, пока кто-то другой возьмёт значение из urandom.
4. взломать.

я вообще плохо понимаю, почему нельзя его улучшить хотя бы так:

1. инициализировать SHA-n из random.
2. взять из random ещё N байт и никому не отдавать.
3. как и сейчас, с помощью SHA-n генерировать следующие X байт
4. перед возвращением urandom байт, дохешировать их случайными байтами, взятыми на шаге (2)

т.о. никто не в курсе, какое состояние SHA-n на шаге (3) и никто не в курсе, какие байты взяты на шаге (2).

justy_tylor January 10th, 2013
Дотнетовский async сам по себе говнокод. Внезапно "ужас, разработчики не умеют выделять GUI-тред" и выложили неразборчивую кучу кирпичей, результат предсказуем.

wizzard0 January 10th, 2013
Я не фанат async/await.

EDIT: в смысле, апи таки должно быть асинхронным. Но конкретно такое языковое решение - имхо больше запутывает, чем помогает.

А вот программирование явно надо преподавать по-другому. Уже давно гуи стоит классифицировать как системы реального времени, серверы - как системы массового обслуживания, ну и со всеми вытекающими последствиями.

Edited at 2013-01-10 01:19 pm (UTC)

justy_tylor January 10th, 2013
Низкоуровневый API таки да. Но прикладной синхронный нужен - спокойно осуществлять подгрузку ресурсов во втором треде.

А программирование... Если поставить адекватные требования к софту, то большинство программистов придётся заново учить, а из вебдевелоперов 90% сразу в дворники, ибо безнадёжны. Увы, мечты.

109 January 10th, 2013
> прикладной синхронный нужен - спокойно осуществлять подгрузку ресурсов во втором треде.

кстати да. а то наблюдаю тенденцию - заворачивать каждый ресурс в отдельный асинхронный загрузчик. looks nice до тех пор, пока не возникают dependencies, или их мало. как только их много, загружать всё последовательно в отдельном треде становится гораздо предпочтительнее в плане readability.

Edited at 2013-01-10 07:26 pm (UTC)

nponeccop January 10th, 2013
У тебя слабые аргументы. Хотя, начать надо с того, что "лучшая мобильная ос" - это оценочное суждение :)

Блокирование /dev/random тут вообще не при чём, она элементарно решается прямыми руками, ты же это понимаешь. У разрабов руки кривые, что они не позаботились об обработке ситуации блокировки или о запуске локального CSRNG, если это их устроит.

> а когда людям дают человеческий асинхронный апи - они
> ОПЯТЬ строят из него говнокод

единственное преимущество асинхронного апи - это скорость. Кооперативная многозадачность таки вычислительно эффективнее вытесняющей. Поэтому низкоуровневый апи должен таки быть асинхронным. В этой связи можно вспомнить, что в линуксе нет асинхронных примитивов ядра для работы с файловой системой.

Конечные библиотеки должны быть синхронными, если только не ставится задача производительности любой ценой.

wizzard0 January 10th, 2013
>У тебя слабые аргументы.
я утверждаю не то, с чем ты пытаешься спорить

>Блокирование /dev/random тут вообще не при чём, она элементарно решается прямыми руками, ты же это понимаешь. У разрабов руки кривые
Вообще-то, я именно об этом и пишу. Одна из многих мелочей, которые много лет портят репутацию платформе без каких-то особенных на то причин.

> В этой связи можно вспомнить, что в линуксе нет асинхронных примитивов ядра для работы с файловой системой.
imho POSIX, к которому некоторые зачем-то стремятся, вообще один из худших стандартов, если уж на то пошло

> Конечные библиотеки должны быть синхронными
для GUI-приложений? really?

nponeccop January 10th, 2013
> для GUI-приложений? really?

System.IO.File нахрена гуи-приложению, скажи. Пусть шлет себе мессаджи бекенду и всё.

wizzard0 January 10th, 2013
конфиг читать, говорит автор на хабре

max630 January 10th, 2013
> в линуксе нет асинхронных примитивов ядра для работы с файловой системой

Если под асинхронными примитивами вы не имеете ввиду что-нибудь безумного типа оставить заказ на операцию в определённом месте памяти и дождаться пока ядро её по своему расписанию прочитает, то это всё равно проходит через сисколл, так что какой смысл в асинхронности? Поиметь дополнительно проблем с конфликтами?

nponeccop January 10th, 2013
Ну это же типичный аргумент "нинужен". Я на такое не отвечаю.

max630 January 10th, 2013
давайте сначала выясним что вы всё-таки имели ввиду, а то может и нинужен говорить не придётся

max630 January 10th, 2013
А где, кстати, почитать про асинхронные операции не в линуксе, что-то я не нахожу

wizzard0 January 10th, 2013
http://technet.microsoft.com/library/cc767885.aspx вот в винде, например

> все равно проходит через сисколл
ээмм, и что? все равно синхронное IO медленнее, чем асинхронный сисколл

nponeccop January 10th, 2013
http://docs.oracle.com/cd/E19683-01/816-5042/chap7rt-51/index.html и т.д.

В-общем, есть KAIO в линуксе оказывается, в зачаточном состоянии, и user mode posix aio, который не в зачаточном, но не торт.

bik_top January 10th, 2013
> топор-драйвен девелопмент

Дривен же.

wizzard0 January 10th, 2013
Fixed.

Алсо, Для прослушивания музыки необходимо установить Flash Player

NSFW

bik_top January 10th, 2013
> Для прослушивания музыки необходимо установить Flash Player

Для Ютюба тоже нужен?

wizzard0 January 10th, 2013
youtube html5 же

wizzard0 January 10th, 2013
музыко такое себе.

а дривен я просто забываю постоянно -_-

  • 1
?

Log in

No account? Create an account