ごらくらいふ

プログラミングしたりゲームしたり

programming

BDDの書き方、始め方が分からなかったので、まず書いた

テストは大事なのは分かる。TDDやBDDでキーワードを手繰って、向き不向きやコンセプトの説明も見た。 けどそればかり拾ってしまって、実際にどう考えたらいいのか、どう書き出せばいいのか全くわからない。 「BDDでプログラミングする」を指針にマルバツゲー…

あるマスタから順不同に取り出した要素2件を組み合わせ、意味を持たせるときのテーブル構造

※ながめだよ 先日、PSStoreのセールにつられて「俺に働けって言われても乙 HD」を買った。 ほんのりプレイしていたところ、『このデータを表現するテーブルはどんな構造だ?』と気になったので考えた。 考えたので残すことにした。 経緯 ゲームシステムのひ…

リリースするファイルに対応したバックアップを作る

本番に手作業でリリースする際、改修したファイルだけを取り出す。 リリースして問題があった場合に復元するため、バックアップを用意するが、その作業に手間取ったので備忘。 作業内容 登場するディレクトリは3種類 release リリースするものが詰まったディ…

bashでfor in文を叩く

半角スペースで句切られた文字列を回せるらしい sum=0 for number in 1 2 3 4 5 6 7 8 9 10 do sum=$((sum+number)) done echo $sum # 55 lsなどのコマンド実行結果も回せる for item in $(ls /path/to/directory) do echo name is $item done

カウンターChrome拡張「CounterExt」を作りました!

つくりました!!!! chrome.google.com スクリーンショット 目的 カウントする何かがほしかったのです。 ゆくゆくは外部からのリクエストを受けて、カウンターのプラットフォームにする野望があります! src Githubでソース公開しています。 github.com 不…

Xcode7(とiOS9)で セキュアじゃないサーバに IPアドレス直打ちで接続するにはどうしたらいいの?

諦めてドメインつけろ ドメインを付ければ、Info.plistでATSの例外に設定できる 参考URL [iOS]2015年9月16日リリースのiOS9対応とipv6移行対応について対応と参考資料まとめ | Coffee Breakにプログラミング備忘録 stackoverflow.com

Dvorak(JP) 日本語入力で打ちづらいキーへの対策を考える

dvorak配列で打ちづらいキーを、打たないことで解決する 打ちにくいやつら ホームポジションから隣接2キー離れる組 y f x b 母音側にいる子音 p k j q 解決案 yは、拗音はdvorak(jp)の組み合わせ打ちで回避できる ※しかし、清音は代用できない fは「hw」で代…

npmでpackage.jsonにないPackageを削除する方法

package.jsonにないpackageに別れを告げる方法 $ npm prune unbuildも面倒になったときに、みたいな。 npm help docs.npmjs.com

ウィンドウサイズを1px単位で調整するchrome拡張「diccal」をアップデートしました!(ver.0.1.0)

以前公開した chrome拡張「diccal」をアップデートしました! yajamon.hatenablog.com 更新内容(0.1.0) 操作盤の長押しに対応しました!もう長連打の必要はありません! 操作盤を開くためにクリックする場所がちょっとわかりやすくなりました インストール …

データに依存する振る舞いを脱却したいのですが

.+_kindとか、.+_typeとか、マジックナンバーをデータベースに保存することって、よくある。 ロジックの方では、その値に応じて、処理を分岐したりする。 んで、分岐するために、基準となる値をコード上にもつ。 これを脱却したいとよく思う。 それもマスタ…

「リトル・レディ」かってに復活開発日誌 #18

今日の課題 シナリオ開始時にBGMが鳴るようにする 現状、画面遷移直前にBGM変更している。 これをシナリオ開始時に行うようにする。 作業録 // /index.htm function topS(){ /* 省略 */ if(maiFlag==2){ /* 省略 */ }else{ setC("Snum",180); // 消す // Cso…

Audioオブジェクトでフェードイン

フェードアウトがあればフェードインも必要。 Audioオブジェクトでフェードアウトする - ごらくらいふyajamon.hatenablog.com 環境 chrome 44.0.2403.130 m (64-bit) example 一定間隔でフェードイン volume = 0 + a*frame music = new Audio(); music.src =…

Audioオブジェクトでフェードアウトする

環境 chrome 44.0.2403.130 m (64-bit) example 一定間隔でフェードアウト volume = 1 - a*frame music = new Audio(); music.src = "your/music/path.mp3"; music.fadeTimerId = null; music.fadeOut = function (time) { var frame = 30; var frameCount =…

Audioオブジェクトでリピート再生する

環境 chrome 44.0.2403.130 m (64-bit) 乗るべきevent Audioオブジェクトにビルトインでリピートに関する機能がない。 機能はないが、実現するための条件は揃っている。 Audioオブジェクトが楽曲を再生しきったとき、endedイベントが発行される。 このevent…

「リトル・レディ」かってに復活開発日誌 #17

今日の課題 BGMを鳴らす! あらすじ NPAPIが使えないchromeにおいて、.midの再生にはSoundFontを取得して合成せねばならないらしい。 目的は作品に音楽を流すことのため、.midを.mp3へ変換し、Audioオブジェクトで再生することにした。 yajamon.hatenablog.c…

SQLite3 に SQLをサクッと実行できるラッパー「YJMSQLiteQueryExecuter」を作りました!!!

yajamon/YJMSQLiteQueryExecutergithub.com 「既存コードあるから!」とSQLite扱う仕事引き受けたら sqlite3 function直書きしかなくて怒髪天を突いたのでつくりました。 以下、READMEの内容を日本語でべちゃっと書きます。 機能 インスタンスにSQL渡すだけ…

SQLite3 datatype in Objective-C

SQLite3 の型に関することをまとめた。 SQLite内部で使うデータ型 INTEGER 整数 REAL 実数 TEXT 文字列 BLOB バイナリデータ NULL NULL 使用例 CREATE users ( id INTEGER NOT NULL, name TEXT, weight REAL, face BLOB ); Objective-Cが受け取る時のデータ…

都度sqlite3_*に消耗したので、せめてSelect結果だけはサッと取れるGist書いた

ただし動作確認はしていない あらかた実装終わってから衝動だけで書いた。 差し替える気力が尽きたから動作確認はできてない。

NSFileManager fileExistsAtPath でコケてた話

ディレクトリの存在チェックを書いてコケた アプリ内の領域に保存するため、ディレクトリを切ろうと以下のコードを書いたらコケた。 ちなみに、最初の1回は通って、2回目から(ディレクトリが作られてから)常にコケるようになった。 gistdf32f6e75d82d65414…

chromeでのMidiの再生にはSoundFontが必要らしい

MIDI(Standard Midi File)はざっくり言うと 演奏情報の集積体。音源はない。 どんな楽器のどんな音をどんな強さでどれだけの時間鳴らす。 そのあり方は楽譜に近いらしい。 音はどこにいるのか .mid に音源はない以上、どこかから音源をたぐり寄せなければ…

「リトル・レディ」かってに復活開発日誌 #16

今日の課題 hane.htmの修正に区切りをつけて、後の処理を確認する。 さっそく発生した。。。 作業録 次へボタンの動き <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 COLS=1 WIDTH="123" BGCOLOR="#3366FF" > <TR> <TD><center><B><FONT SIZE=+2><A HREF="javascript:newPage('event.htm')" onClick="select(181)">次へ</A></FONT></B></center></TD> </tr></table>

「リトル・レディ」かってに復活開発日誌 #15

前回、配列を連想配列として使おうとしていたために詰まっていた点を解消した。 羽が降る画面なのだが、どうも正常に動作していないようだった。 最後のspanだけが操作されている。 今日の課題 要素が適切に使われるようにする 作業録 即時関数を利用する ス…

「リトル・レディ」かってに復活開発日誌 #14

前回、hane.htmのエンバグを修正した。 が、特に画面に変化がなく、次の画面に遷移してしまった。 これはさすがにおかしいので、調査したところ不具合が見つかった。 今日の課題 hane.htm に見つけた不具合を解消する 作業録 BreakPointを貼って確認していた…

オブジェクト指向エクササイズでbreakはどうやるの?

ネックになったもの オブジェクト指向エクササイズの項目に、次のルールがある。 インデントは1メソッド1レベルのみ。 あれ、これってbreakどうやるの? サンプルコードを普通に書く サンプルコードを書く。return で十分なのだけどbreakの話なので容赦して…

「リトル・レディ」かってに復活開発日誌 #13

今日の課題 炙りだされた不具合を解決する 前回、BGanime()、slideLS()から呼び出されたものを改修したら、不具合が発生した。 これを解決する 作業録 bga8 ? 詰まっているところを確認したところ、bga8というエレメントが見つからず、moveL()からエラーを吐…

「リトル・レディ」かってに復活開発日誌 #12

今日の課題 BGanime()が呼び出しているfunctionを動作させる slideLS()が呼び出しているfunctionを動作させる 作業録 対象の関数は以下。 moveL() getSWsize() getSHsize() moveL() この関数、eventP.jsで定義されているものと同じものだった。 同ファイルが…

「リトル・レディ」かってに復活開発日誌 #11

前回、シナリオを演出込みで読み進められるようになった。 そこで、オープニングシナリオを読み進めたところ。。。 (ノ∀`)アチャー 今日の課題 Maximum call stack size exceeded を解決する 作業録 BGanime が slideLSを、slideLS が BGanimeを呼び出しあってい…

「リトル・レディ」かってに復活開発日誌 #10

今日の課題 エフェクト処理を動作させる 目的 意図された演出を体験する 結果 動きました。 作業録 eventP.js内のdocument.allを全て修正する。 // /js/eventP.js ///////////////////////////////////// //○レイヤーを前に出す function zindexL(layName, z…

「リトル・レディ」かってに復活開発日誌 #9

今日の課題 start ボタンクリック時のワイプ処理を動作させる 目的 意図された演出を体験する 作業録 クリック時の処理をおさらい // /index.htm function topS(){ var BSW = getBSW()+15; var BSW1 = Math.floor(BSW/2); var BSH1 = getBSH()+10; // 省略(…

「リトル・レディ」かってに復活開発日誌 #8

今日の課題 シナリオを表示させる 目的 シナリオを読む 作業録 前回の修正で、document.allの存在チェックを行っているところは処理が実行されないことが判明した。 同様の修正で、シナリオが表示されるようにする。 次のメッセージを表示する newM()を確認…