生活

c#でmp3を鳴らす

Mohmongar
c#からmp3を鳴らす方法のうち、MCIsendStringを使う方法。play後にはちゃんとstopしてcloseしとかないと次鳴らせないので、playにnotifyをつけてWndProcで再生終了を受け取るのがポイント。これはFormで作ったからいいけど、[STAThread]じゃないと動かない模様。 public partial class mainform : Form { [System.Runtime.InteropServices.DllImport("winmm.dll", CharSet = System.Runtime.InteropServices.CharSet.Auto)] private static extern int mciSendString(string command, System.Text.StringBuilder buffer, int bufferSize, IntPtr hwndCallback); string musicFile = ""; string aliasName = "MediaFile"; public mainform() { InitializeComponent(); } private void mainform_Load(object sender, EventArgs e) { musicFile = "test.mp3"; } private void button1_Click(object sender, EventArgs e) { string cmd; cmd = "open "" + musicFile + "" type mpegvideo alias " + aliasName; if (mciSendString(cmd, null, 0, IntPtr.

夕日の東京タワー

Mohmongar
この投稿をInstagramで見る mohmongar(@mohmongar)がシェアした投稿 出張の時にとった写真・・いまさらInstagramを使ってみました。深い意味はありません。

ファンキータウン

Mohmongar
ずーっと昔に聞いた、ピピプピ、ププ、ペピプペ♪、の正体がLIPPS,INCのFUNCYTOWNだとわかったので買いました。覚えていたのはイントロの部分だけ。

宙ぶらりんelse問題(dangling else problem)

Mohmongar
宙ぶらりんelse問題(dangling else problem)[wikipedia]。 if文でthen節にifが重なる場合、続くelse節が前者のifのものか、 後者のifものか決定できる要素がない。調べもの中に見つけたのでメモ. if (a) if (b) c; else d; つまり上の文(C言語例)だと if (a) { if (b) c; else d; } と if (a) { if (b) c; } else d; どちらかわからない。 通常、then節のブロックを明示してどちらか決定する。

お昼の休憩

Mohmongar
ミスドでお昼。ブルックリン・メリーゴーランドのキャラメルアーモンドは甘くておいしい。

スポーツ用イヤホンを購入

Mohmongar
[amazonjs asin="B00LP6CFEC" locale="JP" title="(サウンドピーツ)Soundpeats ワイヤレス スポーツ ヘッドセット QY7 black/green 並行輸入品"] ウォーキング・ジョギング用のブルートゥースイヤホンを新調しました。前はSony製のネクタイピンタイプで、イヤホンは別モノだったので、イヤピースに耳に合った好きなものを選べたけど、本体の固定方法がどうにもうまくいかず、走るとはずれたりするので、最後にはペンダント式で首からひもでぶらさげていました。今度のはイヤホン部分のみでブルートゥースが内蔵されており、少々走っても邪魔にならないかな、と思い購入しました。具合はまた走ってから・・・

走る・歩く

Mohmongar
Runtastic PRO GPS ランニング&ウォーキング Runtastic - 2015年2月20日 健康&フィットネス ランニング(ウォーキング)時のログソフトをRunkeeperからRuntaticsに変えた。結果的に有料版のPRO。Runkeeperも悪くはなかったのだが、英語はちゃんと読み上げるんだけど、日本語でのタイム読み上げで特定の数字だけ読み上げないというバグがいつまでたっても治らないし、たまに挙動がおかしいので変えてみた。Runtatics無料版も英語しか読み上げないんだけど機能面では変わらないしPro版(¥500)にしたら日本語読み上げができるんで、まあ当分使ってみます。

gitメモ(リモート編)

Mohmongar
いまごろになってgitを使うことになったのでメモ。ググれば出てくることばかりだが一覧化しとく git init --bare <url> ... リモート可能なリポジトリを作る。bareオプションで管理のみのリポジトリになる git clone <url> ... リモートにあるリポジトリの複製をつくる。カレントディレクトリにフォルダが掘られ、このフォルダ上では元リモートリポジトリにはoriginという名前が勝手に付く。 git push <remotename> <branch> ... リモートにあるリポジトリにローカルな変更を反映する git pull <remotename> <branch> ... ローカルリポジトリにリモートの変更を反映する git remote add <remotename> <url> ... リモートにあるリポジトリに名前をつける

gitメモ(ブランチ編)

Mohmongar
いまごろになってgitを使うことになったのでメモ。ググれば出てくることばかりだが一覧化しとく git branch ... ブランチ一覧 git branch <branch> ... ブランチ作成 git checkout <branch> ... ブランチを切り替える git merge <branch> ... 現在のブランチに指定したブランチをマージする mergeでコンフリクトが起こった場合は、修正して git add <file>して git commitする。 個別のブランチのコミット修正履歴は統合ブランチには不要なので、大勢がいじる統合ブランチに、個別で変更したブランチの最終結果だけを反映させる場合に望ましい。 git branch -d <branch> ... ブランチを削除する git rebase <branch> ... 現在のブランチに指定したブランチとの共通の先祖から順番に変更をマージしていく rebaseでコンフリクトが起こった場合は、修正してから git add <file> ... これ忘れやすい git rebase --continue ... とする。 順番にマージしていくから、各変更でコンフリクトが起こればそのたびに修正が必要。全部終わるまで進めない 個別のブランチ修正と統合ブランチ修正で発生したコミット分岐の履歴をすべて残して一本化してくれるので、 大勢がいじる統合ブランチの変更内容を、個別のブランチに反映させる場合に望ましい git rebase --about ... reloadのコンフリクト解消途中で失敗したやつをなかったことにする