だから囁くのさ

自分の日常とか音楽の話とかとか

コンピュータ系

プログラミング学習と音楽なゲーム【思案中】

結構前に買ったゲームで「ヒューマン・リソース・マシーン」というのがSwitchにインストールされていた。
最近、思い出したようにプレイしてる。
簡単に言うと「ゲーム内のキャラの動きをプログラミングしてパズルを解くゲーム」
アセンブラのような単純な命令を組み合わせてキャラを動かす。
最後の方になると数字のソートとかも出てくる。



詳細は↓のような感じで




プログラムをGUIで組み立てて、その結果をキャラクターの動きで確認できるというのは単純に楽しい。
このゲーム性に音楽の要素を足したいと思っている。

すでに「MusicBlocks」っていうのがあって、楽器の演奏をプログラミングしたりするものがあるんだけど、これは楽器の譜面そのものをプログラミングする感じにみえる。。。
それも楽しいんだろうけど、ちょっとプログラミング学習に寄りすぎてる気もする。



プログラミング学習の目的も果たしつつ「ヒューマン・リソース・マシーン」のように、画面の中でキャラがコミカルに動きながら、その結果として音楽を奏でたり、リズムを刻んだりして、気持ちいいゲーム体験を作りたい。
しかし、まだアイデアが出ない…

頭の中では「ヒューマン・リソース・マシーン」*「Rez」*「RAYSTORM」のイメージがわき始めてるのだけど。。。まだまだ具体的な形になっていない…

うーむ、同じような趣向の人と語り合いたい。



イヤホンのボリュームを手元で調整する

IMG-0082


パソコンからの音声出力をどのようにして聴いていますか?
PC内蔵スピーカー?外付けスピーカー?ヘッドホン(イヤホン)?

僕は、会社ではデスクトップPCのイヤホン出力にイヤホンをつないで仕事をしています。

そこで日々面倒だなと思っていたのが「音量調整」です。

Windows画面右下にある音量調整のやつをつかってました。
音量調整


とっさに音量を上げ下げしたいときは非常に不便…面倒…嫌だ…と思ってたところ、同僚から↓の器具を勧められました。



ツマミをひねるだけでさっと音量を調整できるので便利です。
ツマミは少し重めで”回した感”が心地よく感じられるのがグッド。

手元で簡単に音量を調整できるのでかなり気に入りました。

背面は↓のようになっています。


PCのイヤホン出力をこいつのInputに挿入
こいつのOutputがRCAになってるので↓のようなやつで、RCAをイヤホンジャックに変換しましょう



安物だとLRが逆とかあるっぽいです。
配線後はこういった動画でLR正しくつながってるか確認しましょう


↓のような動画でスピーカーやイヤホンの配線チェックをしてみましょう
【配線接続チェック】プレイリスト

numeric_limits orz

ASSERTで「unsigned intの最大値」以下って条件で↓のように書いてて、、、
void Func(unsigned int value){
  ASSERT(value <= std::numeric_limits::max());
}


とある拍子に、引数が「unsigned short」になった時にASSERTの部分も書き換えなくて良いように↓みたいに書けんもんかねぇ…

void Func(unsigned short value){
  // なんかの処理
  ASSERT(value <= std::numeric_limits<型(value)>::max());
}




ちがう、死にたい…orz
ASSERT(value <= ((0x80<

こう書いてみたけど、こんなふうにしたくなることって、あんまりないなぁって…

清潔なコーディング

3776add6.jpg
ボーイスカウト精神を持って、日々コードを書くに書かれているように、「来た時より綺麗にして帰る」の精神で「修正前より綺麗にしてコミットする」を継続すればプログラムコードは綺麗に保たれるのだろうか?
綺麗にするための具体的な方法は文化や宗教や美意識、その他の諸々の問題や僕の技術不足のため一言では片付かない…
しかし、少なくともボーイスカウトの精神を心の片隅に置いておけばとんでもなく酷い状態にはならない…ような気がする(^^;

↓の記事にもあるように、「週末に一気に大掃除しよう」って思っていると腰が重くなるし、相当な労力になるもの。
完璧でなくてもいいから日々ちょっとずつ綺麗にするっていうのが良いらしい…
完ぺきにしなくてもいい「1日15分の掃除を毎日続ける」というお掃除術
※実はこの記事は半年近く前に見つけて読んで、その後、キッチンタイマーを使って15分清掃を始めてみたんだけれど習慣にならなかったんだよなぁ…
※「継続は力なり」を実践できないでおります…

今日のクソース

class Base{
  protected Check check = null;
  protected void OnInit(){}
}

class Child extends Base {
  protected void OnInit(){
    // 親クラスのOnInit()を呼ぶ前に、protectedのメンバ変数にインスタンスをセットしてあげないとヌルポ
    check = new Check( "ほげほげ" );
    super.OnInit();
  }
}

なんだよ、、、親クラスのメンバ変数のインスタンス化を子クラスで記述しなくちゃいけないってどう考えてもおかしいだろ…

せめて、OnInit()が純粋仮想関数になってるか、
「protected abstract Check Base::createCheck(); 」になってて、子クラス側でCheckクラスの新しいインスタンスを返すことを強制されてれば良いのに…

オブジェクト指向言語覚えたての人というか丸っきり初心者過ぎて、なんで彼が共通ライブラリ書いてんだよ……

さっぱりとしたソースコードと見せてはいけない暗闇

b9b9324a.jpg
コンパイル済のclassファイルにヤヴァイテキストが混入していないかチェックするために、ランタイム時に調べたい。
文字リテラルのリソースにアクセスする手段あるかしら?
と小一時間調べてましたorz

class A{
  private String m_Text="しんでくださーーーい";
  public A( String text){
    // コンストラクタでどうせ書き換えられるけど、気晴らしにm_Textの初期値を入れておいた文字列がバイナリに含まれてハズカシー
    m_Text = text;
  }
}

いや、まぁ、こんなのなら漏れても良いんだけど、
テスト用のコードをなんで本番のソースに埋め込むかな……


タイトルとは全く関係ない感じに落ちた。
最近、SNSやらIMを色んな種類に手を広げすぎて若干収集がつかなくなっていた感じです。

※これ書いたの先月だ…

何の意味もない

c言語とかc++にて

void Func( const int value )
{
}


値型の引数にconstつけても………
何の意味もない!!何の意味もない!!
(小島よしお風)

一応うまくいってる?

一応、先月ここに書いた件に関してはうまくいってるっぽい
ヨカタ…目処はたったよ。

まだ終わりじゃないけど

眩暈がするコード

自前アロケータのマルチスレッド対応について。

// 自前アロケータmalloc
void *malloc(size_t size)
{
	pMutex->Lock();
	// 16バイトアライメントで空き容量取得して使用済みにする。
	MEMORY_TAG *tag = FindFreeTag(16, size);
	tag->bUse = true;
	pMutex->Unlock();

	return tag->buff;
}

// 自前アロケータのfree()
void MyFree( void *ptr )
{
	// メモリ管理タグから該当のタグを探して未使用領域にする。
	pMutex->Lock();

	MEMORY_TAG *tag = FindTag( ptr );
	tag->bUse = false;

	pMutex->Unlock();


	// 空きメモリを他の空きメモリと結合させる
	// この関数の中で「pMutex」のロックをしてるらしい。
	CompactionTag( tag );
}
ノンプリエンプティブな環境だと問題なかったんだけれど、
プリエンプティブな環境に持ってきたら吹っ飛んだw
当然だけど。

こんなコード書きながら、得意げにどや顔する彼に何て言えば良いでしょうか。

マルチプラットフォーム設計?

同僚が社内ライブラリの実装をしている
最初から「マルチプラットフォームを念頭に設計するように」と上からのお達しがあったにも関わらず、
機種依存バリバリのインターフェースを作ってくれちゃう。

しかも、ちょっとぐらい相談してくれれば良いのに、
誰にも相談せずSVNにも入れず(他人から見えない状態)一人で突っ走って実装してしまうもんだから。。。。
気付いた時にはヒドイ状態でコミットされてる
せめてSVNに入ってる状態なら他の人からの助言もはいるだろうに、、、

もう、奴に作らせたくねぇorz

痛い具体例。

// チャンネルの音量設定
void SetVolume(uint32 volL, uint32 volR);


なんと、ボリュームをLR別々にセットしてる!?

聞いてみたら、
「PSPではボリュームを左右別々に設定できるから」
とのこと。

いやいや、PS3やXboxだったら5.1ch、7.1chあるんだけど!?
つかマルチプラットフォームライブラリの設計段階で「PSPでは」とか思いっきり環境依存の話が出る時点でおかしい。

↓のように変更してみました。(正確にはちょっと違うけど)
void SetVolume(uint32 vol);
void SetPan(int16 x,int16 y,int16 z);

2ch環境ならy,zの値を無視した実装にすりゃ良いかぁとか思ったり。


これは単純な例だけど、、、こういうのばっかで辟易しとります。。。

ふぅ。。。

Mac mini欲しい

今更ですがMac mini欲しい
用途はこれまた今更ですがiPhoneアプリ開発用

安く手に入れるなら中古かオークションか・・・
「もういらない」って人が居れば安く譲ってください(;^_^A

1時間でテトリスを作る動画

1時間で、C++コンパイル環境インストールから初めてテトリス作る動画
プログラムの内容自体は普通なんだけど、それを1時間以内で記述して一応の完成まで持っていってる手際が驚異的。



自分ならどれぐらいの時間でできるだろうか…

twitter

始めてみたー。
活用できるかわかんないけど。。。
http://twitter.com/take_de_x

やってる人いたら教えてー

上手く動かないんですど…

「プログラムは思ったとおりには動かない、書いた通りに動くんだ」ってのは僕の中では常識だったんだけど、、、
プログラムがうまく動かない原因をハードやライブラリのせいだと思い込んで悩み続ける人もいるんだ。
開発途上、あるいは新ハードならそういうこともあるかもしれないけど…

マニュアルに書かれてる処理を書かずに動かない動かない言うのはちょっとおかしいんじゃないかなぁ…
そんで「コンシューマはPCと違ってクセがあるからーメンドクサイ」って言われてもなぁ。
PCのプログラムだってDirectXだって仕様通りに作らないと動かない点に関して言えば同じなんだけどな…
せめてマニュアルは熟読しようよ…そのマニュアルが間違ってたら文句言っても良いからさ…

という愚痴だったとさ。
所詮はプログラマ同士のもにょりなので、レベル低い話でお恥ずかしい。

PC新調計画

眠いです。なんか、寝ても疲れが取れないので、週末寝溜めしてしまう。。。
私的時間の充実が課題です。数年前から課題です。

ようやくPC新調しようかと重い腰をあg
久々の自作で知識皆無なので、Kさんにお手伝いいただきつつ、ありがとうございます。
自分で組めなかったら泣こう

Java条件付きコンパイル

携帯アプリ中です
Javaでは条件付きコンパイル出来ないのかな?
Releaseビルドとデバッグビルドに分けたり、
Assertとかデバッグ時のみトレース出力とかどうやるんだろ・・・・

今更で且つググレカスな話題だけど、ネタが無いので〜

Variantのありかた3

Variant str = "ほげ";
Variant value = 3;

Variant result = str * value;


さて、「result」の中身はどうなってればいいんだ???

「ほげほげほげ」

でしょうか?w

 

[PGネタ]犯罪パターン3

最近、物騒&悲しい事件が多発している中で、非常に不謹慎な気もしますが…
GoFの復習をしていて見つけたもの。

「3.TemplateMethod パターン」よりコード抜粋

「版材」と「犯罪」…
自分がサンプルコードをUPするときは、誤解のない変数名・メソッド名・クラス名を心がけたいと思う次第。

----------------------------
public abstract class WoodCutPrint{
  public abstract void draw( Cuttable hanzai );
  public abstract void cut( Cuttable hanzai );
  public abstract void print( Cuttable hanzai );
  public void createWoodCutPrint(){
    Wood hanzai = new Wood();//Wood クラスは、Cuttable インタフェースを実装している
    draw( hanzai );
    cut( hanzai );
    print( hanzai );
  }
}
----------------------------

さてTemplateMethodパターンを少し誤解していたかもしれない。
(この記事の説明を鵜呑みにしたとすると)
ちょっ、「draw」「cut」「print」をpublicにしたらTemplateMethodパターンの意味なくね???
これを例にするならprotectedだろ常考。
とか思ってしまったんですが、コレは理解が足りないのでしょうか。

こっちのサンプルコードに至っては、
TemplateMethodパターンですらねーだろ、とか思ってしまうのも理解が足りないんでしょうか

勉強不足過ぎです。サーセン。
ネットの情報に依存しすぎるのも良くないな〜と思った昼下がり。

久々にプログラムネタ3

久しぶりにプログラムネタというか作業実績
グラフィックファイルの独自形式を作り変えた。
エンコツールとエンジン側の読み込みルーチン

あー、まだデコード速度のテストしてなかった。
ギャクアセされたら相当へっぽこだということが分かると思うけどー
しかも殆ど流通してないエンジンのファイルフォーマット変えても意味なしという自己満足の領域。

数日前に書いたコードをすっかり忘れて似たようなコード書いている最中に思い出して途中で消して関数一個呼ぶように1行追加しただけで終わった…
orz

らめぇ、壊れちゃう3

落ちたり落ちなかったりする不具合…超ありがちな原因ですた。
適当に改変してあるけれど。

--- hoge.cpp ------------
const UINT MAX_SIZE = 40;
const char *ENV_VALUE = "JJJ";
  :
char *param[MAX_SIZE];
for(UINT i=0; i<MAX_SIZE; ++i) param[i] = new char[1024];
  :
// そんなことしたら、、、
if(適当な条件) param[10] = ENV_VALUE;
  :
// らめぇーーー
for(UINT i=0; i<MAX_SIZE; ++i) delete [] param[i];
-------------------------

コレってコンパイルする時に警告出なかったカナ?
手元では試してないので。

フットワーク軽すぎ。凄すぎる

今、アキバで買える「初音ミク」同人誌

なんていうか、「もう同人誌になってるのか???」的な驚き。
凄いなぁ。

ニコニコで話題になったかと思ったら、もう同人誌がショップに並んでるとは。
個人的には「今年の冬コミあたりに流行るのかな?」って思っていたら、予想をはるかに上回るスピードでこういったものが提供されるとは。

フットワーク軽い人たちは凄いと思う。
流行っている時にサッと作品を作れてしまう才能とエネルギーを心の底から尊敬する。
自分にはとてもムリだぁー

技術的に浦島太郎3

最近、今更のようにC#を触り始めた。
もう浦島太郎状態だ。
.NET Framework 3.0
C#3.0
ASP.NET2.0

それぞれのVer1.0の時代を知らないYO(汗

それはともかく、C#のコードを書き始めると何をするにしても「new
newしまくり。

btn.Location = new Point( 100, 100 );
btn.Size = new Size( 100, 20);

とか、最初は非常に気持ち悪かったんだけど、慣れてくると気持ちよくなってくる(笑)
C++でいえば、全てがスマートポインタに格納されてると思えば良いのか。

それでも、なんとなーくだけどゲームの処理というか、画像処理とかには向かない気がするけれど、それはまだ僕が知らないことが多いからそう思うのかな。
C#で実践的な画像エフェクト処理(DIB処理みたいな)ことをしてるサンプルとか書籍とかご存知の方がいれば教えて欲しいデス(^-^)
※普通に「System.Byte」の配列を使えばいいのかな…

しかし、C++/CLIは非常に気持ち悪い…

List<double>^ doubleList;
doubleList = gcnew List<double>();

「^」とか「gcnew」とか、凄く気持ち悪い記号で嫌だなぁ。
いずれにしても、慣れの問題かもしれないけれど…

ハードディスク不要の時代5

IBM,原子/分子サイズ・デバイス実現に向けた研究成果2件を発表
「長編映画3万本弱や,データ量換算で1000兆ビットを超えるであろう『YouTube』の全ビデオ数百万本を,『iPod』サイズの機器に入れておける」(IBM)。

なんかSF映画やアニメの中の話だと思っていたことが、あと5年、10年のうちに実現するのだろうか。
楽しみでアール(・∀・)

SNS賛成派?反対派?3

CNETでSNS擁護論反対論を読んだ。
うむ、この記事だけを見ると反対論の方が、「確かになるほど」と思わせることを書いている。

さて、自分にとっては?と考えた。
自分はBlogを本当の意味のBlogとしては使っておらず、結局のところ「日記」として利用している。
これについて改めて考えたことはなかったが、今思えば、自分が考えていることを皆に知って貰いたいという側面もあるのではないかと思う。
(勿論、僕に興味の無い人は読まなければ良い話。。。と思う。)
それと同時に、友人や他人が何を考え、何が好きなのか?を知りたいとも思うから日記は読むし(最近時間がないが)、同好の友と知り合うことが出来るSNSは使い方によっては有用だと僕は考える。

学生の頃のように時間が沢山あれば、友人の日記を読むより、その友人に会ってダベった方が早いんだけれどね、そういう時間がお互いに作れない今はSNSは便利だ。

んー、オチはないけれど、そんだけー。どんだけー?

危険な探検?(Safari)3

AppleがWebブラウザ「Safari」をWindowsに対応したとのことだけれども、早速セキュリティーホールが発見されたみたいね。
これはAppleが悪いのかMSのOSが悪いのかセキュリティに疎い自分には良く分からんが…
専門家ってのは凄いもんだなぁ。彼らは、セキュリティホールを調べるため(?)のツールを使って3分でバグを見つけたらしいがApple内にはそういうノウハウが無いのだろうか?

ちょっとUIがカッチョイイから興味を持ったんだが少し萎えたw
かといって、今自分が使ってるブラウザがセキュアか?と問われても自信が無いけれども〜。

Windows再インスコ…2

インストール手順書一回再インスコしたが、、、まだまだ不安定。
昨日fa○gさんに聞いて、オンボードのサウンドチップもBIOSで切ってみたが解決に到らず…残念。

もう一度色々インストール手順を見直して、やり直そうと思う。
今日いっぱいで出来るかなーうーむ。

さて、写真はインストール手順書。
必要なツール類・ドライバなどをメモしたものだ。
去年、HDDがクラッシュしたときに再インストールするときにある程度作ってあったけれど、そっから色々必要なツール類が増えたり、ドライバを更新したりしたから一通り再チェック。
印刷するとA4の紙4枚にもなった。
(細かいインストール手順などは書いてない。素人向けのマニュアルじゃなくて覚書だからね)

うーん、しんどいな。。。。
今度は、復元ポイントを細かめに作って実践してみようか。。。

不調は続くよどこまでも3

最後の手段と思っていたWindows再インストールをして、最低限の環境構築をしてみたが、、、
頭を悩ませていたバウンス時のテンポの揺れが解決されない。。。

かなり挫けそうでありますorz
環境のおかげで曲作りに集中できないのはフラストレーションが溜まるなぁ。
もう一度、色々見直してみるか。。。

同業者の飲み会5

今日は、某業界の同業者飲み会に参加させてもらった。
僕自身参加するのもとても久しぶり。

少し前は10人チョイ集まれば多いかな?って感じてるぐらいの規模の飲み会だったが、今回はなんと20名もの人が参加した。
5時間という時間の中で、僕が疑問に思ってること、勘違いしていたこと、悩んでることなど濃厚な話をすることが出来てとても充実した時間だった。

惜しくも残念だったのは、人数が多すぎて少ししか話せない方もいたり、席が遠すぎて話すことすら出来なかった人もいたことかな…
1次会の会場は割りと広かったから積極的に歩き回ればよかった。
しかし、その場で話していた内容も興味深くてなかなか腰が浮かなかった(^^;

ともかく、集まった人のほとんどが自分より洗練していたり経験豊富な人たちであったりするので、話しを聞くだけでもとても面白い。
次回も是非参加したいと思う。
月に1度ぐらいは何かの口実で開けないものか(笑

NScripter興味深いな3

今は内容は公表できないが、NScripterの研究を始めた。
今更だけれども…
前回、ちょろっと触ったのはかれこれ3〜4年前だろうか。
その当時は微塵も興味がわかなかったが…

大分機能強化されているようだ。
特にアドベンチャーゲームのUI関連を実装するのが大分楽になっている。

市販のエロゲでは、最近吉里吉里を使っているのを見かけるが、TJSでまともにカスタマイズ出来ないようなスクリプタはNScripterを使った方が賢明だ。

僕自身は「JavaScriptもどきのTJS覚えるぐらいならC++で書く」というのが一応の信念ではあったが、ものによってはNScripterを使った方が低コストで出来るだろう。

もっとも派手なアクションや複雑なルールが必要なゲームを作るのには全然向いていないと感じる。痒いところに手が届かないというか…
そもそも、言語構文が貧弱だから、複雑な処理を書こうとするとアセンブラでも書いてるかのように感じて頭がおかしくなりそうだから(笑

そんなわけで、C++もTJSが無理って人に(・∀・)つ NScripter

後悔…HTMLを暗号化する意味1

結論から。。。。。
HTMLを暗号化する目的は、、、、
・知的財産を保護する
・スパムメール防止。(自分を保護する)

とある楽曲の歌詞が知りたくてググってみて見つけた、とあるサイト。
歌詞をコピーしたいなーと思ったがテキストを範囲選択できない。
右クリックも禁止されている。

じゃぁ、HTMLを保存してエディタで開けば良いや

エディタで開いてみるとHTMLが暗号化されている
なるほど、著作権保護の対策か…

まぁ、実はこのサイトには穴があって、普通にブラウザの「表示」→「ソースの表示」をやると、暗号化されていない生のHTMLが開かれたわけだがw

しかし↓のサイトではキッチリ対策されているようだ。
「HTMLソースを隠す方法」

そして、HTMLを暗号化するツールってのは、ちょっとググっただけでも色々あるようだ。
まぁ、趣味で作ってるHTMLなど暗号化する意味もないが、、、、

さて、僕にとっての本題。
いやぁ、もう前々から困ってたんだけれど、スパムメールの量に。
ホームページにベタに書き込んでるからなぁ。。。対策が遅れたっす。
最近では、ホームページに記載するメールアドレスを
「take_de_x★nifty.com(★を@に書き換えてね)」としたり、画像ファイルとしてメアドを表記しているケースがよく見受けられる。。。
けれども、どうにも読み手側にとっては不親切だなぁと感じて、僕はこういう対策をしなかったわけだけれど(つっても一見さんが、いきなりメールを送ってくれることなんて稀だけど)

↓に書かれているような対策をもっと早くしておくべきだった…
「WEBに公開するメールアドレスの暗号化」

後悔ってのは、後から悔いるから後悔って言うんだぜ(;´Д`)

Profile

take_de_x

キックの音に拘るテクノ野郎です!
ホームページをチェックしてね♪

お問い合わせ
お問い合わせはこちらまで
Categories
Archives
タグ絞り込み検索
ほしいものリスト公開中