æ¬æ¥ãæ°èŠå
¥äŒåä»ãéå§ããŸãã
ç§ã®ååã¯ãŠãªã¢ã»ã»ã¬ãã£ããã§ãããã®èšäºã¯ã»ã«ã²ã€ã»ã«ã¶ã³ããšäžç·ã«æžããŸããã ç§ãã¡ã¯äºäººãšããYandex ã®ãã³ã¹ã¯ ãªãã£ã¹ã®ã€ã³ã¿ãŒãã§ãŒã¹éçºè ã§ãããSRI ãå幎ã«åæ¥ããŸããã
ã¢ã¹ã¯ã¯ã§ã®ç»é²éå§ãæ©ã«ãç§ãã¡ã¯ãããã³ã¹ã¯ã«ãã以åã®åŠæ ¡ãžã®å°å
¥èª²é¡ã®åæãå
¬éããŸãã
SRI ã®å²ãåœãŠã®æŽå²ããã©ããšãããã°ã©ããŒã«ãšã£ãŠ XNUMX ã€ã®éèŠãªã¹ãã«ãæ¯å¹Žãã¹ããããŠããŸããã
- ã¬ã€ã¢ãŠãã ãã¹ãŠã®éçºè ã¯ã¬ã€ã¢ãŠããå®è¡ã§ããå¿ èŠããããŸãã ããŒã å šäœã®ãã¶ã€ã³ãæ åœããã»ãªã§ãŒã¶ãããããããããã§ã¯ãªããããªãã¯èæ¬ãæžãã ãã§ãã ãããã£ãŠããã¹ãŠã®çåŸã¯æ€åã®æ¹æ³ãã©ã®ããã«ç¥ã£ãŠãããã瀺ããªããã°ãªããŸããã
- JavaScriptã åé¡ãã¬ã€ã¢ãŠãã«éå®ãããŠããå Žåã¯ãã€ã³ã¿ãŒãã§ã€ã¹éçºåŠéšã§ã¯ãªããã¬ã€ã¢ãŠããã¶ã€ããŒåŠéšãååšããããšã«ãªããŸãã çŸãããã¶ã€ã³ãããã€ã³ã¿ãŒãã§ã€ã¹ã埩掻ãããå¿ èŠããããŸãã ãããã£ãŠãJS ã®ã¿ã¹ã¯ã¯åžžã«ååšããŸãããã¢ã«ãŽãªãºã ã®ã¿ã¹ã¯ã§ããå ŽåããããŸããç§ãã¡ã¯ã¢ã«ãŽãªãºã ããšãŠãæããŠããŸãã
- åé¡è§£æ±ºã¯ããããéçºè ã«ãšã£ãŠæãéèŠãªã¹ãã«ã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ã®äœæã«é¢ããŠã¯ãç¶æ³ã¯éåžžã«æ¥éã«å€åããŠããŸãã ããã¯ã«ã€ã¹ã»ãã£ãã«ã®ãããªãã®ã§ãããåãå Žæã«çãŸãããã«ã¯ã§ããã ãæ©ãèµ°ããªããã°ãªããŸããããå¥ã®å Žæã«è¡ãã«ã¯XNUMXåã®é床ã§èµ°ããªããã°ãªããŸãããã ç§ãã¡ã¯æ¯æ¥æ°ãããã¯ãããžãŒã«ééããŸããç§ãã¡ã¯ããããèæ ®ããç解ããå¿ èŠããããŸãã ãããã£ãŠãXNUMX çªç®ã®ã¿ã¹ã¯ã§ã¯ãåå¿è ã®éçºè ãé垞銎æã¿ã®ãªããã¯ãããžãç解ããããšãææ¡ããŸããã
åã¿ã¹ã¯ã®åæã§ã¯ãæ£ããæé ã ãã§ãªããããããééãã«ã€ããŠã説æããŸãã
ã¿ã¹ã¯ 1: ããŒããã©ãªãª
æåã®ã¿ã¹ã¯ã¯ãã¬ã€ã¢ãŠãã®ããæ¹ã«è©³ãã Yandex.Collections ãã¶ã€ããŒã® Alexey Cherenkevich ãšã圌ã®ãµãŒãã¹ååã§ããã€ã³ã¿ãŒãã§ã€ã¹éçºè ã® Sergey Samsonov ã«ãã£ãŠåãçµã¿ãŸããã
ç¶æ
ããŒããã©ãªãª Web ãµã€ããäœæããŸããããªãèªèº«ãããªãã®ä»äºããããŠåŠæ ¡ãžã®æåŸ ã«ã€ããŠæããŠãã ããã ãµã€ãã¯ãææ¡ãããã¬ã€ã¢ãŠãã«å¯èœãªéã察å¿ããå¿ èŠããããŸã (ã¬ã€ã¢ãŠããžã®ãªã³ã¯:
1000px ,600px ,320px ,ä»æ§ ïŒã ã¬ã€ã¢ãŠãã®ã¿ãç®çãªã®ã§ãJavaScript ã¯äœ¿çšããªãã§ãã ããããã§ãã¯ããéã«ã¯ã次ã®ç¹ãèæ ®ãããŸãã
- ã€ã³ãã³ãã®ãµã€ãºãè²ã®æ£ç¢ºãããã©ã³ã ã¹ã¿ã€ã«ããã©ã³ã ãµã€ãºã
- ã»ãã³ãã£ãã¯ã¬ã€ã¢ãŠãã
- èŠçŽ ã®ããŸããŸãªç¶æ ã®ååš: ã«ãŒãœã«ã眮ãããšãã®ãã¿ã³ãšãªã³ã¯ã®è¡šç€ºãã¢ã¯ãã£ããªå ¥åãã£ãŒã«ãã®åŒ·èª¿è¡šç€ºãªã©ã
- ãã©ãŠã¶éã®äºææ§ (äžè¬çãªãã©ãŠã¶ã®ææ°ããŒãžã§ã³ã§ãã¹ãæžã¿)ã
å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- ææ°ã® CSS ãœãªã¥ãŒã·ã§ã³ã®äœ¿çš: ãã¬ãã¯ã¹ããã¯ã¹ãã°ãªãããªã©ã
- ã¢ãããã£ãã¬ã€ã¢ãŠãã
- ããªããã»ããµããã³ïŒãŸãã¯ïŒãã¹ãããã»ããµã®äœ¿çšãåºåã³ãŒãã®ã¢ã»ã³ããªãçž®å°åãæé©åã
- HTML ãã©ãŒã æ€èšŒãæ§åŒåããããã¡ã€ã«ã®ã¢ããããŒã ãã¿ã³ã
ãã®ã¿ã¹ã¯ã¯éåžžã«éãå€ããããããŸããããªããã®ã¯ã¹ãããããŠãåé¡ãããŸããã ããã«ããã¹ã³ã¢ã¯ãããã«äžãããŸãããããã§ãç¥èã蚌æããããšãã§ããŸãã å®äºããããããŒããã©ãªãªãš GitHub äžã®ãœãŒã¹ ã³ãŒããžã® XNUMX ã€ã®ãªã³ã¯ãéä¿¡ããŠãã ããã
課é¡ã§ææ¡ãããã¬ã€ã¢ãŠãã¯ãã¢ãã€ã«ããã€ã¹ãã¿ãã¬ããããã¹ã¯ãããã®ç»é¢ã ãã§ãªããå®éã®ä»æ§ãå«ãŸããŠããŸããã
æåã®ã¿ã¹ã¯ã®ãã§ãã¯çµæã«ã§ããã ã客芳æ§ãããããããã«ããã®ãã§ãã¯ã«ã¯å€ãã®åºæºããããŸããã
åºæº
ãã¶ã€ã³ããããŠã§ããµã€ãã ããã¯æãããªããšã®ããã§ãããäžéšã®ãããã¯ãå®å šã«ã¹ããããã人ãããŸãããæéãç¯çŽãããã£ãããå®è¡ã§ããªãã£ããã®ã©ã¡ããã§ãã ã¬ã€ã¢ãŠãã¯å€§ãã XNUMX ã€ã®ã¡ã€ã³ç»é¢ã«åããããšãã§ããŸããã¢ãã¿ãŒã衚瀺ãããã¡ã€ã³ç»é¢ãSRI ããã®æåŸ ãªã¹ãã衚瀺ããããããã¯ãããŒããã©ãªãªã衚瀺ããããããã¯ãé£çµ¡å æ å ±ã衚瀺ããããããã¯ã§ãã ãããã¯ã»ã¯ã·ã§ã³ã§äœæããããšããåçŽã« div ã䜿çšããŠäœæããããšãã§ããŸããéèŠãªã®ã¯ãXNUMX ã€ã®ãããã¯ãã¹ãŠãå©çšå¯èœã§ããããšã§ãã
ã¬ã€ã¢ãŠããšã¬ã€ã¢ãŠãã®æºæ ã ãã¶ã€ããŒã¯ãåè£è ãç解ããããããã«ãå¥ã®ä»æ§ (è²ãã¿ã€ãã°ã©ãã£ããã¿ã³ã®ç¶æ ãªã©ãå«ã) ãäœæããŸããã äžçªäžã«ã¯ãæåã®ç»é¢ã®ã€ã³ãã³ããšæ©èœã«é¢ãããã³ãããããŸããã ãã¶ã€ããŒã®èŠæããã¹ãŠèæ ®ã«å ¥ããŠããã人ãã¡ã«ãšãŠãæºè¶³ããŸãããããšãã°ãæåã®ç»é¢ã¯ãã¥ãŒããŒãã®é«ã以äžã§ãªããã°ãªããŸããã§ããã
ã¢ãããã£ãã¬ã€ã¢ãŠã - ããã¯ãã€ã³ã¿ãŒãã§ã€ã¹ãåã«ã¬ã€ã¢ãŠããããŠãããã1920 ã€ã®è§£å床ã§ãã¹ãŠããã¯ã»ã«åäœã§ã¬ã€ã¢ãŠããããŠããå Žåã§ãã äžéç¶æ ã§ããã¬ã€ã¢ãŠãã厩ããŠã¯ãããŸããã ã³ã³ããã®æå€§å¹ ãå¶éããã®ãå¿ããŠãã¹ãŠã XNUMX ãã¯ã»ã«ã«èšå®ãã人ãããã°ãèæ¯ããã¡ããã¡ãã«ããŠããŸã人ãããŸããããå šäœãšããŠåè£è ã¯ãã®ã¿ã¹ã¯ã«ããŸã察åŠããŸããã
ã»ãã³ãã£ãã¯ã¬ã€ã¢ãŠãã ãªã³ã¯ã¯ããã¿ã³ã¯ ãšããŠãã¶ã€ã³ãããã¹ãã ãšãã圌ãã¯äœåºŠäžçã«äŒããããšã§ãããã ã 幞ããªããšã«ãã»ãšãã©ã®åè£è ã¯ãã®èŠä»¶ãæºãããŠããŸããã SRI ãæåŸ ããŠãã div ã¿ã°ã䜿çšããé衚瀺ãªã¹ãã誰ããèªèããããã§ã¯ãããŸããããããã»ã©æªãããšã§ã¯ãããŸããã å¿ èŠãªå Žæãšäžå¿ èŠãªå Žæã«ã圌ãç¥ã£ãŠãããã¹ãŠã®æå³ã¿ã°ãæ¿å ¥ããåè£è ãããŸããã ããšãã°ããªã¹ãã®ä»£ããã« -ãš ã䜿çšããŸãã çµå±ã®ãšãããã»ãã³ãã£ã¯ã¹ - ããŒãžã®æ§æãšåãããã¯ã®ç®ç (倧å€æ°ã¯ããã§ç®¡çããŸãã) ãšãããªããã»ããµããã³/ãŸãã¯ãã¹ãããã»ããµã®äœ¿çš (ããã§ç®¡çããŠãã人ã¯å°æ°ã§ããããããã¯ãã€ã³ãã«ãå«ãŸããŠããŸãã - ã»ãšãã©ã®å Žåã䜿çšéã¯å°ãªããscssïŒã
äœæ¥ã¹ã©ã€ããŒã 課é¡ã§ã¯JSã¯äœ¿ããªããšæžããŸããã ããã§ã¯åé¡ã解決ããèœåããã¹ããããŸãã - æã䜿ã£ãŠã¹ã©ã€ããŒãäœãããšãã§ããŸãããããŠã ãã¹ãŠã®éæ³ã¯ã»ã¬ã¯ã¿ãŒ ã¬ãã« #button-N:checked ~ .slider-inner .slider-slides ã§çºçããŸãã å
¥åãã§ãã¯ããã¯ã¹ã® 33 ã€ãã¯ãªãã¯ãããšããã§ãã¯ãããç¶æ
ã«ãªããŸãã ãããå©çšããŠãå¿
èŠãªç¿»èš³ãã¹ã©ã€ãã®ããã³ã³ããã«å²ãåœãŠãããšãã§ããŸã:transform:translate(-XNUMX%)ã ã¹ã©ã€ããŒã®å®è£
ã確èªã§ããŸã
ããããããŠã³ãªã¹ãã ããã§ããã¹ãŠãçµãããŸããããã³åæ§ã®ã»ã¬ã¯ã¿ãŒ: .accordion-item input:checked ~ .accordion-item__contentã å®è£
ãèŠãããŸã
:hoverã:activeãããã³ :focu* ç¶æ ã®å©çšå¯èœæ§ã éåžžã«éèŠãªç¹ã§ãã ã€ã³ã¿ãŒãã§ã€ã¹ãšã®å¯Ÿè©±äžã®å¿«é©ãã¯ããã«äŸåããŠããŸããã ãŠãŒã¶ãŒã¯èªåã®è¡åã«é¢ãããã£ãŒãããã¯ãåžžã«åãââåãå¿ èŠããããŸãã ãã®é ç®ã¯ãã¢ã³ã±ãŒããšã®ããåããéããŠãã§ãã¯ãããŸããã [é»è©±ããŠãã ãã] ãã¿ã³ãã¯ãªãã¯ããŠã (ãªã¯ãšã¹ããéä¿¡ãããã«ãããããã) èŠãç®ã«ã¯äœãèµ·ãããªãã£ãå Žåã¯ãäœåºŠãã¯ãªãã¯ããããšã«ãªããããããã¯ãããããŸããã ãã®çµæãXNUMX 件ã®ãªã¯ãšã¹ããéä¿¡ãããXNUMX åã³ãŒã«ããã¯ãããããšã«ãªããŸãã ã¢ãã€ã« ããã€ã¹ã«ã¯ããŠã¹ããªãããšãå¿ããŠã¯ãªããŸãããã€ãŸãããããŒããã£ãŠã¯ãªããŸããã ãããŠãã XNUMX ã€ã®ç¹ã¯ãæå³è«ã«é¢ããç¹ãæºããã人ã«ã¯åœ±é¿ããŸããã§ããã ã³ã³ãããŒã«ãã€ã³ã¿ã©ã¯ãã£ãèŠçŽ ã§ã¯ãªãå Žåããã®äžã«ããŠã¹ã移åãããšãã«ãŒãœã«ã¯æšæºã®ãŸãŸã«ãªããŸãã ãããŒãžã®ãªã¢ã¯ã·ã§ã³ãæžãããšããŠããéåžžã«ä¹±éã«èŠããŸãã ã«ãŒãœã«ãã€ãŸããã€ã³ã¿ãŒãéå°è©äŸ¡ããªãã§ãã ããã
ã¢ãã¡ãŒã·ã§ã³ã èŠçŽ ã§èµ·ãããã¹ãŠã®åå¿ãã¹ã ãŒãºã§ããããšãéèŠã§ãã 人çã«ãããŠç¬éçãªãã®ã¯äœäžã€ãããŸããããã®ããããããŒæãã¢ã¯ãã£ãæã®ãã©ã³ãžã·ã§ã³ãããã ãã§ãã€ã³ã¿ãŒãã§ãŒã¹ãããå¿«é©ãªãã®ã«ããã®ã«ååã§ããã ãŸããã¹ã©ã€ããŒãšãªã¹ããã¢ãã¡ãŒã·ã§ã³åãã人ã¯æŠããŠçŽ æŽãããã§ãã
ææ°ã®ãã¯ãããžãŒã䜿çšããŠã å€ãã®äººã flex ã䜿çšããŠããŸããããgrid ã䜿çšããŠã¿ã¹ã¯ãå®äºãã人ã¯ããŸããã§ããã ãã¬ãã¯ã¹ãæ£ãã䜿çšãããŠããã°ãã€ã³ããã«ãŠã³ããããŸãã ãããã®éåžžã«æè»ãªããã«ã¬ã€ã¢ãŠããã©ããã§åŽ©ããå Žåãæ®å¿µãªãããè¿œå ã®ãã€ã³ãã¯åŸãããŸããã
ãã©ãŒã ã®æ€èšŒã å¿ èŠãªã®ã¯ããã©ãŒã ã®åå ¥åã«å¿ é ã®å±æ§ãè¿œå ããããšã ãã§ãã ã¡ãŒã«æ¬ãã¡ãŒã«ãšããŠèªèšŒããŠããã ããæ¹ã«ãã€ã³ããå ç®ãããŠããã ããŸããã
ãã¡ã€ã«ã¢ããããŒããã¿ã³ã®ã¹ã¿ã€ã«èšå®ã 次ã®ãããªçµã¿åãããæåŸ ãããŠããŸããã ãã¡ã€ã«ãéžæããŸãã 次ã«ãå ¥åãé衚瀺ã«ããã©ãã«ã®ã¹ã¿ã€ã«ãèšå®ããå¿ èŠããããŸããã ãã XNUMX ã€ã®äžè¬çãªæ¹æ³ã¯ãéæãªå ¥åãäœæããŠãã¿ã³ã®äžã«çœ®ãããšã§ãã ãã ãããã¹ãŠã®ãã©ãŠã¶ã§ã¹ã¿ã€ã«èšå®ãã§ããããã§ã¯ãããŸããããã®ãããªãœãªã¥ãŒã·ã§ã³ã¯å®å šãªã¯ãã¹ãã©ãŠã¶ãŒãšã¯èšããŸããã ãããŠãã©ãã«ãäœæããæ¹ãæå³çã«ã¯ããæ£ç¢ºã§ãã
ãã©ãŠã¶éã®äºææ§ã ææ°ã® XNUMX ã€ã®ãã©ãŠã¶ãŒ (IE ãªã - åå è ã¯å¹žéã§ãã) ã® XNUMX ã€ã®ææ°ããŒãžã§ã³ãããã³ iPhone ã® Safari ãš Android ã® Chrome ã§ãã¹ãŠãæ£åžžã§ããããšã確èªããŸããã
éã«ã誰ãã JS ãŸã㯠Bootstrap ã䜿çšããå Žåã¯æžç¹ããŸãããã©ã¡ããã¿ã¹ã¯å šäœã®ç®çã«åããããšã«ãªããŸãã ããã«ãBootstrap ã䜿çšããåå è ã¯ãã€ãã¹ãç²åŸããã ãã§ãªããã»ãã³ãã£ã¯ã¹ãšå®è£ ãããèŠçŽ ã§å€ãã®ãã€ã³ãã倱ããŸããã
ã€ã³ã¿ãŒãããäžã®ã©ããã«èªåã®ãµã€ãããã¹ãããŠãã人ã«ã¯ç¹ã«ã¡ãªããã¯ãããŸããã§ããããã¬ããžããªãããŠã³ããŒãããŠèªåã®ã³ã³ãã¥ãŒã¿äžã§ããŒã«ã«ã«å®è¡ããå¿ èŠããªããªã£ãã®ã§ãã¬ãã¥ãŒæ åœè ã¯éåžžã«æºè¶³ããŸããã ãããã£ãŠãããã¯ã«ã«ãã«ãã©ã¹ãšããŠæ©èœããŸããã
æåã®ã¿ã¹ã¯ã¯ãäž»ã«åŠçã«ãšã£ãŠéåžžã«åœ¹ç«ã¡ãŸããã ç§ãã¡ãåãå ¥ããªãã£ã人ã«ã¯ãå±¥æŽæžãçšæãããŠããŸããèªãããã«ãã¹ãŠã®åçã«æ·»ä»ããããGH ããŒãžã«æçš¿ãããã§ããŸãã
ã¿ã¹ã¯ 2: 茞éã«ãŒã
ãã®ã¿ã¹ã¯ã®äœæè ã¯ãæ€çŽ¢ã€ã³ã¿ãŒãã§ãŒã¹ ã°ã«ãŒãã®è²¬ä»»è ã§ãã Denis Balyko ã§ãã
ç¶æ
æå³ã¯ãããŸããïŒ åæã®ååãšããã®æããä»ã®æãŸã§ã®è·é¢ãå ç§ã§è¡šç€ºãããŸãã 解決é¢æ°ãå®è£ ããŸãããã㯠XNUMX ã€ã®åŒæ°ãåãå¿ èŠããããŸããããŒãæã®ååãå€ãæãŸã§ã®è·é¢ (å®å®ã®äžæ¹éè¡)ãããã³æã®ååã§ãããªããžã§ã¯ãã§ãããã¹ã®éå§ç¹ãšçµäºç¹ - ããããéå§ç¹ãšçµäºç¹ã ãã®é¢æ°ã¯ãéå§æããçµäºæãŸã§ã®æçè·é¢ãšãã©ãçµè·¯ãè¿ãå¿ èŠããããŸãã
é¢æ°ã·ã°ããã£:
const solution = function(graph, start, finish) { // ÐаÑе ÑеÑеМОе }
å ¥åããŒã¿ã®äŸ:
const graph = { start: { A: 50, B: 20 }, A: { C: 40, D: 20 }, B: { A: 90, D: 90 }, C: { D: 160, finish: 50 }, D: { finish: 20 }, finish: {} }; const start = 'start'; const finish = 'finish';
åºåäŸ:
{ distance: 90, path: ['start', 'A', 'D', 'finish'] }
泚: ãœãªã¥ãŒã·ã§ã³ã®ã¹ã±ã«ãã³ã¯ src/ ãã©ã«ããŒã«ããããœãªã¥ãŒã·ã§ã³ã solution.js ã«çœ®ããŸãã
XNUMX çªç®ã®ã¿ã¹ã¯ã®æ€èšŒã¯ãæãèªååãã客芳çã§ããã ã»ãšãã©ã®äººã¯ããã€ã¯ã¹ãã©ã®ã¢ã«ãŽãªãºã ãå®è£ ããå¿ èŠããããšæšæž¬ããŠããŸããã ãã®èª¬æãèŠã€ããŠã¢ã«ãŽãªãºã ã JS ã§å®è£ ãã人ã¯ããããã£ããšæããŸãã ãããã課é¡ã確èªãããšãããåãééãã®ããè«æãå€æ°èŠã€ãããŸããã ç§ãã¡ã¯ã€ã³ã¿ãŒãããã§ã³ãŒãã®æçãæ€çŽ¢ããåå è ãã¢ã«ãŽãªãºã ãã³ããŒããèšäºãèŠã€ããŸããã é¢çœãããšã«ãå€ãã®äººããã®èšäºã®ã³ãŒããèè ã®ã³ã¡ã³ããšãšãã«ã³ããŒããŸããã ãã®ãããªäœåã¯äœãã¹ã³ã¢ãç²åŸããŸããã ç§ãã¡ã¯åºå žã®äœ¿çšãçŠæ¢ããŸããããå人ãèªåã®æžãããã®ãæãäžããŠã»ãããšèããŠããŸãã
åºæº
ãã¹ãã§ã¯äž»ãªãã€ã³ããä»äžãããŸããã å Žåã«ãã£ãŠã¯ã圌ãããªããžããªãããã£ããããã©ã«ããŒã®ååãå€æŽãããããŠããããšãæããã«ãªããå¿ èŠãªãã¡ã€ã«ãèŠã€ãããªããšããçç±ã ãã§ãã¹ãã倱æããããšããããŸããã ä»å¹Žãç§ãã¡ã¯ãã®ãããªäººãã¡ãå©ããããšåªãã圌ãã®ããã«ãã¹ãŠãå ã®å Žæã«æ»ããŸããã ãããæ¥å¹Žããã¯ã³ã³ãã¹ãæ¹åŒã«ç§»è¡ããäºå®ã§ãããã¯ããèš±ãããªãã
ã人éçãªãæåã®åºæºããããŸããã ããšãã°ãåäžã®ã³ãŒã ã¹ã¿ã€ã«ã®ååšã§ãã ã¹ããŒã¹ã®ä»£ããã«ã¿ãã䜿çšãããããã®éã䜿çšãããããŠãæžç¹ããã人ã¯ããŸããã§ããã æ¢ç¥ã®ã«ãŒã«ã«åŸã£ãŠäžéåŒçšç¬ŠãšäºéåŒçšç¬Šã亀äºã«é 眮ããã»ãã³ãã³ãã©ã³ãã ã«é 眮ããå Žåã¯ãå¥ã®åé¡ã«ãªããŸãã
ãœãªã¥ãŒã·ã§ã³ã®æçããšèªã¿ãããã¯åå¥ã«èæ ®ãããŸããã äžçäžã®ããããã«ã³ãã¡ã¬ã³ã¹ã§ãããã°ã©ããŒã®ä»äºã® 80% ã¯ä»äººã®ã³ãŒããèªãããšã§æ§æãããŠãããšèšãããŠããŸãã åŠç«¥ã§ãããåŠèžå¡ãåŠèžå¡å士ã§ã³ãŒãã¬ãã¥ãŒãåããŸãã ãããã£ãŠããã®åºæºã¯éåžžã«éèŠãªæå³ãæã¡ãŸããã XNUMX æåãè¶ ããå€æ°ããªãäœåããããŸããããããã¯ãããŠãã ããã åå è ããã®ã³ã¡ã³ãã¯ãã¹ãã© ãã£ã³ã®ã³ã¡ã³ããšåããã®ãé€ããŠãéåžžã«åæ°ã¥ãããããã®ã§ããã
æåŸã®åºæºã¯èªåãã¹ãã®ååšã§ãã ããããè¿œå ããã®ã¯ã»ãã®æ°äººã ãã§ããããå šå¡ã«ãšã£ãŠããã¯ã«ã«ãã«å€§ããªãã©ã¹ãšãªããŸããã
æ£ãã解決ç:
const solution = function(graph, START, FINISH) {
// ÐÑÑ ÐœÐµ беÑплаÑМП в ÑÑПЌ ЌОÑе
const costs = Object.assign({[FINISH]: Infinity}, graph[START]);
// ÐеÑÐ²Ð°Ñ Ð²ÐŸÐ»ÐœÐ° ÑПЎОÑелÑÑкОÑ
МПЎ
const parents = { [FINISH]: null };
Object.keys(graph[START]).reduce((acc, child) => (acc[child] = START) && acc, parents)
const visited = [];
let node;
// ÐÑеЌ «ЎеÑÑвПгП» ÑПЎОÑелÑ, ПÑЌеÑаеЌ пÑПйЎеММÑе
do {
node = lowestCostNode(costs, visited);
let children = graph[node];
for (let n in children) {
let newCost = costs[node] + children[n];
// ÐÑÑ ÐœÐµ ПÑеМеМа ОлО МаÑÑлÑÑ Ð±ÐŸÐ»ÐµÐµ ЎеÑÑвÑй пеÑеÑ
ПЎ
if (!costs[n] || costs[n] > newCost) {
costs[n] = newCost;
parents[n] = node;
}
}
visited.push(node);
} while (node)
return {
distance: costs[FINISH],
path: optimalPath(parents)
};
// ÐПзвÑÐ°Ñ ÐœÐ°Ð·Ð°ÐŽ пП ÑаЌÑÐŒ «ЎеÑÑвÑЌ» ÑПЎОÑелÑÐŒ
function optimalPath(parents) {
let optimalPath = [FINISH];
let parent = parents[FINISH];
while (parent && parent !== START) {
optimalPath.push(parent);
parent = parents[parent];
}
optimalPath.push(START);
return optimalPath.reverse();
}
// ÐОМОЌалÑÐœÐ°Ñ ÑÑПОЌПÑÑÑ ÐžÐ· ÑекÑÑей ÐœÐŸÐŽÑ ÑÑеЎО МепÑПÑЌПÑÑеММÑÑ
function lowestCostNode(costs, visited) {
return Object.keys(costs).reduce((lowest, node) => {
if (lowest === null || costs[node] < costs[lowest]) {
if (!visited.includes(node)) {
lowest = node;
}
}
return lowest;
}, null);
};
};
ã¿ã¹ã¯ 3: ã€ãã³ã ã«ã¬ã³ããŒ
ããã¯ãã€ã³ã¿ãŒãã§ã€ã¹éçºè ã®ã»ã«ã²ã€ã»ã«ã¶ã³ãæ°ãšã¢ã¬ã¯ãµã³ããŒã»ããã¹ã¯ã¬ããã³æ°ã«ãã£ãŠäœæãããŸããã
ç¶æ
ããã«ã¬ã³ããŒãæžããŠã¹ã±ãžã¥ãŒã«ã衚瀺ããŸãã 奜ããªã¹ã±ãžã¥ãŒã«ã§åè¬å¯èœã§ãã ããšãã°ã2019 幎ã®ããã³ããšã³ã ã«ã³ãã¡ã¬ã³ã¹ã®ã¹ã±ãžã¥ãŒã«ã
ã«ã¬ã³ããŒã¯ãªã¹ãã®ããã«èŠããã¯ãã§ãã ãã®ä»ã®èšèšèŠä»¶ã¯ãããŸããã ã€ãã³ããªãã€ã³ããŒã 3 æ¥åã7 æ¥åã14 æ¥åã«èšå®ã§ããããã«ããŸãã ã€ã³ã¿ãŒãããããæåã«ããŠã³ããŒãããåŸãã«ã¬ã³ããŒãéãããªãã©ã€ã³ã§æ©èœããã¯ãã§ãã
圹ã«ç«ã€ãªãœãŒã¹
ããã³ããšã³ãã«ã³ãã¡ã¬ã³ã¹ã®ã¹ã±ãžã¥ãŒã«:
confs.tech/javascript?topics=javascript%2Bcss%2Bux ãµãŒãã¹ã¯ãŒã«ãŒ:
developer.mozilla.org/ru/docs/Web/API/Service_Worker_API/Using_Service_Workers
developers.google.com/web/fundamentals/primers/service-workers éç¥API:
éçºè .mozilla.org/ru/docs/Web/API/Notifications_API
XNUMX çªç®ã®ã¿ã¹ã¯ã¯ãèãããã解決çãéåžžã«å€ããããããã«ç¬èªã®ãã®ãããããããã¹ãããã®ãæãèå³æ·±ããã®ã§ããã ç§ãã¡ã¯ãåè£è ããªãã¿ã®ãªããã¯ãããžãŒãã©ã®ããã«æ±ãããç 究æ¹æ³ãç¥ã£ãŠãããããœãªã¥ãŒã·ã§ã³ããã¹ãããŠãããã©ããã確èªããŸããã
åºæº
äºã€æãã«ã¬ã³ããŒã ã¯ãããŸã ã¬ã€ã¢ãŠãããå¿ èŠããããŸããã æ¡ä»¶ãæåéãã«åãåããããŠãCSS ã³ãŒãã XNUMX è¡ãæ¿å ¥ããªãã£ã人ãããŸããã èŠãç®ã¯ããŸãé åçã§ã¯ãããŸããã§ãããããã¹ãŠãããŸãããã°ãã€ã³ãã¯æžããŸããã§ããã
ãœãŒã¹ããã€ãã³ãã®ãªã¹ããååŸããã ããã¯ã¬ã€ã¢ãŠã ã¿ã¹ã¯ã§ã¯ãªããããããã«å«ãŸããã€ãã³ãã®ãªã¹ãã¯ã«ãŠã³ããããŸããã§ããã ãã€ã§ãäŒè°ããã£ã³ã»ã«ããããã¹ã±ãžã¥ãŒã«ãå€æŽããããæ°ããäŒè°ãè¿œå ãããã§ããŸãã ãã®ãããå€éšããããŒã¿ãåãåããåãåã£ãJSONã«åºã¥ããŠã¬ã€ã¢ãŠããã¬ã³ããªã³ã°ããå¿ èŠããããŸããã äœããã®æ¹æ³ (fetch ã¡ãœãããŸã㯠XMLHttpRequest ã䜿çš) ã§ããŒã¿ãååŸããããšãéèŠã§ããã ãŠãŒã¶ãŒããã§ããçšã®ããªãã£ã«ãè¿œå ãããã®éžæã Readme ã«ããŒã¯ããå Žåãããã¯ãã©ã¹ãšããŠã«ãŠã³ããããŸããã
Service Worker ã®ãšã©ãŒãªãã®ç»é² æåã®ããŠã³ããŒãåŸã¯ãªãã©ã€ã³ã§äœæ¥ã§ããŸãã
ãªãã€ã³ããŒãèšå®ããæ©èœå®éã«æ©èœããã®ã¯ 3 æ¥ã7 æ¥ã14 æ¥åŸã§ãã éç¥ API ãç解ããå¿
èŠããããŸãããã
ãã¹ã¯ãããã«ã¢ã€ã³ã³ãé
眮ããæ©èœ (PWA)ã ãã¡ã€ã«ã®ååšã確èªããŸãã
ã³ãŒãã¹ã¿ã€ã«ãšãããžã§ã¯ãæ§é ã XNUMX çªç®ã®ã¿ã¹ã¯ãšåæ§ã«ã(ããšããããç§ãã¡ã®ã³ãŒãã¹ã¿ã€ã«ãšäžèŽããªããšããŠã) XNUMX ã€ã®ã³ãŒãã¹ã¿ã€ã«ã調ã¹ãŸããã ãªã³ã¿ãŒããã蟌ãã 人ãããŸããããããã¯çŽ æŽãããããšã§ãã
ã³ã³ãœãŒã«ãšã©ãŒã äœããééã£ãŠããããšã瀺ãã€ã³ãžã±ãŒã¿ãŒãã³ã³ãœãŒã«ã«è¡šç€ºãããåå è ãããã«æ³šæãæããªãã£ãå Žåã¯ãæžç¹ããŸããã
çµæ
åå è ã®æ±ºå®ã®é¢çœããšãã:
- ããã¢ã³ã±ãŒãã«ã¯æ¬¡ã®ãããªæç« ãå«ãŸããŠããŸããããããã°ã©ããŒã®å人ã React ã¢ããªã±ãŒã·ã§ã³ã®äœæãæäŒã£ãŠãããŸããã ç§ã¯åœŒã«ãã®çç±ãšæ¹æ³ã«ã€ããŠè³ªåã济ã³ããŸããããããŠåœŒã¯ç§ã«èšããŸããã ãããæ°ã«å ¥ã£ãã®ã§ãã£ãšç¥ãããã§ããã ç§ãã¡ã¯ãã®ç³è«ãå¿ããå¿æŽããŠããŸããããæ®å¿µãªãããåè£è ã®å人ãç³è«ã®å®çŸã«ããŸãååããŠãããŸããã§ããã
- ããåè£è ã¯ãRAR ã¢ãŒã«ã€ããä¿åãããŠãã GitHub ã«ãªã³ã¯ãéä¿¡ããŸããããããã«ã€ããŠã³ã¡ã³ãããã®ã¯å°é£ã§ãã ð
- å¥ã®åè£è ã¯ãsolution.js ãã¡ã€ã«ã®æåã®è¡ã®ã³ã¡ã³ãã§ãã¢ã«ãŽãªãºã ãã³ããŒããããšãæ£çŽã«èªããŸããã
76åã®å¿åãããã23åã決å®ããŸããã ãã³ã¹ã¯ã ãã§ãªããã¢ã¹ã¯ã¯ããµã³ã¯ãããã«ãã«ã¯ãããã«ã¯ã¿ã¿ãŒã«ã¹ã¿ã³ãããã¢ã³ã±ãŒããéãããŠããã 圌ãã®äžã«ã¯ãçŸåšã®è·æ¥ã«ã€ããŠç§ãã¡ãé©ããã人ãããŸããXNUMX 人ã¯æ³å»åŠã®å°é家ã§ããã XNUMX 人ã¯å»åŠçã§ãã
ãã®çµæãã¿ã¹ã¯ã®å®äºã«ãããæåçã®èå³æ·±ãååžãåŸãããŸããã åå è ã¯æåã®ã¿ã¹ã¯ãå¹³å 60% ã§å®äºãã50 çªç®ã®ã¿ã¹ã¯ã 40% ã§å®äºããŸãããXNUMX çªç®ã®ã¿ã¹ã¯ã¯æãé£ãããå¹³å XNUMX% ã§å®äºããŸããã
äžèŠãããšãã¿ã¹ã¯ã¯è€éã§æéããããããã«èŠããŸãã ãã®çç±ã¯ãã§ããã ãå€ãã®åè£è ãæé€ããããšããããšã§ã¯ãããŸããã åŠç¿äžãåŠçã¯ãã£ããã®äœæãåäŸåãã® Yandex.Music ããŸãã¯å€©åã«å·Šå³ããã人ã åãã® Yandex.Weather ãªã©ãçŸå®ã®ã¿ã¹ã¯ã«çŽé¢ããŸãã ãã®ããã«ã¯éå§ããŒã¹ãå¿ èŠã§ãã
80幎åã«SRIã®å ¥åŠèª²é¡ãèŠãŠã絶察ã«è§£ããªããšæã£ãã®ãèŠããŠããŸãã çŸæç¹ã§ã®äž»ãªããšã¯ã座ã£ãŠæ¡ä»¶ã泚ææ·±ãèªãã§ããããéå§ããããšã§ãã ãã®æ¡ä»¶ã§ã¯ã溶液ã®ã»ãŒ XNUMX% ãå«ãŸããŠããããšãããããŸãã ããšãã°ãXNUMX çªç®ã®ã¿ã¹ã¯ (æãé£ãã) ã®æ¡ä»¶ã§ã¯ãMDN äžã®ãµãŒãã¹ ã¯ãŒã«ãŒãšéç¥ API ãžã®ãªã³ã¯ãè¿œå ããŸããã ãªã³ã¯ã®å 容ãåŠç¿ããåŠçã¯ãé£ãªãå®äºããŸããã
ãã®èšäºã¯ãå°æ¥SRIã«å
¥åŠããããšèããŠããåéšçããã³ã¹ã¯ã¹ã¯ãŒã«ã«å
¥åŠã§ããªãã£ãåéšçãããããä»ã®è©Šéšèª²é¡ã«åãçµãåéšçã«ãã²èªãã§ããã ãããã§ãã ã芧ã®ãšãããããããããšã¯ååã«å¯èœã§ãã èªåãä¿¡ããŠãèè
ããã®ãã³ãããã¹ãŠèãå¿
èŠããããŸãã
åºæïŒ habr.com