plantuml ã«ã¯ãã¤ããä¸è©±ã«ãªã£ã¦ããã¾ããmix3ã§ãã
ãªã¢ã«ã¿ã¤ã ãã¬ãã¥ã¼
plantuml ã®ãµã¤ãã«ãªã¢ã«ã¿ã¤ã ãã¬ãã¥ã¼ã¯ãã£ã¦ã¬ã¹ãã³ã³ã¹ãæ©ãã®ã§éå®ããã®ã§ãã
- åºåããã©ãã©ãã¦éªé
- æ®éã®ãã©ã¼ã ãªã®ã§ã¤ã³ãã³ãå¹ããªã
- ã¿ã使ããªã
- çã
ã¨ä¸æºããªãããªãã®ã§èªåã®ãã¬ãã¥ã¼ç°å¢ãä½ããããªãã¨ã¯éå»ã«æã£ã¦ãããã¨ãããããã®ã§ããã
plantumlã®ã³ãã³ãã使ãã¨ã©ãããã©ã¼ã«ã¹ãç§»ã£ã¦ãã¾ããããã³ã³ã½ã¼ã«ãåé¢ã«æ¥ãã¨ããåé¡ããã£ã¦è«¦ããçµç·¯ãããã¾ãã
ããæè¿ã«ãªã£ã¦ãããªè¨äºãè¦ã¤ãã¾ãã
Mac + emacs + PlantUML ã§ãããã UML è·äºº
JAVA_TOOL_OPTIONS="-Djava.awt.headless=true" watcher --dir ./uml/ -- 'java -jar /foo/bar/plantuml.jar ./uml/*.uml && open -g -a Preview ./img/*.png'
ã©ããã JAVA_TOOL_OPTIONS="-Djava.awt.headless=true" ã§ awt ã®è¨å®ã夿´ãããã¨ã§ãã©ã¼ã«ã¹ã®åé¡ãåé¿åºæ¥ãããã§ã
ã¨ãããã¨ã§å ¨ç¶ãµã¯ã£ã¨ã¯ãããªãã£ãã£ãã©ä½ãã¾ããã
go-bindata-assetfs ãªããã®ããã
goã§éçãã¡ã¤ã«é ä¿¡ãããã¨ã㯠net/http/#FileServer ã使ãã¨æãã®ã§ãã go-bindata ã§ã¾ã¨ããã¨ãã«ã©ããããããããã¨ããåé¡ããã£ã¦ã
@fujiwara ãããè¨äºã«ãã¦ãã Consul KVSãããã¯ã¨ã³ãã«ãããªã¢ã«ã¿ã¤ã ããã·ã¥ãã¼ã #monitoringcasual ã§ã¯ãhttp.Dir ã®ã¨ãããèªä½ãã¦ãã¦ããããã ã£ãã®ã§ããããæåãããããªã¨æã£ãã®ã§ããã
ããããæ¢ãã¦ã¿ã㨠go-bindata-assetfs ã¨ãã bindata ã®çæãã対å¿ãã¦ãããã®ããã£ãã®ã§ãã£ã¡ã使ãããã«ãã¦ã¿ã¾ããã
go-server-starter 㨠manners
å¥ã«ãããªããã ãã© manners ã使ã£ã¦ graceful shutdown ã«å¯¾å¿ãã㦠go-server-startar ã使ã£ã¦ graceful restart ãåºæ¥ãããã«ãã¦ãã¾ãã
func serve(mux http.Handler) {
l, _ := ss.NewListener()
if l == nil {
var err error
l, err = net.Listen("tcp", fmt.Sprintf("%s:%d", host, port))
if err != nil {
log.Fatalf("Failed to listen to port %d", port)
}
}
s := manners.NewServer()
s.Serve(manners.NewListener(l, s), mux)
}
ã¡ããã¨ç¢ºèªãã¦ãªããã©å¤åããã§ãããã¯ã
WAFç¡ã
Build You Own Web Framework In Go ãåèã«WAFç¡ãã§ä½ã£ã¦ã¿ã¾ããã
middleware ã®ã¨ããã§ func ãè¿ãããã«ã㦠Alice ã§ã¡ã½ãããã§ã¤ã³ã«ããã¨ããã¨ããªããã¹ãã¼ããªæãããã¦å¥½ãã
func hogeHandler(next http.Handler) http.Handler {
fn := func(w http.ResponseWriter, r *http.Request) {
// before
next.ServeHTTP(w, r)
// after
}
return http.HandlerFunc(fn)
}
func hogeHandler(w http.ResponseWriter, r *http.Request) {
// ...
}
func main() {
commonHandlers := alice.New(hogeMiddleware)
http.Handle("/about", commonHandlers.ThenFunc(hogeHandler))
http.ListenAndServe(":8080", nil)
}
contextã¨ãããµã¼ããã¼ãã£ã® routing ã©ã¤ãã©ãªã®çµã¿è¾¼ã¿ã¨ãè²ã åèã«ãªããã¾ãWAF使ããªãå ´åã®è©±ã ãã©ãã
js-base64
ãªã¢ã«ã¿ã¤ã ããã¥ã¼ãä½ãä¸ã§ä¸çªè©°ã¾ã£ãã®ã js-base64
- $.base64.encode(RawDeflate.deflate(Base64.utob("hoge"))
- y8hPTwUA
- Base64.encode(RawDeflate.deflate(Base64.utob("hoge")))
- w4vDiE9PBQA=
ãããªæãã§ js-base64 ã使ã㨠encode ã®çµæãéã£ã¦ããµã¼ãã§ä¸æãè§£çåºæ¥ãªãããã¼ã£ï¼ï¼ï¼ãã¦åæ¥æ½°ãã¦ãã¾ã£ãã
çµå± Base64.btoa(RawDeflate.deflate(Base64.utob("hoge"))) ã¨ããã¨å¤§ä¸å¤«ã ã£ããencode 㨠btoa ã£ã¦éãã®ãï¼ã¨æªã ã«è¯ãããã£ã¦ãã¾ããã
react.js
ãã£ããã ããè²ã 試ããªãã¨ãã¨ãããã¨ã§æåã¯jqueryã§ããããããããªã¨æã£ããã© consul-kv-dashboard ã§ react.js ã使ã£ã¦ããã®ãè¦ã¦è©¦ãã¦ã¿ã¾ãã
Content
â Editor
â Image
ãããªæãã§ Component ãç¨æ
- Editor 㯠onChange ã§ textarea ã®å ¥åå 容ã Content ã«éç¥
- Content ã¯1ç§æ¯ã«å¤æ´ããã§ãã¯ãã¦å¤æ´ããã£ãã Image ãæ´æ°
- Image ã¯æ´æ°æ¯ã«æ¸¡ãããå ¥åå 容ãå ã« rawdeflate 㨠base64 (㨠/ ãæ··ããã®ã§ _ ã«replace) ã㦠url ãçæã㦠img ã¿ã°ãæç»
ãããªæãã§ ä¸äººReact.js Advent Calendar 2014 ã®10æ¥ç®ãããã¾ã§ãåèã«ãã¦ã¿ã
ã³ã³ãã¼ãã³ãã¯ã¢ãã«ãæã£ã¦ãã¦ãã©ãæç»ãããè¯ãããç¥ã£ã¦ããã¨ããç¹ã§ wicket ã® View ã«è¿ããªãã¨æããããã£ã¨ãã¬ã¼ã³ãª html ã§æ§ç¯åºæ¥ããæé«ã ãªãã£ã¦æã£ãã
ãã³ãã¬ã¼ãã¨ã³ã¸ã³çãªèãæ¹ããvue.js angular.js ã®ãã㪠MVVM ã®æè¦ã«æ £ãã¦ããã¨å¤§åæ··ä¹±ãããªãã£ã¦ãããèãæ¹ãéã£ã¦ã¦é¢ç½ãã
ã©ã¡ããã¨ãã㨠angular.js ããã好ã¿ãªã®ã§ãã£ã¨ã¡ã¸ã£ã¼ã«ãªãã¨ãããªãã
ã¨ãããã¨ã§
ã¾ã¨ãã¦æ¸ãåºãã¦ã¿ãã¨ãªããè²ã 触ã£ãæããã£ã¦æ¥½ããã£ããreact.js ãä»å¾ã©ããªããæ³¨ç®ã§ããã