/**
* ドメイン非依存URL出力フィルタ
* javadrill.tech移行時はwp_options.home/siteurlのみ変更すればよい
*
* データベースには絶対URL(https://minner.asia)を保持し、
* 表示時に現在のドメイン(home_url())に動的変換する
*/
function javadrill_make_urls_dynamic($content) {
if (empty($content)) {
return $content;
}
// データベース内の絶対URLを現在のhome_url()に置換
$old_url = 'https://minner.asia';
$new_url = untrailingslashit(home_url());
// http版も対応(念のため)
$content = str_replace($old_url, $new_url, $content);
$content = str_replace('http://minner.asia', $new_url, $content);
return $content;
}
// 投稿本文、ウィジェット、タームの説明、抜粋に適用
add_filter('the_content', 'javadrill_make_urls_dynamic', 20);
add_filter('widget_text', 'javadrill_make_urls_dynamic', 20);
add_filter('term_description', 'javadrill_make_urls_dynamic', 20);
add_filter('get_the_excerpt', 'javadrill_make_urls_dynamic', 20);
DatabaseConnection ã¨ã„ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã¸ã®æŽ¥ç¶šã¨ã‚¯ã‚¨ãƒªã®å®Ÿè¡Œã‚’行ã†ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚ã¾ã™ã€‚ ã“れã«ã‚ˆã‚Šã€ç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’扱ã†ã‚¯ãƒ©ã‚¹ãŒå…±é€šã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスをæŒã¡ã€ãƒ—ãƒã‚°ãƒ©ãƒ ãŒã“れらã®ã‚¯ãƒ©ã‚¹ã‚’使ã£ã¦ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹æ“作を行ãˆã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚ →解ç”例å•題
MySQLã€PostgreSQLãªã©ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’扱ã†ã‚¯ãƒ©ã‚¹ã§ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã—ã¾ã™ã€‚ヒント
DatabaseConnection ã¨ã„ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¾ã™ã€‚
MySQLDatabaseConnection クラスや PostgreSQLDatabaseConnection クラスãªã©ã€ç•°ãªã‚‹ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’扱ã†ãŸã‚ã®ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã¾ã™ã€‚DatabaseConnection インターフェイスを実装ã—ã¾ã™ã€‚DatabaseConnection インターフェイスã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’具体的ã«å®Ÿè£…ã—ã¾ã™ã€‚
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
Drawable ã¨ã„ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¦ã€å›³å½¢ã‚’æç”»ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚ã¾ã™ã€‚
円ã€å››è§’å½¢ã€ä¸‰è§’å½¢ãªã©ã‚’表ã™ã‚¯ãƒ©ã‚¹ã§ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã—ã¾ã™ã€‚
Drawable インターフェイスを作æˆã—ã€æç”»ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚ã¾ã™ã€‚Drawable インターフェイスを実装ã—ã¾ã™ã€‚Drawable インターフェイス㮠draw メソッドをオーãƒãƒ¼ãƒ©ã‚¤ãƒ‰ã—ã¦ã€å…·ä½“çš„ãªæç”»å‡¦ç†ã‚’実装ã—ã¾ã™ã€‚ãれãžã‚Œã®å›³å½¢ã«é©ã—ãŸæç”»ã‚³ãƒ¼ãƒ‰ã‚’è¿½åŠ ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Drawable インターフェイスを実装ã™ã‚‹æ–°ã—ã„図形クラスを簡å˜ã«è¿½åŠ ã§ãã€ã“れらã®ã‚¯ãƒ©ã‚¹ã¯å…±é€šã®æç”»ãƒ¡ã‚½ãƒƒãƒ‰ã‚’æä¾›ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
Notification ã¨ã„ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¦ã€é€šçŸ¥ã‚’é€ä¿¡ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚ã¾ã™ã€‚
メール通知ã€SMS通知ãªã©ã‚’扱ã†ã‚¯ãƒ©ã‚¹ã§ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã—ã¾ã™ã€‚
void sendNotification(String message); ãªã©ã€‚ã“れらã®ãƒ’ントを元ã«ã€Notification インターフェイスをè¨è¨ˆã—ã¦ãã ã•ã„。ãã®å¾Œã€ãƒ¡ãƒ¼ãƒ«é€šçŸ¥ã‚„SMS通知を扱ã†ã‚¯ãƒ©ã‚¹ã§ã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
FileOperation ã¨ã„ã†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¦ã€ãƒ•ァイルã®èªã¿è¾¼ã¿ã¨æ›¸ãè¾¼ã¿ã‚’行ã†ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚ã¾ã™ã€‚
ãれを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã§ã€å…·ä½“çš„ãªãƒ•ァイルæ“作を行ã„ã¾ã™ã€‚
IOException ãªã©ã®ä¾‹å¤–ãŒç™ºç”Ÿã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€ãれã«å¯¾ã™ã‚‹ã‚¨ãƒ©ãƒ¼å‡¦ç†ã‚’考慮ã—ã¾ã™ã€‚try-catch ブãƒãƒƒã‚¯å†…ã§ä¾‹å¤–ãŒç™ºç”Ÿã—ãŸå ´åˆã®å‡¦ç†ã‚’実装ã—ã¾ã™ã€‚ã“れらã®è¦ç‚¹ã‚’考慮ã—ã¦ã€ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスをè¨è¨ˆã—ã€ãã®å®Ÿè£…クラスを作æˆã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ä»–ã®ã‚¯ãƒ©ã‚¹ãŒã“ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを実装ã™ã‚‹ã“ã¨ã§ã€ãƒ•ァイルã®èªã¿æ›¸ã機能を利用ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
テレビを表㙠TV クラスを作æˆã—ã¾ã™ã€‚
音é‡èª¿æ•´å¯èƒ½ãªã‚ªãƒ–ジェクトを示㙠VolumeAdjustable インターフェイスを作æˆã—ã¾ã™ã€‚
TV クラス㌠VolumeAdjustable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚
adjustVolume(int volumeLevel) メソッド: 音é‡ã‚’調整ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ã§ã™ã€‚引数ã«ã¯èª¿æ•´ã™ã‚‹éŸ³é‡ã®ãƒ¬ãƒ™ãƒ«ãŒå«ã¾ã‚Œã¾ã™ã€‚TV クラスを作æˆã—ã€VolumeAdjustable インターフェイスを実装ã—ã¾ã™ã€‚adjustVolume メソッド: 音é‡ã‚’調整ã™ã‚‹ãŸã‚ã®å…·ä½“çš„ãªå®Ÿè£…ã‚’æä¾›ã—ã¾ã™ã€‚例ãˆã°ã€ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰å†…ã§ãƒ†ãƒ¬ãƒ“ã®éŸ³é‡ã‚’è¨å®šã™ã‚‹å‡¦ç†ã‚’実行ã—ã¾ã™ã€‚ã“ã®è¨è¨ˆã«ã‚ˆã‚Šã€TV クラス㯠VolumeAdjustable インターフェイスを実装ã™ã‚‹ã“ã¨ã§ã€éŸ³é‡ã®èª¿æ•´æ©Ÿèƒ½ã‚’æä¾›ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
å¦ç”Ÿã‚’表㙠Student クラスを作æˆã—ã¾ã™ã€‚
勉強å¯èƒ½ãªã‚ªãƒ–ジェクトを示㙠Studiable インターフェイスを作æˆã—ã¾ã™ã€‚
Student クラス㌠Studiable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚
Studiable インターフェイス:
study ã¨ã„ã†ãƒ¡ã‚½ãƒƒãƒ‰ãŒå«ã¾ã‚Œã‚‹ã§ã—ょã†ã€‚Student クラス:
Studiable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Student クラス㯠Studiable ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®æ©Ÿèƒ½ã‚’æä¾›ã—ã€å‹‰å¼·ã§ãã‚‹å¦ç”Ÿã‚’表ç¾ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
車を表㙠Car クラスを作æˆã—ã¾ã™ã€‚
走れるオブジェクトを示㙠Runnable インターフェイスを作æˆã—ã¾ã™ã€‚
Car クラス㌠Runnable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚
Runnable インターフェイス:
run ã¨ã„ã†ãƒ¡ã‚½ãƒƒãƒ‰ãŒå«ã¾ã‚Œã‚‹ã§ã—ょã†ã€‚Car クラス:
Runnable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Car クラス㯠Runnable ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®æ©Ÿèƒ½ã‚’æä¾›ã—ã€èµ°ã‚Œã‚‹è»Šã‚’表ç¾ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
動物を表㙠Animal クラスを作æˆã—ã¾ã™ã€‚
飛ã¹ã‚‹å‹•物を示㙠Flyable インターフェイスを作æˆã—ã¾ã™ã€‚
Animal クラス㌠Flyable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚
Flyable インターフェイス:
fly ã¨ã„ã†ãƒ¡ã‚½ãƒƒãƒ‰ãŒå«ã¾ã‚Œã‚‹ã§ã—ょã†ã€‚Animal クラス:
Flyable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«æŒ‡å®šã—ã¾ã™ã€‚fly メソッドを実装ã—ã¦ã€å‹•物ãŒé£›ã¶æ–¹æ³•を示ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Animal クラス㯠Flyable ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã®æ©Ÿèƒ½ã‚’æä¾›ã—ã€é£›ã¹ã‚‹å‹•物を表ç¾ã—ã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
形状を表㙠Shape クラスを作æˆã—ã¾ã™ã€‚
æç”»å¯èƒ½ãªã‚ªãƒ–ジェクトを示㙠Drawable インターフェイスを作æˆã—ã¾ã™ã€‚
Shape クラス㌠Drawable インターフェイスを実装ã™ã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚
Shape クラスを作æˆã—ã¾ã™ã€‚ã“れã¯åŸºæœ¬çš„ãªå½¢çжã®ç‰¹æ€§ã‚’æŒã¤ã‚¯ãƒ©ã‚¹ã§ã™ã€‚Drawable インターフェイスを作æˆã—ã¾ã™ã€‚ã“ã‚Œã¯æç”»å¯èƒ½ãªã‚ªãƒ–ジェクトã«é–¢ã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’宣言ã—ã¾ã™ã€‚例ãˆã°ã€draw() メソッドãªã©ãŒè€ƒãˆã‚‰ã‚Œã¾ã™ã€‚Shape クラス㫠Drawable インターフェイスを実装ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€Shape クラス㯠Drawable インターフェイスã«å®šç¾©ã•れãŸãƒ¡ã‚½ãƒƒãƒ‰ã‚’æŒã¤ã“ã¨ã«ãªã‚Šã¾ã™ã€‚ã“れã«ã‚ˆã£ã¦ã€Shape ã‚¯ãƒ©ã‚¹ã¯æç”»å¯èƒ½ãªã‚ªãƒ–ジェクトã¨ã—ã¦æ‰±ã†ã“ã¨ãŒã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™
æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスã«è¤‡æ•°ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’å«ã‚€æ–°ã—ã„æ‹¡å¼µã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスを作æˆã—ã¾ã™ã€‚
ã“れを実装ã™ã‚‹ã‚¯ãƒ©ã‚¹ã‚’作æˆã—ã€å„メソッドを実装ã—ã¾ã™ã€‚
ã“れã«ã‚ˆã‚Šã€æ—¢å˜ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã«æ–°ã—ã„æ©Ÿèƒ½ã‚’è¿½åŠ ã—ãŸæ–°ã—ã„æ‹¡å¼µã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ェイスãŒã§ãã¾ã™ã€‚
→解ç”例
「017 インターフェイスã€å•題集リスト
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™