読者です 読者をやめる 読者になる 読者になる

情報は力ではない

VimとかC++とかCUDAとか。

仮で目を作る時のメモ

最近、Autodesk Maya キャラクターモデリング造形力矯正バイブルをやってます。 Mayaの本だけど作り方は参考になると思って読みつつモデリングをしてます。 www.borndigital.co.jp その中で仮の、眼球のシェーダを作る工程があって blenderではどうすればで…

Level Designer Quick Startをやった。

UE4

ちゃんとUE4を1から学び直さないといけないなぁと思ってラーニングをやってる。 Level Designer Quick Start docs.unrealengine.com ちっちゃな部屋を作りながら操作の仕方やアセットの配置の仕方、マテリアルの設定の仕方を学べる。 ここでちゃんと知ったこ…

Blender勉強会 Step 3に行ってきた。

Blender勉強会に行ってきた。 https://togebu.doorkeeper.jp/events/57339 今までスカルプトはとっつきづらいと思ってやってこなかったので 良い機会だなと思って参加した。東ゲ部、初参加でした。 @kurosaurusさんによるスカルプト講座 Blenderで学ぶスカル…

武器をアタッチする方法

武器をActorにアタッチする方法について少し調べたのでメモ。 アタッチする方法 端的に言うとattachToComponentを使えば良い。 これを使うことでParentのSocket NameにTargetのActorをアタッチすることができる。 docs.unrealengine.com Targetへの値の渡し…

Blenderで作ったモデルをUE4にインポート

Blenderで上図のようなモデルを作ったのでUE4に持ってきた時のメモ。 バージョン Blender 2.77a Unreal Engine 4.14.2 Export Blenderで作ったモデルをfbxでエクスポート。設定は特にいじってないつもり。アニメーションはつけてないので、アニメーションの…

新年の目標

新年一発目なので、簡単に目標をば。 去年まで特に目標とか決めずにきたけど、一旦決めてみようかと思う。 ゲームを作る。 ぷちコンに出る。 UE4もしくはBlenderの記事を12本書く。 とりあえずこんなものかと。 去年入門したUE4とBlenderを今年はもっと使っ…

Yokohama.vim #8に行って来た。

Yokohama.vimに初参加して来ました。 yokohamavim.connpass.com @gu4さんによる挨拶 Yokohama.vim#8 from gu4 www.slideshare.net 最初にYokohama.vimとVimの軌跡の比較をしていた。 スライドに記載していたはずのYokohama.vimの軌跡が残念ながら消えてたら…

Vim 8.0にした。

vim

先々週9/12にVim 8がリリースされたので、だいぶ遅れたがVim 8をインストールした。 今回はソースコードビルドに挑戦してみたので、そのメモを書きます。 何気にソースコードビルドは初挑戦(お恥ずかしいことに今までVim 7.4.729を使っていた...)。 やり方…

TaPL 演習4.2.2

問題 arithの実装におけるeval関数の定義を、大ステップスタイルに変えよ。 答案 もう少しうまく書きたい。 let rec eval1' t = try match t with TmIf(_, t1, t2, t3) -> ( let t1' = eval1'(t1) in match t1' with TmTrue(_) -> let v2 = eval1'(t2) in v2…

vim-ocaml-stdlib-helpを作った。

vim

最近、OCamlを勉強していて、VimでOCamlを書いてます。その時に標準ライブラリの機能を調べたいなと思うのだけれど、いちいちブラウザで調べるのも面倒なのでVim pluginを作りました。 github.com 使い方は :OCamlStdLibHelp {module-name} という感じです。…

TaPL 演習3.5.14

問題 定理3.5.4が算術演算の評価関係に関しても成り立つことを示せ。 すなわち、 かつ ならば であることを示せ。 証明 の導出に関する帰納法を使用し、 の導出で最後に使った規則に対する場合分けにより証明する。 E-SUCCの場合 は という形であり、またあ…

JavaScriptの論理演算子の評価値

最近、サイ本を読んでいます。 その中で少し驚いたものを一つ紹介したいと思います。 以下の論理演算子が何を返すかという話をします。 var o = { a: 0 }; var b1 = o && o.a; var b2 = undefined && o; var b3 = o || ""; var b4 = null || undefined 値の…

Vimの起動時間を計測する。

vim

概要 Vimの起動時間を計測するには次のようにする。 {fname}にその結果が書き込まれる。 vim --startuptime {fname} 内容 Vimの起動時間を計測するには、--startuptimeオプションをつけてVimを起動する。このオプションには引数としてファイル名が必要。 hel…

Mockitoの@InjectMocksは何を見てInjectするのか

InjectMocks (Mockito 2.0.36-beta API)に書いてます。 思った挙動と異なっていたので、自分のためにメモ。次のようなSampleクラスがあったとする。 public class Sample { private final Hoge hoge; private final Fuga fuga; private HogeHoge hogehoge; p…

ハル研究所プログラミングコンテスト2015

一昨年のハル研プロコン2014に引き続き、去年もハル研プロコンに参加しました。 ハル研究所 プログラミングコンテスト2015 | TOP今年の問題は宅配便でした。 問題の雰囲気は、車両配送問題(Vehicle Routing Problem, VRP)っぽい感じです。開催されてからすぐ…

Material Design GuideのListsを読んだ。

そろそろMaterial Designについても知りたいなぁと思ってきたので、Material Designのサイトの気になるところから読んでいる。 今日はListsとLists: Controlを読んだ。 Lists - Components - Google design guidelines Lists: Controls - Components - Googl…

VimConf 2015に行ってきた。

VimConf 2015に行ってきました。発表者の方々のスライドへのリンクは次のURLにあります。 http://vimconf.vim-jp.org/2015/#agendaセッションについては他の方々が紹介していると思うのでそちらにお任せしたいと思います。 申し訳ありません。*1 懇親会 懇親…

Android Data Bindingを使ってみた。

最近ちょこちょことtechbooster.fmを聞いているのですが、第11回でDataBindingの話をしていて、その存在を知ったのでちょっと使ってみた。 詳しい使い方についてはData Binding Guide | Android Developersに詳しく書いている(はず)です。まだ読んでないで…

ImageButtonを使ってみた。

上の画像の再生ボタンのようなボタンを作成したかったので、そのためのメモ。 ImageButton このようなボタンを作成するためにはImageButtonを使う。これは、その名の通り画像付きのボタンを表す。 例えばこんな感じに表示される。 このImageButtonの結果は次…

ActivityUnitTestCaseでIllegalStateException

Androidのテストを学ぶためにCreating Unit Tests | Android Developersを読みながら、そのサイトに載っているAndroidTestFunを写経していた。その時、ちょっと詰まってしまったのでメモ。 ActivityUnitTestCaseのstartActivity()を起点にした例外 AndroidTe…

Notificationをユーザに消されないようにする

AndroidでのNotificationをユーザに消されないようにするには次のようにすれば良い。 NotificationCompat.Builder builder = new NotificationCompat.Builder(context) .setOngoing(true); // このメソッドでtrueを指定する 主な使用用途として考えられるの…

GitHub実践入門を読んだ。

今日、友達に頂いたGitHub実践入門を読んだ。読みたい本だったのだけれど、お金が無くて買えなかったから非常にありがたい。www.amazon.co.jp普段からGitやGitHubは軽く使っているので、すらすらと読むことが出来た。 本の中でgit log -pやgit reflog、git r…

RecyclerViewとCardViewを使ってみた。

Androidの開発をしたばかりで、わからないことが多い。今回はRecyclerViewとCardViewについて少しだけ学んだ。Getting Started With RecyclerView and CardView on Android - Tuts+ Code Tutorial 少し古い記事だけど、このサイトのコードを写経してRecycler…

メインスレッドではネットワーク操作を行ってはいけない。

最近、ちょこちょことAndroidの開発を行っている。色々と学ばなければいけないことが多いので、少しずつしか開発が出来ない。 だいぶ古い記事だけど、Androidで広がる,携帯アプリ開発の世界 - 第4回 簡単なRSSリーダーを作ってみる:ITproを写経して 簡単な…

va_list型というものを知った。

C++

ゲームエンジン・アーキテクチャを読んでいて9章のサンプルコードで出てきたva_listとそれに関連するマクロや関数を初めて知ったので簡単なコードを書いてみた。特に使い道のないコード。 va_listのサンプルva_list型は可変長引数を扱うために使う型。 詳し…

ゲームエンジン・アーキテクチャ第2章

第2章のタイトルは「仕事用ツール」。この章では主にバージョン管理システム、Microsoft Visual Studio、それからプロファイリングツールとメモリリーク、メモリ破壊の検出について記述している。 2.1 バージョン管理 バージョン管理システムを幾つか紹介し…

ゲームエンジン・アーキテクチャ第1章

www.amazon.co.jp 今読んでいる本です。ゲームエンジンの作りに興味があるので読むことにしました。 本を読んでいるとインプットばかりでアウトプットをしないことが多くなるのが自分の悪いところなので、不定期にアウトプットをしようと思い、メモを残すこ…

Vimで条件に一致する要素の個数を返す関数

vim

ふとVimで条件に一致する要素の個数を返す関数みたいなの欲しいなと思ったので実装してみた。 条件に一致する要素の個数を返す関数簡単なものであれば動くと思う。 例えば let s:list = range(10) echo s:count_if(s:list, 'v:val < 3') " => 3 他のみなさん…

replaceScene()とEventListener

普段、cocos2dxで開発している訳ではなく、あまりcocos2dxを知らないのだけれど、少し疑問が湧いたのでそれを書いてみる。 疑問: replaceScene()したあと、それまでに登録していたEventListenerはどうなるのか 例えば、あるシーンをタッチすると次のシーンに…

:forでリストを受け取れる

昨日、vim-threesのコードを読んでいたときに:forでリストを受け取れることを知ったのでメモ。thinca/vim-threesgithub.com for [ x, y ] in [ [1, 2], [3, 4], [5, 6] ] " do_something endfor といった感じでforでリストを受け取ることが出来る。 for [ x;…

normalコマンドとgetchar()関数

vim

Vim scriptでゲームを作るときにキー入力を受け付けてない気がするなぁと思うことがあって 多分normalコマンドが悪さしている気がするなぁと思ったので、次のようなコードを書いてみた。 2秒間s:foo()が処理を行うのでその間にキー入力をして、そのキーがge…

Osaka.vim #4に参加してきた

vim

昨日、Osaka.vim #4に参加してきた。 Osaka.vim #4 - connpass自分は、前から作りたかったvimで動くゲームをひたすら作っていた。5時間ほどしかコーディングしていないのだけれど、一応遊べる感じにまでなった。他に追加したい仕掛けやステージがあるのでま…

vim-themis, vim-owlを使えるようにした

vim

vim scriptのテストを書きたいと思ったので、テストフレームワークを用意した。 vim-themisとvim-owlの2つを用意。thinca/vim-themisgithub.com osyo-manga/vim-owlgithub.comvim-themisはvimspecの記述が気に入っている。 けれども、自分の知識が無いため…

Heap sort

Twitterで友達が「ヒープ考案した人、すごい」と言っていたので、誰なのか気になって調べた。 wikipediaによるとJ. W. J. Williamsという方がヒープソートと一緒に考案したそうだ。Heapsort - Wikipedia, the free encyclopedia詳しくは1964年に出版された"A…

プログラミング言語C++ 7.5

ポインタが指すオブジェクトが定数 int x = 3; int y = 4; const int* pc = &x; // 定数へのポインタ pc = &y; // OK ポインタそのものが定数 int x = 3; int y = 4; int *const cp = &x; // 定数ポインタ cp = &y; // エラー: cpは定数 定数を指すポインタ…

プログラミング言語C++ 7.4のメモ

知っていたことも知らなかったことも改めて学んだこともメモ。 配列からポインタへの型変換はあるが、ポインタから配列への型変換は無い char v[] = "char"; char* p = v; // OK v = p; // NG a[j] == *(a+j) == *(j+a) == j[a] std::cout << "Texas"[3] << …

Merge Pathは何故うまく動くのかがわからない

1年以上ぶりの更新。少し前からmoderngpuというCUDAライブラリのコードを読んでいます。NVlabs/moderngpugithub.com と言っても全てではなくて、マージソートの部分。そのコードの中でMergePathという関数が出てくる。そのコードは20行も無いくらいのコード…

2.1 NVCC IDENTIFICATION MACRO

最近nvccのドキュメント読んでるので一応記録。 もうそろそろCUDA 6がリリースされそうなので、リリースされたら少し変わるかもしれない。今日は2.1節のみ。nvccでは__NVCC__マクロと__CUDACC__マクロが、あらかじめ定義されている。 __NVCC__ このマクロは…

CUDA プログラミング実践講座 6.8演習

説明が下手ですみません。 6.1 テキストに載ってるコードには無駄があるので改良しなさい、という問題。 まず図6.2のコードを改良したコードを次に示す。 配列のサイズのスレッドでは半分のスレッドが動作をしないので、実行コンフィギュレーションで配列の…

CUDAプログラミング実践講座読んだ

一通り読んだ。でも理解した所はほんの一部だと思う。なので今また読んでいる。7章以降の理解が曖昧な気がするのでそこをより重点的に読んで行きたいと思う。 今の時点でまだ4章以降の演習問題を行っていないので読むのに合わせて行って行きたい。 CUDAプ…

atomicAdd

悩んだこと 今日少し詰まったことがあった。それは次のようなもの。 訪れたことがない顧客を候補としてcandidates配列に格納し、candidatesのサイズを増やすというもの。候補者を探すのをスレッドで並列に行う。 しかし、こうすると上手くいかない。 本当は…

cudaMemcpyでハマったことの覚え書き

題名通り、cudaMemcpyの際にハマったことの覚え書き。 構造体のメンバに構造体 まず次のコードを見てください(プログラムの一部のみです)。 今日ハマったコードはこれではないですが、同様の問題を含んでいます。 problem_create()はsizeof(problem)バイト…

CUDA プログラミング実践講座 5.6演習

4章に引き続き5章の演習。 5.1 行列の和で共有メモリを使って帯域幅を減らせるかどうかという問題。 人にどう説明していいのかわからないけど、結論としては帯域幅は減らせない。 行列の和の計算なので、2つの入力行列の各要素を足してその結果を1つの出…

CUDA プログラミング実践講座 4.7演習

CUDA プログラミング実践講座の紹介 この本の原著は"Programmin Massively Prallel Processors A Hands-on Approarch"。2nd Editionが発売されたということもあるのか、1st EditionはPDFで公開されている。 2010年に出版されたということで本の中で出て来るG…

行動しよう

とりあえず行動! 最近、Coders at Workを読んでる。といっても、Peter Norvigの章とGuy Steelの章だけれど。次読むとすればDonald Knuthの章かな。 読んでいて思うのは、環境が無くても興味があるのなら行動をしろ、ということ。 自分の場合はプログラムに…

遊ぶということ

遊ぶとは たいそうなタイトルだけれども、自分は遊ぶということに関してはあまりよくわかっていないような気がする。 まず、遊ぶとはなんだろうか。友達と遊ぶことは確かに遊ぶに入るんだろうけど、自分が遊ぶといったときに思いつくのはくだらないプログラ…

アウトプット やはりアウトプットは大事だなあと思ったので久しぶりにブログでも書こうかと。 といっても 何についてアウトプットを行うかは決めてない。なので、アウトプットするよっていうことをアウトプットしただけで終わろうかな。 次回は? 気が向いた…

SICP

SICPを買いました 日記を書かない間にSICPを買いました。いろんなプログラマ(例えばCoders at workに載っている方々)がおすすめしていたので買ってみた、というのが動機です。わかりやすい。 >SICPの一章を読み終わりました すごくわくわくしながら読めた…

SICP

SICPを買いました 日記を書かない間にSICPを買いました。いろんなプログラマ(例えばCoders at workに載っている方々)がおすすめしていたので買ってみた、というのが動機です。わかりやすい。 >SICPの一章を読み終わりました すごくわくわくしながら読めた…

習慣

今日、ふと習慣について考えたのでそれを自分の理解を深めるためにも記述していきたいと思います。 といってもそんなにすごい物でも長い話でもないです。 習慣になっていること これはほとんど意識しなくてもその行動を行うこと、と言えると思う。 平日は毎…