Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
nanafshiを使って簡単に作るFUSEの動的ファイル
Search
Ryotaro Tamura
February 12, 2019
Programming
620
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
nanafshiを使って簡単に作るFUSEの動的ファイル
Ryotaro Tamura
February 12, 2019
More Decks by Ryotaro Tamura
See All by Ryotaro Tamura
BlockNoteとDuckDB-WASMでつくる、ブラウザ内データ分析環境の設計
tokibi
0
130
Prometheus setup with long term storage
tokibi
7
6k
monotips #3 - fzfる
tokibi
0
170
IAMロールはどこから来て、どこへ行くのか / Where do IAM rolls come from and where to go?
tokibi
2
2.7k
Other Decks in Programming
See All in Programming
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
3.2k
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
470
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
0
170
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
190
使用 Meilisearch 建立新聞搜尋工具
johnroyer
0
180
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
180
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.2k
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
160
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
620
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
150
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
140
Build-to-own AI: Agentic Development for Humans
inesmontani
PRO
0
110
Featured
See All Featured
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Building Adaptive Systems
keathley
44
3.1k
How to build a perfect <img>
jonoalderson
1
5.8k
Raft: Consensus for Rubyists
vanstee
141
7.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
810
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
420
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Transcript
ాଜཾଠ(.01FQBCP *OD 'VLVPLBHP 0LBZBNBHP OBOBGTIJΛͬͯ؆୯ʹ࡞Δ '64&ͷಈతϑΝΠϧ
ΤϯδχΞ ాଜཾଠ!@UPLJCJ ϗεςΟϯάࣄۀ෦ϗεςΟϯάάϧʔϓϚωʔδυΫϥυνʔϜ
.PUJWBUJPO
ಈతʹத͕มΘΔ ϑΝΠϧΛ࡞Γ͍ͨ
Πϝʔδ
༻్ wϛυϧΣΞͷઃఆϑΝΠϧΛੜ wൿີ伴ͷΑ͏ͳϑΝΠϧͰ͋Δ͜ͱΛཁٻ͞ΕΔೝূใΛऔಘ wϩάσʔλΛσΟεΫͰͳ͘֎෦ͷετΞʹอଘ
ྫCBTI@IJTUPSZ wCBTI@IJTUPSZΛ֎෦ͷετΞʹอଘ͢Δ
ίϚϯυ ৼΔ͍ Λ ϑΝΠϧʹٖଶͤ͞Δͱ৭ʑͰ͖ͦ͏
"QQSPBDI
'64& 'JMFTZTUFNJO6TFSTQBDF wϢʔβ্ۭؒͰϑΝΠϧγεςϜ Λ࡞͢ΔΈ wEFWGVTFΛհͯ͠Χʔωϧۭ ؒͱϢʔβۭؒͷؒͰϑΝΠϧ ͷΞΫηεཁٻΛΓऔΓ͢Δ w'64&σʔϞϯड͚औͬͨϦΫ ΤετΛॲཧͯ͠Χʔωϧۭؒʹ ฦ͢
Ҿ༻ݩIUUQTKBXJLJQFEJBPSHXJLJ'JMFTZTUFN@JO@6TFSTQBDF
ϥΠϒϥϦ͋Δ͠ ؆୯ʹͰ͖ΔͷͰ
࣮ wHJUIVCDPNIBOXFOHPGVTFΛ༻ wTBNQMF͕๛Ͱཧղ͍͢͠ wJOPEFϕʔεͰॲཧΛఆٛ͢ΔOPEFGTͱɺϑΝΠϧύεϕʔεͰॲཧ Λఆٛ͢ΔQBUIGTͷछྨͷ࣮ํ๏͕͋Δ wࠓճJOPEFΛಓʹ࡞͍ͯ͘͠OPEFGTΛબ
࣮Πϝʔδ
͑
શવ؆୯ ͡Όͳ͍
1SPCMFN
ෳࡶ͞ͷݪҼ wσΟϨΫτϦϑΝΠϧͷΞΫηε࣌ʹԿͷγεςϜίʔϧ͕ൃߦ ͞ΕͯɺͲͷΑ͏ͳใΛඞཁͱ͢Δͷ͔Ѳ͍ͯ͠ͳ͍ͱ͍͚ͳ͍ ϨΠϠΊ wγεςϜίʔϧͷର͕JOPEFͳͷ͔ɺJOPEFΛPQFOͨ࣌͠ʹੜ ͞ΕΔ'JMFߏମͳͷ͔ͰৼΔ͍Λม͑Δඞཁ͕͋Δ wEFOUSZϖʔδΩϟογϡͷڍಈΛΒͳ͍ͱɺࢥͬͨΑ͏ʹಈ͔ ͳ͍͕࣌͋Δ ಈ͔ͳ͔ͬͨ
Γ͍ͨ͜ͱ
ϑΝΠϧʹΞΫηεͨ͠Β ͍͍ײ͡ͰίϚϯυΛ࣮ߦͯ͠΄͍͠
1SPQPTBM
HJUIVCDPNUPLJCJOBOBGTIJ
OBOBGTIJ wత w'64&৭ʑͰָ͖ͯͦ͠͏͚ͩͲ࣮େม wͬͱΧδϡΞϧʹ'64&ͰಈతͳϑΝΠϧΛ࡞Γ͍ͨ wඞཁͱ͢Δલఏࣝ γεςϜίʔϧͳͲ ΛͰ͖Δ͚ͩগͳ͍ͨ͘͠ wΓ͍ͨ͜ͱ͕มΘΔʹɺίʔυΛॻ͍ͯϏϧυͯ͠όΠφϦΛ ࠶͢ΔखؒΛແ͍ͨ͘͠
OBOBGTIJ wZBNMͰσΟϨΫτϦͷߏͱϑΝΠϧΞΫηε࣌ͷৼΔ͍Λఆٛ wࢦఆͨ͠γΣϧͰఆٛ͞ΕͨίϚϯυΛ࣮ߦ͢Δ wεΫϦϓτͰόΠφϦͰԿͰ wϑΝΠϧΞΫηε࣌ʹϓϩηε͔Β͖ͬͯͨใΛίϚϯυ࣮ߦ࣌ ʹڥมͱͯ͠ઃఆ͢Δ
ઃఆྫ shell: /bin/bash services: - name: dir files: - name:
now read: command: date - name: writable write: async: true command: echo $FUSE_STDIN >> /tmp/file
ಈ࡞ྫ $ nanafshi -c config.yml /mnt/nanafshi $ tree /mnt/nanafshi /mnt/nanafshi
└── dir ├── now └── writable $ cat /mnt/nanafshi/dir/now Tue Feb 12 14:53:56 JST 2019
Ґஔ͚
࣮ྫ func (n CommandFile) Open(flags uint32, ctx *fuse.Context) (nodefs.File, fuse.Status)
{ if flags&fuse.O_ANYWRITE != 0 { return nodefs.NewDevNullFile(), fuse.OK } p, err := n.ReadFile(ctx) if err != nil { return nil, fuse.EIO } return &nodefs.WithFlags{ File: nodefs.NewDataFile(p), FuseFlags: fuse.FOPEN_DIRECT_IO, }, fuse.OK } wJOPEFͷૢ࡞ΛJOUFSGBDFͱͯ͠ఆٛͯ͘͠ΕͯΔͷͰͦΕΛຬͨ͢
࣮ྫ func (n CommandFile) ReadFile(ctx *fuse.Context) ([]byte, error) { cmd,
err := n.ReadCommand.Command.Build(conf.Shell, n.makeEnv(ctx)) if err != nil { return nil, err } out, err := cmd.Output() if err != nil { return nil, err } return out, nil } w'JMFTZTUFNͷίΞ࣮
ۤ࿑ͨ͠ͱ͜Ζ wEFOUSZͱ͔ϖʔδΩϟογϡͷษڧ w7'4ʹର͢ΔΠϯλʔϑΣʔεͷ࣮ JOPEFPQFSBUJPOT ͱɺϑΝΠ ϧγεςϜͱͯ͠ԿΛ͍ͨ͠ͷ͔Λ࣮͢Δ෦Λͤ͞ͳ͍ͱɺ ࠞಱͱͯ͘͠Δ w͕ࣗJOPEFΛ࡞͍ͬͯΔͷ͔'JMFߏମΛ࡞͍ͬͯΔͷ͔Θ͔Βͳ ͘ͳͬͯ͘Δ
࣮ͷϙΠϯτ
·ͱΊ w'64&৭ʑͰ͖ͦ͏Ͱເ͕͕Δ w࣮͕େมͰΔؾ͕Ͱͳ͔ͬͨํOBOBGTIJͰ࣮ݧͯ͠ΈͯԼ͍͞ wOBOBGTIJ͕ཪͰίϚϯυΛ࣮ߦ ผϓϩηε͕ىಈ ͢ΔͷͰएׯͷ Φʔόʔϔου͕͋Γ·͢ w໘ന͍͍ํ͕͋ͬͨΒڭ͑ͯԼ͍͞