shokai / semirara Goto Github PK
View Code? Open in Web Editor NEWdeprecated. go https://scrapbox.io
deprecated. go https://scrapbox.io
たぶんactionを作ったあたりで変になった
ツールバーからmodalを出して新しい名前を入力させる
#7 を実装してからの方がいい
getpage
とgetpagelist
以外のコマンドをサーバー側で無視するrequire #18
Clipboard APIを使う
https://developer.mozilla.org/ja/docs/Web/Events/paste
もしくはinputやめてtextareaにして中身が複数行になったら分割するとか
Editor componentの変更コマンドも付ける
diffは複数行変更がある時うまくいかなかった
(node) warning: possible EventEmitter memory leak detected. 11 timeout listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at Socket.addListener (events.js:252:17)
at Socket.Readable.on (_stream_readable.js:673:33)
at Socket.once (events.js:278:8)
at Socket.setTimeout (net.js:315:12)
at /Users/sho/src/nodejs/semirara/node_modules/memjs/lib/memjs/server.js:156:7
at [object Object].Server.sock (/Users/sho/src/nodejs/semirara/node_modules/memjs/lib/memjs/server.js:148:5)
at [object Object].Server.write (/Users/sho/src/nodejs/semirara/node_modules/memjs/lib/memjs/server.js:154:8)
at [object Object].Client.perform (/Users/sho/src/nodejs/semirara/node_modules/memjs/lib/memjs/memjs.js:519:8)
at [object Object].Client.get (/Users/sho/src/nodejs/semirara/node_modules/memjs/lib/memjs/memjs.js:114:8)
at cache.es6:34:14
at new Promise (/Users/sho/src/nodejs/semirara/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:193:7)
at Cache.get (cache.es6:31:12)
at Function._callee$ (page.es6:73:26)
at tryCatch (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:61:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:329:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:94:21)
gzipとかで通信データを圧縮できるmiddlewareありそう
socket.ioとかも綺麗に埋め込めるのでは
カーソルが出るのが遅い、たまにカーソルが現れない事もある
最後の行の後ろに行を挿入した時に起こる
async-await構文のためだけにimportしていたけど、たぶんbabel-regenerator-runtimeだけでいいと思う
updatedAt, createdAt
#
\r
\n
/
in wikiname?
a-zA-Z0-9_
ログアウト状態でアクセスしたら静的ページを見せる
ログインユーザーのみReactとSocket.IOで動的な編集ページを表示する
カーソル位置を復元したい
inputのselectionStart
とselectionEnd
を随時記録し、inputにfocusする時に復元する
indentが無限にできるので、10ぐらいに制限する
ロックするというかViewer
にコンポーネントを切り替えてしまえばいいのか
"page:lines"
をdispatchするPage#save()
する/auth/login?redirect=/general/hello
のようにリダイレクト先を付けておく?
ctrl+up/down
- swap lines
shift+up/down
- swap blocks
shift+left/right
- indent
960kbあるのはおかしい
highlight.jsを入れた頃から急に増えてるような?
でもhighlight.jsにはdependenciesが無いし、サーバーサイドレンダリング #41 のあたりからかもしれない
store session on memcached (key=session, value=github.id)
空のページを編集できるようにする
/general/test
でも/General/TEST
でも同じページを表示する
mongooseで検索する時のqueryで/regex/i
を使えば良い
setTimeout
がsettimeout
と表示されるのはおかしい
code:js
やcode:javascript
だけでなく、src/main.js
みたいに書けるようにしたい
同じページを開いている別clientが編集した時に、editlineをずらす必要がある
insertNewLine
かupdateLine
した時に付けるpage:lines
actionをdispatchした前後を見るmiddlewareを実装すればいいここまで大きなIDでなくてもいいと思う
[[http://example.com]]
<a href="http://example.com">http://example.com</a>
[[http://example.com cool page]]
<a href="http://example.com">cool page</a>
[[PageName]]
<a href="AppRoot/Wiki/PageName">PageName</a>
[[WikiName::PageName]]
<a href="AppRoot/WikiName/PageName">WikiName::PageName</a>
[[http://example.com/image]]
<img src="http://example.com/image" />
[[PageName.icon]]
<img src="icon url" />
[[:javascript:]]
console.log("hello");
server/
ディレクトリのみをトランスパイルしている。なので両方で使うライブラリはclientからは../../server/lib/foo.es6
と参照している
- server/
- src/
- dist/
- client/
全部コンパイルする
-src/
- server/
- client/
- share/
-dist/
- server/
- client/
- share/
行頭が$
か%
の時にスタイル変える
現在はeditorから新しいpage.lines
全体をstateに書き込んでいる
などの編集内容をdispatchする
semirara:socket:middleware set socket.user +239ms
TypeError: argument str must be a string
at Object.parse (/Users/sho/src/nodejs/semirara/node_modules/cookie/index.js:49:11)
at Array._callee$ (middleware.es6:10:28)
at tryCatch (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:61:40)
at GeneratorFunctionPrototype.invoke [as _invoke] (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:329:22)
at GeneratorFunctionPrototype.prototype.(anonymous function) [as next] (/Users/sho/src/nodejs/semirara/node_modules/babel-regenerator-runtime/runtime.js:94:21)
at step (middleware.es6:4:1)
at middleware.es6:4:1
at new Promise (/Users/sho/src/nodejs/semirara/node_modules/babel-polyfill/node_modules/core-js/modules/es6.promise.js:193:7)
at Array.<anonymous> (middleware.es6:4:1)
at Array.setUserContext (middleware.es6:7:23)
at run (/Users/sho/src/nodejs/semirara/node_modules/socket.io/lib/namespace.js:116:11)
at Namespace.run (/Users/sho/src/nodejs/semirara/node_modules/socket.io/lib/namespace.js:128:3)
at Namespace.add (/Users/sho/src/nodejs/semirara/node_modules/socket.io/lib/namespace.js:157:8)
at Client.connect (/Users/sho/src/nodejs/semirara/node_modules/socket.io/lib/client.js:75:20)
at Server.onconnection (/Users/sho/src/nodejs/semirara/node_modules/socket.io/lib/index.js:317:10)
at emitOne (events.js:90:13)
at Server.emit (events.js:182:7)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.