グレインの備忘録

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

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

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

wineでフォントが汚い場合の対策

wineを入れたはいいものの、どうにもフォントが汚い。 アンチエイリアスがまるでかかっていないようだ。 スムージングの設定の問題? スムージングが設定できてないのかと思って、やってみた。 mattintosh.blog.so-net.ne.jp しかし、全く効果はない。 Xftの…

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>…

stackのclockのビルドで大ハマリした話

ghc-modを入れようとしたらclockのビルドに失敗してハマったのでメモ。 ビルドエラー ghc-modのところでclockのビルドに失敗した的なメッセージが出たので単体でビルドした結果がこちら。 [naoki@X58A-UD3R ~/WorkDir/haskell] $ stack install clock clock-…

SSHでGitHubに接続する

パスワード認証の問題点 GitコマンドでGitHubにpush/pullするためには何らかの形で認証方法を与えてやる必要がある。 一つはユーザー名とパスワードを入力する方法である。 ところが、これは毎回パスワードを入力する必要があるので面倒臭い。 (一応パスワ…

ArchLinuxのインストール 2.5.ユーザー作成編

ArchLinuxでユーザーを作るときに少しハマったのでメモ。 ホームディレクトリをちゃんと作ること ユーザーの正しい作成方法は、 $ sudo useradd -b/home [ユーザー名] $ sudo passwd [ユーザー名] $ sudo mkdir /home/[ユーザー名] $ sudo chown [ユーザー名…

xfceの設定をバックアップ(xfpanel-switch)

xfpanel-switchを使うと、xfceの設定を保存できる。 インストール ArchLinuxだとAURでメンテナンスされている。 $ yaourt -S xfpanel-switch おわり。 使い方 パネルを右クリックして、「パネル」→「パネルの設定」を開く。 すると、設定画面に「Backup and …

ArchLinuxにWifiマネージャとブラウザを入れる

以前に構築したArchLinux環境にWifiマネージャ的なものを入れてみる。 マネージャアプレットのインストール NetworkManagerを入れてなければ、 $ sudo pacman -S networkmanager $ sudo systemctl enable NetworkManager.service で入れておく。 入れ終わっ…

ArchLinuxのインストール 2.GUI(xfce)&日本語環境構築編

※この記事はArchLinuxのインストール 1.ファイルコピー編の続きです。 今回はGUIを入れていく。 以下のサイトを参考にした。 Arch LinuxにGUIデスクトップ環境を構築する Arch Linuxに日本語環境を構築する GUI構築 1.グラフィックスドライバのインストー…

ArchLinuxのインストール 1.5.yaourtのインストール編

yaourt=非公式リポジトリ管理ツール。 ArchLinuxにはAURと呼ばれる非公式のリポジトリがある。 これはpacmanでは扱うことができない。代わりにyaourtを使うということである。 yaourtのインストール まずはyaourtのあるレポジトリを追加する。 $ sudo vim /e…

ArchLinuxのインストール 1.ファイルコピー編

ArchLinuxのインストール方法をメモ。 ※これは2017年12月現在の情報であり、将来この方法がそのままでは通用しなくなる可能性は高い。 何かおかしいことがあれば必ず自分で調べること。(特にパッケージ名の変更など) 基本はArchWiki ArchWikiの内容は極め…

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が出てくるので、ウィザード通りにすすめる。 …