# oj評論分享設計 ## 構想 使用現有oj的session api在載入時確認是否登入,然後連接SQLite作為資料庫,並實作LRU緩存和記憶體分配器減輕資料庫和記憶體回收的壓力,外加nginx預防ddos。 ## 功能 - 發表評論(對題目) - 發表評論程式碼高亮(highlight.js) ## 後端 ### 技術 - heap off快取系統 - ttl token ### 取得評論資訊 ```flow s=>start: 取得評論資訊 e=>end: 回傳資訊 n=>operation: nginx 防護 getorsetcache=>subroutine: 緩存處理 s->n->getorsetcache->e ``` ### 緩存處理 ```flow s=>start: 緩存處理 e=>end: 回傳緩存 isincache=>condition: 在緩存裡? loadsql=>operation: 從sql載入到緩存中 s->isincache isincache(yes)->e isincache(no)->loadsql->e ``` ### 發表評論 ```flow s=>start: 發表評論 e=>end: 回傳結果 n=>operation: nginx 防護 islogin=>condition: 登入了? savemsg=>subroutine: 儲存評論 s->n->islogin islogin(yes)->savemsg->e islogin(no)->e ``` ### 登入檢測 ```flow s=>start: 登入檢測 e=>end: 回傳結果 hassession=>condition: cookie裡有session嗎? checksession=>operation: 向oj伺服器確認session有效性:>http://mdcpp.mingdao.edu.tw/api/sessions[black] isvaildsession=>condition: 是否有為有效session s->hassession hassession(yes)->checksession->e hassession(no)->e ``` ## 前端 ### 技術 - markdown 渲染 - 前端 [markdown it]+[highlight] - 後端 [github markdown] - 嵌入pdf - [pdf.js] - [html5 object] - 嵌入影片 - [oembed] <!-- 連結塞這 --> [markdown it]:https://github.com/markdown-it/markdown-it [highlight]:https://highlightjs.org/ [github markdown]: https://github.com/github/markup#github-markup [pdf.js]:https://mozilla.github.io/pdf.js/ [html5 object]:https://stackoverflow.com/a/1244854/11729815 [oembed]:https://github.com/ybouane/markdown-it-oembed
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up