Go言語で皆大好き htpdate を書いてみた
4月 8, 2015 — 21:07

PCやサーバの時間合わせにntpdateを通常用いますが、80番と443番しか外部接続を許されないネットワークだとNTPが使えない事があります。そんな時にNTPの代替としてWEBサーバの時間を元にマシンの時間を合わせるコマンドが”htpdate”です。

仕組はHTTPのレスポンスヘッダに含まれる”Date”を元にソコソコ正確な時間を取得してOSの時間を設定します。
とても単純明快で清々しいくらいです。

例えばこのサーバだと、このようなレスポンスヘッダが帰ってきます。
この中の「Date: Wed, 08 Apr 2015 11:35:10 GMT」がサーバの時間となります。

HTTP/1.1 200 OK
Date: Wed, 08 Apr 2015 11:35:10 GMT
Server: Apache/2.2.3 (CentOS)
Last-Modified: Fri, 29 Jun 2012 10:40:46 GMT
ETag: "16e07e-5-4c39a14ab6780"
Accept-Ranges: bytes
Content-Length: 5
Connection: close
Content-Type: text/html

# vi htpdate.go

package main

import (
  "os"
  "fmt"
  "time"
  "syscall"
  "net/http"
)

// HTTPサーバへアクセスしてヘッダーからアクセス日時を取得する関数
func get_http_date(url string) (string, error) {
  response, err := http.Get(url)
  if err != nil { return "", err }

  access_time := response.Header.Get("Date")
  return access_time, nil
}

// 引数として受け取ったUNIXタイムをOSの時間に設定する関数
func settime(sec int64, usec int64) error {
  tv := syscall.Timeval{ Sec: sec, Usec: usec }

  return os.NewSyscallError("settimeofday", syscall.Settimeofday(&tv))
}

func main() {
  if len(os.Args) > 1 {
    // とりあえずHTTPサーバを1個だけ引数に受け取る
    host_name  := os.Args[1]
    target_url := "http://" + host_name

    // HTTPサーバからアクセス日時を取得
    access_time, err := get_http_date(target_url)
    if err != nil {
      fmt.Fprintln(os.Stderr, "Failed to access the HTTP server.")
      os.Exit(1)
    }

    // 取得した時間をパーズする
    server_time, err := time.Parse(time.RFC1123, access_time)
    if err != nil {
      fmt.Fprintln(os.Stderr, "Time of format is not a RFC1123.")
      os.Exit(1)
    }

    // 取得した時間をOSの時間として設定する
    if err := settime(server_time.Unix(), 0); err != nil {
      fmt.Fprintln(os.Stderr, "Failed to set the date and time.")
      os.Exit(1)
    }

    fmt.Println(time.Now())
    os.Exit(0)
  } else {
    fmt.Fprintln(os.Stderr, "Please set the HTTP server to argument.")
    os.Exit(1)
  }
}

実行してみると時間が設定される事が分かるはずです。
# go run htpdate.go orsx.net

2015-04-08 21:05:18.000046645 +0900 JST

Proxyなどは対応していませんがGo言語を勉強するうえで良い教材になりそうな気がしたので簡単に実装してみました。

[HTTP Time Protocol / htpdate] Webプロキシを経由して時刻を同期するの巻 – TrippyBoyの愉快な日々
Introduction | HTTP Time Protocol

ぴくぴくダウンローダ for Java(仮) Ver 6.00
2月 10, 2013 — 14:12

修正された項目

・Pixivの仕様変更に対応しました
・バージョンアップ通知機能の追加を行いました

バージョンアップがあった場合はアラートを表示します
WS000029

Windows7 での実行の様子
WS000000

MacOSX での実行の様子
スクリーンショット 2013-01-14 16.31.21

Linux での実行の様子
Screenshot-ぴくぴくダウンローダ for Java (仮)

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

ぴくぴくダウンローダ for Java(仮) Ver 5.10
2月 2, 2013 — 17:39

修正された項目

・ユーザIDを元に巡回すると作品名+作者名で保存できないというバグを訂正しました

Windows7 での実行の様子
WS000000

MacOSX での実行の様子
スクリーンショット 2013-01-14 16.31.21

Linux での実行の様子
Screenshot-ぴくぴくダウンローダ for Java (仮)

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

ぴくぴくダウンローダ for Java(仮) Ver 5.00
1月 14, 2013 — 16:54

修正された項目

・Pixivの仕様変更により作品のダウンロードに失敗するようになったので対応しました。
・ラジオボタンの挙動にバグがあったので修正しました。
・プログレスバーの存在理由がほとんど無いため廃止しました。

計画していた拡張はひと通り済んだのでしばらくは更新は行わないかもしれません。

Windows7 での実行の様子
WS000000

MacOSX での実行の様子
スクリーンショット 2013-01-14 16.31.21

Linux での実行の様子
Screenshot-ぴくぴくダウンローダ for Java (仮)

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

iPhone “メッセージ”(SMS/MMS)を一括削除する 要JB
9月 14, 2012 — 10:38

私のiOS5まで改善されなかった不満を上げると”メッセージ”アプリの一括削除機能が無いことでした。”編集”ボタンを押してちまちま削除しようにも数千件ぐらいメールが溜まっていては気が滅入ってしまいます。

そこで紹介するのが”iDelete-MSG”です。このアプリをインストールすると”編集”ボタンをクリックすると”Delete All”ボタンが右側に表示されそれをクリックすると一気に全てのメールを削除することができます。

が。。。しかし、ここまで紹介しておきながら実はこのアプリ何故か現在Cydiaの検索では見つかりません。。。。
BigBossにて無料で公開されているはずなんですけどねぇ・・・・

そこで困り果てて解決策を考えていたのですが、海外のサイトに解決策を見つけました。

How to Delete all Text Messages on iPhone with Single Tap

こちらのサイトにアプリのdebファイルが上がっているのでそれを直接iPhoneからiFile(有料版)でインストールすることで動きました。iFileは度々使い結構便利なので無料版しか持っていない人はこの際有料版を購入してもいいかもしれませんね。

ちなみに海外のサイトの方はiFunboxでインストールしたようです。

一応debファイルはここにも上げておこうかと思います。
ideletemsg_1.0.1
※ 作者ならびにその関係者の方で何か問題がございましたらご連絡ください。迅速に削除したいと思います。

最後に余談になってしまうのですが、あまりにもメールの件数が多すぎるとこのアプリを動かしている途中、iPhoneがフリーズする可能性があります。
そういう場合は再起動を繰返しながら一括削除をすことで解決することができます。

参考
iDelete-MSG – メッセージ履歴の『一括削除ボタン』を追加する [JBApp]

ぴくぴくダウンローダ for Java(仮) Ver 4.12
7月 25, 2012 — 15:47

修正された項目

イラスト・漫画を作品名+作者名で保存するのに対応しました。(GUIでのみ提供)
ラジオボタンの挙動にバグがあったので修正しました。
上記の拡張によりインターフェースを若干改変しました。

計画していた拡張はひと通り済んだのでしばらくは更新は行わないかもしれません。

Windows 7 での実行の様子

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

__追記(2012/10/31)__

Pixivの仕様が変わったようで小説収集機能が動作しないようです。時間を見つけて近日中に対応したいと思います。

ぴくぴくダウンローダ for Java(仮) Ver 4.01
7月 23, 2012 — 15:39

修正された項目

ショーケースの有無に関係なく作品をダウンロードできるようになりました。
ラジオボタンをわかりやすい挙動にしました。
内部的には次回のアップデートを意識し細かい拡張を行いました。

推奨環境・動作環境

推奨環境:Core2Duo以降のデュアルコアCPU搭載のパソコン
動作環境:Windows MacOSX Linux でJavaが動作する環境

Windows 7 での実行の様子(画像はVer4.00のものです)

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

ぴくぴくダウンローダ for Java(仮) Ver 4.00
7月 21, 2012 — 20:58

修正された項目

インターフェースを今後拡張しやすいように大幅に改変しました。
コマンドモード限定だった機能の一部をGUIでも利用できるようになりました。
ダウンロード終了時にダイアログが出るようになりました。

推奨環境・動作環境

推奨環境:Core2Duo以降のデュアルコアCPU搭載のパソコン
動作環境:Windows MacOSX Linux でJavaが動作する環境

Windows 7 での実行の様子

コマンドモードでの実行の様子

ダウンロード

こちらのダウンロードページよりダウンロードをお願い致します。

質問・問い合わせについて

質問・問い合わせは下のコメント欄にお願いいたします。また、質問を行う前に下記を確認してください。手順に沿わない場合は返答できない場合がございます。

正常に動かない等の問題があり質問・問い合わせを行う場合、実行場所(一軒家や集合住宅や学校などこれらの場所ではネットワークの環境が異なるため)、OS、Javaのバージョン、収集対象(実行時に指定したパラメータ)、停止した場所のコンソールの内容をお書きください。書いて頂けない場合こちらで検証することができないので返答することができません。

追加して欲しい機能がある場合、特にPixivの機能に依存するものなどは実際のページまでのURLなど詳しい情報をお書きください。それらの情報を元に今後のアップデートで実装可能か検討させて頂きます。

ぴくぴくダウンローダ for Java (仮) Ver4.00 画面設計公開
7月 16, 2012 — 14:33

結構要望が色々あったので次のバージョンアップ時(Ver 4.00)には今後、機能を追加しやすいようにデザインを一新する予定です。

Windows 7での画面のデザインイメージ(実際の公開時には多少異なる可能性があります)

ぴくぴくダウンローダ for Java(仮) Ver 3.01
7月 9, 2012 — 23:31

時間を見つけながらマイナーアップデートを行いました。

修正された項目
・ショーケースの画像をダウンロードしないようになりました。
・拡張子の後ろにゴミがつかないようになりました。
・設定時に適用を押すと、閉じるを押さずに設定を完了できるようになりました。

動作を確認した項目
・Windows環境ではJava Ver 7でも動作することを確認しました。

推奨環境:Core2Duo以降のデュアルコアCPU搭載のパソコン
動作環境:Windows MacOSX Linux でJavaが動作する環境

Windows 7 での実行の様子

コマンドモードでの実行の様子

Download
こちらのダウンロードページよりダウンロードをお願い致します。