俺的Linuxコマンドまとめ
自分で使うけどコマンドが長すぎて覚えられないコマンドをまとめておく
環境
OS BunsenLabs Linux
PC ThinkPad X240
マウスの速度変更
xinput --list --short
を実行してSynaptics TouchPadのidを調べる
xinput --set-prop <id> "Device Accel Constant Deceleration" <val>
を実行
id は上で調べたid番号
val がマウスの速度になる
数値がでかいほど遅くなる
音量調節
amixer sset Master <val>%
val は0~100を指定
画面のキャプチャ(gif)
byzanzをインストールするとgitキャプチャができる
byzanz-record --duration=<val0> --x=<val1> --y=<val2> --width=<val3> --height=<val4> <file>
val0 コマンドを実行してから何秒間録画するか
val1 録画するウィンドウの始点X
val2 録画するウィンドウの始点Y
val3 録画するウィンドウの横幅
val4 録画するウィンドウの縦幅
file 出力するファイル名 test.gif など
同ディレクトリのバッチを順に実行するバッチを書いた件について
会社でデザイナーの使うツールとして
「バッチを自動で実行するバッチ」を書いたので
ちょっと記事にします、ω、
前知識
コメントの書き方
@rem から始まる行はコメントです!
実行コマンドの非表示
デフォルトだと実行するコマンド自体も出力されてしまうので
コマンドは出力しないようにする
@echo off
バッチの呼び出し
call <path_to.bat>
自分自身の名前を取得
echo %0
条件分岐
簡単にif
@rem run01.bat @echo off if 1 == 1 ( echo "1 is 1" )
"1 is 1" |
変数
簡単にローカルな変数を
アクセスには%%でくくる
@rem run01.bat @echo off set HOGE = 256 echo %HOGE%
256 |
繰り返し
今回はforを使用する
for %%一文字の変数 in (要素) do (処理) for %%i in (1, 2, 3) do ( echo %%i )
1 | 2 | 3 |
同ディレクトリにあるbatを実行
実際のものとは違いますがだいたいこんな感じです
@echo off for %%i in (*.bat) do ( if %0 NEQ %%i ( call %%i ) )
同ディレクトリにあるbatの検索
for %%i in (*.bat) do ()
NEQ(!=)を使い自分自身を実行しないようにする
if %0 NEQ %%i ()
最後に
条件分岐とかつかってバッチを書いたのは初めてでしたが
C/C++やってれば大抵の言語は似たようなものなので
時間はかからなかったです
forの変数が%%から始まりなおかつ名前は一文字という謎制約とか
古い技術の片鱗を味わった気がするぜ。ω。
openFrameworksはいいぞ
この記事は東ゲ部 Advent Calendar 2016 - Adventarの13日目です。
openFrameworksって?
openFrameworks(以後oF)とは
"「創造的なコーディング」のためのC++のオープンソースツールキット"
C++でコード書いてマルチプラットフォームに対応したゲームが作れる!
って思ってくれればおkです
最近はUnityとかUE4とかのエンジンが勢力を伸ばしてきているので
コードだけでゲームを作るライブラリが元気ないのですが
なかなか楽しいライブラリなので紹介したいと思います。ω。
Example
Addon
oFはプロジェクトを自動生成してくれる
projectGeneratorというものがあり
項目で好きなアドオンをプロジェクトに追加することができます
このアドオンというものは誰でも作成することができ
作ったアドオンをoFに「こんなの作ったよー」って教えてあげると
「ホームページに登録したよ! ありがと!」
って返信が来るほど活発にアドオンが増えています。
この前ゲームパッド用のライブラリが無かったので
自分で作って公式に投げて見たところ、見事公式に登録されました 。ω。うれちい!
俺でもわかるClojure入門 part2
前回(俺でもわかるClojure入門 part1 - Lyの日常)
NightCodeを使用して
足し算、引き算をやってみました
今回は条件分岐を書いていきます
NightCodeでプロジェクト作成
前回使った下の部分
簡単なコードを試すのには便利なんですが
改行とか考えると不便なので
プロジェクトを作ってみましょう
Start -> Console App
名前は適当にclojuretestにしました^q^
InstaREPL
コードを書きながら実行結果が知りたい時が多々あります
NightCodeではREPLが使用できるので実際に使ってみましょう
REPL(Read-Eval-Print-Loop) まぁやってみればわかるですよ。ω。
InstaREPLってところポチッと押してくださいな
足し算引き算を書いてみた例
こりゃたまげた!!
コードを書いたそばから実行結果が丸見えじゃないですかやだぁ!
という感じのものです。
if true false
条件によって別の処理を実行したい!
って時に条件分岐を使いますですゾ
まぁやってみましょう!
; ifの書き方 ; (if boolean-form ; then-form ; optional-else-form) ; (if (条件) (条件がtrue(真)の時の処理) (それ以外の処理)) (if true 1 2) ;-> 1 (if false 1 2) ;-> 2
複雑な条件
実際のコードでは条件の部分に直接true falseは書きません、ω、
うん、セブンのシューロールケーキ美味しい^q^
; (= a b) ; a b が同じものか判定する (= 1 0) ;-> false (= 2 2) ;-> true
; (or a b c...) ; a b c.. どれかがtrueであればtrue (or false false) ;-> false (or false false false true) ;-> true (or (= 0 1) (= "a" "b")) ;-> false
; (and a b c...) ; a b c...全てがtrueの場合true (and true false) ;-> false (and true true true) ;-> true
こんなん書いてみた
(if (= "Me" "Genius") (println "I'm Genius!") (println "No way!")) ;-> No way! ; printlnは文字列出力関数です ; REPLではnilと出ますが ; Run で実行すれば下のコンソールに出力が出ると思います ; nilについてはまた今度
おっつ
条件分岐たのちい
実はもっとたくさんの条件用の関数があり
もちろん自分で作ることもできます
次回は定義についてやろうかな
ではでは、ω、
俺でもわかるClojure入門 part1
こんちくわ
最近Clojureにはまっているので
Clojureについて記事を書こうと思うよ!
Clojure #とは
簡単に言うと
"Lispに似ている"
"関数型言語である"
ですね。
難しいことは考えるな!
書けばわかる!!
開発環境を整える
まずはIEDですが
LightTable http://lighttable.com/
NightCode https://sekao.net/nightcode/
この二つになるのかな?
今回は個人的に便利だと感じたNightCodeを使用していきます
前置記法を使用する
今までC++を書いてきた僕にとって
一番衝撃的だったのが
記法です
C++は中置記法で
Clojureでは前置記法を使用します
ニャンじゃそりゃ?
まぁ見てくださいよ奥さん
// C++での足し算 1 + 2; 3 + 5;
; Clojureでの足し算 (+ 1 2) (+ 3 5)
本当にこれで動くのかって??
それじゃぁNightCodeで実際に試してみましょう!
簡単なコードを書いてみる
NightCodeでは簡単なコードをすぐに実行できる機能があるぞ!
ここで実行できるわけです
とりあえず足し算でもしてみましょう
user=> (+ 1 2) 3 user=> (+ 3 5) 8
ね?簡単でしょう?
続いて引き算
user=> (- 8 3) 5 user=> (- 1 5) -4
俺でもわかるPicojsonの使い方
PicojsonはJson形式を解析するライブラリです
PicojsonをGithubから取ってくる
Kazuhoさんに感謝
github.com
Picojsonはヘッダーオンリーなので
picojson.hだけで機能します
json形式のデータを用意する
# data.json { "Player": { "Name": "Yanai" } }
Picojsonを使ってデータを取得
#include <iostream> // std::cout #include <fstream> // std::ifstream #include <cassert> // std::assert #include "picojson.h" int main() { // ファイルを読み込むための変数 std::ifstream fs; // ファイルを読み込む fs.open("data.json", std::ios::binary); // 読み込みチェック // fs変数にデータがなければエラー assert(fs); // Picojsonへ読み込む picojson::value val; fs >> val; // fs変数はもう使わないので閉鎖 fs.close(); // Playerの名前を取得 std::string name = val.get<picojson::object>() ["Player"].get<picojson::object>() ["NAME"].get<std::string>(); }
picojson::objectはmapで生成されているので
[]でKeyを指定してそれに対になっている値を取得します
\\* 注意点
Picojsonではdouble型での数値の取得しか対応していません
コードからjson形式のデータを生成する方法
picojson::object obj; // データの追加 obj.emplace(std::make_pair("Name", "Yanai")); // 文字列にするためにvalueを使用 picojson::value val(obj); // return std::string val.serialize(); std::cout << val.serialize(); // {"Name": "Yanai"}
Unityで光のにじみ出るヤツをやってみた
って呟いたら
って教えてもらって
ってな感じにできちゃったので
簡単に方法を載せておきます、ω、
Effectsをインポート
[Assets]->[Import Package]->[Effects]
BloomをMain Cameraに追加
[Main Camera]を選択して[Add Component]をクリック
Bloomで検索して[Bloom]をクリック
Cubeを生成して確認
今回は分かりやすくするために
後ろに黒い壁を生成してます
物体ごとに強弱をつける
スタンダードシェーダーのEmissionで物体別に設定できるようにします
Emissionの値を1より大きな値にするとHDRという意味不明なものになって
周りの空間に作用するようになります
デフォルトではHDRが有効になっていないので
カメラの設定をいじります
Main Cameraの設定をいじる
[Rendering Path]を[Deferred]に、
[HDR]にチェックを入れます
standardシェーダーをいじる
物体にマテリアルを設定して
Emissionをいじります
今回は2に設定しました
物体を2つ置いて確認
マテリアルを設定したのが左です
違いが出ていると思います
テクスチャを貼ってみる
ここからはオプションです
[Albedo]と[Emission]に同じテクスチャを設定すると
こんなこともできます、ω、