2012/08/28

スマートフォンで背景を全画面に適応する


最近は背景を全画面に敷いたサイトが増えた気がする。
スマートフォン版のサイトでも、同じように背景画像を全画面に設定シたい場合がある。
そんな時はcssでbackground-sizeを指定する。
background-size: ***

指定は縦横、それぞれpxや%で指定できる以外に、containt, coverという値もある。
containは範囲内に縦横収まるように、拡大縮小する。
coverは範囲を全部覆う様に拡大縮小する

もちろん、スマートフォン以外にも使えるけど、対応するブラウザがまだ限定されてるので、今のとこスマートフォン向けにしか使えないかなという感じ

参考:背景画像のサイズを指定する

2012/08/08

[jmeter] リストを1つずつ処理する


あるサイト内にある数百のページにjmeterでアクセスする処理をした
ページ内の複数のリンク先にアクセスするなんてこともできる

URLのリストを1行に1つずつテキストファイルに記述して、サーバーにアップ
そのファイルに「HTTPリクエスト」でアクセス
「後処理」->「正規表現抽出」を設定

-- 設定 ------------
参照名:VALUE(ここは任意の変数名)
正規表現:([^\n]+)
テンプレート:$1$
一致番号(0から乱数):-1
--------------

「一致番号(0から乱数)」に負の値を入れると正規表現で該当した複数の値を扱えるらしい。

次にForEachコントローラを追加
-- 設定 --------
Input変数名接頭辞:VALUE(上で決めた任意の変数名)
Output変数名:URL(コレも任意の変数名。上のものとはかぶらないように)
--------------

ForEachコントローラの中に「HTTPリクエスト」を追加
「パス」の値を「${Output変数名}」に設定
これで最初にテキストファイルに保存したURLに1行ずつアクセスしてくれる

ものすごいスピードで次々アクセスするのでサーバーの負荷になりそう。
そういう時はForEachコントローラの中に「定数タイマ」を追加すると間隔をあけて処理してくれる

参考:
JMeter : 正規表現とForEachコントローラ
[開発環境]JMeterの正規表現の個人的な謎

2012/08/07

[JavaScript] setTimeoutで配列の中身を1個ずつ処理していくやつ

何か間を置きながらループを処理したい時なんかに。
即時関数をsetTimeoutで間を置いて、arguments.calleeで実行中の関数をもっかい動かす。
配列は頭から1個ずつ取っていって、配列が空っぽになったら終わり

-- add [2102/9/13]
JavaScript 「再」入門」によると、arguments.calleeは非推奨になったらしい。
なんで、名前を付けて「名前付き無名関数」として使うみたい。
  1. //名前をつけてる  
  2. (function loopFunc(arg){  
  3.    //なんか処理して  
  4.       
  5.     //ここ  
  6.     setTimeout(function(){  
  7.   loopFunc(arg);  
  8.  }, 200);  
  9. })(val);  


参考:arguments.calleeとsetTimeoutを使ってJavaScriptのリトライ処理を簡単に書く方法

2012/08/06

[MooTools] delegateしているイベントをfireEventで呼び出したい

fireEventってのはイベントを実行させる関数。ある要素に登録されたイベントを他の要素からも使いたいって時なんかに使う
  1. $('elem').addEvent('click'function(){  
  2.  //イベント処理  
  3. })  
  4. $('elem2').addEvent('click'function(){  
  5.  //#elemのclickイベントが実行される  
  6.  $('elem').fireEvent('click');  
  7. })  

deletegateしている場合
  1. //delegateでイベント登録  
  2. $('elem').addEvent('click:relay(.child)'function(event, target){  
  3.  //イベント処理  
  4.  //targetに何かしたりして  
  5. });  
  6.   
  7. $('elem2').addEvent('click'function(event){  
  8.  //targetになる要素を取得する  
  9.  var target =  $('elem').getElement('.child'); //elem要素の中の.child要素を取得する  
  10.  //2番目の引数でイベント登録時の引数、event, targetを渡す  
  11.  $('elem').fireEvent('click:relay(.child)', [event, target]);  
  12. });  

2012/08/03

[MooTools] storeで保存した値はどこまで取得できるのん?

MooToolsのstoreはjQueryでいうdataみたいなやつで、好きな名前で何かを格納できる。
んで、それは元の要素に格納されてるのか、それとも今回使っている変数にだけ格納かわからなかったので調べてみた。

結果は…格納出来てた 良かった良かった オブジェクトを格納した変数は参照だから当たり前なのか?

2012/08/01

[JavaScript] IEではscriptのonloadイベントが起きない


JavaScriptの遅延ロードの方法でJavaScripでscriptエレメントを作成し、そのスクリプトのonloadイベントで、そのJSファイルを読み込んだ後にしたい処理を動かす方法がある
  1. var script = document.createElement('script');  
  2. script.src = 'test.js';  
  3. document.body.appendChild(script);  
  4. script.onload = function(){  
  5.  //jsファイルを読み込んだ後にやりたい処理  
  6. }  
コイツがIEでは動かない…。
「続・ハイパフォーマンスWebサイト」にやり方書いてあったような…
調べてわかったら、やり方書いとこう。