GraphQLå®è·µãã¦ãã¦v2 https://speakerdeck.com/sonatard/graphql-knowhow-v2 宣è¨çUIã®ç¶æ 管çã¨ã¢ã¼ããã¯ãã£SwiftUIã¨GraphQLã«ããå®è·µ https://speakerdeck.com/sonatard/swiftuiâ¦
GraphQLå®è·µãã¦ãã¦v2 https://speakerdeck.com/sonatard/graphql-knowhow-v2 宣è¨çUIã®ç¶æ 管çã¨ã¢ã¼ããã¯ãã£SwiftUIã¨GraphQLã«ããå®è·µ https://speakerdeck.com/sonatard/swiftuiâ¦
ã½ã¦ã¾ã¦ã® Software Engineer ããã£ã¦ãã¾ãã@mookjp ã§ãã 8/10 ã®è¨äºãã¡ã«ã«ãªShopsã®æè¡ã¹ã¿ãã¯ã¨ããã®é¸å®çç±ãã§ã¯ãã¡ã«ã«ãª Shops ã®ã¢ã¼ããã¯ãã£ã«ã¤ãã¦ããã®å ¨ä½åãç´¹ä»ãã¾ããã ãã®è¨äºã§ã¯ããã®ãã¡ã® BFFï¼Backend for Frontendï¼ ã¬ã¤ã¤ã¨ãã¦ç¨æãã GraphQL ãµã¼ãã«ã¤ãã¦ãNestJS ã使ã£ãå®è£ ä¾ã交ãã¦ç´¹ä»ãã¾ãã GraphQL ã¨ã¯ GraphQL ãµã¼ãå¨è¾ºã®æ§æ NestJS ã¨ã¯ GraphQL Module NestJS 㧠Code First ãªã¹ãã¼ãå®ç¾©ããã Object types ã®å®ç¾© Query 㨠Mutation ã®å®ç¾© GraphQL ã¹ãã¼ãã®çæ ã¹ãã¼ãã® Breaking Change ï¼ç ´å£çå¤æ´ï¼ãé²ã DataLoader ã使ã£ã¦ Bat
Distributed systems provide a particular challenge to program. They often require us to have multiple copies of data, which need to keep synchronized. Yet we cannot rely on processing nodes working reliably, and network delays can easily lead to inconsistencies. Despite this, many organizations rely on a range of core distributed software handling data storage, messaging, system management, and co
main.go �<�8�U �B :�U package main import ( "context" "flag" "fmt" "log" "net/http" "os" "os/signal" "sync/atomic" "time" ) type key int const ( requestIDKey key = 0 ) var ( listenAddr string healthy int32 ) func main() { flag.StringVar(&listenAddr, "listen-addr", ":5000", "server listen address") flag.Parse() logger := log.New(os.Stdout, "http: ", log.LstdFlags) logger.Println("Server is starting
å³è§£æ±ãã 以ä¸ããããã³ã«å¦çãã¨ãã¡ãã»ã¼ã¸å¦çããåãã¦æ±ã£ã¦ãããããã®å·®ãé¡èã«åºãã®ã¯å ¨ææ¤ç´¢ã¨ã³ã¸ã³ãéåæã¸ã§ããµã¼ãã¼ãªã©ãå°ããªã¡ãã»ã¼ã¸ã§éãå¦çãããã¿ã¤ããã¹ããªã¼ã æåã®ãããã³ã«ã®å ´åã¯ããããã³ã«å¦çãããã¹ããªã¼ã å¦çãã«ç½®ãæããã¨ãããããããªãã ã·ã³ã°ã«ã¹ã¬ããï½¥ã¤ãã³ãé§å ã³ãã¯ã·ã§ã³Nï¼ã¹ã¬ããï¼ãepoll/kqueue/select ãï¼ã¤ä½¿ã£ã¦ã¤ãã³ãã«ã¼ããä½ãã ãã«ãã³ã¢CPUã§ã¹ã±ã¼ã«ããªãã®ã§ããµã¼ãã¼ã§ã¯ä»æãã®ã¢ãã«ã¯æµè¡ããªãã ã¯ã©ã¤ã¢ã³ãã§éåæãªã¡ãã»ã¼ã¸ã³ã°ãããããå ´åã¯ãã®ã¢ãã«ã使ããï¼ ãµã¼ãã¼ã«ã¡ãã»ã¼ã¸ãéä¿¡ ã¤ãã³ããã³ãã©ãç»é²ï¼ãã®ã¨ãã¤ãã³ããã³ãã©ã®ãã¤ã³ã¿ãåã£ã¦ãã ã¤ãã³ããã³ãã©->ãã©ã° ãONã«ãªãã¾ã§ã¤ãã³ãã«ã¼ããåã ã¤ãã³ããã³ãã©->çµæ ãè¿ã ï¼ã³ãã¯ã·ã§ã³ï¼ã¹ã¬ã
SELinuxã¯å¼·å¶ã¢ã¯ã»ã¹å¶å¾¡(MAC:Mandatoryaccesscontrol)ã¨ãã°ãã管çè ã«ãã権é管çæ©è½ãæä¾ããä»çµã¿ã®ã²ã¨ã¤ã§ããFISC(éèæ å ±ã·ã¹ãã ã»ã³ã¿ã¼)ãNISC(å é£å®æ¿æ å ±ã»ãã¥ãªãã£ã»ã³ã¿ã¼)ãªã©ã®...
Ruby on Railsã§Devç°å¢ã¯ä½¿ã£ããã¨ãããã©ãtestã»prodç°å¢ãèæ ®ããç°å¢æ§ç¯ããããã¨ããªã人ã«ãå§ãã®å 容ã§ãã ##ãµã¼ãã¼æ§æå³ ##ãµã¼ãã¼ã®å½¹å² ###ãªãã¼ã¹ãããã·ãµã¼ãã¼(ãã¹ãåï¼rp01ï¼ ãã¼ããã©ã³ãµæ©è½ã使ã£ã¦WEBãµã¼ãäºå°ã«å¦çãæ¯ãåããã¢ã¯ã»ã¹ãï¼å°ã®ãµã¼ãã¼ã«éä¸ãããªã WEBãµã¼ãã¼ãå¤é¨ããé ãããã¨ã§ã»ãã¥ãªãã£é¢ã®åä¸ ###WEBãµã¼ãã¼ï¼web01ãweb02ï¼ webãµã¼ãã¼ãï¼å°ç¨æãããã¨ã§ã¢ã¯ã»ã¹ãï¼ã¤ã®ãµã¼ãã¼ã«éä¸ããªããããã¬ã¹ãã³ã¹ãæ©ãã§ãã ###ãã¹ã¿ã¼DBãµã¼ãã¼ï¼db01mï¼ DBå 容ãããï¼å°ã®DBãµã¼ãã¼ï¼ã¹ã¬ã¼ãï¼ã¸ãªã¢ã«ã¿ã¤ã ã«ã³ãã¼ããé害ã§ãã¹ã¿ã¼ãåæ¢ããã¨ãã¯ã¹ã¬ã¼ãã«åãæ¿ãã ###ã¹ã¬ã¼ãDBãµã¼ãã¼ï¼db01sï¼ èªã¿è¾¼ã¿å°ç¨ã®ãµã¼ãã¼ãæ¸ãè¾¼ã¿ãããªãåã¬ã¹ãã³ã¹ã
以åhttp://tech.naver.jp/blog/?p=1369ã®è¨äºãèªãã ã®ã ããã©ãããã¾ã§ã«processã®ç¥èãç¡ãã£ãããã¦ãã¾ã£ããç解ã§ãã¾ããã§ãããããã§Working with UNIX ProcessesãServer::Starterã®ä¸èº«ãå¼ãã§ããããhot deployã®ä»çµã¿ãç解ã§ãã(æ°ã«ãªã£ã¦ãã)ã®ã§ãServer::Starterã®å®è£ ã追ããªããããããã¾ã¨ãã¦ã¿ã¾ãã hot deployã¨ã¯ hot deployã¨ã¯ãåèµ·åã®æã«ãªã¯ã¨ã¹ãã®å¦çãç¶ããªãããå¤æ´ã®å 容ãåæ ããããã®æ段ãã§ãã é常serverãrestartãããã¨ãã¯ãstop -> startã®æµãã«ãªãã¨æãã¾ããããã®å ´åstopãã¦ãããstartåºæ¥ãã¾ã§ã®æéã«ãªã¯ã¨ã¹ããå¦çã§ããªãæéãçºçãã¾ãããã®æéãªãã«deployããä»çµã¿ãhot
JVM Operation Casual Talksã§åºã¦ã話ã¨ãã¦Javaã§hot deployã£ã¦ã©ããã¦ãã®ï¼ã£ã¦ã®ãããã¾ããã hot deployã£ã¦ããã®ã¯ã¢ããªã±ã¼ã·ã§ã³ã³ã¼ããå¤æ´ãã¦ãAPãµã¼ãã¼ãåèµ·åããã«åæ ããæè¡ã§ãã ãã®è¾ºå¥ã«åã¯å ¨ç¶ç¥ããªããçããæã£ã¦ããããã§ã¯ãªãã§ãããã¾ãã¡ãã£ã¨èå³ããã£ãã®ã§LLè¨èªã§ã®hot deployã¨Javaã§hot deployãç°¡åã«èª¿ã¹ãã®ã§ã¡ã¢ã£ã¨ãã¾ãã ã³ã¼ããå¤æ´ãã¦APãµã¼ãã¼ãåèµ·åããå ´åãAPãµã¼ãã¼ãæ¢ã¾ã£ã¦ããã¨ãã«ã¢ã¯ã»ã¹ãè¡ãã¨å°ãã®ã§ããã¼ããã©ã³ãµããå¤ãã¦APãµã¼ãã¼ãåèµ·åãã¦ã¾ãæ»ãã¿ãããªãã¨ãããã®ããªã¼ã½ããã¯ã¹ãªæ¹æ³ã®ããã§ãããhot deployã ã¨ãããã£ããã¨ãããå¿ è¦ãç¡ããªãã¾ãã Server::Starterããå¦ã¶hot deployã®ä»çµã¿ - $s
Webãµã¼ãã¼ãã¬ã¹ãã³ã¹ãçºè¡ããéã«ãHTTPã¬ã¹ãã³ã¹ãããã¼ã«ä»ããã¨ã»ãã¥ãªãã£ã¬ãã«ã®åä¸ã«ã¤ãªãããããã¼ãã£ã¼ã«ããç´¹ä»ãã¾ãã å²ã¿å ã¯æ¨å¥¨ããè¨å®ã®ä¸ä¾ã§ãããã©ã¦ã¶ã«ãã£ã¦ã¯å¯¾å¿ãã¦ããªããããã¼ãã£ã¼ã«ãããªãã·ã§ã³ãªã©ãããã¾ãã®ã§ãã¯ã©ã¤ã¢ã³ãã®ç°å¢ã«ãã£ã¦ã¯æ©è½ããªããã¨ãããã¾ãã X-Frame-Options ãã©ã¦ã¶ã frame ã¾ã㯠iframe ã§æå®ãããã¬ã¼ã å ã«ãã¼ã¸ã表示ãããã¨ãå¶å¾¡ããããã®ãããã¼ãã£ã¼ã«ãã§ãã主ã«ã¯ãªãã¯ã¸ã£ããã³ã°ã¨ããæ»æãé²ãããã«ç¨ãããã¾ãã X-Frame-Options: SAMEORIGIN DENY ãã¬ã¼ã å ã«ãã¼ã¸ã表示ãããã¨ãç¦æ¢ï¼åããµã¤ãå ã§ãã£ã¦ãç¦æ¢ã§ãï¼ SAMEORIGIN èªåèªèº«ã¨çæå ãåããã¬ã¼ã ã®å ´åã«ãã¼ã¸ã表示ãããã¨ã許å¯ï¼ä»ã®ãµã¤ãã«ç¦æ¢ãããå ´åã¯ä¸»ã«ã
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ã©ã³ãã³ã°
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}