진로
박명원이랑 사무실에서 또 한번 진로 얘기를 했고, 드디어 내가 지금 하고 싶은 일이 뭔지 깨달음.
정확한 명칭은 모르겠지만, 전세계 소프트웨어를 지탱하고 있는 라이브러리나, atproto같은 프로토콜, protonmail 같은 누군가는 필요로 하는 서비스를 만드는걸 좋아함. xkcd/2347 같은거. 이런게 내가 해오던거고, 내가 잘하는거고, 내가 하고 싶은 일임.
전세계 서비스들은 수많은 오픈소스 라이브러리를 기반으로 동작하고 있고, 무료 라이브러리도 있겠지만, 사내에서 운영중인 라이브러리, 혹은 Redis나 Docker같은 유료 B2B 솔류션도 있을것임. 그런 일이 내가 하고 싶은 일임.
그런데 문제는 내가 기계공학과라는것. 이런쪽 개발 직군에 있어, 기계공학적인 지식이 내게 매리트가 될지, 아니면 시간만 잡아먹게 될지는 모르겠음.
학점만 최소로 챙기면서 컴공 수업 위주로 듣자니, 그럴꺼면 왜 다니나 싶고, 그렇다고 기계공학까지 진심으로 파자니, 기계와 소프트를 둘 다 잡으려는건 욕심이 아닌가 싶음.
Norg
vhyrro가 드디어 norg 문법에 대해 다시 얘기하기 시작했음!!! https://discord.com/channels/834325286664929280/834397529310494791/1369969249887457350
Neorg-Language-Server
Implemented goto-definition feature for anchor references.
Norgolith
Was going to implement (neorg/doc/read-meta path)
... some problems:
I need to invoke
(norg/export/ast)
to execute the macros. But(norg/export/ast)
is defined instdlib.janet
.If I run try to get metadata for same file using
(norg/export/ast)
, I get recursion.
Solutions:
Implement macros instead of tags so that I can prevent tag expand recursion.
say
document.meta
is special syntax to add metadata. (I hate this... but I get it. documentmeta
should not be that much dynamic)force
document.meta
to be on top (only use very first element of the entire doucment to create metadata)
I first implemented third option. Now document metadata can be only generated from very first element of the entire document.
and then I have 4th idea:
don't give access to filesystem when retrieving a metadata.
don't provide NEORG environment. external file can only be accessed in neorg context.
But this means macros defined on neorg environment should not modify the metadata. Because that will lead to different output depending on context.
And we still have critical recursion situation when user tries to expand a macro that tries to expand same macro internally.
So I have to:
when retrieving metadata, block filesystem access by not providing NEORG environment
neorg macros might try to override the metadata but it should be ignored by neorg implementation.
allow recursion, but set recursion limit to prevent things like unlimitedly embedded HTML document. So even user accidentally create a recursion, the whole system won't blow up.
One more problem I found while implementing .ul-docs
:
How to re-generate posts/index.html
when posts/foo.norg
instead of posts/index.norg
changed?
Now (norg/export/ast)
depends on workspace state.
Solution: Just regenerate file on every request on serve
. build
doesn't matter because it is literally "static site generator"
Next:
more features to language server
completion for link target
diagnostic for undefined anchors
document commonnorg spec
design NorgBerg dynamic query cache system