Category Archives: Macintosh

Go言語で皆大好き htpdate を書いてみた

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

iPhone “メッセージ”(SMS/MMS)を一括削除する 要JB

私の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]

Ubuntu 11.10 プリンタ と MacOSX Lion を接続する

Windowsとの接続は普通にhttpで接続できていたのですが、なんかMacOSXとの接続のしかたがよくわからない・・・

苦戦していたらどうやらMacOSXの”プリントとスキャン”の設定には裏メニューがあるらしい事が分かった

システム環境設定 > プリントとスキャン > プリンタの追加(+ボタン)
ツールバーを右クリックすると”ツールバーをカスタマイズ”という項目が出てくるのでそれをクリック

“詳細”をツールバーへドラッグ&ドロップ

“詳細”よりIPPのhttpを選択することによりプリンタを指定する事ができる

プリンタのURLの例
http://<サーバ名>:<ポート番号>/printers/<プリンター名>

全く。。。分かりにくいですねぇ・・・

参考元:Mac OS X 10.5 Leopard からSambaプリンタに接続 – ろばの穴

iPhone iPod のリモコン コントローラが効かなくなった時の対処法

ポケットの中に入れるのでジャックの中に綿埃が入るみたいですね。
それで接触不良を起こしている事が多いようです。

それで詰まった綿埃を取り除く方法ですが、爪楊枝を折ったもの(斜めに切ったもの)をジャックの中に挿し込み回転させます。それで絡まった綿埃を引き出せば簡単に対処することができます。

針で同様に行うと内部に傷を付ける可能性があるので爪楊枝などを使うことをおすすめします。

Office For Macが快適に落ちてデータが飛ぶのを全力で阻止してみる

Mac for OfficeでWordを使っている人なら分かると思うのですが猛烈によく落ちます・・・1時間以上作業をすると必ず1〜3回は落ちます。。。

そして、一応作成中のデータは残っているのですがほぼ作り直しの状態になります。。。もう、キレそうになりますね。。。Macを使ってる私のMacに対する最大の不満です。
そして今回、自宅にいない、この何も出来ない時期にとっとと対策しておきたいと思います。

Officeの自動保存機能を利用してなるべく飛ぶ消失する量を減らしたいと思います。

試しにWordを開き、メニューバーの”Word”を開き、”環境設定”を開きます。

”保存”をクリックします。

”自動バックアップ”の間隔を10分から1分に変更します。

これでもしもWordが作業中に落ちても1分前のデータが残ると思います。
他のExcelやPowerPointも同じように設定できます。

MacOSX 10.6 セキュリティー対策 ClamXav

まぁ、別にUnix系OSはウイルスに感染する事が殆ど無いので気にすることではないのですが、自分が感染しなくとも他人のWin系パソコンにウイルスを中継する可能性があるので・・・
(特にサーバとして公開している場合など)

Unix系サーバでオープンソースのセキュリティーソフトの定番はClamAVなので今回Macでも同じように、このClamAVをGUIで操作するためのソフトClamXavを組み合わせて使用したいと思います。

本来ClamAVはCUIでコマンドを使い操作するので慣れない人は使いづらいかと思います。
自分もサーバじゃないので出来る限りGUIで操作できないかと思って探していました。
※ 実は常駐してくれるタイプでかつGUIのソフトを探していたのですが。。。フリーなのは無いですね^^;

ここからダウンロードできます。ClamAVがインストールされていない場合はClamAVをインストールするか聞いてくると思いますのでインストールしてあげてください。
ClamXav The Free Anti-Virus Solution for Mac OS X

インストーラ

起動画面(スキャン中)

参考:必ず入れておきたいMac用アンチウイルスソフト「ClamXav」

Mac OSX 10.6 Perl/Tk インストール

普通にcpanよりtkをインストールしたところmake testに失敗して下記のように止まってしまい困っていたところ解決方法を見つけたのでメモしておく。
SREZIC/Tk-804.029.tar.gz : make_test NO

ソースを書き換える為cpanのディレクトリへ移動する
$ cd /Users/orbit/.cpan/build/Tk-804.029-VTDuvi/
$ vi myConfig
my $ftinc = Ift(“/usr/include”,”/usr/local/include”,“/sw/include”,$X11INC||());

$ vi PNG/Makefile.PL
if (1)
{
Tk::MMutil::TkExtMakefile(
NAME => ‘Tk::PNG’,
VERSION_FROM => ‘PNG.pm’,
XS_VERSION => $Tk::Config::VERSION,
dist => { COMPRESS => ‘gzip -f9’, SUFFIX => ‘.gz’ },
OBJECT => ‘$(O_FILES)’,
INC => ‘-I/sw/include‘,
LIBS => [‘-L/sw/lib -lpng -lz -lm’],
);
}

$ perl Makefile.PL XFT=1
$ make
$ sudo make install

参考元:Mac OS X 10.6でのPerl(5.10)モジュールのインストール

iPhone アプリ アイコン 画像変更

アイコンは下記のように保存されているためアイコン画像を差し替える。
/var/mobile/Applications/[番号+アルファベット]/[アプリ名].app/icon.png
/var/mobile/Applications/[番号+アルファベット]/[アプリ名].app/icon@2x.png

ここで再起動して反映されない場合アイコン画像がキャッシュされている可能性があるのでキャッシュを削除する。

キャッシュは下記のディレクトリに格納されているので探して削除する。
/var/mobile/Library/Caches/com.apple.IconsCache/com.apple.[アプリ名]_defaultRole-defaultIcon-0
/var/mobile/Library/Caches/com.apple.IconsCache/com.apple.[アプリ名]_defaultRole-defaultIcon-24

Mac OSX 10.6 Perl 正規表現が動かない バックスラッシュの書き方

MacでPerlを使っていて非常に疑問だったのが何故か正規表現が正しく動作しない問題だったのですがWindowsと違ってMacでは¥マークが実はバックスラッシュと扱いが同じではなく¥を記述しても正常に動作しません。

バックスラッシュを実際に記述したい場合は下記のような入力を行う必要があります。
optionキー(alt) +

まだ試していませんがCやJavaなどの他の言語にも影響があるかもしれません。

Macの「っっw」を 「www」にする方法

サブマシンがMacBookになって「www」やShftを押して一文字大文字を作って英数入力を行うときなどで「っっっw」とか意思通り動かず地味にキレそうになってたのですが解決する方法を発見したのでメモしておきます。

Google 日本語入力 for Mac
これをダウンロードしてインストール後「システム環境設定」の「言語とテキスト」で上を使うようにすると「www」が普通に入力できるようになります。

ターミナルの文字が小さすぎて読みにくいとかいろいろ自分に合わせて調整中・・・