ãã·ã§ã«ãéçºçç£æ§çä¸ããã®ã¨ã¤ãªã¢ã¹è¨å®ãzshã
ã¯ããã«
ã·ã§ã«ã®ã¨ã¤ãªã¢ã¹ä½¿ã£ã¦ãã¾ããï¼
ãã¡ããã¡ã便å©ãªæ©è½ã§ãéçºçç£æ§ãçä¸ããããã¨ã¤ãªã¢ã¹ã
æ¬ç¨¿ã§ã¯èè
ã使ç¨ãã¦ããã¨ã¤ãªã¢ã¹ãããã¤ãç´¹ä»ãããã¨æãã¾ã
å·®åã®ãããã¡ã¤ã«ã ããã¹ãããªã³ããã
æ¯åå
¨ãã¡ã¤ã«ãã¹ããããããªã³ããã¦ããããã¨é¦¬é¹¿ã«ãªããªãæéããããã®ã§ãå·®åã ãããæãã«ããããã§ãããã
ãããªã¨ãã«å·®åããããã¡ã¤ã«åã ãåå¾ããã³ãã³ããããã§ãã
git status -s | awk '{ print $2 }'
rubocop ã«ããããã¨ãã¯ããã§ãã
bundle exec rubocop $(git status -s '*.rb' | awk '{ print $2}')
ãã®ã³ãã³ãèªä½ã¯æé«ãªãã§ããããã¡ããã¡ãé·ããã§ããã...
ãããªã¨ãã«ã¨ã¤ãªã¢ã¹ã®åºçªã§ã
~/.zshrc
alias rc="bundle exec rubocop $(git status -s '*.rb' | awk '{ print $2}')"
ãããå®ç¾©ãã¦èªã¿è¾¼ãã°ãbundle exec rubocop $(git status -s '*.rb' | awk '{ print $2}')
ã®ä»£ããã«rc
ãæã¤ã ãã§ãããªãã¾ãã
便å©ãããã
ã³ã³ããå ã§å®è¡ãã
Docker Compose ã§éçºãã¦ããã¨ãã³ã³ããå
ã§ã³ãã³ãå®è¡ããå¿
è¦ãããã¾ãã
docker compose exec hoge bash
ãã¦ã³ã³ããå
ã®ã·ã§ã«ã«å
¥ã£ã¦ä½æ¥ãã¦ãããã®ã§ããããã¹ãã®ã·ã§ã«ãæ´ãã¦ããã¨ãç¸å¯¾çã«ä½æ¥ãã«ããæãã¦ãã¾ãã¾ãã
ããããæãã¨ã¤ãªã¢ã¹ã®åºçªã§ããã
~/.zshrc
alias dce="docker compose exec"
docker compose exec
ã®ä»£ããã«dce
ã¨æã¤ã ãã§ãããªãã¾ããæé«ã
çµã¿åããã
ä¸è¨ãçµã¿åãããã
ããå
ã«ã¯æ»ããªããªãã¾ãã
~/.zshrc
alias crc="docker compose exec web bundle exec rubocop $(git status -s '*.rb' | awk '{ print $2}')"
è³é«ã®ã¨ã¤ãªã¢ã¹ãçèªãã¾ããã
æçµçã«ã¯ããã®ä»²éãå®ç¾©ãã¾ãããã¨ã«ãªãã¾ãã
~/.zshrc
alias crc="docker compose exec web bundle exec rubocop $(git status -s '*.rb' | awk '{ print $2}')" alias crca="docker compose exec web bundle exec rubocop -A $(git status -s '*.rb' | awk '{ print $2}')" alias crs="docker compose exec web bundle exec rspec $(git status -s '*._spec.rb' | awk '{ print $2}')" alias ccheck="docker compose exec front npx biome check $(git status -s '*.ts' '*.tsx' | awk '{print $2}' | sed 's/front\///g')" # ã¢ãã¬ããªã®ã§ãã¹ãåããã alias cwrite="docker compose exec front npx biome check --write $(git status -s '*.ts' '*.tsx' | awk '{print $2}' | sed 's/front\///g')" # ã¢ãã¬ããªã®ã§ãã¹ãåããã
ãããã«
æ¬ç¨¿ã§ã¯èè
ã使ç¨ãã¦ããã¨ã¤ãªã¢ã¹ãç´¹ä»ãããã¾ããã
ç¹ã«å¹æã®é«ããã®ã«çµã£ã¦ç´¹ä»ããã®ã§ãããã»ãã«ãç´°ãã奴ããã£ã±ãå®ç¾©ãã¦ã¾ãã
ç¹ã«git
ãcd
ãdocker
ã¾ããã§ããã
è¨äºãèªãã§ãããããªãããæé«ã®ã¨ã¤ãªã¢ã¹è¦ã¤ãã¦ã¿ã¦ãã ããã
ãDockerãcompose ãã¡ã¤ã«ã® ports ã¯ç°å¢å¤æ°ã®æ¹ããããªãã§ããï¼
- ã¯ããã«
- compose ãã¡ã¤ã«ã® ports ã¯ç°å¢å¤æ°ã®æ¹ããããªãã§ããï¼
- ãããã«
ã¯ããã«
å°ãåããæ¥åã«ã¦è¤æ°ããã¸ã§ã¯ãã触ãããã«ãªãã¾ããã
ã©ã®ããã¸ã§ã¯ããDockerã使ç¨ãã¦ãã¾ãã
ãã®ãªãã§failed: port is already allocated
ããã¡ããã¡ãè¦ããã¨ã«ãªãã¾ããã
ãã®ã¨ã©ã¼èªä½ã¯compose.yaml
ã®ports
ãå¤æ´ããã ãã§è§£æ±ºããç°¡åãªã¨ã©ã¼ã§ã¯ããã¾ãã
ã§ãããcompose.yaml
ã«å·®åãåºã¦ãã¾ã£ã¦ãã¡ããã¡ãããããããã§ã...
compose.yaml
ãå¤æ´ããããã®PRåºãã¨ãã®ããã©ãããã¯ç®ãå½ã¦ããã¾ããã
ããã§ãæ¬ç¨¿ã§ã¯ãã®ãããããããä½æ¸ããããã«å ¨ã¦ã®ããã¸ã§ã¯ããããããããããããã£ã¦æ¹æ³ãå ±æãããã¾ãã
compose ãã¡ã¤ã«ã® ports ã¯ç°å¢å¤æ°ã®æ¹ããããªãã§ããï¼
æ¬ç¨¿ã§ã¯ compose ãã¡ã¤ã«ã® ports ã«ç°å¢å¤æ°ãæå®ããæ¹æ³ãç´¹ä»ãã¾ãã
ç´ ç´ã«compose.yaml
ãæ¸ããã¨ããä¸è¨ã®ããã«ãªã£ã¦ããã¨æãã¾ãã
services: hoge: command: ãµã¼ãã¼ãèµ·åããã³ãã³ã --port xxxx ports: - xxxx:xxxx
failed: port is already allocated
ãåºãã¨ãã«æ®éã«è§£æ±ºããã«ã¯ä¸è¨ã®ããã«ãã¾ãããã
services: hoge: command: ãµã¼ãã¼ãèµ·åããã³ãã³ã --port xxxx ports: - xxx1:xxxx
ãã®æ¹æ³ã¯å è¿°ã®éããå·®åãä¸çåºãã®ã§é¿ãããã§ãã
ããã§ç°å¢å¤æ°ã§ããã
ä¸è¨ã®ããã«ãã¾ãã
services: hoge: command: ãµã¼ãã¼ãèµ·åããã³ãã³ã --port xxxx ports: - ${HOGE_PORT:-xxxx}:xxxx
ç°¡åãããã
HOGE_PORT
ãç°å¢å¤æ°ã«ããã°ãã®å¤ã«ãªããè¨å®ããã¦ããªãããããã¯ç©ºã®å ´åã«ã¯xxxx
ã«ãªãã¾ãã
ãã¡ãããHOGE_PORT
ã®ååã¯ä»»æã§ããå¤ãä»»æã§ãã
HOGE_PORT
ã¯.env
ã«è¨å®ããã®ãããã§ãããã
.env
HOGE_PORT=xxx1
.env ãgitignoreããã¦ãªãã¨ãã¯gitignoreãã¦ãã ãã
.env.sample
ãããã°å®ç§ã§ããã
.env.sample
HOGE_PORT=
ãããã«
compose.override.yaml
ãports
ãããæãã«ãã¼ã¸ãã¦ãããã°ä½ãå°ããªãã£ãã®ã«...
ç°¡åãªã®ã§ãã²å ¨ããã¸ã§ã¯ãã§æ¡ç¨ãã¦ãã ããï¼
ã¦ã¼ã¶ã¼ä½é¨åä¸ã®ããã®æ¥½è¦³çæ´æ°ï¼Optimistic Updateï¼ãç¥ã
- ã¯ããã«
- 楽観çæ´æ°ã¨ã¯
- 楽観çæ´æ°ã®ã¡ãªãã
- 楽観çæ´æ°ã®ãã¡ãªãã
- 楽観çæ´æ°ã®ã¤ã¡ã¼ã¸å³
- 楽観çæ´æ°ãããããªãããªãã¿ã¼ã³
- ãããã«
ã¯ããã«
æè¿ãæ¥åã§ããã³ãã¨ã³ãã®ãªãã¬ã¤ã¹ãé²ãã¦ãã¾ãã
ãã®ä¸ã§ããã©ã¼ãã³ã¹ã®åä¸ã«ã¤ãã¦ãè¦ç´ãã¦ããã楽観çæ´æ°ã«ã¤ãã¦èª¿ã¹ãæ©ä¼ããã£ãã®ã§ã¾ã¨ãã¾ãã
楽観çæ´æ°ã¨ã¯
楽観çæ´æ°ï¼Optimistic Updateï¼ã¨ã¯ãã¦ã¼ã¶ã¼ã®ã¢ã¯ã·ã§ã³ãæ£å¸¸ã«å®äºããã¨ä»®å®ãã¦ããµã¼ãã¼ããã®å¿çãå¾
ããã«UIãæ´æ°ããææ³ã§ãã
UXåä¸ã®ããã®ææ³ã®ä¸ã¤ã¿ããã§ããã
ä¸è¬çã«ããç¨åº¦ã®æéããããéä¿¡ããµã¼ãã¼ã®å¦çãDBã®æ´æ°ãå¾
ããã«UIãæ´æ°ããã®ã§ã¹ã ã¼ãºãªæä½ãå¯è½ã«ãªãã¾ãã
ä¾ãã°ãXï¼æ§Twitterï¼ã® ããã ã ã¨ããããããç¬éã«UIä¸ã§ã¯ +1 ãããå®éã«ãµã¼ãã¼ã¸ã®ãªã¯ã¨ã¹ãã¯è£ã§èµ°ã£ã¦ããããããªæãã§ãã
ï¼å®éã« X ã®ãããã楽観çæ´æ°ããã¦ãããã©ããã¯ããããããªãã£ãã§ãï¼
対ãã¦ããµã¼ãã¼ããã®å¿çãå¾ ã£ã¦ãã UI ãæ´æ°ããææ³ãæ²è¦³çæ´æ°ï¼Pessimistic Updateï¼ã¨å¼ã¶ããã§ãã
楽観çæ´æ°ã®UIãå®éã«è§¦ã£ã¦ã¿ããæ¹ã¯ä¸è¨ SWR ã® Sandbox ãã確èªãã ããã Optimistic UI â SWR
楽観çæ´æ°ã®ã¡ãªãã
ã¡ãªããã«ã¤ãã¦ã¯å ã»ã©ã軽ã触ãã¾ãããã
- ã¹ã ã¼ãºãªæä½æã«ããã¦ã¼ã¶ã¼ä½é¨ã®åä¸
ã®ä¸ç¹ã«å°½ããããªã¨ããã¨ããã§ãã
楽観çæ´æ°ã®ãã¡ãªãã
ä¸æ¹ã§ãã¡ãªããã¯æ°ç¹èãããã¾ãã
- ãã¼ã¿ã®ä¸æ´åãçºçããå¯è½æ§ããã
- ã¨ã©ã¼ãã³ããªã³ã°ãè¤éåãã
ããã³ãããªãã¼ã·ã§ã³ãéã£ã¦ãªã¯ã¨ã¹ãããããä¸æçãªã¨ã©ã¼ãªã©ã§å®éã«ã¯ãã¼ã¿ãDBã«åæ ãããªããã¨ããã®ããã¼ã¿ã®ä¸æ´åãçºçãããã¿ã¼ã³ã§ãã
ãã®å ´åãã¬ã¹ãã³ã¹ãã¨ã©ã¼ã§è¿ã£ã¦ãã¦æ¥½è¦³çã«ããæ´æ°ããã¼ã«ããã¯ããå¿
è¦ãããã¾ããããã¼ã«ããã¯ãå®äºããã¾ã§æ£ãããªããã¼ã¿ãã¦ã¼ã¶ã«è¡¨ç¤ºãã¦ãã¾ããã¨ã«ãªãã¾ãã
ãã¡ããããã¼ã¿ã«ä¸æ´åãçºçããã®ã¯å¥½ã¾ãããªãã®ã§ã確å®ã«ã¨ã©ã¼ãã³ããªã³ã°ããå¿
è¦ãããã¾ãã
ãããå®è£
ã«ãã£ã¦ã¯è¤éã«ãªããã¨ãèãããã¾ãã
楽観çæ´æ°ã®ã¤ã¡ã¼ã¸å³
ããã§ã¯ãç解ãæ·±ããããã«æ¥½è¦³çæ´æ°ã®ã¤ã¡ã¼ã¸ãå³ç¤ºãã¾ãã
ä¾ã¨ãã¦ãã¿ã¹ã¯ä¸è¦§ãã¼ã¸ã«ã¦ãã¢ã¼ãã«ãªã©ã§ã¿ã¹ã¯ãä½æããåæ¤è¨¼ã§ã¿ã¹ã¯ä¸è¦§ãåãã§ãããããã¾ã§ã®ã¹ãã¼ãªã¼ãèãã¾ãã
Xï¼æ§Twitterï¼ã®ã¿ã¤ã ã©ã¤ã³ã®ãããªãã®ãã¤ã¡ã¼ã¸ãã¦ãã¾ãã
楽観çæ´æ°ã«ãã£ã¦ãä½æãªã¯ã¨ã¹ãã¨ä¸è¦§åå¾ãªã¯ã¨ã¹ããããã«ããã¯ã«ãªãããäºãæã®æåã§UIãæ´æ°ãããã¨ãã§ãã¾ãã
楽観çæ´æ°ãããããªãããªãã¿ã¼ã³
ããã¾ã§è¦ã¦ãã楽観çæ´æ°ã§ããã使ããªãã使ãã¹ãã§ãªããã¿ã¼ã³ãããããã§ãã
æãã¤ãéãæãã¦ã¿ã¾ãã
- ãã¼ã¿ã®æ´åæ§ãéè¦ãªå ´å
- éèç³»ãªã©ãã¦ã¼ã¶ã«ä¸ãä¸ã§ã誤ã£ãæ å ±ãæä¾ããããã«ã¯ãããªãã¨ãã§ã
- ãã©ã¼ã ã®å
容ã ãã§ã¯ä¸è¦§ã«è¡¨ç¤ºããå
容ã«æºããªãå ´å
- ã¬ã¹ãã³ã¹ã«ããå«ã¾ããã代æ¿ãã¼ã¿ã§åãããã¨ãé£ããã¨ãã§ã
- ä¾ãã°ãã«ã¼ã ãããã³ã°ã§ã®ã«ã¼ã IDã®ããã«ãµã¼ãã§ä¸æã®å¤ãå²ãå½ã¦ãã¨ã
- 表示ããªã id ãéè¦ã§ãªãã¿ã¤ã ã¹ã¿ã³ããªã©ã¯é©å½ã«ããã³ãã§åããã°ãããã
- ã¬ã¹ãã³ã¹ã«ããå«ã¾ããã代æ¿ãã¼ã¿ã§åãããã¨ãé£ããã¨ãã§ã
- ãã¼ã¸ãã¼ã·ã§ã³ããã£ã«ã¿ãªã³ã°ãã½ã¼ããããã¯ã¨ã³ãã§æ
ã£ã¦ããå ´å
- 表示ããã¦ãããã¼ã¿ã«å«ã¾ãããã©ãããããã³ãã§å¤æãã¤ããªãã¨ãã§ã
- ä¾åé¢ä¿ãå¤ãå ´å
- ã¿ã¹ã¯ã§ããã¨ã©ãã«ãªã©ä»ã®ã¨ã³ãã£ãã£ãå¤ãä¾åãã¦ããã¨ãã§ã
ã¼ã¡ã¼ã¡ããã¾ããã
éã«è¨ãã°ãã以å¤ã®ãã¿ã¼ã³ã¯ä½¿ããããªæ°ããã¾ãã
ãããã«
ä»åã¯æ¥½è¦³çæ´æ°ã«ã¤ãã¦ã調æ»ãã¦ãªãã¨ãªãç解ããå
容ãæåã«èµ·ããã¦ã¿ã¾ããã
React ã«ã¦ useOptimistic ãå®é¨çæ©è½ã§æä¾ããã¦ãããªã©ãæ°ã«ãªã£ã¦ããé¨åã«ã¤ãã¦è§¦ãããã¨ãã§ãã¦ããã£ãã§ãã
ç´å¾ã§ããå®è£ ãã§ããã SWR ã§ã®å®è£ æ¹æ³ã«ã¤ãã¦ãæ稿ãããã
ãVSCodeãã·ã§ã¼ãã«ãã tier 表ãéçºçç£æ§çä¸ããã
ã¯ããã«
VSCode ã®ã·ã§ã¼ãã«ããå¤ããªãã§ããï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼
ããã ãå¤ãã¨ã©ã®ã·ã§ã¼ãã«ããã便å©ã§ã©ãã使ãã«ããã®ãããããããªããªã£ã¡ããã¾ãã...
以åã«OSãã¨ã«ã·ã§ã¼ãã«ãããã¼ãã¾ã¨ããè¨äºãæ¸ãã¾ãã¦ããã®æ©ä¼ã«æ®æ®µã©ã®ã·ã§ã¼ãã«ãããã¼ãã©ã®ããã使ã£ã¦ãã®ã㧠tier åããããã¨ã«ãã¾ãããtier 大好ãã§ãã
ãã®è¨äºãèªãã§ãã ãã£ã¦ãçããã®åèã«ãªãã°ã¨æã£ã¦ãã¾ãããã¢ã³ã±ã¼ãã¨ã£ããããããã§ã¯ãªãããã¾ã§å人ã®æè¦ã§ tier ãä½æãã¦ã¾ãã
åèç¨åº¦ã«ã覧ãã ããã
èè
ã®VSCodeæ´ã¯ 5å¹´ã»ã©ã§ãã
æ¦è¦
ä»ååãä¸ãã VSCode ããã©ã«ãã®ã·ã§ã¼ãã«ããã¯119åããã¾ãããã¡ããã¡ãããã¾ããã
èè
ã¯è¦ããã¦20åã¨ãã§ããããã
ãã®è¨äºã§ã¯ããã®119åããã·ã§ã¼ãã«ããã S~D+ãããããã ã®5段é + 1åé¡ã« tier åããã¾ããã
ããã§ã¯ããããã®ã³ãã³ããã©ããªã³ãã³ããã«ã¤ãã¦ã¯è¨åãã¾ããã
ã¢ãããããã°ãtier S, A ããã㯠ããã便å©ï¼ãã使ãï¼ ã¿ãããªå¥è¨äºãæ¸ãããã§ãã
注æ
åæã·ã§ã¼ãã«ãããã¼ã¯2024å¹´6ææç¹ã®ä¸è¨ãåç
§ãã¦ãã¾ãã
ãªãããã®è¨äºã§ã¯ä¸è¨pdf以å¤ã®åæã·ã§ã¼ãã«ãããã¼ã¯ç¡è¦ãã¾ãã
- Windows:Â https://go.microsoft.com/fwlink/?linkid=832145
- macOS:Â https://go.microsoft.com/fwlink/?linkid=832143
- Linux:Â https://go.microsoft.com/fwlink/?linkid=832144
pdf ããã®æ½åºãmarkdown ãã¼ãã«ã¸ã®å 工㯠LLM ãå©ç¨ãã¦ãã¾ãã
ãã®å¾ã人æã§èª¿æ´ãã¦ãã¾ãã
äºããäºæ¿ãã ããã
tier 温度æ
tier ã®çºè¡¨ã«ç§»ãåã«ãèè ãã©ããªæ¸©åº¦æã§ããããã® tier ã«ã·ã§ã¼ãã«ãããã¼ãæ¯ãåããã®ããå ±æãã¾ãã
tier S
- 便å©ããã
- 使ããªããªãã¨ä½æ¥ã§ããªã
tier A
- 便å©
- 使ããªããªãã¨ä½æ¥ã§ããªãï¼éè¨ï¼
- ãªãã§ä»ã¾ã§ç¥ãããã£ããã...
tier B
- ããããããªãã¨ãª
- ãªãã¦ãã¾ãããããª
- 使ã£ããã¨ãªããã©ä¾¿å©ãããª
tier C
- ãããªããããããããµã¼ã
- æ©ä¼ãã£ãã使ã£ã¦ã¿ãããª
- å¤å使ããããª
tier D
- 使ãã«ãã...
- ãã¯ãç½®ãæãã¦ã
ãããããã
- æå ã« Linux ããªã
- ãã¼ãã¼ãã«ãã¼ããªã
- æãå±ããªã
- ã©ã®æ¡ä»¶ã§çºåããããããã
ã·ã§ã¼ãã«ããä¸è¦§
tier S
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ããã²ã¼ã·ã§ã³ | ãã¡ã¤ã«ã«ç§»å... | Ctrl+P | âP | Ctrl+P |
ãã¡ã¤ã«ç®¡ç | ä¿å | Ctrl+S | âS | Ctrl+S |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | ç¾å¨ã®é¸æã®ãã¹ã¦ã®åºç¾ãé¸æ | Ctrl+Shift+L | â§âL | Ctrl+Shift+L |
ãªããè¨èªç·¨é | ã·ã³ãã«ã®ååãå¤æ´ | F2 | F2 | F2 |
ãªããè¨èªç·¨é | å®ç¾©ã«ç§»å | F12 | F12 | F12 |
ä¸è¬ | ãã¯ã¤ãã¯ãªã¼ãã³ããã¡ã¤ã«ã«ç§»åâ¦ã | Ctrl+P | âP | Ctrl+P |
åºæ¬çãªç·¨é | è¡ã³ã¡ã³ããåãæ¿ã | Ctrl+/ | â/ | Ctrl+/ |
åºæ¬çãªç·¨é | è¡ãã¤ã³ãã³ã/ã¢ã¦ããã³ã | Ctrl+] / [ | â] / â[ | Ctrl+] / Ctrl+[ |
åºæ¬çãªç·¨é | è¡ãä¸/ä¸ã«æ¿å ¥ | Ctrl+Shift+Enter / Ctrl+Enter | âEnter / â§âEnter | Ctrl+Enter / Ctrl+Shift+Enter |
æ¤ç´¢ã¨ç½®æ | æ¤ç´¢ | Ctrl+F | âF | Ctrl+F |
æ¤ç´¢ã¨ç½®æ | 次ã®æ¤ç´¢ä¸è´ã«é¸æã追å | Ctrl+D | âD | Ctrl+D |
çµ±åã¿ã¼ããã« | é¸æç¯å²ãã³ãã¼ | Ctrl+C | âC | Ctrl+Shift+C |
表示 | ã¨ã¯ã¹ããã¼ã©ã¼ã表示/ãã©ã¼ã«ã¹ãåãæ¿ã | Ctrl+Shift+E | â§âE | Ctrl+Shift+E |
表示 | ãµã¤ããã¼ã®è¡¨ç¤ºãåãæ¿ã | Ctrl+B | âB | Ctrl+B |
表示 | ã½ã¼ã¹ç®¡çã表示 | Ctrl+Shift+G | ââ§G | Ctrl+Shift+G |
表示 | æ¤ç´¢ã表示 | Ctrl+Shift+F | â§âF | Ctrl+Shift+F |
tier A
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ã¨ãã£ã¿ã¼ç®¡ç | ã¨ãã£ã¿ã¼ãéãã | Ctrl+F4, Ctrl+W | âW | Ctrl+W |
ãã¡ã¤ã«ç®¡ç | ãã¹ã¦éãã | Ctrl+K Ctrl+W | âK âW | Ctrl+K Ctrl+W |
ãã¡ã¤ã«ç®¡ç | éãã | Ctrl+F4 | âW | Ctrl+W |
ãªããè¨èªç·¨é | é¸æç¯å²ããã©ã¼ããã | Ctrl+K Ctrl+F | âK âF | Ctrl+K Ctrl+F |
ä¸è¬ | ã³ãã³ããã¬ããã表示 | Ctrl+Shift+P, F1 | â§âP, F1 | Ctrl+Shift+P, F1 |
ä¸è¬ | ã¦ã¼ã¶ã¼è¨å® | Ctrl+, | â, | Ctrl+, |
åºæ¬çãªç·¨é | è¡ãã«ãã (é¸æã空ã®å ´å) | Ctrl+X | âX | Ctrl+X |
åºæ¬çãªç·¨é | è¡ãä¸/ä¸ã«ç§»å | Alt+ â / Alt + â | â¥â / â¥â | Alt+ â / â |
åºæ¬çãªç·¨é | è¡ãåé¤ | Ctrl+Shift+K | â§âK | Ctrl+Shift+K |
çµ±åã¿ã¼ããã« | ã¢ã¯ãã£ããªã¿ã¼ããã«ã«è²¼ãä»ã | Ctrl+V | Ctrl+Shift+V | |
çµ±åã¿ã¼ããã« | æ°ããã¿ã¼ããã«ãä½æ | Ctrl+Shift+` | ââ§` | Ctrl+Shift+` |
表示 | ãºã¼ã ã¤ã³/ã¢ã¦ã | Ctrl+ = / - | â= / â§â- | Ctrl+ = / - |
表示 | æ¡å¼µæ©è½ã表示 | Ctrl+Shift+X | â§âX | Ctrl+Shift+X |
tier B
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ã¨ãã£ã¿ã¼ç®¡ç | ã¨ãã£ã¿ã¼ãåå² | Ctrl+\ | â\\ | Ctrl+\ |
ã¨ãã£ã¿ã¼ç®¡ç | å/次ã®ã¨ãã£ã¿ã¼ã°ã«ã¼ãã«ãã©ã¼ã«ã¹ | Ctrl+K Ctrl+ â/â | âK ââ / âK ââ | Ctrl+K Ctrl + â / Ctrl+K Ctrl + â |
ãããã° | ããã¼ã表示 | Ctrl+K Ctrl+I | âK âI | Ctrl+K Ctrl+I |
ããã²ã¼ã·ã§ã³ | ã·ã³ãã«ã«ç§»å... | Ctrl+Shift+O | â§âO | Ctrl+Shift+O |
ããã²ã¼ã·ã§ã³ | ãã¹ã¦ã®ã·ã³ãã«ã表示 | Ctrl+T | âT | Ctrl+T |
ãã¡ã¤ã«ç®¡ç | éããã¨ãã£ã¿ã¼ãå度éã | Ctrl+Shift+T | â§âT | Ctrl+Shift+T |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | ã«ã¼ã½ã«ãä¸/ä¸ã«æ¿å ¥ | Ctrl+Alt+ â / â | â¥ââ / â | Shift+Alt+ â / â |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | ã«ã¼ã½ã«ãæ¿å ¥ | Alt+Click | ⥠+ click | Alt+Click |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | ç¾å¨ã®è¡ãé¸æ | Ctrl+L | âL | Ctrl+L |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | æå¾ã®ã«ã¼ã½ã«æä½ãå ã«æ»ã | Ctrl+U | âU | Ctrl+U |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | é¸æããåè¡ã®æ«å°¾ã«ã«ã¼ã½ã«ãæ¿å ¥ | Shift+Alt+I | â§â¥I | Shift+Alt+I |
ãªããè¨èªç·¨é | ããã¥ã¡ã³ãããã©ã¼ããã | Shift+Alt+F | â§â¥F | Ctrl+Shift+I |
ä¸è¬ | ãã¼ãã¼ãã·ã§ã¼ãã«ãã | Ctrl+K Ctrl+S | âK âS | Ctrl+K Ctrl+S |
åºæ¬çãªç·¨é | ãããã¯ã³ã¡ã³ããåãæ¿ã | Shift+Alt+A | â§â¥A | Ctrl+Shift+A |
åºæ¬çãªç·¨é | è¡ãã³ãã¼ (é¸æã空ã®å ´å) | Ctrl+C | âC | Ctrl+C |
åºæ¬çãªç·¨é | è¡ãã¹ã¯ãã¼ã«ã¢ãã/ãã¦ã³ | Ctrl+â / â | âPgUp / âPgDn | Ctrl+ â / â |
åºæ¬çãªç·¨é | 対å¿ããæ¬å¼§ã«ã¸ã£ã³ã | Ctrl+Shift+\ | â§â\ | Ctrl+Shift+\ |
åºæ¬çãªç·¨é | é åãæãããã/å±éãã | Ctrl+Shift+[ / Ctrl+Shift+] | â¥â[ / â¥â] | Ctrl+Shift+ [ / ] |
æ¤ç´¢ã¨ç½®æ | æ¤ç´¢ä¸è´ã®ãã¹ã¦ã®åºç¾ãé¸æ | Alt+Enter | â¥Enter | Alt+Enter |
æ¤ç´¢ã¨ç½®æ | 大æåå°æåã®åºå¥/æ£è¦è¡¨ç¾/å®å ¨ä¸è´ã®åãæ¿ã | Alt+C / R / W | ||
表示 | Markdownãã¬ãã¥ã¼ããµã¤ãã§éã | Ctrl+K V | âK V | Ctrl+K V |
表示 | ã¨ãã£ã¿ã¼ã¬ã¤ã¢ã¦ããåãæ¿ãï¼æ°´å¹³/åç´ï¼ | Shift+Alt+0 | â¥â0 | Shift+Alt+0 |
tier C
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ã¨ãã£ã¿ã¼ç®¡ç | ã1ã¤ç®ã2ã¤ç®ã3ã¤ç®ã®ã¨ãã£ã¿ã¼ã°ã«ã¼ãã«ãã©ã¼ã«ã¹ã | Ctrl+ 1 / 2 / 3 | â1 / â2 / â3 | Ctrl+ 1 / 2 / 3 |
ã¨ãã£ã¿ã¼ç®¡ç | ã¨ãã£ã¿ã¼ãå·¦/å³ã«ç§»å | Ctrl+Shift+PgUp / PgDn | âK â§ââ / âK â§ââ | Ctrl+Shift+PgUp / Ctrl+Shift+PgDn |
ããã²ã¼ã·ã§ã³ | ã¿ã移åã§ãã©ã¼ã«ã¹ãåãæ¿ã | Ctrl+M | ââ§M | Ctrl+M |
ããã²ã¼ã·ã§ã³ | è¡ã«ç§»å... | Ctrl+G | âG | Ctrl+G |
ããã²ã¼ã·ã§ã³ | 次ã®ã¨ã©ã¼ã¾ãã¯è¦åã«ç§»å | F8 | F8 | F8 |
ããã²ã¼ã·ã§ã³ | åã®ã¨ã©ã¼ã¾ãã¯è¦åã«ç§»å | Shift+F8 | â§F8 | Shift+F8 |
ããã²ã¼ã·ã§ã³ | åé¡ããã«ã表示 | Ctrl+Shift+M | â§âM | Ctrl+Shift+M |
ãã¡ã¤ã«ç®¡ç | ã¢ã¯ãã£ããªãã¡ã¤ã«ã®ãã¹ãã³ãã¼ | Ctrl+K P | âK P | Ctrl+K P |
ãã¡ã¤ã«ç®¡ç | ãã¡ã¤ã«ãéã... | Ctrl+O | âO | Ctrl+O |
ãã¡ã¤ã«ç®¡ç | 次ãéã | Ctrl+Tab | âTab | Ctrl+Tab |
ãã¡ã¤ã«ç®¡ç | æ°ããã¦ã£ã³ãã¦/ã¤ã³ã¹ã¿ã³ã¹ã§ã¢ã¯ãã£ããªãã¡ã¤ã«ã表示 | Ctrl+K O | âK O | Ctrl+K O |
ãã¡ã¤ã«ç®¡ç | åãéã | Ctrl+Shift+Tab | ââ§Tab | Ctrl+Shift+Tab |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | ç¾å¨ã®åèªã®ãã¹ã¦ã®åºç¾ãé¸æ | Ctrl+F2 | âF2 | Ctrl+F2 |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | åï¼ããã¯ã¹ï¼é¸æ | Ctrl+Shift+Alt + (arrow key) | â§â¥ + drag mouse | Shift+Alt + drag mouse |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | Shift+Alt + (drag mouse) | â§â¥ + drag mouse | Shift+Alt + drag mouse | |
ãªããè¨èªç·¨é | æ«å°¾ã®ç©ºç½ãããªã | Ctrl+K Ctrl+X | âK âX | Ctrl+K Ctrl+X |
åºæ¬çãªç·¨é | ãã¹ã¦ã®ãµãé åãæãããã/å±éãã | Ctrl+K Ctrl+[ / Ctrl+K Ctrl+] | âK â[ / âK â] | Ctrl+K Ctrl+ [ / ] |
åºæ¬çãªç·¨é | ãã¹ã¦ã®é åãæãããã/å±éãã | Ctrl+K Ctrl+0 / Ctrl+K Ctrl+J | âK â0 / âK âJ | Ctrl+K Ctrl+0 / Ctrl+K Ctrl+J |
åºæ¬çãªç·¨é | ãã¡ã¤ã«ã®å é /æ«å°¾ã«ç§»å | Ctrl+Home / Ctrl+End | ââ / ââ | Ctrl+ Home / End |
åºæ¬çãªç·¨é | ãã¼ã¸ãã¹ã¯ãã¼ã«ã¢ãã/ãã¦ã³ | Alt+PgUp / PgDn | âPgUp /âPgDn | Alt+ PgUp / PgDn |
åºæ¬çãªç·¨é | è¡ã³ã¡ã³ããåé¤ | Ctrl+K Ctrl+U | âK âU | Ctrl+K Ctrl+U |
åºæ¬çãªç·¨é | è¡ã³ã¡ã³ãã追å | Ctrl+K Ctrl+C | âK âC | Ctrl+K Ctrl+C |
åºæ¬çãªç·¨é | è¡ã®å é /æ«å°¾ã«ç§»å | Home / End | Home / End | Home / End |
åºæ¬çãªç·¨é | è¡ãä¸ä¸ã«ã³ãã¼ | Shift+Alt + â / â | â§â¥â / â§â¥â | |
æ¤ç´¢ã¨ç½®æ | æå¾ã®é¸æã次ã®æ¤ç´¢ä¸è´ã«ç§»å | Ctrl+K Ctrl+D | âK âD | Ctrl+K Ctrl+D |
æ¤ç´¢ã¨ç½®æ | ç½®æ | Ctrl+H | â¥âF | Ctrl+H |
çµ±åã¿ã¼ããã« | ã¹ã¯ãã¼ã«ã¢ãã/ãã¦ã³ | Ctrl+â / â | ââ / â | Ctrl+Shift+ â / â |
çµ±åã¿ã¼ããã« | ããã/ããã ã«ã¹ã¯ãã¼ã« | Ctrl+Home / End | âHome / End | Shift+ Home / End |
çµ±åã¿ã¼ããã« | ãã¼ã¸ãã¹ã¯ãã¼ã«ã¢ãã/ãã¦ã³ | Shift+PgUp / PgDn | PgUp / PgDn | Shift+ PgUp / PgDn |
表示 | Markdownãã¬ãã¥ã¼ãéã | Ctrl+Shift+V | â§âV | Ctrl+Shift+V |
表示 | ãã¡ã¤ã«å ãç½®æ | Ctrl+Shift+H | â§âH | Ctrl+Shift+H |
表示 | æ¤ç´¢ã®è©³ç´°ãåãæ¿ã | Ctrl+Shift+J | â§âJ | Ctrl+Shift+J |
表示 | åºåããã«ã表示 | Ctrl+Shift+U | â§âU | Ctrl+K Ctrl+H |
tier D
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ã¨ãã£ã¿ã¼ç®¡ç | ã¢ã¯ãã£ããªã¨ãã£ã¿ã¼ã°ã«ã¼ãã移å | Ctrl+K â / â | âK â / âK â | Ctrl+K â / Ctrl+K â |
ãããã° | ã¹ãããã¤ã³/ã¢ã¦ã | F11 / Shift+F11 | F11 / â§F11 | F11 / Shift+F11 |
ãããã° | ã¹ããããªã¼ãã¼ | F10 | F10 | F10 |
ãããã° | ãã¬ã¼ã¯ãã¤ã³ããåãæ¿ã | F9 | F9 | F9 |
ãããã° | éå§/ç¶è¡ | F5 | F5 | F5 |
ãããã° | åæ¢ | Shift+F5 | â§F5 | Shift+F5 |
ãã¡ã¤ã«ç®¡ç | ã¨ã¯ã¹ããã¼ã©ã¼/ãã¡ã¤ã³ãã¼ã§ã¢ã¯ãã£ããªãã¡ã¤ã«ã表示 | Ctrl+K R | âK R | Ctrl+K R |
ãã¡ã¤ã«ç®¡ç | ãã¹ã¦ä¿å | Ctrl+K S | â¥âS | |
ãã¡ã¤ã«ç®¡ç | æ°ãããã¡ã¤ã« | Ctrl+N | âN | Ctrl+N |
ãã¡ã¤ã«ç®¡ç | ååãä»ãã¦ä¿å... | Ctrl+Shift+S | â§âS | Ctrl+Shift+S |
ãªããè¨èªç·¨é | ã¯ã¤ãã¯ãã£ãã¯ã¹ | Ctrl+. | â. | Ctrl+. |
ãªããè¨èªç·¨é | ãã¡ã¤ã«ã®è¨èªãå¤æ´ | Ctrl+K M | âK M | Ctrl+K M |
ä¸è¬ | ã¦ã£ã³ãã¦/ã¤ã³ã¹ã¿ã³ã¹ãéãã | Ctrl+Shift+W | âW | Ctrl+W |
ä¸è¬ | æ°ããã¦ã£ã³ãã¦/ã¤ã³ã¹ã¿ã³ã¹ | Ctrl+Shift+N | â§âN | Ctrl+Shift+N |
åºæ¬çãªç·¨é | ã¯ã¼ãã©ãããåãæ¿ã | Alt+Z | â¥Z | Alt+Z |
表示 | ãããã°ã表示 | Ctrl+Shift+D | â§âD | Ctrl+Shift+D |
表示 | å ¨ç»é¢è¡¨ç¤ºãåãæ¿ã | F11 | ââF | F11 |
ãããããã
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
ã¨ãã£ã¿ã¼ç®¡ç | ãã©ã«ãã¼ãéãã | Ctrl+K F | âK F | Ctrl+K F |
ããã²ã¼ã·ã§ã³ | ã¨ãã£ã¿ã¼ã°ã«ã¼ãã®å±¥æ´ãããã²ã¼ã | Ctrl+Shift+Tab | ââ§Tab | Ctrl+Shift+Tab |
ããã²ã¼ã·ã§ã³ | æ»ã/é²ã | Alt+ â / â | â- / ââ§- | Ctrl+Alt+- / Ctrl+Shift+- |
ãã¡ã¤ã«ç®¡ç | ãã¬ãã¥ã¼ã¢ã¼ãã®ã¨ãã£ã¿ã¼ãéããã¾ã¾ã«ãã | Ctrl+K Enter | âK Enter | Ctrl+K Enter |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | é¸æç¯å²ãæ¡å¤§ | Shift+Alt+â | ââ§ââ | Shift+Alt + â |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | é¸æç¯å²ãç¸®å° | Shift+Alt+â | ââ§â â | Shift+Alt + â |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | åï¼ããã¯ã¹ï¼é¸æ ã¢ãã/ãã¦ã³ | â§â¥ââ / â | ||
ãã«ãã«ã¼ã½ã«ã¨é¸æ | åï¼ããã¯ã¹ï¼é¸æ ãã¼ã¸ã¢ãã/ãã¦ã³ | Ctrl+Shift+Alt +PgUp/PgDn | â§â¥âPgUp / PgDn | |
ãã«ãã«ã¼ã½ã«ã¨é¸æ | åï¼ããã¯ã¹ï¼é¸æ å·¦/å³ | â§â¥ââ / â | ||
ãªããè¨èªç·¨é | ãµã¤ãã§å®ç¾©ãéã | Ctrl+K F12 | âK F12 | Ctrl+K F12 |
ãªããè¨èªç·¨é | ãã©ã¡ã¼ã¿ã¼ãã³ããããªã¬ã¼ | Ctrl+Shift+Space | â§âSpace | Ctrl+Shift+Space |
ãªããè¨èªç·¨é | åç §ã表示 | Shift+F12 | â§F12 | Shift+F12 |
ãªããè¨èªç·¨é | å®ç¾©ãã®ãã | Alt+F12 | â¥F12 | Ctrl+Shift+F10 |
ãªããè¨èªç·¨é | ææ¡ãããªã¬ã¼ | Ctrl+Space, Ctrl+I | âSpace, âI | Ctrl+Space, Ctrl+I |
æ¤ç´¢ã¨ç½®æ | 次/åãæ¤ç´¢ | F3 / Shift+F3 | âG / â§âG | F3 / Shift+F3 |
çµ±åã¿ã¼ããã« | çµ±åã¿ã¼ããã«ã表示 | Ctrl+` | â` | Ctrl+` |
表示 | æ°ããã³ãã³ãããã³ãã/ã¿ã¼ããã«ãéã | Ctrl+Shift+C | ||
表示 | ç¦ ã¢ã¼ãï¼Esc Escã§çµäºï¼ | Ctrl+K Z | âK Z | Ctrl+K Z |
ãããã«
以ä¸ã§ãã
æ¹ãã¦ä¸åä¸å確èªãã¦ã¿ã¾ããããç¥ããªãã·ã§ã¼ãã«ããããã£ã±ããã£ã¦åå¼·ã«ãªãã¾ããã
ãReactã SWR 㧠CRUD 試ãã¦ã¿ãåå¿é²
ã¯ããã«
æ¥å㧠SWR ã使ç¨ããæ©ä¼ãããããã©ã¤ãã¼ã㧠SWR ã®åå¼·ãããåå¿é²ã§ãã
CRUD ã«ææ¦ãã¦ãã¾ãã
ã¾ã 試ããããã§ã¯ãªãã§ããããã®è¨äºã®ããã« useSWRMutation
ã使ç¨ãããããmutate
ã使ç¨ããã»ããããã©ã¼ãã³ã¹çã«ã¯ãããããªæ°ããã¾ãã
ãã£ãããªã®ã§ã ãã¶éã§ã¯ããã¾ããã奮éã®è¨é²ãæ®ãã¾ãã
CRUD
ä»å㯠GET ã§ã¯ useSWR
ã使ç¨ãããã以å¤ã§ã¯ useSWRMutation
ã使ç¨ãã
GET
, POST
, PUT
, DELETE
ããããã§ã«ã¹ã¿ã ããã¯ãä½æãã
ããããéè¦ãªã¨ãããæ°ç¹ããã
åæºå
ããã³ãã§ã®ã¨ã©ã¼ãã³ããªã³ã°ã®ããã«ãã¬ã¹ãã³ã¹ã®å ±éã®åãå®ç¾©
@/types/apiResponse
export type ApiResponse<T> = { data: T; errorMessage: string; };
ã¨ã©ã¼ã¡ãã»ã¼ã¸ãçªã£è¾¼ã¾ããã¨ãããæ¯åéãå ´åã¯ãå
¬å¼ããã¥ã¡ã³ãã®ããã«ããã®ããããã
raise ããã¨ã©ã¼ã«ã¬ã¹ãã³ã¹ãç¡çããä»ä¸ãã¦ã
ã¨ã©ã¼ãã³ããªã³ã° â SWR
GET
import useSWR from "swr"; import type { ApiResponse } from "@/types/apiResponse"; async function fetcher<TData>(url: string): Promise<TData> { const response = await fetch(url); const result: ApiResponse<TData> = await response.json(); if (!response.ok) { throw new Error(result.errorMessage); } return result.data; } interface UseGetReturns<TData> { data: TData | undefined; error: Error | undefined; isLoading: boolean; isValidating: boolean; } type Query = Record<string, string>; export function useGet<TData>( url: string, query?: Query, ): UseGetReturns<TData> { const queryString = new URLSearchParams(query).toString(); const urlWithQueryString = queryString ? `${url}?${queryString}` : url; const { data, error, isLoading, isValidating } = useSWR<TData>( urlWithQueryString, fetcher, ); return { data, error, isLoading, isValidating }; }
- URLã¯ã¨ãªããªãã¸ã§ã¯ãã¨ãã¦åãåã£ã¦å¦ç
- URLã¯ã¨ãªãå¤æ´ãããã¨
useSWR
ã®key
ãå¤æ´ãããã®ã§ããã£ãã·ã¥ãå ±æãããªã
- URLã¯ã¨ãªãå¤æ´ãããã¨
- ã¨ã©ã¼ãã³ããªã³ã°ã®ããã«ã
fetcher
ã®ãªãã§ã¹ãã¼ã¿ã¹ã2xx
ã§ãªãæã«ã¨ã©ã¼ãæããuseSWR
ã®è¿ãå¤ã®error
ã«ããã§æããError
ãå ¥ã
isValidating
㯠POST å¾ãªã©ããã¼ã¿åæ¤è¨¼æã«true
ã«ãªã- åæãã§ããã§ã¾ã ãã£ãã·ã¥ã«ãã¼ã¿ããªãã¨ãã¯
isLoading
ã使ã - ãã¼ã¿ã«æ´æ°ãããæãªã©ããã¼ã¿ãååå¾ããã¨ãã¯
isValidating
ã使ã- ãã£ãã·ã¥ã«ãããã¼ã¿ã表示ããªããèªã¿è¾¼ã¿ä¸ã§ãããã¨ã表ç¾ã§ãã
- åæãã§ããã§ã¾ã ãã£ãã·ã¥ã«ãã¼ã¿ããªãã¨ãã¯
POST
import useSWRMutation from "swr/mutation"; import type { ApiResponse } from "@/types/apiResponse"; interface FetcherArg<TParams> { params: TParams; } async function fetcher<TParams, TData>( url: string, { arg }: { arg: FetcherArg<TParams> }, ): Promise<TData> { const { params } = arg; const response = await fetch(url, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(params), }); const result: ApiResponse<TData> = await response.json(); if (!response.ok) { throw new Error(result.errorMessage); } return result.data; } interface UsePostReturns<TParams, TData> { post: (arg: FetcherArg<TParams>) => Promise<TData>; isMutating: boolean; data: TData | undefined; error: Error | undefined; } export function usePost<TParams, TData>( url: string, ): UsePostReturns<TParams, TData> { const { trigger, isMutating, data, error } = useSWRMutation< TData, Error, string, FetcherArg<TParams> >(url, fetcher); return { post: trigger, isMutating, data, error }; }
post
é¢æ°ã«POSTãã©ã¡ã¼ã¿ã¼ããªãã¸ã§ã¯ãã§æ¸¡ããã¨ã§POSTãªã¯ã¨ã¹ããå®ç¾trigger
ã®å¼æ°ã¯ 1ã¤ã§ããå¿ è¦ããããã- ãªã®ã§ãè¤æ°æ¸¡ãã¨ãã¯ãªãã¸ã§ã¯ããªã©ã§æ¸¡ã
fetcher
é¢æ°ã®ç¬¬äºå¼æ°ã®ãªãã¸ã§ã¯ãããarg
ãã¼ã§åå¾ã§ãã
ex.)
const ENDPOINT = '/api/tasks' const { tasks } = useGet(ENDPOINT) const { post } = usePost(ENDPOINT) const newTask = { title: 'new Task!!' } post({ params: newTask }) // useGet ãåæ¤è¨¼ãããtasks ãæ´æ°ããã
usePost()
ã® url ãuseGet()
ã¨å ±éã®ãã®ã«ãããã¨ã§ãpost()
å¾ã«useGet()
ã®åæ¤è¨¼ãèµ°ãpost()
ã§ä½æãããã¼ã¿ãuseGet()
ã§åæ¤è¨¼ãå ¨ãã¼ã¿ã¾ã¨ãã¦æã£ã¦ãã- å·®åã ãæã£ã¦ããããã§ã¯ãªããããªã®ã§ã
useGet()
ãéãã¨ãã¯post()
å¾ã®ãã¼ã¿åæ ãéããªã£ã¦ãã¾ã- ããã«ããã©ã¼ãã³ã¹ä¸åé¡ãããæã¯ã
useSWR()
ã®è¿ãå¤ã®mutate()
ã使ç¨ãã¦æåã§æ´æ°ããå¿ è¦ããããã
- ããã«ããã©ã¼ãã³ã¹ä¸åé¡ãããæã¯ã
PUT
import useSWRMutation from "swr/mutation"; import type { ApiResponse } from "@/types/apiResponse"; interface FetcherArg<TParams> { id: number; params: TParams; } async function fetcher<TParams, TData>( url: string, { arg }: { arg: FetcherArg<TParams> }, ): Promise<TData> { const { id, params } = arg; const urlWithId = `${url}/${id}`; const response = await fetch(urlWithId, { method: "PUT", headers: { "Content-Type": "application/json", }, body: JSON.stringify(params), }); const result: ApiResponse<TData> = await response.json(); if (!response.ok) { throw new Error(result.errorMessage); } return result.data; } interface UsePutReturns<TParams, TData> { put: (arg: FetcherArg<TParams>) => Promise<TData>; isMutating: boolean; data: TData | undefined; error: Error | undefined; } export function usePut<TParams, TData>( url: string, ): UsePutReturns<TParams, TData> { const { trigger, isMutating, data, error } = useSWRMutation< TData, Error, string, FetcherArg<TParams> >(url, fetcher); return { put: trigger, isMutating, data, error }; }
post
é¢æ°åæ§ãput
é¢æ°ã«PUTãã©ã¡ã¼ã¿ã¼ããªãã¸ã§ã¯ãã§æ¸¡ããã¨ã§PUTãªã¯ã¨ã¹ããå®ç¾put()
ã§ä½æãããã¼ã¿ãuseGet()
ã§åæ¤è¨¼ãå ¨ãã¼ã¿ã¾ã¨ãã¦æã£ã¦ããusePut()
ã® url ãuseGet()
ã¨å ±éã®ãã®ã«ãããã¨ã§ãput()
å¾ã«useGet()
ã®åæ¤è¨¼ãèµ°ã- ãã® url ã
useGet()
ã¨åããã®ã«ããããã«ãid
ã¯put()
çµç±ã§æ¸¡ããfetcher
é¢æ°ã®å é¨ã§å¦çããå¿ è¦ããã
ex.)
const ENDPOINT = '/api/tasks/' const updateTaskId = 1 const updateTaskParam = { title: 'update Task!!' } const { tasks } = useGet(ENDPOINT) const { put_1 } = usePut(`${ENDPOINT}/${updateTaskId}`) const { put_2 } = usePut(ENDPOINT) put_1({ params: updateTaskParam }) // useGet ãåæ¤è¨¼ããããtasks ãæ´æ°ãããªã put_2({ id: updateTaskId, params: updateTaskParam }) // useGet ãåæ¤è¨¼ãããtasks ãæ´æ°ããã
DELETE
import useSWRMutation from "swr/mutation"; import type { ApiResponse } from "@/types/apiResponse"; interface FetcherArg { id: number; } async function fetcher<TData>( url: string, { arg }: { arg: FetcherArg }, ): Promise<TData> { const { id } = arg; const urlWithId = `${url}/${id}`; const response = await fetch(urlWithId, { method: "DELETE", headers: { "Content-Type": "application/json", }, }); const result: ApiResponse<TData> = await response.json(); if (!response.ok) { throw new Error(result.errorMessage); } return result.data; } interface UseDeleteReturns<TData> { delete: (arg: FetcherArg) => Promise<TData>; isMutating: boolean; data: TData | undefined; error: Error | undefined; } export function useDelete<TData>(url: string): UseDeleteReturns<TData> { const { trigger, isMutating, data, error } = useSWRMutation< TData, Error, string, FetcherArg >(url, fetcher); return { delete: trigger, isMutating, data, error }; }
usePut()
åæ§ãuseDelete
ã® url ãuseGet()
ã¨å ±éã®ãã®ã«ãããã¨ã§ãdelete()
å¾ã«useGet()
ã®åæ¤è¨¼ãèµ°ã- ãã® url ã
useGet()
ã¨åããã®ã«ããããã«ãid
ã¯delete()
çµç±ã§æ¸¡ããfetcher
é¢æ°ã®å é¨ã§å¦çããå¿ è¦ããã
ex.)
const ENDPOINT = '/api/tasks/' const deleteTaskId = 1 const { tasks } = useGet(ENDPOINT) const { delete_1 } = useDelete(`${ENDPOINT}/${deleteTaskId}`) const { delete_2 } = useDelete(ENDPOINT) delete_1({ params: deleteTaskParam }) // useGet ãåæ¤è¨¼ããããtasks ãæ´æ°ãããªã delete_2({ id: deleteTaskId, params: deleteTaskParam }) // useGet ãåæ¤è¨¼ãããtasks ãæ´æ°ããã
ãããã«
ã ãã¶æ¦éª¨ã«ã«ã¹ã¿ã ããã¯ãä½æãã¾ããã
ãã¤ã useSWRMutation
ããã使ãããããªã£ãæã«ã§ãå½¹ã«ç«ã¤ãã¨ãç¥ãã¾ãã
mutate
ãå©ç¨ãã CRUD ãã¾ã 試ãã¦ãªãã®ã§ã次ã¯ããããã£ã¦ãããããªã¨æã£ã¦ã¾ãã
ä»åã®ã³ã¼ãã試ãããªãã¸ããªãããã®ã§ãå¿
è¦ã«åããã¦ã確èªãã ããã
hizahizi-hizumi/react-container-presentational
ãVSCodeãOS ãã¨ã®åæã·ã§ã¼ãã«ãããã¼ä¸è¦§
ã¯ããã«
æè¿ãWindows PC ãè³¼å ¥ãã¾ãã¦ãæ¥åã§ã¯ mac, ãã©ã¤ãã¼ãã§ã¯ Windows ã§éçºããã¦ãã¾ãã ã©ã¡ãã VSCode ã使ç¨ãã¦ããã®ã§ãããã·ã§ã¼ãã«ããã«å¾®å¦ã«å·®ããã£ãããã¦æ¸æããã¨ãã¡ãã»ãããã¾ããã ããã§ãããã辺ã®éãã¾ãã£ã¨ææ¡ãã¦ãã¾ããã¨ãããã¨ã§ OS ãã¨ã®åæã·ã§ã¼ãã«ãããã¼ã表ã«ã¾ã¨ããã®ã§å ±æãããã¾ãã
注æ
åæã·ã§ã¼ãã«ãããã¼ã¯2024å¹´6ææç¹ã®ä¸è¨ãåç
§ãã¦ãã¾ãã
ãªãããã®è¨äºã§ã¯ä¸è¨pdf以å¤ã®åæã·ã§ã¼ãã«ãããã¼ã¯ç¡è¦ãã¾ãã
- Windows:Â https://go.microsoft.com/fwlink/?linkid=832145
- macOS:Â https://go.microsoft.com/fwlink/?linkid=832143
- Linux:Â https://go.microsoft.com/fwlink/?linkid=832144
ã¾ããpdf ããã®æ½åºãmarkdown ãã¼ãã«ã¸ã®å 工㯠LLM ãå©ç¨ãã¦ãã¾ãã
ãã®ããã§äººæã§èª¿æ´ãã¦ãã¾ãã
äºããäºæ¿ãã ããã
表
Category | Description | Windows | Mac | Linux |
---|---|---|---|---|
General | Show Command Palette | Ctrl+Shift+P, F1 | â§âP, F1 | Ctrl+Shift+P, F1 |
General | Quick Open, Go to File⦠| Ctrl+P | âP | Ctrl+P |
General | New window/instance | Ctrl+Shift+N | â§âN | Ctrl+Shift+N |
General | Close window/instance | Ctrl+Shift+W | âW | Ctrl+W |
General | User Settings | Ctrl+, | â, | Ctrl+, |
General | Keyboard Shortcuts | Ctrl+K Ctrl+S | âK âS | Ctrl+K Ctrl+S |
Basic editing | Cut line (empty selection) | Ctrl+X | âX | Ctrl+X |
Basic editing | Copy line (empty selection) | Ctrl+C | âC | Ctrl+C |
Basic editing | Move line up/down | Alt+ â / â | â¥â / â¥â | Alt+ â / â |
Basic editing | Copy line up/down | Shift+Alt + â / â | â§â¥â / â§â¥â | |
Basic editing | Delete line | Ctrl+Shift+K | â§âK | Ctrl+Shift+K |
Basic editing | Insert line below / above | Ctrl+Enter / Ctrl+Shift+Enter | âEnter / â§âEnter | Ctrl+Enter / Ctrl+Shift+Enter |
Basic editing | Jump to matching bracket | Ctrl+Shift+\ | â§â\ | Ctrl+Shift+\ |
Basic editing | Indent/outdent line | Ctrl+] / [ | â] / â[ | Ctrl+] / Ctrl+[ |
Basic editing | Go to beginning/end of line | Home / End | Home / End | Home / End |
Basic editing | Go to beginning/end of file | Ctrl+Home / Ctrl+End | ââ / ââ | Ctrl+ Home / End |
Basic editing | Scroll line up/down | Ctrl+â / â | âPgUp / âPgDn | Ctrl+ â / â |
Basic editing | Scroll page up/down | Alt+PgUp / PgDn | âPgUp /âPgDn | Alt+ PgUp / PgDn |
Basic editing | Fold/unfold region | Ctrl+Shift+[ / ] | â¥â[ / â¥â] | Ctrl+Shift+ [ / ] |
Basic editing | Fold/unfold all subregions | Ctrl+K Ctrl+[ / ] | âK â[ / âK â] | Ctrl+K Ctrl+ [ / ] |
Basic editing | Fold/unfold all regions | Ctrl+K Ctrl+0 / J | âK â0 / âK âJ | Ctrl+K Ctrl+0 / Ctrl+K Ctrl+J |
Basic editing | Add line comment | Ctrl+K Ctrl+C | âK âC | Ctrl+K Ctrl+C |
Basic editing | Remove line comment | Ctrl+K Ctrl+U | âK âU | Ctrl+K Ctrl+U |
Basic editing | Toggle line comment | Ctrl+/ | â/ | Ctrl+/ |
Basic editing | Toggle block comment | Shift+Alt+A | â§â¥A | Ctrl+Shift+A |
Basic editing | Toggle word wrap | Alt+Z | â¥Z | Alt+Z |
Navigation | Show all Symbols | Ctrl+T | âT | Ctrl+T |
Navigation | Go to Line... | Ctrl+G | âG | Ctrl+G |
Navigation | Go to File... | Ctrl+P | âP | Ctrl+P |
Navigation | Go to Symbol... | Ctrl+Shift+O | â§âO | Ctrl+Shift+O |
Navigation | Show Problems panel | Ctrl+Shift+M | â§âM | Ctrl+Shift+M |
Navigation | Navigate editor group history | Ctrl+Shift+Tab | ââ§Tab | Ctrl+Shift+Tab |
Navigation | Go back / forward | Alt+ â / â | â- / ââ§- | Ctrl+Alt+- / Ctrl+Shift+- |
Navigation | Toggle Tab moves focus | Ctrl+M | ââ§M | Ctrl+M |
Navigation | Go to next/previous error or warning | F8 / Shift+F8 | F8 / â§F8 | F8 / Shift+F8 |
Search and replace | Find | Ctrl+F | âF | Ctrl+F |
Search and replace | Replace | Ctrl+H | â¥âF | Ctrl+H |
Search and replace | Find next/previous | F3 / Shift+F3 | âG / â§âG | F3 / Shift+F3 |
Search and replace | Select all occurrences of Find match | Alt+Enter | â¥Enter | Alt+Enter |
Search and replace | Add selection to next Find match | Ctrl+D | âD | Ctrl+D |
Search and replace | Move last selection to next Find match | Ctrl+K Ctrl+D | âK âD | Ctrl+K Ctrl+D |
Search and replace | Toggle case-sensitive / regex / whole word | Alt+C / R / W | ||
Multi-cursor and selection | Insert cursor | Alt+Click | ⥠+ click | Alt+Click |
Multi-cursor and selection | Insert cursor above / below | Ctrl+Alt+ â / â | â¥ââ / â¥ââ | Shift+Alt+ â / â |
Multi-cursor and selection | Undo last cursor operation | Ctrl+U | âU | Ctrl+U |
Multi-cursor and selection | Insert cursor at end of each line selected | Shift+Alt+I | â§â¥I | Shift+Alt+I |
Multi-cursor and selection | Select current line | Ctrl+L | âL | Ctrl+L |
Multi-cursor and selection | Select all occurrences of current selection | Ctrl+Shift+L | â§âL | Ctrl+Shift+L |
Multi-cursor and selection | Select all occurrences of current word | Ctrl+F2 | âF2 | Ctrl+F2 |
Multi-cursor and selection | Expand / shrink selection | Shift+Alt+â / Shift+Alt+â | ââ§ââ / â | Shift+Alt+â / Shift+Alt+â |
Multi-cursor and selection | Column (box) selection | Shift+Alt + (drag mouse) | â§â¥ + drag mouse | Shift+Alt + drag mouse |
Multi-cursor and selection | Column (box) selection | Ctrl+Shift+Alt + (arrow key) | â§â¥ + drag mouse | Shift+Alt + drag mouse |
Multi-cursor and selection | Column (box) selection page up/down | Ctrl+Shift+Alt +PgUp/PgDn | â§â¥âPgUp / â§â¥âPgDn | |
Multi-cursor and selection | Column (box) selection up/down | â§â¥ââ / â | ||
Multi-cursor and selection | Column (box) selection left/right | â§â¥ââ / â | ||
Rich languages editing | Trigger suggestion | Ctrl+Space, Ctrl+I | âSpace, âI | Ctrl+Space, Ctrl+I |
Rich languages editing | Trigger parameter hints | Ctrl+Shift+Space | â§âSpace | Ctrl+Shift+Space |
Rich languages editing | Format document | Shift+Alt+F | â§â¥F | Ctrl+Shift+I |
Rich languages editing | Format selection | Ctrl+K Ctrl+F | âK âF | Ctrl+K Ctrl+F |
Rich languages editing | Go to Definition | F12 | F12 | F12 |
Rich languages editing | Peek Definition | Alt+F12 | â¥F12 | Ctrl+Shift+F10 |
Rich languages editing | Open Definition to the side | Ctrl+K F12 | âK F12 | Ctrl+K F12 |
Rich languages editing | Quick Fix | Ctrl+. | â. | Ctrl+. |
Rich languages editing | Show References | Shift+F12 | â§F12 | Shift+F12 |
Rich languages editing | Rename Symbol | F2 | F2 | F2 |
Rich languages editing | Trim trailing whitespace | Ctrl+K Ctrl+X | âK âX | Ctrl+K Ctrl+X |
Rich languages editing | Change file language | Ctrl+K M | âK M | Ctrl+K M |
Editor management | Close editor | Ctrl+F4, Ctrl+W | âW | Ctrl+W |
Editor management | Close folder | Ctrl+K F | âK F | Ctrl+K F |
Editor management | Split editor | Ctrl+\ | â\ | Ctrl+\ |
Editor management | Focus into 1st, 2nd or 3rd editor group | Ctrl+ 1 / 2 / 3 | â1 / â2 / â3 | Ctrl+ 1 / 2 / 3 |
Editor management | Focus into previous/next editor group | Ctrl+K Ctrl+ â/â | âK ââ / âK ââ | Ctrl+K Ctrl + â / Ctrl+K Ctrl + â |
Editor management | Move editor left/right | Ctrl+Shift+PgUp / PgDn | âK â§ââ / âK â§ââ | Ctrl+Shift+PgUp / Ctrl+Shift+PgDn |
Editor management | Move active editor group | Ctrl+K â / â | âK â / âK â | Ctrl+K â / Ctrl+K â |
File management | New File | Ctrl+N | âN | Ctrl+N |
File management | Open File... | Ctrl+O | âO | Ctrl+O |
File management | Save | Ctrl+S | âS | Ctrl+S |
File management | Save As... | Ctrl+Shift+S | â§âS | Ctrl+Shift+S |
File management | Save All | Ctrl+K S | â¥âS | |
File management | Close | Ctrl+F4 | âW | Ctrl+W |
File management | Close All | Ctrl+K Ctrl+W | âK âW | Ctrl+K Ctrl+W |
File management | Reopen closed editor | Ctrl+Shift+T | â§âT | Ctrl+Shift+T |
File management | Keep preview mode editor open | Ctrl+K Enter | âK Enter | Ctrl+K Enter |
File management | Copy path of active file | Ctrl+K P | âK P | Ctrl+K P |
File management | Reveal active file in Explorer | Ctrl+K R | Ctrl+K R | |
File management | Reveal active file in Finder | âK R | ||
File management | Show active file in new window/instance | Ctrl+K O | âK O | Ctrl+K O |
File management | Open next / previous | Ctrl+Tab / Ctrl+Shift+Tab | âTab / ââ§Tab | Ctrl+Tab / Ctrl+Shift+Tab |
Display | Toggle full screen | F11 | ââF | F11 |
Display | Toggle editor layout (horizontal/vertical) | Shift+Alt+0 | â¥â0 | Shift+Alt+0 |
Display | Zoom in/out | Ctrl+ = / - | â= / â§â- | Ctrl+ = / - |
Display | Toggle Sidebar visibility | Ctrl+B | âB | Ctrl+B |
Display | Show Explorer / Toggle focus | Ctrl+Shift+E | â§âE | Ctrl+Shift+E |
Display | Show Search | Ctrl+Shift+F | â§âF | Ctrl+Shift+F |
Display | Show Source Control | Ctrl+Shift+G | ââ§G | Ctrl+Shift+G |
Display | Show Debug | Ctrl+Shift+D | â§âD | Ctrl+Shift+D |
Display | Show Extensions | Ctrl+Shift+X | â§âX | Ctrl+Shift+X |
Display | Replace in files | Ctrl+Shift+H | â§âH | Ctrl+Shift+H |
Display | Toggle Search details | Ctrl+Shift+J | â§âJ | Ctrl+Shift+J |
Display | Show Output panel | Ctrl+Shift+U | â§âU | Ctrl+K Ctrl+H |
Display | Open Markdown preview | Ctrl+Shift+V | â§âV | Ctrl+Shift+V |
Display | Open Markdown preview to the side | Ctrl+K V | âK V | Ctrl+K V |
Display | Zen Mode (Esc Esc to exit) | Ctrl+K Z | âK Z | Ctrl+K Z |
Display | Open new command prompt/terminal | Ctrl+Shift+C | ||
Debug | Toggle breakpoint | F9 | F9 | F9 |
Debug | Start/Continue | F5 | F5 | F5 |
Debug | Stop | Shift+F5 | â§F5 | Shift+F5 |
Debug | Step into/out | F11 / Shift+F11 | F11 / â§F11 | F11 / Shift+F11 |
Debug | Step over | F10 | F10 | F10 |
Debug | Show hover | Ctrl+K Ctrl+I | âK âI | Ctrl+K Ctrl+I |
Integrated terminal | Show integrated terminal | Ctrl+` | â` | Ctrl+` |
Integrated terminal | Create new terminal | Ctrl+Shift+` | ââ§` | Ctrl+Shift+` |
Integrated terminal | Copy selection | Ctrl+C | âC | Ctrl+Shift+C |
Integrated terminal | Paste into active terminal | Ctrl+V | Ctrl+Shift+V | |
Integrated terminal | Scroll up/down | Ctrl+â / â | ââ / â | Ctrl+Shift+ â / â |
Integrated terminal | Scroll page up/down | Shift+PgUp / PgDn | PgUp / PgDn | Shift+ PgUp / PgDn |
Integrated terminal | Scroll to top/bottom | Ctrl+Home / End | âHome / End | Shift+ Home / End |
ãããã«
æã£ãããå·®ããªãã¦ã³ã£ãããã¦ã¾ãã mac ã§ã®è¡é ãè¡æ«ã¸ã®ç§»åã Windows ã§ã¯è¦å½ãããªãã¦ãã®è¡¨ãä½ããã¨æã£ãã®ã§ãããã㯠VSCode ã§ã¯ãªã OS ã®æåãªã®ã...
æ°ãåãã°æ¥æ¬èªçã«ãã¦å度ã¢ãããããã¨æãã¾ãã