Home > 移行前サイトの記事

移行前サイトの記事 Archive

3D素材 – 電マ (電気マッサージ器)

トラたま(略) つん(原作)の作成した3Dエレベーター素材です。

使用例↓
電マ使用例

たいしたこと無いですが、「それでも欲しい」という方はtwitter@nawokiまでリプをお願いします。(商用可)

3D素材 – 高層ホテルのエレベーター

トラたま(略) つん(原作)の作成した3Dエレベーター素材です。
ケータイコミックス「おなしょ!」内で使われました。

使用例↓ 手前の壁は非表示になっていますが、一応展望エレベーターです。

エレベーター使用例

たいしたこと無いですが、「それでも欲しい」という方はtwitter@nawokiまでリプをお願いします。(商用可)

cintiqが線画表示に適さないので、一瞬だけメインディスプレイに表示するプログラム

本家とらたま袋の漫画家さんが、cintiqを使ったマルチモニター環境で作業しているのですが
「cintiq上で線画を表示すると鮮明すぎてギザギザが目立つ。
できればメインディスプレイに表示したい」
と、ぼやいていたので、久々にHSPなぞを弄って簡単なプログラムを書きました。

ほんとはコミスタの機能で、ウィンドウのクローンが表示できるんですけど、
マシンスペックの都合だったり、
(cintiqが右側なので) [メニュー] – [ファイル]の位置が左端に移動しちゃうと困ったり、
いろいろ上手い具合に行かないようですね。

さて、問題のプログラムですが、しょうもないコピペプログラミングですので、
実行ファイルではなくサンプルスクリプトとして記載したいと思います。

サブディスプレイの内容をメインに最前面&全画面で20秒間表示

#uselib "gdi32.dll"
#cfunc CreateDC "CreateDCA" sptr,sptr,sptr,int
#func DeleteDC "DeleteDC"  int
#func BitBlt "BitBlt" int,int,int,int,int,int,int,int,int

#define NULL        0
#define SRCCOPY     0x00CC0020
#define CAPTUREBLT  0x40000000

// モニター情報の取得(擬似モニターを含む)
#module
#uselib "user32.dll"
#cfunc  EnumDisplayMonitors "EnumDisplayMonitors" sptr, sptr, sptr, int
#func   GetMonitorInfo      "GetMonitorInfoA"     sptr, sptr

#define FALSE                   0
#define TRUE                    1
#define NULL                    0
#define MaxMonitors             16
#define MaxRectParameters       4
#define MaxParameters           5
#define Prm_API                 0
#define Prm_max                 1
#define Prm_cnt                 2
#define Prm_idx_primary         3
#define Prm_ptr_rects           4
// 初期化 ret = GMIinit( 最大値 );
//        最大値は数えるディスプレイの最大数。1以上MaxMonitors以下の値。
//        成功ならretは0以外の値、失敗なら0。
#defcfunc GMIinit int max;
        if ( (max < 1) || (max > MaxMonitors) ) {
                return FALSE;
        }

        dim  prm,    (MaxParameters + 1);
        dim  rects,  ((max + 1) * MaxRectParameters);
        dim  bin,    (23 + 1);
        mref a_stat, 64;

        bin( 0) = 0x83ec8b55, 0x5653d8c4, 0x145d8b57, 0x28d845c7, 0x8d000000;
        bin( 5) = 0x8b50d845, 0xff520855, 0x75c08513, 0xebc03304, 0xfc558b2e;
        bin(10) = 0x7501fa83, 0x084b8b06, 0x8b0c4b89, 0x538b0843, 0x04e0c110;
        bin(15) = 0x8b104d8b, 0x0004b9f1, 0x3c8d0000, 0x0001b802, 0xa5f30000;
        bin(20) = 0x5f0843ff, 0xe58b5b5e, 0x0010C25D;
        prm(Prm_API)         = varptr(GetMonitorInfo);
        prm(Prm_max)         = max;
        prm(Prm_cnt)         = 0;
        prm(Prm_idx_primary) = 0;
        prm(Prm_ptr_rects)   = varptr(rects);
        ret = EnumDisplayMonitors(NULL, NULL, varptr(bin), varptr(prm));
        return ret;
// ディスプレイの数を取得しstatに格納。失敗は負数。
#deffunc GMIcnt
        if (ret == FALSE) {
                a_stat = -1;
        } else {
                a_stat = prm(Prm_cnt);
        }
        return;
// プライマリー・ディスプレイのインデックスを取得しstatに格納。失敗は負数。
#deffunc GMIprimary
        if (ret == FALSE) {
                a_stat = -1;
        } else {
                a_stat = prm(Prm_idx_primary);
        }
        return;
// 指定したディスプレイの、仮想画面内の座標を取得。
//     ret = GMIrect(idx, rect);
//       成功 : retは0以外。rectに座標を格納。
//              rect(0) : 左上X座標, rect(1) : 左上Y座標,
//              rect(2) : 右下X座標, rect(3) : 右下Y座標
//       失敗 : retは0。    rectは不定。
#defcfunc GMIrect int idx, array rect
        if ( (ret == FALSE) || (idx < 0) || (idx >= prm(Prm_cnt)) ) {
                return FALSE;
        }
        work    = idx * MaxRectParameters;
        rect(0) = rects(work + 0);
        rect(1) = rects(work + 1);
        rect(2) = rects(work + 2);
        rect(3) = rects(work + 3);
        return TRUE;
// 後始末
#deffunc GMIclear
        dim prm,   1;
        dim rects, 1;
        dim bin,   1;
        ret = FALSE;
        return;
#global

// ======================== 使用例 =========================
; ウィンドウ非表示
screen 0, 150, 50 : gsel 0, -1;
wait 50;

        dim rc, 4;
        ret = GMIinit(4);       // 最大4画面分の情報を取得する
        GMIcnt;
        ret = GMIrect(1, rc);
        subwx0 = rc(0);
        subwy0 = rc(1);
        subwxx = rc(2);
        subwyy = rc(3);
        GMIclear;       // 使わなくなったら呼び出す

; デスクトップ画面のサイズでバッファ画面を作成
sx = subwxx - subwx0 : sy = subwyy - subwy0
buffer 2, sx, sy

; デスクトップ画面のデバイスコンテキスト取得
hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL)

; デスクトップ画面の画像をコピー
BitBlt hdc, 0, 0, sx, sy, hdcScreen, subwx0, subwy0, SRCCOPY | CAPTUREBLT

; デバイスコンテキスト削除
DeleteDC hdcScreen

bgscr 1, ginfo_dispx, ginfo_dispy, 0, 0, 0, : gsel 1,2
gcopy 2, 0, 100, ginfo_dispx, ginfo_dispy

wait 2000

end

※HSP専用のコード表示がなかったので、表示がHTMLになってますがご了承下さい。

ある程度環境を選びませんが、当然cintiqがメインディスプレイになっていると
cintiq側に表示してしまうという、逆の動作をします。

今回参考にしたのはこちら

ですので、照らし合わせて数値などを変更していただけば
思い通りの動作になると思います。

プログラミングだかなんだかもうチンプンカンプンだーってんで
実行ファイルだけ欲しい方はtwitter@nawokiまでどうぞ。
利用は自己責任。他力本願。高望みしない。
上記が守れる方のみ配布いたします。(簡単にでよければ希望に合わせて改変可能です)

現在見ているページをサブウインドウで開くブックマークレット

調べたら無かったので初めてブックマークレットなるものを作ってみた。
このページをサブウインドウで開く

javascript:window.open(location.href, "window_name", "width=800,height=600,scrollbars=yes");

JavaScript全く分からないので、サイズ指定しなくて済む方法がわかりません。
800*600ででかすぎる場合は適当に弄ってください。

「サブウインドウ」という呼び方は共通だと思うけど、調べ方が悪かったのかな。
Chromeで動作確認。他はシラネ

特定のカテゴリのみ除去して表示

かねてより日記をHomeに表示しないようにしたかったのですが、
今回修正を加えてみました。トラたま袋同様、変更箇所を忘れないためにメモ。

参考URL:WPカスタマイズ講座

トップのメニューにカテゴリー「日記」を追加して、日記はそっちから表示するように。
新着記事やRSSには引き続き表示されるようになっています。

ComicStudioEXでBambooのTouch機能を使う覚え書き。

なぜか非対応なComicStudioEXでBambooのTouch機能を使う覚え書き。

  • C:Program FilesTabletPen (※Pen&Touchの場合)
    にあるAppGestures.xmlをnotepadで開く。
  • 下の方にComicStudioMini用の設定があるので(“Comic”とかで検索すると楽です)
    <ArrayElement>~</ArrayElement>ごと真下にコピペ。cs_mini→cs_exに変更。
    なお、この<ArrayElement>~</ArrayElement>が一つのプログラムに対する設定群です。
  • 再起動 or Pen_TabletUser.exe をタスクマネージャーから強制終了して再度実行

なぜComicStudioMiniにしか設定されていないのかはわからないけど、とりあえずこれで完動します。
各項目のamountの値を変えれば使用感の調節が可能です。
値を大きくするか小さくするかすれば感度が変わるかと思います。(これは未検証なので各自いじってみてください)

twitterのプロフィールからスパムが大量にやってきた件

4月ぐらいから、twitterのプロフィール(URL)を拾った自動スパムが、うちにやってくるようになりました。

最初はそのプロフィール欄に『 http://t3.xii.jp/nawo 』と表記していたのですが、
どういうことかこれが都合よく『 http://t3.xii.jp/… 』という具合に縮められまして、
本家トラたま袋( http://t3.xii.jp/ )の方にスパム被害の大半が行っていました(汗)

どうもこの欄は数文字しか表示できないようなので(URL書くところなのに!!)
本家トラたま袋のURLが含まれない表示に変更したところ、
本家トラたま袋へのスパム被害がほぼ無くなりました。

なお、今回は短縮URLサービスのbit.lyを使ってURLを偽装(?)しました。
継続的に表示させる場所で、短縮URLサービスのようなインスタント的URLを使うのは
ちょっとナンセンスで本末転倒な感があるんですけど、
スパム被害を防ぐためには背に腹は代えられないです。

裏たま袋にはAkismetを有効にしていませんが、
プロフィール欄を短縮URLに変えてからスパム自体がぐっと減りました。
短縮URLサービスのリダイレクト処理が、自動スパムには苦手なのかも。

そもそも自動スパムが拾ってたのが、<a href=”">の内容じゃなくて
画面上に表示されていた部分だったので、
TinyURLあたりの、もうすこし長めの短縮URLサービスを利用すれば
URL自体が拾えなくなる可能性もありますね。(短縮URLは一部でも欠けたら完全に意味がないので)

MicrosoftOfficeをインストール中、ディスク容量計算で止まる

必要なディスク領域を計算しています。しばらくお待ちください。

で止まって先に進めない場合の対処方法。
自分の環境では、上記ダイアログが表示されてから何分まってもインストールが開始されないので
以下の自動インストールを参考にしてインストールしたところ、無事インストール出来ました。

参考URL:

http://d.hatena.ne.jp/tkssoft/20070311/p1

1.Office 2003をCD-ROMからサーバの共有フォルダなどにコピーする。

※ここではファイルのコピー先を[ M:office ]とする。

※[コントロールパネル]-[フォルダオプション]の表示タブにて

[すべてのファイルとフォルダを表示する]にチェックをしてから行うこと。

2.Office 2003 Setup.exe (拡張版)への置き換え。

a)EntSetup.exeダウンロードする。

b)ダウンロードしたファイルを実行して、任意のパスに展開する。

c)展開先のSETUP.EXEをOffice 2003の既存のSETUP.EXEに上書きする。

上記は「自動インストール」の方法(会社などで何台も同時インストールする場合のやりかた)なので、この後も説明が続きますが、自分はこの時点でインストールを実行したところ「必要なディスク領域を計算しています。しばらくお待ちください。」という表示に行かず、「標準インストール」か「カスタムor最小インストール」かを選ぶ画面に進むことができ、インストールできました。

アップロードURLの罠

wordpress/wp-content/uploads/2010/03/hogehoge.jpg
だとか
wordpress/wp-content/plugins/hogehoge/css/css.css
だとか……

WordPressをいくらリダイレクトさせたとしても、ソースのいたるところでコアファイルの場所が晒されています。
ですから、画像のアップロード場所ひとつ変えただけじゃ、セキュリティ的にはあまり意味がないのですが……
まあそれはそれ。見た目的な意味でURLをなんとかスマートに表示させたいところです。

例えばわたしのページはhttp://t3.xii.jp/nawo/がhomeですが、
実際はhttp://t3.xii.jp/nawo/hoge/にコアファイルが格納されています。(と仮定します)
よってメディアの保存先はhttp://t3.xii.jp/nawo/hoge/wp-content/uploads/以下になってるわけです。

これを出来ればhttp://t3.xii.jp/nawo/uploads/にまで縮められたら幸せですね。
WordPressの設定で出来そうなので試してみました。

管理パネル-その他の設定を変更する


きっとこれだ!ってわけでこれを設定するわけですが、上手くいかない。
インストールディレクトリと同じ階層か、それ以下の階層には変更できるのですが、階層を上がる場合はダメ。

公式のドキュメントにはこんな記述がありまして…

これは「アップロードするファイルの保存場所」の設定が初期値の wp-content/uploads のままであるときのみのオプションです。

なんて書いてあります。
つまり「アップロードするファイルの保存場所」が空欄じゃないと、「ファイルへの完全な URL パス」は意味がない、と読み取れます。
さらにフォーラムにもこんな投稿があって

・メディアアップロードでアップロードすると、ファイルのアップロードには成功する
・が、リンクのURLがDefaultのwp-content/uploadsとなり、画像が正しくリンクされない

と書かれています。
これはすごい罠!!

正しい設定方法

「アップロードするファイルの保存場所」は相対パスである必要があるため、絶対パスは使えません。
かといって、「アップロードするファイルの保存場所」を「../uploads」としても、ソースなどにまんま「http://t3.xii.jp/nawo/hoge/../uploads/」と書かれてしまって恥ずかしい。
でもこの場合アップロードもリンクも正常にはたらくんですね。

つまり、この二つの設定項目、階層をさかのぼる場合に限り
どうも二つとも組み合わせなければいけないみたい。なので、
「アップロードするファイルの保存場所」に「../uploads」と書いて
「ファイルへの完全な URL パス」に絶対パスを記入する。

はい、これでソース内や表示上のURLもアップロード場所も思い通りになりました。

投稿記事がプレビュー出来ない

WPでたびたびプレビュー機能がおかしくなる。
そうなるとis_user_logged_in()にも反応しない。とても不便。

最初はトラたま袋で発生。
WordPressのURL(実際にデータがあるURL)とサイトURL(見せかけのURL)が、それぞれレンサバ登録時のURL、マルチドメイン取得後のURL、となってなっていたせいで、Cookiにログイン情報が反映されなかったのが原因。

二つのURLのドメインを合わせたら正常動作した。

今回はトラたま袋とこのページで、ログインしているIDが両方ともadminになってたせいで、ログイン情報が混乱していたのが原因らしい。
どこかには「IDとPASSが同じだったから」と書いてあったのだけど、うちのPASSは別物なので、単純にIDで判定している様子。

管理者を追加して、このページのログインIDをadminから変更したら、正常動作した。

PASSは変更前と同じだけど、もちろん大丈夫。
Cookieはドメイン(unko.comとwww.unko.comは別扱い)とuserIDで管理されてるから妥当な挙動ですね。

ホーム > 移行前サイトの記事

検索
フィード
メタ情報

Return to page top