JSでTableの列を消したり表示したりする

久しぶりに書こうかなと。

 

仕事でwebベースの業務系の開発とかしています。

テーブルViewは一覧表示の基本なので列を見せたり消したりするのは割と需要あるっていうかできたらいいよなぁと思いサンプルを作って見ました。

 

js側

$(document).on("click", ".viewRow", function(){
	var id = "#"+$(this).data("id");
	var flag = $(this).prop('checked');
	var index = $("#target thead tr th").index($(id));
	$($("#target")[0].rows).each(function(i){
		if(flag){
			$($(this)[0].cells[index]).hide();
		}else{
			$($(this)[0].cells[index]).show();
		}
		
	});
});

 

html側はtbodyとかをとりあえず表示しておきました。

<label>
	<input type="checkbox" class="viewRow" data-id="target_row_1" selected>
	列1
</label>
<label>
	<input type="checkbox" class="viewRow" data-id="target_row_2" selected>
	列2
</label>
<label>
	<input type="checkbox" class="viewRow" data-id="target_row_3" selected>
	列3
</label>
<table id="target">
	<thead>
		<tr>
			<th id="target_row_1">列1</th>
			<th id="target_row_2">列2</th>
			<th id="target_row_3">列3</th>
		</tr>
	<thead>
	<tbody>
		<tr>
			<td>1-1</td>
			<td>1-2</td>
			<td>1-3</td>
		</tr>
		<tr>
			<td>2-1</td>
			<td>2-2</td>
			<td>2-3</td>
		</tr>
	<tbody>
</table>

簡単ですがこんな感じです。 うまいことidをDBのカラム名とかにしてツールとか作りたいですね。

Searcherとかtable_sorterとかと組み合わせて便利にしたいなぁ

うまいことhtml要素とかをブログに貼るのが一番めんどくさかったです。もし見た人がいい記法知っていたらこっそり教えてください

尊敬しているけど軽蔑している。

野沢尚さんの「ふたたびの恋」の表題作で出てきた言葉です。

 

最近尊敬できる人に出会いましたか?

 

尊敬できるという感覚を抱くのは人それぞれだと思います。

尊敬できるという感覚はどういう場面で起こるのでしょう。

 

素晴らしい小説を読んだ時

ゲームがうまい人に出会った時

効率よく仕事している人に出会った時

人をまとめてトップに立てる人間に出会った時

 

自分ができないことをやれる人。

僕が尊敬できるなと感じるのはそのような人に会った時です。程度に差はありますがすぐ尊敬してしまいます。ちょろいです。

 

最近ようやく社会に出ることになったので、新しく人に出会う機会が増えました。

少人数の会社です。僕より経験してきた人達がより近くに感じられます。

自分ができないことをやれるという意味ではみなさん尊敬できます。

 

しかし、人と付き合っていくともちろんその他の面もたくさん見れてきます。

尊敬できる人の軽蔑する面を見つけてしまうこともあるかもしれません。

 

軽蔑するということは人に何かを求めているという裏返しだと思います。

理想像を裏切られた。この人はこういう風にいてほしい。

そんな気持ちが軽蔑という感情に変わってしまいます。

 

軽蔑してしまった時、その人にどう向き合うのかというのが大事。

当たり前ですが、最近思います。

軽蔑するから付き合わないというのも一つです。

でも、尊敬できるという気持ちを持ち続けて付き合い続けていければいいですね。

 

 

ふたたびの恋 (文春文庫)

ふたたびの恋 (文春文庫)

 

 

 

 

 

cakephpで単一テーブルで階層化構造を作る

初めてのcakephp

概要

単一テーブルで階層化構造を作るときの方法です。

作る際には記述に主に二つの方法があるそうです。

一つ目はコントローラで"$this->ModelName->find('threaded');"と呼び出す方法。

二つ目にはモデルで"public $actsAs = array('Tree');"と指定して使用する方法です。

 

この二つの主な違いはテーブルの定義にあります。前者はテーブルにparent_idを定義するだけで動くのに対し、後者ではparent_idに加えてlft,rghtの二つのパラメータを定義してやる必要があります。後者ではデータごとの包含関係まで含めたモデル化なのでいろいろやれることが増えそうです。

しかし、lftとrghtを計算するのがめんどくさい(楽なアルゴリズム・プログラムあったら教えて欲しい)ので前者の"threaded"を用いて実装しました。

テーブル

"threaded"を用いた場合、モデルには特に何も書く必要はありません。

テーブル定義はこんな感じ

    create table tests(
	id int not null auto_increment primary key,
	test_id int,
	name varchar(50),
	parent_id int default 0,
	created datetime default null,
	modified datetime default null
);

ついでにテストデータ

  insert into tests(test_id,name,parent_id,created,modified) values
    (1000000,"fassion",null,now(),now()),
    (1010000,"mens",1,now(),now()),
    (1020000,"ladies",1,now(),now()),
    (2000000,"bag,shose",null,now(),now()),
    (2010000,"bag",4,now(),now())
   ;

既存のidの他に個別IDを降りたかったので"test_id"を定義してます。

コントローラ

コントローラではたったの2行でviewに送れちゃいます。

    $tree_test = $this->Test->find('threaded');
	$this->set("tests", $tree_test);

ビュー

簡単にprint_rをすると

    <?php print_r($yasu); ?>

↓結果↓

  Array ( [0] => Array 
    ( [Test] => Array 
      ( [id] => 1 
        [category_id] => 1000000 
        [name] => fassion 
        [parent_id] => 
        [created] => 2015-03-10 17:45:19 
        [modified] => 2015-03-10 17:45:19 
      ) 
      [children] => Array 
           ( [0] => Array 
                ( [Test] => Array 
                    ( [id] => 2 
                      [category_id] => 1010000 
                      [name] => mens 
                      [parent_id] => 1 
                      [created] => 2015-03-10 17:45:19 
                      [modified] => 2015-03-10 17:45:19 
                    ) 
                  [children] => Array ( ) 
                ) 
             [1] => Array 
                ( [Test] => Array 
                    ( [id] => 3 
                      [category_id] => 1020000 
                      [name] => ladies 
                      [parent_id] => 1 
                      [created] => 2015-03-10 17:45:19 
                      [modified] => 2015-03-10 17:45:19 
                    ) 
                  [children] => Array ( ) 
                ) 
            ) 
        ) 
            [1] => Array 
    ( [Test] => Array 
      ( [id] => 4 
        [category_id] => 2000000 
        [name] => bag,shose 
        [parent_id] => 
        [created] => 2015-03-10 17:45:19 
        [modified] => 2015-03-10 17:45:19 
      ) 
      [children] => Array 
            ( [0] => Array 
              ( [Test] => Array 
                 ( 
                   [id] => 5 
                   [category_id] => 2010000 
                   [name] => bag 
                   [parent_id] => 4 
                   [created] => 2015-03-10 17:45:19 
                   [modified] => 2015-03-10 17:45:19 
                   )
                [children] => Array ( )
            ) 
        )
      ) 
    )

(あぁ、改行めんど)

な感じで受け取れます。

foreach回したりして存分に楽しんでください。

参考等々

http://book.cakephp.org/1.3/ja/The-Manual/Core-Behaviors/Tree.html http://book.cakephp.org/2.0/ja/models/retrieving-your-data.html 2つ目の方を勉強したいなら:http://www.geocities.jp/mickindex/database/db_tree_ns.html

初めてのUnity

最近はUnityを触り始めました。

 

なんとScriptからGameObjectを取得するとかいう初歩的なところでつまづきましたので。。。めもめも

 

やりたかったのは、ボタンを押すとGUITextを取得して中のTextをボタンの値に更新するということ。

押したボタンのテキストを取得する

ボタンの取得

    Button button = this.GetComponent <Button>();

(<button>を小文字のままにするとになってまう)

Button UIの中のテキストを取得する

GameObjectであるButtonの子要素を取得するためにはtransformにアクセスするらしい。その中のtext Componentにアクセスするので

    GameObject buttonNumber = button.transform.FindChild ("Text").gameObject;
    string PushButton = buttonNumber.GetComponent ().text;
    //Debug.Log (PushButton);

みたいな風に書くらしい。

GUITextの更新

GameObjectの取得

Hierarchyの中で名付けられている名前で取得できる

    NumbersCan = GameObject.Find("Numbers");

NumbersCanはGUITextなのでこの中のText Componentにアクセスする必要がある。これを更新するには

    numbers = NumbersCan.GetComponent();
	numbers.text = numbers.text + PushButton;

こんな感じ。

 

 

 

GUITextとText Componentの違いがなかなか理解できなかった。

 

スンドゥブキムチ!

気分はズン. ズンズン. ズンドゥブ. キムチ!

スンドゥブじゃなくてズンドゥブやと思ってました。勝手にきよしのズンドコ節に乗せて歌ってた。

 

 

今日のお昼は赤坂の光州家というところで純豆腐チゲ鍋を食べました。定食ですね。みんなでつつくんじゃありません。

 

なんか川崎から移転してきたばかりらしく、店長が味を聞いてきたり、ケジャンというワタリガニのキムチ漬けみたいのを出してもらいました。

ケジャンめっちゃうまかった。

 

お昼の日替わりサービスメニューだったのか純豆腐チゲ鍋は780円とリーズナブル。この値段なら毎日来てもいいくらいコスパがいいと思いました。味も辛すぎず絶妙な辛さ加減。素晴らしい。

ご飯も食べ放題(たぶん)。おかずもナムルなど4品取り放題(おそらく)。いいお店だ。

 

リピーターになっちゃいますね。

 


ぐるなび - 韓国家庭料理・炭火焼肉 光州家(赤坂/韓国料理)

 

また行こ。

 

 

MYSQLで"Library not loaded: /usr/local/lib/libmysqlclient.18.dylib"が出た時

メモメモ

MYSQLでrails4を動かそうとしてはまってしまった。MAMPMYSQL動かしてたからかな?よくわからない。

参考を二つ合わせた感じになったのでメモ。

 

"Library not loaded: /usr/local/lib/libmysqlclient.18.dylib (LoadError)"

なエラーが出ていたのでググってみるとリンクを貼るといいらしい。

 

①/usr/local/mysql-5.6.13-osx10.7-x86_64/lib/libmysqlclient.18.dylib

にファイルがあるか探す

 

②sudo ln -s /usr/local/mysql-5.6.13-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

リンク貼る

 

で動くようになった。

 

 

参考

rails + MySQL on OSX: Library not loaded: libmysqlclient.18.dylib - Stack Overflow

MySQLを使う際に「Library not loaded: libmysqlclient.18.dylib」が出た場合の解決方法

 

RAILSのVIEWでJSONをきれいに見せる。[めもめも]

どうでもいいけど。情弱だったのでメモ。

 

JSONをpretty_generateしてviewに表示する時はpreタグで囲む。

 


controller

  json_data = [{.....}]
  @contents = JSON.pretty_generate(json_data)

view

 %pre
  = @contents