ごらくらいふ

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

プログラミング

WPFかじり: HTTP GETする

MSDNのHTTPページにリクエストを飛ばして、レスポンスから適当に表示してみる。 工程を分割 URIからリクエストの発行 var uri = "https://docs.microsoft.com/en-us/dotnet/framework/network-programming/http"; var request = WebRequest.Create(uri); var…

WPFをかじりだした。Hello world.

直近、Web systemとしてC#に触れる機会が発生して、ついでにGUIアプリケーションの作り方にも触れたいと思ったのでかじった。 とりあえず@ITの連載をざっと流し読みして雰囲気を掴む。 public partial class MainWindow :Window { public MainWindow() { Ini…

型に語らせて in kotlin (and java ?)

某本の某コードをkotlin化している。 この本はちょっとしたイラッを無数に積み重ねる反面教師本だと感じている。 何を悪しとして何を良しとしたかの備忘録。 あまり手を加えず、本件とは無関係の要素を削ぎ落としたコード片が以下の通りである。 abstract cl…

cron実行時のPATHがどこで決められるのか調査した

経緯 CentOS鯖が2本ある Let's encryptの自動更新をしたくてシェルスクリプトを書き、cronに食わせた 2本の内1本から「コマンドが見つかりません」とエラーメールが飛んできた 環境 CentOS release 6.8 (Final) 原因 両方とも失敗していたが片方しかrootメー…

メソッドの責任について考えたログ

エラー処理という名のガードレールが無いプログラミングを続けてきた。 慣れないことを考えたので思案のログを残す。 条件設定 あるコレクションのメソッドにて、引数の識別子に一致する要素を探し、仕事をさせる。 この時、引数が存在しないとき(undefined…

WinMerge日本語版をSourceTreeのマージツールにセットした

結論 Diffコマンド WinMergeまでのPath 引数 -e -u -wl -wm -fr -dl 'Base file [read only]' -dm ' Theirs fise [read only]' -dr 'Mine file' -ar $BASE $REMOTE $LOCAL -o $MERGED 想定 3ペイン方式。 ペイン 役割 左ペイン Base file 中央ペイン Theirs …

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

↓この処理をシェルスクリプトにした。 yajamon.hatenablog.com #!/bin/bash src=$1 dest=$2 backup=$3 # backupのパスがファイルなら終了 if [ -f $backup ] ; then echo "\$backup is file" exit 1 fi # srcと同じディレクトリ構造のbackupディレクトリを作…

iPadでdvorak jpほしい

無いから作ってる。 とりあえずアルファベット直輸入と末梢できるようにしたよ。 ハハッワロス 入力中の文字列をinputAccessoryViewに表示したいけど、UITextViewとか入力先が保持してるパターンの資料しか見つかってないので辛い。 ローマ字テーブルも作ら…

プログラムする前にペーパークラフトするのは

先日、すごくためになりそうなツイートを見た。 ゲームに限らないけど、プログラムする前にペーパークラフトから入る人の有能率すごい高い気がする。— 尾野(しっぽ) (@tail_y) March 30, 2016 最近、マルバツゲームを元にBDDやってみようと始めたところ、…

共通のキーワードを持つファイルたちをBashで一括置換リネームする

記事タイトルの通り、共通のキーワードを持つファイルたちを一括でリネームしたい状況になった。 たとえば デザイナと image_yyyymmdd_{s,m,l}というファイル名でやり取りしてるが、最終的にはyyyymmddが不要とか、キーワードに置換するとか app.yyyymmdd.lo…

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()を確認…

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

今日の課題 showL()を正常に動作するよう調査する 目的 動作不良の改善 作業録 動作不良を確認していたところ、上述のshowL()がそもそも意図した動作をしていなかった。 以下のソースが意図した動作をすれば、画面には▼が表示される。 しかし、実際には出力…

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

今日の課題 隣接フレームへの操作を削除する 目的 デバッグ作業の改善 作業録 音再生処理の削除 各ページにあるCsound(url)をコメントアウトした。 embedによる音再生処理はNPAPIの関係でchromeで動作していないため 特段問題なかった。 これで、index.htm, …

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

今日の課題 データの保存をdocument.cookieからsessionStorageに移行する 目的 ページ間を跨いだデータを共有する シナリオjsファイルの読み込みができるようにする 作業録 setCの修正 function setC(key,val){ var storage = sessionStorage; storage.setIt…

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

今日の課題 ↓エラーの発生原因を調査する 目的 エラーがゲーム進行の妨げになっているため、これを取り除く*1 作業録 前回のあらすじ 前回、シナリオjsファイルにclick()を発見した。 yajamon.hatenablog.com なぜ見つからないのか調査する。 本当に読み込ん…

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

今日の課題 いったいどこにあるclick()を探しているのか調査する 目的 エラーがゲーム進行の妨げになっているため、これを取り除く*1 作業録 click()が未定義のため、どういう流れで定義を期待しているのか追う。 なお、event.htm内には存在しなかった。 も…

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

今日の課題 ↓の発生する経緯を調べる。 目的 エラーがゲーム進行の妨げになっているため、これを取り除く 作業録 event.htm はどこから? start.htm を辿る。 start.htm <HTML> <TITLE>リトル・レディ</TITLE> <FRAMESET cols="100%,*" border=0 frameborder="NO" bordercolor="#FFFFFF" framespacing="0"> </frameset></html>

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

今日の課題 文字コードを Shift-JIS から UTF-8N にする ※著作物の取扱い上、編集を加えた記録のみを公開します (追記) 目的 GitクライアントであるSourceTreeや、はやりのエディタでの取り回しを良くするため 作業録 変換ツールの起用 ファイルの数が膨大な…

僕は彼女に会いたい 「リトル・レディ」をいま一度

昔、パソコンを得てワッキャワッキャしてた頃、ひたすらフリーゲームを探しては遊んでいた。 その中のひとつがこの「リトル・レディ」 私にノベルゲームという存在を教えてくれた作品のひとつだ。 昨日ふと思い出して、キーワードを便りに探しだした。 これ…

ActionSheetのラッパー「YJMActionSheet」を作りました!!

どうもyajamonです。 yajamon/YJMActionSheetgithub.com 発端 iOS 8.3 にて、UIActionSheet が deprecated になりました。 代わりにUIAlertControllerの の使用を推奨されていますが、こちらは iOS 8.0 からしか利用できません。 まだ iOS 8.0 未満を切り捨…

ウィンドウサイズを1px単位で調整するchrome拡張「diccal」を作りました!

目的 開いているウィンドウのサイズを1px単位で調整するChrome拡張を作りました。 背景 chrome拡張「demado」での設定をサポートする手段が欲しいという欲求を解消するため。 拡張へのリンク↓ demadochrome.google.com 開発欲求の暴発。 使い方