?

Log in

Discreet · and · not · discrete.


Do you want to crack jokes about it or do you want me to go?

Recent Entries · Archive · Friends · Profile

* * *
* * *
* * *
https://news.ycombinator.com/item?id=10121054

Оказывается, у Raft есть неприятный вариант отказа:
Raft has a dirty little secret: your cluster breaks when two nodes become partitioned from each other (but not the rest of the cluster) and one of them is the leader.

Script: nodes {1, 2, 3*} where 2 and 3 are partitioned, and 3 is the current leader.

Node 2 fires its leader election timer, broadcasts RequestVotes to 1 and 3, only 1 gets it, but now 3 is ignored for the term of its leadership and 2 is the only node capable of quorum. In a decent implementation 3 will be nack'd the next time it sends an AppendEntries to 1, and 1 will pass along the current term. 3 isn't hearing from the leader so broadcasts RequestVotes (either failing once due to failure to hear the current term from 1, or jumping straight into the next term, which actually increases the ratio of cluster livelock). Leadership bounces back and forth rapidly, making your cluster worthless.
* * *
* * *
Imagination Technologies проводит несколько семинаров по MIPS: http://panchul.livejournal.com/487404.html

MIPS это интересно. ;)

* * *
* * *
Поскольку наше кино в подавляющей доле финансируется государством, то практически всех наших режиссёров можно смело считать равными Уве Боллу (хотя Постал и Ярость последнего просто великолепны).
Tags:
* * *
* * *
Лена поёт ему песенку "Тра-та-та, тра-та-та, мы везём с собой кота...".

В субботу Вася сказал "Тра-та-та", а когда Лена подпела ему, обрадовался чрезвычайно.

Букву Р выговаривает губами, не языком.

Удивительно.

* * *
* * *
* * *
* * *
Заменил на ленивые вычисления, со своей реализацией.

Первое - всё стало летать. Несмотря на наличие замыканий в ленивых вычислениях (то есть, тех же Func<A>).

Второе - у меня есть тест производительности, в котором есть параметр, означающий количество повторений некоей штуки. Для функций я не мог делать его выше 100, всё тормозило. Для ленивых значений я до десятка тысяч дошёл (дальше мне лень ждать).

Третье - профилирование в VS2012 не имеет поддержки функций вообще. Оно падает, не считает время (функция занимает 24 секунды, её содержимое, если посчитать сумму, не работает и секунды) и снова падает. Я профилировал приложение на значении вышеописанного параметра в пару десятков, иначе кранты. Для моих ленивых вычислений я смог поднять его до сотен.

В общем, как обычно у MS - поддержка заявлена, а по сути ничего не работает. Очень неприятно.
* * *
* * *
http://thesz.livejournal.com/1448306.html

Если в векторный вычислитель запихнуть поддержку операций стековой машины, то можно гонять одновременно несколько десятков стековых машин. Со всеми прелестями наподобие внеочередного выполнения, группировки запросов к памяти и так далее.

Надо обдумать.

Пока видимый минус - возможная просадка быстродействия из-за конвейера к вычислителю. Но и это тоже обходится.
* * *
* * *
Вроде, привык, но!

Как только понадобилось сделать сложное и вылезли ФВП, так все. Постоянно думаю, что в C# нормальный порядок упрощения.

* * *
* * *
В .Net есть Lazy<A> и Func<A>. Первые реализуют ленивые вычисления (неэффективно, конечно же), вторые - это отложенные вычисления. Первые это call-by-need (ленивые вычисления), вторые это call-by-name (повторные вычисления всюду).

Что приятно, для программистского глаза они отличаются только производительностью, поскольку оба являются нормализующими порядками вычислений. То есть, сильно отличаются, если смотреть близко. А если издалека, с высоты башни из слоновой кости, то несильно.

Что ещё приятно, так это возможность глянуть внутрь Func<A>, и переписать функцию на более оптимальную.

Таким образом возможно включить в вашу программу медленную, плохо написанную и отвратительно поставленную версию правил переписывания из GHC.

Ваши коллеги вас убьют через пару месяцев, когда всё выяснится, но некоторое время можно почувствовать себя на переднем крае науки о ПО.
* * *
* * *

Previous