2012/01/28

Macでのインターネット共有

最近はWiFiにつなぐ機器を持ち歩く事が多くなりました。
iPhoneやiPad、そしてもちろんMacBookです。
ホテル等で有線LANが提供されている場合は、MacBookと有線LANを接続し、インターネット共有をONにする事で、MacBookをアクセスポイントとして利用する事が出来ます。

設定する箇所は、

  • 共有する接続経路を「Ehternet」にする。
  • 相手のコンピュータが使用するポートを「AirMac」にする。
  • 「AirMacオプション」で、適当なネットワーク名(半角英数字)と、暗号化の設定をする。(しなければ電波の届くところなら誰でも接続出来てしまいますので、なるべく設定して下さい。)
で、簡単に利用する事が出来ます。

しかし、最近はWiFiのみ提供されている場合があり、有料の場合、WiFiに接続する機器毎に課金される事になりますので、コストがかかります。
そんな時、小型の無線LAN親機を利用すれば、解決出来ます。

MacBookで公衆無線LANに接続し、無線LAN親機のWANポートをMacBookのEthernetにつなぎます。
次に、インターネット共有設定を行うわけですが、ここで、MacBookのEthernet設定を変更しなくてはいけません。

設定する手順は、
  • システム環境設定の「ネットワーク」よりEthernetの設定を開きます。
  • IPv4の構成を手入力にし、IPアドレスは「192.168.2.1」サブネットマスク「255.255.255.0」に変更
  • 「共有」から「インターネット共有」で、共有する接続経路を「AirMac」にする。
  • 相手のコンピュータが使用するポートを「Ethernet」にする。
そして、無線LAN親機のWAN設定で、
  • アドレス設定を手動にして、IPアドレスを「192.168.2.2」ネットマスク「255.255.255.0」ルータを「192.168.2.1」DNS「192.168.2.1」とする。
そうすることで、MacBookのAirMacのインターネット接続を、Ethernetポート経由の無線LAN親機をアクセスポイントとして、複数端末を同時にインターネットへ接続する事が可能です。

2012/01/23

GDで日本語フォントの使用

PHPで開発を行う際、GDで日本語フォントを使う際に、注意しないと文字化けが起こります。
最近ではUTF-8が標準になりつつありますが、過去の資産や開発環境によって、日本語コードに、EUC、JIS、Shift-JISを使用しなければならない場合もあります。

GDの環境情報を取得する場合、
gd_info();
にて確認が出来ます。
その返値で、'JIS-mapped Japanese Font Support' が TRUE の場合は、GD側にてコード変換が行われますので、特に対処は必要ありませんが、FALSE の場合は、UTF-8 へ変換しなければ文字化けしてしまいます。
mb_convert_encording("[出力する文字列]", "UTF-8", "[使用日本語コード]");

2012/01/07

PHPでのメモリ不足

PHPでプログラム作成時、プログラムが動作しないので、サーバーログを見ると
PHP Fatal error: Allowed memory size of xxxxxxx bytes exhausted
と、エラーを出力していました。
今回は、GDライブラリで画像加工を行っているため、メモリが必要になったのだと思われます。

PHPで割り当てメモリを増やす方法としては、

方法1)
php.iniのmemory_limitを増やして再起動
方法2)
該当スクリプトに、
ini_set("memory_limit","●●M");
と●●に増やしたいサイズを指定する。
の方法があります。

2011/12/22

iPad(iPhone)でのtwitterのUI変更方法

TwitterをiPadやiPhoneからアクセスすると、UI(ユーザーインターフェース)がモバイル版になります。
モバイル版UIはシンプルな画面で見やすいのですが、登録されているメールアドレスを変更したいときや、非公開アカウントの場合に、フォローリクエストを承認しようとしても出来ません。
そんな時に、UIをパソコン版に変更する方法があるようです。
https://mobile.twitter.com/settings/change_ui
にアクセスすると、パソコン版のUIに変更されます。
モバイル版に戻したいときは、
https://mobile.twitter.com/
にアクセスすればOKです。
なお、Twitterサイトの仕様変更で使えなくなる可能性はあります。

2011/12/21

PHPのmb_send_mail関数

PHPのmb_send_mail関数を使う場合、日本語が化けることがあります。
PHPスクリプトを書くエンコードに起因するのですが、対処方法は、

■文字コードEUC-JPで書いたスクリプトであれば、
mb_language("Japanese");
mb_internal_encoding("EUC-JP");
■SHIFT-JISで書いたスクリプトであれば、
mb_language("Japanese");
mb_internal_encoding ("SJIS");
■UFT-8で書いたスクリプトであれば、
mb_language("Japanese");
mb_internal_encoding("UTF-8");
をmb_send_mail関数を使う前に書いておけば良いようです。

2011/12/18

let it snow

Googleで「let it snow」と検索すると雪が降ります。
しばらくすると窓ガラスの様に曇ってきます。
マウスでドラッグすると、曇を拭き取れます。
検索ボタンが、「Defrost」になって、クリックすると霜が取れます。

クライアント様からも、この時期になると、ホームページに雪を降らせて欲しいという依頼がちらほらと。
この数日、本当に寒い日が続いています。
本物の雪でも降り出しそうです。

2011/12/15

spanのwidth指定について

SpanタグにWidthの指定を指定してはいけません。
SpanはInline要素ですから、Widthを設定するのはおかしいと言えます。
といってもDisplay設定でBlock要素にすればOKと言えますが、その場合は、SpanでなくDivを使えば良いわけですから、特殊な事例といえます。

とは、分かっていても、SpanにWidthをかけてIEで表示すると、指定の幅だけ空いてくれるわけです。
もちろん、これは、IEのバグといえるわけで、他のブラウザでは当然、隙間は空きません。

なるべく、ハックを使わず、共通のCSSで表現できるように考えるようにしていますが、IEとその他のブラウザとのCSS解釈の違いで、よくはまってしまいます。

2011/12/09

pearコマンドが動かない時の復旧方法


久々にWebアプリの開発を古いサーバ行う事に。しかし、pearコマンドが動きません。
# pear upgrade-all
HTTP error, got response: HTTP/1.1 410 Gone
Didn't receive 200 OK from remote server. (HTTP/1.1 410 Gone)
いろいろ調べて復旧した記録を留めておきます。

PEAR - PHP Extension and Application Repository
の指示通りに、
pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser http://pear.php.net/get/Console_Getopt-1.2.2
pear upgrade --force http://pear.php.net/get/PEAR-1.3.3 (1.3.3より古いバージョンを使用している場合)
pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
pear upgrade PEAR
で最新版にアップグレードできるとのことでしたが、
File http://pear.php.net:80/Archive_Tar-1.3.1.tgz not valid ...
のエラーが出て、うまく行きません。
ですので、まずは、これを強制的にアップグレードしました。
# pear upgrade --force http://pear.php.net/get/Archive_Tar-1.3.1
その後、
pear upgrade --force http://pear.php.net/get/Archive_Tar http://pear.php.net/get/XML_Parser
pear upgrade --force http://pear.php.net/get/PEAR-1.4.3.tar
pear upgrade PEAR
pear upgrade-all
で、最新版へ復旧が完了しました。
なお、追加のパッケージを入れるときは、依存関係でエラーになる事があるので、
pear install --alldeps インストールパッケージ名
でインストールすると、関連ファイルも自動的にインストールされます。

2011/12/04

iOS5へのアップグレード

私は、MacBookPro17を使って制作活動を行っています。
OSはまだSnowLeopardを使っています。
Lionにあげたいのですが、LionにするとRosettaが動かなくなる為、古いアプリがいろいろ動作しなくなってしまいます。
Lionに向けて移行作業中なのですが、まだ当分はかかりそうです。

Lionが使えないと言うことは、必然的にiCloudも使えません。
ですから、iPhoneもiOS4のまま使っていました。
ここで、ちょっとした勘違いをしていたのでした。
iOS5では、iCloudしか使えないと思っていたのです。

iCloudの前身であるMobile.meを使って、iPhoneとMacやWindowsを同期しています。
iPhoneをiOS5にしてしまうと、Mobile.meが使えなくなり同期できなくなると思っていたのです。

最近、iPadを入手する事が出来ました。
そのiPadはiOS5にアップグレードされていたものでした。
しかし、あっさりとMobile.meに繋がり、データも問題無く同期されたのでした。
iOS5でも問題無くMobile.meを利用できることが分かったので、早速iPhoneもiOS5へアップグレード。
もちろん、問題無く使えています。

Mobile.meとiCloudはサーバー側が違います。しかし、Mobil.meは来年の半ばで使えなくなってしまいます。それまでに、iCloudに移行しなくてはいけません。
必然的に、MacもそれまでにLionへ移行しなくてはいけません。

それまでに、古いアプリを使わなくても良い状況へ移行して、どうしても必要な時を考えてバックアップ用のマシンの環境整備を急がなくてはなりません。

Mobile.meを使っている方で、iOS5へのアップグレードを迷っている方は、参考にしてみて下さい。もちろん、iCloudの機能は使えませんが。

2011/11/30

winmail.datの開き方

普段、Macで制作活動を行っています。
しかし、クライアント様の多くはWindows。
MacとWindowsの垣根が低くなってきたのは確かですが、今でもいろいろトラブルが起こります。

先日、クライアント様からのメールで、winmail.datの添付ファイルがありました。
このwinmail.datはMicrosoft Outlookの仕様だそうで、以下の事が起こります。
  1. Outlook Express で受信すると添付ファイルがなくなる。(一覧にクリップマークすら表示されない)
  2. 添付ファイルをつけていないのに、WINMAIL.DAT というファイルがつく。
  3. 添付ファイルが WINMAIL.DAT というファイルに置き換わってしまい開けない。
これらはOutlookが、Transport Neutral Encapsulation Format (以下、TNEF)というフォーマットによりメールを送信することで発生するらしいです。
TNEF は以下のような場合に使用されます。
  • Outlook のリッチテキスト形式でメールを作成した場合
  • あて先や Cc などに指定した受信者のアドレスのプロパティで [インターネット メール形式] が [Outlook リッチ テキスト形式で送信] になっている場合
  • メールに特殊なプロパティが設定されていた場合
なぜか、Outlookでは、デフォルトがリッチテキストになっていて、それがTNEFフォーマットになるということ。もちろん、画像の添付ファイルもwinmail.datに入ります。

解決方法としては、
  • 送信相手に、上記の設定を解除してもらう
  • Gmailか、Yahoo!メールに転送する
上の方法は、クライアント様の設定をこちらの都合で変更して頂くのはムリですから、下の方法で対処する事になるのです。

で、今までは、添付ファイルが添付されているときに、winmail.datとして送られてきていたので、Gmailに転送して取り出していましたが、今回は、Gmailに転送してもwinmail.datのまま。

そこで、Macでwinmail.datを開くことが出来るアプリがあり、それを利用してみました。
TNEF's Enoughというアプリでこちらからダウンロード出来ます。

開いてみた結果、メールの本文がそのままwinmail.datにも入っていました。
要するに、文字だけのメールでもTNEFフォーマットで送られる際には、そのテキストがwinmail.datという形で添付されて届くということの様です。

おかげで半日時間を費やしてしまいました。