C++ã®inlineã¯ã¤ã³ã©ã¤ã³å±éããã¨ããæå³ã§ã¯ãªã
C++ã®å¥½ããªæå®åã inline ã§ãinline ã¯ãã¤ã³ã©ã¤ã³å±éãããã¨ããæå³ã§ã¯ãªãã¨ããã®ã好ãã
ãã¤ã³ã©ã¤ã³å±éãããã¨ããæå³ã§ inline ã使ãã¨ãããã
#include <stdio.h>
#include <stdlib.h>
inline int fibonacci(int x) {
if (x <= 1) { return x; }
return fibonacci(x-2) + fibonacci(x-1);
}
int main(int argc, char **argv) {
printf("%d\n", fibonacci(atoi(argv[1])));
}
ããããå帰ããããããªé¢æ°ã ã¨ã¤ã³ã©ã¤ã³å±éã§ããã«ã¨ã©ã¼ã«ãªãã¯ãã§ããã å®éã«ã¯ãã¡ããããã¯ã¨ã©ã¼ã§ã¯ãªãã
仿§ãèªãã ãã¨ã¯ãªãã®ã§å³å¯ãªå®ç¾©ã¯ç¥ããªãããinline æå®åã¯ããã¤ã³ã©ã¤ã³å±éçãªãã¨ããã£ã¦ãæ´åæ§ã¨ããããã«ã·ã³ãã«ãå®ç¾©ãã¦ãããã¨ããæç¤ºã«ãªãã
ã¤ã³ã©ã¤ã³é¢æ°ã¯é常ããããã¡ã¤ã«ã«ç½®ãããã®ã§ããããã使ãããã¯ã
// h.h
inline int a(int x) { return x + 1; }
extern int b();
// a.cc
#include "h.h"
#include <stdio.h>
int main() {
printf("%d\n", a(10) + b());
}
// b.cc
#include "h.h"
int b() { return a(10); }
ãããªæãã«ãªãã ããã
ããã§ãinline æå®åããªãã¨ã©ããªããã¨ããã¨ã
// h.h
int a(int x) { return x + 1; } // inlnie ããªãã
extern int b();
g++ -c -o a.o a.cc g++ -c -o b.o b.cc cc a.o b.o -o a /usr/bin/ld: b.o: in function `a(int)': b.cc:(.text+0x0): multiple definition of `a(int)'; a.o:a.cc:(.text+0x0): first defined here collect2: ã¨ã©ã¼: ld ã¯ã¹ãã¼ã¿ã¹ 1 ã§çµäºãã¾ãã make: *** [<ãã«ãã¤ã³>: a] ã¨ã©ã¼ 1
a.o 㨠b.o ã®ä¸¡æ¹ã«é¢æ°aã®å®æ
ãã§ãã¦ãã¾ã£ã¦ multiple definition ã®ã¨ã©ã¼ã«ãªãã
inline æå®åã¯ããã®multiple definitionãèµ·ãããªãã§ããã¨ããã®ã仿§ã§ããã®ä»æ§ããããã¨ã«ãã£ã¦ãã¤ã³ã©ã¤ã³å±éãããããªä½¿ãããããã¦ãåé¡ãèµ·ãããªããã¨ããç¶æ³ã«ã§ããã
ããããã static ã¨ã©ãéãã®ï¼ã¨ãã話ã«ãªããã
// h.h
static int a(int x) { return x + 1; } // inline ã§ãªã static
extern int b();
g++ -c -o a.o a.cc g++ -c -o b.o b.cc cc a.o b.o -o a # OK!
staticã¯ããã¡ã¤ã«ãã¼ã«ã«ãªé¢æ°ãæå³ãã¦ãåãååã§ãã¡ã¤ã«æ¯ã«å®ç¾©ãéã£ã¦ãæ§ããªãã䏿¹ãinline ã¯åãååã§å®ç¾©ããã夿°ã¯ãå
¨ã¦ã®ãã¡ã¤ã«ã§åãå®ç¾©ã«ãªã£ã¦ãªãã¨ãããªããã¨ããéããããã
#include <stdio.h>
YOUR_SPECIFIER int a(int x) { return x+1; }
extern int b();
int main() {
printf("%d\n", a(10) + b());
}
// y.cc
YOUR_SPECIFIER int a(int x) { return x+1; }
int b() { return a(10); }
ãã㯠static ã§ã inline ã§ãåä½ã¯å¤ãããªã
$ g++ -DYOUR_SPECIFIER=static -c -o x.o x.cc $ g++ -DYOUR_SPECIFIER=static -c -o y.o y.cc $ cc x.o y.o -o x $ ./x $ 22 $ g++ -DYOUR_SPECIFIER=inline -c -o x.o x.cc $ g++ -DYOUR_SPECIFIER=inline -c -o y.o y.cc $ cc x.o y.o -o x $ ./x $ 22
ã¨ãããããã®ããã« a(int x) ã®å®ç¾©ãè¤æ°ã®ãã¡ã¤ã«ã§éãå®ç¾©ã«ãã¦ãã¾ãã¨éããåºãã
// x.cc
#include <stdio.h>
YOUR_SPECIFIER int a(int x) { return x+100; }
extern int b();
int main() {
printf("%d\n", a(10) + b());
}
// y.cc
YOUR_SPECIFIER int a(int x) { return x+1; }
int b() { return a(10); }
$ g++ -DYOUR_SPECIFIER=inline -O2 -fno-inline -c -o x.o x.cc $ g++ -DYOUR_SPECIFIER=inline -O2 -fno-inline -c -o y.o y.cc $ cc x.o y.o -o x $ ./x 220 $ g++ -DYOUR_SPECIFIER=static -O2 -fno-inline -c -o x.o x.cc $ g++ -DYOUR_SPECIFIER=static -O2 -fno-inline -c -o y.o y.cc $ cc x.o y.o -o x $./x 121
ãã®å ´åãstaticã¯ãã¡ãã¨å®ç¾©ããã¦ãã¦ãã©ã®ç°å¢ã§ããã®éãã«åãããinlineãä»ããã»ãã¯ãå¤ãä½ã«ãªããã¯ããããªãã(仿§ã¯è¦ã¦ãªãã®ã§æªå®ç¾©åä½ãã©ããã¯ç¥ããªã)
ããã inline ãã static ã®ã»ãããã¹ãèµ·ããã¥ããã¦ããããããªãï¼ã¨ãã£ã¨æã£ã¦ãã®ã ãã©ãå»å¹´ããããããããã£ã± static inline ã¯ã¤ã³ã©ã¤ã³å±éãããªãã£ãæã«å®ä½ãæå³ããªãè¤æ°ã§ãã¦ãã¾ã£ã¦.textãµã¤ãºç¡é§ã«ã§ãããã¦ãããªãâ¦ã¨æãããã«ãªããªããèããªãã§static inlineãããããªãã¨ã¯ããã¾ããã
$ # static $ ls -l x -rwxr-xr-x 1 tanakmura tanakmura 15568 6æ 23 00:54 x $ # inline $ ls -l x -rwxr-xr-x 1 tanakmura tanakmura 15528 6æ 23 01:06 x
ã¿ããªãé©åã«inlineã使ãã¾ãããã
åè : https://qiita.com/kktk-KO/items/075ce9a784d5d8296d53
(ã¿ã¤ãã«ã«åã㦠static 㨠inline ã®éãããæ¸ãã¦ãªããstatic inlineã¨inlineã¨staticã®éãã¯â¦ç§ãããåãããªãã®ã§ã¿ããªã§èª¿ã¹ããï¼)
(inline æå®åã®ä»æ§ã«ã¯ã¤ã³ã©ã¤ã³å±éããã£ã¦æ¸ãã¦ããããå ¨ç¶æ¸ãã¦ãªãããç¥ããªãã§ããä½ãç¥ããªããç¥ã£ã¦ããã¨ä½ããªãã£ã)
Arm laptop
ãªãããããã¤ãªãã㪠â ãªã
Cortex-X2 ã¨ã X3ã®ã欲ããã®ã ã£ãããã¡ãã X4 ã§ãããããã®ãããã«ãªãã°ããx86ã«è¿½ãä»ãã¦æ®éã«ä½¿ããã®ã§ã¯ã¨ããæ°ãããã®ã§ã
Androidã¯ããã
Wikipediaãè¦ãã°ä¸è¦§ãã£ããã
https://en.wikipedia.org/wiki/List_of_products_using_ARM_processors
- Cortex-X2
- Cortex-X3
Surface ã®ã¯ Qualcomm ã®ã§ãæ®å¿µãªããCortex-X1ãããã
æå ã®ã¹ããã¯Snapdragon 888ã§ Cortex-X1 ã ã£ãã(Snapdragon 888 㯠Gen8 ã¨ã¯éãã¨ããå¦ã³ããã£ã)
æ°ããã® Arm Chromebookã¯
- Kompanio 520 â ASUS Chromebook CM14 https://jp.store.asus.com/store/asusjp/ja_JP/pd/productID.5767035600/varProductID.5767035600/categoryID.4963963700
- Kryo 468 â Acer Chromebook Spin 513 https://www.acer.com/jp-ja/chromebooks/acer-chromebook-enterprise-spin-513-cp513-1h-cp513-1hl-r841lt-r841t/pdp/NX.HWZSJ.001
ã©ã¡ãã Cortex-A76ãã¾ãCortex-A76ããã¯N100ã®ã»ãã使ãããããªã
ãã¨èª¿ã¹ã¦ã¦ Android ã®ã·ã§ã¢ No1 㯠Mediatek ã«ãªã£ã¦ãã¨ããå¦ã³ããã£ãã
https://www.mediatek.jp/products/chromebook-tablets/tablets "ãããã¡ã¼ã«ã¼ããé¸ã°ãã MediaTek Android ã¿ãã¬ããã§æ¥ç 第ã"
2023
å¾åè²ã ãã£ãããªãã大å¤ã ã£ããååã¯ããè¨æ¶ã«ãªãã
ã¾ãã§ãè¯ãã£ãããªã人çæã ããããã¨ããããã§ã¯ãªãã§ããã
ã³ã³ãã¥ã¼ã¿ç¨èªã¨æ¥å¸¸çæ´»
éåä½å® ã®å±ä¸ã«ããæ°´éã¿ã³ã¯(ä»èª¿ã¹ã:貯水槽ã¨å¼ã¶ããã )ãè¦ããã³ã«æãã®ã ãã©ãããã¯ã³ã³ãã¥ã¼ã¿ç¥ããªã人ã¯ããã®æ¦å¿µãä½ã¨å¼ã¶ã®ã ãããã
éè¦ãçºçãããã¨ã«ãã³ããåããã¦ãã¨ç¬éæå¤§éè¦ãè³ããã ãã®å·¨å¤§ãªãã³ããå¿ è¦ã«ãªãããç¬éæå¤§éè¦ãå¿ è¦ãªæéã¯ãã¾ããªãã
ããã§ãå¹³åçãªè² è·ãè³ãããã³ããè¨ç½®ãã¦ããã¦ãããã使ã£ã¦æ°´ãå±ä¸ã«ä¸å®éèãã¦ãããéè¦ãå¢ããã貯水槽ããéåã使ã£ã¦æ°´ãæµãã¨ããããã«ãªã£ã¦ããã
ããã«ãã£ã¦ãå¹³åçãªè² è·ãè³ããã ãã®ãã³ãã§ãå
¨ä½å®
ã®éè¦ãè³ãæ°´éãå®ç¾ãã¦ããã
ãã®æ¦å¿µã¯ãã³ã³ãã¥ã¼ã¿ãã£ã¦ã人ã«ã¯ããæ°´ããããã¡ãªã³ã°ãã¦è² è·ãå¹³æ»åãã¦ããã¨è¨ãã°ãããªãã«ä¼ããã¨æããããã§ãªã人ã¯"ãããã¡ãªã³ã°"ãã©ãçè§£ãã¦ãããï¼
å鿝ã«ããããã¡ãªã³ã°ã®æ¦å¿µãçºæãã¦ããã ãããï¼ãããç¨åº¦èãããã¨ã§ãã¹ãã¤ã¯ãæ»ãã«ã§ãããã£ã¦ããã®ã£ã¦ã³ã³ãã¥ã¼ã¿ã®å¤ã«åºã¦ãä¸è¬çãªæ¦å¿µã ã¨æããããªãã¦è¨ã£ã¦ãããï¼
ä¼¼ããããªã®ã¯ã¼ã¡ã¼ã¡ãã£ã¦ããã¿ã¹ã¯ã®ä¾åé¢ä¿ãã¨ããããããããã£ã¦ã³ã³ãã¥ã¼ã¿ä»¥å¤ã®äººã«éããè¨èã ã£ãï¼ãã£ã¦ãªããã¡ã
ããã¥ã¼ãããã¨ãã¯ã¢ã¡ãªã«ã ã¨queue hereã¨ãæ¸ããã¦ãã®ã§éãããã
https://question.realestate.yahoo.co.jp/knowledge/chiebukuro/detail/1479764104/ ç¥ããªãã£ãã貯水槽ã¯å°ä¸ã«ããããã¡ããããããã
æè²¯æ°´æ§½ã«è ä¹±æ»ä½ãããäºä»¶ãã£ãããªâ¦ã¨æãåºãã¦èª¿ã¹ãã宿çã«ããäºä»¶ã£ã½ãã£ãã
åå°ç«ã¡éããããã¡ãªã³ã°ã¨ã¹ã«ã¼ããã
å®¶ã®åã®éããããããéè·¯æ¡å¼µç¨ã«ç¢ºä¿ãã¦ãã£ã¦ãæ©éãçµæ§åºãã®ã ãã©ããã£ã±ããªããªãç«ã¡éããªã人ãããã®ããããããåºã£ã±ã£ã¦ãå®¶ãããç¨åº¦ããã
確ä¿ãã¯ããã¦ãããããããããæ°åå¹´ãã£ã¦ãã¦ãæ©é確ä¿ãã¦ãã¨ããã®å»ºç©ãå ¨ç¶æ°ãããªããããããã®ãå½¹æã¯å¤§å¤ã ãªã¨æã£ã¦ããã©ããã°ããæ¯æ¥è¦ã¦ã¦æè¿ã¯ããã§ããªããããªãã¨æãã¯ãããã
大äºãªã®ã¯ãå½¹æã¨ç«ã¡éããªã人ãã©ã¡ããå ã«å¯¿å½ãããã§ããã£ã±å¤§ä½ã®å ´å人éã®å¯¿å½ã®ã»ããå ã«ãããããé½å¸è¨ç»ãªãã¦æ°åå¹´åä½ã§ããããã§ãç«ã¡éããªã人ã20å¹´ç«ã¡éããªãã®ãªãã¦ã巨大ãªè¨ç»ã®ä¸é¨ã«ãããªããªããæ°åå¹´ããã¦ã寿å½ãæ¥ã¦ãç¸ç¶ããåå«ãããã©ãã ããå½¹æã«å£²å´ãã¦ããã§çµããã
ç«ã¡éããªãã¦å·¥äºããã¾ãªããã¿ãããªäºè±¡ã£ã¦ãä¸çä¸ãã¡ãã¡ã«ããããã¦ãããååãããã¡ãªã³ã°ããã¦ãã¯ããªãã ããªã
ã¤ã¾ããå¼·å¶çã«ç«ã¡éããªãããããªãã¦ãã寿å½ãè¿ãã¦å£²å´ããã¨ãã人ã確ççã«çºçããããããååãªæ°çºçãã¦ã¦ãå·¥äºã¹ã«ã¼ãããã¨ãã¦ã¯ååã«åºãã¨ããç¶æ
ãªããããªããã
ãããæ¥ã«ç©æ¥µçã«ç«ã¡éã人ã大éã«åºããããã¨å·¥äºãéã«ãããªãã¦ãåå°ãå½¹æãç¡é§ã«ç¢ºä¿ãç¶ããªãã¨ãããªãã¦åºå®è³ç£ç¨å
¥ããªããªããããå½¹æã«ä¸å©ã¨ãããå¯è½æ§ãããã
Linuxã®å®è¡ç°å¢ã®isolationãããã¡ãã£ã¨ã¡ããã¨ããä»å¹´ã¯
ãã¾ã¾ã§pipå®è¡ãããã³ã«ããããã©ããã®setup.pyã«ä¸è¡ã§ãid_rsaã¨ãfirefoxã®profileãã¼ã¿ãã©ããã«ã¢ãããã¼ãããã³ã¼ãæ··ãã£ã¦ããçµããã ããªãã¨æã£ã¦ããã©ã
https://pytorch.org/blog/compromised-nightly-dependency/
ãããããããããã¨ãèµ·ãã£ã¦ããã®ã§ããªãã¨ã対å¿ããã»ããããã¨ããæ°æã¡ã«ãªã£ããä»å¹´ä¸ã«ä½¿ç¨æãæªåããªãç¯å²ã§ã©ãã¾ã§ã§ããããæ¢ãããã¨æãã¾ããã
- ãã©ã¦ã¶ãå¥UIDã§å®è¡ãã
firefoxã®ãã¼ã¿ã«èªç±ã«ã¢ã¯ã»ã¹ã§ãããMFAã¨ãæå³ãªããã ããªãâ¦
ãã©ã¦ã¶ã®ãã¼ã¿ãå¥ããã»ã¹ããèªã¿ããã¨ãããã©ã¦ã¶ã«ãã¤ãç¹ãããã¨ããããå ´åã¯ãªãã®ã§ãå¥ã¦ã¼ã¶ã«ãã¦ãisolationãã¹ãã¨ããæ°ãããã
firefoxã ãèµ·åã§ãã UID ãä½ã£ã¦ããã® UID ã§ firefox èµ·åã³ãã³ããåãã¦èµ·åãããã¼ã¢ã³ãå ¥ãã¦ããã¨ãããã
waylandã¯shmçµç±ã§ç»åãã¼ã¿ããã¨ãããã®ã§ããã©ã¦ã¶ã§ä»è¡¨ç¤ºãã¦ããã®ãå¥ããã»ã¹ããèªã¾ããã®ã ãåé¿ã§ããªãããã
- sudo éç¨ããªãã¨ããã
ç¥ããªãããã»ã¹ãåæã«sudoãããããªäºæ ãããã°ä»ã®å¯¾çãå ¨é¨ç¡é§ã«ãªãã®ã§ãããããç¥ãã¬ã¨ããã§sudoãéãã¿ãããªäºæ ã ãã¯çµ¶å¯¾é¿ããã
sudo æåã¯ã¿ã¼ããã«ãã¨ã«ãã¹ã¯ã¼ãè¦æ±ã«ããããã¹ã¯ã¼ãã§ã¯ãªãã¦Yubikeyãè¦æ±ããã¨ãããã¹ãï¼(yubikeyã¯å¿ ãã¿ããããªãã¨éããªãã®ã§)
sudo ãã㦠polkit ã¡ããã¨è¨å®æ¹æ³ãè¦ããã¹ãã¨ããæ°ãããããpolkitã§ãã¾ãéç¨ã§ããæ°ãããªãã®ã§ãããªãããã
- SELinux 使ãããã¡ããã¨è¦ãã¦å¦¥åã©ã¤ã³ãæ¢ã
pip ã¨ã cargo ã¨ãã§åã£ã¦ããã³ã¼ããå®è¡ããã¨ãã¯ã¡ããã¨isolateããç°å¢ã§å®è¡ãã¹ãã
ããã»ã¹ãã¨ã«ã¢ã¯ã»ã¹ã§ãããªã½ã¼ã¹ãå¶éã§ããã°ããã¦ãSELinuxã¡ããã¨è¦ããã°ã§ããã¯ããã
aurã§ã¤ã³ã¹ãã¼ã«ãããããªã®ã¯ã©ããããããã§ããï¼ã©ããããããã§ãããâ¦
- Yubikeyã®ä½¿ããããã¹ã¿ã¼ãã
è¨¼ææ¸ãéµã¨ããªãã¨ãããããã®ãã¡ããã¨çè§£ãã(ã¾ã ããã¾ãçè§£ãã¦ãªãã®ã§æ¸ãããã¨ã¯ãªã)
ssh ã yubikey ã«ãããããã§ id_rsa ã³ãã¼ãããå¿é ã¯ãªããªã
ä»ã®LUKSã¯fido2ã¨ã使ã£ã¦passphraseæ¶ãã¨äºåº¦ã¨è¨å®å¤ããããªããªãããããUIã¨ãããsystemd-cryptenrollã®åé¡ã§ã»ãã¨ã¯ãªãã¨ãã§ããã§ããã
亡ããªã£ãç¥äººå人ã夢ã«åºã
è¦éæã«è³å ã§æãåºãã¦ããããªã¢ã«æããã®ã§æãããæ°æã¡ã«ãªãã