Letos se uskuteční již 11. ročník soutěže v programování Kasiopea. Tato soutěž, (primárně) pro středoškoláky, nabízí skvělou příležitost procvičit logické myšlení a dozvědět se něco nového ze světa algoritmů – a to nejen pro zkušené programátory, ale i pro úplné začátečníky. Domácí kolo proběhne online od 22. 11. do 7. 12. 2025 a skládá se z 9 zajímavých úloh různé obtížnosti. Na výběru programovacího jazyka přitom nezáleží – úlohy jsou
… více »Byla vydána nová verze 2.52.0 distribuovaného systému správy verzí Git. Přispělo 94 vývojářů, z toho 33 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání.
VKD3D-Proton byl vydán ve verzi 3.0. Jedná se fork knihovny vkd3d z projektu Wine pro Proton. Knihovna slouží pro překlad volání Direct3D 12 na Vulkan. V přehledu novinek je vypíchnuta podpora AMD FSR 4 (AMD FidelityFX Super Resolution 4).
Poštovní klient Thunderbird byl vydán v nové verzi 145.0. Podporuje DNS přes HTTPS nebo Microsoft Exchange skrze Exchange Web Services. Ukončena byla podpora 32bitového Thunderbirdu pro Linux.
U příležitosti státního svátku 17. listopadu probíhá na Steamu i GOG.com již šestý ročník Czech & Slovak Games Week aneb týdenní oslava a také slevová akce českých a slovenských počítačových her.
Byla vydána nová verze 9.19 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Vypíchnout lze například nový balíček BirdNET-Go, tj. AI řešení pro nepřetržité monitorování a identifikaci ptáků.
Byla vydána nová verze 3.38 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.10 souvisejícího programovacího jazyka Dart (Wikipedie).
Organizace Apache Software Foundation (ASF) vydala verzi 28 integrovaného vývojového prostředí a vývojové platformy napsané v Javě NetBeans (Wikipedie). Přehled novinek na GitHubu. Instalovat lze také ze Snapcraftu a Flathubu.
Byl vydán Debian 13.2, tj. druhá opravná verze Debianu 13 s kódovým názvem Trixie. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.
Google představil platformu Code Wiki pro rychlejší porozumění existujícímu kódu. Code Wiki pomocí AI Gemini udržuje průběžně aktualizovanou strukturovanou wiki pro softwarové repozitáře. Zatím jenom pro veřejné. V plánu je rozšíření Gemini CLI také pro soukromé a interní repozitáře.
Před pár měsíci se tu diskutovalo o osobních wiki (např. Zrcadla - proč používat osobní wiki), tak jsem se rozhodl zveřejnit svůj projekt zde s nadějí, že dostanu nějaký zajímavý feedback.
Projekt se jmenuje Trilium Notes a sídlí na GitHubu - https://github.com/zadam/trilium
Cílem projektu je poskytnout aplikaci, která umožňuje efektivní práci s tisíci až desítkami tisíc poznámek ve kterých je možné si zorganizovat život. Efektivní práce znamená snadou editaci, třídění, vyhledávání, odkazování atp.
Trilium umožňuje neomezené zanoření poznámek - idea je taková, že člověk si udělá vlastní strukturu tak, jak mu bude vyhovovat bez nějakých umělých omezení.
Trochu možná zvláštnost (pro mě dost důležitá) je, že Trilium nedělá rozdíl mezi poznámkou a složkou - tzn. poznámka může mít textový obsah i pod-poznámky. Je tak velmi snadné přidat nové dodatečné informace k existující poznámce vytvořením pod-poznámky.
Další zvláštní věcí je, že poznámky můžou mít více rodičů ve stromu - tzn. jedna poznámka (a celý její podstrom) může být zařazen do více různých míst ve stromě. Některé poznámky jde totiž zařadit do více kategorií - příklad, který používám je, že "Bash" může být řazen jak pod "Programování", tak pod "Linux". Obě reference jsou si naprosto rovnocené. Funguje to podobně jako hardlinky ve filesystému, s tím rozdílem, že tady to funguje na celé podstromy poznámek (hardlinky nefungují pro adresáře). Dá se to chápat jako sjednocení klasického hierarchické kategorizace (strom, každá položka může patřit jen na jedno místo) a tagů (více míst, ale jen plochá struktura). Více informací zde: https://github.com/zadam/trilium/wiki/Cloning-notes
Poznámky se editují ve WYSIWYG editoru. Použití nějakého markupu pro poznámky mně přijde jako zbytečný overhead. Taky se chci vyhnout tomu, abych měl jedno editační okno a druhé pro preview.
CKEditor (editační komponenta) jde nastavit, aby na výstupu produkoval Markdown místo HTML, ale zatím v tom nevidím nějaký benefit.
Základem jsou přecházení dopředu a zpět v historii, "skočit na poznámku" a "nedávné poznámky". Tady jsem se docela inspiroval v IDE nástrojích.
Nějaké GIF dema jsou k dispozici zde: https://github.com/zadam/trilium/wiki/Note-navigation
Všechny featury podporují klávesové zkratky.
Trilium nemá speciální editační a zobrazovací režim - tzn. uživatel nikdy nemusí klikat na "uložit" - poznámky jsou vždy v editačních režimu a jdou měnit okamžitě, změny jsou pak uloženy automaticky.
Verzování funguje tak, že každých deset minut se uloží snapshot právě editované poznámky.
Některé poznámky mohou být citlivé a chcete je extra chránit. Trilium má koncept "chráněných" (protected) poznámek, které jsou šifrované klíčem odvozeným od hesla. Pro zobrazení poznámek je tedy potřeba zadat heslo, k dispozici jsou ale jen po omezenou dobu (defaultně 10 minut) po které se uvolní z paměti a pro jejich zobrazení je potřeba heslo zadat znovu.
Více informací zde: https://github.com/zadam/trilium/wiki/Protected-notes
Z historických důvodů projekt původně vznikl jako čistě webová aplikace - tzn. JavaScript, HTML, CSS na frontendu, backend původně Python. Později se objevila potřeba vytvořit desktopovou variantu (především kvůli offline přístupu), což vyústilo v konverzi backendu do node.js a obalení celé aplikace do Electronu.
Webová verze podporuje poslední Chrome a Firefox, mohla by fungovat i v jiných moderních prohlížečích.
Hlavně z historických důvodů se poznámky ukládájí do jedné SQLite databáze (sídlící v jediném souboru). Synchronizace databáze přes více instancí pomocí klasických cloudových nástrojů jako Dropbox pak není možná.
Trilium proto implementuje vlastní synchronizaci přes self-hosted synchronizační server, což je vlastně jen webová verze Trilia.
Více informací zde: https://github.com/zadam/trilium/wiki/Synchronization
Tohle je první veřejný release, takže je to taková těžká alpha. Já sám ji používám měsíce, ale nikdo jiný ji zatím netestoval, takže čekám, že prvním pár lidem nejspíš exploduje hned po spuštění. Budu vděčný, pokud někdo aplikaci zkusí a bude reportovat chyby (do GitHub issues https://github.com/zadam/trilium/issues nebo klidně tady v komentářích).
Aplikace používá jako editační komponentu CKEditor 5 alpha, který má zatím docela dost chyb a nedodělků a chybí pořádné API, které by umožňovalo některé pokročilejší funkce.
Pro vyzkoušení doporučuji stáhnout Electron build posledního release: https://github.com/zadam/trilium/releases/latest
Stačí rozbalit a spustit binárku "trilium". Aplikace uživatele požádá o zadání uživatelského jména a hesla (použivá se pro přihlášení na webu a šifrování poznámek) a to by mělo být vše.
Tiskni
Sdílej:
Poznámky se editují ve WYSIWYG editoru. Použití nějakého markupu pro poznámky mně přijde jako zbytečný overhead. Taky se chci vyhnout tomu, abych měl jedno editační okno a druhé pro preview.Jde především o to, jestli vzniknou i další implementace (např. mobilní aplikace) a pokud ano, zda generovaný kód bude pokud možno stejný (tj. bude se to chovat konzistentně).
Verzování funguje tak, že každých deset minut se uloží snapshot právě editované poznámky.Co když uživatel v poznámce udělá změnu a ještě před uplynutím 10 minut se přepne na jinou poznámku? Nemělo by to být spíš tak, že každých 10 minut se uloží všechny poznámky, které se od posledního uložení změnily (namísto pouze aktuální editované)?
Osobně bych si to představoval trochu jinak (UI i použité technologie)Ze se nebudou libit technologie jsem cekal (ostatne mne se taky nelibi) Jestli se ti chce o tom rozepsat, co by jsi udelal jinak v UI? (teda jsem si vedom, ze je to skarede
)
Jde především o to, jestli vzniknou i další implementace (např. mobilní aplikace) a pokud ano, zda generovaný kód bude pokud možno stejný (tj. bude se to chovat konzistentně).To jo. Pokud nekdy bude webova verze, tak bude nejspis pouzivat stejnou editacni komponentu. Jinak docela verim, ze ten CKEditor bude produkovat rozumne HTML podle toho, co jsem o nem cetl (maji pomerne dobre vymysleny engine).
Co když uživatel v poznámce udělá změnu a ještě před uplynutím 10 minut se přepne na jinou poznámku? Nemělo by to být spíš tak, že každých 10 minut se uloží všechny poznámky, které se od posledního uložení změnily (namísto pouze aktuální editované)?V tom pripade se nova verze neulozi do historie (samotna poznamka samozrejme updatovana je). Tahle implementace je vicemene nejjednodussi mozna a docela pokryva me potreby. Do budoucna se tohle dost mozna zmeni ... je potreba to promyslet a samozrejme feedback (jako ten tvuj) je hodne dulezity.
Jestli se ti chce o tom rozepsat, co by jsi udelal jinak v UI?Asi ne. Nejde přímo o UI ve smyslu uspořádání/vzhledu ovládacích prvků, ale víc o koncept, nebo ještě lépe řečeno pojetí, toho programu. Popisovat to detailně by bylo nad rámec jednoho komentáře. Ty ostatně taky spěješ k něčemu sofistikovanějšímu, jak jsi naznačil v té sekci o budoucnosti. Druhá věc je, že moje představa je dost nekonkrétní a nehmotná a lze to označit přinejlepším za vizi, kterou navíc neumím dost dobře oddělit od jiných myšlenek. Dlouho se peru s tím, jestli to oddělit, nebo ne, a pokud ano, jak. Za takových podmínek se to obtízně předává dál. Zajímavý by mohl být feedback od Bystroushaaka, který napsal ten původní blogpost. Ten se ideově vydal ale ještě šílenějším směrem než já, tak nevím, jestli to nedopadne podobně. Ale v každém případě držím palce a budu to sledovat.
Za takových podmínek se to obtízně předává dál.Abych to ještě doplnil... Nerad bych zopakoval to, co se tu už stalo se svobodným CADem a „novým portálem“, kde každý začal teorizovat o tom, co by se mělo udělat, ale ruku k dílu stejně nepřiložil. První se mě netýká, ale do druhé diskuze jsem se zapojil a dost mě to štve. Výsledkem bývá guláš zcela protichůdných názorových proudů, ve kterém se nelze vyznat. Teoreticky by to mohlo přinést podněty, ze kterých si pak vybereš a realizuješ jen ty zajímavé, ale nemyslím, že by se to stalo. Spíš by se tu rozjela diskuze o stovkách příspěvků, kde by se brzy začalo řešit něco úplně jiného. Nakonec je lepší se v diskuzích tohoto typu omezit na pár lidí, kteří mají potenciálně nejkompatibilnější názory a snažit se jít k věci a co nejkonkrétnějším návrhům/požadavkům/dotazům. Proto jsem se mj. omezil jen na ně a zbytek přeskočil. Ono to k tomu nakonec stejně dospěje, jen doufám, že bez mého přispění. A taky je to varování pro tebe, že si toho nemáš moc všímat a raději pokračovat ve směru, který jsi si zvolil sám, než to pohřbít. Je nemožné vyhovět všem.
Asi ne. Nejde přímo o UI ve smyslu uspořádání/vzhledu ovládacích prvků, ale víc o koncept, nebo ještě lépe řečeno pojetí, toho programu.Jo, jasny, jak ukazala i ta diskuse pod Bystrousakovym blogpostem, o zajimave napady jak mapovat a ukladat informace neni nouze, jen ty napady jsou casto vhodne spis na research projekty. Ja se spis pragmaticky drzim starych, nudnych, ale overenych konceptu, jen je vlastne preskladavam tak, aby mne osobne vyhovovaly.
vantomas@vendula ~/Stažené/trilium-linux-x64 $ ./trilium
Using data dir: /home/vantomas/trilium-data
Generated sourceId=kRV1oMWUgygX
App HTTP server starting up at port 8080
{
"app_version": "0.1.0",
"db_version": 60,
"build_date": "2017-12-26T22:59:46-05:00",
"build_revision": "ae337e45009c3938dddcbb3452b271f97eb80bce"
}
Connected to db, but schema doesn't exist. Initializing schema ...
Error connecting to DB. { Error: ENOENT: no such file or directory, open 'db/schema.sql'
at Object.fs.openSync (fs.js:652:18)
at Object.module.(anonymous function) [as openSync] (ELECTRON_ASAR.js:172:20)
at Object.fs.readFileSync (fs.js:553:33)
at Object.fs.readFileSync (ELECTRON_ASAR.js:508:29)
at dbConnected.then (/home/vantomas/Stažené/trilium-linux-x64/resources/app/services/sql.js:31:31)
at <anonymous>
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'db/schema.sql' }
vantomas@vendula ~/Stažené/trilium-linux-x64 $ find|grep schema.sql
./resources/app/db/schema.sql
vantomas@vendula ~/Stažené/trilium-linux-x64 $ vim /home/vantomas/Stažené/trilium-linux-x64/resources/app/services/sql.js
vantomas@vendula ~/Stažené/trilium-linux-x64 $ cd resources/app/
vantomas@vendula ~/Stažené/trilium-linux-x64/resources/app $ ../../trilium
Using data dir: /home/vantomas/trilium-data
Generated sourceId=3bf1BBzlrSJF
App HTTP server starting up at port 8080
{
"app_version": "0.1.0",
"db_version": 60,
"build_date": "2017-12-26T22:59:46-05:00",
"build_revision": "ae337e45009c3938dddcbb3452b271f97eb80bce"
}
Connected to db, but schema doesn't exist. Initializing schema ...
Creating missing sync record for notes 0xtvjqrcGiRB
Creating missing sync record for notes 1Heh2acXfPNt
Creating missing sync record for notes 1hASbLRDL7oo
Creating missing sync record for notes 21K84UqGhqlt
Creating missing sync record for notes 2WU27ekfy07E
Creating missing sync record for notes 3RkyK9LI18dO
Creating missing sync record for notes 3oldoiMUPOlr
Creating missing sync record for notes 5v5Dx6LMHXIO
Creating missing sync record for notes 62BKAQMVP2KW
Creating missing sync record for notes 6ZuXjCSWgjB4
Creating missing sync record for notes 8nRNDJGyGs2Z
Creating missing sync record for notes 9zSwD89vgzNO
Creating missing sync record for notes C44aq4mkaX67
Creating missing sync record for notes CF2lUIJAr6Ey
Creating missing sync record for notes GpGnjmcAPeWG
Creating missing sync record for notes HJusZTbBU494
Creating missing sync record for notes I6Cw88AirBBl
Creating missing sync record for notes Iha4YwchR413
Creating missing sync record for notes IlULcDiOTI4K
Creating missing sync record for notes L1Ox40M1aEyy
Creating missing sync record for notes MG0wntwILQW6
Creating missing sync record for notes MLQjmREtcnJ3
Creating missing sync record for notes NncfGH8dyNjJ
Creating missing sync record for notes PEGQGg0In3Ar
Creating missing sync record for notes QbL3pTvhgzM8
Creating missing sync record for notes R6pheWjdwmNU
Creating missing sync record for notes TjWEndYCCg7g
Creating missing sync record for notes WdWZFuWNVDZk
Creating missing sync record for notes ZC78NlmdXeC6
Creating missing sync record for notes Zl69uXBSen0w
Creating missing sync record for notes cFK9sGYZaMWs
Creating missing sync record for notes eXHZAKsMYgur
Creating missing sync record for notes eouCLkjbruai
Creating missing sync record for notes h4OfLEAYspud
Creating missing sync record for notes jyqG9GucsMdn
Creating missing sync record for notes mcEwFMSjhlvL
Creating missing sync record for notes moMbTKwN15Ps
Creating missing sync record for notes mw4f2xB4J5fV
Creating missing sync record for notes pOFVzbXLmzhX
Creating missing sync record for notes pTTjrxgnvURB
Creating missing sync record for notes r4BnsmSQeVr1
Creating missing sync record for notes root
Creating missing sync record for notes rz5t0r9Qr2WC
Creating missing sync record for notes u5t1EvWa3CMO
Creating missing sync record for notes vBv6ovBupfTj
Creating missing sync record for notes xkXwueRoDNeN
Creating missing sync record for notes yK4SBJfwD3tY
Creating missing sync record for notes_tree 0fpnraUGs9Kl
Creating missing sync record for notes_tree 2GOsNT5LsvTP
Creating missing sync record for notes_tree 4Tu6vaPdCxCM
Creating missing sync record for notes_tree 5Dt9YCMn59sY
Creating missing sync record for notes_tree 6M7qPlr7at6N
Creating missing sync record for notes_tree 6brdjeWDOB6w
Creating missing sync record for notes_tree 79e4hrHLFmx6
Creating missing sync record for notes_tree 8a3aNxjG0nu7
Creating missing sync record for notes_tree AqKUM2zUVFUF
Creating missing sync record for notes_tree C5ipVqeDWySp
Creating missing sync record for notes_tree CarTrwkGVcPz
Creating missing sync record for notes_tree EjQTcVVHFmmZ
Creating missing sync record for notes_tree Ez7NN2WVzRc4
Creating missing sync record for notes_tree Fstg4tkccO4N
Creating missing sync record for notes_tree GOxcrZrxalFN
Creating missing sync record for notes_tree GZ6aRI8rdSJt
Creating missing sync record for notes_tree HsN4600rQoL9
Creating missing sync record for notes_tree MN8B7qXDUViO
Creating missing sync record for notes_tree NG4gbKOnsM3v
Creating missing sync record for notes_tree O983DHtLpgmr
Creating missing sync record for notes_tree QJAcYJ1gGUh9
Creating missing sync record for notes_tree QLfS835GSfIh
Creating missing sync record for notes_tree RsvL795Mk1bp
Creating missing sync record for notes_tree RxUiraiR655R
Creating missing sync record for notes_tree T2ToYBfyPy0g
Creating missing sync record for notes_tree T4USGzfllu5t
Creating missing sync record for notes_tree abTEhnOsAsSg
Creating missing sync record for notes_tree bMtxCD6cwNR9
Creating missing sync record for notes_tree bSPmEvjLzQKU
Creating missing sync record for notes_tree bryQseMhyzaI
Creating missing sync record for notes_tree c4JgFNIobvQW
Creating missing sync record for notes_tree c4wt27WNjepw
Creating missing sync record for notes_tree ccslPJf3wQV3
Creating missing sync record for notes_tree d8L8zYlLTbym
Creating missing sync record for notes_tree dLgtLUFn3GoN
Creating missing sync record for notes_tree gSRkHpB7Bu3D
Creating missing sync record for notes_tree hbcWTnEnXPwF
Creating missing sync record for notes_tree jvhKcwz4pYTr
Creating missing sync record for notes_tree lBPOmhP12egP
Creating missing sync record for notes_tree mZuSrZ18Zmv0
Creating missing sync record for notes_tree nMRpPWWH8WRk
Creating missing sync record for notes_tree nfWjptAU2ZDg
Creating missing sync record for notes_tree o4ycR7xIi4oI
Creating missing sync record for notes_tree oWO8rctUjf7d
Creating missing sync record for notes_tree t3vVElqMIQVa
Creating missing sync record for notes_tree tQgognnAH9WI
Creating missing sync record for notes_tree uSitzbGcSATJ
Creating missing sync record for notes_tree uipfvAfwWRgx
Creating missing sync record for notes_tree wLTa2l3lYi83
Creating missing sync record for notes_tree xQ3fjRp9yaPq
Creating missing sync record for notes_tree xyAi7MmgvAgR
Creating missing sync record for notes_tree yMhwsE7uvEij
Schema and initial content generated. Waiting for user to enter username/password to finish setup.
Error: /usr/lib/gcc/i686-pc-linux-gnu/6.4.0/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /mnt/usb.down/trilium-linux-ia32-0.1.1/trilium-linux-ia32/resources/app/node_modules/sqlite3/lib/binding/electron-v1.8-linux-ia32/node_sqlite3.node)
at process.module.(anonymous function) [as dlopen] (ELECTRON_ASAR.js:172:20)
at Object.Module._extensions..node (module.js:598:18)
at Object.module.(anonymous function) [as .node] (ELECTRON_ASAR.js:172:20)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
at Module.require (module.js:513:17)
at require (internal/module.js:11:18)
at Object.anonymous (/mnt/usb.down/trilium-linux-ia32-0.1.1/trilium-linux-ia32/resources/app/node_modules/sqlite3/lib/sqlite3.js:4:15)
at Object.anonymous (/mnt/usb.down/trilium-linux-ia32-0.1.1/trilium-linux-ia32/resources/app/node_modules/sqlite3/lib/sqlite3.js:190:3)
Tak sem to zkusil na zaloznim notesu s Artixem. Po par minutach pouzivani mi oproti cherrytree chybi: - klavesovy zkratky (nepouzivam mys), zejmena pro prochazeni nodu (vetsinou si mapuju na CTRL+sipky), momentalne lze pouze doTABovat do tree a tam sipkama, toto ale musi fungovat at je focus kdekoliv - stejne Space pro expand/collapse - labelovani nodu - vyhledavani pomoci regex a kombinace textu a labelu Taky jsem moc nepochopil F2 - tree prefix? Pod F2 bych cekal editaci jmena nodu. Prefix ma jakou fci? Bugy - ctrl+F dej vyhledat neco a vrati napr (1/2) napis jinej bougs text, kterej nic nevrati, vysledek porad ukazuje (1/2)
JS Error: Uncaught error: Message: Uncaught TypeError: Cannot read property 'defaultView' of undefined - URL: http://localhost:8080/libraries/ckeditor/ckeditor.js - Line: 5 - Column: 41040 - Error object: {}
- Nejde me pouzit Enter pro multiline zapisky, nicmene jakmile pastnu viceradkovej text ze schranky, tak uz Enter normalne funguje, i tak po kazde hodi tento error. Zrejme to souvisi s vytvorenim nove nody?Tohle je bohuzel jeden z bugu CKEditoru, ktery doufam brzy opravi. Workaround je prekliknout na jiny note a vratit se zpet (dela to jen pri puvodne prazdne poznamce).
- Pokud je v nazvu polozky spicata zavorka, ve stromu se toto nezobrazi napr "poz<na>mka" se zobrazi jako "pozmka"Mrknu na to.
Knihy
* Podle autora
* Neal Stephenson
* Diamantovy vek
* Podle Zanru
* Scifi
* Diamantovy vek
* Podle Roku
* 1995
* Diamantovy vek
Jedna kniha muze byt ve vice podstromech. Strom tak funguje podobne jako label/tag.
Moznost si zobrazit scifi z roku 1999, ktere neni pujcene zatim mozna neni, ale v budoucnu to urcite pujde bud pomoci nejakeho mocneho filtru nebo s trochou skriptovani - bude se filtrovat podle zarazeni do urcitych podstromu.
Stejne tak jdou resit veci typu urgent (proste dalsi podstrom pro urgentni veci). Mozna to zni trochu krkolomne, ale tohle "klonovani" je docela rychly proces pres CTRL-L dialog popr. pres schranku.
Chci pridat i podporu nejakych metadat / atributu k poznamkam - tohle by slo teoreticky taky pouzit na podobne veci.
Jinak podbarvovani atp. zatim neni a nevim uplne jak to konceptualizovat. Hadam, ze to ale casem prijde ...
pri pouziti global hkeys ctrl+shift+sipka to nefunguje, clovek musi byt opravdu focuslej ve stromuNejsem si jisty, co tim myslis - jakoze mimo strom nefunguje ten CTRL-C/CTRL-V? To by ale asi ani neslo, protoze pokud mas focus v editoru, tak to bude CTRL-C/CTRL-V bude kopirovat klasicky text v editoru. Jedine zase definovat nove globalni zkratky (bohuzel CTRL-SHIFT-V uz maji prohlizece obsazene na plain paste).
Celkove u polozek, kde mam vic jak dva labely, si toto nedokazu v realu predstavit.Asi mas pravdu v tom, ze to pouziti se od labelu prece jen lisi. Pro me byly labely moznost jak "zaradit" poznamku do vice mist/kontextu. Me typicke pouziti tohoto multi-parency je dva nebo tri vyskyty ve stromu, vic jen vyjimecne. Chapu, ze pokud rutinne pouzivas ~5 labelu, tak tohle je dost neprakticke. Budu o tom jeste premyslet, jestli prece jen ty labely v nejake forme nepridelat ...
Otazka je taky filtrovani/vyhledavani, kdyz mam nakou polozku napr ve 4 pod-stromech, tak to pusobi dost zvlastne, videt vsechny instance identicke poznamky.Tohle je pro me spis ficura, rad vyhledavam vcetne kontextu cele cesty po stromu. Tzn. treba z prikladu vyse, knihu bych mohl hledat jako "neal diamant". Samozrejme bych i tak mohl v naseptavaci zobrazovat jen jeden vysledek, ale neni jasne ktery, protoze vsechny jsou rovnocene (to by slo popr. vyresit tim, ze by slo urcitou instanci ve strome oznacit za hlavni).
Jop a asi to je proste vlastnost. Jinak bys musel zrusit rovnou focus do editacniho okna.pri pouziti global hkeys ctrl+shift+sipka to nefunguje, clovek musi byt opravdu focuslej ve stromuNejsem si jisty, co tim myslis - jakoze mimo strom nefunguje ten CTRL-C/CTRL-V? To by ale asi ani neslo, protoze pokud mas focus v editoru, tak to bude CTRL-C/CTRL-V bude kopirovat klasicky text v editoru. Jedine zase definovat nove globalni zkratky (bohuzel CTRL-SHIFT-V uz maji prohlizece obsazene na plain paste).
Ja prave labely casto vidim i jako ne-hierarchicky, napr si pisu recenze (caj, rum, pivo etc) a jeden z labelu je "stock" tzn mam chut treba na sheng puer '90 tak si pomoci labelu zobrazim, jaky doma mam (pripadne do toho pridam jeste dodavetele etc) no a kdyz piju posledni proste smazu "stock" - a tyhle ruzny kombinace by stromove bylo strasny peklo :) ... zas u pracovnich poznamek mam vetsinou jeden label max, tam jich tolik nepouzivam.Celkove u polozek, kde mam vic jak dva labely, si toto nedokazu v realu predstavit.Asi mas pravdu v tom, ze to pouziti se od labelu prece jen lisi. Pro me byly labely moznost jak "zaradit" poznamku do vice mist/kontextu. Me typicke pouziti tohoto multi-parency je dva nebo tri vyskyty ve stromu, vic jen vyjimecne. Chapu, ze pokud rutinne pouzivas ~5 labelu, tak tohle je dost neprakticke.
Jasny.Otazka je taky filtrovani/vyhledavani, kdyz mam nakou polozku napr ve 4 pod-stromech, tak to pusobi dost zvlastne, videt vsechny instance identicke poznamky.Tohle je pro me spis ficura, rad vyhledavam vcetne kontextu cele cesty po stromu. Tzn. treba z prikladu vyse, knihu bych mohl hledat jako "neal diamant". Samozrejme bych i tak mohl v naseptavaci zobrazovat jen jeden vysledek, ale neni jasne ktery, protoze vsechny jsou rovnocene (to by slo popr. vyresit tim, ze by slo urcitou instanci ve strome oznacit za hlavni).
b) multiuser - např. pro firemní/komunitní sítě.
b1) s tím související šifrování na straně klienta.
b2) sdílení větví mezi uživateli by už byla taková třešnička.
A zbytek? To se doladí časem.
b) multiuser - např. pro firemní/komunitní sítě.
b1) s tím související šifrování na straně klienta.
b2) sdílení větví mezi uživateli by už byla taková třešnička.
A zbytek? To se doladí časem.
Poznamky jsou prave ulozeny v databazi, takze git moc pouzit nejde. Takze je to spis o tom rozhodnuti nepouzivat filesystem - napr. struktura poznamek ani nejde poradne namapovat na FS (predevsim kvuli tomu multi-parency).Použití file systému a obecný graf vztahů mezi poznámkami se nijak nevylučuje. Poznámka tak jako tak musí mít nějaké ošklivé ID a podle něj se to na file systému najde. Struktura adresářů nemusí odpovídat struktuře v tom navigačním panelu, co je vidět na screenshotu. Pak se dá také kouzlit se symlinky, kdy primární úložiště poznámek je podle ID a strom symlinků poskytne přívětivý náhled na strukturu (pokud to je žádoucí). Pěkným příkladem je právě struktura repozitáře Gitu, kde je
.git/objects/ obsahuje kopu bordelu, ale uživatel ji nikdy nevidí.
Ale i jinak by to drhlo - napr. jedna z featur je, ze se poznamky i historie ukladaji automaticky, uzivatel nemusi explicitne ukladat nebo commitovat. Poznamky se pak ukladaji (momentalne) kazdych pet sekund pri psani, coz je pro databazi OK, ale kazdych pet sekund commit do gitu nedava moc smysl ...Nemá smysl, aby uživatel explicitně commitoval. Aplikace může používat Git na pozadí a uživateli to naprosto zatajit. Průběžné ukládání může být implementováno například jako větev, která se při uložení sloučí do jednoho commitu (squash). Zda to bude čudlíkem "Uložit", nebo automaticky při zavření poznámky už je jedno.
Použití file systému a obecný graf vztahů mezi poznámkami se nijak nevylučuje. Poznámka tak jako tak musí mít nějaké ošklivé ID a podle něj se to na file systému najde. Struktura adresářů nemusí odpovídat struktuře v tom navigačním panelu, co je vidět na screenshotu. Pak se dá také kouzlit se symlinky, kdy primární úložiště poznámek je podle ID a strom symlinků poskytne přívětivý náhled na strukturu (pokud to je žádoucí). Pěkným příkladem je právě struktura repozitáře Gitu, kde je .git/objects/ obsahuje kopu bordelu, ale uživatel ji nikdy nevidí.Tak jasne, ze v dusledku jde nejakym zpusobem cokoliv namapovat na filesystem. Pro me by melo smysl pouzit filesystem pokud by to mapovani bylo prirozene a jednoduche. Napr. pokud bych v aplikaci pouzival cisty strom (kde slozky nemuzou mit textovy obsah), tak se pouziti FS primo nabizi. Pak mas problemy s povolenymi znaky ve jmenech souboru, muzes se tomu vyhnout proste pouzitim ID jako jmena souboru, ale pak si rikam jaky to ma vlastne smysl? Jinak i ty symlinky nejsou vsemocne, napr. ta (dulezita) moznost, ze poznamka ma zaroven text a podpoznamky by sla mapovat na FS opet jen oklikou. V neposledni rade symlinky na windows (junctions) by default vyzaduji admin prava ...
Nemá smysl, aby uživatel explicitně commitoval. Aplikace může používat Git na pozadí a uživateli to naprosto zatajit. Průběžné ukládání může být implementováno například jako větev, která se při uložení sloučí do jednoho commitu (squash). Zda to bude čudlíkem "Uložit", nebo automaticky při zavření poznámky už je jedno.Hmm, to by asi slo to ukladani do branche, squash a merge, nasledne by se asi daly ty stare commity smazat z historie. Blbe pak je, ze aktualni stav je reprezentovany nejakou vetvi a ne v masteru. Opet si nemyslim, ze by pouzit git neslo, jen jde o tom, jak by to bylo krkolomne ... Ve srovnani s tim mam ted jednu tabulku na aktualni stav a druhou tabulku na historii (snapshoty). Jiste, je to omezene - nemuzu si napr. zobrazit celkovy stav vsech notu a jejich relaci v jednom okamziku, ale realisticky YAGNI. Celkova slozitost systemu mi ale prijde daleko nizsi ...
Napr. pokud bych v aplikaci pouzival cisty strom (kde slozky nemuzou mit textovy obsah), tak se pouziti FS primo nabizi.To umí i ten Zim. Řesí to tak, že vedle adresáře existuje i stejně pojmenovaný soubor.
Pak mas problemy s povolenymi znaky ve jmenech souboru, muzes se tomu vyhnout proste pouzitim ID jako jmena souboru, ale pak si rikam jaky to ma vlastne smysl?To by reálně moc velký problém nebyl, jen by asi bylo fajn v softwaru přidat nějaké omezení na „univerzálně“ bezpečné znaky kvůli kompatibilitě. V krajním případě by se asi dalo vymyslet nějaké kódování, kde většina bezpečných znaků zůstane stejná a zakódují se pouze speciální znaky. Ale to je, řekl bych, trochu zbytečná práce vzhledem k naprosto minimálnímu přínosu, který to má.
Jinak i ty symlinky nejsou vsemocne, napr. ta (dulezita) moznost, ze poznamka ma zaroven text a podpoznamky by sla mapovat na FS opet jen oklikou. V neposledni rade symlinky na windows (junctions) by default vyzaduji admin prava ...Bál bych se (možná zbytečně?), že se ty symlinky rozbijou. Zrovna přenos na jinou platformu by asi mohl být ten případ. To už bych si spíš nechal pěkně pojmenované soubory/adresáře, ale do každého souboru (do obsahu) stejně nacpal nějaké unikátní ID. Při spuštění bych prošel celý strom a sestavil si mapu ID => název. Pak stačí mít někde pomocný soubor, který bude obsahovat dodatečné informace k jednotlivým ID (např. labely/tagy/zařazení do další hierarchie). Což je tedy trochu prasárna, ale stále menší než v tom pomocném souboru mít názvy (tj. muset to při přejmenování aktualizovat a řešit konzistenci – např., ale nejenom, v případě, že uživatel ručně přejmenuje přímo zdrojový soubor). IMO se nevyplatí se tím zabývat, protože by sis sice ušetřil synchronizaci databáze a s poznámkami by se dalo snadněji pracovat i bez použití Trillia, ale zase bys musel řešit hromadu dalších věcí...