やったこと

webサービスを作るときに考えたことを垂れ流します

javascriptは参照渡しではなくて参照の値渡しをしてる

また基本的なとこで引っかかってしまった。。

以下のコードは、[1,2,3]という配列を[4,5,6]に置き換えようとして書いたんだけど、これでは配列は置き換わらない。

var test_arr = [1,2,3];

test_func(test_arr);
console.log(test_arr);

//与えられた配列を置き換える関数(のつもり)
function test_func(arr){
  var ret_arr = [4,5,6];
  arr = ret_arr;
};

なぜかというと「test_func」の引数に与えられた配列は、「参照渡し」ではなくて「参照の値渡し」だから。

「test_func」の中で、arrの参照先の値をいろいろ操作することは可能だけども、arrの参照先そのものを変えることはできないっぽい。

window.heightで正しい値が取得できない

jqueryで下記のようにブラウザの縦幅(開いてるウィンドウの幅)を取得しようとしたんだけど、なぜかドキュメント全体の縦幅が取得されてしまう現象が起きた。

var height = $(window).height();
console.log(height);


色々調べてみたら、htmlの一番上のドキュメントタイプの記述が抜けてたのが原因みたいだった。

<!DOCTYPE html>

色々いじってるうちに消えちゃったのかしら・・やだもう・・。

javascriptで日時を取得する処理

掲題の通りです。お好みのフォーマットにするのは意外とめんどくさい・・。

//日時を生成して返却する関数
//「2015-04-18 18:01:07」みたいなフォーマットで返却
function get_date_str(){
  var now = new Date();
  var year = now.getFullYear();
  var month = now.getMonth() + 1;
  var day = now.getDate();
  var hour = now.getHours();
  var min = now.getMinutes();
  var sec = now.getSeconds();

  month = ('0' + month).slice(-2);
  day = ('0' + day).slice(-2);
  hour = ('0' + hour).slice(-2);
  min = ('0' + min).slice(-2);
  sec = ('0' + sec).slice(-2);

  var str =  year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec;
  return str;
}

var now = get_date_str();
console.log(now);

concatとpush.applyの挙動の違い

javascriptで配列を連結するときによく使う「concat」と「push.apply」。

この2つは微妙に挙動が違うので注意。

例えば以下のコードを実行すると「test1」の値はそのままで「test2」のみに連結された結果が格納される。

var test1 = new Array("1", "2");
var test2 = test1;
var add = new Array("3", "4");

//concatで連結
test2 = test2.concat(add);

console.log(test1); //("1","2")
console.log(test2); //("1","2","3","4")

concatは実行されたときに新たな領域を生成してそこに値をコピーし、その新たな領域を返却する、という動作をするからだ。


以下のようにpush.applyを使ったときは「test1」にも「test2」にも連結された結果が格納される。

var test1 = new Array("1", "2");
var test2 = test1;
var add = new Array("3", "4");

//push.applyで連結
Array.prototype.push.apply(test2, add);

console.log(test1); //("1","2","3","4")
console.log(test2); //("1","2","3","4")

test2はtest1の領域をポイントしていて、test2に対する操作はtest1への操作を意味するからだ。


C言語とかをやってる人だったらポインタの概念を知ってるので、上の挙動はよく理解できると思う。

javascriptを修正したのにブラウザに反映されない

javascriptを修正したのにブラウザ側のキャッシュが効いていて、修正が反映されないことがある。

こういうときはブラウザで「スーパーリロード」を実行すると、キャッシュが無効になって、全部一から読み込んでくれるらしい。

Chromeでは以下の方法でスーパーリロードができる。

・「Shitキー」+「更新ボタン」を押す
・「Ctrlキー」+「更新ボタン」を押す
・「Shitキー」+「F5キー」を押す
・「Ctrlキー」+「F5キー」を押す

cakephpでランダムにデータが取得できない!

cakephpでランダムにデータが取得できなくてはまった。

以下のようにするとランダムにデータが取得できると聞いたんだけど、いくらやっても「General error: 1 no such function: rand」とエラーが出て全然データが取得できない・・。

//ランダムに3件データを取得
$rnd = $this->Model->find('all', array('order'=>'rand()','limit'=>3));


いろいろ調べたら、どうも「rand()」というのはmysqlの関数らしくて、sqliteを使う場合は「random()」を使わなくてはいけないらしい。

すなわちsqliteでは下記のようなコードが正しい。

//SQliteの場合はこう!
$rnd = $this->Model->find('all', array('order'=>'random()','limit'=>3));


このことが全然ブログに書いてなくて2~3時間くらいはまってしまった・・ちゃんと書いといてよもう・・。

「ギャルはオタクに優しい」のはなんでなのか

■「ギャルはオタクに優しい」説

2chとかでよくネタにされる話で「ギャルはオタクに優しい」というものがあります。

普通の女子高生は、オタッキーな方々をキモがって全く相手にしてくれなかったりするけども、ギャルは意外とフレンドリーに接してくれるというアレです。

この違いは一体に何に因るのかと考えたところ、「異質拒否傾向」という性質が関係してそうだと思いました。

「異質拒否傾向」というのはその名の通り、集団から異質な人間を拒否して退けようとする傾向のことです。毛色の違う人間を異端分子として排斥して、集団を同質の人間だけで固めることで、連帯感とか親密感とかを高めようとする傾向です。この異質拒否傾向は、とくに思春期あたりの女子グループの中で顕著に見られるそうです。

女子高生なんかはモロ異質拒否傾向が高い環境で過ごしている人々と言えそうですね。オタクの方々は女子高生から見ると異質な忌避すべき存在に見えるので、距離を置かれてしまうのではないでしょうか。

■異質拒否傾向の背景に見えるもの

異質拒否傾向が高い集団の背景には、孤立に対する不安があると思われます。

集団を同質・均一な人間で固めることで、より凝集性の高いクローズドな関係を築いて孤立を避けようとしてるのだと思います。人間には自分と類似した相手に対して親近感を覚えて仲間になろうとする性質があるそうです。突出した個性を排除して皆で同じような振る舞いをすることが、互いに仲間であることの印として機能しているのではないでしょうか。

「異質拒否傾向」の裏には必ず「被異質視不安」(異質に見られることへの不安)があるので、集団の中でできるだけ目立たないように、没個性的に振舞う必要があります。そうしないとみんなから仲間はずれにされてしまうから。

こういう同質性への圧力を「ピアプレッシャー」というらしいです。みんなで同じかっこをする量産型女子大生が増えてるのも、こういうピリピリとした人間関係の圧力が背景があるのかもしれませんね。

■ギャルは異質拒否傾向が低い

ギャルはこの異質拒否傾向が小さいために、オタッキーな方々にもオープンに接する性質があると思われます。おそらくギャルの仲間関係は、普通の女子高生たちとは少し違った形をしているのではないでしょうか。

ギャルの仲間関係は、一般の女子高生に見られる「少人数・内閉的」な形ではなくて、「多人数・開放的」な形を指向してると思われます。

少人数の(同質な)友達との仲を深めることよりも、多人数の(多様な)人や集団と繋がることで、自分が孤独に陥ることを回避しようとする方略です。この形は、もしある集団から排斥されても別の集団に引越しすることがたやすくできるので、一種のリスクヘッジになっているとも考えられます。

多数の集団と繋がる形ならば、異質な人々との交流があった方がより異なる価値に触れられる機会も多くなるので、異質な者への門戸を開く性質を持つことも納得できる気がします。ギャルはオタクと友達になることも「変な奴と友達になってラッキー」くらいに思ってるのかもしれません。

なぜギャルがこのような開かれた仲間関係を持つのかと考えてみたのですが、たぶん根底に田舎的・マイルドヤンキー的なマインドがあるからなのではないかと思いました。

ヤンキーの世界は「喧嘩上等」「目立ったもの勝ち」「仲間を大事に」みたいな価値観があると思うので、一般の女子高生のような個性が抑圧されたウェットな人間関係はなんだか窮屈なのかもしれません。それよりももっと自分の個性をバンバン出して、自己主張をして、それでも互いに認め合うような関係を希求してるのかもしれません。

これは想像ですが、おそらくギャルのお父さんお母さんには元ヤンの方が多いのではないでしょうか。幼い頃にお父さんお母さんや、そのお友達のオラオラした方々と接することで、ギャルの中にこのヤンキーマインドが継承された可能性があります。

なんだか普通の女子高生よりも、こういう友達関係の方が健康的で良い気もするのですがどうでしょうかね。やっぱり一長一短はあるのでしょうか。