2013年5月23日木曜日

codeigniterで日本語のquery_stringが文字化けするのに対応

codeigniterで開発していて、URLで日本語の文字列を渡すときに、文字化けが発生した。

機動戦士ガンダム ⇒ 機動戦士ガンダダ

いろいろなサイト
  • CodeIgniter リクエスト値を内部文字コードに変換処理

  • [Codeigniter-users] POSTが文字化け

  • などを参考にしてみたものの、なかなかうまくいかない・・・

    ということで、PHP base64をURLSafeにする方法を参考に、URLの文字列をbase64形式で変換してみました。

    尚、base64形式に変換した文字列には、「/」「+」「=」が浮くまれるため、URLにそのまま組み込むとおかしくなる。

    そこで、上記3文字については違う文字に変換することで対応した。


    【表示側contoroller】
    ① あらかじめ以下の関数をコントローラーに仕込む
     function base64_encode_safe($s){
      $s = base64_encode($s);
      return(str_replace(array('+','=','/'),array('_','-','.'),$s));
     }
     function base64_decode_safe($s){
      $s = (str_replace( array('_','-','.'), array('+','=','/'), $s));
      return(base64_decode($s));
     }
    

    ② 変換したい文字列を上記関数を通して変換
    $data['name']=$name;  //ここに日本語
     ↓
    $data['name']=$this->base64_encode_safe($name);
    

    ③ エンコードされたリンクを受け取る側
    $work=$name;
     ↓
    $work=base64_decode_safe($name);
    
    


    薫のHackさん、ありがとうございました!

    2012年8月29日水曜日

    raspberry pi とりあえず基本設定

    注文してから早3ヶ月が経とうとしたある日、1通のメールが届きました。
    「DHL Shipment Notification」と書かれたタイトルがワタシに「raspberry pi」の配達状況を知らせるものでした。

    届いた箱には待ちに待ったpiちゃん!



    同時に購入した専用ケースと一緒に早速セットアップを始めました。

    まずは必要なものを準備
    ・電源 microUSB TypeBで、5V 700mAが出力できるもの
    といっても、一般的なスマホの充電ケーブルで事足りましたので、予備のスマホ充電器を用意。
    ・SDカード 
    Raspberry Pi用のLinuxOSをインストールするのに最低2Gは必要なので、適当にその辺のSDカードを用意。
    (SDHCは未確認)
    ・USBキーボード・USBマウス
    ・HDMI-HDMI もしくは HDMI-DVIケーブル
    基本Xwindowは使わないつもりなので、セットアップ用にTVとHDDレコーダーをつないでいたHDMIケーブルを拝借
    ・LANケーブル

    以上が必要となります。

    ハードウエアの準備ができたところで、SDカードにOSをインストール。

    公式サイトのdownloadからOSイメージをダウンロードします。
    4種類あるようですが、まずはオススメの「Raspbian “wheezy”」をチョイス。

    <手順>
    1.ダウンロードしたファイル(tar.gz)を解凍するので、windowsならlhaplusなどで解凍しましょう。
    2.解凍してできたimgファイルをSDカードに書き込むため、ddを使用。

    (参考)
    公式に掲載されているWindows用のソフト Win32DiskImager
    DD for Windows

    3.書き込んだSDカードをpiに差し込んで、起動します(電源スイッチはないので、コンセントに差すw

    うまく行くと初期設定の画面が現れます。



    初期設定画面では、おおむね以下のように設定しました。
    1.expand_rootfs
    用意したSDカードは先頭から2GB程度しか使われていないので、カード全体を使用できるようにします。
    2.overscan
    画面の周囲が切れてしまう場合などに隙間を空けます。
    3.configure_keyboard
    キーボードを選択します。日本語キーボードを使用する場合はまず、Generic 105-key(Intl)PCを選択してJapanese - Japanese(OADG 109A)を選択します。
    4.change_pass
    初期登録されている「pi」ユーザーのパスワードを変更します。(デフォルトは「raspberry」のようです)
    5.change_locale
    ロケールの設定ですが、日本語フォントがインストールされていない初期状態では文字化けするようです。なのでとりあえずスキップ
    6.change_timezone
    日本時間に設定するのでAsia→Tokyo
    7.memory_split
    メモリの配分を変更できるようですが触っていません。
    8.ssh
    別PCからネットワーク越しに接続できるよう設定します。ワタシはpiをサーバ的に使おうと思っておりますので必須。
    9.boot_behaviour
    起動時にXデスクトップを表示する場合はyes。コマンド画面でいいならNoを選択します。
    10.update
    アップデートを取得する場合は選択します。


    これらの設定を行い、再起動すれば、見事起動してくれます!

    万一設定を変更したいという場合はコマンドラインで
    sudo raspi-config
    を打てば変更可能ですので、色々試して見ましょう。

    2012年8月1日水曜日

    google analyticsをおさらいする(アカウント作成編)

    webサイトを運用する上で欠かせないのがアクセス解析。

    有料・無料を問わず、様々なサービスやツールがありますが、やはりもっとも有名なのがGoogleAnalytics(以下GA)ではないでしょうか?
    GAの標準レポートだけを見ていてもいろいろとわかるのですが、突っ込んで調べてみると、もっといろいろなことがわかるはず!ということで、メモがてら実験を行ってみようと思います。

    基本的に初心者が独学でやってますので、ツマラナイ内容になりましたらごめんなさい(笑

    何はともあれまずはGAにアクセス!

    http://www.google.com/intl/ja/analytics/

    当然のことながらGoogleアカウントが必要ですので、あらかじめ作成しておいてください。




    「sign up」をクリックしてアカウントを作成します。


    入力するのは
    Account Name    ・・・アカウント名
    Website's URL   ・・・設置先のURL
    Time Zone     ・・・タイムゾーン
    Industry Category ・・・コンテンツのカテゴリ

    「Data Sharing Settings」ですが・・・よくわかりません(^^;
    ・With other Google products only ・・・AdWordsやAdSenseなどのgoogleのほかのサービスと連動させる場合にチェックをいれるようです。
    ・Anonymously with Google and others ・・・webサイトの指標を向上させるためのデータ取りができる?

    まぁ、そのあたりはおいおい勉強することとして、とりあえずは両方チェックを入れた状態で「Create Account」ボタンをクリックします。

    するとアカウントが作成されて、ホーム画面にアクセスできます。




    私の場合はなぜか、英語の画面でしたので、画面左上の「Settings」から「Language」を日本語にして「Save User Settings」を押して日本語画面にしました。

    2012年7月10日火曜日

    エレコムのキー投影型Bluetoothワイヤレスキーボード TK-PBL042BKを使ってみた。

    エレコムのキー投影型BluetoothワイヤレスキーボードTK-PBL042BK を使ってみました。



    特徴としては
    ・サイズは3cm×3cm×8cm程度でとてもコンパクト
    ・外装はプラスチックでつや消しブラック塗装(手触りサラサラ)
    ・背面には電源スイッチと充電用のUSBコネクタ、あとはリセットスイッチ

    ipadでセットアップしてみます。

    「設定」→「一般」から「Bluetooth」を選び、Bluetoothをオンにします。

    デバイスを検索し始めるので、TK-PBL042BK の電源を投入。

    画面に幅25cm程度のキーボードが表示されます(感動!)



    しばらく待つとipadの画面に機器名が表示されるので、タップ




    ダイアログに出てきた4ケタのPINコードをキーボードで入力すればセットアップ完了。

    キーを押すとピッ、ピッという音とともにサクサク入力ができます。

    感度もデフォルトでまったく問題なく、とっても気持ちいいです。


    設定できる項目としては

    ・音が気になったら[FN]+[↓]で無音にまで設定可能
    ・省電力モードにするには[FN]+[BACK]でライトの表示を消すこともできます。
    ・元に戻すときは、キーボードのある位置で3本指でタッチすれば、表示されます。


    iphoneなど画面の小さな機器や、普段キーボードをつけないサーバなど、ひとつあれば便利なこと間違いなし!



    是非お試しあれ!



    2012年7月5日木曜日

    Mac OSX 10.7 lion serverにmysql

    phpとくればmysqlでしょ、と思ったらMac OSX 10.7 Lionからpostgresに変わったようで、使うにはインストールが必要らしい。
    ということでmysqlをインストールしてみる。


    mysqlインストール

    まずはMySQLのサイトから最新版をダウンロード


    「MySQL Community Server」からMac用のアーカイブをダウンロードします。
    今回はDMG-Archiveをダウンロードしました。

    Lion用のMySQLは無いようですので、10.6用を使ってみます。


    インストールは「mysql-5-5.24-osx10.6-x86_64_pkg」をダブルクリックしてインストーラの指示通りにしていくだけで、特に入力することも無く、あっさり終了。

    あとは同パッケージ内の残りのファイル
    自動起動させるために「MySQLStartupItem.pkg」をダブルクリックしてインストール。
    システム環境設定にアイコンを表示させるのに「MySQL.prefPane」をダブルクリックして登録

    あとは開いたMySQLパネルで「Start MySQL Server」ボタンを押して起動完了!


    これでインストール作業は一旦終了。

    次は端末から簡単に操作ができるようにmysqlへパスを通します。
    これで
    /usr/local/mysql/bin/mysql -u root -p
    という長ったらしいコマンドを
    mysql -u root -p
    にしてくれます。


    vi ~/.bash_profile
    
    で ホームディレクトリの./bash_profileファイルを開き(無い場合は新規作成)
    export PATH=$PATH:/usr/local/mysql/bin
    
    と書いて「:wq!」コマンドで保存・終了
    source ~/.bash_profile
    
    でファイルを再読み込みします。

    うまく行けば、端末で
    
    mma:~ hoge$ mysql -v   ←こんな風に打てば
    
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 147
    Server version: 5.5.24 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Reading history-file /Users/hir/.mysql_history
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql>   ←こんな風に表示されます。
    


    my.cnfの編集(文字コードをutf8に)


    Finderで「移動」→「フォルダへ移動」で
    /etc/local/mysql/support-files
    へ移動し、「my-○○○.cnf」ファイルの中から自分の環境に合わせたファイルを/etcにコピーして「my.cnf」とリネームします。(ワタシはとりあえずmy-small.cnfを選択)

    my.cnfをエディタで開き
    [mysqld]の最下行に
    skip-character-set-client-handshake
    character-set-server=utf8
    
    の2行を追加

    [mysqldump]と[mysql]に
    default-character-set=utf8
    

    をそれぞれ追加します。

    念のため「システム環境設定」→「mysql」でサーバを再起動します。


    rootパスワードの設定とログインテスト

    ターミナルで
    mma:~ hoge$mysqladmin -u root password パスワード
    
    でパスワードを設定し
    mma:~ hoge$mysql -u root -p
    
    で先ほど設定したパスワードでログインできるか確認します。


    PHPから接続できるようにphp.iniを設定


    MacOSX10.5あたりから、UNIXsocketの場所が変わっているようなのでphp.iniファイルを書き換えます。

    まずはUNIXsocketの場所を確認

    mysql -u root -p
    でログイン、プロンプトで
    「status」と入力します。

    ズラズラっと表示された情報の中からUNIX socket:を探して内容を覚えておきます。

    次に/etc内のphp.iniファイルを編集します。

    ; Default socket name for local MySQL connects.  If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/pdo_mysql.default-socket
    pdo_mysql.default_socket=/var/mysql/mysql.sock
    
    を
    
    pdo_mysql.default_socket=/tmp/mysql.sock
    
    ; Default socket name for local MySQL connects.  If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysql.default-socket
    mysql.default_socket = /var/mysql/mysql.sock
    
    を
    
    mysql.default_socket = /tmp/mysql.sock
    
    
    ; Default socket name for local MySQL connects.  If empty, uses the built-in
    ; MySQL defaults.
    ; http://php.net/mysqli.default-socket
    mysqli.default_socket = /var/mysql/mysql.sock
    
    を
    
    mysqli.default_socket = /tmp/mysql.sock
    

    に変更します。

    これでいけるはず。
    最後にWEBサーバ(Apache)を再起動して動作確認。



    2012年7月3日火曜日

    Mac OSX 10.7 lion serverでサーバ

    macでサーバを立ててみようと思い立ってlion serverプレインストールのmac miniを購入。
    とりあえずサーバ用途なので、sshとwebを有効にしてみた。

    ssh有効化

    1.Serverパネルから、ハードウェア→mma(ワタシのmacの名前)を選択
    2.設定タブから「SSHによるリモートログインを許可」にチェック

    3.クライアント(windowsのteraterm)からログイン
    ユーザー名:macのsshユーザーのログイン名
    パスワード:なし
    「チャレンジレスポンス認証を使う」にチェック

    4.sshは有効になった。

    webの有効化

    1.Serverパネルから、サービス→Webを選択
    2.とりあえずデフォルト
    ドメイン名:*
    IPアドレス:任意
    ポート:80
    SSL証明書:なし
    サイトファイルの保存場所:Default
    アクセス可能なユーザ:全員
    追加ドメイン:(未設定)
    リダイレクト:(未設定)
    エイリアス:(未設定)
    ってな感じでとりあえず動作確認

    3.Safariのアドレスバーにhttp://localhost で「ようこそLionServerへ」の画面が出れば成功


    とりあえずポートスキャンして開いているポートの確認

    1024番以下のポートはこんな風になっていました。

    22:ssh Responseに「OpenSSH_5.6」の文字が・・・
    80:http
    88:Kerberos
    81:なんだろう
    311:asip-webadmin 保護されたサーバ管理のポート
    443:SSL(HTTPS)
    625:dec_dlm DirectoryService、Open Directory アシスタント、ワークグループマネージャ


    とりあえずポートスキャンが終わるのにまだ時間がかかりそうなので、続きは次回


    lionサーバ構築におすすめの本(Amazon)

    2012年6月30日土曜日

    macを買ってまず入れたフリーソフト

    「mac 設定」でググったサイトから厳選し、入れたソフト達
    基本的に有料ソフトは使わない方向で、やれるだけやってみようと思います。

    1.Onyx



    システムの細かな設定ができます。
    沢山あるけど、便利そうだなーと思ったのが以下

  • S.M.A.R.T.チェック
  • 起動ボリュームのチェック
  • アクセス権の修復
  • cronスクリプトの実行
  • キャッシュやログの消去
  • コマンドマニュアル(man)の参照
  • 自動処理
  • FinderやDock、Safariその他デフォルトインストールされているアプリの設定

    等々

    2.GoogleChrome


    言わずもがなですが、ブラウザの互換性の確認には必要ですよね。

    3.FireFox

    同じ

    4.Sophos Anti-Virus



    無料のアンチウィルスソフトウェア
    「Windowsに比べてシェアが少ない」とか「システムがUNIXベースなので作りにくい」などの理由から、Macを狙ったウイルスが圧倒的に少ないようですが、最近では徐々に増えてきているようです。
    特に有名なのがJavaの脆弱性を利用したMac OS X向けのトロイの木馬「Flashback」

    5.mi



    テキストエディタ
    mac標準のテキストエディタも悪くないのですが、手になじむエディタがなかなか見つかりません。

    いいものがあったら教えてください(笑)


    6.AppCleaner



    ソフト削除時にゴミ箱にドラッグするだけでは消えない関連ファイルも消してくれる(らしい)