2ntブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ヘッダ的な何か。

こんばんわ、管理人のふぃぶです。ようこそお越しくださいました。
本サイトはちょっと特殊な性癖の方々が訪れるだろうサイトです。

グロテスクな表現・えっちぃのがダメな方はブラウザのバックでお戻りください。


上記を踏まえそれでも見たいというかたは歓迎いたします

それではフィブログ- R-18 - をお楽しみください。

メルルのアトリエ公式サイトはこちらへ!
誰がなんといおうと、トトリは私の嫁!

こんばんわ、フィブです。
E-moteを使用してGifアニメ作ってみました

ふりふり_min

ふりふり・・・

AndEngine覚書

■onCreateResources内でリソース読み込み

BitmapTextureAtlas
ITextureRegion
はセット扱い。サンプルだと大体クラス変数


BitmapTextureAtlasの変数 = new BitmapTextureAtlas(this.getTextureManager(), 32, 32, TextureOptions.BILINEAR);
32, 32の部分は多分縦横。 getTextureManagerはSimpleGameActivityクラスの中にあるのか分からんけど普通に使える

ITextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.ITextureRegionのメンバ変数名, this, "読み込む画像.png", 横パネルの数, 縦パネルの数);
この辺は画像構成によって変わるけど一枚画像を読み込みたい場合(タイル上の画像じゃない場合)は0,0を指定すればOKっぽい

this.BitmapTextureAtlasの変数.load();
ロードすると画像読み込みされる(多分)


■CreateSceneでやること

final Sprite temp = new Sprite(10,10, this.mTempRegion, this.getVertexBufferObjectManager());
Spriteの第1,2引数は画面上のX,Y座標。mTempRegionはどのテクスチャを使うか(ITextureRegion)


final PhysicsHandler tempPhysicsHandler = new PhysicsHandler(temp);
物理演算ハンドラ?にスプライトを渡してやる

temp.registerUpdateHandler(tempPhysicsHandler);
スプライトの更新ハンドラとして物理演算用ハンドラ(?)を渡してやる

scene.registerUpdateHandler(new IUpdateHandler() {
@Override
public void reset() { }

@Override
public void onUpdate(final float pSecondsElapsed) {
if(temp.collidesWith(face)){
temp.setAlpha(0.5f);
}else{
temp.setAlpha(1.0f);
}
}
});
スプライトのcollidesWithメソッドに別のスプライト変数を渡してやるとコリジョン判定してくれる
trueかfalseで帰ってくるのでそれで判別



Eclipceが突然GalaxyS2を認識しなくなる

勉強中にGalaxys2がEclipceから検出できなくなりデバッグ不能に。

ドライバの再インストール等々やってみたけど効果なし

結論をいうとdebug.keystoreの証明書有効期限切れでした。

C:\Documents and Settings\<ユーザ名>\.android配下にある
debug.keystoreファイルをリネーム

新しいキーストアを以下で発行

keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

パスは"android"で作成
Eclipce再起動したら何とか認識するようになった。
あたしの3時間返してよ。。。

十分なページ・サイズを持つ SYSTEM TEMPORARY 表スペースが存在しません。

こんばんわ、ふぃぶです。

さて、今日は表題のお話です。
この憎き表題のお話です。

DB2でSELECT文組んでるときにこのエラー出ることがたまにありました。



ERROR [54048] [IBM][CLI Driver][DB2/NT] SQL1585N 十分なページ・サイズを持つ SYSTEM TEMPORARY 表スペースが存在しません。SQLSTATE=54048


DB2に明るくないあたしのような人間には「なんのこっちゃぁ!」って感じです。
エラー情報なんかで検索するとまず有力そうな情報があるのは次のサイトさんのページです。

参考サイト様


今回さらっと読んでたんですが余り意味を理解していませんでした。
SYSTEM TEMPORARYテーブルってののページサイズが足りないのね。くらいの認識です。
いわゆる一般で言う「一時表」のサイズが足りないそうです。
まぁそのとおりなんですけど・・・。

では一体何が原因だったのかを書いていきます

【事例】
今回あたしは次のようなSELECT文を作成していました。


SELECT
A.COLUMN_1
,A.COLUMN_2
,A.COLUMN_3
~以下続く~
,A.COLUMN_29
,A.COLUMN_30
FROM HOGE_TABLE A
INNER JOIN HOGE_2_TABLE B
ON A.COLUMN1 = B.COLUMN
~以下結合~
ORDER BY A.COLUMN_1


ざっくりとこんな感じです。
発行すると先に述べたエラーが発生します。

上記の参考サイト様では、ソートで食いつぶしてる事例がかかれているため
とりあえずあたしもORDER BYを外してみましたが、エラーは出続けます。

一体何!?って思ったらですね、列数が多かったみたいです。

今回扱ってるシステムではSYSTEM TEMPORARYは1つしか作成されていません。
用意されているSYSTEM TEMPORARYのページサイズは4Kとなっていました。
※ db2 list tablespace show detail というコマンドで確認できます

で、SELECT文の取得項目に今回たくさんデータを指定しているわけですが、
どうもコレの合計サイズが4Kを超えたみたいです。

例えばCOLUMN_1~COLUMN30はそれぞれVARCHAR(256)で定義されているとします。
そうするとこれらを全て取得すると7680Byteの領域を必要としますね。
SYSTEM TEMPORARYは4K、つまり4096Byteなので思いっきり超過しています。

SYSTEM TEMPORARYは4Kと定義されている場合、
4K以上の作業領域が必要なものにはそもそも使われないらしいです。
ので↑以外のテンポラリーテーブルは存在しないので、SQL結果の作業スペースがまったくなくなり
エラーするっぽい。

現に、SELECTで取得する項目をCOLUMN1~15に減らすとエラーは起きず実行結果が帰ってきました。
(VARCHAR(256)* 15 = 3840Byteなので足りてる)


ということっぽい。
これの恒久的な対応としてはSELECTの取得項目をSYSTEM TEMPORARY以下に収めるか
またはページサイズがもっと大きいSYSTEM TEMPORARYを作成するかの2つになりそうです。

またやってみたところ、4Kのテンポラリと8Kのテンポラリが定義されていた場合、
SELECTで4K超えた場合8Kのほうをちゃんと使ってくれるっぽいです。
8Kのほうが使われているかどうかは8Kのほうに定義してあるコンテナーのパス配下に
一時ファイルが作成されているかどうかで多分判断できます。


てんぽらりの作り方も機会があれば書きたいなぁ・・・
でわでわ

[DB2]DB2のUDF作成で困ったり困りまくったり

こんにちは、ふぃぶです。

最近はDB2なんぞを扱ってます。
これがまた色々曲者なんですが、今詰まってるのがUDF作成です。

DB2にはUDF(ユーザ定義関数)という機能が付いてます。
TO_DATEとかSUMとかSQL関数を自分で定義できるようなもので
ユーザはこれを定義することによってSQL内で関数として使用できます。
イメージ的にはプロシージャと同じようなもんだと思っていいと思いますよ。

今回扱ってるDB2は9.5。PL/SQLをサポートしていないようなのでOracleのPL/SQLは
そのまま使えなかったり。
※DB2がPL/SQLサポートしだしたのは9.7からっぽい。
のでお作法に習い、以下のようにUDFを定義します。



CREATE FUNCTION GET_CD_VALUE( SEARCH_VAL VARCHAR(100) )
RETRUNS VARCHAR(100)
LANGUAGE SQL
BEGIN ATOMIC
DECLARE ret_string VARCHAR(100) DEFAULT '';
FOR cur AS SELECT CD_NM
FROM MS_CD
WHERE CD_VAL LIKE '%' || SEARCH_VAL || '%'
FETCH FIRST 1 ROW ONLY
DO
SET ret_string = CD_NM;
END FOR

RETURN ret_string;

END


これで実行するとLIKE文のところでエラーになります。
なんでなんだろう・・・
ちなみにWHERE句の部分を
WHERE CD_VAL LIKE SEARCH_VAL
にしてもエラー。 
WHERE CD_VAL LIKE 'AAA'
とかにしたら通る。
WHERE CD_VAL = SEARCH_VAL
にしても通る。
パラメータ変数をLIKEで使えてない感じ?
もう原因がわかんなくて死にそうです・・・。

解決方法求む、次回解決変になるといいな。
でわでわ。

ActiveDirecotyをcsvでエクスポートしたものをそのままインポートするとエラーる話

こんばんわ、ふぃぶです。
最近仕事系の話ばっかりになっちゃいますけど
ActiveDirecotryが本当に良く分からない。

で、今回のお話なんですけど。
ADのセキュリティグループの状態をバックアップ取るためにcsvで出力したりするわけですよっ。
標準でコマンドが用意されているので

csvde -m -f csvexport.csv

なんてコマンドで吐き出すわけです。
で、実験としてAD上のセキュリティグループ消した後、インポートしてみようって思い

csvde -i -k -f csvexport.csv

ってやると、何故かsyntaxエラーが発生します。
これcsvの中を良く見ると、セキュリティグループのメンバDNが書いてあるところ。
何故か最後に改行文字のLFが入ってるが判明。
(メモ帳見てもわかんないよ・・・っ)

このメンバDNの後ろにくっついてるLFを削除するとうまーく取り込めるようになりました。
ここで疑問なのが、なんでLFなんて付いてくるのか。
色々調べてはみてるんだけどこいつを葬る方法が見つかりません。
どうなってるの・・・


そんなわけで、エクスポートファイルをインポートした時にsyntaxエラーでて困ってるって人
いましたら一度この線を疑って見てください。

しかしなんで入るんだろう・・・。
お仕事場の環境なのかなぁ。それともセキュリティグループの設定なのか、ただのバグなのか・・・。
う~ん・・・

ActiveDirectoryのグループからメンバを1500以上取り出す方法

こんにちは、ふぃぶです。

今回はちょっと毛色の違う話をば・・・。
ActiveDirectoryに設定しているグループのメンバに1500件以上登録しているとします。
VBやC#でDirectorySearcherを使用して取得しようとしたとき、メンバは1500件までしか取得できません。

どうやらActiveDirectoryは1500以上取るのが無理っぽいです。
では、どうやるか。
解決方法がありました。以下のサイトさんで紹介されています。

【ITQ Blogs】
http://goo.gl/4oqvh


英語記事なので若干解説を。(google翻訳を駆使しただけですが・・・)間違ってたら許してね。
ActiveDirectoryからメンバを1500人以上取得するには2つ方法があるそうです。
記事内でソースコードが2つ紹介されています。
ただ、一つ目のコードはパフォーマンスを考えると少々問題があるようなので
2つ目のコードをオススメされています。

2つ目のコードをざっくりと説明。
コレは何回かに分けてデータを取得する事で1500人以上を取得できるようにしています。
サンプルのコードでは1回の処理で999件取得しています。

12: var properties = new[]
13: { string.Format("member;range={0}-{1}", @from, to) };

この設定が重要です。
from,toを変更する事によって指定した範囲でデータを取得しています。
単純な話、"member;range=0-999"て書いたら0~999件目のデータを取得します。
"member;range=1000-1999"て書いたら1000~1999件目のデータを取得します。

全体的に処理内容を説明しますと・・・
・17,18行目でActiveDirectoryより指定した条件データを取得
・23行目で取得済みの結果セットを取得
・24行目から、結果セットを1件ずつ処理
・27行~30行目でプロパティ名が"member;"で始まるものを取得
これは上記でポイントとした"member;range=・・・"の部分をとるためです。
範囲の部分は0-999や1000-1999など動的になるため、"member;"で始まるものという指定で取得しています

・34行目で、プロパティ名を指定してデータを取得します。
・35行目でようやくメンバー1件1件の情報を取得します。
・51行目でfromの値をインクリメントし、次のデータを処理しに行きます。
 サンプルですと1ループ目が0-998件目、2ループ目が999-1998件目と取得していきます。
 これをグループに設定されているメンバが最後になるまで繰り返します。


また記事の最後に記載されていますが、
サンプルコードですとグループにメンバが1件も設定されていなかったりすると
上手くいかなかったりするので、ActiveDirectoryよりデータを取得した時点で
設定されているメンバの件数が0件の場合処理をしないような判定が必要です。

取得ループの処理もExceptionをキャッチして終了するような形になっているため、
正式にグループよりメンバを取得しきったことを判断してループを終わりにする処理を追記する必要も有ります。
(Exceptionキャッチして抜けてもバグりはしないと思いますが・・・)
最後のデータを判定する方法は”member;range=”の記述で判断できます。
例えば設定メンバが1件しかない状態で取得する範囲を0-999と指定した場合、
プロパティ名は "member;range=1-*"となります。
プロパティ名の最後が*である事を判定する事によりデータがこれ以上ない事がわかるため
それをキーとしbreakを張ってください。


以上でした。
完全に備忘録的な記事になってしまった。
しかし海外の人は本当に頭いいよねぇ・・・。


e3roid使ってみよう。導入編

おはようございます、ふぃぶです。

プログラムはまぁぼちぼち・・・。
最近一からゲーム作るのが非常に面倒くさいです。
ゲームシステム意外の部分で詰まる(OpenGLの基幹的なとことかスレッドとかそういうとこ)なんて
ハッキリ言って時間がいくらあっても足りません。
社会人はそんなに暇じゃないです。

というわけで、倦厭していたゲームエンジンを使ってみようと思います。
「Android ゲームエンジン」で検索すると大体の物は出てきます。

今回はe3roidを選択して見ました。


さて、e3roidを実際使う方法ですが公式でチュートリアルが存在します。
が、まぁ見たとおり英語なので、あたしみたいな英語アレルギーな人に取っては鬼門。

というわけで、ざっくりとやることを追います。

【前提】
exlipceでAndroidプロジェクトを作成しておいてください。
※以下自分のPJと記載

【手順】
・e3roidの公式に行き e3roid-1.2.11.zipをページ左のメニューよりDL
・DLしたzipファイルを解凍。
・解凍したファイル内のE3roidExamples\libsをエクスポートします
・上記エクスポートしたlibsフォルダを自分のPJにインポートします。
・自分のPJのプロジェクト->プロパティ->Javaビルド・パス->ライブラリーよりJarの追加ボタンでlibs配下のe3roid.jarを選択・追加します

以上で、セットアップ完了です。
チュートリアルでいうとここの話。

稼動確認をします。
HelloWorldのサンプルを自分のPJに貼り付けます
※アクティビティ名は自分のPJのメインアクティビティ名に置き換えてください

コンパイルエラーなしで実行すればHelloWorldが表示されます。

以上、導入!
ここからどこまで作れるかなぁ

main.xmlで自分で作ったViewを使う方法

おはようございます、ふぃぶです。

もうすぐ連休が終わりますね。
あたしがもうすぐ死んでしまう・・・あぁ・・・・

さて、今回は自分で作ったViewをmain.xmlに組み込む方法です。
部品だけ自分で作ってあとで使いまわしなんてこともできるしこれができると便利そうですね。


最低限必要な事は以下3点のようです。
・表示するViewを自分で作成(Viewクラスを継承して作ってね)
・res/valueの下にattrs.xmlを作成して、自分で作ったViewへの引渡し属性定義をする
・main.xmlにxmlを使用して追加


以上をやればOKっぽいです。
で、以下サイト様を参考にするとできました。ありがたやーありがたやーっ

http://weide-dev.blogspot.jp/2010/04/xml-customview.html


さて、今日明日で完成できるのか・・・無理でしょう本当に。

please fix them before running your applicationとかいうエラー

こんにちわ、ふぃぶです。

およそ1年のブランクを経てまたAndroidやりだしたらもうエラーひとつも解決できないような酷い状況になってます。
Androidプロジェクトからサンプル作っても「please fix them before running your application」とかいうエラーが発生してちゃんと入ってくれないし・・・。

ということで備忘録


■please fix them before running your application
対処法は3つ。

1.C:\Documents and Settings\[ユーザ名]\.androidの配下にある「debug.keystore」を削除
2.Eclipceメニューのプロジェクト->クリーンで該当のプロジェクトをクリーン
3.Eclipceメニューのプロジェクト->プロジェクトのビルドでプロジェクトをリビルド(自動的にビルドは外しておいてね)

でとりあえず直った。完全に忘れてた・・・。


あともう一つ、GalaxyS2をEclipceが認識しないときの対処

1.プログラムの追加と削除から「SAMSUNG_USB_Driver_for_Mobile_Phones」を削除(既に入ってたら)
2.Samsung Kiesをインストール
3.GalaxyS2側の設定->アプリケーション->開発->USBデバッグにチェックを付ける
4.PCにGalaxyS2を接続
5.Eclipceを起動

これでEclipceのDDMSに端末の情報がゴリゴリかかれていけば接続成功してる。

これだけ調べるのにかなりかかった。
忘れずにメモッとかなきゃ・・・

Androidマーケットが消えた。 見つかった。

こんばんわ、ふぃぶです。

速報記事といいますか・・・。
Androidについてです。


マーケット開いたら、Playストアなるものが開き
操作間違えたかな?と思って戻るとAndroidマーケットが消失!

トップのショートカット押してもアプリ一覧みてもマーケットがどこにも無い!
どこ言ったの?!消してないよっっ!?!?
って焦ってました。

よくよくアプリ一覧を見ると「Playストア」なるものがっ
起動して読んで見ると・・・

「Androidマーケット→Playストアに名前変更しました」

なるほど、そういうことか・・・焦った・・・。

リモートデスクトップの話

こんばんわ、ふぃぶです。

今回はちょっと初歩的なことにハマったので・・・。
リモートデスクトップのお話です。

色々あり、Android端末からPCをリモート操作する必要が出てきたので設定してました。
しかし何故か繋がらない・・・。というわけで設定方法を。

■接続PCのIPを取得
今回の接続はLAN内でのリモート接続なので普通にIPアドレスを取得します。
コマンドプロンプトからipconfigと入力し表示されるIPアドレスをメモします。

■ポート指定
次にポートです。リモートで使用するポートはデフォルト3389なのでメモします。


必要な情報は以上。これで接続ー!ってやっても繋がらないから今回は困りました。
で、下記の設定が抜けてました。


■リモートを許可する
まずはリモート接続を許可しなくてはいけません。
マイコンピュータを右クリック->プロパティを開きます。
リモートタブを選択し、

□このコンピュータからリモートアシスタントの招待を送信する事を許可する(R)
□このコンピュータにユーザがリモートで接続することを許可する(C)

の二つのチェックボックスにチェックを入れます。

※多分リモートアシスタントのチェックボックスはなくても大丈夫なんじゃないかとは思うけど・・・

■リモート接続できるユーザの選択
次にリモート接続できるユーザを選択します。
このユーザはPCに設定されているユーザアカウントのことで、どのアカウントでログインしてもいいかという設定になります。
(あたしは接続元(Android側)が繋げることを許可すると何故か勘違いしてた。)


同画面の「リモートユーザの選択」ボタンを押します。
あとは検索ボタンを駆使して自分のログインしてアカウントを見つけ出し追加します。


■ファイヤーウォールの例外設定
これを最後まで忘れてました。

コントロールパネル->Windowsファイアーウォールをクリック
例外タブを表示、プログラム及びサービス項目の□リモートデスクトップをチェックします。



以上で設定完了。
これで繋げたらちゃんと繋がりました~っ。

ちなみにXP HomeEdisionにはリモート接続許可設定がないっぽい?
Professionalならありますのでそっちの設定でっ



しかしこんなところでハマるとは本当にIT屋か、あたし・・・?

NTTひかり電話解約。交換されたルータが繋がらなかった

こんにちは、ふぃぶです。

色々有りネットが復旧したので今日はそのお話。
さて、ふぃぶはフレッツ光withOCNに加入しております。

でも固定電話引いてないので「ひかり電話」がハッキリ言って無駄なのです。
今回経費節約のためひかり電話Aを解約したのですが、解約すると今使ってる光電話ルータを
別のルータと交換しなきゃいけないといわれました。
(交換用のルータはNTTが送付してきます)

今回このセットアップでハマったので記事を書こうかと。



解約から数日後、NTTから交換用ルータが郵送されてきました。
型名は「VH-100 3ES」です。
既存のルータから電話とLANを引っこ抜き交換用ルータにセット。
ブラウザ起動ー!
・・・何故かネットが繋がりません。

説明書を見てみると、単純に繋げるだけ。
正常起動時はPOWERランプ、VDSLLINKランプ、LANランプが点灯していて、ALARMランプが消灯しているらしい。
うん、なってる。問題ない。
何が悪いんだろう・・・。

◆配線変更
電話線及び、LANケーブルは光電話ルータに付いてきたものを使用していたので、今回送付されてきたルータに付いてきたものに交換してみる。

・・・・・・繋がらない。ここが原因じゃないっぽい。
しかし今後はこのケーブルを使用して実験して行きます。


◆LANケーブル直つなぎ
ルータ(VH-100 3ES)について調べて見たところ、どうやらこいつはルータ機能内蔵していないらしい。
ルータじゃないじゃん!ただのモデムじゃないのこれっ!?
そんなわけで、余計な接続はせずパソコンに直で繋げてみよう


現在の接続が
 [パソコン]----[ハブ]----[ルータ(VH-100 3ES)]----電話回線
なので
 [パソコン]----[ルータ(VH-100 3ES)]----電話回線
に変更!どうだ!!
・・・・繋がらない。ダメそう。


◆新しい接続を作る
ちょいちょい調べたところ、接続方法がなさそうだったので新しい接続を作ってみる。

1.マイコンピュータ->ネットワーク接続->新しい接続を作成する
2.新しい接続ウィザードを開始 ->次へ
3.ネットワークの種類->インターネットに接続する->次へ
4.インターネットにどう接続しますか?->接続を手動でセットアップする
5.ユーザ名とパスワードが必要な・・・
6.ISP名に適当な名前を入力。あたしは「NTT_OCN」って名前を付けました
7.ユーザ名とパスワードを入力します。->ここはOCNから送られてきたユーザ名とパスワードを入力します。
 ユーザ名:xxxxx@one.ocn.ne.jp
 パスワード:xxxxx
8.その他色々設定しつつ接続!
 ちなみにこいつは既定の接続にはしない設定にしました。
 (確か最後の画面で設定するかどうかのチェックボックスが合った)

繋がりましたー!接続が確立した繋がりましたー!
でもルータ機能がないらしいので、実験。
ハブに接続してみました。 ハブを解すと繋がらな・・・い。


◆ルータを繋げる
VH-100はルーター機能を内蔵していないようなので、個別に購入したルータを繋げます。
今回繋げるのは、BUFFALOのAirStationNFINITY HighPower(WZR-HP-G450H/U)です。

AirStation付属のマニュアルのとおりにしていきます。
NTTのルータ(VH-100)起動→AirStation起動。
(PCからはLANケーブルを外しています)
AirStationのランプは正常になりました。さて、PCにLANを接続!
・・・繋がらない?!

なんでー!先ほど設定した接続設定を使用して接続!
・・・接続失敗してるし。
なんで~・・・

現在の接続が
[パソコン]----[AirStation]-----[VH-100]----電話回線
なんだから別に繋がってもいいと思うんだけど・・・。


◆LANケーブルを換える
パソコンとAirStationは元々持ってたLANケーブルだったので、AirStationについてきたLANケーブルと交換してみよう!
多分ストレートケーブルとクロスケーブルとかで違うとかそういうことなんだ。
交換オン!

・・・つながらなーいーよー・・・・


◆接続を削除する
ちょろちょろと調べて見ると、さっき確立した接続はPPPoE接続ってものなんだけど
PPPoE接続は本来ルータがやるっぽい。PC側に設定があると上手く行かないらしいので設定を削除。
再度LANを接続ー!

・・・繋がらないよぉ

◆最初から接続をする
AirStation説明書には「NTTのルータとPCが繋がる状態にしておく」みたいなのが前提条件になってました。
ので、最初から接続を確立しなおします。

今度はフレッツ光簡単設定CDを使用します。
[パソコン]----[VH-100]----[電話回線]
の状態で、設定CDから接続設定。ネットに繋がる事を確認~

次、[パソコン]----[AirStation]----[VH-100]----[電話回線]
の状態を作りAirStationのセットアップCDを設定。ネットに接続!
ぉ、なんかBUFFALOの設定サイトに繋がった。
マニュアルをみつつ設定をしていきAirStationの設定が完了。

・・・繋がったー!!
やったー!

次は[パソコン]--[ハブ]--[AirStation]----[VH-100]----[電話回線]
の状態で接続確認。

・・・繋がったー!!
なんでか良く分からないけど繋がった!!

だいぶ苦戦したけど、できました。


簡単にまとめると、
・ケーブルは付属品のものをちゃんと使う
・既存の設定は捨てて、接続はセットアップCDから作成する
こんな形でした。

これでひかり電話ルーターが返却できる。
疲れたァ・・・

Androidアプリ開発 (ガベージコレクション戦争編)

こんばんわ。フィブです。


前回OpenGLの描画に切り替えて画面表示を行ったところ一応表示はできました。
が、問題発生。
3秒に1回ほどなぜか一瞬画面が固まる。

OpenGLの実装方法ミスったのかと思ったけどそんなこともなく。
まさかOpenGLでやっても重い?! そもそも処理が重すぎたの!?
と焦ったところ見つけた情報。

「GC(ガベージコレクション)が発生すると全スレッドが100ms~300ms停止します」

はい、原因はこいつでした。ガベージ。
ご存じのとおりJavaは不要になったメモリを勝手に解放してくれます。これがガベージコレクション。
メモリ領域を勝手に掃除してくれちゃうのです。そのせいで止まると・・・。

Logcatで確認。
確かにLog上でGCなんちゃらって書かれた後に画面が一時停止してる。
絶対これだ。なんて迷惑な・・・。

いろんな記事を漁っていると、ゲームのループ処理に入ったら極力GCが発生しないようにプログラムを組め!
必要なものはループの前に全部メモリ確保すること。
など、結構注意事項が広まっておりました。
あたしはGCなんて意識したことないよ・・・。

実行中のメモリの割り当て解放状態は、DDMSのAllocation Trackerという機能で見れるらしいので見てみる。
確認するとあるわあるわ・・・。すごく頻繁にやりまくってる。

ソース上で確認。AllocationTrackerを確認しつつ以下一つ一つを修正していきます。

①new を絶対にしない!
  ローカル変数でもnewしたらメモリ割りあて→解放が発生します。
 必要なものはクラスのメンバ変数に突っ込んで使いまわすように修正しました。

②foreach文を使わない
  foreachはイテレータを生成して処理をするらしいのでメモリ割り当て解放が発生するようです。
  あたしのソースはArrayListを全部foreachで処理してたので全部以下のように書き直しました。
  凄い時間かかった・・・。
 
元:for( UserObject obj : mObjectList)
     ↓
  現:for( int i=0; i< mObjectList.size(); i++)

③enumクラスを使わない。
  enumクラスもメモリ割り当て→解放が頻発するらしいのでやめました。
  enumクラスはすべて定数(public static final 型) に書き換え。

④描画時にcreateBufferしない。
  前回導入したOpenGLで描画するクラスのとこですが、
  描画前にAllocationBufferでFloat型のバッファを作成しておりました。
  これがかなりメモリ食ってました。
  いいのか悪いのかわかりませんが、これも描画用のオブジェクトにFloatBuffer変数をメンバ変数に定義し
  使いまわすように修正。

さて、デバッグ実行してAllocationTrackerとにらめっこ。
明らかにメモリ解放頻度が減ってます。目に見えて減ってます。
LogcatもGC発生頻度が激減し、画面も止まらなくなりました!


しかし調査、対応で2,3日かかった・・・。疲れた・・・。
まさかガベージコレクションと戦う日がこようとは思いませんでした。
これからは敵視していきましょうっ

Android開発(何か終了時にエラー出る編)

こんばんわ、フィブです。


かなり短いメモ書き程度ですが・・・

あの後思ったように速度が出ず、ちょろっといじくってたら
戻るボタン押下の終了時にエラーが発生するようになりました。

Logcat上だと FATAL EXCEPTION main と表示され
なんかNullpointerExceptionが発生している。
Detachなんちゃらってところ。

調べてみたところ、英語サイトに答えがありました。

A:GLSurfaceViewではRendererオブジェクトがない状態でDetachが呼ばれちゃいけないらしい。
  
もともとのサンプルはSurfaceViewだったのでエラーを起こさなかったんだけど
期待した速度が出ず、継承クラスをGLSurfaceViewに変えての起動実験してました。
(結局求める速度は出ませんでしたが・・・)

その時の行動は単純にSurfaceViewの部分をGLSurfaceViewと書き換えただけ。
当然Rendererなんて設定してない。SurfaceViewに直すことによってエラーが解消しました・・・。

GLSurfaceViewはSurfaceViewとの機能の違い、実装方法の違い、などがよくわかっていないので
とりあえず置いておきます。

Androidアプリ開発(OpenGL描画導入編)

こんばんは、フィブです。


今まで作成してたプログラムですが、問題発生。
フリック処理が激重い!

今まで順調だった開発が背景スクロール実装した途端FPSが60→30台に。
フリック処理中は20台にまで落ち込むことがありハッキリ言ってとても使い物にならない。

速度を求めていろいろ調べたところやっぱりOpenGLでの描画が早いらしい。
というわけでOpenGLを用いた実装に変更していきました。

下記サイトを参考にしつつサーフェスが表示できるまで変更していきます
http://www.saturn.dti.ne.jp/~npaka/android/Graphics2DEx/index.html

いらないところは削りつつ、欲しいところはもらいつつソースを読んでいきましょう。
かなり苦労しました。
昔DirectXを学習したとき3Dの概念があまり理解できず一度投げたんですよ。
まさかこんなところで基礎知識不足というツケが回ってくるとは思いませんでした・・・。

以下よりあってるか間違ってるかわからないですが、簡単メモ書き。
※多分こうだろうってことがばっかり書いてるので全然違うかもしれません。

・OpenGLで描画するにはまずEGLというオブジェクトが必要(EGL10クラスとか)
・EGLはコンテキスト、コンフィグ、サーフェスなどをガリガリ設定して登録しておく
・OpenGLで実際に描画するにはGLオブジェクトが必要。(GL10クラスとか)くら
 →これは言うなればOpenGLで描画する際のCanvasクラスみたいなもんだと思っとく
   Canvas.drawBitmapで描画するように、GL.draw_textureで実際描画するし。

・GLクラスはビューポート変換、プロジェクション変換、モデリング変換、他ブレンド設定とかUV設定とかやっとく。
・テクスチャは2のべき乗のサイズに修正する。
 バイトバッファに画像情報をしこしこ格納していく(単純に画像のRGBA情報をバイト配列に詰めなおしてる)
 glGenTexturesで、テクスチャに管理番号を割り当てる。(GL側が勝手に管理する番号がもらえる)
 ※各テクスチャを張るときはこの管理番号で判別するため自分のオブジェクトに生成した番号を保存しておこう
 
 glBindTextureで、今つけた管理番号のテクスチャを使用しますよって連絡する
 glTexImage2Dで、画像情報が入ったバイトバッファなどを渡し「今の管理番号はこの画像と関連付けるから!」って命令する
 
 ここまでやってようやくテクスチャ一枚が使えるようになる。

・メインループ内では、今の管理番号をGLオブジェクトに渡して描画する。
・全部終わったら、EGLのeglSwapBuffersで画面に表示する!
 (あたしはここでハマりました。 これやらなかったからずっと画面真っ黒だった・・・)

以上。疲れた。。。
えーっと簡単にまとめると
-------------------------------------------------------
プログラムの開始

EGL作成・設定

GL作成・設定

テクスチャ読み込みとかする

メインループ
  ↓
  GLを使って描画
  ↓
  EGLで画面を更新!
  ↓
メインループに戻る・・・
-------------------------------------------------------

この手順を意識してやれば多分いけます・・・。
さて・・・色々疑問が浮かぶこともありましたが。

Q.INTバッファにカラー情報格納ってやってるけどこのINTバッファの処理の必要性がイマイチわからない。
 テクスチャ読む際は画像情報を自前でバッファ配列に突っ込まなきゃいけないの?
 なんかOpenGL標準読み込みメソッドとかそういうのないのかな・・・
 予想としては2つ。

 ①OpenGLにはそういう機能がないからこっちがやらなきゃいけない。
 ②こうしたほうが速い。

 バイトバッファでなんかやったほうが速いと思っとこう・・・。

Q.なんで画像読み込み時に画像作りなおしてるの?
A.これはOpenGLが画像のサイズが2のべき乗のものしか扱えないから。
  サイズがまちまちだったりするとこまるから2のべき乗の数のサイズで画像を作りなおしてるのね。

Q.テクスチャ描画する際に、引数Yがマイナスされてるのなんで?
A.これ、OpenGLの3D座標の問題で。OpenGLはY座標の値が上に伸びるから。

 画面は
 ・→X
 ↓
 Y

 だけどOpenGLは

 Y
 ↑
 ・→X

 って感じで、画面とY値の方向が逆なの。


以上、3Dに明るい人は「当たり前だろ!」とか言い出しそうな話。
あんまり詳しくない人ようにあえて書きましたが、真偽は定かでは・・。

5月も終わりかける

こんばんわ、ふぃぶです。
たまにはこっちも更新しないとなぁとおもいつつ。

このままじゃプログラミングの話ばかりになりそうだし・・・。


110522_01

110522_02



110522_03

もうちょいちょろちょろ描こう

Androidアプリ開発(描画編)

おはようございます。ふぃぶです。
Bitmap描画における移動、回転、画像切り出しの話。


AndroidでBitmap描画を行う際、CanvasのdrawBitmapを使うんですが
今回やりたいのは画像ファイルを任意の位置から切り出し、回転を加えて描画するってこと。

で、うまい方法はないかと詰まりました。

①画像切り出し表示の場合
Canvas.drawBitmap( bmp, src,dst,paint) ;

srcの部分に切り出しする位置とサイズ情報を持ったRectオブジェクトを渡すことで可能。

②回転をかけて表示する場合
Canvas.drawBitmap( bmp, matrix, paint);

matrixの部分に回転角情報を持たせたMatrixオブジェクトを渡すことで可能。


で、こいつの機能両方をもったものが欲しいんだがどうにもなさそうなので困ってます。
回転をかける際どうしても ②のメソッドを使用してしまうが、
このメソッド画像の切り出し情報を持たせる場所がないのです。
Translate(画面表示位置情報)はできるんだけど・・・。

一応考えた実装方法としては、
①テクスチャから画像を切り出し新たにBitmapを生成する
②Matrixに回転角と移動値情報を設定
③上記①で生成したテクスチャと②のMatrix情報を使用して表示。

以下コーディング例
----------------------------------------------------------
//描画するメソッド (私が勝手につくった)
public void doDraw(Canvas canvas){

//①テクスチャから画像を切り出し新たにBitmapを生成する
// mTextureには既に読み込んであるBitmapデータがあるよ
// 今回は画像上の(10,10)の位置から(20,20)の大きさで切り出します。
Bitmap tex = Bitmap.createBitmap(mTexture,10,10,20,20);

//②画像描画情報の設定

//Matrixに設定されいる情報を初期化します
mMatrix.reset();

//回転角を設定します.
// mAngleには回転角が数値で入ってるよ(1~360)
// tex.getWidth() / 2で画像の中央を指定。
// tex.getHeight() / 2で画像の中央を指定。
// 画像の中央を中心にmAngleの角度で回転させます
mMatrix.setRotate(mAngle,tex.getWidth()/2,tex.getHeight()/2);

//mPosXは画面上の表示位置が設定されてるよ
//mPosYは画面上の表示位置が設定されてるよ
mMatrix.postTranslate(mPosX, mPosY);

//①で生成した切り出し済み画像情報(tex)を
//②で設定したMatrix情報を使用して表示します。
canvas.drawBitmap( tex , mMatrix,null );
}


一応これで実現可能なんですけど、問題が。
そう、毎回newしてるので絶対重いよね!
1フレームにつき1回はnewが発生します。
しかもオブジェクトの数だけ発生します。
fps60だと考えたら秒間60*オブジェクト数回だけnewが発生する!

絶対重いでしょこれ・・・・

もっとうまい方法ないのかしら。

Androidアプリ開発(環境セットアップ編)

こんばんは、フィブです。
最近話題のAndroidアプリ開発に着手しようと
ゆっくりゆっくり作業を進めています。

さて、色々エラーも起こりまくったので自分用にメモ書き。
もちろん同じようなことで困ってる人のためにも書くんですが、
ここR-18サイトですよ?どんな技術者が見るんですか・・・。

さて、今回インストールの参考にしたのはここです。
http://gihyo.jp/dev/serial/01/androidapp/0002?page=1

簡単に手順をまとめると・・・
1.AndroidSDKを公式からDL(あたしの場合インストーラー)→インストーラーでインストール
2.環境変数の設定。(変数)Pathの最後に「;[AndroidSDKのインストール先]\tools」を追加
3.JDKのインストール(あたしのPCではインストール済みだったのでスキップ)
4.Eclipceのダウンロード→解凍→Cドライブの直下に移動
5.Eclipceの日本語適用(上記サイトの手順ではエラーだったのでスキップしました)
6.Eclipceを使用してADTプラグインのインストール→促されるままにEclipce再起動
7.Eclipceの[ウィンドウ]メニュ→設定→AndroidのSDKロケーションに
  [AndroidSDKのインストール先]を設定。
  なんかこの時エラーできたしたけど気にしない。
8.[ウィンドウ]メニュ→AndroidSDK及びAVDマネージャを選択。
  Available packagesに表示されもノを全部インストール。
  ※インストール超長いです!2時間あれば入りますっ。
9.エミュレータ設定をして、エミュレータの起動を確認。

ここで、エミュレータ起動しないトラブル発生。
色々調べてるうちにどうやらWindowsのユーザ名に全角文字が設定されているとダメみたい。

9のエミュレータの設定を行うと、
C:\Documents and Settings\[ユーザ名のフォルダ]に「.android」ってフォルダが作成されます。
このなかの\.android\avd\の中にあるiniファイルを開きましょう。
path=C:\Documents and Settings\【文字化け】.android\avd\~~
ってなってると思うんだけど、この文字化けがダメみたい。
2バイト文字だめなみたいなの・・・。
ちなみにアドレス書き換えても2バイト文字入ってたらダメみたいです。

ので、次の手順を踏みます。
~~\.android\avd以下のフォルダをCドライブ直下に移動。
さっき開いたiniファイルに描いてあるpathを移動先のパスに書き換える。

これで再度Eclipceからエミュレータ起動かけたらエミュレータが起動掛かりました。

■ここから本題。


インストール完了翌日(今日)。
Androidのエミュレータが起動しなくなりました。

■症状
1.Eclipceを起動すると直後に「android sdk content loader」とエラーが出る。

2.AndroidSDK及びAVDマネージャを選択すると以下のエラーが発生。
 「Location of the Android SDK had not been setup in the preference.」
3.Eclipceの[ウィンドウ]メニュ→設定→AndroidのSDKロケーションの下の
  SDKターゲットリストがなにも表示されない。

■ネットでみつけた対応でダメだったもの
・[プロジェクト]→自動的にビルドのチェックを外す。(効果なし)
・SDKロケーションパスの再設定。(効果なし)


■現在で見る感触
 まず、1はよくわからないのですが、2は「SDKロケーションが設定されないです」
 って言ってて、3は何かロケーションが認識できてなさそう。原因分からない・・・。
 要は3が上手く行ってないから2がダメなんじゃないかと。
 何で・・・?

■やってみたこと。
・AndroidSDKのzip版を落としなおしてSDKロケーションに設定(効果なし)
・ADTプラグインのインストール再確認(全部されてる)
・環境変数の設定しなおし(効果なし)
・Eclipceの再起動(効果なし)
・ネトゲを終了させてEclipce再起動(効果なし)
・昨日編集したiniファイルの変更。(効果なし)

 何やっても原因がわかりませんでした。
 だって昨日起動確認→今日起動でエラー だもん。何が原因なんよ・・・っ!


■対応
全部消して再インストール!

・・・最悪の対応な気がする;;
でもまぁほら、どんな手使っても動く環境作るのが大事です!


■アンインストール
・タスクマネージャのプロセスから「adb.exe」を終了させる。
 (これが動いてると使用中といわれフォルダが消せない)
・AndroidSDKをアンインストーラーでアンインストール
・EclipceとWorkフォルダを削除。
・C:\Documents and Settings\[ユーザ名のフォルダ].androidフォルダを削除。
・Cドライブ直下に移動したAndroidのフォルダを削除

■インストール。
1.AndroidSDKを公式からDL(あたしの場合インストーラー)→インストーラーでインストール
  このとき、Program Fileフォルダでなく「C:\Android\android-sdk」にインストール
2.環境変数の設定。(変数)Pathの最後に「;[AndroidSDKのインストール先]\tools」を追加
3.Eclipceのダウンロード→解凍→Cドライブの直下に移動
4.Eclipce日本語化プラグインをダウンロード反映( http://mergedoc.sourceforge.jp/ )
4.Eclipceのショートカットを作成。-creanオプションを設定し起動は全部そこからするようにした
6.Eclipceを使用してADTプラグインのインストール→促されるままにEclipce再起動
7.Eclipceの[ウィンドウ]メニュ→設定→AndroidのSDKロケーションに
  [AndroidSDKのインストール先]を設定。
  なんかこの時エラーできたしたけど気にしない。
8.[ウィンドウ]メニュ→AndroidSDK及びAVDマネージャを選択。
  Available packagesに表示されもノを全部インストール。

 ※ここで一旦Eclipceを再起動。SDKロケーションがちゃんと表示されることを確認。

9.エミュレータ設定をして、エミュレータのエラーを確認。
10.C:\Documents and Settings\[ユーザ名のフォルダ]\.android\avdの下のフォルダを
  Cドライブ直下に移動。
11.移動したフォルダ内のiniファイルに記載されているpathの値を変更。
12.SDKロケーションの表示を確認。正常に表示されてる。
  ※下全部同じなんですが↑確認しないで「AndroidSDK及びAVDマネージャを選択する」を
   押すと「Location of the Android SDK~~」エラーが出ます。
   一度SDKロケーションを確認すればエラーは解消されました。

  エミュレータ起動。起動確認。
13.Eclipceを再起動させ、SDKロケーションの表示を確認。正常に表示されてる。
  エミュレータ起動。起動確認。
14.PCを再起動し、Eclipce起動。SDKロケーションの表示を確認。正常に表示されてる。
  エミュレータ起動。起動確認。


な・・・何とか動いている模様。
でも何がいけなかったんだろうか・・・。

■前回と違うところ
・Eclipceを日本語化
・SDKのインストール先を変更(パスに半角スペースとか入ってない場所にした)
・Eclipceの起動を-creanオプションがついたショートカットから起動するようにした。


う~ん、これくらいだよなぁ・・・。
Android謎が多い機能だ。PC再起動しても動いてるし大丈夫かな。
2,3日様子をみつつ開発していこうかな。

そんなわけで、同じ症状でお困りの方。
一度入れなおしてみるのも有かと。
でも原因が結局分からず・・・。

誰か教えてくださいな。

18号が丸呑みに

おはようございます、ふぃぶです。
今日は多分DB改で18号が丸呑みされちゃいます。
楽しみですね。
ニコニコに上がってたので張っておこう


さて、今日(まで)の絵

アリス立ち
アリスフォームぅ

爪フォーム髪
新フォーム新髪型

らくがきー
落書きとろり

くりーむぱい
落書きクリーミぃ

魔法剣士設定
魔剣士フォームの設定落書き

ネイルドレッサフォーム
ねいるどれっさーフォーム


さて、DBみようDB~

本日ランクイン R-18G

こんばんわ、ふぃぶです。
どれだけ更新しないんだろう。

うーん、バッチ処理はよくないんだけど、一日一枚ちまちまとかはどうもねぇ・・・。

あ、今日pixivでランクインしました。
非常にありがたいことですよっ!

さとへび
これ。

みんな丸呑み好きねェ。
うちも好きだけどさー


カミツレラフ
カミツレさーんラフ

カミツレからー
カラー版

算段変化
なんとなく落書き

ゴンサン
セフィロス
リユニオンッ!

窓付きラフ
窓付きー

窓付きカラー
カラー

ふぃぶらくがき
フィブ娘、魔法剣士型落書きー


また方向性を見失いつつあります。
絵師じゃないんだし描く気がないときはかかなきゃいいんですけどねぇ

2か月分

こんにちわ、フィブです。

相当更新サボってましたね。
絵は描いてたんですけどスキャンするのがもう面倒くさくて。

夏は色々ありましたねー。
人生初同人イベントに参加してきましたよ、売り子ですが。

インテお疲れ様
インテ乙絵

インテ初参戦
館内で唯一空調が壊れてて超暑かった。
あと人凄い

オフィス
オフィスでのびる

電車でみかけた人
電車でこんな人が。あの日は夏コミがあったような。

たちえ
アリスフォーム立ち

ゆりまんが
依頼されたので百合描いた

ROヘル様
今日描いたヘル様。
アールヌーヴォ展先日行ってきたんですよ

アリスフォームロッド攻撃
爆炎放つアリスロッド

名雪
何となく名雪

ボーイッシュ娘
ボーイッシュ・・・?

魔法剣士
何となく魔法剣士

かぷ
また言われて描いた百合

最近また描く気力が落ちてきてます。
ネタは結構あるんだけど・・・。
テンションをあげたいー・・・

諸事情でさとりんをいじめる

こんばんわ、フィブです。

連日暑いですね。
週末になれば4連休です。

さて、ちょっとまともな絵を描くのはおやすみしてしばらくさとりんをいじめることになりました。
コンセプトは人外と絡ませよう。

さとなめ_ラフ
というわけで第二弾はナメクジです。
色塗り中です。
完了したらpixivに上げる予定なのです~

連休中に終わるといいなぁ

もう8月になっちゃったよぉ

こんばんわ、ふぃぶです。

2ヶ月も更新が空いてしまった。
絵は描いてたんだけどスキャンするのが面倒で・・・。

色々下書きとかラフとか。
400

399

398

397

396

395

406

405

404

403

402

401


仕事のお昼休みなんかは付箋をもって外で構図考えてたりします。
ちょっとした時間を有効に使いたいよね。
でも最近アイデアがまるで浮かばないんだよねぇ暑いし・・・。
つか黒くて見難い
付箋1
トトリ系素案

付箋2
R-18系案

最近のカラー絵はさとりん苛め。
pixivに上げてありますが。
さとりんタコ


こんな感じ。
夏休みとかあったらもっとたくさん描けるだろうなぁ

こんばんわ、フィブです。
毎度いってますがもう月末ですね。
先週までは大変でしたが今週はのんびりウィークです。

392
夏到来!水着ー

393
ゲシュペンストキックみてたら描きたく

394
神社裏


最近想像力が低下してる。
大人になるって嫌だ・・・・。
もうちょっと新しいものを見て感覚を刺激したいなぁ~

アツイ

こんばんわ、フィブです。

仕事が一区切りしたので要約日記書きます。
いやぁ、忙しかったよそれなりに・・・


落書きさん
何となく書いた人

腹裂きティッシュ
ポケットティッシュ


ポケットティッシュに一体化されちゃった子がお腹裂かれるネタでも描こうと思ったら
こんな感じに。
もっとィャンィャンァッフッン ビリィッ  っていう感じに描きたかったなぁ。
ちなみにグロくもない。


こんばんわ、フィブです。

酷い更新頻度ですね。もう6月だ・・・


ぽぽるさん?
誰だっけ・・・ぽぽるさん(?)ぽぽろ(?)さん

おんなのこ
お題で描き描き

おんなのこ2
なんとなく落書き女の子

ようせいさん
オリキャラの妖精さん

スカートみえない
撮影禁止

カラー
カラー


最近眠気がやばいです。11時以降全然起きてられない。
さぁ明日から仕事ですよー。
来週末は全出勤かもしれぬぅ

もう月末じゃん

こんばんわ、ふぃぶです。

時の流れの早さに絶望する毎日が続いております。もう5月終わりじゃん・・・


リョナ前
色塗ったよっ。

昔絵
昔の絵に色塗ったよっ


最近新規の絵はまともに描いてないなぁ
ネタがないんですよ、ええ・・・。

TwitterBotの認証をBasicからOAuthに変更する過程

こんばんわ、ふぃぶです。
本業がプログラマーなので歩いた工程をメモ書き程度に残します。

超個人用です。
とりあえず、ここ。
http://www.sdn-project.net/labo/oauth.html

1.アプリケーション登録しよう
 ・記載内容にしたがって登録!登録します
  →登録できん。よくわからん。
  →FireFoxでやってたのでIEに切り替え
  →再登録
  →同じページに戻ってくるんだけど。
  →よくみたら同意しますか?っていうのがページの最後に追加されてた。分かりづらいよ!
  →やっぱり動きが・・・。
  →よくみたらエラー出てた。登録内容不正?
  →説明文が短すぎっぽい。(10文字以上)
  →登録完了
  →記載内容どおりKey系をメモしておく

2.サンプル動かしてみよう。
 ・サンプルをコピペしてApache上で実行。
  →エラーで取る。
  →Call to undefined function curl_init()
  →curlが無いのか・・・?
  →php.iniに編集が必要らしい
  →何処においたか・・・。あった。C:/Windows/system32にあった。
  →extention php_cure.dllのコメント化解除。
  →Apache再起動!実行!同じエラー!
  →extention_dirを設定しなきゃいけんらしい。
  →php.ini再確認。 設定済み
  →phpは5.0以上使ってるし問題なし。
  →なんだ、なんだろう・・・curl自体がインストールされてないのかなぁ。
  http://labs.elibelinde.com/blog/132/apache2-2php5curl
   → >libeay32.dll と ssleay32.dll
     >をwindowsのシステムフォルダ(xpなら c:\windows\system32)
     >にコピーするとうまく行きました。
      →全然上手くいきませんの
→ Apacheのhttd.confにPHPIniDir "C:\WINDOWS\system32"を定義したら解消されたぽ?
  →Call to undefined function curl_init()は解決っぽいがエラー。
  →POSTも正常にできていない。思い当たる節はあるのでトライ&エラートライ&エラー
  http://tech.bayashi.jp/archives/entry/perl/2010/003016.html
   → > ACCESS_TOKEN と ACCESS_TOKEN_SECRET は
   → >「Application details」ページの右メニューにある
   → > [My Access Token] を押すと表示されます。
      →どれどれ・・・。おぁ!ほんとだ!こんなとこにあったんかい

トークンキー


  →ACCESS_TOKEN , ACCESS_TOKEN_SECRET をセットして実行。
  →おお、成功だ!
 とりあえず、POSTできました。

 今ココ