掲示板を作るときの文字コードでやられた話

こんにちは。最近会社でWeb開発の扉を開いた臼式です。

phpエエエエエ・・・。

C++erだった自分にとってはまさに未知の領域でした。

突如変数がわいたり、関数一つがやたらと便利だったりもうね・・。

 

とまあそんな感じの今日この頃ですが、課題の一環として2ちゃんねるみたいな掲示板作ってみようか。って言われて作ったときにやられた文字コードの落とし穴の話です。

 

 そもそも文字コードとはなんぞやって話ですが、

簡単に言ってしまえばコンピュータが文字を表現するための数値みたいなもんです。

 

MySQLでデータベースやテーブルを作成した後文字コードを確認してみると、

f:id:Usushiki:20170320234756p:plain

1行目のコマンドがデータベースサーバーのデフォルト設定を表示させています。

ご覧のとおりファイルシステム以外はutf8に設定されています。

この設定は特に指定しなければテーブルにも引き継がれます。

 

で、なにがいけないのかというと、

このままでは4バイト文字に対応してくれないから!!

 

 

個人や狭いコミュニティだけで使う分にはあまり問題ないですが、

utf8で一文字の表現に4バイト必要な文字は残念ながらこのままでは

扱うことができません。↓こんな奴らです

f:id:Usushiki:20170321004251j:plain

そこで登場するのがutf84バイト文字対応版utf8mb4

テーブルを作成した後、

 

alter table テーブル名 default character set utf8mb4;

 

 と打ってやると無事文字コードが変更され、4バイトを扱ってくれるようになります。

 

  • おわりに

今回掲示板を作ってみるまで4バイト文字やutf8mb4のことも知らず、打てるようにしてねと言われてから手こずりました。

もしphpの勉強がてら掲示板を作ってみようということになったら

実践してみて下さい。

また掲示板を作るまでの一通りの流れもアップしようと思います。

スライド追加しました!

長く時間が空いてしまいすみません。

 

久しぶりの投稿ですが今回は、また学内で発表する機会があたのでその時のスライドの
ご紹介です。

最近ようやくHTC Viveを使ったVRゲームの開発を始めることができたのでその時に必要になったことの覚書としてのスライドになります。これからViveでの開発をしようと考えている人などに見ていただけると嬉しく思います。

 

www.slideshare.net

BitSummit4thに参加してきました

7/9,10の2日間京都のみやこメッセで開催されたBit Summit 4thへ参加してきました。
昨年に比べVRゲームが多くなっていました。
全体ではコンシューマ50%、モバイル30%、VR20%といったところでしょうか。
任天堂が初出店したりと新しい事が多かった今年のBit Summitですがデベロッパーの方々の熱意は変わらず自分にとっても実りのあるイベントとなりました。

f:id:Usushiki:20160720114428j:plain

f:id:Usushiki:20160720114433j:plain

スライドをあげました その2

前回に続き、また学内で発表したときの資料をあげました。
今回は[pimplイディオム]について調べてみました。

 

www.slideshare.net

スライドをあげました

以前学内でunityでLINQを使ってみようぜ!という話をした時の資料を公開したので
リンクを張っておきます。

興味のある方はぜひ!

www.slideshare.net

Unityでゲーム制作をした時にお世話になったサイトまとめ

unityで制作をする時によくお世話になるサイトを
まとめました。 

テラシュールブログ(いろいろありすぎ宝箱。ありがとうございます・・)

http://tsubakit1.hateblo.jp/

 

unity開発に関する50tips(チーム開発の注意点など)

No hack, no work • Unity開発に関する50のTips 〜ベストプラクティス〜(翻訳)

 

ブリブサーゲーム制作劇場(小ネタが満載)

http://bribser.co.jp/blog/

 

SlideShare(unityで検索するといろいろ出てきます)

http://www.slideshare.net/

 

Unity スクリプトリファレンス

http://docs.unity3d.com/ja/current/ScriptReference/index.html

 

Unity Manual

http://docs.unity3d.com/ja/current/Manual/index.html 

デバッグログを作った話

ゲームを制作していると、この処理かかったときにログ出せればなあと思ったので、

WindowsAPIの機能を使ってデバッグログを作ってみました。

制作環境:

VisualStudio 2015

 

↓こんな感じに出力ウィンドウにログを出す。

f:id:Usushiki:20160529002930p:plain

 

 

 

 

 

  • 表示の仕方について


    表示処理はWindowsAPIのOutputDebugStringを使っています。
    しかしコイツには弱点があります。それは、文字列にしか対応していないこと。
    つまり、printf関数のような変数の中身を出したり、可変長の引数に対応したり
    といったことができません。

  仕様

    1. printfみたいに可変長引数に対応したい。
    2. どこから呼び出されたのか知りたい。(ファイル名,行数)
    3. 受け取った引数は最終的に文字列に変換。
    4. デバッグ実行時のみ機能させる。


  • ソース

    LogDefine.hpp - ログ定数ヘッダ
    Log.hpp           - ログ関数
    main.cpp

    [LogDefine.hpp]

    giste994e742bb7b23e948b355c81a3976c9

    [Log.hpp]

    gistdca25f6e934ba329f1a19beaa2733e02
    [main.cpp]

    github.com




    ついでにプロジェクト全体も

    github.com


  • 作り方について
    可変長の引数を実現するために、可変長テンプレートと再帰処理を使いました。引数がなくなるまでwstringstreamに流し込んでいます。使いたいときはLog.hppをインクルードするだけで使用できます。

   改善点

  1. wstringstreamに対応していない型だとエラーになる。
  2. 表示するログの種類分けをしたい。(エラー、警告、通常ログ)

 

 

 まだまだ改善の余地はありますが、参考になれば。


 参考サイト

可変長テンプレートを使った C++11 時代の可変長引数関数 | プログラマーズ雑記帳

__FILE__、__LINE__ 実行時エラーが出たファイルと行番号を知りたい

その3 デバッグウィンドウを知らないと大変です