tag:blogger.com,1999:blog-45137074781558980742024-03-14T07:06:46.603+09:00Bushimichi's blogプログラムの備忘録が中心です。Web、サーバ、アプリ制作などなど。Unknownnoreply@blogger.comBlogger119125tag:blogger.com,1999:blog-4513707478155898074.post-58135071178277620342017-03-23T02:12:00.001+09:002017-03-23T02:17:22.389+09:00Nox App Player の共有フォルダを変更するAndroidのエミュレーター <a href="https://jp.bignox.com/">Nox App Player</a>をWindows上で動作も軽く使いやすいので開発に利用している。<br />
<br />
ただ、インストール先のディレクトリは選択できるが自動的に設定されるPCとの共有フォルダのパスは、<br />
<code>C:\ユーザディレクトリ\Nox_shared</code> <br />
に固定されているようで変更する方法がわからなかった。 <br />
そこで、あらかじめユーザディレクトリにシンボリックリンクでNox_sharedを作成しておき任意の場所に共有フォルダを移動させることにした。<br />
<pre><code>mklink /j C:\ユーザディレクトリ\Nox_shared D:\Nox_shared
</code></pre>
<br />
これで、以下のようにAndroidエミュレータとつながる。<br />
<code>/mnt/shared/ -> D:\Nox_shared</code> <br />
<br />
<br />
そもそも、共有フォルダを任意の場所に移したかったのは、<br />
cocos2d-x Lua のソースを/mnt/shared/ からアクセスできる場所に置くことで<br />
いちいちアーカイブしなくてもアプリの更新を簡単にしたかったからで、これでうまくいった。bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-89150822689146244242017-02-11T23:59:00.002+09:002017-02-11T23:59:42.275+09:00WindowsのコマンドプロンプトでUTF-8を利用する<br />
<pre># コマンドプロンプトで UTF-8 を利用するコマンド
chcp 65001
</pre>
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-82872311886797090142016-12-22T14:15:00.001+09:002016-12-22T14:15:31.776+09:00cygwinで、viを使うときの注意<p>vi コマンドで、入力モードの際に十字キーがうまく動かず文字入力されてしまう場合は、</p>
<p>ホームに .exrcファイルを作成して</p>
<pre><code>$ vi ~/.exrc
set nocompatible
set backspace=indent,eol,start
</code></pre>
<p>あと、シェルコマンドを実行する際に \r がコマンドとして認識される場合は、以下を追記</p>
<pre><code>$ vi ~/.bash_profile
export SHELLOPTS
set -o igncr
</code></pre>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-32741024383877119332016-12-16T17:38:00.001+09:002016-12-16T17:38:31.222+09:00Firebaseの最新情報は英語サイトでみる<p>FirebaseのC++のSDKの情報をみると日本語サイトが version 1.0.0 のものだった。 <br>
最新の2.1.0 は、英語サイトにのみ情報がある。</p>
<p><a href="https://firebase.google.com/docs/cpp/setup?hl=en">https://firebase.google.com/docs/cpp/setup?hl=en</a></p>
<p>?hl=en をつけると英語サイトになる。</p>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-50795114765001432282016-12-15T22:12:00.001+09:002016-12-15T22:13:11.427+09:00Android adbコマンドでインストール時に端末とエミュレータを指定してする方法<p>端末指定</p>
<pre><code>adb -d install xxxxxxx.apk
</code></pre>
<p>エミュレーター指定</p>
<pre><code>adb -e install xxxxxxx.apk
</code></pre>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-11114861149515147332016-12-14T22:55:00.001+09:002016-12-14T22:55:50.083+09:00cocos コマンド Android Studioのプロジェクト をコンパイル<p>忘れそうなので、androidプロジェクトにオプションで –android-studioをつける。</p>
<pre><code>cocos compile -p android --android-studio
</code></pre>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-67905457620874170832016-12-13T11:52:00.001+09:002016-12-13T19:49:21.194+09:00GAEでPHPからdatastoreを使うときのメモ<p>基本的には公式サイトをよく読むのが基本だが一部古い情報などがあるので参照する場所に注意する。</p>
<h2 id="ライブラリ情報">ライブラリ情報</h2>
<p>日本語化されてるページはなぜかPHPについての記述が抜けてるとこが多いので英語のドキュメントを見たほうがよさそう。</p>
<h3 id="インストール">インストール</h3>
<p><a href="https://cloud.google.com/datastore/docs/reference/libraries#client-libraries-install-php">https://cloud.google.com/datastore/docs/reference/libraries#client-libraries-install-php</a></p>
<h3 id="リファレンス">リファレンス</h3>
<p><a href="https://googlecloudplatform.github.io/google-cloud-php/#/docs/v0.20.0/datastore/datastoreclient">https://googlecloudplatform.github.io/google-cloud-php/#/docs/v0.20.0/datastore/datastoreclient</a></p>
<h3 id="ソースコード">ソースコード</h3>
<p><a href="https://github.com/GoogleCloudPlatform/google-cloud-php">https://github.com/GoogleCloudPlatform/google-cloud-php</a></p>
<p>※日本語のドキュメントからソースコードは以下にリンクされているが個人的に使いにくかったです。 <br>
<a href="https://github.com/google/google-api-php-client">https://github.com/google/google-api-php-client</a></p>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-56792082844552946382016-12-01T06:47:00.001+09:002016-12-01T06:47:54.135+09:00Windowsでのシンボリックリンク<p>すぐに忘れるのでメモ</p>
<p>管理者権限でコマンドプロンプト実行</p>
<h3 id="ディレクトリーをリンクする場合">ディレクトリーをリンクする場合</h3>
<pre><code> mklink /D [リンク先] [リンク元]
mklink /D C:\link C:\directory
</code></pre>
<h3 id="gitとかでも認識するようにするにはジャンクションにする">Gitとかでも認識するようにするにはジャンクションにする。</h3>
<pre><code> mklink /j [リンク先] [リンク元]
mklink /j C:\link C:\directory
</code></pre>bushimichihttp://www.blogger.com/profile/08753972221311494053noreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-16654514993171343662016-11-30T10:41:00.001+09:002017-02-22T11:11:11.682+09:00cocos2d-x ios の UIWebView を WKWebViewに変更する。<div style="line-height: 1.5em;">
ios10 にアップデートしたあたりから、UIWebViewの挙動がどうもおかしい。<br />
不意に落ちたり、ほかのアニメーション実行中に落ちたりするような<br />
よくわからないエラーが多数発生するようになった。<br />
<br />
<br />
UIWebViewをどんだけいじってもらちがあかなさそうだったのでWKWebViewに思い切って変えてやろうと思った。
<br />
変更箇所は比較的少なくてすぐに変更はできた。
ライブラリーに WebKitを追加して
<br />
<pre>#
# cocos2d-x-3.13.1
#
# cocos2d-x/cocos/ui/UIWebViewImpl-ios.mm
#include "ui/UIWebViewImpl-ios.h"
#include "renderer/CCRenderer.h"
#include "base/CCDirector.h"
#include "platform/CCGLView.h"
#include "platform/ios/CCEAGLView-ios.h"
#include "platform/CCFileUtils.h"
#include "ui/UIWebView.h"
#import <webkit ebkit.h=""> // 追記
// 100行目あたり
@interface UIWebViewWrapper () <wkuidelegate wknavigationdelegate=""> //変更
@property(nonatomic, retain) WKWebView *uiWebView; // 変更
// 120行目あたり
- (void)dealloc {
self.uiWebView.navigationDelegate = nil; // 変更
self.uiWebView.UIDelegate = nil; // 変更
[self.uiWebView removeFromSuperview];
self.uiWebView = nil;
self.jsScheme = nil;
[super dealloc];
}
- (void)setupWebView {
if (!self.uiWebView) {
self.uiWebView = [[[WKWebView alloc] init] autorelease]; // 変更
self.uiWebView.navigationDelegate = self; // 変更
self.uiWebView.UIDelegate = self; // 変更
[self.uiWebView setOpaque:NO];
[self.uiWebView setBackgroundColor:[UIColor clearColor]];
}
if (!self.uiWebView.superview) {
auto view = cocos2d::Director::getInstance()->getOpenGLView();
auto eaglview = (CCEAGLView *) view->getEAGLView();
[eaglview addSubview:self.uiWebView];
}
}
// 220行目あたり
- (void)evaluateJS:(const std::string &)js {
if (!self.uiWebView) {[self setupWebView];}
// [self.uiWebView stringByEvaluatingJavaScriptFromString:@(js.c_str())]; // コメントアウト
// 以下を追記 コールバックは省略
[self.uiWebView evaluateJavaScript:@(js.c_str()) completionHandler:^(NSString *result, NSError *error){
NSLog(@"Error %@", error);
NSLog(@"Result %@", result);
}];
}
- (void)setScalesPageToFit:(const bool)scalesPageToFit {
if (!self.uiWebView) {[self setupWebView];}
// self.uiWebView.scalesPageToFit = scalesPageToFit; // WKWebViewでは使わなさそうなのでとりあえずコメントアウト
}
</wkuidelegate></webkit></pre>
<br />
今はこれで動いているがまぁ問題があればそこでまた考えよう。
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-8361285121517664992016-11-22T11:19:00.002+09:002016-12-27T12:11:55.221+09:00cocos2d-x pushSceneからのenterSceneしたいので、pushEnterSceneの作成pushSceneをした後に、enterSceneをすると、scenesStackごと破棄されてしまうので<br />
今いるSceneを移動するように pushEnterSceneを作成した。<br />
<br />
<div style="background-color: #eeeeee; padding: 10px;">
<br />
<span style="color: red;">※ replaceScene で同じことができるようなのでいらなかった。。。</span><br />
<br />
<br />
# CCDirector.cpp<br />
<br />
void Director::pushEnterScene(Scene *scene)<br />
{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>CCASSERT(scene, "the scene should not null");<br />
<br />
//<span class="Apple-tab-span" style="white-space: pre;"> </span>_sendCleanupToScene = false;<br />
<br />
#if CC_ENABLE_GC_FOR_NATIVE_OBJECTS<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>auto sEngine = ScriptEngineManager::getInstance()->getScriptEngine();<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>if (sEngine)<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>{<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>sEngine->retainScriptObject(this, scene);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>}<br />
#endif // CC_ENABLE_GC_FOR_NATIVE_OBJECTS<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span><span style="color: red;">_scenesStack.popBack(); // pushScene にこれを追加しただけ</span><br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>_scenesStack.pushBack(scene);<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>_sendCleanupToScene = true;<br />
<span class="Apple-tab-span" style="white-space: pre;"> </span>_nextScene = scene;<br />
}
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-83006449344926042392016-11-13T21:56:00.002+09:002016-11-13T21:56:54.501+09:00Bitbucketで、コミット間の差分を確認したい場合<br />
https://bitbucket.org/<OWNER>/<REPO>/branches/compare/<commit-hash>..<commit-hash-older>#diff<br />
<br />
ブラウザの操作からは、コミット間の差分表示方法がわかりませんでしたが<br />
直接URLを入力するとできるみたいです。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-13956471989532323752016-11-04T13:11:00.004+09:002017-02-22T11:12:51.039+09:00Lua 例外処理 try-catchLuaには、直接的な例外処理はないみたいなので<br />
pcallを応用して、try-catch的なものを代替わり案としてみる。<br />
<br />
<pre>--
-- try-catch関数
--
function try_catch(what)
local status, result = pcall(what.try)
if not status then
what.catch(result)
end
return result
end
--
-- 使い方
--
try_catch{
try=function()
-- 何か実行する
end,
catch=function(error)
print("caught error " .. error)
end
}
</pre>
<pre style="background-color: #eeeeee;"></pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-37185829138013815142016-11-02T12:14:00.001+09:002016-11-02T12:15:38.131+09:00Lua ロングカッコ[===[文字列]===] 文字列の囲み文字は任意の数のイコールとカッコを使ってあらわされれる。
<br />
<br />
[=[文字列]=]<br />
[==[文字列]==]<br />
[===[文字列]===]<br />
[====[文字列]====]<br />
[=====[文字列]=====]<br />
[======[文字列]======]<br />
[=======[文字列]=======]<br />
[========[文字列]=========]
<br />
<br />
最初、この文字が出てきたときふざけてるのかと思ったけど
ちゃんとしたものでした。
<br />
1段開き長括弧、2段開き長括弧とか読むらしい。Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-20412098127143195492014-06-25T16:14:00.001+09:002014-06-25T16:14:59.002+09:00webdevのmount事前にdavfs を設定しておく必要がある。
mount -t davfs http://example.com/webdav/ /tmp/webdavUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-59026824445030593722014-06-25T11:42:00.001+09:002014-06-25T11:43:19.907+09:00テキストファイルに含まれる文字列をGREPするLinux系のコマンドでテキストファイルに含まれる文字列をGREPする場合
find . -type f -name "*.txt" | xargs grep "文字列"Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-80014446507483897292014-06-25T03:38:00.001+09:002017-02-22T11:13:45.818+09:00Linux 古いコマンドのキャッシュ削除<pre>
ソースからGITを入れた時に起こった現象
git --version
bash: /usr/bin/git: No such file or directory
どうも、削除した古いバージョンのGITの影響らしいので以下でキャッシュ削除
hash -r
</pre>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-77050925645685016202014-06-25T02:43:00.002+09:002014-06-25T02:43:26.516+09:00swfed.so configure optionconfigureするときには、オプションを指定する<br />
<br />
phpize<br />
./configure --with-png-dir --with-gif-dir --with-zlib-dir<br />
<br />
<br />Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-36624607650763529462014-06-25T01:57:00.011+09:002014-06-25T02:00:00.779+09:00FireFoxの console.log 最高!<br/><div class="section"><br /><p>FireFoxプラグインのFireBugsで利用できる console.log って便利だ。IEにも同じ機能が欲しい。</p><br /><p>単なるログ出力だけでなく、オブジェクトの中身が見れたりして</p><br /><p>Javascript開発におけるわかりにくかったところが一度に解決されます。</p><br /><p>console.log さまさまです。</p><br /><p>しかし、FireFoxで開発を進めて、いざIEで試すとまったく動かない。。。</p><br /><p>そんな絶望感は計り知れない。。。</p><br /><p>まぁ、とりあえずってことで、</p><br /><p>IEでは、if(typeof console == 'undefined') console ={};</p><br /><p>とかやって、consoleを書いたままでもエラーが出ないようにしています。</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-74660089382347798992014-06-25T01:57:00.010+09:002014-06-25T02:00:00.656+09:00スクラップブックマーク<br/><div class="section"><br /><p>はてなブックマークのjavascriptをお気に入りに登録させてしまう仕様をみて</p><br /><p>ほーそんなこともできるんですね。</p><br /><p>灯台下暗しといいますか、クリック一発で登録の手軽さをこういった形で実現してしまうとはさすがです。</p><br /><p>そこで、新発見があったのですから応用して、スクラップブック(本文中の記事だけを取得する)用に</p><br /><p>出来ないかと考えてみました。</p><br /><p>FireFox用</p><br /><pre><br /><a href='javascript:<br />var h = window.document.getElementById("bkmark");<br />if(!h){<br />var f=window.document.createElement("form");<br />f.method="POST";<br />f.target="bkmark";<br />f.action="○○○.php");<br />f.innerHTML="<input type=\"hidden\" name=\"doc\" id=\"bkmark\"><input type=\"hidden\" name=\"title\" id=\"bkmark_title\"><input type=\"hidden\" name=\"url\" id=\"bkmark_url\">";<br /><br/>var ifr=window.document.createElement("iframe");<br />ifr.name="bkmark";<br />ifr.width=0;<br />ifr.height=0;<br /><br/>window.document.body.appendChild(f);<br />window.document.body.appendChild(ifr);<br />h = document.getElementById("bkmark");<br />}<br />h.value = escape(window.getSelection().getRangeAt(0)) || "";<br />window.document.getElementById("bkmark_title").value = escape(document.title);<br />window.document.getElementById("bkmark_url").value = escape(location.href);<br />if(h.value){f.submit();}<br />void(0);<br />'>スクラップブックマーク(FireFox用)</a><br /><br/></pre><br /><br/><p>上記のURLをはてなブックマークと同じように、ブラウザのお気に入りに登録します。</p><br /><p>始めは、XMLHttpRequest を使っていたのですが、別ドメインへのアクセスが出来ないことが</p><br /><p>すぐにわかり(使う前に気がつけよ。。。)断念しました。</p><br /><p>はてなブックマークは、local.href でGETでタイトルとURLを送っていましたが</p><br /><p>データを一方的に送信するだけでよいので、iframe枠内に見えないところでPOST送信することにしました。</p><br /><p>(一番下に黒いぽちがでてますけど。。。)</p><br /><p>スクラップブックで長めの文章を送るとなるとGETではバイト数が足りなくなる場合があるからです。</p><br /><br><br /><br/><p>指定の文章の取得には、window.getSelection().getRangeAt(0) </p><br /><p>でマウスで選択したテキスト部分をPHPプログラムへ送信します。</p><br /><p>PHP側は、適当に DBに保存するなり、ファイルに書き出すなりして</p><br /><p>後で自分で確認できるように作っておけば良いかと思います。</p><br /><p>IEの場合は、window.getSelection().getRangeAt(0) の代わりに</p><br /><p>(window.document.selection.createRange())[0] を使えばできるような気がします。(試してません)</p><br /><p>自分のサイト以外でこういったJavascriptを実行させるテクニックは面白いですね。</p><br /><p>(FireFoxのアドオンとかは基本的にこれなんですけどね。。。気がつけよ。。。)</p><br /><p>Greasemonkeyとかがなぜ流行るのかようやくピント来た気がします(遅)</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-90130274589204402772014-06-25T01:57:00.009+09:002014-06-25T02:00:00.582+09:00PHPの日付の加算、減算の備忘録<br/><div class="section"><br /><br/><pre class="syntax-highlight"><br />// 現在日付から○日の取得<br /><br/>echo "1日前" . date("Y/m/d", strtotime("-1 day" ));<br />echo "1ヶ月前" . date("Y/m/d", strtotime("-1 month"));<br />echo "1年前" . date("Y/m/d", strtotime("-1 year" ));<br />echo "1週間前" . date("Y/m/d", strtotime("-1 week" ));<br /><br/><br/>// 指定日付から○日の取得<br /><br/>echo "1日前" . date("Y/m/d", strtotime("2007/12/20 -1 day" ));<br />echo "1ヶ月前" . date("Y/m/d", strtotime("2007/12/20 -1 month"));<br />echo "1年前" . date("Y/m/d", strtotime("2007/12/20 -1 year" ));<br />echo "1週間前" . date("Y/m/d", strtotime("2007/12/20 -1 week" ));<br /><br/></pre><br /><p>こういうのって、すぐに書き方を忘れてしまうので</p><br /><p>書き留めておくと便利かも。</p><br /><br><br /><br/><p>関連リンク:<a href="http://d.hatena.ne.jp/bushimichi/20091101/1257007448" target="_blank">PHPで、先月、翌月などのを扱うときの注意</a></p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-47078748656308731842014-06-25T01:57:00.008+09:002014-06-25T02:00:00.571+09:00Beep音<br/><div class="section"><br /><p>1行テキストに onkeyup onkeydown onkeypress などのイベントハンドラーを設定し</p><br /><p>リターンキーの挙動をデフォルトと変えた場合に、Beep音(ビー)がなります。</p><br /><p>FireFoxでは、出なかったのですが、IEでスピーカーをつけたときに気が付きました。</p><br /><pre class="syntax-highlight"><br /><br/><span class="synIdentifier">function</span> sampleKeydown(<span class="synStatement">event</span>)<span class="synIdentifier">{</span><br /><span class="synIdentifier">var</span> key = <span class="synStatement">event</span>.charCode || <span class="synStatement">event</span>.keyCode || 0;<br /><span class="synStatement">if</span>(key == 13)<span class="synIdentifier">{</span><br /><span class="synComment">// 何らかの処理</span><br /><span class="synStatement">return</span> <span class="synConstant">false</span>;<br /><span class="synIdentifier">}</span><br /><span class="synIdentifier">}</span><br /><br/><input type=<span class="synConstant">"text"</span> onkeydown=<span class="synConstant">"return sampleKeydown(event);"</span>><br /><br/></pre><br /><br/><p>リターンキーが押されたときに key == 13 のときに 処理後に return false ; してやれば、</p><br /><p>Beep音は出ませんでした。</p><br /><p>IEのBeep音もいろいろ種類があるけれども、Javascriptで制御できる</p><br /><p>Beep音っては、どのくらいあるんだろう。</p><br /><p>マウスクリックしても、「カチッ」音がするし、あれって制御できるもんなんだろうか。</p><br /><p>普段、あんまりスピーカーとかつけてないもんで以外に盲点でした。</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-60225791705385711792014-06-25T01:57:00.007+09:002014-06-25T02:00:00.399+09:00IE6 でロールオーバーがちらつく問題<br/><div class="section"><br /><p>CSSの background-image の position を変化させて</p><br /><p>ロールオーバーを実装したときに、画像が表示されるたびに</p><br /><p>ちらちらと画像が消えては表示される、ちらつきがでる場合があります。</p><br /><p>background-position を変更するたびに画像を再読み込みしているのが</p><br /><p>原因らしいです。また、この現象は、IE6特有で他では起こらないとのことです。</p><br /><p>対処法としては、</p><br /><p>CSSのみで対処する場合</p><br /><pre class="syntax-highlight"><br /><span class="synStatement">html</span> <span class="synIdentifier">{</span><br />filter: expression(document.execCommand(<span class="synConstant">"BackgroundImageCache"</span>, false, true));<br /><span class="synIdentifier">}</span><br /></pre><br /><br/><p>Javascriptで対処する場合</p><br /><pre class="syntax-highlight"><br /><span class="synStatement">try</span> <span class="synIdentifier">{</span><br /><span class="synStatement">document</span>.execCommand(”BackgroundImageCache”, <span class="synConstant">false</span>, <span class="synConstant">true</span>);<br /><span class="synIdentifier">}</span> <span class="synStatement">catch</span>(e) <span class="synIdentifier">{</span> <span class="synIdentifier">}</span><br /></pre><br /><br/><p>expression はもっぱら処理が遅いとのことなので</p><br /><p>Javascriptで対処するほうが良いのかな。</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-5062262410295272272014-06-25T01:57:00.006+09:002014-06-25T01:59:59.893+09:00background<br/><div class="section"><br /><p>CSSの background属性の取得について、だめだった報告。</p><br /><p>Javascriptで以下のように 単純な jQuery を利用したソースを書く。</p><br /><p>(Firefox2,IE6にて)</p><br /><pre><br /><br/><html><br /><head><br /><style type="text/css"><br /><br/>#hoge{<br />background: transparent url('hoge.gif') no-repeat 10px 10px;<br />width: 10px;<br />height: 10px;<br />}<br /><br/></style><br /></head><br /><body><br /><div id="hoge"></div><br /><input type="button" id="btn" value="background get!"><br /><br/><script src="jquery.js" type="text/javascript"></script><br /><script type="text/javascript"><br />$(function(){<br />$('#btn').click(function(){<br />alert( $('#hoge').css('background') );<br />});<br />});<br /></script><br /></body><br /></html><br /><br/></pre><br /><br/><p>上記で ボタンを押すと、アラートが表示されるが、FireFoxは空欄が表示され、IE6は、undefined が表示される。</p><br /><p>次に backgroundを 個別の属性に分けて試してみると</p><br /><p>値が取得できた属性</p><br /><br/><ul><br /><li>background-image</li><br /><li>background-repeat</li><br /><li>background-color</li><br /><li>background-attachment</li><br /><li>background-position-x(IEのみ)</li><br /><li>background-position-y(IEのみ)</li><br /></ul><br /><p>値が取得できない属性</p><br /><br/><ul><br /><li>background-position</li><br /></ul><br /><p>background-position を backgroundPosition としてみても取得はできなかった。</p><br /><p>なぜ、background-position だけ取得できないんでしょうかね?</p><br /><p>特別な意味でもあるのかな?</p><br /><p>はてなで質問してみてるけど、どうも仕様的にそうなってるみたいな雰囲気???</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-39399772156224785192014-06-25T01:57:00.005+09:002014-06-25T01:59:59.378+09:00mod_proxy mod_proxy_balancer と mod_dirを使う時の注意<br/><br><br /><br/><div class="section"><br /><p>mod_proxy を使って、バックエンドサーバーにリクエストを振り分けていたときの話です。</p><br /><pre><br /><br/>ServerName www.example.com<br /><br/><br/>ProxyPass / balancer://cluster/<br />ProxyPassReverse / balancer://cluster/<br /><br/><Proxy balancer://cluster/><br />Balancermember http://bk1.example.com loadfactor=50<br />Balancermember http://bk2.example.com loadfactor=50<br /></Proxy><br /><br/></pre><br /><br/><p>上記のように設定して、www.example.com → bk1.example.com と bk2.example.com にリクエストがそれぞれ渡されます。</p><br /><p>ここで、bk1 や、bk2 側で、mod_dir を利用したリダイレクトが起こった場合に</p><br /><p>クライアントに戻されるURLが問題になりました。</p><br /><pre><br /><br/>クライアント → http://www.example.com/test → http://bk1.example.com/text<br /><br/> ↓ mod_dir<br /><br/>クライアント ← http://bk1.example.com/test/ ← http://bk1.example.com/test/<br /><br/></pre><br /><br/><p>mod_dir は、URLがスラッシュ(/)で終わっていないときに、スラッシュをつけたURLに変換してくれます。</p><br /><p>ただし、リダイレクトのURLがどうも http:// からのフルパスで変換するみたいで</p><br /><p>バックエンドサーバーのServerNameのままクライアントにリクエストを返してしまいました。</p><br /><pre><br />ProxyPassReverse / balancer://cluster/<br /></pre><br /><br/><p>上記を設定しているのでURLの書き換えをしてくれると思ってたのですが</p><br /><p>どうも書き方が違うらしく</p><br /><pre><br />ProxyPassReverse / http://bk1.example.com/<br />ProxyPassReverse / http://bk2.example.com/<br /></pre><br /><br/><p>こう書くことで、意図したURLの書き換えをしてくれました。</p><br /><p>しかし、ProxyPassReverse / balancer://cluster/ この記述は、何をしてるんですかね?</p><br /><p>URLを書き換えてくれなければ、意味がないと思うのですが。。。</p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-4513707478155898074.post-28314601189422317362014-06-25T01:57:00.004+09:002014-06-25T01:59:58.952+09:00JQueryで連続した半角英数字を任意の場所で改行するプラグイン<br/><div class="section"><br /><p>長い半角英数字が改行されず思いのほかレイアウトが崩れることってありますよね。</p><br /><p>特に掲示板みたいなユーザに入力してもらうようなシステムの場合</p><br /><p>開発時に想定してなかった長い半角英数字なんかをいれられて、</p><br /><p>後から「おおおなんじゃこりゃぁああああ」なんてことがたまにあります。</p><br /><br><br /><br/><p>ただ、最近までレイアウトが多少崩れても「まぁいっか」くらいの気持ちでして(←だめだね)</p><br /><p>どうしても解決しなければいけないときは、textarea を強引に流用したり誤魔化してきたような。。。。とはいえ、そんなずぼらなことではいけない気もするのでjQueryのプラグインを作ってみました。</p><br /><br><br /><br/><p>IE系のCSSには、独自に拡張した <span style="font-weight:bold;">word-break: break-all;</span> を使えばすぐに解決できるのですがそれ以外のブラウザがまだ対応してないみたいでここがちょっとネックですね。</p><br /><p>CSS3くらいには標準になるのかな?</p><br /><br><br /><br/><p>いろいろ、調べてみると<span style="font-weight:bold;"><span style="color:#006633;">任意改行文字 8203</span></span>を使うのがなんとなく意図した内容に近いみたいです。</p><br /><p>各テキストの1文字ずつにこれを挟んでようやく解決。(しかし、テキストの量が多くなると処理に時間がかかりすぎるかも)</p><br /><br><br /><br/><p>(追記)2009/12/09 version 0.2 以下の参照ページでご指摘いただいた修正をしました。</p><br /><p><a href="http://gecko.hp2.jp/2009/12/09/%E3%80%90jquery%E3%80%91word-breakbreak-all%E3%82%92ie%E4%BB%A5%E5%A4%96%E3%81%A7%E3%82%82%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8Bjquery%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3/" target="_blank">【jQuery】word-break:break-all;をie以外でも実装するjQueryプラグイン</a></p><br /><p>げことじさんありがとうございました。</p><br /><br><br /><br/><p><a href="http://www.jextend.com/sample/jquery.wb.js" target="_blank">jquery.wb.js - 0.2</a></p><br /><pre><br />jQuery(function($){<br /><br/>$.wb = {<br /><br/>version: 0.2<br /><br/>,sep: String.fromCharCode(8203)<br /><br/>,remake: function(elm){<br />var h = elm.contents();<br />elm.html('');<br />$(h).each(function(){<br />if(this.nodeType == 3){<br />elm.append($.trim(this.textContent.split('').join($.wb.sep)));<br />}else if(this.textContent == ''){<br />elm.append(this);<br />}else{<br />elm.append($.wb.remake($(this)));<br />}<br />});<br />return elm;<br />}<br />}<br /><br/>$.fn.wb = function(){<br />if(/msie/i.test(navigator.userAgent)){<br />$(this).css('word-break', 'break-all');<br />}else{<br />$.wb.sep = (/firefox\/2/i.test(navigator.userAgent)) ? '<wbr />' : String.fromCharCode(8203);<br />$(this).each(function(){ $.wb.remake($(this));});<br />}<br /><br/>return $(this);<br />}<br />});<br /></pre><br /><br/><p><a href="http://www.jextend.com/sample/wb.html" target="_blank">レイアウトの調整デモ</a></p><br /><br><br /><br/><p>参考:<a href="http://blog.webcreativepark.net/2008/09/14-211341.html" target="_blank">FirefoxとOperaでword-break:break-allを実現する「wordBreak.js」</a></p><br /><br><br /><br/><p>しかし、この任意改行文字のような特殊文字って結構あるんですね。</p><br /><p>ぜんぜん知りませんでした。</p><br /><p><a href="http://d.hatena.ne.jp/seuzo/20090701/1246376206#" target="_blank">特殊文字のコード一覧</a></p><br /><br><br /><br/><br><br /><br/><p><span style="color:#006633;">※作ったもののJavascriptがONじゃないと使えないですねぇ。。。</span></p><br /></div><br /><br/><br/>Unknownnoreply@blogger.com0