Mar. 10th, 2016

thedeemon: (vajrasattva)
В это время важно не упустить случай. Увидеть его крылья, увидеть его перья, и вдруг удивиться "а кто это теперь я?" Кто-то вспомнит про Кастанеду и орла, но всякий тибетский буддист тут легко узнает класс медитаций с визуализациями. "Если долго плакать.." - это первая фаза, сосредоточение. Потом идет мысленное рассматривание определенной 3D картины со всеми деталями ("перьями"), каждая из которых соотносится с определенными аспектами ума, концентрация на этом образе, и как результат медитирующий сам становится тем буддой, что представлял, сживается с образом, узнает его в своем уме. Ну а дальше про "сгореть и вернуться" тоже понятно - отбросить старое тело со старой кармой, вернуться бодхисаттвой для помощи другим.
Разрешаются и другие интерпретации. :)
thedeemon: (office)
Недавно спрашивали про использование компайл-тайм рефлексии в D, покажу пример. Есть такая знаменитая работа про бесплатные теоремы, где рассказывают о радостях генериков, ничего не знающих о том, что за типы у них в параметрах. Это часто позволяет по одному типу функции понять, что она будет делать, т.к. вариантов что ей делать у нее немного, ибо кроме передачи туда-сюда аргументов она, не зная ничего о них, почти ничего и не может с ними делать. Но что нам достается бесплатно мы часто не ценим, поэтому стоит обратить взор на обратный подход, где теоремы платные, по 72-139 рублей (без НДС) за штуку, в зависимости от набора используемых аксиом (с аксиомой выбора дороже!). Я имею в виду случай, когда генерик-функция, получая на вход тип Т, может во время компиляции позадавать про Т разные вопросы, что там у него внутри и что с ним можно делать, и в зависимости от ответов делать то или иное. Read more... )
void receive(Reactor)(File pipe, Reactor r) {
    uint[2] headerBuf;
    auto header = pipe.rawRead(headerBuf);
    if (header.length < 2) throw new CommException("eof"); 
    switch(header[0]) {
        foreach(T; MessageTypes!Reactor) {
            case MsgTypeHash!T:
                auto data = header[1] > 0 ? pipe.rawRead(new ubyte[header[1]]) : null;				
                return r.react(decerealise!T(data));
        }
        default: ... // обработать случай неизвестного сообщения
    }       
}

Read more... )

Profile

thedeemon: (Default)
Dmitry Popov

May 2017

S M T W T F S
 1234 56
789 10 11 1213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2017 04:47 pm
Powered by Dreamwidth Studios