カテゴリー別アーカイブ: software_development

UE4 Unreal C++コードリーディング会@大阪に行ってきた

UE4 Unreal C++コードリーディング会@大阪に行ってきた。

主催はalwei氏で、前に第1回 Unreal Engine4 名古屋勉強会で講師をしていた人だ。

Unreal C++のソースコードは、UE4で新規プロジェクトを作る際にBluePrintのプロジェクトでなくC++プロジェクトに設定して作成すると、そのプロジェクトのスケルトンのソースコードとエンジン部分のソースコードが入った状態で作成される。

実際にThirdPersonプロジェクトをC++のプロジェクトとして作成して、確認してみた。
続きを読む

Windows PCにTensorFlow 1.0をインストールしてみたのだけど

Windows PCにTensorFlow 1.0をインストールしてみたのだけど、エラーメッセージが出たりするのでちょっと不安な感じだ。

Windows版Pythonをそのままインストールするのではなく、環境構築を容易にするためAnacondaと言うソフトをインストールした。

Python 3.6がデフォルトだとインストールされたようだ。
続きを読む

機械学習 名古屋 第9回勉強会に行ってきた

機械学習 名古屋 第9回勉強会に行ってきた。
前回の第8回には都合が悪くて参加できなかった。

・勉強会の概要
前回のハンズオンの続編で、ECサイトのアクセスログの機械学習をやった。
前回の話が見えないので、まずアクセスログを学習させて何がゴールになるのか分からなかった。
ハンズオン後に話があったのだが、サイトの改善案を考えるための指標を検討する材料みたいな、ふわっとした話だということだった。

TensorFlowが1.0になったのでそれに対応したコードを書くというのが必要というのが気になった。
いくつか互換性がなくなった箇所があったそうだ。
ハンズオンのコードでifで場合わけして対処している部分が参考になる。

ハンズオンの後は、3件の発表。
kmt_tさん、「画像の精細化」
n-katsさん、「TensorFlowで絵を描いてみた」
satsuki kawamuraさん、「人工知能xデザイン(仮)」

画像の精細化は、waifu2xみたいにアニメ調のイラスト絵などを学習させて、もともとの絵の解像度よりも高い解像度の画像を生成するということをやっていた。
画像の劣化要因の逆フィルタ、回帰による元画像推論という考え方で、SRCNNから始まって、GANなどを応用している。独自のホットスポットという考え方で効率化をしていた。
2~3年後にリアルタイムで4Kの超解像ができそうという話だった。

TensorFlowで絵を書いてみたという話は、ゼロから猫の絵を生み出した有名なやつではなく、ゴッホの絵などの特徴を学習させて、写真を元にその絵のタッチで絵を書かせるというものだ。

人工知能xデザインの話は、よく分からなかった。

Nintendo SwitchのJoyConのhackを試してみる – その1

Nintendo SwitchのJoyConのhackを試してみる。

JoyConはBluetoothでPCに接続することができ、HIDゲームパッドとして認識される。
あとは通信プロトコルが分かれば、JoyConのhackができるのではないだろうか。

ということでJoyConのhackを試してみた。
Wiiリモコンhackのときと同じやりかたでとりあえずコントローラーのボタンは取れるようだ。
汎用HIDデバイスとしてアクセスして、USB-HIDと同様に入力用Reportというバッファからデータを読み出すというやり方だ。
参考:
WiiリモコンをPCで使うサンプルソフトを作ってみる

JoyConの挙動は、Wiiリモコンhackの基本動作モードのような動作をしているので、ボタンの状態が変化したときのみInputReportが取れて戻り値が返ってくる。
Reportの1バイト目は固定で0x3F。
Reportの2バイト目と3バイト目は各ボタンの状態が1bitずつ格納されている。
Reportの4バイト目はスティックの状態がHATスイッチ(8方向)として取れる。デジタルで0x00~0x08の値を取っている。
続きを読む

Nintendo SwitchのJoyConをBluetoothでPCに接続できるか

Nintendo SwitchのJoyConをBluetoothでPCに接続できるか?

JoyConのSRボタンとSLボタンの間の小さいボタンを長押しするとペアリングを開始するようだ。

とりあえず、Bluetoothデバイス検索するとWindows10のPCからJoyConを見つけることができる。

続きを読む

名古屋でVRハッカソンをやるためのUE4 勉強会 2限目に行ってきた

名古屋でVRハッカソンをやるためのUE4 勉強会 2限目に行ってきた。
名古屋ゲーム制作部というゲーム作りの好きな人が集まっている団体の勉強会だ。

前回の1限目に続いて、参加した。

今回はHMDの実機向けのソフトを動かすので、デスクトップPCを持ち込んだ。

続きを読む

WindowsでUnicode版のFindFirstFileのAPIを使ってみたサンプルコード

昨日のWindowsでファイル名を変更するプログラムをANSI版APIからUnicode版APIに書き換えた話で、
とりあえずリネーム処理以外のFindFirstFileというAPIのUnicode版FindFirstFileWを使ったフォルダとファイルをスキャンする使い方のサンプルコードっぽいのを晒してみる。

cmd.exeで動かすと文字化けするので、スタートメニューからPowershellを起動してPowershellで動かせば文字化けせずにUnicodeのフォルダ名やファイル名が正しく表示される。
続きを読む

Windowsでファイル名をまとめて変更するのに、C言語でプログラムを書いたのだけどUnicode文字のファイル名でハマって苦労した

Windowsでファイル名をまとめて変更しようとしていた。
で、何かスクリプト言語でちょろっと書いて一気に変換みたいなことをやろうと最初は思っていたのだけど、結局C言語でプログラムを書いてしまった。

ところがANSI版のAPIで書いたらMoveFileでうまく変更できないファイル名が出てきたので、Unicode対応のMoveFileWを使って書き直す等、もとのANSI版のAPIのプログラムをだいぶ書き直して動かした。

フォルダ内のファイルをスキャンしていくのにFindFirstFileWとFindNextFileWというAPIを使う。
使用する構造体はWIN32_FIND_DATAでなく、WIN32_FIND_DATAWを使う。

ファイル名はANSI版ならヌル文字を終端に入れたchar型の配列でよいのだけど、Unicode版はwchar_t型の配列を使う。

wchar_t配列型の文字列のフォルダ名やファイル名などを加工するのに、strcpyやstrcatが使えないので代わりにwcscpyやwcscatを使った。

文字定数は”foo”などと書く代わりにL”foo”と書いてUnicodeにしておかなければならない。

コマンドラインで動かすプログラムなのだけど、Unicodeを表示させるためにprintfでは駄目なので、printf(“%s”,str)と書くかわりにwprintfを使ってwprintf(L”%ls”,wstr)となどと書く。

cmd.exeから動かすとwprintfの表示が文字化けしてしまう。
コードページを変更するコマンドを使ってもどうもうまくいかない。
cmd.exeを使わずにPowershellで実行するとちゃんとwprintfの表示ができた。

知っている人にはきっと今更な話だが、ずっと自分はANSI版のAPIしか触ってなかったので。


つづく

Swiftでglibcを使うにはどうすればいいだろうか

Swiftでglibcを使うにはどうすればいいだろうか?

SwiftのLinux版(Ubuntu版)というのがあり、Mac版やiOS版みたいなフレームワークのライブラリが無いかわりにglibcを使うことができる。

それなら逆にMac版などでも同じようにglibcを呼び出すことができるのではないだろうか?

しかし、Ubuntu版のSwiftのディレクトリのincludeの中身を探してみたのだが、それっぽいものが見つからなかった。
import Glibcとすれば、ちゃんと使えているのだけど、どこにその仕掛けがあるのだろう?


追記
Ubuntu版のSwiftのlibディレクトリをよく調べたらusr/lib/swift/linux/libswiftGlibc.soというファイルがあった。
さらにそのサブディレクトリのusr/lib/swift/linux/x86_64の中にglibc.modulemapとGlibc.swiftdocとGlibc.swiftmoduleというのがあった。
このライブラリのソースコードとかを調べてみたら何か分かるのかもしれない。


余談だが、emacsにおける新バージョンのglibcとの非互換問題はどうなったのだろう?
Emacsは衰退しました – Qiita