æå±å¤æ´ã®ãç¥ãã
2024å¹´6æ1æ¥ããä¸è¨ã®éãæå±ãå¤æ´ããã¾ãã
æ§: SB Intuitionsæ ªå¼ä¼ç¤¾ï¼ã½ãããã³ã¯æ ªå¼ä¼ç¤¾ããã®100%åºåï¼
æ°: æ ªå¼ä¼ç¤¾ã¹ãã¼ããã³ã¯
ååã®æå±å¤æ´ããããã2ã¶æããçµã£ã¦ãããé常ã«æ°ã¾ããç¶æ³ã§ãã解éã§ã¯ããã¾ãããè²ã ããã¾ãããåè·å¨è·æéä¸ãã³ã¼ããããã³ã¼ãã¯1è¡ãæ¸ãã¦ãã¾ããããå¯ããã ããã
æ°ããç°å¢ã§ããã¨ããã®ã¹ãã¼ããã³ã¯ã§ã¯ä»åº¦ãããããã¯ãï¼B/43ãªã©ï¼ã«æ ¹ãããã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã¨ãã¦æ´»åããäºå®ã§ãã
å¥ãããä½ã®å æããæ°ããä¼ç¤¾ãç¥ç§°ãSBã§ããé¢ç½ãã§ããã
ãããããé¡ããã¾ãï¼
æå±å¤æ´ã®ãç¥ãã
2024å¹´4æ1æ¥ãã id:moznion ã®æå±ã以ä¸ã®éãå¤æ´ã¨ãªãã¾ãã
æ§: æ ªå¼ä¼ç¤¾ã½ã©ã³ã
æ°: ã½ãããã³ã¯æ ªå¼ä¼ç¤¾ (SB Intuitionsæ ªå¼ä¼ç¤¾åºå)
以ä¸ã¨ãªãã¾ãã
å¼ãç¶ããããããé¡ãç³ãä¸ãã¾ãã
ã½ã©ã³ã ã«ã¯å¤§ä½6å¹´åããããã¦ãå®éæ°ããããªãã»ã©ããããã®ãã®ãä½ããããããã®ãã®ãç´ããããããã®ã¨ããã¿ããã¾ããããªããã¤æå¾ã®2å¹´ã¯USã®ã·ã¢ãã«é§å¨ã§åãã¦ããã¨ãããã¨ãããé常ã«è²´éãªä½é¨ã¨ãªãã¾ããããã¨å¨ç±³ä¸ã«CTO Technical Advisorã¨ããè¿«åã®ããã¿ã¤ãã«ãã¤ãããããã¾ããã
åãã½ã©ã³ã ã«å
¥ã£ãæ¥ã¯ã¡ããã©KDDIãã½ã©ã³ã ãè²·åãã2017å¹´9æ1æ¥ã§ãããã¦å
æ¥2024å¹´3æ26æ¥ã«ã½ã©ã³ã ãIPOãæããã¡ããã©ãã®ã¿ã¤ãã³ã°ã§éè·ããã¨ãããã¨ã¨ãªããã¤ã¾ãä¸å ´ã¨å
±ã«å»ãç·ã¨ç¸æãã¾ãããããã¯ã½ã©ã³ã ã®ç¬¬äºç« ãä¸éãè¦ãã¨è¨ã£ã¦ãéè¨ã§ã¯ãªããè¯ãã£ãã§ããã
ã½ã©ã³ã ã«å
¥ã£ãæã¯ãã¬ã³ã æè¡ã¯ãã¡ãããããããã³ã³ãã¥ã¼ã¿ãããã¯ã¼ã¯ãæ£å³ããããã£ã¦ãªãç¶æ
ã ã£ãã®ã§ãå
¥ç¤¾å½æã¯ãæ®éã®Webã¢ããªã±ã¼ã·ã§ã³ãã¿ãããªä»äºããã¦ããã®ã«ãã¾ãããããããã¬ã³ã ã³ã¢ãããã¯ã¼ã¯ã«é¢ããä»äºãã¬ãããªãããã¨ã«ãªãã¨ã¯æãã¾ããã§ããããããããã¾ã ã«ãã¬ã³ã ãã¨ããããã3GPPã¯ãã¾ãã¡ããããããããã¤ã«å¤§å¤ãªä¸çã§ããã
ã½ã©ã³ã ã®çæ§ãé·ããã®éãããã¨ããããã¾ãããããããã®çºå±ãç¥ã£ã¦ããã¾ãã
SB Intuitionsã§ã¯ãããããå½ç£LLMãã®åºç¤ã¢ãã«ãä½ã£ããããããå¿ç¨ããã¢ããªã±ã¼ã·ã§ã³ãä½æãããããã®ä»ã«ãå¿
è¦ãªãã¨ã¯å
¨é¨ããã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã¨ãã¦ãã£ã¦ããäºå®ã§ããã¤ã¾ããã¬ã³ã ã¨ã¯ç¡é¢ä¿ãªã®ã§ç´æ¥ç«¶åã§ã¯ããã¾ããããå®å¿ãã ããã
ãããã©ãã©ãWebã¢ããªã®ãã£ãªã¢ããé¢ãã¦ãã£ã¦ããæãããã趣ãããã¾ãããé å¼µãã¾ããå¿æ´ãããããé¡ããã¾ãã
GitHub Actionsã§è¤æ°ã®workflowãé£æºããæã«ããã£ããããã
GitHub Actionsã§æãworkflowãçµãã£ããå¥ã®workflowãåãããã¿ãããªãã¨ããããããªã£ãæã«ã¡ã¾ã¡ã¾ããã£ãã®ã§ã¡ã¢ã¨ãã¦æ®ãã¾ãã
workflow_run
ã§å¼ã³åºãããworkflowã§åworkflowã®ã¹ãã¼ã¿ã¹ãåã
ããã¯ããã£ããã¨ã¨ããããããããã°è¯ããã¨ãã話ãªãã§ããã
on: workflow_run: workflows: - check types: - completed jobs: ...
ã¿ããã«æ¸ãã¦ãã㨠check
workflowãå®äºããæã«ãã®workflowãå¼ã³åºãããã®ã§ããããã®æ check
ã®æå¦ã¯é¢ä¿ç¡ãå¼ã³åºããã¾ãã
å¾ã£ã¦ãcheck
ãå®äºããæã«ã®ã¿å®è¡ãããæã«ã¯ä»¥ä¸ã®ããã«ã¹ãã¼ã¿ã¹ãã§ãã¯ãå
¥ããå¿
è¦ãããã¾ãã
on: workflow_run: workflows: - check types: - completed jobs: do_something: if: ${{ github.event.workflow_run.conclusion == 'success' }} steps: ...
ref: Events that trigger workflows - GitHub Docs
ããã¯ããã¨ã㦠completed
typeã ããããªã㦠succeeded
ã failed
ã¿ãããªtypeã workflow_run
ã§æå®ã§ããã¨å¬ãããããªæ°ã¯ããã®ã§ãã......
workflow_run
ã¯default branchã«åå¨ãã¦ããªãã¨åããªã
Events that trigger workflows - GitHub Docs
Note: This event will only trigger a workflow run if the workflow file is on the default branch.
å
¬å¼ããã¥ã¡ã³ãã«ãã£ã¡ãç®ç«ã¤ããã«æ¸ãã¦ããï¼ï¼
workflowãæ´åãããã©ã³ãã§ä½æ¥ãã¦ã¦ããããããªãåããªããªããã¨æã£ã¦ããããããã話ã ã£ãã¨ãããªããdefault branchã« workflow_run
ã使ãworkflowãpushãã¦ãããªããã°é§ç®ã
workflow_run
ã§å¼ã³åºãããworkflowä¸ã§ã¯ github.ref_type
ã¯å¸¸ã« branch
ã«ãªã
1ã¤åã®è©±é¡ã«ãéããã¨ããã§ããã
Events that trigger workflows - GitHub Docs
ãã®ããã¥ã¡ã³ãã«ãããããã« `GITHUB_REF` ã¯default branchã¨ãªã£ã¦ãããã github.ref_type
ã¯å¸¸ã« branch
ã¨ãªãã¾ãã
on: workflow_run: workflows: - check types: - completed jobs: do_something: if: ${{ github.ref_type == 'tag' }} steps: ...
ä¸ã®ããã«æ¸ãã¦ããã¨ãä»®ã«å
ã®workflow (ãã®å ´å㯠check
) ãtagã®pushã«ãã£ã¦ããªã¬ã¼ããã¦ããã¨ãã¦ã github.ref_type
㯠branch
ã¨ãªããã絶対㫠do_something
ã¯å®è¡ããã¾ãããããã¯ã¡ãã£ã¨ããã£ã......
workflow_call
ã§å¼ã³åºãããworkflowããã¯repositoryã«ç»é²ããã¦ããsecretsãç´æ¥åç
§ã§ããªã
on: workflow_call: jobs: do_something: runs-on: "ubuntu-latest" steps: - env: PASSWORD: ${{ secrets.PASSWORD }} run: | echo ${{ env.PASSWORD }} ...
ä»åº¦ã¯ workflow_run
ã§ã¯ãªã workflow_call
ã®è©±é¡ããªããªã workflow_run
ã§ã¯ãtagãpushãããæã ããªããããããå®ç¾ã§ããªãã£ããã......
workflow_call
ã«ãããä»ã®workflowããæ示çã«å¼ã³åºãããworkflowã¯repositoryã«ç»é²ããã¦ããsecretsãç´æ¥åç
§ãããã¨ãã§ããªããããä¸è¨ã®echoã¯ä½ã表示ãã¾ããã
on: workflow_call: secrets: PASSWORD: required: true jobs: do_something: runs-on: "ubuntu-latest" steps: - env: PASSWORD: ${{ secrets.PASSWORD }} run: | echo ${{ env.PASSWORD }} ...
ä¸è¨ã®ããã« workflow_call.secrets
ã§åãåãå¤æ°ãæ示ãã¦ããã¦ã
call-workflow: uses: ./.github/workflows/next.yml secrets: PASSWORD: ${{ secrets.PASSWORD }}
ã®ãããªæãã§å¼ã³å ã®workflowããé©åã«æ¸¡ãã¦ãããå¿ è¦ãããã¾ãã
ref: Reusing workflows - GitHub Enterprise Cloud Docs
ã¨ããããã§ãããããç·åãããtagãpushããããªããã¤å
ã®workflow (ãã®å ´å㯠check
job) ãæåããæã«repoã«ç»é²ãããsecretsã渡ããªããå¥ã®workflowãå¼ã³åºããã¨ããå®ç¾©ãæ¸ãããæã¯å
ã®workflowã§ã¯
on: push: jobs: check: ... call-workflow: needs: [check] if: ${{ github.ref_type == 'tag' }} uses: ./.github/workflows/next.yml secrets: PASSWORD: ${{ secrets.PASSWORD }}
ã¨æ¸ãã¦ããã¤ã¤ãå¼ã°ããworkflowã§ã¯
on: workflow_call: secrets: PASSWORD: required: true jobs: do_something: ...
ã¨ãããµãã«æ¸ãã¦ããã°ç®çãæºè¶³ã§ãããã¨ããããã¾ããããããããããã£ã......
Linuxã§docker loginããéãpassã使ã£ã¦credentialsã管çãããã¨ã§æ å ±ããã¡ã¤ã«ã«æ®ããªãããã«ãã
docker login
ããã¨ããã©ã«ãã®ç¶æ
ã§ã¯ $HOME/.docker/config.json
ã® .auths
ã«credentialsãä¿åããã¾ããcredentialsãå¹³æã§ä¿åãããã¨ããã®ããã³ãªã®ã§ããããã¹ã¯ã¼ãããã¼ã¸ã£ãä»ãããã«å¤æ´ãã¾ãããã
ãã¹ã¯ã¼ãããã¼ã¸ã£ã«ã¯æã£åãæ©ãã¤ã³ã¹ãã¼ã«ã§ããpassãå©ç¨ãã¾ããã¤ã³ã¹ãã¼ã«æ¹æ³ã¯ãªãã£ã·ã£ã«ãã¼ã¸ã«ããéãã§ãããUbuntuã ã¨
$ sudo apt install pass
ã§å®äºãã¾ãã
ããã¦ä»¥ä¸ã®ããã«passã®åæåãè¡ãªãã¾ãã
$ gpg --generate-key # ^ åºåããã40æ¡ã®public keyã®IDãæ§ãã¦ãã $ pass init $PUBLIC_KEY_ID
ããã§passã®æºåã¯å®äºã§ãã
ãã®passãdockerã®credentials storeã¨ãã¦å©ç¨ãããã¨ã§ãcredentialsãå¹³æã§ä¿åãã代ããã«passã§ç®¡çã§ããããã«ãªãã¾ãããã®ããã«docker-credential-passãå©ç¨ããå¿ è¦ãããã®ã§Releasesãã¼ã¸ããåããã¤ããªãåã£ã¦ãã¾ãããããã®ã¸ããpackage managerã§ã¤ã³ã¹ãã¼ã«ã§ããããã«ãªã£ã¦ãã¨å¬ããã§ããã
ããã¦ãã®åã£ã¦ãã docker-credential-pass
ã®ãã¤ããªããã¹ãéã£ã¦ãå ´æã«ç½®ãã
{ "auths": { ... }, "credsStore": "pass" }
ä¸è¨ã®ããã«ã$HOME/.docker/config.json
ä¸ã« "credsStore": "pass"
ã¨ããããã« credsStore
ãæå®ããã¨ãdockerã®credentialsãpassã§ç®¡çãããããã«ãªãã¾ãã
注æã¨ãã¦ã¯ããã®dockerã® config.json
ã¯ã¦ã¼ã¶ã¼ã«ç´ä»ãè¨å®ãªã®ã§ãrootless dockerãå©ç¨ãã¦ããªãéãã¯rootã®è¨å® (ã¤ã¾ã /root/.docker/config.json
) ã«æ¸ãã¦ããå¿
è¦ãããã¾ã (éã«rootless dockerã使ã£ã¦ããã®ã§ããã°å©ç¨ããåã¦ã¼ã¶ã¼ã§è¨å®ããå¿
è¦ããã)ããã㦠docker-credential-pass
ã«ã¤ãã¦ãrootããå¼ã¹ãå ´æã«ç½®ãã¦ããå¿
è¦ãããã¾ãããæ°ãä»ãã¾ãããã
NetworkManager 1.36ã«ããã¦L2TP/IPSecã®ãã³ãã«ãä¸æãå¼µããªãåé¡
NetworkManagerã®version 1.36ã«ããã¦L2TP/IPSecã®ãã³ãã«ãå¼µããã¨ããã¨ä¸æãå¼µããªãã¨ããåé¡ãããã¾ãã
èªåã使ç¨ãã¦ããUbuntu 22.04ã§ã¯L2TPæ¥ç¶ã¯æ¨æºã§ã¯æä¾ããã¦ããªãã®ã§network-manager-l2tpããã±ã¼ã¸ãaptçã§ã¤ã³ã¹ãã¼ã«ããå¿
è¦ãããã¾ããããã®æã«ä¸ç·ã«ä½¿ç¨ããNetworkManagerã®ãã¼ã¸ã§ã³ã«ãã£ã¦å½è©²åé¡ãçºçãã¾ããã¡ãªã¿ã«NetworkManagerã®ãã¼ã¸ã§ã³ã¯ nmcli --version
çã§åç
§å¯è½ã§ãã
Ubuntu 22.04ã®package managerã§å©ç¨å¯è½ãªNetworkManagerã®ãã¼ã¸ã§ã³ã¯1.36ç³»ã§ãããã *1 ã ããããã®åé¡ãè¸ããã¨ã«ãªãã¨æããã¾ãã
çç¶ã¨ãã¦ã¯ network-manager-l2tp
ãã¤ã³ã¹ãã¼ã«ããä¸ã§L2TP/IPSecæ¥ç¶ã試è¡ããã¨ä»¥ä¸ã®ãããªã¨ã©ã¼ã¡ãã»ã¼ã¸ã表示ãããä¸ã§ã©ãã¨ãéä¿¡ã§ããªããªããæçµçã«ãã³ãã«æ¥ç¶ã®ç¢ºç«ããã£ã³ã»ã«ãããã¨ãããã®ãè¦ããã¾ãã
NetworkManager[1134025]: xl2tpd[1134025]: handle_control: bad control packet! NetworkManager[1134025]: xl2tpd[1134025]: network_thread: bad packet
L2TPãIPSecã®è¨å®ã«åé¡ãããã®ãã¨æã£ã¦è²ã ã¨è©¦ãã¦ã¿ãã®ã§ããæ¹åãããè²ã 調ã¹ãã¨ããNetworkManagerã®éçºrepositoryã®issueã«è¡ãçãã¾ãã:
ããã¯æ¢ç¥ã®åé¡ã§ããããã§ã
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/946#note_1406609
ãã®ã³ã¡ã³ãã§ç¤ºããã¦ããããã«ããã³ãã«ã®ããã«ä½æãããpppã¤ã³ã¿ã¼ãã§ã¤ã¹ããããããããªãIPããæã£ã¦ãããã¨ã«ä¾ãããã§ãã
ä¾ç¤ºããã¦ããppp0ã®ç¶æ
ãåãã¦èª¬æããã¨ã
43: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc fq_codel state UNKNOWN group default qlen 3 link/ppp inet 172.16.100.10 peer 63.2.5.44/32 scope global ppp0 valid_lft forever preferred_lft forever inet 172.16.100.10/32 scope global noprefixroute ppp0 valid_lft forever preferred_lft forever
ãã³ãã«ã®å®å
63.2.5.44/32
ã«å¯¾ã㦠172.16.100.10
ãpeerããã¦ãããã¨ãåé¡ã®ããã§ãã
ã¨ããããã§ãã³ãã«ç¢ºç«è©¦è¡ä¸ã« ip a del 172.16.100.10 peer 63.2.5.44 dev ppp0
ãªã©ã¨ãã¦ãã®ä¸æ£ãªpeerãåé¤ãã¦ãããã¨ãæ£å¸¸ã«ãã³ãã«ãå¼µããã¦éä¿¡ã§ããããã«ãªãã¾ãã
ãã§ãããã§ãã......ã¨è¡ãããã¨ããã§ããããã®ã¾ã¾ã§ã¯ãã³ãã«ãå¼µããã³ã«æåã§peerã®åé¤ã³ãã³ããæããªããã°ãªããªãã®ã§ããã¯é¢åã§ãããããããã®åé¤ã³ãã³ãã¯ãã³ãã«ç¢ºç«å¦çä¸ã«æããªããã°ãªãããé©åãªã¿ã¤ãã³ã°ã§ã®å®è¡ãæ±ãããã¦å¤§å±¤é¢åã§ããèªååãã¾ãããã
NetworkManagerã«ã¯çºçããã¤ãã³ãã«å¿ãã¦ã¹ã¯ãªãããå¼ã°ããã¨ããä»çµã¿ãããã®ã§ãããå©ç¨ãã¾ãã
/etc/network/if-up.d
ã«å®è¡å¯è½ãªã¹ã¯ãªãããç½®ãã¦ããã¨ã¤ã³ã¿ã¼ãã§ã¤ã¹ãupããæã«å¼ã°ããã®ã§ã
#!/bin/bash set -euo pipefail if [[ "$IFACE" =~ ^ppp[0-9]+ ]]; then invalid_addr_json=$(ip -j addr show dev "$IFACE" | jq -r '.[0].addr_info[] | select(.scope == "global" and .address != null)') sudo ip a del "$(echo "$invalid_addr_json" | jq -r .local)" \ peer "$(echo "$invalid_addr_json" | jq -r .address)/$(echo "$invalid_addr_json" | jq -r .prefixlen)" \ dev "$IFACE" fi
ã¨ãããããªã¹ã¯ãªããã 999-remove-invalid-peer-on-ppp-if
ã¿ãããªåå㧠/etc/network/if-up.d
é
ä¸ã«ç½®ãã¦ããã¨ãL2TPãã³ãã«ç¢ºç«ã®éã«èªåçã«ä¸æ£ãªpeerãé¤å»ãããã®ã§æ£å¸¸ã«ãã³ãã«ãå¼µããããã«ãªãã¾ããjqã¯ã¤ã³ã¹ãã¼ã«ãã¦ããã¾ãããã
ãã ããä»ã®ç¨éã§pppã¤ã³ã¿ã¼ãã§ã¤ã¹ãå©ç¨ããéã«ãã®ã¹ã¯ãªãããæå¹ã«ãªã£ã¦ããã¨ãæå³ããåä½ããããããã¦ãã¾ãå¯è½æ§ãããã®ã§ãã®ç¹ã«ã¤ãã¦ã¯ãçæãã ããã
ãªããã®æããã®ã¹ã¯ãªããã«å®è¡å¯è½ãªpermissionãä¸ãã¦ããªãã¨ä¸æãåããªãã®ã§æ³¨æãå¿
è¦ã§ããchmod 755
ãªã©ã¨ãã¦ä¸ãã¾ãããã
ãã§ãããã§ãããããã¯ããã¨ã㦠ip
ã³ãã³ãã®çµæãJSONã§åºåãã -j
ãªãã·ã§ã³ã¯ä¾¿å©ã§ããã§ããã
ã¡ãªã¿ã«
https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/issues/946#note_1725575
ãã®ã³ã¡ã³ãã«ããããã«ãNetworkManager 1.40ã§ã¯ç´ã£ã¦ããåé¡ã®ããã§ããã¢ããã°ã¬ã¼ãã§ãããªãã¢ããã°ã¬ã¼ãããã»ããè¯ãã§ããããUbuntu 22.04ã®package managerã«ãå ¥ã£ã¦ã»ããã§ãããã¡ãã£ã¨é£ããããªã®ã§Ubuntu 24.04ãå¾ ã¤ãããªããããªäºæããã¦ãã¾ããUbuntu 23.04ã§ã¯NwtworkManager 1.42ãå©ç¨ãã¦ããã®ã§ *2 24.04ã§ã¯ä¿®æ£çã使ããããã«ãªããã¨ãæå¾ ãã¦ãã¾ãã
Linux Desktopã§IntelliJ IDEA 2023.1ã4Kãã£ã¹ãã¬ã¤ä¸ã§è¡¨ç¤ºããã¨è²ã ãã«ããªã£ã¦å°ã
IntelliJ IDEAã2023.1ã«ã¢ããã°ã¬ã¼ããã¦4Kãã£ã¹ãã¬ã¤ä¸ã§èµ·åããã¨ãããã¹ã±ã¼ã«ã®è¨å®ãããããã®ããã¹ã¦ããã«ããªããç¸å¯¾çã«ä½æ¥é åãçããªã£ã¦å°ã£ã¦ãã¾ãã
ãã¶ãLinux Desktopã§ã ãçºçãã¦ããåé¡ã®ããã§ãåããããªçç¶ãæ¢ã«ã¬ãã¼ãããã¦ãã¾ããã
https://youtrack.jetbrains.com/issue/JBR-5316/Wrong-large-IDE-scaling-on-4k-Screen
ã²ã¨ã¾ãã®Workaroundã¨ãã¦ã¯èµ·åãªãã·ã§ã³ã«-Dsun.java2d.uiScale=1.0
ãä»ããã¨è¯ãã¨ã®ãã¨ã
ç´ã£ã (ããã«è¦ãã)ï¼ï¼ ããã£ãããã£ãã
#yapcjapan YAPC::Kyoto 2023ã«è¡ã£ã¦ããã»åã£ã¦ãã
2023å¹´3æ19æ¥ã«éå¬ãããYAPC::Kyoto 2023ã«åå ãã¦ãã¾ããããã2é±éãåã®è©±ã«ãªããã§ãã......USã«æ»ã£ã¦ãã¦ããè²ã ããããã£ããããã°ãæ¸ãã®ãé ããªã£ã¦ãã¾ãã¾ããã
YAPC::Kyotoã®æ§ã ãªææ³ã«ã¤ãã¦ã¯ãã«ãããé å ´.fmã㧠id:papixãid:karupanerura ãããéå¶ã®æ¹ã ã¨åã£ãPodcastãå ¬éããã¦ããã®ã§æ¯éãè´ããã ããã¾ãï¼
nyanco-sakaba-fm.hatenablog.com
é¢ç½ãã£ããã¼ã¯
ã¸ã§ããã¥ã¼ã·ã¹ãã Fireworqã®ã¢ã¼ããã¯ãã£è¨è¨ã¨éç¨æã®ãã¹ããã©ã¯ãã£ã¹
id:tarao ããã®çºè¡¨ãFireworqãçºè¡¨ããããããã£ã¦ãã¹ã±ã¼ã©ããªãã£ãé«ããªããã¤è¤æ°ã®è¨èªããè¯ãæãã§ä½¿ããã¸ã§ããã¥ã¼ã®ãããã¯ãã«ã¤ãã¦ãä½ä½¿ãã°è¯ããã ãããããã£ã¦æãã§æ±ºå®çããã¾ãã¡ç¡ãã£ãè¨æ¶ããããå½æã¯Resqueã¨ãSidekiqã¨ãã使ã£ã¦ããããªæ°ããã¦ãã¾ã (ä¸é¨ã¯å¤æ¥ããã®TheSchwartzã¨ãããã£ãæ°ã......)ãAWS使ã£ã¦ã人ãã¡ã¯SQSã使ã£ã¦ãã®ãããããªãã§ããã
ãããªä¸ãå®åã«èãããã¸ã§ããã¥ã¼ã¨ã³ã¸ã³ã§ããFireworqãåºã¦ããã¿ã¤ãã³ã°ã§ããªãªï¼ãã¨ãªã£ãã®ãä»ãè¦ãã¦ãã¾ããã¢ã¼ããã¯ãã£ãå
éçã§ããªããã¤ãã¯ã¦ãªå
ã§å®éã«ä½¿ããã¦ããã¨ããã¨ããã«ãæåãããã®ã§ãã
å½æã¯èªåãã¸ã§ããã¥ã¼ã¨ã³ã¸ã³ãä½ããã¨ãã¦ãããããã¯æªå®ã«çµãã£ãã®ã§ãã *1ããããã£ãããã·ã§ã³ããã£ããã¨ãæãåºãã»ãã·ã§ã³ã¨ãªãã¾ããã
ããããä»ã¯Kafkaã¨ãAmazon Kinesisã¨ããå人çã«ã¯ä½¿ã£ã¡ãããã¡ã§ãã¦ãã¸ã§ããã¥ã¼çéããã®æ°å¹´ã§ããªãããã ãªãã¨ããææ³ãåæã«æ±ãã¾ããã
ORM - Object-relational mapping
id:onk ããã®çºè¡¨ãORMã«ã¤ãã¦ãã¿ã¼ã³åé¡ãã¤ã¤ä½ç³»çã«èª¬æãããã¤æ¢åã®Perlããã¸ã§ã¯ãã«å¯¾ãã¦å¤§ããªã®ã£ãããçã¾ãªãå½¢ã§ORMãå°å
¥ãã¦ããã¨ããå®è·µçãªçºè¡¨ã§ããã
PofEAAçãORMã«ã¤ãã¦è§£èª¬ãã¦ããæ¸ç±ã¯æ°ããã©ãªããªã骨太 (ã¨ãããåç´ã«æéããããããã¨onkããã軽ãè¨ã£ã¦ã¾ããã20å¹´åã®æ¸ç±ãªã®ã§æ´å²ããã) ãªãã®ãå¤ãã®ã§äººã«å§ãã«ããï¼ãã®ã§ããã®ããã«ããããããã¾ã¨ãã¦ããã®ã¯äººã«èª¬æããæã«å©ãã£ã¦ãã£ã¡ãè¯ãã£ãã§ãã
ä¼å ´ã§ãORMãããã©ã¼ãã³ã¹æªãã¯ã¨ãªåãã¨å°ããªãï¼ãã¨è³ªåããã®ã¯åã§ã
Perl ã® DB å¨ãã®ã©ã¤ãã©ãªã«ã¯åºæ¬çã«ã©ãã§çºè¡ãã SQL ãªã®ããã³ã¡ã³ãã§æ®ãæ©è½ããã *5 ã®ã§ãã¹ãã¼ã¯ã¨ãªã®æ¤ç¥ãéè¨ããã§ãã¦ããã°çºçããåé¡ã«ã¯å¯¾å¿ã§ããã ã¾ããéè¨ãæ¤ç¥ããããã®ãµã¼ãã¹ãç¾ä»£ã§ã¯æ´ã£ã¦ãã¦ãèªå㧠pt-query-digest çã§éè¨ããªãã¦ã Performance Insight ãæãã¦ãããã®ã§ãé å¼µããªãã¦ãè¦ã¤ããããããããªããã¨æã£ã¦ãã¾ãã
ä»ã¯ç§»è¡ç´å¾ãªã®ã§ã¿ã㪠SQL ã¸ã®è³å ãããã³ã°ãã§ããç¶æ ã ãã©ããORM ãã触ã£ããã¨ã®ãªã人ããå¢ããä¸çã ã¨ãçºè¡ããã SQL ãè¦ã¦ããï¼ï¼ãã¨è¨ããããªãããã§ãããä¾ãã° Devel::KYTProf ãå ¥ãã¦æµãã SQL ãçºããªããéçºããããåããããã¨ããããããã£ã¦ããã°ã ã¨çºãã人ãå°ãªãã®ã§ãã©ã¦ã¶ä¸ã«ã©ãã«ããã¦è¡¨ç¤ºããã¨ããå¿ è¦ã«ãªãããããã¾ããã
ããããåé¡ãçºçããªãããã«ããã®ã¯é£ããããã¼â¦â¦ã工夫ã¯ãã¦é²ããã©ããã¾ã«ãããããåºãããåã¡ç®ã®å°ãªãæ¦ãã£ã½ãã¨æãã
ã¨ããåçããã¦ããã ããããã«ã¤ãã¦ã¯ç´å¾ãã¾ãããã¨ã¯ãããèªåã¨ãã¦ã¯ãã¯ãå¤æ®µJOINã ã®ãªãã ã®ã¨è¤éãªã¯ã¨ãªãORMã ãã§çµã¾ãããã¨ããã¨ç解ä¸è½ãã¤ããã©ã¼ãã³ã¹ã®æªãã¯ã¨ãªãå¾ã¦ãã¦åããããã¨ãããæ°ããã¦ã¦ããããããã®ã«ã¤ãã¦ã¯SQLãææ¸ããã¤ã¤ãªãã¸ã§ã¯ãã«ãããã³ã°ã ãããããã¨ãããã¤ããªããæ¦ç¥ãæ¡ããã¨ãå¤ãããªã......åã«çSQLã好ãã¨ããå好ã®è©±ãããããªããã¨ã¯ãããã©ããããã®è¤éæ§ããããããã®ãï¼ãã¨åãããã¨ãã®ã¸ãæè¦ã§ãã£ã¦ãã®ã§ããã®ã¸ãããã¡ãã£ã¨èªåã®ä¸ã§è¨èªåããå¿ è¦ãããã®ãããããªããªã¨æãã¾ããã
ãã¼ãã¼ã
id:onishiããã®ãã¼ãã¼ããã¨ã¢ããããã¯ã¦ãªã®ç¤¾å²ãããæ¬äººã®ãã£ãªã¢ããªãã£ã¦ã®å¤§æ²³ã¨ããæãã§æ¬å½ã«è¯ãã£ãã§ããããªã«ãããã«ãé
ãããã¨ãããã¨ã¯ãªããæ¬å½ã«è¯ãè¨èã§ããã
ãã®çºè¡¨ã«ã¤ãã¦ã¤ã¹ãã¹è¨ãã®ã¯éæ®ã ã¨æãã®ã§ãã¢ã¼ã«ã¤ãæ åãå
¬éããããè¦ã¾ããããMust Watchã¨ããæãã§ããã
ããã¯ããã¨æ親ä¼ã§ãè¨ãã¾ããããã¹ã©ã¤ãã®çºè¡¨ã¡ã¢ã«ãããã§æ極ã¾ããã¨ãããæ¸ããããã®ã¯ååã§ãã *2ã
èªåã®ãã¼ã¯
æãå¤ããã²ã¹ãã¨ãã¦æå¾ ãã¦ããã ãçºè¡¨ãããã¨ã¨ãªãã¾ãããã·ã¢ãã«ããé§ãä»ãã¦ã®çºè¡¨ã§ã人çå²ä¸åã®æ¥æ¥å ¬æ¼ã¨ç¸æãã¾ããã
ä¸è¬ã«ãæè¡çè² åµãã ã®ãã¬ã¬ã·ã¼ã³ã¼ããã ã®ã¨å¼ã°ããã¡ãªãã¿ãªããã½ããã¦ã§ã¢ãã«ã¤ãã¦ãããã¦é²æªçã«ãå»å¢ãã¨ç§°ããã¨ã«ããããã¯æè¡çè² åµã§ã¯ãªãããã®ã¾ã¾ã§ã¯ãããªãããªãã¨ãããªããã°ãªããªãããªãã¨ãããããã¨ããææ°è¾¼ã¿ã表æããã¨ã¨ãã«å®éã«ãªãã¨ããã¦çã延ã³ãããã®ææ³ã«ã¤ãã¦æ£ãã°ããçºè¡¨ã¨ãªã£ã¦ãã¾ããããæ°å¹´ã¯ãã®ãããªã½ããã¦ã§ã¢ãããã¾ããè«è² 人ã¨ãã¦æ´»åãã¦ããã®ã§ããã®éã«å¾ãç¥è¦ãã¾ã¨ããé大æã¨ãªã£ãã®ã§ã¯ãªããã¨æãã¾ããä¸èº«ã¨ãã¦ã¯ãã¬ã¬ã·ã¼ã½ããã¦ã§ã¢æ¹åã¬ã¤ããããã¬ã¬ã·ã¼ã³ã¼ãæ¹åã¬ã¤ããã«æ¸ããã¦ããå 容ãå¤ãå«ã¾ãã¦ã¯ããããã§ãã......
質çå¿çã¨ãã¦ã¯ã
Qãçµå¶ã¨ãã®è¦³ç¹ã§ã¯ãããªã£ã¦ããã¨å¬ãããªã©ããããã
— ãã¦ã«ãã (@stefafafan) 2023å¹´3æ19æ¥
Aãå¤ããã¿ãã¨ãã«æ°æ©è½ã足ãããªãã¨ãããã¨ã«ãªã£ã¦ãã¯ããªã®ã§ãã¨ã³ã¸ãã¢ããã³ãã¥ãã±ã¼ã·ã§ã³ãã¨ã£ã¦ç解ããã£ã¦ãããããã®ä¸ã§äººãå½ã¦ã¦ããããã¨è¯ãã#yapc_sb #yapcjapan
Qãå»å¢ãå»å¢ã¨åã人ã«èªèãã¦ãããã«ã¯ã
— ãã¦ã«ãã (@stefafafan) 2023å¹´3æ19æ¥
Aãä½ããã®å¤æ´ããããã¤ããç¬éã«å£ãããã¿ãããªã®ãå»å¢ãªã®ã§ãå¤æ´ã«ãããã°çãã¨ã£ã¦å¯è¦åãã¦ããã®ãè¯ãã¨æãã¾ããè¦ãããã®ããä¿¡ããªãã¨æãã®ã§å¯è¦åã大äºã#yapc_sb #yapcjapan
ã¨ãã£ããã®ãå°è±¡ã«æ®ã£ã¦ãããä¸è¬ã«ãå»å¢ããªãã¨ããããã¨ããæ´»åã¯ãåæ»ãã«è¦ãã¦ãã¾ããã¡ã§ããããå®éã«ã¯åæ»ã§ã¯ãªãç¶ç¶çãªæ¹åæ´»åã§ãããã²ãã¦ã¯äºæ¥ãæç¶ãããããã«å¿ è¦ãªè¡åã§ããã¨è¨ããã¯ããªã®ã§ãããã¨ã³ã¸ãã¢ãªã³ã°æ´»åã®å¤ããè¦ã¦ããã¨ããç解ãã¦ãããã«ã¯ä¸å®ã®ãã¼ãã«ãããã¨ããããçµå±ãçµå¶ã¨ã¡ããã¨ã³ãã¥ãã±ã¼ã·ã§ã³ãã¦ä¿¡é ¼é¢ä¿ãç¯ãã¦ç解ãã¦ãããããã¤Four Keysã®ãããªå®ç¸¾ã示ãã¦å®æ¸¬å¤ã«ãã£ã¦ç解ãã¦ããããã¨ããå¶ã¿ãå¿ è¦ãªã®ã§ã¯ãªãããã¨ããã®ãããæè¿ã®æãã§ãã
ãã¦ããã®ãã¼ã¯ã®è£ãã¼ãã¯ãå人æãã§ããããããå»å¢æ´»åã§ãããã©ãããåãããã½ããã¦ã§ã¢ã®éçºãéç¨ãããã«ããã£ã¦ã¯ãåã®åãã ãã§ã¯æ©æ©éçãæ¥ã¦ãã¾ãããããã¼ã ã§åãçµãã§ããå¿
è¦ãããã¨ããã®ã¯ä»ããè¨ãã¾ã§ãç¡ãã¨ã¯æãã¾ããä¸æ¹ãå人æãå¿
è¦ã§ã¯ãªããã¨ããã¨ããã§ã¯ãªãã¨æã£ã¦ãã¦ãå§åçãªå人æããä¸å©ãªç¶æ³ãæéããã¨ãããã¨ã¯å°ãªãããããã¨æã£ã¦ãããç¹ã«ãå»å¢ããªãã¨ãããããªã©ã¨ãã£ã馬åãæ±ããããã·ãã¥ã¨ã¼ã·ã§ã³ã§ã¯é常ã«ä¾¡å¤ããããã®ã ã¨æã£ã¦ãã¾ãã
ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ãªã³ã°ã¨ããæ¥çãæçãã¦ãã¦ãã証左ã ã¨ã¯æãã¾ãããããæè¿ã¯ãã¼ã éçºã ã¨ãçµç¹éå¶ã ã¨ããããã£ããããã¯ãå··ã§å¤ãè¦ãããããã«ãªãã¾ããããããã£ãç¶æ³ãããåã®åããè¥å¹²è»½è¦ããã¦ããã®ã§ã¯ãªããã¨ããæ¸å¿µãããããã®ãã¼ã¯ã§ã¯å人æã®ä¾¡å¤ãéè¦æ§ãããã¦ãã®éçã«ã¤ãã¦ã®è©±é¡ãæèçã«çãè¾¼ã¿ã¾ãããã¶ã£ã¡ããã¦è¨ãã°å人ããã®æãéçã¾ã§ããã·ã¥ãã¦ãããã¼ã ã§ã®æ´»åãå¼·åãããã®ã§ãã£ã¦ã極éã¾ã§æ±ããå人æã¨å人æã®ããããããããã¦ãã®æã®å調ã«ãã£ã¦å½¢æããããã¼ã ãããæå¼·ã®ãã¼ã ãªã®ã§ã¯ãªããã¨ããæèãæã£ã¦ãããããããããã¨ããæããè¾¼ãããã¦ãã¾ãã
ããã¯ããã¨id:malaããããããå»å¢ããã®ã¾ã¾å£²ãé£ã°ããã¨ãã解æ³ãæ¬ ãã¦ããããã¨çºè¡¨å¾ã«ææããããªãã»ã©ã¨ãªãã¾ãããGood Pointãã¡ãªã¿ã«åã¯ããã¾ã ãã£ããã¨ãªãã§ãã
ã¾ãLTãããã¾ãããLTã®è³æã¯ãã¡ãã§ãã
^ ãå®è£ ããæã®è©±ã§ãããããå®è£ ããæããã®è³æã«æ¸ããã¦ããPrefix Treeã«ããIP Routing Tableã®ãããã³ã°ã¢ã«ã´ãªãºã ãèªåã§ç·¨ã¿åºãã¦ããããããããããã£ãã¼ï¼ï¼ï¼ãã¨ä¸è½æã«å ã¾ãã¦ãããã®ã§ããããããã調ã¹ã¦ã¿ãã¨æ¢ã«åå¨ããå¿ç¨é åã§ããè¥å¹²ã¬ãã«ãªããã¨ããè£è©±ãããã¾ããè¯ãäºå調æ»ããããï¼ï¼ï¼
ãã®ä»éæ
ä¹
ã
ã®ãªãã©ã¤ã³ã«ã³ãã¡ã¬ã³ã¹ã§ãä¹
ã
ã«ä¼ã人ãã¡ã¨è²ã
ãªã話ãã§ãã¦æ¬å½ã«è¯ãã£ãã§ãããã¼ã¯ãã£ã¡ã®ãã§å»ä¸ã§è¿æ³å ±åã ã£ãããå°ãäºã®ç¸è«ã ã£ãããæ°ããæè¡ã®è©±ã ã£ãããããããã¨ã沢山ã§ãã¦æ¬å½ã«æ¥½ããã£ãã§ãã
ã¾ããçºè¡¨ä¸ã«ãªã¢ã«ã¿ã¤ã ã§åºãè¾¼ã¾ãã質å (a.k.a dan the question) ãããã®ããªãã©ã¤ã³ãªãã§ã¯ã§ããããããé常ã«é¢ç½ãã£ãã§ãï¼
ãã¨id:sfujiwaraããã«è¾»æ¬ãã®ããã«æãã¦ããpull requestã«ã¤ãã¦ã®ãã£ã¹ã«ãã·ã§ã³ãface to faceã§ã§ãã¦è¯ãã£ãã§ãããã¤ããä¸è©±ã«ãªã£ã¦ããã¾ããã¿ãããªæãã§ä½¿ã£ã¦ããã½ããã¦ã§ã¢ã®ææ³ã»æè¬ãç´æ¥ä¼ããããã¨ããã®ãè¯ãã§ããã
ã¾ããid:nekokakããã®çºè¡¨ãid:onishiããã®çºè¡¨ãªã©ããã£ãªã¢ã«é¢ããçºè¡¨ãè¦ã¦èããæ°ãã«ãªã£ãã¨ããã®ãããã¾ããåããã¯ãé½¢32ãç¡è¶ãå¹ãå¹´é½¢ã¯ã¨ãã«éãå»ãããã¤ã¾ã§ãã®ãããªè åã«ã¢ããè¨ãããæ®ãããã§ããã®ãã¨ãµã¨å¿é ã«ãªããã¨ãããã¾ããæ親ä¼ã§èª°ãã«è¨ããããæ´åè£ ç½®ã®ãããªãã£ãªã¢ã«ã¯ãããéçãæ¥ããã¨ããè¨èã«ã¯å·ãæ°´ãæµ´ã³ãããããããããªæ°æã¡ã«ãªãã¾ããããããã£ããã£ãªã¢ã«å¯¾ããæ¼ ç¶ã¨ããä¸å®ã®ãããªãã®ã¯ç¢ºãã«ãããä¸æ¹ã§è åã¯å¤±ãããã¯ãªãããããªæã«YAPCã«ã¯å 輩ã¨ã³ã¸ãã¢ãå¤ãåå ãã¦ããããè²ã ã¨ãã£ãªã¢ç¸è«ã¿ãããªãã¨ãæ親ä¼çã§ã§ããã®ã¯é常ã«è¯ãã£ãã§ããããããã£ããåãæ³ãåã£ã......
ã¨ããããã§ãYAPC::Kyoto 2023ããã¸ã楽ããã£ãã§ãï¼ãYAPCãéå¶ãã¦ãã ãã£ãçæ§ãåå è ã®çæ§ãããã¨ããããã¾ãï¼ï¼ãä»å¾ã®YAPC::Japanã楽ãã¿ã«ãã¦ãã¾ãã
ã¡ãªã¿ã«ã³ã¬ã¯çºè¡¨åã«é£²ãã ãä¼å ´åã®èªå販売æ©ã§å£²ã£ã¦ã100åã®ã¨ãã¸ã¼ããªã³ã¯ã§ããã³ã¤ãã«åã¯å©ããããã¨è¨ã£ã¦ãéè¨ã§ã¯ããã¾ãããããã100åã®ã¨ãã¸ã¼ããªã³ã¯ã£ã¦ãã¸ã§ããããªã
KAYACãããé ã£ã¦ããã¿ãã㯠"undef" ã§ããããã¼ã¯ç´åã«ããå¼ãã¦è¥å¹²ä¸å®ã«ãªãã¨ããä¸å¹ãé¢ç½ãã£ãã§ãï¼
飲é
æ4æã¾ã§é£²ãã§ã¦ãã®æéã«ä¼å ´å ¥ããã¦ãã®æ®éã«å大ãªåºæ¥äºã®ããã«æã
— moznion (@moznion) March 19, 2023
YAPCçµãã£ãã®ãè¯ããã¨ã«æ5æã«ç¼èé£ãã«è¡ã£ãã®å®å ¨ã«çã£ãåºæ¥äº
— moznion (@moznion) March 20, 2023
ç¡è¶ãªé£²é ãYAPCã®è¯ã