ããããéå»ã«æžããã³ãŒããã²ã©ãããããžã§ã¯ããéçºããæ©äŒãäžããŠããªãå Žåã¯ã©ãã§ããããïŒ å€ãéçºãèã«çœ®ããæ°ãããæ°žé ã®ãæãããã®ã«éãè²ããŸãããïŒã¯ããã¯ãããããŠããããªãã·ã§ã³ãªãã§ïŒã

CFãããªãã¯ã¹ããã®åŒçšïŒã1ã€ã®ã¿ãã¬ããã§ååã§ããNeoãã ç£ç£ïŒãŠã©ã·ã£ãŠã¹ããŒã®å åŒå§åŠ¹ã 1999.ã¢ã¡ãªã«
10幎以äžåãç§ã¯ASH Viewerã®ã³ãŒããæžãïŒ ããã§ç§ã®ãã¹ã«ã€ããŠè©³ãã説æããŸã ïŒããŸãsourceforge.netã«æçš¿ãã次ã«githubã«æçš¿ããŠã人ã ãæ¥ç¶ããŠæ©èœãè¿œå ãããšã©ãŒãä¿®æ£ã§ããããã«ããŸããã ãã®ãããžã§ã¯ãã¯Gradleã䜿çšããŠæ§ç¯ãããã°ã©ãã®è¡šç€ºã«é¢ããåé¡ã解決ããŸããã åç §ã«ããæ¹åã®ã»ãŒå®å šãªãªã¹ãã§ãã
ãããã10幎åã«æžãããã³ãŒãã¯ãæ§ããã«èšã£ãŠãäžå®å šã§ããããšã«æ°ä»ããŸããã å€èŠçã«ã¯ããã¹ãŠãè¯ãããã§ãæ©èœãéçºããã人ã ãç©æ¥µçã«äœ¿çšããæè¬ããŠããŸããã ããããããã°ã©ã ã®å éšã«ã¯ãæåã®ã³ãŒãã£ã³ã°çµéšã®ãã¹ãŠã®ãšã©ãŒãå«ãŸããŠããŸããããã¡ãããããã¯ãããžã§ã¯ãã®éçºã倧ãã劚ããŸããã
ã¢ããªã±ãŒã·ã§ã³ïŒããšãã°dcvetkov ïŒã§çå£ã«äœæ¥ãéå§ããæºåãã§ããŠãããã¹ãŠã®äººã«ãã³ãŒããå®å šã«å€æŽããå¿ èŠããããšèšããŸããã ãããŠãæ©èœãå®è£ ããããã°ãä¿®æ£ããããšãããã³ã«ãç§ã¯ããã確信ããŸããã ã¬ã¬ã·ãŒã³ãŒãã®ç·šéã¯ã²ã©ãæ·åã§ãããç¹ã«ç§ã®å Žåã¯ãã®ããšããç¥ããããŸã:)ã å°æ¥ã¯ããããããã¹ãŠãèªåã§æžãçŽãããšãåŠã¶ããšãæãã§ããŸãããä»ã®ãšããã¯ãããã°ã©ã ã®äœæãšã³ãŒãã®äœæã§ãã§ã«åŸãçµéšãèæ ®ããŠããŒãããå§ãããšãã匷ãææ決å®ããªãããŸããã
æåã®ãªãªãŒã¹ä»¥æ¥ãASH Viewerã¯ãã®åéã§ã¢ã¯ãã£ãã«ãªã£ãŠããŸãã ããŒã¿åæçšã®JfreeChartã«åºã¥ã3ã€ã®ããªã倧ããªãããžã§ã¯ããäœæãããŸããã ãããã®ãããžã§ã¯ãã«å ããŠãããŸããŸãªã¢ãããŒãããã©ãã€ã ãããã³ã©ã€ãã©ãªãè©ŠããŸããã ãã®çµæãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ããŒãããäœæããããã«ç¹å¥ã«èšèšãããã©ã€ãã©ãªã䜿çšããã«ããã¹ãŠãçŽç²ãªJavaã§èšè¿°ããå¿ èŠããããšããäºå®ã«èœã¡çããŸããã ãã ãããµãŒãããŒãã£ã®ã©ã€ãã©ãªã䜿çšããŠé«åºŠã«ç¹æ®åãããã¿ã¹ã¯ã解決ããããšã¯éåžžã«åãå ¥ããããŸããããã«ãããå¿ èŠãªã¬ãã«ã®æè»æ§ãç¶æã§ãããã°ãä¿®æ£ããããèªåã®æã§å¿ èŠãªæ©èœãéçºãããããã®ã«å€å€§ãªæéãè²»ããå¿ èŠããªããªããŸãã
ããããã¹ãŠå§ãŸã£ãæ¹æ³
ç§ã¯ãã€ãå¿é ããŠããŸããããJava Swingã§äžçšåºŠã®è€éãã®ã¢ããªã±ãŒã·ã§ã³ãæ£ããäœæããããã®åºç€ãäžãããããªãã¯ãã¡ã€ã³ã®äŸã¯ãããŸããïŒ ãã¡ããã圌ãã¯ç§ãå³æžé€šèªäœãŸãã¯æç§æžã®ç°¡åãªäŸã«éããŸããã ãããŠãããã€ãã®ç¹ã§åœŒãã¯æ£ããã£ãã
ããããJava Swingã§ãæ£ããè¡ãæ¹æ³ãã®äŸãšããŠäœ¿çšã§ããã¢ããªã±ãŒã·ã§ã³ã³ãŒããç¶ç¶çã«æ€çŽ¢ããŸããã ãããŠããæãããããããã«ãç®ã®åã«æ©èœããã·ã¹ãã ãå¿ èŠã§ããã
圌ã¯Java Swingã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã®ç 究ãéå§ããŸããïŒãã¹ãŠãã«ãŠã³ãããããšã¯ã§ããŸããïŒã ã©ããã§åçŽãªToDoã§ãã©ããè€éãããŠïŒåœæã®ç§ã«ãšã£ãŠã¯ïŒãäžéšã§ã¯å質ãèœã¡ãæã«ã¯äž¡æ¹ããããŸããã Habréã®èšäºãèªãã§ãã³ãŒããæžããŸããã ãããããŸã äœããæ¬ ããŠããŸããã ãããããã®æãç§ã¯ãã®åé¡ã解決ããããã«éèŠãªç¥èãåŸãŠããŸããã
ããæ¥ãç§ã¯å°æ¬ãããAnton Keks antonkeksã®Angry IP ScannerãçºèŠãããããèŠãŠããã«æ°ã¥ããŸãã-ããã«ãããŸãïŒ Java Swingãã·ã³ãã«ãªæ©èœãããããªã³ãŒããã¢ãžã¥ãŒã«æ§-èªãã®ã楜ãã¿ã§ãïŒ äžè¬ã«ã以åã®ãããžã§ã¯ãã®1ã€ãäœæãããšããããã³ASH Viewerãæžãæãããšãã«ããã®ã¢ãããŒãã§äœ¿çšãããã¢ãããŒãã䜿çšããŸããã
ã³ãŒãã®å質ãåäžãããäœæ¥ãç°¡çŽ åãããœãããŠã§ã¢ãšã©ã€ãã©ãª
IDEA ïŒç§ã¯ãã®IDEãJavaããã°ã©ãã³ã°ã«çŽ5幎é䜿çšããŠããŸãã ç§ã¯å€æ°æèŠã確èªããŸã-ããã¯æ¬åœã«äŸ¿å©ãªããã°ã©ã ã§ãããã³ãŒããæžãããã®éåžžã«äŸ¿å©ãªããŒã«ã§ãã Eclipse www.eclipse.org/ideããããã«ç§»åãããšãïŒãããŠæåã®ããŒãžã§ã³ã¯ãã®IDEã§æžãããŠããŸããïŒãçããã¬ãŒãã³ã°ã®åŸãIDEAãããªããå°ããæãåŽã«åãæ¿ããããšãããšæããŠãããããšã«æ°ä»ããŸãã:)ã ã³ãŒãå ã®ç¹°ãè¿ãã匷調衚瀺ããããšã§ãé©åãªç¶æ ãä¿ã¡ãæããªã³ããŒããŒã¹ããå®è¡ã§ããªããªããŸãã Ave JetBrainsïŒ
Java 8 ïŒçãã³ãŒãããµãŒãããŒãã£ã®Joda Timeã©ã€ãã©ãªã®äœ¿çšããã£ã³ã»ã«ã§ããæ°ããTime APIã®èšè¿°ãå¯èœã«ããã©ã ãåŒã
Dagger 2 ïŒä»¥åã«äœ¿çšããããšããªãäŸåæ§æ³šå ¥ãã¬ãŒã ã¯ãŒã¯ã ããããã©ããããããç§ã¯ãã®ã©ã€ãã©ãªãAnton antonkeksã«ãã£ãŠã©ã®ããã«äœ¿çšãããããæ¢ã ããã³ãã¬ãŒãã«åŸã£ãŠããããã«ãªããŸããã ããã°ã©ã ãã¢ãžã¥ãŒã«ã«åå²ããå¯èœãªå Žåã¯äŸåæ§æ³šå ¥ã䜿çšããŸãã ãããäžå¯èœãªå Žå ã圌ã¯äºåã«ã·ã§ã«ãªããžã§ã¯ãã®äœæã䜿çšããå¿ èŠãªå±æ§ãèšå®ããããåã«DIã䜿çšããŸããã§ããã
Mavenãã«ãã·ã¹ãã ã ããã¯äºå®äžã®æšæºã§ãããã«ãã·ã¹ãã ã§ãããããpom.xmlã䜿çšããŠã©ã€ãã©ãªããããã«è¿œå ããMavenã¢ãžã¥ãŒã«ã·ã¹ãã ã䜿çšããŠã1ã€ã®ãããžã§ã¯ãã§JFreeChartããã³Ganttã³ãŒããæäœããããšã«ããŸããã
ãã³ã㯠ïŒãŸããéåžžã«äŸ¿å©ãªã©ã€ãã©ãªã§ãããçµ±äžã³ãŒãïŒã²ãã¿ãŒãã»ãã¿ãŒãªã©ïŒã®ã足跡ããèšè¿°ãŸãã¯ãµããŒãããªãããã«ããŸãã 確ãã«ãå Žåã«ãã£ãŠã¯ãequalsãšcompareToãåå®çŸ©ããå¿ èŠãããããã䜿çšãæåŠããŸããããLombokã§ããããã°ããè¡ãæ¹æ³ã¯èŠã€ãããŸããã§ããã
ãžã£ãŒããªã³ã°ïŒå®å šãªJavaããã°ã©ã ãäœæããŸããïŒ ãããã£ãŠãçŸä»£ã®ãžã£ãŒããªã³ã°æ段ããªããã°ãã©ãã«ããããŸããã ãããã£ãŠã Java SLF4Jããã³Logbackã® Simple Logging Facadeã åºç€ãšããŠäœ¿çšããŸã ã
ã¬ã€ã¢ãŠããããŒãžã£ãŒïŒäž»ã«Miglayoutã䜿çšããŸã ã ç¿åŸããã®ã¯éåžžã«å°é£ã§ãïŒäžéšã®å Žæã§ã¯Swingã¬ã€ã¢ãŠããããŒãžã£ãŒãæãªããã®æ¹æ³ã§äœ¿çšããŠããŸãïŒããçãã§ãã [詳现]ã¿ããªã©ã®èå³æ·±ãå¹æãå®è¡ã§ããŸãã
Swinglabsã«ããSwingxïŒé·ãéæŸæ£ãããŠããJava Swing UI takelitã JXTableãç©æ¥µçã«äœ¿çšããŠããŸãã ããŒãã«åã®ä»»æã®éžæãšã»ã«ã®ã³ã³ãã³ãã®çµã¿èŸŒã¿æ€çŽ¢ã«ãããã¢ã¯ãã£ããªã»ãã·ã§ã³ã®å±¥æŽããŒã¿ã®è©³çŽ°ãªåæã容æã«ãªããŸãã
ommons-dbcp2 ïŒããŒã¿ããŒã¹æ¥ç¶çšã®æ¥ç¶ããŒã«ãäœæããã®ã«äŸ¿å©ã§ãã å€ãããŒãžã§ã³ã§ã¯ãã€ã³ã¿ãŒãããã§èŠã€ããä¿®æ£ãããå®è£ ã䜿çšããŸããã
å€ãããŒãžã§ã³ãã移åããã©ã€ãã©ãª
Oracle Berkeley DB Java Edition vã 5.0.73ïŒåã蟌ãŸããããŒãšå€ã®ã¹ãã¬ãŒãžã ã¢ã¯ãã£ããªã»ãã·ã§ã³ã®éèšãããå±¥æŽããŒã¿ãä¿åããŸãã
JFreeChart ïŒãã®ã©ã€ãã©ãªã䜿çšããŠèšè¿°ãããæ°åã®ããŒã¿åæãããžã§ã¯ãã ç§ã¯githubã«æçš¿ãããŠããå®éšçãªããŒãžã§ã³ãåãããããã¢ãžã¥ãŒã«ãšããŠè¿œå ããŸããã ããã¯ãã¹ã¿ãã¯ãã£ãŒããå¿ èŠã«å¿ããŠãã£ãŒãã衚瀺ããããã«å€æŽãå¿ èŠã§ãã£ããããã³ãŒããæäœããã®ã«äŸ¿å©ã§ãã
E-Gantt ïŒJava Swingã§ã¬ã³ãã°ã©ãã£ãã¯ã¹ãäœæããããã®ã©ã€ãã©ãªã æ®å¿µãªãããã€ã³ã¿ãŒãããäžã§ããã®çè·¡ãèŠã€ããããšã¯ã§ããŸããã ãããžã§ã¯ãå ã®å¥ã®Mavenã¢ãžã¥ãŒã«ãšããŠãé 眮ãããŸãã
ã³ãŒãã®é¢çœãããã泚ç®ã§ããããš
ã¢ãŒããã¯ãã£ã®å€æŽïŒ
- ããã§ãèšå®ã¯ãã¬ãŒã³ããã¹ããã¡ã€ã«ã§ã¯ãªããå¥ã®çµã¿èŸŒã¿ããŒã¿ããŒã¹ã«ä¿åãããŸãã ããŒã¿ãå°ãªããããæ¥ç¶èšå®ã®ä¿åã«ã¯é«åºŠãªEAVãã¿ãŒã³ã䜿çšãããŸãã
- ç£èŠããŒã¿ãä¿åããããã«ãäžçš®ã®OLAPãšã³ãžã³ãäœæããããšã«ããŸãã ã æåã«ãéžæããç¯å²ã§SQL_ID / SESSION_IDã«ããã¬ã³ãããªã«ããŠã³ã®è¡šç€ºãé«éåããŸãã 第äºã«ãç©ã¿äžãã°ã©ããšã¬ã³ãã°ã©ãã§SQL_ID / SESSION_IDã®é«éããªã«ããŠã³ãååŸã§ããããã«ããããã 第äžã«ãã¢ã¯ãã£ããªã»ãã·ã§ã³ã®å±¥æŽã®å°æ¥ã®è¡šç€ºã®åœ¢æïŒæåŸ ã®ããããæåŸ ã®ããªã«ãSQL_ID / SESSION_IDã®ããªã«ïŒã ãã¹ãŠã1ã€ã®ãšã³ãã£ãã£ã«æ ŒçŽãããŸãïŒ2çªç®ã15ç§ãããã³å°æ¥ãä»ã®æ¡åŒµééã®ããŒã¿ã¯ç©ççã«åé¢ãããŸãïŒã
- ã¯ãªãŒã³ã¢ãŒããã¯ãã£ã®å¯äœçšã¯ãä»ã®ããŒã¿ããŒã¹ã®ã¢ã¯ãã£ãã»ãã·ã§ã³ã®å±¥æŽã®ç£èŠããµããŒãããæ©èœã§ãã çŸåšå®è£
ãããŠããPostgresãµããŒãã ä»ã®ããŒã¿ããŒã¹ã«æ¥ç¶ããã«ã¯ãã¢ã¯ãã£ããªã»ãã·ã§ã³ã®å±¥æŽããŒã¿ïŒPostgresãŸãã¯ãã®ãããªå®è£
ã«è¿œå ãããïŒãžã®æ¢è£œã®ã€ã³ã¿ãŒãã§ã€ã¹ããŸãã¯åŸã§ã¢ã¯ã»ã¹ã§ããå¥ã®ããŒãã«ã«ããã¢ã¯ãã£ããªã»ãã·ã§ã³ã®å±¥æŽã®èªå·±èšå®ã³ã¬ã¯ã·ã§ã³ãå¿
èŠã§ãã
å¥ã®ããŒã¿ããŒã¹ã®ãµããŒããæå¹ã«ããæ¹æ³- æ°ããã¯ã©ã¹ãäœæããIProfileã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããŸãã Postgresã®å Žåãšåãããã«ããŸãã
- ããŒã¿ããŒã¹ã®æ°ããããŒãžã§ã³ã®å®è£ ãConnectToDbAreaã¯ã©ã¹ã®loadProfileããã·ãŒãžã£ãšConstantManagerã¯ã©ã¹ã®enum Functionã«è¿œå ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãæ¥ç¶ããŠç¢ºèªããŸãã
GUI
ããŒã¿ããŒã¹ãžã®æ¥ç¶ãã©ãŒã
å®å šã«ãŒãããæžãçŽããã以åã¯ãªãŒãã³Squirrel-sqlãããžã§ã¯ãã®ãã¹ããã©ã¯ãã£ã¹ã䜿çšããŠããŸããã ããã§ãã¹ãŠã1ã€ã®ãã¡ã€ã«ã«ãªããŸããã çŸäººïŒ

ããŒã¿ããŒã¹ã«æ¥ç¶ããæ¹æ³
- æ°ããæ¥ç¶ãäœæããŸãã
- ååãURLïŒJDBCã¯Oracleã®æšæºã§ãïŒjdbcïŒoracleïŒthinïŒ@hostïŒportïŒSIDãPostgresïŒjdbcïŒpostgresqlïŒ// hostïŒportïŒdatabaseïŒããŠãŒã¶ãŒå/ãã¹ã¯ãŒãããããã¡ã€ã«ãæå®ããjdbcã©ã€ãã©ãªãéžæããŸã;
- Oracleã®å Žåããã¹ãŠãojdbc6.jarã§åäœããŸã; PostgresDBã®å Žåãpostgresql-42.2.5ã§ã®åäœãæ€èšŒãããŸã
ãããã¢ã¯ãã£ããã£/詳现ã€ã³ã¿ãŒãã§ã€ã¹
ããã§ã¯ãå€ãããŒãžã§ã³ãšåæ§ã«ãéèŠãªå€æŽã¯ãªããå±¥æŽã衚瀺ããŸããã

SQL_ID / SESSION_IDã«ããããªã«
SQL

ASH ïŒç¹å®ã®SQL_IDã®ã¢ã¯ãã£ããã£ã°ã©ããã¬ã³ãã°ã©ãã®SQL_IDãæã€è¡ãããã«ã¯ãªãã¯ããŠåŒã³åºãããŸãã
SQLããã¹ã/ãã©ã³ ïŒOracle / Postgresã®å Žåããªã¯ãšã¹ãã®å šæãååŸã§ããŸãã ãã¹ãŠã®plan_hash_valueã«å¯ŸããŠã¯ãšãªãã©ã³ãæäŸãããã®ã¯ãOracleã®ã¿ã§ãã
çµ±èš ïŒSQL_IDã«ããããŒãã«ããŒã¿ïŒV $ SQLããã®ãã§ããã ã³ãŒãã«ã¯ãéžæå¯èœãªãšã³ãã£ãã£ãè¿œå ããæ©èœããããŸãïŒ å®è£ ãåç §ïŒã ãã ããããã©ãŒãã³ã¹ã®åé¡ãããå¯èœæ§ããããããéåžžã«æ³šæããå¿ èŠããããŸããããšãã°ãããŒããããã·ã¹ãã ã§V $ SQLAREAãããã§ããããã®ã¯éåžžã«é ãã§ãã
ã»ãã·ã§ã³

ASH ïŒsession_idã®ã¢ã¯ãã£ããã£ã°ã©ãã¯ãSQLãšåæ§ã«ãã¬ã³ãã°ã©ãããã»ãã·ã§ã³ã©ã€ã³ãããã«ã¯ãªãã¯ããŸãã
çµ±èš ïŒSQL_IDã«ããè¡šããŒã¿ïŒV $ SESSIONããã³V $ PROCESSããã®ãã§ããã ã³ãŒãã«ã¯ãéžæå¯èœãªãšã³ãã£ãã£ãè¿œå ããæ©èœããããŸãïŒ å®è£ ãåç §ïŒã
ä»åŸã®èšç»
- APIãã€ã³ã¹ããŒã«ããŸãã æçµçãªã³ãŒãã®ãªãã¡ã¯ã¿ãªã³ã°ãå®æœããŸãã ããŒã¿ããŒã¹ã®ããŒãžã§ã³ãšã¿ã€ãã«äŸåããªãåæç£èŠããŒã¿ã®åçã¹ãã¬ãŒãžãå®è£ ããŸãã
- ã·ã¹ãã ã®éèŠãªã¢ãžã¥ãŒã«ãCIãããã³ãã®ä»ã®ãã¹ããã©ã¯ãã£ã¹ããã¹ãããã®ã«ååãªãã¹ãã¯ãããŸããã
Githubãããžã§ã¯ãã³ãŒãããããžã§ã¯ããã¡ã€ã« ã
Telegram t.me/ashviewerã®ã°ã«ãŒãã«ãªã³ã¯ããŠãææ°ã®æŽæ°ã«ã€ããŠéç¥ããŸãã
PSéçºã«æ¥ç¶ããããšã決å®ãã人-LANãžã®æžã蟌ã¿ã¯ãé床ã®è奮ãªãã«ããããŠãã¡ããã¯ã©ãã·ã¥ãäœæããããšãªãã:)ã
以äžã§ãã ãæž èŽããããšãããããŸããïŒ