
11æ12ã13æ¥ ïŒã€ãŸããæ°é±éåŸïŒã«DotNext 2017ã¢ã¹ã¯ã¯ãéå¬ãããŸããããã¯ã.NETãã©ãããã©ãŒã ã§ã®éçºã«ç¹åãããã·ã¢æ倧ã®äŒè°ã§ãã ç§ãã¡ã®è¬æŒè
ã®äžã«ã¯ããã·ã¢ããšãŒããããã¢ã¡ãªã«ããã®æ¥çããªãŒãããå°é家ãããŸãã äŒè°ã®äž»ãªãããã¯ã¯ããã©ãããã©ãŒã å
éšïŒCLRãGCãJITïŒãããŒã«ã®äœ¿çšã«é¢ãããã¹ããã©ã¯ãã£ã¹ããããã¡ã€ãªã³ã°ãšããã©ãŒãã³ã¹ã®æé©åããã«ãã¹ã¬ããããã°ã©ãã³ã°ããã©ãããã©ãŒã ã®é©æ°ãè€éãªã±ãŒã¹ãœãªã¥ãŒã·ã§ã³ã§ãã
ã«ããã®äžã§-ããã°ã©ã ã®è©³çŽ°ãªåæãä»å¹Žã®ã€ãããŒã·ã§ã³ã«é¢ããããã€ãã®èšèãããã³å²åŒäŸ¡æ Œã§ã®ç§å¯ã®ããã¢ãŒã·ã§ã³ã³ãŒã ã
ããŒãã³ã¢ãªã¿ãŒã³
ãŸã ãå€æŽã¯ã¬ããŒãã®æ§æã«åœ±é¿ããŸããã
ãµã³ã¯ãããã«ãã«ã¯ã§ã®æåŸã®DotNextã¯çŽ æŽãããææã«éå¬ãããŸãã-å€ãã®æ°ããæè¡ãåºãŠãããããªãªãŒã¹ã®æºåãã§ããŠããŸããã ã»ãšãã©ãã¹ãŠã®ã¬ããŒãã¯ããã«é¢ãããã®ã§ãããããã¯èªåçã«çŽ æã®è€éãã軜æžããããšãæå³ããŸããã 調æ»ã瀺ããããã«ã人ã
ã¯GCã®å
éšãæãäžããã¯ã©ãã·ã¥ãããããã¡ã€ã©ãŒïŒJavistsã®ãæ°ã«å
¥ãã®æéïŒãä¿®æ£ãããªã©ã®ã¢ã€ãã¢ã«ç¹ã«èå³ã¯ãããŸããã§ããããéåžžã«éèŠãªDokerãšKubernetesãæ¢è£œã®.NETã€ã³ãã©ã¹ãã©ã¯ãã£ã«çµ±åããæ¹æ³ã«éåžžã«èå³ããããŸããã ãŸãã«ãã®æã§ããã
DotNext 2017ã¢ã¹ã¯ã¯ã§ã¯ã ããŒãã³ã¢ã埩掻ããŸãã ãŸã GCãæãäžããããšã¯ããŸããããã¡ã¢ãªã¢ãã«ãããã©ãŒãã³ã¹ãã¹ããšæé©åããããã°ã®ãã现ãããã€ã³ããããã«ã¯Linuxã§ã®ãããã°ã«ã€ããŠã説æããŸãã ç¹å¥ãªæ奜家ã®ããã«ãé¢æ°åããã°ã©ãã³ã°ã®äœ¿çšã«é¢ãã2ã€ã®ã¬ããŒãããããŸãã çéå
¥ãã®ã¬ããŒã-åèšã®ã¡ããã©3åã®1ã
ãã ãããéåžžã®ãåé¡ãšããŒã«ã®è°è«ã¯æ¶ããŠããŸããã ã¯ã©ã¹ã¿ãŒãšã¯ã©ãŠãã€ã³ãã©ã¹ãã©ã¯ãã£ã«é¢ããã¬ããŒãã®å€§ããªãããã¯ãããããããã䜿çšããããã®ããŒã«ãšæ¹æ³ïŒã³ãŒãçæã®ãã©ã¯ãã£ã¹ãªã©ïŒã®è°è«ããããdevoopsãšã»ãã¥ãªãã£ã«é¢ããäœãããããŸãã 誰ããèªåã®å¥œã¿ã«åã£ãããŒããèŠã€ããã§ãããã
ãã®ãããªéã®æ
å ±ã1æ¥ã«åãŸããªãããšã¯æããã§ãããããDotNextã«ã¯2æ¥ãš3ã€ã®äžŠè¡ãããã©ãã¯ãå¿
èŠã§ãã ãªãŒããã³ã°ã¯åå10æã«è¡ããïŒåæ¥ã¯åå9æã«ç»é²ãéå§ãããŸãïŒãååŸ7æã«çµäºããŸãã ãã©ãã¯ããã9æéã ãã®ãããªããªã¥ãŒã ããè³ã溶ããªãããã«ãæãè€éãªã¬ããŒãã ãã§ãªãããã軜ãã¬ããŒãã§ããããåžéãã蚪åãèšç»ã§ããŸãã ããããç§ãèšç»ãããã¹ãŠã«å°éããæ¹æ³-ããã¯ä»¥äžã«æžãããŸãã
人éã§ã¯ãªãããããã泚å
¥ãã
次㫠ãéç«åšãæ¥ç¶ããç¹å¥ãªèªäœãœãããŠã§ã¢ã䜿çšããŠãã©ãã¯äžã®ã¬ããŒãã®ååžãåæããŸããã 次ã®åé¡ã解決ããŸãããã人ã3ã€ã®æ¢ç¥ã®ã¬ããŒãã«ã¢ã¯ã»ã¹ããããšããŸãã ããããéžæããå¿
èŠããªãããã«ãããããç°ãªãæéã«çºçãããæ¹æ³ã¯ïŒ
OptaPlannerã«åºã¥ããŠ-ããžãã¹ã®å¶çŽã®æ®éçãªãœã«ããŒã è»ã®ã«ãŒãã£ã³ã°ãã¿ã¹ã¯ããšã®åŸæ¥å¡ã®åæ£ãã¯ã©ãŠãã³ã³ãã¥ãŒãã£ã³ã°ã®æé©åã補åã®æ¢±å
ãªã©ã®åé¡ã解決ããããã«ç¹å¥ã«èšèšãããŠããŸãã ãããã®ã¿ã¹ã¯ã¯ãã¹ãŠãéããããªãœãŒã¹ãé¢é£ããæ¶è²»è
ã«ååé
ããå¿
èŠãããããºã«ã解ãããšã«äŒŒãŠãããšããäºå®ã«ãã£ãŠçµ±åãããŠããŸãã ã¬ããŒãã®é
åžãèšç»ãããšãã«ãã»ãŒåãåé¡ãçºçããŸãã
OptaPlannerã®äžã«ãConfPlannerãšåŒã°ããç¬èªã®ãšã³ãžã³ãæžãããŠããŸãã ç¹ã«ã ãŠã©ãžããŒã«ã»ã·ããã³ãã¯ãã®ããšã«æè¬ãã¹ãã§ãã ãŠã©ãžããŒã«ã¯ãNetCrackerã®ããã©ãŒãã³ã¹ã¢ãŒããã¯ãã§ãããJUG.ruã°ã«ãŒãããã°ã©ã å§å¡äŒã®ã¡ã³ããŒã§ãã ãã®çµæããªãŒãã³ãœãŒã¹ãããžã§ã¯ããäœæããããã®ãœãŒã¹ã³ãŒãã¯githubã§è¡šç€ºã§ããŸãã
äžçªäžã®è¡ã¯ãYAMLãã¡ã€ã«ã®åœ¢åŒã§å¶éãèšå®ããåºåã§æ¢è£œã®ãœãªã¥ãŒã·ã§ã³ãååŸããããšã§ãã
capacity: 400 languages: - name: ru - name: en rooms: - name: 1 capacity: 300 - name: 2 capacity: 200 days: - name: 1 date: 2017-10-04 timeslots: - name: 1 day: 1 start: 11:00 duration: 50 - name: 2 day: 1 start: 14:00 duration: 50 - name: 3 day: 1 start: 18:00 duration: 50 topics: - name: Case study - name: Tricks speakers: - name: Speaker A arriveTime: 2017-10-04T12:00:00+03:00 - name: Speaker B leaveTime: 2017-10-04T16:00:00+03:00 talks: - name: 'How to arrive late' language: en speakers: Speaker A topics: Tricks - name: 'How to depart early' language: ru speakers: Speaker B topics: Tricks - name: 'Coffee time' language: en speakers: - Speaker A - Speaker B topics: - Case study - Tricks
ä»æãã¯ãŒã«ãªããšïŒæéãªã©ã®åºæ¬çãªå¶éã ãã§ãªãã 調æ»ããŒã¿ãèæ
®ããããšãã§ããŸã ã ã©ã®ã¬ããŒããéä¿¡ããããæå®ããããŒãªã³ã°ã
ããšãã°ããã人ã3ã€ã®ã¬ããŒãã«ã¢ã¯ã»ã¹ãããå Žåããäžåã«ã䞊ãã§ããŸãïŒæéçã«äžèŽããŠããŸãïŒã ãã®ãããªçµã¿åããã¯èš±å®¹ãããŸãããããã«ãã£ãã€ã³ããä»äžãããŸãã ã¬ããŒãã®æé©ãªã¹ã±ãžã¥ãŒã«ãäœæãããšããåé¡ã解決ããæ¬è³ªã¯ã眰éãè«æ±ããæ©èœãæå°éã«ããããšã§ãã
ãã¡ãããConfPlannerãã³ã¡ã³ããäœæããåŸãã¹ã±ãžã¥ãŒã«ã¯çããŠãã人ã
ã«ãã£ãŠããèããããŸãã ã芧ã®ããã«ã ã¢ã³ã±ãŒãã«èšå
¥ãããšäŸ¿å©ã§ã ã æãæåéãã®æå³ã§ãããªãã®æèŠã¯æ¬åœã«èæ
®ãããŸãã
æåã¯ãèšäºã®æåŸã®éšåããŸãã¯ã¬ããŒãã®ãªã¹ãã®éäžã«ããã¢ãŒã·ã§ã³ã³ãŒããæ¿å
¥ãããã£ãã®ã§ãå°ã調ã¹ãªããã°ãªããŸããã§ããã ã¬ããŒãã®æ°ã¯ã誰ãèŠã€ããããªãã»ã©ååã«å€§ããããšãããã«æããã«ãªããŸããã ãã®ãããããã§ã¯ã³ãŒããä¿æããŸãã
ã©ã¹ãã³ãŒã«ããã¢
ç»é²ããŒãžã§ãã®ã³ãŒãã䜿çšãããšãé±æ«ãŸã§å²åŒãå©çšã§ããŸãã
ããã°ã©ã å
容
ã§ã¯ãã¬ããŒããèŠãŠããã®äŒè°ã®å
容ãèŠãŠã¿ãŸãããã åŸæ¥ããã¹ãŠã®ã¬ããŒãã¯æ¬¡ã®ã°ã«ãŒãã«åé¡ã§ããŸãã
- ããã©ãŒãã³ã¹ãšäœã¬ãã«ã®è©³çŽ°
- ãããã¯ãŒã¯ã³ãŒã
- ãããã°
- ã¯ã©ã¹ã¿ãŒãšã¯ã©ãŠã
- ããã°ã©ãã³ã°èšèªãããŒã«ãããã³ã¡ãœãã
- é¢æ°åããã°ã©ãã³ã°
- éå€
- æ©æ¢°åŠç¿ãšææ
- å®å
šæ§
- ç£èŠãéçšãDevOps
- å²åŠïŒïŒïŒ
ãã®åå²ã¯æ¡ä»¶ä»ãã§ããããšã«æ³šæããããšãéèŠã§ãã ã¬ããŒãèªäœã¯ãå³å¯ãªåé¡ã«é¢é£ä»ããããŠããŸããã ããšãã°ã䜿çšãããã¬ãŒã ã¯ãŒã¯ã«å¿ããŠãäœããã®æ¹æ³ã§ããããã°ã«ãŒãåããããšãå¯èœã§ãã ãã ããäžèšã®æ§é ã«ã¯åªããç¹æ§ããããã©ã®ã¬ããŒãã«ç§»åããããéžæããã®ã«åœ¹ç«ã¡ãŸãã
ããã©ãŒãã³ã¹ãšäœã¬ãã«ã®è©³çŽ°
ã¢ã³ãã¬ã€ã»ã¢ãã³ã·ã³ãJetBrains
åºèª¿è¬æŒã«ã¯ã次ã®ãããªããã€ãã®ç®æšããããŸãã次ã®æ°æ¥éã«èµ·ããããšã®ç²Ÿç¥ãšæ¬è³ªãäŒããããšã ãã®ã¬ããŒãã¯ãããã©ãŒãã³ã¹ãã¹ãã®å
žåçãªåé¡ãšãã®ãœãªã¥ãŒã·ã§ã³ãžã®å¯èœãªã¢ãããŒãã«åœãŠãããŸãã Andrei Akinshinã¯Riderãããžã§ã¯ãã«åãçµãã§ããã BenchmarkDotNetã¡ã³ãããŒã§ãããäžè¬ã«ããã€ã¯ãæé©åã«ã€ããŠå€ãã®ããšãç¥ã£ãŠããŸãã
ãã§ããªã³ãã€ã¹ãã³ãŒããªãŠã¹
ãã®ã¬ããŒãã§ã¯ãåæããæé©åã®å
·äœçãªå®æœãŸã§ãé«æ§èœã³ãŒããæžãããã«äœ¿çšãããæè¡ãšãã¿ãŒã³ãèŠãŠãããŸãã ã©ã®æé©åã䜿çšããå¿
èŠãããããããã³ããŒã¿ããŒã¹ã³ãŒããæé©åãããšãã«éåžžã©ã®ãããªåé¡ãçºçããããç解ããæ¹æ³ãèããŸãããã ãããã®ããªãã¯ã®å€ãã¯ã RavenDB 4.0ïŒ .NETãã©ãããã©ãŒã çšã®NoSQLãšã³ãžã³ã®ææ°ããŒãžã§ã³ïŒãéçºãããšãã«èæ¡ãããé¡ã®ããã«ç£šãããŸãã RavenDBã¯ããªãè€éãªãã®ã§ãããããç§ã®æé©åãé·ãéè¡ãããŠãããæéãIOãããã³ããã»ããµãåæã«æé©åããå¿
èŠããããŸãã ãã®ã¬ããŒãã§èª¬æããææ³ã®ã»ãšãã©ã¯ãèšèªããã¬ãŒã ã¯ãŒã¯ã«é¢ä¿ãªããã©ãã«ã§ãé©çšã§ããŸãã
ãã§ããªã³ã¯åœŒã®çºèŠã«ã€ããŠè©±ãããšãã§ããããã«ãªããŸããã 圌ã¯CorvaliusãšCodealikeã®å
±åèšç«è
ã§ããã ãã§ãªããCPUãšGPUãªã©ã®ããããunningãªããŒããŠã§ã¢ã®äž¡æ¹ãããŒããŠã§ã¢ãšããŠäœ¿çšããŠãéå»10幎éã¢ã«ãŽãªãºã ã®ããã©ãŒãã³ã¹ã«å®éã«åãçµãã§ããŸãã ããã¯ããã€ããªããŒã¿ãã¬ãžã¹ã¿ãäœã¬ãã«ã®æé©åãæãããåæã«åæå®è¡æè¡ãšææ°ã®ã³ã³ãã¥ãŒã¿ãŒã°ã©ãã£ãã¯ã¹ã«æ
ç±ãåŸãã人ã§ãã äžè¬çã«ãCïŒã§ã®äœã¬ãã«ã®æé©åã«é¢ããã¬ããŒãã誰ããäŒããããšãã§ããã°ãããã§çµããã§ãã
ãŽã¡ããªãŒã»ãããããã·ããã¹
ãã§ããªã³ã®å ±ååŸãä»ã«èª°ã質åããããŸããïŒ èª°ãã䞊è¡æ§ãæããŠããã®ãããããŸããïŒãããŠæ£åœãªçç±ã®ããã«ïŒïŒ ãŽã¡ã¬ãªãŒã»ããããã¯ãèšæ¶ã¢ãã«ã«ã€ããŠã®è©³çŽ°ãªç©èªã§ç§ãã¡ã®éåœãä¿é²ããŸãã
Valeryãäž»ã«è·å Žã§ãè¡ãªãŸãããäŒæ¥ãã«åŸäºããŠããã®ã¯èå³æ·±ãããšã§ããããšã³ã¿ãŒãã©ã€ãºãããã°ã©ããŒã¯ãã®ãããªããšã«èå³ããªããç解ããŠããªããšããç¥è©±ããããäžè¬çã«ããã¯è·å Žã§ã¯å¿
èŠãããŸããã ãŸããç¥è©±ã¯ç Žå£ãããŸãïŒ
ããã§ãåé¡ã¯äœã§ããããªããããç§ãã¡ã«ãŸã£ããèå³ãæããªããã°ãªããªãã®ã§ããïŒ ããã°ã©ã ã¯éåžžã人ã
ã«ãã£ãŠäœæãããã³ã³ãã¥ãŒã¿ãŒã«ãã£ãŠå®è¡ãããŸãã ã³ã³ãã¥ãŒã¿ãŒãååšããéãããã°ã©ãã³ã°ã«å
¥ãããã®ãããå€ãäžããããã«å€ãã®äœæ¥ãè¡ãããŸãããã³ã³ãã¥ãŒã¿ãŒãåäœãããããã«ãã³ã³ãã¥ãŒã¿ãŒãã©ã®ããã«åäœããããç¥ãå¿
èŠã¯ãããŸããã ããããç¡é§ãªãã®ã¯äœãäžããããŠããããå€ãã®æ¥œãããã®ãé«çŽèšèªã®èåŸã«é ãããŠããŸãã å Žåã«ãã£ãŠã¯ããäžãã§èµ·ãã£ãŠããããšãç¥ããªããšæ²ããçµæã«ã€ãªããå¯èœæ§ããããŸãã ãããŠã䞊è¡æ§ãšã¯ãã¹ãã©ãããã©ãŒã ã«é¢ããŠã¯ãæ°Žäžã«çæããããã©ãŽã³ãããŸãã
ãã®ã¬ããŒãã§ã¯ãValeryã¯ã¡ã¢ãªã¢ãã«ãšã¯äœãã.NETã®å
容ãä»æ§ãä¿èšŒãããã®ããã©ãããã©ãŒã ãæäŸãããã®ãå¿«é©ãŸãŒã³ãé¢ãããšãã«æåŸ
ã§ããåé¡ïŒããã¯ããªãŒãžã®ç§»è¡ãä»ã®ã¢ãŒããã¯ãã£ã§ã®å®è¡ïŒããšãã°ã ARMïŒã ãŸããããã€ãã®åé¡ã¯åçŽãªéçåæã§æ€åºã§ããããšã瀺ãããŸãïŒã¬ããŒãã¯éçåæã«é¢ãããã®ã§ã¯ãªãããã詳现ã¯å¥ã§ãïŒã ãšãããã.NETã«ããã°ãããããšã瀺ãããŸãã
Vitaliy JezepchukãFast Reports
ããã©ãŒãã³ã¹ã»ã¯ã·ã§ã³ã§ããå¿«é©ã§è»œãã¬ããŒãããããŸãã ãã®ã¬ããŒãã§ã¯ãVitaliyã¯Linuxããã³Windowsãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ã®.NET Coreããã³Javaã©ã³ã¿ã€ã ã®ããã©ãŒãã³ã¹ãæ¯èŒããŸãã 察象èªè
ïŒé«æ§èœã§ãªãœãŒã¹ã倧éã«æ¶è²»ããã¢ããªã±ãŒã·ã§ã³ã®éçºè
...ãŸãããŸãã¯.NETãJavaãè±åœã®æã«åŒãè£ãæ¹æ³ãç¥ããããšæã£ãŠãã人ã ïŒããŸããããªãå Žåã¯ã©ããªããŸããïŒïŒ
ã«ã¬ã«ã»ãžã¯ã ã³ãããã€ã¯ããœãã
ãããããã©ãŒãã³ã¹ããã°ã«ã¯ããããã¯ãŒã¯ããã©ãŒãã³ã¹ã«é¢ãã2ã€ã®ã¬ããŒãããããŸãã
æåã®ãªãŒããŒã¯ã.NET FrameworkããŒã ããã³.NET CoreããŒã ã®ãœãããŠã§ã¢ãšã³ãžãã¢ãªã³ã°ãããŒãžã£ãŒã§ããããšãç¥ãããŠããè±èªã¹ããŒã«ãŒKarel ZikmundãçããŠããããããã¯ãŒãã³ã°ãæå·ãã³ã¬ã¯ã·ã§ã³ãããã»ã¹ãªã©ã®CoreFXãããŒãžã£ãŒã§ãã
Karelã.NET Coreãããã¯ãŒã¯ã¹ã¿ãã¯ã®ã¢ãŒããã¯ãã£ãšç¹å®ã®å®è£
ãç¹ã«ããã©ãŒãã³ã¹ãšç§»æ€æ§ã«ã€ããŠèªã£ãŠããŸãã 次ã®ãããã¯ã«ã€ããŠèª¬æããŸãã
- ãããã¯ãŒã¯ãµãã·ã¹ãã ã®ã¢ãŒããã¯ãã£ãšå®è£
ã®èåŸã«ããäž»ãªã¢ã€ãã¢ãšç®æš
- é²æç¶æ³ãçŸåšã®éçºç¶æ³
- æ倧ã®ããã©ãŒãã³ã¹ãéæããæ¹æ³
- çŸåšã®ããã©ãŒãã³ã¹æ¹åäœæ¥+ããŸããŸãªãã¯ãããžãŒãšãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®æ¯èŒ
Maarten BalliauwãJetBrains
ãããã¯ãŒã¯ã®ã©ã³ãã æ§ã«é¢ãã2çªç®ã®ã¬ããŒãã ããããã以äžã«èª¬æãããã¯ã©ãŠããã«èµ·å ããã¯ãã§ãã
Maartenã¯ããŠãŒã¶ãŒãéåžžã«å¥åŠãªåœã§ããããšã«é·ãéæ°ä»ããŠããŸããã å°ãªããšã圌ã®ãããžã§ã¯ãMyGet.orgã§ãéçã®åºæ¥äºãèµ·ãã£ãŠããŸãã éããããã°ããŠãŒã¶ãŒã¯å®éã«ãµãŒãã¹ã䜿çšããŸãããã»ãšãã©ã®å Žåãããããæ¹æ³ã§ä¿¡é ŒãæªçšããŸãã 圌ãã¯å¥åŠã§ç°åžžãªæ¹æ³ã§ããã䜿çšããããããè² è·ãå¢å€§ããããé±æ«ã®çŽåŸã«ãªã¯ãšã¹ããããµãããããããŸãã ããã¯ãã¹ãŠWebã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠæ¬åœã®å±éºã§ããã1人ã®ãŠãŒã¶ãŒã®äœæ¥ã劚害ãããããµãŒãã¹å
šäœãæå
¥ãããããå¯èœæ§ããããŸãã ãã®ãããçæ³çã«ã¯ãå
¥ãå£ã§ãŠãŒã¶ãŒãåŸ
æ©ããåäœæéãããã®ãªã¯ãšã¹ãæ°ããã©ãã£ãã¯éãªã©ãå¶åŸ¡ããäœããã®ã¹ããŒããã£ã«ã¿ãªã³ã°ã·ã¹ãã ãå¿
èŠã§ãã
ãã®è¬æŒã§ã¯ãMaartenãã¯ãšãªãªããã¿ãŒã®ã·ã³ãã«ãã€è€éãªäžçã«ã€ããŠèªã£ãŠããŸãã ã¢ããªã±ãŒã·ã§ã³ããµãŒããŒãnginxãªããŒã¹ãããã·ãAzureãCloudFlareãªã©ã®å€éšãµãŒãã¹ãªã©ãå³å¯ã«äœãã©ãã§å¶éãããã決å®ããå¿
èŠããããŸãã çµæãšããŠãäž¡æ¹ã®ãªãªã«ãã«é€ãäžããããçŸã¯å®å
šã§ã-ãããŠãµãŒãã¹ã¯ããŸãæ©èœãããŠãŒã¶ãŒã¯æºè¶³ããŠããŸãã
Sasha GoldshteinãSela Group
çéå
¥ãã®ãäœã¬ãã«ãã»ã¯ã·ã§ã³ã«ã¯ã2ã€ã®ãããã°ã¬ããŒãããããŸãã ãããŠãã©ã¡ããã¯ãã¹ãã©ãããã©ãŒã ã¢ããªã±ãŒã·ã§ã³ã«é¢ãããã®ã§ãã
æåã®ã¬ããŒãã¯ã圌ã話ããã¹ãŠã®äŒè°ã§åžžã«ãããã®å°äœãä¿æããåªããããã©ãŒãã³ã¹ãšã³ãžãã¢ã§ããSasha GoldshteinãçããŠããŸãã 圌ã«äœåºŠãã€ã³ã¿ãã¥ãŒããŸããã 2015幎㮠ãããªã2ã3幎 ã 2016幎ã®ãã㪠ãããã©ãŒãã³ã¹ã®æäœ ã«é¢ããã€ã³ã¿ãã¥ãŒ ãããã©ãŒãã³ã¹ãšã³ãžãã¢ã®.NETããŒã«ã®æŠèŠãèªãããšããå§ãããŸãã
ãã®ã¬ããŒãã§ã¯ããµãŒã·ã£ã¯æ¬¡ã®ããšã«ã€ããŠè©±ããŸãã ãæ°ã«å
¥ãã®ASP.NETã¢ããªã±ãŒã·ã§ã³ãLinuxãŸãã¯ã³ã³ãœãŒã«ã€ã³ã¿ãŒãã§ã€ã¹ãåãããã®ã§ããå®è¡ã§ãããšæ³åããŠãã ããã 次ã¯ïŒ ããããŒãšã³ãïŒ ããŒãã å®éãã¡ã¢ãªãªãŒã¯ãå¥åŠãªã¯ã©ãã·ã¥ãããã©ãŒãã³ã¹ã®åé¡ããã®ä»å€ãã®ãã©ãã«ã«çŽé¢ããå¿
èŠããããŸãããããŠãããããã¹ãŠãæ¬çªç°å¢ã§çºçããå Žåã¯ã©ãããã°ããã§ããããïŒ Windowsã«ã¯ããããã®èå³æ·±ãããŒã«ããããŸãããLinuxã§ã¯åäœãããåçŽãªä»£æ¿æ段ã¯ãŸã ãããŸããã ãã®ã¬ããŒãã§ã¯ãLinuxäžã®.NET Coreã¢ããªã±ãŒã·ã§ã³ã®ãããã°ãšãããã¡ã€ãªã³ã°ãã©ã®ããã«èŠãããã«ã€ããŠSashaã説æããŸãã perf
ã§èª¿æ»ããæ¹æ³ã ETW
ã€ãã³ãã®ä»£æ¿ãšããŠLTTNG
䜿çšããæ¹æ³ãLTTNG LTTNG
ãåéããŠç解ããæ¹æ³ãªã©ã Sashaã¯ã ã³ã¢ãã³ãã®åéãããã³lldb
ãšSOS
ã䜿çšããŠ.NETéçºè
ã«ãšã£ãŠèå³æ·±ãæ
å ±ãååŸããæ¹æ³ã«ã€ããŠèª¬æããŸãã ãã®ã¬ããŒãã¯ãæªå®æã®ãŠãŒãã£ãªãã£ãšç¹å¥ãªã³ãã³ãã©ã€ã³ããžãã¯ã®ãžã£ã³ã°ã«ãéãéåžžã«é£ããæ
ã§ãããæçµçã«ã¯ããããŒãšã³ãã«ãªããŸãïŒ ïŒããããããã¯æ£ç¢ºã§ã¯ãããŸããïŒã
ãšãªã¶ãã¹ã»ãŽã¬ãã¯ããŽããã¯
2çªç®ã®ãããã°ã¬ããŒããããã³ã¯ãã¹ãã©ãããã©ãŒã ã ãã ããSashaã®ã¬ããŒãã®åŸãLinuxã§ã¯åçŽãªç掻ãèŠãããšãã§ããªãããšã¯ãã§ã«æããã§ã:-)
ãã®ã¬ããŒãã¯çŽç²ã«å®çšçã§ãã ãšãªã¶ãã¹ã®ä»å¹Žã®å®éã®äœæ¥ã®1ã€ã¯ãæ¢åã®ã¬ã¬ã·ãŒãããžã§ã¯ãïŒWCFãWeb APIãMVCãWebãã©ãŒã ïŒãã¯ãã¹ãã©ãããã©ãŒã ã«ããããšã§ãã ãã®ã¿ã¹ã¯ã¯éåžžã«å€å
žçã§ããã転éã®ããã»ã¹ã«ã¯å€ãã®åé¡ãããããã®ãã¡ã®1ã€ã¯ã¢ãã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã§ãã
ãšãªã¶ãã¹ã¯ãã¢ãã¢ããªã±ãŒã·ã§ã³ã®ãããã°ããã»ã¹ããã䟿å©/å¿«é©ã«ããæ¹æ³ã説æãããããã°ããã»ã¹ãå®éã«ã©ã®ããã«è¡ããããã瀺ããŸãã éäžã§ã次ã®ãã¯ãããžãŒã«ã€ããŠãç解ããŸãã
ãããã¬ãŒïŒ
- ãœãããããã¬ãŒ
- äœã¬ãã«ã®åé¡ã解決ããããã®GNUãããã¬ãŒã
- LLDB;
ãããã¡ã€ã©ãŒïŒ
- ã¢ããã°ãããã¡ã€ã©ãŒ;
- Valgrind;
- HeapShot;
ããã«ããããã®ããŒã«ãšãåŸæ¥ã®.NETã¢ããªã±ãŒã·ã§ã³ããã³.NET Coreã®ãããã°ã«äœ¿çšãããé¡äŒŒç©ãšã®æ¯èŒãè¡ãããŸãã
ã¯ã©ã¹ã¿ãŒãšã¯ã©ãŠã
è¿å¹Žã®æãèªå€§ãªè©±é¡ã®1ã€ã¯ããã®äŒè°ã®ã»ãŒæ倧ã®ãããã¯ã§ããåæã§ãã èšå€§ãªéã®æ°ãããã¯ãããžãŒããã¬ãŒã ã¯ãŒã¯ãç§å¯ã®ããŠããŠãªã©ãããã§çŽ¡ãããŠããŸãã ãããã圌ãã®ããŠããŠãäŒããããšãã§ããå°é家ã¯ã¯ããã«å°ãªãã§ã-ãããŠç§ãã¡ã¯ãããããã¹ãŠéããŸããïŒ
ã»ã«ã²ã€ã»ãã³ãããã€ã¯ããœãã
ãã®è¬æŒã¯ãMicrosoft Researchãéçºãããã¬ãŒã ã¯ãŒã¯ã§ããMicrosoft Orleansã«ã€ããŠã§ãã
ãªã«ã¬ã¢ã³ã®éçºãããŒãžã£ãŒãããã«ã€ããŠæããŠãããŸãã Sergey Bykovã¯ãMicrosoft Researchã§Orleansãããžã§ã¯ããéå§ããXboxéšéã®ãªãŒãã³ãœãŒã¹ã§ã®éçºãäž»å°ãç¶ããŠããŸãã
Orleansã¯ãã·ã¹ãã ãæ§ç¯ããããã®æ ¹æ¬çã«æ°ããã¢ãããŒããæäŸããŸããããã«ãããéçºè
ã¯ãã·ã³ãã«ã§çŽæçãªããã°ã©ãã³ã°ã¢ãã«ãéããŠãã¹ããŒããã«ã¢ãŒããã¯ãã£ããã®ä»ã®å€ãã®éèŠãªå©ç¹ã掻çšã§ããŸãã Orleansã¯ã倧ãããã²ãŒã HaloãGears of WarãAge of EmpiresãSkypeãAzureããã®ä»ã®Microsoftã·ã¹ãã ãIoTã財ååæããã®ä»ã®å€ãã®åéã§äœ¿çšãããŠããŸãã JVMãGoãããã³Erlangçšã«äœæãããOrleansã¯ããŒã³ã¯ãOrleansã®æåã®ãããªã蚌æ ã§ãã
Dino EspositoãJetBrains
æ¢ã«ãåç¥ã®ããã«ããã€ã¯ããµãŒãã¹ã¯ããã¯ãããžãŒããã©ãã€ã ãããã«ã¯ããŒã¿ã«é¢ããŠãäºãã«ç¬ç«ããæ©èœã®åçŽå±€ã§ãã ä»ã®åé¢ãããã¢ãžã¥ãŒã«ãšåæ§ã«ããã€ã¯ããµãŒãã¹ã¯ããªã°ã¬ãã·ã§ã³ã®ãªã¹ã¯ãªãã§ç°¡åã«äº€æãŸãã¯æžãæãã§ããæ°Žå¹³æ¹åã«ã¹ã±ãŒã«ã¢ãŠãããããšãã§ããŸãã ãã€ã¯ããµãŒãã¹ã¯ãåæ£ã¢ãŒããã¯ãã£ã®ççµåãããéšåã«ãªãå¯èœæ§ããããŸãããåå¥ã«åç¬ã§äœ¿çšã§ããŸãã ãã®ãããªã¢ãŒããã¯ãã£ã«ã¯å€ãã®å©ç¹ããããå€ãã®æ¬ ç¹ã¯ãããŸããã ããã«éèŠãªããšã¯ãããã話ãã®ãæ
£ç¿çã§ãããããã¯ããã«é »ç¹ã«èµ·ããããšã§ãã ãã€ã¯ããµãŒãã¹ã¯ãé©åã«èšèšãããå
æ¬çãªã·ã¹ãã ã§ã¯ãªããã®ã«å¯Ÿããç¹å¥ãªååã§ãã
ãã®ã¬ããŒãã§ã¯ãDinoã¯ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã®éçºã«ãããèŠçãªçµéšãå
±æããŸãããã®éã圌ã®äŒç€Ÿã¯å€ãã®æ®µéã§ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ§ç¯ããæå
ã«éåžžã«éããããªãœãŒã¹ãæã¡ãã¬ã³ã¬ã§çµæãåéããæ°ããæå·ãè¿œå ãããšãã«å€ããã®ãèœã¡ãªãããã«ããŸãã
Dinoã¯æåãªãã¬ãŒããŒãã³ã³ãµã«ã¿ã³ãããšãã³ãžã§ãªã¹ãã§ãããæ¥æé·ããITäŒæ¥ã®CTOã§ãã 圌ã¯Microsoft Pressã®ããã«å€ãã®æåãªæ¬ãæžããŠããŸãã ãã®å ±åæžã¯ããã£ããç§ãã¡èªèº«ãã²ãã£ããã®ãã¹ãŠã®æ··ä¹±ãé©åã«å
æããæ¹æ³ãäŒãããšããèŒãããäŒçµ±ãç¶ããŠããŸãã
Dinoã«ã¯å¥ã®ã¬ããŒããããããšãæãåºããŠãã ãã-æåŸã®åºèª¿è¬æŒã¯ãééããªãããã«è¡ã䟡å€ããããŸãã
ã¢ã¬ãã¯ã¹ã»ãã£ãã»ã³ãXpirit
ãã§ã«ã¯ã©ãŠããšãã€ã¯ããµãŒãã¹ã«ã€ããŠè©±ããŠããå ŽåãMicrosoft補åã®äžçã§æåã®é¢é£ã¯Azureã§ãã
Azure Functionsã䜿çšããŠãµãŒããŒã¬ã¹ã¯ã©ãŠããµãŒãã¹ãäœæã§ããŸããå®éãããã¯åæ£ã³ã³ãã¥ãŒãã£ã³ã°ãšãã¹ãã£ã³ã°ã®é²åã«ãããæ°ãã段éã§ãã ãã®ãã¯ãããžãŒã®äœ¿çšã®è©³çŽ°ã説æããããã«ãææ°ã®åæ£ã¢ããªã±ãŒã·ã§ã³éçºã®ã³ã³ãµã«ã¿ã³ãã§ãããMVPã®10åã®ææè
ã§ããããã¡ããAzure Functionsã®ãšãã¹ããŒãã§ããAlex Thissenãæ¥ãŸãã
ãã®è¬æŒã§ã¯ãAlexãAzure FunctionsãšCïŒã䜿çšããŠéçºããæ¹æ³ãšãããããã¹ãŠAzureã§ãã«ãããã¹ãããããã€ããæ¹æ³ãåŸã»ã©èª¬æããŸãã .NETããã°ã©ãã³ã°ã®è©³çŽ°ãã¢ãŒããã¯ãã£ã®è©³çŽ°ãå
éšå®è£
ã«ã€ããŠèª¬æããŸãã ããã«ãAlexã¯ãããããã¹ãŠãããŒã«ã«ãã·ã³ã§éå§ããã³ãã¹ãããæ¹æ³ã瀺ããŸãããã®ãããè¬æŒã®çŽåŸã«ãAzure Functionsã䜿çšããŠã¯ãŒã«ãªã¢ããªã±ãŒã·ã§ã³ãç¬èªã«éçºããã³äœæã§ããŸãã
ã€ã¢ã³ã»ã¯ãŒããŒãããã«
ã¯ã©ãŠããã€ãã£ãã«ã€ããŠã¯ãããããæ¢ã«èããããšãããã§ãããããµãŒããŒã³ãŒãã®ç¶ç¶çãªå±éãšç°¡åãªã¹ã±ãŒãªã³ã°ã§ãã Dockerãšãã€ã¯ããµãŒãã¹ã«ã€ããŠèããããšããããŸãã ããããã¿ã€ãã«ã«èšèŒãããŠãã12èŠçŽ ã¢ããªã±ãŒã·ã§ã³ã¯äœã§ããïŒ ããšããšHerokuã®ãããã€ã¡ã³ããšã³ãžãã¢ã«ãã£ãŠéçºããããã®æ¹æ³è«ã¯ãã¯ã©ãŠããã©ãããã©ãŒã çšã®ã³ãŒããèšè¿°ããéã®ãæåã®ã¬ã·ããã§ãã ãã®ã¬ããŒãã§ã¯ãã¡ãœããã®æ¬è³ªã«ã€ããŠèª¬æãããã®ã¡ãœããã®ãã¹ãŠã®èŠä»¶ãæºãã.NETçšã®ã¢ããªã±ãŒã·ã§ã³ã®äœææ¹æ³ã瀺ããŸãã ãã¡ãããASP.NET Coreã䜿çšããå®äŸããããŸãããã®æ¹æ³ã§æ§ç¯ãããã¢ããªã±ãŒã·ã§ã³ã®æããé¢ãšæãé¢ã®æŠèŠã説æããŸãã ãµãŒããŒãªãã§ããŸãã¯Azure Service Fabricã䜿çšããŠãããå±éããæ¹æ³ã瀺ããŸãã
è¬æŒã®çµãããŸã§ã«ãCloud Nativeã®ç解ãæ·±ãŸããŸãã20幎以äžã®çµéšãæã€ãã³ãã³ãæ ç¹ãšããã¢ãŒããã¯ãã§ãããïŒldnugã®åµèšè
ã§ãããé©åãªã¢ãŒããã¯ãã£ããã¿ãŒã³ãåªãããã¶ã€ã³ãã©ã¯ãã£ã¹ãå°éãšããæåãªã¹ããŒã«ãŒã§ããIan Cooperããããæ¯æŽããŸãã
ããã¹ã»ã€ã¯ããã2GIS
ãã¯ã©ãŠããã¬ããŒãã®äžã§ã茞éã·ã¹ãã ã«ç¹åãã3ã€ã®ã¹ããŒãªãŒã®ã°ã«ãŒããéç«ã£ãŠããŸãã ãã®ã¬ããŒãã®ã¬ãã¥ãŒã§ã¯ãã«ãã«ã第äžäœã«ããªãããšã¯å°é£ã§ãã-.NETã³ãã¥ããã£ã§äººæ°ããããæãããŠããŸãã
念ã®ããã Apache Kafkaã¯ã¡ãã»ãŒãžãããŒãåŠçããããã®ãªãŒãã³ãœãŒã¹ãã©ãããã©ãŒã ã§ããããšãæãåºããŠãã ããã Kafkaã®åºç€ãšãªãåæ£ãã°ã®æœè±¡åã«ããããã¥ãŒã·ã¹ãã ãšããŠäœ¿çšã§ããããã«ãªããŸãããåæã«ãESBã¬ãã«ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯å©çšã§ããªãéåžžã«æçšãªå©ç¹ãããã€ããããŸãã
ãã®ã¬ããŒãã§ã¯ãDenis Ivanovã®å³æ Œãªã¬ã€ãã³ã¹ã®äžã§ãApache Kafkaã®åºç€ãšãªãåºæ¬ååãåæããApache Kafkaã䜿çšããŠåé¡ãç°¡åãã€å¹æçã«è§£æ±ºã§ããæ¹æ³ãšã±ãŒã¹ãèŠã€ããŸãã
ããããæãéèŠãªããšã¯ããã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ãæã¡ãããã¯ãšã³ãã.NET CoreãšScalaã«å®è£
ãããŠããã·ã¹ãã ã§ã®Apache Kafkaã®å®éã®äœ¿çšãæ€èšããããšã§ãã ãã°ãããReactive Extensionsã©ã€ãã©ãªã«ã€ããŠèª¬æãããªã¢ã¯ãã£ãã¢ãããŒãã䜿çšãããšãã³ãŒããã·ã³ãã«ã§ä¿¡é Œæ§ãé«ããçç£æ§ãç¶æã§ããããšã瀺ããŸãã
ãã®ã¬ããŒãã¯ããã€ã¯ããµãŒãã¹ã¢ããªã±ãŒã·ã§ã³ãäœæãããšãããããŠãã®ãããªäžé£ã®ãã¯ãããžãŒã䜿çšãããšãã§ããåžžã«éåžžã«éèŠãªæ©èœãšãã¥ã¢ã³ã¹ãå¿ããŸããã§ããã 倧èŠæš¡ãããžã§ã¯ãã§åŸãããå®éã®çµéšã«ã€ããŠèª¬æããŸãã Denisã¯è²©å£²ã·ã¹ãã ãšåºåãµãŒãã¹ã®2GISã§åããWindowsãšmacOSã®CïŒã§ã³ãŒããèšè¿°ããLinuxã«ã³ã³ãã€ã«ããŠã¢ããªã±ãŒã·ã§ã³ãå±éããŸãããããã£ãŠã圌ã¯èªåãäœã«ã€ããŠè©±ããŠããããç¥ã£ãŠããŸãã ã¬ããŒãã®ãªã¹ããŒã§ããç§ãã¡ã«ãšã£ãŠãããã«ãããåæ§ã®åé¡ã解決ããå¿
èŠãããå Žåã¯ãããã«èªåèªèº«ãæ¹åä»ããããšãã§ããŸãã
ããŒã©ã³ãã»ã¬ã€ããRMG Holding BV
ã¡ãã»ãŒãžã³ã°ã䜿çšããŠãã€ã¯ããµãŒãã¹ãå®è£
ããã¢ãŒããã¯ãã£ã®ããŒããç¶ç¶ããã«ã¯ããµãŒãã¹ãã¹ã«ã€ããŠèŠããŠããå¿
èŠããããŸãã ããã€ãã®ãªãã·ã§ã³ããããŸãããã©ã®ããã«éžæããã®ã§ããïŒ .NETçšã®MassTransitãšNServiceBusããããã©ã¡ããçŽ æŽãããåäœãããŸãã ããããå€éšã®é¡äŒŒç¹ã«ããããããããããã«ã¯å€§ããªéãããããŸãã
ãã®è¬æŒã§ã¯ãRonaldãMassTransitãšNServiceBusã®äž»ãªæ©èœãšAPIã«ã€ããŠèª¬æããé¡äŒŒç¹ãšçžéç¹ã«æ³šç®ããŸãã ãã®ã³ã³ãã®æåŸã«ãããªãã®ç³è«ã«æãé©ããåè
ãéžæããããšãã§ããŸãã ïŒä»ããè³ããããšãã§ããŸãïŒïŒ
Vagif Abilovããã€ã«
èè
ã®äœãã§ããå Žæã«å€©æ°ããŒã¿ãè¿œå ããŠãæ°è¡ã®ã³ãŒãã§Twitterããã®é£ç¶ããã¡ãã»ãŒãžã®ã¹ããªãŒã ãå°å·ããã«ã¯ã©ãããã°ããã§ããïŒãŸããæ°è±¡ãããã€ããŒãžã®ãªã¯ãšã¹ãã®é床ãå¶éããŠããã©ãã¯ãªã¹ãã«ç»é²ãããªãããã«ããã«ã¯ã©ãããã°ããã§ããïŒããã¯ãã¹ãŠãã¬ããŒãã®æåŸã®éšåã®ãã¢ã§èŠãããšãã§ããŸãã
ãã®åã«ãAkka Streamsãã¯ãããžãŒã«ã€ããŠåŠã³ãŸããããã«ãããåã
ã®ã¢ã¯ã¿ãŒããªã¢ã¯ãã£ãã¹ããªãŒã ã€ã³ã¿ãŒãã§ã€ã¹ãæåã§å®è£
ããå¿
èŠãªããLINQåŒã䜿çšããããã°ã©ããŒãšåããããç°¡åã«ãªã¢ã«ã¿ã€ã ããŒã¿ã¹ããªãŒã ãæäœã§ããŸãã
â - 30- . Github â @object . F# C#. , - Simple.OData.Client .
,
Raffaele Rialdi, Vevy Europe
â , . Expression Trees - () . Expression Trees .NET . , â API Roslyn/CodeAnalisys, , , , .
, , . , â , ? , .
â , , MVP Developer Security 2003 , enterprise-, C# C++. , , , .NET, .
, Microsoft
, , - ⊠, , , .
.NET Core . Mono ? , , Mono .NET. , .NET Core Mono , , Embeddinator .
â Xamarin (Microsoft) Mono BCL. Mono .NET Core. , â . - , .
, Zerocracy
â «» -. , ( â «», â «», â «»), «» . .
, DotNext, , , , . â « Elegant Objects », CEO Zerocracy Java open source ( Rultor , Takes , JCabi ).
(aka TDD) 2002. 2014 ( Ruby on Rails) , TDD . ( SOLID-) , TDD . - TDD , « , TDD ». , â , , , . . , , .
Dylan Beattie, Spotlight
, â . Dylan Beattie â , . , â , , â API . , , , DotNext .
. , , . UI , â . â . , , .
, user experience. â , â . , â , API, - , . , - . « discoverability ». ( , , , «»).
, user experience, API, , discoverability . , , discoverability . , , hypermedia API â , - â â , ?
, EPAM
Newtonsoft.Json
â NuGet. , , â Entity Framework. , , .NET . â , -, . .
F# â . , , , , F#.
, , , , â !
F# . Machine Learning , .
. , , â .
Mark Seemann, blog.ploeh.dk
â . - « » .
â Dependency Injection in .NET , - , , . . , .
?
- dependency injection â , , . .
dependency injection - , ( ) . , , .
, Deutsche Bank Technology Centre
. , , . , , . C# . Linq . C# , , Reactive Extensions ( ).
, C#? . , , Null Reference Exception, Linq .
ã»ãã¥ãªãã£ã®åé¡
, ! , , . .
, JUG.ru Group . , â .
2.0 ASP.NET, .NET Core 2.0 . - Microsoft .
security features ASP.NET , XSS CSRF, , .
, ASP.NET-, , security review .NET-, . , , .
, Positive Technologies
, . â .
.NET- (HTML, JavaScript, URL, SQL, Path .).
, , .
LibProtection, API .
Machine Learning &
Machine Learning â . , â SmartData , . DotNext !
, Microsoft
. Microsoft , .. .
â , , Windows .
, .NET- : , , .NET- Raspberry Pi.
Dina Goldshtein, Google
â , . , , , , . ETW CLRMD , . : GC, CPU, , . Riverbed , â , , .
, DevOps
, , . «Self-aware applications», - , .
, Paladyne Systems
. â . , , . , .
, , . , Time Series . , InfluxDB Grafana .
Matthias Koch, JetBrains
â JetBrains, , 5 open source , TestFx, TestLinker NUKE .
NUKE â , C# DSL. , . NUKE , C#, IDE , , . NUKE . â !
, TYME
Linux? â TYME, , .NET Core Linux.
.NET Core Linux, . , : GitLab, TeamCity, Ansible, Octopus Deploy, Docker. . , TYME Linux.
å°ãã®å²åŠ
Dino Esposito, JetBrains
2048 . ? , ?
â â . . 2008 Bitcoin. Bitcoin, â Blockhain. â â , . , - , . , . , , â , â .
, 2048 , , . , , RFID, . (, 2017 !). , . , , - â , , , â .
, , â , . (, , , 2048!). -? , . , , . ( , â , 70, ). , .