グレインの備忘録

プログラミング関係とかをつらつらと。

プログラミング

<2018年版>Android開発環境をLinux(ArchLinux)に導入

Android SDKなどの開発環境をLinuxにインストールする。 Deprecatedになってしまったコマンドラインツール群 「LinuxでAndroid SDKを使う!」となれば、コマンドでガリガリ開発できるとワクワクしている人もいるだろう。実際私もかなり楽しみにしていた。 し…

NeoVim+neco-ghcでHaskell自動補完

neco-ghcを使ってHaskellの自動補完を有効にする。 github.com なお、neco-ghcはneocomplete,deoplete,YCMなどで動く。 インストール Tomlに追加。 <<dein_lazy.toml>> [[plugins]] repo = 'eagletmt/neco-ghc' on_i = 1 あとはdein#install()で完了。 さらに、ghc-modが必要</dein_lazy.toml>…

Gitで部分コミット・Hunk破棄など

SourceTreeから乗り換えて、生のGitを使っている中でHunkの取り扱いがわからなかったのでメモ。 Hunkのステージ(部分コミット)は git add -p 基本は「-p」オプションを付ければうまくいく。 ステージングの場合においては、 $ git add -p [file] とすること…

Cmake+Ninjaでビルドをやってみる

最近プログラムをビルドするのにCmakeを使い始めてみた。 Cmakeでは、軽量な動作で有名なNinja用のファイルを生成できるらしいので試してみる。 Ninjaのインストール 同名のパッケージにご用心 早速入れてみようと、安直に以下のコマンドを実行。 $ sudo apt…

リンクが倍速くなるらしい「lld」を試す

最近、ビルトインのldによるリンクの遅さが気になってきた。 そこで、もっと高速なリンク方法がないか探してみたところ、いくつかの新しいリンカに辿り着いた。 GNU goldよりも2倍早いlld 高速なリンカとしてはGNU goldが割と有名らしいが、それよりも更に高…

コンテナのイテレータを保持するのは避けよう

STLとかのコンテナが吐き出すイテレータをポインタ代わりに持っとくのはやめましょうねというお話。 コンテナへの非const操作はイテレータを破壊する(可能性がある) 「可能性がある」だから余計厄介だったりする。 テストケースではうまく動いても実環境では…

UMLをテキストで書ける「PlantUML」を試す

UML図を書くフリーのツールにはいろいろあるが、テキストコマンドで書けるものの一つに「PlantUML」がある。 テキストベースで書けると何がいいかというと、 保存・編集・移動・再利用が容易である Gitなどのバージョン管理システムとの親和性 などの点が挙…

OOP初心者がブロック崩しを作ってみる その1

オブジェクト指向の設計やコーディングについて自分なりに情報を集め始めてからかなり経って、自分なりに手法というものがある程度見えてきた。 ということで、それの実践としてひとつ簡単なゲームを制作してみたいと思う。 概要 今回作るのはよくある美少女…

補助ライブラリでサクッとOpenGL(GLFW,GLEW)

OpenGLはプラットフォーム独立のライブラリだが、ウィンドウ管理などの面倒は見てくれない。 また、シェーダーを使うのには拡張機能を有効化する必要がある。 ウィンドウ管理や拡張機能の取得はプラットフォームごとに違うので、生のGLを扱うとそれなりに労…

基本的なGitコマンドチートシート

初期設定など ユーザー設定(氏名とメアド) git config --global user.name "Grain" git config --global user.email grain@exout.net –globalによって設定が永続化する。 リポジトリ作成 対象フォルダにて git init コミット関連 ファイルのステージ git add <file></file>…

C++用のMakefileを半自動で書く

Makefileはうまく書けばコンパイルが自動化できて楽だが、ソースの登録が面倒くさい。 そこで、シェルスクリプトなどを活用して自動でMakefileを書いてみる。 (autoconfとかを使ってもいいのだけど、小規模なプログラムでいちいちconfigureするのも面倒だし…

バイナリモードのfseekとfwriteの挙動

バイナリファイルで一旦fwriteした後に前方へfseekして、もう一回fwriteすると上書きされるのか挿入されるのかたまに忘れるのでメモっとく。 結論から言うとfseekしてからfwriteすると元のデータは上書きされる。(まあ当たり前か) 例えば、新規ファイルにつ…