Xamarin入門者の集いでLTしてきました
Xamarin入門者の集いでLTしてきました。
jxug.connpass.com
発表までに用意していたネタがほとんど被ってしまったので、
ほぼネタLTになってしまいました。
トークもうちょっとがんばれればよかったのですが、
いざ喋りだすとネタ全部忘れてスライド読みだすのは良くない癖ですね。
余談ですが、後半のいかにも前時代パワポ臭いスライドはわざとです!
何名か笑ってくれたのでよかった!
そういえばUnity初心者の会で発表してた
そういえば、人知れず14日のUnity初心者勉の会に参加してきました。
web3dj.connpass.com
最先端について語りたいけど、なにぶんへっぽこなので、
モデルの差し替えで詰まりがちなMechanim with Humanoidの使い方について、 Stabdard Assets について、LTしてきました。
分かってる方には学びでも何でもなくサクサクなのですが、分かってないと何やっていいのかサッパリな部分なので、初心者向けには良いかなと。
スライドにアニメーションGIF使ってますが、オンラインだと動かないので、ちゃんと見たい方はpptxをダウンロードして見てください。
doc.co
明日はXamarinについて何か喋るらしいです。
jxug.connpass.com
ジャンル横断で発表するなんて完全に勉強会五郎ですね。
後ろで「ほーいいじゃないか こういうのでいいんだよこういうので」とか「すごいことになっちゃったぞ」とか心の声で言ってる時が至福です。
Azure Web Apps のPHPでSecureなAPIにアクセスするときの設定
OAuth2や外部のRestAPIが普及してきたことで、curlを使ってSSLを叩く機会が増えてきました。
しかしながら、Azureを含むWindowsプラットフォームで、設定無しにsslサイトにcurlすると、
cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
とか言われて怒られます。
適切なCA証明書の場所をPHPに教えてやればいいのですが、
ググっても、証明書の検証を無効化するとかは論外として、
自分で証明書入れたり*1、Gitの証明書を流用すればいいろ書いてあるものの、結果そこには何もありませんでした事案*2ばかりだったので、
現在の構成で正しい場所を共有します。*3
"D:\Program Files (x86)\Git\etc\pki\ca-trust\extracted\openssl\ca-bundle.trust.crt"
以下のファイルを wwwroot 以下にデプロイしてやれば、sslなcurlがばっちり使えます。
.user.ini
それでは、良いAPIライフを。
*1:https://blogs.msdn.microsoft.com/tsmatsuz/2014/12/12/azure-web-site-curl-ssl-https/ blogs.msdn.microsoft.com
*3:WebAppsの中を探索しまくれば一応見つかりますが、無駄な労力です
Laravelのmigration作り直し時に嵌った話
Lumenでmigrationを作りたいときartisanコマンドを使って書きますが、
php artisan make:migration create_users_table
オプション変えたいなどで作り直しをした場合に
rm database/migrations/2016_09_02_065515_create_users_table.php php artisan make:migration --create=users create_users_table
リンクさせた覚えがないのに蹴られる現象が。
[ErrorException]
include(/app/vendor/composer/../../database/migrations/2016_09_02_065515_create_users_table.php): failed to open stream: No such file or directory
artisan make:migration が実行時にcomposerのclassmapを更新しているためで、
classmapを最適化しなおしてやればエラーが出なくなります。
php composer.phar dump-autoload -o
php artisan make:migration --create=users create_users_table
でも、migrationってclassmapに登録する必要ある…?
Milkcocoa for Unity の使い方
MilkcocoaをUnityで使うライブラリ「Milkcocoa for Unity」を公開しています。
現在最新バージョンは0.0.3です。
ダウンロード
GitHub or unitypackage
主な用途
- リアルタイム通信を手軽に実施したい
- 手軽にアプリケーション外の何かと連携したい
Milkcocoaとは
BaaS(Backend as a Service)といわれるサービスの一つで、リアルタイム通信と小さなデータベースが自分でサーバを管理することなく実現できるものです。
同時接続数10クライアントまで無料。
⇒Milkcocoa
前準備(Milkcocoaの登録)
Milkcocoaのサービスに登録し、アプリケーションIDを取得します。
以降、アプリケーションIDは APP_ID と呼称します。
具体的な方法は公式ページ参照
インストール
- アセットをダウンロードする⇒Download
- Unityのプロジェクトウィンドウにドロップする
UnityEditorでの設定
- Milkcocoaのプレハブを、hierarchyにドロップする(任意)
- APP_IDとdatapathを変更する
コードの書き方
サンプルプロジェクト
以下のシーンにサンプルプロジェクトが入っています。参考にしてください。
/Milkcocoa/Demo/MilkcocoaTest
APP_IDを設定すれば使えます。
また、以下に実際のコード例を記します。
例1. メッセージを受ける側
using UnityEngine; using System; using Milkcocoa; public class example1 : MonoBehaviour { MilkcocoaClient milkcocoa; void Start () { milkcocoa = FindObjectOfType<MilkcocoaClient>(); milkcocoa.OnSend(milkcocoaEventHandler); } public void milkcocoaEventHandler(MilkcocoaEvent e) { // example print Debug.Log(e.GetValues()); // example search if (e.data.GetField("params").HasField("chat")) { string id = e.data.GetField("params").GetField("chat").GetField("id").str; string message = e.data.GetField("params").GetField("chat").GetField("message").str; string username = e.data.GetField("params").GetField("chat").GetField("name").str; if(id != milkcocoa.clientId) { // 自分以外のメッセージ } } } }
例2. メッセージを送る側
using UnityEngine; using System; using Milkcocoa; public class example2 : MonoBehaviour { MilkcocoaClient milkcocoa; void Start () { milkcocoa = FindObjectOfType<MilkcocoaClient>(); } private void sendMessage(string str) { JSONObject jsonobj = new JSONObject(delegate(JSONObject values) { values.AddField("chat", delegate(JSONObject chat) { chat.AddField("id", milkcocoa.clientId); chat.AddField("name", Uri.EscapeDataString("大鳥こはく")); chat.AddField("message", Uri.EscapeDataString(str)); }); }); milkcocoa.Send(jsonobj); } }