ã¿ãªãããããã«ã¡ã¯ïŒ
æè¿ãã¯ã©ãŠããããªç£èŠãµãŒãã¹ã®äººæ°ãé«ãŸã£ãŠããããšã¯ããããåšç¥ã®äºå®ã§ãããã ãªããã®ãããªããšãèµ·ãããã¯æããã§ãããããªã¯ãéããã³ã³ãã³ãã§ããããã®ã¹ãã¬ãŒãžã«ã¯ã€ã³ãã©ã¹ãã©ã¯ãã£ãšå€§éã®ãã£ã¹ã¯ ã¹ãã¬ãŒãžãå¿ èŠã§ãã ãªã³ãã¬ãã¹ã®ãããªç£èŠã·ã¹ãã ã䜿çšããã«ã¯ãæ°çŸå°ã®ç£èŠã«ã¡ã©ã䜿çšããçµç¹ãšãè€æ°ã®ã«ã¡ã©ã䜿çšããå人ãŠãŒã¶ãŒã®äž¡æ¹ã®éçšãšãµããŒãã®ããã®è³éãå¿ èŠã§ãã
ã¯ã©ãŠããããªç£èŠã·ã¹ãã ã¯ã顧客ã«æ¢åã®ãããªã¹ãã¬ãŒãžãšåŠçã€ã³ãã©ã¹ãã©ã¯ãã£ãæäŸããããšã§ããã®åé¡ã解決ããŸãã ã¯ã©ãŠã ãããªç£èŠã¯ã©ã€ã¢ã³ãã¯ãã«ã¡ã©ãã€ã³ã¿ãŒãããã«æ¥ç¶ããã¯ã©ãŠã ã¢ã«ãŠã³ãã«ãªã³ã¯ããã ãã§æžã¿ãŸãã
ã«ã¡ã©ãã¯ã©ãŠãã«æ¥ç¶ããæè¡çãªæ¹æ³ã¯ããã€ããããŸãã ééããªããæã䟿å©ã§å®äŸ¡ãªæ¹æ³ã¯ããµãŒããŒãã¬ã³ãŒããŒãªã©ã®è¿œå æ©åšã䜿çšããã«ãã«ã¡ã©ãã¯ã©ãŠãã«çŽæ¥æ¥ç¶ããŠåäœãããããšã§ãã
ãããè¡ãã«ã¯ãã¯ã©ãŠããšé£æºãããœãããŠã§ã¢ ã¢ãžã¥ãŒã«ãã«ã¡ã©ã«ã€ã³ã¹ããŒã«ãããŠããå¿
èŠããããŸãã ãã ããå®äŸ¡ãªã«ã¡ã©ã«ã€ããŠèšãã°ãããŒããŠã§ã¢ ãªãœãŒã¹ãéåžžã«éãããŠãããã«ã¡ã© ãã³ããŒã®ãã€ãã£ã ãã¡ãŒã ãŠã§ã¢ã«ãã£ãŠã»ãŒ 100% å æãããŠãããã¯ã©ãŠã ãã©ã°ã€ã³ã«å¿
èŠãªãªãœãŒã¹ã¯ãããŸããã ivideon ã®éçºè
ããã®åé¡ãæäŸããŸãã
ç§ãã¡ã¯ãã®åé¡ãç¡äºã«è§£æ±ºããŸããã æ¹æ³ã«èå³ããããªã - ã«ãããžãããã
æŽå²ãå°ã
2016 幎ã«ãåœç€Ÿã¯ Rostelecom åãã®ã¯ã©ãŠã ãããªç£èŠãã©ãããã©ãŒã ã®éçºãéå§ããŸããã
ã«ã¡ã© ãœãããŠã§ã¢ã«é¢ããŠã¯ãæåã®æ®µéã§ããã®ãããªã¿ã¹ã¯ã®ãæšæºããã¹ã«åŸããŸãããç¬èªã®ãã©ã°ã€ã³ãéçºããŸãããããã¯ããã³ããŒã®ã«ã¡ã©ã®æšæºãã¡ãŒã ãŠã§ã¢ã«ã€ã³ã¹ããŒã«ãããã¯ã©ãŠãã§åäœããŸãã ãã ããèšèšäžã«æã軜éã§å¹ççãªãœãªã¥ãŒã·ã§ã³ã䜿çšããããšã¯æ³šç®ã«å€ããŸã (ããšãã°ãprotobufãlibevãmbedtls ã®ãã¬ãŒã³ãª C å®è£ ãããã³ boost ã®ãããªäŸ¿å©ã ãéãã©ã€ãã©ãªã¯å®å šã«æŸæ£ãããŸãã)ã
çŸåšãIP ã«ã¡ã©åžå Žã«ã¯æ±çšã®çµ±åãœãªã¥ãŒã·ã§ã³ã¯ãããŸãããåãã³ããŒã¯ããã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããç¬èªã®æ¹æ³ããã¡ãŒã ãŠã§ã¢ãæäœããããã®ç¬èªã® API ã»ãããããã³ç¬èªã®æŽæ°ã¡ã«ããºã ãæã£ãŠããŸãã
ããã¯ãåã«ã¡ã© ãã³ããŒãçµ±åãœãããŠã§ã¢ã®å æ¬çãªã¬ã€ã€ãŒãåå¥ã«éçºããå¿ èŠãããããšãæå³ããŸãã ãŸããéçºãéå§ããæç¹ã§ã¯ãããŒã ã®åŽåãã¯ã©ãŠããšé£æºããããã®ããžãã¯ã®éçºã«éäžãããããã«ã1 ã€ã®ãã³ããŒãšã®ã¿é£æºããããšããå§ãããŸãã
æåã«éžã°ãããã³ããŒã¯ãã«ã¡ã©åžå Žã®äžççãªãŒããŒã® XNUMX ã€ã§ãã Hikvision ã§ãååã«ææžåããã API ãšæèœãªãšã³ãžãã¢ãªã³ã°æè¡ãµããŒããæäŸããŠããŸãã
åœç€Ÿã¯ãHikvision ã«ã¡ã©ã䜿çšããæåã®ãã€ããã ãããžã§ã¯ããã¯ã©ãŠã ãããªç£èŠ Video Comfort ãéå§ããŸããã
ãªãªãŒã¹çŽåŸããŠãŒã¶ãŒã¯ä»ã®ã¡ãŒã«ãŒã®å®äŸ¡ãªã«ã¡ã©ããµãŒãã¹ã«æ¥ç¶ããå¯èœæ§ã«ã€ããŠè³ªåããå§ããŸããã
ç§ã¯ããã³ããŒããšã«çµ±åã¬ã€ã€ãŒãå®è£ ãããšãããªãã·ã§ã³ãããã«æåŠããŸãããæ¡åŒµæ§ãäœããã«ã¡ã© ããŒããŠã§ã¢ã«é倧ãªæè¡èŠä»¶ã課ãããã§ãã ãããã®å ¥åèŠä»¶ãæºããã«ã¡ã©ã®ã³ã¹ã: ~60 ïœ 70 ãã«
ããã§ãç§ã¯ããã«æ·±ãæãäžããŠãã©ã®ãã³ããŒã®ã«ã¡ã©ã§ã䜿çšã§ããç¬èªã®ãã¡ãŒã ãŠã§ã¢ãäœæããããšã«ããŸããã ãã®ã¢ãããŒãã«ãããã«ã¡ã©ã®ããŒããŠã§ã¢ ãªãœãŒã¹ã®èŠä»¶ãå€§å¹ ã«è»œæžãããŸãã ã¯ã©ãŠããæäœããããã®ã¬ã€ã€ãŒã¯ãã㪠ã¢ããªã±ãŒã·ã§ã³ãšããå¹æçã«çµ±åãããŠããããã¡ãŒã ãŠã§ã¢ã«ã¯äžèŠãªæªäœ¿çšã®èŠçŽ ããããŸããã
ãããŠéèŠãªã®ã¯ãã«ã¡ã©ãäœã¬ãã«ã§æäœããå Žåãäœé»å CPU ã«è¿œå ã®è² è·ãäžããããšãªãããŒã¿ãæå·åããããŒããŠã§ã¢ AES ã䜿çšã§ããããšã§ãã
ãã®ç¬éãç§ãã¡ã«ã¯äœããããŸããã§ããã äœããããŸããã
ã»ãšãã©ãã¹ãŠã®ãã³ããŒã¯ããã®ãããªäœãã¬ãã«ã§ç§ãã¡ãšååããæºåãã§ããŠããŸããã§ããã åè·¯ãã³ã³ããŒãã³ãã«é¢ããæ
å ±ã¯ãªãããããã»ããã®å
¬åŒ SDK ãã»ã³ãµãŒã®ããã¥ã¡ã³ãããããŸããã
æè¡ãµããŒãããããŸããã
ãã¹ãŠã®è³ªåã¯ããªããŒã¹ ãšã³ãžãã¢ãªã³ã°ãã€ãŸãè©Šè¡é¯èª€ã«ãã£ãŠçããå¿ èŠããããŸããã ããããç§ãã¡ã¯ãªããšããªããŸããã
ç§ãã¡ããã¹ãããæåã®ã«ã¡ã©ã¢ãã«ã¯ãXiaomi Yi AntsãHikvisionãDahuaãSpezvisionãD-Link ã«ã¡ã©ãããã³ããã€ãã®è¶ å®äŸ¡ãªç¡åäžåœè£œã«ã¡ã©ã§ããã
æ©åš
Hisilicon 3518E ãããã»ãããããŒã¹ã«ããã«ã¡ã©ã ã«ã¡ã©ã®ããŒããŠã§ã¢ç¹æ§ã¯æ¬¡ã®ãšããã§ãã
Xiaomi Yi Ants
NONAME
SoCã®
ãã€ã·ãªã³ã³ 3518E
ãã€ã·ãªã³ã³ 3518E
RAM
64MB
64MB
FLASH
16MB
8MB
ç¡ç·LAN
mt7601/bcm43143
-
ã»ã³ãµãŒ
ov9732 (720p)
ov9712 (720p)
ã€ãŒãµããã
-
+
MicroSD
+
+
ãã€ã¯
+
+
ã¹ããŒã«ãŒ
+
+
IRLED
+
+
IRã«ãã
+
+
ç§ãã¡ã¯åœŒãããå§ããŸããã
çŸåšãHisilicon 3516/3518 ãããã»ãããš Ambarella S2L/S2LM ããµããŒãããŠããŸãã ã«ã¡ã©ã®ã¢ãã«ã¯æ°åãããŸãã
ãã¡ãŒã ãŠã§ã¢æ§æ
æœæ°ŽèŠ
uboot ã¯ããŒã ããŒããŒã§ãããé»æºæå ¥åŸã«æåã«èµ·åããããŒããŠã§ã¢ãåæåããLinux ã«ãŒãã«ãããŒãããŸãã
ã«ã¡ã©ã®èªã¿èŸŒã¿ã¹ã¯ãªããã¯éåžžã«ç°¡åã§ãã
bootargs=mem=38M console=ttyAMA0,115200 rootfstype=ramfs mtdparts=hi_sfc:256K(boot),64K(tech),4096K(kernel),8192K(app),-(config) hw_type=101
bootcmd=sf probe 0; sf read 0x82000000 0x50000 0x400000; bootm 0x82000000; setenv bootargs $(bootargs) bkp=1; sf read 0x82000000 0x450000 0x400000; bootm 0x82000000
ç¹åŸŽã®XNUMXã€ã¯XNUMXååŒã³åºãããããšã§ãã bootm
ãããã«ã€ããŠã¯ãå°ãåŸã§ãæŽæ°ãµãã·ã¹ãã ã«å°éãããšãã«è©³ãã説æããŸãã
ã©ã€ã³ã«æ³šç® mem=38M
ã ã¯ããã¯ããããã¯ã¿ã€ããã¹ã§ã¯ãããŸãããLinux ã«ãŒãã«ãšãã¹ãŠã®ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã¯ã38 ã¡ã¬ãã€ãã® RAM ã«ããã¢ã¯ã»ã¹ã§ããŸããã
ãŸããuboot ã®é£ã«ã¯ããšåŒã°ããç¹å¥ãªãããã¯ããããŸãã reg_info
ãããã«ã¯ãDDR ãš SoC ã®ããã€ãã®ã·ã¹ãã ã¬ãžã¹ã¿ãåæåããããã®äœã¬ãã« ã¹ã¯ãªãããå«ãŸããŠããŸãã ã³ã³ãã³ã reg_info
ã«ã¡ã©ã®ã¢ãã«ã«ãã£ãŠç°ãªããŸãããããæ£ãããªãå Žåãã«ã¡ã©ã¯ uboot ãããŒãããããšããã§ãããããŒãã®éåžžã«åæã®æ®µéã§ããªãŒãºããŸãã
æåããã³ããŒã®ãµããŒããåããã«äœæ¥ããŠãããšãã¯ããã®ãããã¯ãå ã®ã«ã¡ã©ã®ãã¡ãŒã ãŠã§ã¢ããã³ããŒããã ãã§ããã
Linux ã«ãŒãã«ãš rootfs
ã«ã¡ã©ã¯ããããã® SDK ã®äžéšã§ãã Linux ã«ãŒãã«ã䜿çšããŸããéåžžãããã㯠3.x ãã©ã³ãã®ææ°ã«ãŒãã«ã§ã¯ãªããããå€ãã®å Žåãè¿œå æ©åšã®ãã©ã€ããŒã䜿çšãããŠããã«ãŒãã«ãšäºææ§ããªããšããäºå®ã«å¯ŸåŠããå¿ èŠããããŸãããããŠãããããã«ãŒãã«ã«ã¡ã©ã«ããã¯ããŒãããå¿ èŠããããŸãã
ãã 8 ã€ã®åé¡ã¯ãã«ãŒãã«ã®ãµã€ãºã§ãã FLASH ãµã€ãºãããã XNUMXMB ã®å Žåããã¹ãŠã®ãã€ããéèŠã«ãªãããããµã€ãºãæå°éã«æããããã«ãæªäœ¿çšã®ã«ãŒãã«æ©èœããã¹ãŠæ éã«ç¡å¹ã«ããããšãã¿ã¹ã¯ãšãªããŸãã
Rootfs ã¯åºæ¬çãªãã¡ã€ã« ã·ã¹ãã ã§ãã ããã«ã¯ä»¥äžãå«ãŸããŸã busybox
ãWi-Fi ã¢ãžã¥ãŒã« ãã©ã€ããŒãæšæºã·ã¹ãã ã©ã€ãã©ãªã®ã»ããããªã© libld
О libc
ãLED å¶åŸ¡ããžãã¯ããããã¯ãŒã¯æ¥ç¶ç®¡çããã¡ãŒã ãŠã§ã¢ã®æŽæ°ãæ
åœãããœãããŠã§ã¢ãå«ãŸããŸãã
ã«ãŒã ãã¡ã€ã« ã·ã¹ãã 㯠initramfs ãšããŠã«ãŒãã«ã«æ¥ç¶ãããŠããããã«ãã®çµæãšã㊠XNUMX ã€ã®ãã¡ã€ã«ãååŸããŸãã uImage
ãããã«ã¯ã«ãŒãã«ãš rootfs ã®äž¡æ¹ãå«ãŸããŸãã
ãããªã¢ããªã±ãŒã·ã§ã³
ãã¡ãŒã ãŠã§ã¢ã®æãè€éã§ãªãœãŒã¹ã倧éã«æ¶è²»ããéšåã¯ã¢ããªã±ãŒã·ã§ã³ã§ããã¢ããªã±ãŒã·ã§ã³ã¯ããããª/ãªãŒãã£ãª ãã£ããã£ããã㪠ãšã³ã³ãŒãã£ã³ã°ãæäŸããç»åãã©ã¡ãŒã¿ãæ§æããã¢ãŒã·ã§ã³æ€åºåšããµãŠã³ãæ€åºåšãªã©ã®ãããªåæãå®è£ ããPTZ ãå¶åŸ¡ããææ¥ãšæå»ã®åãæ¿ããæ åœããŸãããã€ãã¢ãŒãã
éèŠãªãéµãšãªãæ©èœãšããèšããã®ã¯ããã㪠ã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãŠã ãã©ã°ã€ã³ãšã©ã®ããã«å¯Ÿè©±ãããã§ãã
åŸæ¥ã®ãœãªã¥ãŒã·ã§ã³ããã³ã㌠ãã¡ãŒã ãŠã§ã¢ + ã¯ã©ãŠã ãã©ã°ã€ã³ãã§ã¯ãå®äŸ¡ãªããŒããŠã§ã¢ã§ã¯åäœãããã«ã¡ã©å ã®ãããªã¯ RTSP ãããã³ã«çµç±ã§éä¿¡ãããŸããããã¯ããœã±ããçµç±ã§ã®ããŒã¿ã®ã³ããŒãšéä¿¡ãäžå¿ èŠãªã·ã¹ãã ã³ãŒã«ãªã©ãèšå€§ãªãªãŒããŒãããã«ãªããŸãã
ããã§ã¯å ±æã¡ã¢ãª ã¡ã«ããºã ã䜿çšããŸãããããªã¯ãã«ã¡ã© ãœãããŠã§ã¢ ã³ã³ããŒãã³ãéã®ãœã±ãããä»ããŠã³ããŒãŸãã¯éä¿¡ãããŸãããããã«ãããã«ã¡ã©ã®æ§ãããªããŒããŠã§ã¢æ©èœãæé©ãã€æ éã«äœ¿çšãããŸãã
ãµãã·ã¹ãã ã®æŽæ°
ç¹å¥ãªèªãã¯ããªã³ã©ã€ã³ ãã¡ãŒã ãŠã§ã¢ ã¢ããããŒãçšã®ãã©ãŒã«ã ãã¬ã©ã³ã ãµãã·ã¹ãã ã§ãã
åé¡ã説æããŸãããã ãã¡ãŒã ãŠã§ã¢ã®æŽæ°ã¯æè¡çã«ã¯ã¢ãããã¯ãªæäœã§ã¯ãªããæŽæ°ã®éäžã§åé»ãçºçããå Žåããã©ãã·ã¥ ã¡ã¢ãªã«ã¯ãäžæžãããããæ°ãããã¡ãŒã ãŠã§ã¢ã®äžéšãå«ãŸããããšã«ãªããŸãã ç¹å¥ãªæªçœ®ãè¬ããªããšãã«ã¡ã©ã¯ãµãŒãã¹ã»ã³ã¿ãŒã«æã¡èŸŒãŸãªããã°ãªããªããã¬ã³ã¬ãã«ãªã£ãŠããŸããŸãã
ç§ãã¡ããã®åé¡ã«å¯ŸåŠããŸããã ã¢ããããŒãäžã«ã«ã¡ã©ã®é»æºããªãã«ãªã£ãå Žåã§ãããŠãŒã¶ãŒã®ä»å ¥ãªãã«èªåçã«ãã¡ãŒã ãŠã§ã¢ãã¯ã©ãŠãããããŠã³ããŒããããåäœã埩å ãããŸãã
ãã®ãã¯ããã¯ãããã«è©³ããèŠãŠã¿ãŸãããã
æãè匱ãªç¹ã¯ãLinux ã«ãŒãã«ãšã«ãŒã ãã¡ã€ã« ã·ã¹ãã ã§ããŒãã£ã·ã§ã³ãäžæžãããããšã§ãã ãããã®ã³ã³ããŒãã³ãã®ãããããç Žæãããšãã«ã¡ã©ã¯ uboot ããŒãããŒããŒãè¶ ããŠãŸã£ããèµ·åããªããªããã¯ã©ãŠããããã¡ãŒã ãŠã§ã¢ãããŠã³ããŒãã§ããªããªããŸãã
ããã¯ãæŽæ°ããã»ã¹äžãã€ã§ããã«ã¡ã©ã«åäœããã«ãŒãã«ãš rootfs ãããããšã確èªããå¿ èŠãããããšãæå³ããŸãã æãç°¡åãªè§£æ±ºçã¯ãrootfs ãå«ãã«ãŒãã«ã® XNUMX ã€ã®ã³ããŒããã©ãã·ã¥ ã¡ã¢ãªã«åžžã«ä¿åããã¡ã€ã³ ã«ãŒãã«ãç Žæããå Žåã¯ããã¯ã¢ãã ã³ããŒããããŒãããããšã ãšæãããŸãã
è¯ã解決çã§ãããrootfs ã䜿çšããã«ãŒãã«ã¯çŽ 3.5MB ãå æããæ°žç¶ããã¯ã¢ããã«ã¯ 3.5MB ãå²ãåœãŠãå¿ èŠããããŸãã æãå®äŸ¡ãªã«ã¡ã©ã«ã¯ãããã¯ã¢ãã ã«ãŒãã«çšã®ç©ºãã¹ããŒã¹ãããŸããããŸããã
ãããã£ãŠããã¡ãŒã ãŠã§ã¢ã®æŽæ°äžã«ã«ãŒãã«ãããã¯ã¢ããããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ ããŒãã£ã·ã§ã³ã䜿çšããŸãã
ã«ãŒãã«ã§ç®çã®ããŒãã£ã·ã§ã³ãéžæããã«ã¯ãXNUMX ã€ã®ã³ãã³ãã䜿çšããŸãã bootm
uboot ã§ã¯ãæåã«ã¡ã€ã³ ã«ãŒãã«ãããŒãããããšããŸããããããç ŽæããŠããå Žåã¯ãããã¯ã¢ãã ã«ãŒãã«ãããŒãããŸãã
ããã«ããããã€ã§ãã«ã¡ã©ã« rootfs ãåããæ£ããã«ãŒãã«ã確ä¿ããããã¡ãŒã ãŠã§ã¢ãèµ·åããŠåŸ©å ã§ããããã«ãªããŸãã
ãã¡ãŒã ãŠã§ã¢ãæ§ç¯ããã³å±éããããã® CI/CD ã·ã¹ãã
ãã¡ãŒã ãŠã§ã¢ã®æ§ç¯ã«ã¯ããµããŒããããŠãããã¹ãŠã®ã«ã¡ã© ã¢ãã«ã®ãã¡ãŒã ãŠã§ã¢ãèªåçã«æ§ç¯ãã gitlab CI ã䜿çšããŸãããã¡ãŒã ãŠã§ã¢ã®æ§ç¯åŸãã«ã¡ã© ãœãããŠã§ã¢ ã¢ããããŒã ãµãŒãã¹ã«èªåçã«å±éãããŸãã
ãã®ãµãŒãã¹ããããã¡ãŒã ãŠã§ã¢ã®ã¢ããããŒãã QA ãã¹ã ã«ã¡ã©ã«é ä¿¡ããããã¹ãŠã®ãã¹ã段éãå®äºãããšãŠãŒã¶ãŒã®ã«ã¡ã©ã«é ä¿¡ãããŸãã
æ å ±ã»ãã¥ãªãã£
çŸåšãæ å ±ã»ãã¥ãªãã£ãã«ã¡ã©ãå«ããããã IoT ããã€ã¹ã«ãšã£ãŠæãéèŠãªåŽé¢ã§ããããšã¯åšç¥ã®äºå®ã§ãã Mirai ã®ãããªãããããããã€ã³ã¿ãŒãããäžãåŸåŸãããã³ããŒã®æšæºãã¡ãŒã ãŠã§ã¢ãæèŒããäœçŸäžå°ãã®ã«ã¡ã©ã«ææããŠããŸãã ã«ã¡ã© ãã³ããŒã«æ¬æãè¡šããæšæºãã¡ãŒã ãŠã§ã¢ã«ã¯ã¯ã©ãŠãã§ã®äœæ¥ã«å¿ èŠã®ãªãæ©èœãå€æ°å«ãŸããŠãããã®ã®ããããããããæªçšããå€ãã®è匱æ§ãå«ãŸããŠããããšãææããããåŸãŸããã
ãããã£ãŠããã¡ãŒã ãŠã§ã¢ã®æªäœ¿çšã®æ©èœã¯ãã¹ãŠç¡å¹ã«ãªãããã¹ãŠã® tcp/udp ããŒããéãããããã¡ãŒã ãŠã§ã¢ãæŽæ°ãããšãã«ãœãããŠã§ã¢ã®ããžã¿ã«çœ²åããã§ãã¯ãããŸãã
ããã«å ããŠããã¡ãŒã ãŠã§ã¢ã¯æ å ±ã»ãã¥ãªãã£ç 究æã§å®æçã«ãã¹ããããŸãã
ãŸãšã
çŸåšãåœç€Ÿã®ãã¡ãŒã ãŠã§ã¢ã¯ãããªç£èŠãããžã§ã¯ãã§ç©æ¥µçã«äœ¿çšãããŠããŸãã ãããããããã®æ倧ã®ãã®ã¯ããã·ã¢é£éŠå€§çµ±é éžæåœæ¥ã®æ祚ã®æŸéã§ãã
ãã®ãããžã§ã¯ãã«ã¯ãåœç€Ÿã®ãã¡ãŒã ãŠã§ã¢ãæèŒãã 70 äžå°ä»¥äžã®ã«ã¡ã©ãé¢äžããæãåœã®æ祚æã«èšçœ®ãããŸããã
å€ãã®è€éãªããããŠäžéšã®å Žæã§ã¯åœæã§ããã»ãšãã©äžå¯èœã ã£ãåé¡ã解決ã§ããã®ã§ãç§ãã¡ã¯ãšã³ãžãã¢ãšããŠãã¡ãã倧ããªæºè¶³ãåŸãŸããããããã«å ããŠãã«ã¡ã©ã®è³Œå ¥ã«ãããäœçŸäžãã«ãç¯çŽã§ããŸããã ãããŠãã®å Žåãç¯çŽã¯åãªãèšèãçè«çãªèšç®ã§ã¯ãªãããã§ã«å®äºããèšåè³Œå ¥ã®å ¥æã®çµæã§ãã ãããã£ãŠãã¯ã©ãŠããããªç£èŠã«ã€ããŠè©±ãå ŽåãXNUMX ã€ã®ã¢ãããŒãããããŸããXNUMX ã€ã¯äœã¬ãã«ã®å°éç¥èãšéçºã«æŠç¥çã«äŸåããçµæãšããŠæ©åšãå€§å¹ ã«ç¯çŽããæ¹æ³ããŸãã¯é«äŸ¡ãªæ©åšã䜿çšããæ¹æ³ã§ãããç¹ã«æ¶è²»è ã®ç¹æ§ã«çç®ãããšãå®éã«ã¯äœ¿çšããå¿ èŠã¯ãããŸããã䌌ããããªå®äŸ¡ãªãã®ãšã¯ç°ãªããŸãã
ã§ããã ãæ©ãçµ±åã¢ãããŒãã®éžæã決å®ããããšãæŠç¥çã«éèŠãªã®ã¯ãªãã§ãã? ãã©ã°ã€ã³ãéçºãããšããéçºè ã¯ç¹å®ã®ãã¯ãããžãŒ (ã©ã€ãã©ãªããããã³ã«ãæšæº) ã«äŸåããŸãã ãããŠãé«äŸ¡ãªæ©åšã«å¯ŸããŠã®ã¿äžé£ã®ãã¯ãããžãŒãéžæãããŠããå Žåãå°æ¥çã«ã¯å®äŸ¡ãªã«ã¡ã©ã«åãæ¿ããããšãããšãå°ãªããšãéåžžã«é·ãæéãããããã倱æããŠé«äŸ¡ãªæ©åšã«æ»ãå¯èœæ§ãé«ããªããŸãã
åºæïŒ habr.com