(no subject)

Jan. 26th, 2026 11:47 am
norian: (Default)
[personal profile] norian
Гибридная Графовая База Данных (отвертка с моторчиком для моделирования моделей)

День 8. Индексы : дерево поиска, фингеры.

Можно было бы сделать унылое красно-черное бинарное дерево, но лучше попробовать дерево с чанками, которые для улучшения производительности помещаются в кэшлайн подобно чанком цепи индексов. Это называется "n-ary tree" или "m-ary tree" или "N-M tree" в зависимости от фазы луны.

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

source egFingers.h

#pragma once
#include <iostream>
#include <fstream>
#include <vector>
#include "egCoreIndexTypes.h"
#include "../service/egByteArray.h"
#include "../service/egFileType.h"
template <typename KeyType> class EgIndexes;
// Finger in the file: KeyMin KeyMax nextChunkOffset isLeaf(root only)
// Chunk in the file:  FingersArray parentFingerOffset chunkIsLeaf fingersCount 
template <typename KeyType> class EgFingers { public: // fingers tree (N-M type) part of indexes-fingers complex
    const egMaxStreamSizeType nextChunkOffsetPosition  = sizeof(KeyType) * 2; //  + sizeof(keysCountType); 
    const egMaxStreamSizeType oneFingerSize        = nextChunkOffsetPosition + sizeof(uint64_t);  // last is next chunk offset
    const egMaxStreamSizeType rootHeaderSize       = oneFingerSize + sizeof(uint8_t); // bool isLeaf as uint8_t
    const egMaxStreamSizeType parentChunkOffsetPosition = egIndexesSpace::egChunkCapacity * oneFingerSize;
    const egMaxStreamSizeType chunkIsLeafPosition  = parentChunkOffsetPosition + sizeof(uint64_t);
    const egMaxStreamSizeType chunkCountPosition   = chunkIsLeafPosition  + sizeof(uint8_t);
    const egMaxStreamSizeType fingersChunkSize     = chunkCountPosition  + + sizeof(keysCountType); // bool isLeaf as uint8_t
    const bool  isRootFinger  = true;  // mnemonic
    const bool  notRootFinger = false; // mnemonic
    bool        rootFingerIsLoaded {false};
    bool        anyMinMaxChanged;
    std::string fingersFileName;
    egFinger<KeyType> rootFinger;
    egFinger<KeyType> parentFinger;
    egFinger<KeyType> currentFinger;
    egFinger<KeyType> newFinger;
    egFinger<KeyType> lastFinger;
    EgIndexes<KeyType>*               indexChunks {nullptr}; // ptr to related indexes object, set by upper IndexesFiles interface class
    std::vector < egFinger<KeyType> > fingersChain;          // store fingers path for update
    EgFileType        fingersFileStream;     // file operations
    EgDataStream*     localStream {nullptr}; // chunk buffer operations
    EgFingers(std::string a_fingersName, EgIndexes<KeyType>* indexChunksPtr);
    ~EgFingers() { delete localStream; }
    inline void InitFinger(egFinger<KeyType>& theFinger);
        // top API
    bool AddNewRootFinger(KeyType& Key, uint64_t indexesChunkOffset);
    bool FindIndexesChunkToInsert(KeyType& Key); // sets currentFinger and fingersChain
    bool UpdateFingersChainUp();        // uses currentFinger and fingersChain
    bool AddNewUpdateCurrentFinger();   // uses current and new fingers and fingersChain
    bool DeleteCurrentFingerByChain();  // uses currentFinger and fingersChain
    bool UpdateFingersByBackptrs();     // uses currentFinger (another index chunk, can't use chain)
    bool DeleteFingerByBackptrs();      // uses currentFinger (another index chunk, can't use chain)
        // files
    bool CheckIfFingerFileExists(){ return fingersFileStream.checkIfExists(); }
    bool DeleteFingersFile();
        // file ops
    inline bool LoadRootFingerFromFile (egFinger<KeyType>& theFinger, bool loadRootIsLeaf);
    inline bool StoreFingerToFile  (egFinger<KeyType>& theFinger);
    inline bool LoadFingersChunk  (uint64_t& chunkOffset); // to localStream-> bufData
    inline bool StoreFingersChunk (uint64_t fingersChunkOffset); // from localStream-> bufData
    inline bool StoreParentChunkOffsetDirect(uint64_t fingersChunkOffset, uint64_t parentChunkOffset);
    void SwapFingers(); // swaps current and new fingers for finger tests (if new key < current key)
        // chunk operations
    inline void ClearFingersChunk ();
    inline void ReadFingerFromChunk (egFinger<KeyType>& theFinger, const int fingerPositionNum);
    inline void WriteFingerToChunk (egFinger<KeyType>& theFinger); // QDataStream &localFingersStream,
    inline void ReadChunkMinMaxToParentFinger (egFinger<KeyType>& theParentFinger);
    inline bool GetParentFingerByOffset(uint64_t fingersChunkOffset, uint64_t nextOffset); // uses current finger
        // finger ops
    inline bool FingerIsRoot(egFinger<KeyType>& theFinger);
    inline void GetCountFromChunk(keysCountType& refCount);
    inline void WriteCountToChunk(keysCountType theCount);
    inline void GetCountDirect(keysCountType& refCount, uint64_t& chunkOffset);
    inline void GetChunkIsLeaf(uint8_t& isLeaf);
    inline void UpdateChunkIsLeaf(const uint8_t chunkIsLeaf);
    inline void GetChunkParentOffset(uint64_t& parentChunkOffset);
    inline void UpdateChunkParentOffset(uint64_t parentChunkOffset);
        // insert ops
    inline bool AppendNewFingersChunk(egFinger<KeyType>& theFinger);
    inline bool AddNewTopLevelChunk(); // ex AddNewSubRootChunk(); FIXME level number used
    inline void MoveTailToInsert(egMaxStreamSizeType fingerPositionBytes, egMaxStreamSizeType bytesToMove);
    inline void SaveLastFingerOfChunk();
    inline bool InsertNewFingerToChunk(); // bool replaceLast InsertSplittedFinger();
    // int SplitFingersChunk(); // TODO
        // update ops
    inline bool UpdateMinMaxByFlags(egFinger<KeyType>& theFinger);
        // delete ops
    inline bool DeleteFingerFromChunk(); // uses current and chunk
    inline bool DeleteFingersChunk(uint64_t fingersChunkOffset);
    inline bool DeleteTopChunk();
        // lookups
    typedef bool (*CompareFunctionType) (KeyType&, KeyType&);
    // static bool CompareEQ (KeyType& currentValue, KeyType& key) {return (currentValue == key);}
    static bool CompareGT (KeyType& currentValue, KeyType& key) {return (currentValue > key);}
    static bool CompareGE (KeyType& currentValue, KeyType& key) {return (currentValue >= key);}
    static bool CompareLT (KeyType& currentValue, KeyType& key) {return (currentValue < key);}
    static bool CompareLE (KeyType& currentValue, KeyType& key) {return (currentValue <= key);}
    inline bool OpenFileStream();
    bool FindIndexChunkEQ(KeyType& Key);    // first finger for key greater or equal then finger's min value
    inline void FindFirstFinger(KeyType& Key, CompareFunctionType predicate);
    inline void FindLastFinger(KeyType& Key, CompareFunctionType predicate);
    bool  FindIndexChunkLess(KeyType& Key, CompareFunctionType predicate);
    bool FindIndexChunkLT(KeyType& Key) { return FindIndexChunkLess(Key, CompareGE); }
    bool FindIndexChunkLE(KeyType& Key) { return FindIndexChunkLess(Key, CompareGT); }
    bool  FindIndexChunkGreater(KeyType& Key, CompareFunctionType predicate);
    bool FindIndexChunkGE(KeyType& Key) { return FindIndexChunkGreater(Key, CompareLT); }
    bool FindIndexChunkGT(KeyType& Key) { return FindIndexChunkGreater(Key, CompareLE); }
        // debug
    void PrintFingerInfo(egFinger<KeyType>& fingerInfo, const std::string theMessage);
};

andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд.

+2 синоптики перенесли на середу, але –2–3 – теж добре. Найгірше позаду (а у росіян – ще тільки попереду). Оскільки з опаленням, водою, та й з електрикою нашому будинку в цілому пощастило, то найбільше ці три тижні мене вкурвили ожеледицею. Аж сіпаюсь, коли під час засинання здається, що ноги ковзають.

Чекаю на перемогу.
assassins_cloak: (Default)
[personal profile] assassins_cloak
Із записки Генрика Єжи Щеснєвського (1910–2002), польського освітнього діяча, учасника підпільного руху періоду Другої світової війни, у січні 1944 р. – в’язня концтабору Майданек, до Казимири Яросінської (псевдо «Бабуня»):

Бабунько Кохана! у вівторок я віддав цілу пачку листів і в понеділок, а також пачку квітів для Гал і Лі – напевно вчора тобто у вівторок дійшли – але не маю відповіді, бо сьогодні всіх цивільних робітників відправили геть – і плекаю надію, що завтра будуть – а може навіть лист Казі.

До Оскара д. складно дістатись, але я був і здаля його бачив – лежить у 8 блоці тифозного відділення у д-ра Гануша – з яким я говорив про хворого, гарячка 39,8 – по-лікарському він у формі – це значить у стадії переходу кризи – писати і розмовляти не дозволяють – вчора я хотів, щоб на моєму місці його бачила Бабуня – але це неможливо – як мине криза і буде притомний – буду у нього, сам занесу олівець і папір і він при мені напише – Д-р Гануш, хоч строгий, для мене це зробить – крім того, він під опікою д-ра Томашевського і сина, який працює там санітаром – обоє знайомі Казі – і теж обіцяли зайнятись Оскаром – Д-р Гануш стверджує, що за всіма можливостями – нічого серйозного Оскарові не загрожує і він житиме – Пакунки прошу надсилати тільки з ягодами і цукром, решти всього маємо достатньо – [...] За все дуже дуже дякую – користаю і з доброти Яся Амб[орського] і цей контакт утримаю – Прибув транспорт з Дахау – завтра говорю з ними – поляків кілька на 120 людей – приїжджих – підуть на Липову після карантину – Антек пише окремо – але боюсь, щоб не наразив Гелю – а побачимо – Нехай їм Бог допомагає, а може і я з кухні вирвусь – тимчасом віддаю себе на Волю Божу і Опіку Божого Провидіння – і тримаюсь і Вас усе більше й міцніше люблю – Обіймаю і цілую міцно – Для п. Тад[еуша] з Барто[сиком] міцні обійми, для Дівчат теж – Бабунько Дорога, ручки обціловую і дякую ще раз, Юр.

п’ятничного пакунка не отримав –

(Henryk Jerzy Szcześniewski, Tajemnice Szydła. Grypsy z Majdanka 1943–1944 (Warszawa: Państwowy Instytut Wydawniczy, 2014), s. 243–244. Переклад з польської)


jacey: (Default)
[personal profile] jacey

Audiobook narrated by Roy McMillan

Christopher Fairfax, priest, rides across remote Exmoor in the 1400s, sent by the Bishop of Exeter, to find an isolated village with a dead priest awaiting burial… except it’s not the 1400s you might think. This is gradually revealed to be a post-apocalyptic landscape, 800 years after some unknown cataclysm. It’s regressed to pre-industrial revolution levels of living. Science is proscribed, and even researching into the past and its artifacts can get you branded (literally) a heretic. The church is law. Law is the church. What Fairfax finds in that village leads him to question truths that have always been self-evident to a young believer. Expect religion, science and the apocalypse. The writing is superb, the story gripping, and Roy McMillan (who also narrated Conclave) is a perfect narrator. He subsumes his narration to the story while still subtly delineating character voices.


mutabor_ua: (череп кістки)
[personal profile] mutabor_ua
Українців страхом примушували відмовитись від самих себе. А тепер примушують війною і холодом.


https://youtu.be/506FrHjb0Mc?si=gUogmEFLB2IjN1x7
skysnail: (Default)
[personal profile] skysnail
youtu.be/LpNVf8sczqU 

Хороше, французьке, мелодійне.
ugputu: (Default)
[personal profile] ugputu
Жена улетела вспомогать дальней родственнице, а мне предстояло кромсание оливьета. Решил зачерпнуть энергии из молодости, да и поискал в утюпчике Yello.
Это такие музыкальные хулиганы и экспериментаторы, которые к записям периодически привлекают сторонних вокалистов. Самый впечатляющий и известный пример - The Rhythm Divine с Дамой Британской Империи, "валлийкой" Ширли Бэсси:
**** слушать громко ****
* само это видео, честно говоря, лучше не смотреть, только слушать, но уж как уж есть...


Бэсси знаменита тем, что исполнила титульные песни аж к трём фильмам Бондианы, за одну из которых даже получила Грэмми.
Интересно же! Послушал. Увы, без железной руки Майера у неё выходила сплошная печаль и нудянка.
Понятно, что за Битлов или The Doors ей просто не надо было браться. Ладно, не поленился прослушать шесть разных версий Killing Me Softly, популярной в основном в исполнении афроамериканок, и все равно, её - из худших, если не самое. А у Yello она звучит мощно, не хочется ни спать, ни плеваться.
Ну её, лучше продолжим безбашенными швейцарцами ;)

С бродячим шотландцем Билли МакКензи (он же автор слов):

И двадцать лет спустя:

(no subject)

Jan. 25th, 2026 08:41 pm
kshiarvenn: (Default)
[personal profile] kshiarvenn
Я підсіла на Forged In Fire.
Ну і звісно на прекрасного трольського Дуга Маркайда - з його неперевершеним "Your weapon - it will kill"




Оригинал записи на Дыбре

Кисо обиделось

Jan. 25th, 2026 02:19 pm
tima: (Default)
[personal profile] tima
VP (©) отозвал свое приглашение премьер-министру Карни присоединиться к "наиболее престижному за все времена Комитету лидеров".

Вот Карни горюет наверное, не иначе...
tima: (Патриот)
[personal profile] tima
Nathan's Famous, который открыл свой бизнес на Кони айленде более века назад, куплен мясным гигантом Smithfield Foods за 450 миллионов долларов.

Тем временем Илон Маск решил приобрести себе авиакомпанию и устремил свои усилия на покупку ирландского лоукостера Raynair. СЕО Raynair Майкл О'Лири для начала объявил, что масковский старлинк не будет устанавливаться на самолеты его компании, а после и вовсе заявил, что Маск был misinformed на тему покупки Raynair, так как она не продается. После чего Майкл О'Лири и вовсе не сдержался и назвал Маска идиотом:"I would not pay attention whatsoever to Elon Mask, he's an idiot." На что Маск в своем твиттере, в свою очередь, обозвал Майкла О'Лири "an utter idiot and imbecile" и спросил всех своих подписантов должен ли он покупать Raynair. 76.5% jответили "Да". На что СЕО Raynair объяснил всем желающим, что не-европейские жители не могут владеть большинством акций европейских авиакомпаний. Так что пусть Маск идет лесом.

Мировые страсти накаляются.

(no subject)

Jan. 25th, 2026 04:23 pm
[personal profile] xou
користувач kanibolotsky виклав черговий пост у якому підтримує Путіна та Росію.

Я спробував прокоментувати, що це божевілля, і зрозуміло виявилось, що я у цього підара забанений. Може хтось у цього підара ще не забанений? Та може насцяти цьому підару у очі? Може мув хтось підійме? Бо він там із акціями та промоціями висить у топі.
mirrinminttu: (Default)
[personal profile] mirrinminttu
"В Триесте деятельность прибывшего из России майора проходила в тесном контакте с проживавшей там греческой диаспорой, которая также принимала живейшее участие, в первую очередь финансовое, в организации корсарской флотилии. На имеющиеся средства была осуществлена покупка трехмачтового судна, до недавнего времени ходившего под флагом новорожденных Североамериканских Штатов. Согласно рапорту, который Кацонис направил Мордвинову, покупка не уступала размерами фрегату и обладала достаточной для своего предстоящего занятия быстроходностью.



Триест, гавань. Луи-Франсуа Кассас, 1802 г

Read more... )

(no subject)

Jan. 25th, 2026 12:50 pm
kshiarvenn: (Default)
[personal profile] kshiarvenn
Нескучно. Купила в папері підручник з японської і робочий зошит - як додатковий до тих, по яким з сенсеєчкою займаємося та щоб мати саме в папері.
 Вирішила на сайті поробити вправи до того підручника, для того на телефон поставила японську. Випадково поставила її по замовчуванню основною. Пересрала знатно, зрозумівши, що ще не той рівень в мене, щоб мати японський інтерфейс.
Знесла, поставила просто як доп.мову. Видохнула.
Оригинал записи на Дыбре

(no subject)

Jan. 25th, 2026 01:30 pm
norian: (Default)
[personal profile] norian
Гибридная Графовая База Данных (отвертка с моторчиком для моделирования моделей)

День 7. Индексы : ускорение поиска данных.

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

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

На первом этапе индексы поддерживают выбор по логическому условию, но не сортировку (она может быть сделана приложением или потом добавлена как плагин). Также для упрощения поддерживаются индесы только фиксированного размера - для данных переменного размера впоследствии можно будет делать соответствующие хэш функции.

API индексов выглядят как LoadAllDataGE(set& index_offsets, EgByteArrayAbstractType& keyBA) - получить множество файловых оффсетов по ключу и логической операции.


source egIndexes.h

#pragma once
#include <iostream> // debug
#include <fstream>
#include <set>
#include <vector>
// #include <experimental/filesystem> 
#include "egCoreIndexTypes.h"
#include "../service/egByteArray.h"
#include "../service/egFileType.h"
#include "egFingers.h"
// template <typename KeyType> class EgFingers;

class EgIndexesAbstractType { public:
    virtual bool AddNewIndex(EgByteArrayAbstractType& keyBA, uint64_t dataOffset) = 0;
    virtual bool DeleteIndex(EgByteArrayAbstractType& keyBA, uint64_t dataOffset) = 0;
    virtual bool UpdateDataOffset(EgByteArrayAbstractType& keyBA, uint64_t oldDataOffset, uint64_t newDataOffset) = 0;

    virtual bool LoadAllDataEQ(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA) = 0;
    virtual bool LoadAllDataGE(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA) = 0;
    virtual bool LoadAllDataGT(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA) = 0;
    virtual bool LoadAllDataLE(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA) = 0;
    virtual bool LoadAllDataLT(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA) = 0;

    virtual ~EgIndexesAbstractType() {}
};

template <typename KeyType> class EgIndexes : public EgIndexesAbstractType { public: // indexes chain part of indexes-fingers complex
    const uint64_t            indexHeaderSize       = sizeof(uint64_t);
    const egMaxStreamSizeType oneIndexSize          = sizeof(KeyType) + sizeof(uint64_t); // key and data offset
    const egMaxStreamSizeType fwdPtrPosition        = egIndexesSpace::egChunkCapacity * oneIndexSize;
    const egMaxStreamSizeType backPtrPosition       = fwdPtrPosition   + sizeof(uint64_t);
    const egMaxStreamSizeType chunkCountPosition    = backPtrPosition  + sizeof(uint64_t);
    const egMaxStreamSizeType fingersChunkOffsetPosition  = chunkCountPosition + sizeof(keysCountType);
    const egMaxStreamSizeType indexChunkSize        =  fingersChunkOffsetPosition + sizeof(uint64_t);

    bool fingersChainFlag {true};
    KeyType  theKey;                // index key to process
    uint64_t theDataOffset;         // offsets in data nodes file
    uint64_t theNewDataOffset;
    uint64_t theOldDataOffset;
    keysCountType theChunkCount;    // indexes count in the chunk for chain opers
    uint64_t theIndexesChunkOffset; // file position for chain connect
    int      theIndexPosition;      // position in the chunk
    uint64_t prevOffsetPtr;         // chunks chain operations
    uint64_t nextOffsetPtr;
    uint64_t currentIndexQuantity;  // position savepoint for Load*DataNext functions
    uint64_t currentChunkOffset;    // chunk savepoint for Load*DataNext functions
    keysCountType  transactionPosInChunk; // chunk position savepoint for Load*DataNext functions
    uint64_t reallyLoaded  {0};     // first/next opers support
    uint64_t transactionID {0};     // FIXME TODO first/next opers support

    EgFingers<KeyType>*     fingersTree {nullptr};  // fingers tree object ptr
    EgDataStream*           localStream {nullptr};  // chunk buffer operations
    EgIndexStruct<KeyType>  indexData;              // index data wrapper for flexibility
    EgFileType              indexFileStream;        // file operations
    std::string             indexFileName;
    
    EgIndexes(const std::string a_indexName);
    virtual ~EgIndexes() { delete localStream; }
        // top API
    bool AddNewIndex(EgByteArrayAbstractType& keyBA, uint64_t dataOffset) override;
    bool DeleteIndex(EgByteArrayAbstractType& keyBA, uint64_t dataOffset) override ;
    bool UpdateDataOffset(EgByteArrayAbstractType& keyBA, uint64_t oldDataOffset, uint64_t newDataOffset) override;
        // load data top API
    bool LoadAllDataFirst(std::set<uint64_t>& index_offsets, uint64_t& maxQuantity);
    bool LoadDataNextUp (std::set<uint64_t>& index_offsets, uint64_t& maxQuantity);

    bool LoadAllDataEQ(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA);
    bool LoadAllDataGE(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA);
    bool LoadAllDataGT(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA);
    bool LoadAllDataLE(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA);
    bool LoadAllDataLT(std::set<uint64_t>& index_offsets, EgByteArrayAbstractType& keyBA);
};

(no subject)

Jan. 25th, 2026 12:46 pm
norian: (Default)
[personal profile] norian
настала аццкая холодрыга, как всегда внезапно

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

а потом объявляют их террористами, "кого убили, тот и террорист, а хто против нас вякнет, тот пособнег"

масштаб отличаецца раз в тысячу, но смысл и принципы те же - если среднестатистической сраной двуногой обезьяне дать оружие и право безнаказанно пиздить и убивать сородичей, она будет это делать, а если ещё и деньги давать, то ваще заебись, карта попёрла

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

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

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

уже несколько тысяч лет как лучше
assassins_cloak: (Default)
[personal profile] assassins_cloak
Зі щоденника Олександра Довженка (1894–1956), українського письменника та кінорежисера:

Я ніколи не був метким. І досі у диспутах, якими таке рясне було моє життя, я знаходжу потрібні слова не зразу, а вже після бою, десь на самоті, встромивши голову в подушку. Отоді я знаходжу для свого противника найсильніші аргументи, я обдаровую його найгострішою словесною зброєю, я підставляю під них свої слабкі місця терпеливо, зате тут же побиваю його вщент такими досконалими, яскравими влучаннями, що все тремтить в захопленні навколо, все радіє, та вже запізно, марно. Нема ні бою вже, ні перемоги. Одна досада і нещастя реальності.

(Олександр Довженко, Сторінки Щоденника (1941–1956) (Київ: Видавництво гуманітарної літератури, 2004), с. 195)


(no subject)

Jan. 25th, 2026 07:08 am
kotopes: (Default)
[personal profile] kotopes
Как фанат американского фантаста Филиппа Дика не могу не отметить, что самое невероятное в охотниках за андроидами это не андроиды, похожие на людей, а ответственность охотников за ошибочное убийство людей вместо андроидов
Как мы видим охотники за нелегалами могут отстреливать граждан США безо всякой ответственности.
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд. Включення і відключення приблизно по 5-6 годин, розкіш.

Чекаю на перемогу.
mdmx: (Default)
[personal profile] mdmx


Страннвй сон снился под утро, что я каким то макаром перебрался в европу, толи Словению, то ли Кипр. И собираюсь про это написать сюда, а меня за это привентивно банит написаный Хуан-Ганди бот.бррр.

Profile

melihov: (Default)
melihov

August 2025

S M T W T F S
      12
3456789
10111213141516
17181920 212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 26th, 2026 11:03 am
Powered by Dreamwidth Studios