グレインの備忘録

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

LibreOffice DrawでLaTeX文書用の格好良い図を作る

巷のLaTeX文書によく埋まってるかっこいいグラフや図を自分で作ってみる。 LibreOffice Drawで図を描く LibreOffice Drawはドロー系の描画ソフトで、ベクター画像を生成することができる。 ラスタ画像とは違って拡大してもぼやけたりすることがないのが特徴…

NeomakeでC++11の構文チェック

以前の記事でNeomakeによる構文チェックを行っていたが、C++11のキーワードを認識してくれないようだ。 やり方を調べたらドンピシャのページがあった。 github.com tomlに赤字部分を書き足した。 repo = 'neomake/neomake' on_i = 1 hook_post_source = ''' …

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

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

NeomakeでC++の自動構文チェックをやらせてみる

Vimで自動構文解析といえばsyntasticだったが、チェック中は動作をブロックしてしまうので微妙だった。 NeoVimではリモートプラグインが導入され、このような問題を解決できるものが登場したので使ってみる。 NeoMakeを入れる github.com 今回使うのはこのNe…

Ubuntu16.04にTex環境を整える

LaTeXを使ってみたかったのでUbuntuに入れてみた。 基本苦労することはなかったが入れ方を一応メモ。 インストール手順 必要なのは、 TeXLive … Texのコアパッケージ pLaTeX … LaTeXのUnicode(日本語)対応バージョン の二つ。 Ubuntuの場合は $ sudo apt -y …

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

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

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

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

構造体のDictionaryでは直接値を変更できない

C#

コンテナの返値が値型か参照型かに気をつけましょうねという話。 シチュエーション 例えば、以下のようなコードを書いてみたとする。 public class Program { struct MyStruct { public int val1; public int val2; } public static void Main() { var dic =…

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

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

スクメロが起動しなくなった話

スクールガールストライカーズ・トゥインクルメロディーズ、通称「スクメロ」と呼ばれるゲームがある。 9月頭のメンテ直後に、全く起動することができなくなってしまった。 具体的には、タイトル画面でスタートするとデータダウンロードが入り、直後に落ちて…

neosnippetに自分のスニペットを追加する

Vim

前回の記事ではneosnippetを導入したが、自作のスニペットを使いたくなったので方法をメモ。 neosnippetの設定 まずは、スニペットファイルの保存先を指定する。 プラグイン起動時の設定に一行追加する。 let g:neosnippet#snippets_directory = ~/.vim/dein…

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

※この記事は「OOP初心者がブロック崩しを作ってみる その1」の続きです 衝突判定を考える さて、衝突判定のやり方を考えよう。 衝突はボールとReflectorの間で起こる。とりあえず以下のようにクラス分けしてみる。 ReflectorCollectionにReflectorを全て格納…

バッファの内容を変数に読み込む方法

Vim

日本語で調べても一切情報が出てこなかったので焦った。 方法 :%y [レジスタ名] :let content = @[レジスタ名] 一旦レジスタにヤンクしてから、その内容を変数に入れる。 @[レジスタ名]でレジスタの内容を参照できるようだ。

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

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

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

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

括弧の自動補完にlexima.vimを使う

Vim

以前の設定ではキーマップを駆使した汚い括弧補完を使っていた。 探してみると、もっと良さげなプラグインがあったのでそれに置き換えてみる。 導入 dein_lazy.tomlに追加。 [[plugins]] # lexima repo = 'cohama/lexima.vim' on_i = 1 後はインストールすれ…

deoplete環境でneosnippetを使えるようにする

neosnippetはスニペットを挿入できるプラグインだが、機能的にdeopleteと干渉する部分があるので少し工夫をする必要がある。 メモ程度に設定方法を残しておく。 参考:neovim で deoplete + neosnippet の連携をする 導入 dein.tomlとdein_lazy.tomlに以下の…

deinを真面目に設定してみる(TOML)

Vim

deinはvimrcに設定を書くだけでも使える。 しかし、一般的にはTOMLと呼ばれる外部ファイルに書くらしい。 TOMLファイルを利用する とりあえずTOMLを使う準備をしよう。 init.vimに以下の記述を追加する。 set runtimepath+=~/.vim/dein/repos/github.com/Sho…

Doxygenを導入してみる

Doxygenはソースに埋め込んだコメントを元にドキュメントを作成するツール。 メモ程度に導入方法をまとめておく。 導入 sudo apt -y install doxygen doxygen-gui graphviz あとは、 doxywizard を実行すればGUIが出てくるので、ウィザード通りにすすめる。 …

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

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

タブ独立のファイルツリーで快適コーディング

Vim

やはり、ファイルツリーをVim内で開いておけると何かと便利だ。 ファイルツリーといえばNERDTreeが有名だが、それのタブ独立版があるそうなので試してみた。 vim-nerdtree-tabsのインストール まずはプラグイン導入から。 vimrcに追加 call dein#add('scrool…

C++補完用にdeoplete-clangを導入する

コードを書くにはやっぱり補完がないと辛い。 C++をNeoVimで書くならdeoplete-clangがベストチョイスのようだ。 導入 deopleteはNeoVimのRemotePlugin機能を使うのでpython-clientを入れておく必要がある。 以下のコマンドでインストールできる。 sudo apt -…

基本的な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するのも面倒だし…

lightline対応のカラースキーム "tender" を試す

Vim

以前lightlineを使ってステータスラインを格好良くしたが、このlightlineに対応した良さげなカラースキームがあったので試してみた。 tenderの導入 いつもどおりサクッと。 call dein#add('jacoborus/tender.vim') をvimrcに追加して :call dein#install() …

lightlineを使ってステータスバーを格好良くする

Vim

lightlineとは lightlineはVim用プラグインで、ステータスバーを格好良くできる。 変更前 変更後 また、この手のプラグインの中では取り回しのしやすい方らしい。lightline.vim作りました - プラグインの直交性について 導入 とりあえずpluginを入れる。 vim…

Ubuntu 16.04のapt updateでappstreamcliがクラッシュする

Ubuntu 16.04をインストールした直後に sudo apt -y update とするとなぜかAbortする。 どうやらappstreamcliがクラッシュしているらしい。 一旦appstreamcliを無効にする 調べたらドンピシャの記事があった。 ubuntu-16-04のapt-updateでappstreamcliが固ま…

VMWareでの激重を解消

Windows上でLinuxを使うならやはり仮想化が一番。 しかし、VMWare上でUbuntuを走らせるとどうにも動作がもっさりしている。 いったい何が原因なのか。 vmemへの書き込みをやめさせる 色々調べてみると、vmemにスワップとしてデータを書き込んでいるのが悪い…

Vim(NeoVim)でクリップボードを使う

Vim

vimはデフォルトでクリップボードとデータをやり取りできない。 xclipを導入することで使えるようになる。 sudo apt -y install xclip これで使えるようになった。

Vim(NeoVim)を導入したらとりあえずしとく設定

Vim

インデント関連 set autoindent "自動インデント set tabstop=4 "タブ幅 set shiftwidth=4 "自動インデント幅 set noexpandtab "タブをスペースに展開しない set softtabstop=0 "タブ幅(入力時) その他表示関連 set number "行番号表示 syntax on "シンタッ…