[mac]WindowsでMac用外部HDD(GPT保護パーティション)を初期化する

Written by uechoco 12月 31
この記事を読む時間:421くらい

MacのTimeMachineのバックアップに使用していたHDDを、Windows XP用のバックアップHDDに変えようと思って、Windowsにつなげて、ディスクの管理ツールでフォーマットしようとしたところ、GPT保護パーティションという表示になっていて、何も操作を受け付けないようになっていました。

以下の2つのサイトを参考に、Windows XPのコマンドラインアプリケーションのdiskpartツールを使って、Windows XPで使えるHDDとして初期化してみました。

以下がdiskpartツールのログです。

  1. Microsoft Windows XP [Version 5.1.2600]
  2. (C) Copyright 1985-2001 Microsoft Corp.
  3.  
  4. C:\Documents and Settings\hogehoge>diskpart
  5.  
  6. Microsoft DiskPart version 5.1.3565
  7.  
  8. Copyright (C) 1999-2003 Microsoft Corporation.
  9. コンピュータ: hogehogepc
  10.  
  11. DISKPART> list disk
  12.  
  13. Disk ###  Status           Size     Free     Dyn  Gpt
  14. --------  ---------------  -------  -------  ---  ---
  15. Disk 0    オンライン        466 GB      0 B
  16. Disk 1    オンライン        298 GB      0 B
  17. Disk 2    オンライン        298 GB      0 B
  18.  
  19. DISKPART> select disk=1
  20.  
  21. ディスク 1 が現在選択されているディスクです。
  22.  
  23. DISKPART> detail disk
  24.  
  25. Hitachi HDT725032VLA360
  26. ディスク ID: 02AB02AB
  27. 種類       : IDE
  28. バス       : 3
  29. ターゲット : 0
  30. LUN ID     : 0
  31.  
  32. Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  33. ----------  --- -----------  ----  ----------  -------  ---------  --------
  34. Volume 7    H                NTFS  Partition    146 GB  正常
  35. Volume 8    I                NTFS  Partition     83 GB  正常
  36. Volume 9    J                NTFS  Partition     69 GB  正常
  37.  
  38. DISKPART> select disk=2
  39.  
  40. ディスク 2 が現在選択されているディスクです。
  41.  
  42. DISKPART> detail disk
  43.  
  44. Hitachi HDT725032VLA360 USB Device
  45. ディスク ID: B07D94E2
  46. 種類       : USB
  47. バス       : 0
  48. ターゲット : 0
  49. LUN ID     : 0
  50.  
  51. ボリュームがありません。
  52.  
  53. DISKPART> clean
  54.  
  55. DiskPart はディスクを正常にクリーンな状態にしました。
  56.  
  57. DISKPART> exit
  58.  
  59. DiskPart を終了しています...

実行後、初期化が可能なディスクになっていました。

[php]86400

Written by uechoco 12月 21
この記事を読む時間:118くらい

86400って聞いて、すぐに何の数字か当てられる人は、一般の人にはなかなか居ないかもしれない。

ただ、プログラマーならこの数字は暗記しておくべきだと思う。256って数字を区切りがいいと思うように、86400もプログラマーにとっては神聖な数字だと感じてほしい。

ちなみに86400ってのは、1日の秒数ね。24[h] × 60[m/h] × 60[s/m] = 86400[s]

例えば、「3日前までのデータを取得する」プログラムなら以下のようなイメージ。

  1. $base_time = time() - 86400 * 3;
  2.   $sql = "SELECT * FROM hoge WHERE created_unixtime >= {$base_time}";

ポイントとしては、「86400*3」をそのまま計算せずに残しておくこと。「time() – 259200」じゃパッと見でよくわからないが、「time() – 86400 * 3」ならパッと見で3日前だとわかる。どうしても計算したいならコメントで「// 86400 * 3」とでも残しておくといい。

とはいっても人の好みかもね。

[symfony]app:routesコマンド

Written by uechoco 12月 21
[symfony]app:routesコマンド はコメントを受け付けていません。
この記事を読む時間:1121くらい

Jobeet(Practical symfony)の5日目にあった、ルートのデバッグをするためのコマンドが、app:routesコマンドです。

./symfony app:routes application [name]

試しにJobeetの5日目の状態で「./symfony app:routes frontend」をたたくとこんな感じです。

  1. $ ./symfony app:routes frontend
  2. >> app       Current routes for application "frontend"
  3. Name          Method Pattern
  4. job           GET    /job.:sf_format
  5. job_new       GET    /job/new.:sf_format
  6. job_create    POST   /job.:sf_format
  7. job_edit      GET    /job/:id/edit.:sf_format
  8. job_update    PUT    /job/:id.:sf_format
  9. job_delete    DELETE /job/:id.:sf_format
  10. job_show      GET    /job/:id.:sf_format
  11. job_show_user GET    /job/:company_slug/:location_slug/:id/:position_slug
  12. homepage      ANY    /
  13. default_index ANY    /:module
  14. default       ANY    /:module/:action/*

お決まりのdefaultルートに対して、「./symfony app:routes frontend default」をたたくとこんな感じです。

  1. $ ./symfony app:routes frontend default
  2. >> app       Route "default" for application "frontend"
  3. Name         default
  4. Pattern      /:module/:action/*
  5. Class        sfRoute
  6. Defaults    
  7. Requirements action: '[^/\\.]+'
  8.              module: '[^/\\.]+'
  9. Options      cache: NULL
  10.              context: array ()
  11.              debug: true
  12.              default_action: 'index'
  13.              default_module: 'default'
  14.              extra_parameters_as_query_string: true
  15.              generate_shortest_url: true
  16.              lazy_routes_deserialize: false
  17.              load_configuration: false
  18.              logging: false
  19.              lookup_cache_dedicated_keys: false
  20.              segment_separators: array (0 => '/',1 => '.',)
  21.              segment_separators_regex: '(?:/|\\.)'
  22.              suffix: ''
  23.              text_regex: '.+?'
  24.              variable_content_regex: '[^/\\.]+'
  25.              variable_prefix_regex: '(?:\\:)'
  26.              variable_prefixes: array (0 => ':',)
  27.              variable_regex: '[\\w\\d_]+'
  28. Regex        #^
  29.              /(?P<module>[^/\.]+)
  30.              /(?P<action>[^/\.]+)
  31.              (?:(?:/(?P<_star>.*))?
  32.              )?
  33.              $#x
  34. Tokens       separator  array (0 => '/',1 => NULL,)
  35.              variable   array (0 => ':module',1 => 'module',)
  36.              separator  array (0 => '/',1 => NULL,)
  37.              variable   array (0 => ':action',1 => 'action',)
  38.              separator  array (0 => '/',1 => NULL,)
  39.              text       array (0 => '*',1 => NULL,)

そしてsfPropelRouteCollectionによる自動生成ルートの1つに対して「./symfony app:routes frontend job_edit」をたたくとこんな感じです。

  1. $ ./symfony app:routes frontend job_edit
  2. >> app       Route "job_edit" for application "frontend"
  3. Name         job_edit
  4. Pattern      /job/:id/edit.:sf_format
  5. Class        sfPropelRoute
  6. Defaults     action: 'edit'
  7.              module: 'job'
  8.              sf_format: 'html'
  9. Requirements id: '\\d+'
  10.              sf_format: '[^/\\.]+'
  11.              sf_method: array (0 => 'get',)
  12. Options      cache: NULL
  13.              context: array ()
  14.              debug: true
  15.              default_action: 'index'
  16.              default_module: 'default'
  17.              extra_parameters_as_query_string: true
  18.              generate_shortest_url: true
  19.              lazy_routes_deserialize: false
  20.              load_configuration: false
  21.              logging: false
  22.              lookup_cache_dedicated_keys: false
  23.              method: NULL
  24.              model: 'JobeetJobPeer'
  25.              object_model: 'JobeetJob'
  26.              segment_separators: array (0 => '/',1 => '.',)
  27.              segment_separators_regex: '(?:/|\\.)'
  28.              suffix: ''
  29.              text_regex: '.+?'
  30.              type: 'object'
  31.              variable_content_regex: '[^/\\.]+'
  32.              variable_prefix_regex: '(?:\\:)'
  33.              variable_prefixes: array (0 => ':',)
  34.              variable_regex: '[\\w\\d_]+'
  35. Regex        #^
  36.              /job
  37.              /(?P<id>\d+)
  38.              /edit
  39.              (?:\.(?P<sf_format>[^/\.]+)
  40.              )?
  41.              $#x
  42. Tokens       separator  array (0 => '/',1 => NULL,)
  43.              text       array (0 => 'job',1 => NULL,)
  44.              separator  array (0 => '/',1 => NULL,)
  45.              variable   array (0 => ':id',1 => 'id',)
  46.              separator  array (0 => '/',1 => NULL,)
  47.              text       array (0 => 'edit',1 => NULL,)
  48.              separator  array (0 => '.',1 => NULL,)
  49.              variable   array (0 => ':sf_format',1 => 'sf_format',)

あまりに細かすぎて謎な感じですが、私が使うとしたら、詳細表示の末尾のTokensセクションにて、セパレータ文字が有効かどうかを確認するくらいでしょうか。以前セパレータに「_」を使ったらセパレータとして認識されなかったことがあったので、悩んだ末に「.」に変更したのですが、もしかしたらそこで使えたのかもしれません。

[symfony]propel:build-model時のBaseモデルのタイムスタンプ変更を停止する

Written by uechoco 12月 16
[symfony]propel:build-model時のBaseモデルのタイムスタンプ変更を停止する はコメントを受け付けていません。
この記事を読む時間:120くらい

symfonyでsubversionやgitなどのバージョン管理システムを使っているとき、symfonyコマンドのpropel:build-modelをした後に、モデルとPeerのベースクラスが根こそぎ更新されているのが気になっていませんか?

実はpropelがモデルとPeerのベースクラスのphpDocコメント内に、生成日時のタイムスタンプを入れているんです。このタイムスタンプがbuild-modelをするたびに書き変わるので、毎回バージョン管理システムの更新対象になってしまっています。

このタイムスタンプの生成を停止する方法がありました。

モデル再構築で余計な更新が発生しないようにする – aki77の日記

このブログに載っているように、config/propel.iniの中にある、propel.addTimeStampをfalseにすると、タイムスタンプの生成が停止します。この変更で、build-model後のsvn status/git statusの結果がだいぶ改善されました。これはぜひお勧めしたい設定です。

こういうような、symfonyの新規プロジェクトを立ち上げたら、始めにやっておくべきTODO集があるといいですね。

[雑記]「文字化けした」は英語で「garbled」

Written by uechoco 12月 15
[雑記]「文字化けした」は英語で「garbled」 はコメントを受け付けていません。
この記事を読む時間:12くらい

最近OpenPNE3に習って、gitのコミットメッセージを拙い英語で書くように努めています。

さきほど、「au端末だけ文字化けを起こしていたのを修正した」という内容のコミットメッセージを書こうとしたのですが、「文字化け」がわかりませんでした。(見栄を張らずに言うと、全部わからんけどw)

「文字化け」を調べると一応「garble」「garbled」と出てきます。元の意味は「不明瞭な」とかだそうですが、文字が化けると不明瞭な文字であるというところから、この単語が使われているのでしょうか。ちなみに「garbage character」というのも文字化けだそうです。ゴミくずみたいな文字だからってことでしょうか。。。

「au端末だけ文字化けを起こしていたのを修正した」をうえちょこ英語で訳すと「fixed garbled (only au-mobile)」とか。ツッコミしてもいいけど、まぁ、伝わればいいんです。