仮眠プログラマーのつぶやき

自分がプログラムやっていて、思いついたことをつぶやいていきます。

自作ゲームやツール、ソースなどを公開しております。
①ポンコツ自動車シュライシュラー
DOWNLOAD
②流体力学ソース付き
汚いほうDOWNLOAD
綺麗なほうDOWNLOAD
③ミニスタヲズ
DOWNLOAD
④地下鉄でGO
DOWNLOAD
⑤ババドン
DOWNLOAD
⑥圧縮拳(ツール)
DOWNLOAD
⑦複写拳
DOWNLOAD
⑧布シミュレーション
DOWNLOAD
⑨minecraft巨大電卓地形データ
DOWNLOAD
⑩フリュードランダー
デジゲー博頒布α版
DOWNLOAD
⑪パズドラルート解析GPGPU版
DOWNLOAD
⑫ゲーム「流体de月面着陸」
DOWNLOAD

雑談

テザリングができない。DNSサーバーに問題がある可能性があります

スマホでテザリングしたいがどうもネットに繋がらない、で若干ハマったのでメモ

機種はXiaomi mi 10 Global版、Simはmineo Dプラン
それまでxperia compact XZ1でテザリングできていたのでsimに問題がある可能性は低いと思った。
ひとまずどういう現象かというとPC側で「DNSサーバーに問題がある可能性があります」というメッセージがトラブルシューティングで発生している。

mudai

じゃあDNSを設定すればよいと思ってPCのネットワーク設定でDNSを手動で8.8.8.8とかに設定したがダメ。そもそもIPアドレス直打ちでやってもアクセスできなかったのでDNSの問題ではないと思った。
この「DNSサーバーに問題がある可能性があります」でググってもなかなか情報が出てこなかったので半ば諦めていたが、どうもXiaomi機種特有の問題のようだった。
https://2week.net/17429/

こちらを参考にNVMO値をSPNにすることで嘘のように解決した。
sukusyo


めでたしめでたし

Windows 8.1パソコンを開発者向け環境に設定する!

今更だけどwindows 8.1のノートパソコンを購入
http://www.g-tune.jp/note_model/i610/


一番の理由は今まで使っていたノートパソコン(core i第一シリーズNehalem)が壊れたため、であとはwindows8やNvidiaの最新グラボでHSPCL32が動くかどうかを調べたかったためや、電気代節約のため(家ではGPGPU禁止令が出たので)。持ち運べるGPGPU環境は結構ありがたい!

windows 7に慣れた身では8に移行するのはかなり勇気がいるが、GPUプログラミングにおいて最新OSは意外と重要なもの。
主にDirectXを使う場合、グラボでサポートしてても古いOSであればシェーダー機能が全て使えなかったりする。
そこで今回windows8のPC環境を手に入れたのだが、最初は売ろうかと思ったほど使いにくい。
ただしっかりと設定すれば、それなりに開発環境が整うので、記事にしてみる事とする。

こういう記事は何番煎じかわからないほど多いけど‥


まず、一般ユーザー向けのwindows8設定はすでに腐るほど情報があるので、ここでは('自称')開発者視点から是非設定したいところを見ていくこととする。

設定に関する項目は主に以下の7つ






1、最初のwindowsセットアップの時、ユーザー名に全角を使いたくない

実は最初のセットアップ時なぜかメールアドレス設定が必須になっている。

lm_2

 ここで問題なのが、メールアドレスに紐付けされている氏名が全角だった時。
そのまま次へ次へと進んでいくとユーザー名の設定画面が出て来ず、勝手に紐付けされた氏名がユーザー名として設定されてしまう。
これを解決する方法は、私の知るところ1つだけ。

セットアップでのメールアドレスの入力はスキップできないので、とりあえず諦めて登録。
その後、スタートから「設定」→「アカウント」→「お使いのアカウント」からメールアドレスとの関連を解除する。

tg4f

次に「その他のアカウント」で新しいアカウントを作る。この時メールアドレスの入力を以下の画像のように省略し、ユーザー名を半角で入力。

7


これを本物の管理者アカウントとし、いらなくなった全角アカウントを削除。


2、一部のソフトの画面のにじみ、低解像度が気になる

mmmmdryh

これはHSPで1ドットを撃つ命令を1回使用して作ったものだ。ウィンドウアプリケーションを作る人にとってはここの設定はかなり重要である!
1ドットの塗り潰しがボケてしまい4ドットくらいの範囲にもやーっとして、1ドットが1ドットで表示されなくなってしまっている!これはまずい!
最初はドライバーの原因かなと思い最新版を入れるのだが、直らない。
結局これもwindows8のせいだと分かる。
これを解決するには以下の画像の「すべてのディスプレイで同じ拡大率を使用する」にチェックを入れる。
無題

その後、すべての項目のサイズを変更する「小」に設定
3

これで解決する。 
これはどうも解像度の高いディスプイを採用しているノートパソコンに見られる現象のようだ。


3、マウス端っこのあれ

windows7同様、「簡易設定」→「マウスを使いやすくします」→「ウィンドウが画面の端に移動されたときに自動的に整列されないようにします」
 
4、拡張子のあれ
windows7同様適当なフォルダでAltを押します以下略

2


 

5、マイコンピューターをデスクトップに表示したい

私が地味に困った、マイコンピューターをデスクトップに表示するのが大変な件ついて。こうすればいいらしい
4


6、aeroない
開発環境に必須ではないが気になったので。これは廃止になったようなので諦める
6
 

7、ガジェットのCPUメーターを表示したい
ここら辺のを参考にすると良い
http://tabkul.com/?p=61646






以上7つを説明したが、特に言いたいのは最初の2つ!

この最初の2つは意外と知られてなかったりする。
1のユーザーアカウントは、早期に気が付かないと手遅れになるし(またいろいろ設定し直すのが大変)
2つめはぱっと見OSのせいなのかドライバのせいなのかわからない現象であるので結構厄介! 



以上、私がwindows8.1のノーパを購入して困ったこととその解決方法でした。

いまさらHSPdishのandroidプログラミング解説

HSP dishの使い方で一番苦労するのがここの設定だろうと思う
ardejuykfi


とりあえずこのHSP3Dish Helper

この記事ではHSPソースのコンパイルからアプリ生成、androidへの転送までを、プログラミングマニュアルと自分の設定を見比べながら紹介して行こうと思う



まず絶対目を通さないといけないのが
HSP3Dish android(NDK)版プログラミングガイド


大体はこれ通りにやる。
「2.環境準備」に書いてある通り

①androidSDK =installer_r20.0.3-windows.exe
②JDK =jdk-6u37-windows-i586.exe
③Android NDK =android-ndk-r8b-windows.zip
④Apache Ant =apache-ant-1.8.4-bin.zip
をインストールする。
ところがここで、正しい方法でインストールしないと、後でこんがらがって大変になる。
ここが鬼門。なのでここを重点的に解説しようと思う。


まず①だが、これはプログラミングガイドでは
推奨フォルダは、「c:\android\android-sdk~」です。
と書いてあるが私の場合は
C:\Users\GPGPU\AppData\Local\Android\android-sdk
にインストールした。これは標準設定のままのディレクトリである。
このため HSP3Dish helper のSDKフォルダには「C:\Users\GPGPU\AppData\Local\Android\android-sdk
を指定した。



次に②だが、まずJDKは32bitと64bitの両方がある。OSが64bitでもここは32bitJDKをインストールする。
また更に32bitJDKはJDK6と7がある。
最新のJDK7ではファイル著名でまずいことになる。
なのでここはあえて古いJDK6をインストールしないといけない。
ここでもし64bitJDKもインストールしたかったら32bitJDKの後にする。
ということでHSP3Dish helperのJAVAフォルダは「C:\Program Files (x86)\Java\jdk1.6.0_37
を指定する。
ちなみに64bitOSでは「Program Files」と「Program Files (x86)」両方のフォルダ内に
JAVA\jdk1.6.0_37」が存在するので混同しやすいのだが、ここは必ず「Program Files (x86)」のほうの「jdk1.6.0_37」フォルダを指定する。


③はインストールと言うより解凍する。
これはプログラミングガイド同様に「C:」に「android」フォルダを作成し、そこに解凍すればいい。
なので私はHSP3Dish HelperのNDKフォルダに「C:\android\android-ndk-r8b」を指定した。
もちろん「C:\android\android-ndk-r8b」の階層内はこういうファイル達があることを確認する。
無題

よく解凍時に、無駄に解凍ファイル名を自動作成し、同じ名前を二重にされてしまうことがあるので、そうなっているとandroid-ndk-r8bの読み込みエラーが起きてしまう。



④apache-ant-1.8.4も解凍するだけ。
C:\android」に入れて、同じく先ほど同様「C:\android\apache-ant-1.8.4」内はこういうファイル達があることを確認する。
sdfsdf


HSP3Dish Helperのantフォルダは「C:\android\apache-ant-1.8.4





最後にHSP3Dish Helperのプロジェクトは「C:\android」を指定する。

さて、ここまででHSP3Dish Helperの階層設定は完了。
 
次に先ほどインストールしたandroid SDK (C:\Users\GPGPU\AppData\Local\Android\android-sdk\SDK Manager.exe)を起動し、
必ず「Tools」「Android 4.2.2 (API 17)」はチェックを入れて必ずインストールするように。 
これはプログラミングガイドにも書いてある。
shtjytg
 



あとはプログラミングガイドの「5.新規プロジェクトの作成」「6.プロジェクトのビルド」通りに行えばいい。
ここは人によって大きく手順が異なることはないので、解説は省略する。
ここまで来て、初めてアプリの生成ができるはずである。  



こうしてコンパイルが通り、正常にアプリの生成が行われapkファイルが作られたとしよう。
そのapkファイルはC:\android\プロジェクト名\binの中に プロジェクト名-debug.apkという名前で保存されている。
これをSDカードなどにコピーしてスマホに転送してインストールするのも良いが、もう少し楽な方法がある。


プログラミングガイド「8.実機への転送と実行」によると
プロジェクトのビルドが完了したら、androidの実機に転送して確認することが可能です。 (エミュレータ上での実行は現在まだサポートされていません) 
androidの実機をUSBで接続し、OSから認識されている状態で「転送」ボタンを押すことで、ビルド済みのapkファイルを転送(インストール)します。
ということらしい。

スマホへの転送だが、ここではもう2、3つ、ある手順が必要になる。
私の場合はMOTOROLA PHOTON ISW11Mであったのでandroid SDKの2.3.3にチェックを入れインストール。これはスマホのandoridバージョンに対応したところにチェックを入れインストールする必要がある。
そして「MotoHelper_2.1.40_Driver_5.5.0.exe」といったような、スマホのドライバをインストールする必要がある。
これはメーカーのホームページに行けば大抵落とすことができる。
これをインストールしたら、スマホとパソコンをUSBでつなぎ、スマホの設定から「アプリケーション」→「提供元不明のアプリ」にチェックを入れる。

これで、HSP3Dish Helperで「転送」ボタンを押せば、USB経由にapkファイルを転送し、自動でインストールしてくれる。



そして肝心のデバッグだが、私の環境ではアプリがエラーを吐くことはなく、エラーの時、画面が黒くなりアプリが終了するという現象が発生した。
私の体験した一番多かったエラーの原因として、サウンドファイルの格納間違いがあった。
プログラミングガイドにも書いてあるが、「サウンドのファイルは必ず、assetsフォルダに入れるようにしてください。」
とのことだ。
よって、C:\android\プロジェクト名\assets にwaveファイルを入れなければならない。




Dishが発表されてかなり経つが、自分の備忘録も兼ねて、とりあえず
androidアプリを作成できる環境を作るところまでの説明を記事にしてみた。

そしてついに本日mac OSの環境が手に入ったので、今日からiPhoneアプリの開発を自分の家でできるようになった。
これもなにか分かり次第記事にしていこうと思う。

CLASSPNP.sysが原因で起動しない

http://d.hatena.ne.jp/ogohnohito/20120707/p1
これにも書いてある通りOSの再インストールを覚悟しないといけない原因不明のバグ
ついに私の環境でも起こってしまった・・・。
 
まず、原因として一番考えられるのはPCの構成をいじったこと
引っ越しで、まずPCの電源を切り、中のグラボ2枚を取り出し、HDDを取り外した。
USBも全部外した。OSはSSDに入っていて、SSDは取り外さなかった。

そして家に運び入れた後、同じ場所にグラボを挿し直し、HDDも挿し直した。
このときSATAケーブルの 位置も変えていない。

しかしこのとき新規のHDDをさらに2つ増設してPCを起動した。このときUSBは無数にささっていた。 
ここでさらにRAID構成にしようとBIOS設定でRAIDに設定して起動した。

そしたらWIndowsが起動していますという画面が表示された後、BIOSの画面が表示された。つまり何らかの原因でWIndowsが起動したあと何らかのエラーが発生し再起動したということだ。
 
ここまでで、当然OSの入っているSSD(買って1年目程度)は何もいじっていない。せいぜいPCの電源を切ったくらいだ。
BIOSの設定を戻しても変わらず。
増設したHDDを外しても変わらず。
セーフモードで起動したところCLASSPNP.sysの項目で止まり、5秒程度して起動したかと思った瞬間BIOSに戻された。

つまりセーフモードでも起動できず、何が原因かもわからないまま・・・
結局、いろいろ調べた結果USBを全部外せばいいということが分かったが、USBを外してもダメ

最後はグラボ1枚はずして、データ用のHDDも外してSSDのみの最小構成で起動したがダメ
BIOSを初期化してもダメ
というかBIOSはおそらく関係なく、SSDの中のデータ、CLASSPNP.sysが 何らかで書き換えられたのが原因だろうと思われた。
なにせ「windowsが起動しています」という表示まではしっかりと出るのだ。

また私の環境ではもともとramdiskを使用しており、ramdiskが初期設定で21Gできるようになっていた。このような巨大なサイズのramdiskを作るのに「windowsが起動しています」の表示中に一生懸命フォーマットしているようで、いつもこの画面で起動に2分程度かかっていた。
当然この設定がなければSSDなので起動は10秒くらいだ。

そして今回のCLASSPNP.sysのエラー でも、やはり「windowsが起動しています」の表示に2分程度かかっていたことからも、ramdiskは作成されフォーマットされるところまでは正常に行えていたということだろう。
問題はその直後、画面が暗転して、おっ今にも起動するかと思った瞬間にブルースクリーンもなしに瞬時にBIOSに戻される。BIOSといっても通常PCを起動した時の最初のメーカーロゴのあの画面だ。


解決方法はgoogle先生に聞いてもUSBを外して起動しろくらいしかなく、半分の人はOS再インストールを余儀なくされたようだ。
私もOS再インストールをして今復旧したが、非常に恐ろしいバグなのでブログに書こうと思った。

まるで原因不明の悪性腫瘍みたいで、突然発症しセーフモードですら起動できず、結局原因がわからず死亡するというなんともやるせない感じのバグなのだから

幸いハードの方は無事で、現在もSSDは問題なく稼働している。

こういう時は、同じ症状が出た人の話がとても参考になることが多いので、これからもこういったことはなるべく発信していこうと思う 

2014年の抱負等

忙しくないわけではないのに半年ぶりに更新する気分になったので、今年初ブログ更新!

今までもそうだけど、これからも、ブログとツイッターで馬鹿みたいにプログラミングのことについて発信していく方針は変わらずで行こうと思う。
というのも自分がいつごろどんなことをした、っていうのが見返せるから


プログラミングはまさに技術の蓄積で、過去に無駄だと思ってほって置いたゴミのようなプログラムがあるとき突然宝のような資産に生まれ変わったりするのだ

最近あんまりプログラムしていないし、昔のプログラムみてれば何か面白い掘り出し物あるかもしれないというわけで、自分なりにプログラミング等してて記憶に残った大きなイベントを振り返ってみようとおもう



2005年頃?HSPというプログラム言語を知る
2007年8月 乗算の高速化、Karatsuba法に興味持つ
2007年8月 FFTをやるが挫折する
2007年10月 チュドノフスキーの公式で円周率を求めるソフト(高速電子式計算機)をつくる
2008年8月 FB完成
2008年10月 HSPコンテストでショート作品のレイトレーシングを見て驚愕する
2009年4月 大学はいる!
2009年5月 一億桁×一億桁 プロジェクト始動!すぐ挫折
2009年8月 ババドンつくる
2009年8月 標準命令でセピア変換する
2009年9月 HSPのプラグインでどれが一番描画が高速か測る
2010年1月 突然レイトレーシングのプログラムつくる
2010年2月 高速化のためFortranに手を出す
2010年2月 伝説の超こってり黒歴史生まれる・・
2010年2月 クォータニオンに興味持つ
2010年4月 リアルな雲の表現を目指しパーリンノイズを猛勉強する
2010年9月 東工大のTSUBAME2というトンデモスパコンとGPGPUというトンデモ技術を聞きつける
2010年10月 分子シミュレーターをコンテストに応募する
2011年2月 リアルな雲や煙の再現のため数値流体力学をやり始める
2011年3月 ポアソン方程式の解法で共役勾配法に寄り道する
2011年4月 SOR法を知って歓喜する
2011年5月 ついに自前の2次元流体力学のプログラムが動く!http://twitpic.com/4sett3  http://twitpic.com/4sfwyd http://twitpic.com/4sfxh3 http://twitpic.com/4sfz0c twitpic.com/4vjz1q2011年6月 突発的にCubicセミ・ラグランジアンで3次元流体する  http://twitpic.com/5grlg0
2011年7月 パーリンノイズやりつくす
2011年7月 セピア変換のサンプルからEasy3D(HSP)でGPGPUができるとわかる!
2011年7月 HLSLかじり始める
2011年7月 2次元流体力学をHLSLに移植! http://twitpic.com/5onl28
2011年9月 レイトレーシングをHLSLに移植! twitpic.com/6rgf0w   twitpic.com/6rvsrn    twitpic.com/72nb7h 
2011年10月 hspでgpgpu応募、一部に大好評
2011年10月 2次元流体力学をxcodeに移植
2011年11月 水面条件つけるためにlevel set法に手を出すが失敗する
2012年2月 minecraft で32bit電卓作り始める
2012年9月 minecraft の電卓動画公開する
2012年9月 iPhoneアプリ パズドラルート解析君つくる
2012年11月 HLSL応用してGPGPU用プラグインHSPSHAD作り始める
2012年12月 PCソフト パズドラルート解析GPGPU版つくる
2012年12月 再びFFTに挑戦して、プログラム動く!
2012年12月 一億桁×一億桁 プロジェクト再開
2013年3月 HSPSHADやっぱやめる
2013年3月 HLSL卒業してOpenCLデビュ~
2013年4月 HSPCL開発開始
2013年4月 FFTをOpenCLに移植する
2013年6月 再び円周率の計算に興味もつ
2013年6月 FMTという魔法の乗算アルゴリズムを嗅ぎつける
2013年7月 突如HLSLでフレネル反射に浮気  pic.twitter.com/5pKOPRM4La
2013年10月 android版 パズドラルート解析君 バンされる
2014年1月 2次元流体をOpenCLに移植 pic.twitter.com/6rWQWME5n2  


こうやって見ると最近めっきりプログラムしてないわけでもないことに気づく。というかもっと大昔のほうが何もしてなかった時期が長かったみたいだ

一方で3年近く前にHSPでGPGPUを可能にしているにもかかわらず、GPGPUを活用したゲームやツールをあまり作れていないことに自分は危機感を感じている

もちろんPC版パズドラルート解析はGPGPUをフル活用していて好評だが、まだこのツール1種類のみ。
FFTや流体力学はOpenCLに移植まではできているものの、ツール化、ゲーム化するところまではいってない

今年の目標として、GPGPUを活用した作品をもう2作品は作りたいと思う

ひとつはもう決まっていて、6年近く前に完成させたとあるゲームの続編を作る。この続編は何度も企画が上がっていたがいつも最終目標が定まらず企画頓挫していた。
だが今回はゲームエンジンから組み立てていく方式でいくので、前作やババドン等の経験から恐らく完成できると思われる


そしてもう1つの作品は、GPGPUで円周率を計算するソフト。これこそ早く作りたい!
今はBinary splittingで行き詰まっている。1つに素因数まで分解するところまではできているのだが、その後乗算と加算で結合していくところの、数値の桁数の管理で行き詰まっている。
どのような桁数でもFMTで高速に乗算できる機構がまだうまく思い浮かばないのだ。
また1つに、巨大桁A B Cにおいて  A*B  A*C  と乗算していく時、 BとCの素因数に共通なものがあれば、BとCはそれ(最小公倍数)で割っていいという数学的理由がある。割るだけでBinary splittingの最後の方で得られる数値の桁数が大きく減ってくる。つまり計算量が減らせるのだ。
だが、巨大桁の数を非常に小さな素数、例えば1億桁の数を素数1877で割るのは最速でも筆算法しかなく、上位桁から順に1877で割った余りを次の下の桁でつけるといった作業が必要だ。これによる処理にどれほどの時間がかかるのかが未知数であり、例えば1877ならint型に収まるが
4056519585705363113等のlong型でも入るか分からない素数で割るといった話になると、筆算法の中にニュートン逆算を入れて行わなければいけなくなり、これは結果的に非常に時間のかかる効率の悪い計算法になってしまう。ではBとCの素因数を全て記憶しておき、BとCをある素因数で割った時の値は、割る素因数を抜いた素因数のデータから乗算だけで導き出すと言った方法も考えられるが、それはそれで膨大な計算量になる。
ここの問題を抱えながらここ半年くらいは悶々としていた。



今年の目標としては、なによりこの円周率プロジェクトを成功させたい!そして完成した暁にはグラボをフル稼働させて部屋を熱くするんだ!
プロフィール

toropippi

記事検索
アクセスカウンター

    QRコード
    QRコード
    • ライブドアブログ