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
Mongo DBとS式検索
Search
Niyarin
August 29, 2020
Programming
0
250
Mongo DBとS式検索
Niyarin
August 29, 2020
Tweet
Share
More Decks by Niyarin
See All by Niyarin
Scheme用nREPLの開発(エラー出力の改善)
niyarin
0
120
bel lispの紹介
niyarin
0
610
nanopass-compiler-frameworkを使ってみました
niyarin
0
360
Gorgos-parser-combinator-written-in-scheme
niyarin
0
330
outputting-beautiful-s-expression
niyarin
0
320
Serialisp
niyarin
1
620
goodbye-python-repl
niyarin
0
280
SchemeのEphemeronとWeak Pairの説明
niyarin
0
830
red-paren-scheme-rev-macro.pdf
niyarin
0
350
Other Decks in Programming
See All in Programming
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
2
290
The Sequel to a Dream of Ruby Parser's Grammar
ydah
1
190
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
430
BasicBasic認証
sadnessojisan
5
2.5k
暴走のウホーレン 〜想いってのはvimrcにしないと伝わらないんだぜ〜 / iosdc_japan_2024
uhooi
1
240
全力の跳躍を捉える計測アプリを作る
ogijun2018
0
1.1k
【TID2024】模擬講義:プログラマと一緒にゲームをデザインしてみよう!
akatsukigames_tech
0
400
Rustではじめる負荷試験
skanehira
5
1.2k
Desafios e Lições Aprendidas na Migração de Monólitos para Microsserviços em Java
jessilyneh
2
130
デザインシステムとコンポーネント指向によるフロントエンド開発プロセスの革新 / Innovation in Frontend Development Processes through Design Systems and Component-Oriented Architecture
nrslib
7
5.1k
connect-go で面倒くささと戦う / 2024-08-27 #newmo_layerx_go
izumin5210
2
600
1人で挑むSwiftコンパイラ 〜型システム入門編〜
s_shimotori
0
310
Featured
See All Featured
Designing with Data
zakiwarfel
98
5k
5 minutes of I Can Smell Your CMS
philhawksworth
201
19k
RailsConf 2023
tenderlove
26
790
Bootstrapping a Software Product
garrettdimon
PRO
304
110k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
No one is an island. Learnings from fostering a developers community.
thoeni
18
2.9k
Debugging Ruby Performance
tmm1
72
12k
Docker and Python
trallard
39
3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
Fantastic passwords and where to find them - at NoRuKo
philnash
47
2.7k
Documentation Writing (for coders)
carmenintech
65
4.3k
Fireside Chat
paigeccino
31
2.9k
Transcript
S式ソースコード検索と Mongo DB (やってみたけどそんなに良くなかった) Niyarin Clojure
モチベーション 例) 「Clojureのmapの引数が1つのコード例がみたい」 → 雑に”map”でコード片を検索すると目当てでないものも引っかかる ・正規表現で検索 ・構造で検索 → S式言語ならできる
Gists的なものを作る ・Gists的なソースコード片を投げるようなWebアプリ 大学でDB使ったWebアプリ書けって課題がでたので作った 真面目には作っていない ・Clojureの式を登録して、ちょっと便利に検索できるようにする ・Clojureで実装 Selmer(テンプレート) Duct(フレームワーク) 余り活用していない Ataraxy(ルーティング)
構造とDB リストとかを突っ込んでそれの構造を検索したい ・Mongo DB(JSONが直に使えるNOSQL) Clojureとかにもドライバが提供されている Monger RDBでもできなくはないけど
MongoDBの例 リストの最初の要素がargnameのものをとってくる リストの長さがarglenのものをとってくる JavaScriptをクエリに使うこともできる ※”,”がないのはClojureから呼び出しているから {“$elemMatch” {“ls.0” argname}} {“$elemMatch” {”ls”
{“$size” arglen)}}
あまり楽にできなかった部分 ・部分的な木構造の検索ができない 決められた深さのオブジェクトに対してしか検索できない ・リストを全部取り出して、内部リストを”object”等の文字列に変更 (+ (* 1 2) (* 3
4)) [(+ “object” “object”) (* 1 2) (* 3 4)]
生前の姿 (クラウドは落とされていた) (ローカルで立ち上げてもよかったけど)
もう少しがんばってもよかった点 検索がもっといろいろできたのではないか ・S式パターンマッチでの検索 ・なにか フロントエンド
今回どういうDBがあればよかったのか ・EDN登録できるドキュメント型NO SQL ・クエリ言語をClojure風なやつにする クエリ言語そのものもDBに入れられる クエリ言語をクエリ言語で操作できる ・パターンマッチ ・部分的な木構造を検索できる
おわり まとめ ・S式系言語用の検索に特化したGists的なのを考えた ・Clojureで雑に実装した その他 ・非S式言語でもASTに落とせばなんかできるかも ・EDN DBはいつかつくりたい