タブレットスタンドを購入してみました

Google Mexus7 でタブレットを操作するときに
タブレットスタンドがあるとずっと持っていなくてもよいため
購入しました

私の場合、自炊した参考書をAdobe Reader でみるのですが
コードを書いたりするときに毎回手荷物のは面倒ですし
FXなどをするときにも手で持たなければ
他の作業もできます

今回購入したのは、机やサイドテーブルに取り付けるタイプです

これなら、落下するということもなさそうなので安心して使うことができます

emmet-vim で階層表記

emmet-vim で階層表記

#04 階層的な要素を表現してみよう
http://dotinstall.com/lessons/basic_emmet/25104
を参考に階層表記を学習

> は子要素を示す
ul>li
なら

<ul>
        <li></li>
</ul>

となる
ちなみに、emmet-vim では
ul
だけでも同じになる

+は隣接要素
div+div+div>p

Ctrl+y の後 , とすれば

<div></div>
<div></div>
<div>
        <p></p>
</div>

となる
+を使うことで
div div div と3つ並ぶことになる

^ は階層を1つ上に上がる
例えば ul>li の階層の上に div にしたいのなら
ul>li^divとする

これで Ctrl +y の後 , とすれば

<ul>
        <li></li>
</ul>
<div></div>

となる
複雑な階層のもの、例えばjQuery Mobile などの
ようなものを作るときには使えると思う

emmet-vim での id と class

emmet-vim での id と class

#03 idとclassを使ってみよう
http://dotinstall.com/lessons/basic_emmet/25103
を参考に id と class の付け方
そして要素を省略したときの動作について学習

基本はCSSと同じ

# が id=””
. が class=””
になる

<div id="main" >

なら
div#main
と入力してESC を押して Ctrl + y の後に , で

<div id="main"></div>

ができる

span.blueitem

ESC の後に Ctrl + y を押して , とすれば

<span class="blueitem"></span>

となる

また、複数の class=”” を設定することも可能
div#main.blueitem.reditem
として
Ctrl + y の後 , で

<div id="main" class="blueitem reditem"></div>

となる

このメリットは、スペルミスを起こしにくいこと

また要素名の省略も可能

#main
なら
Ctrl +y の後 , で

<div id="main"></div>

となり

.rd とすれば
Ctrl + y の後 , で

<div class="rd"></div>

というように自動で div タグが割り当てられる

また、この自動判別は ul の中だと
自動的に li にしてくれるらしいが
emmet-vim だと div になった

なにか他の方法もあるかもしれないけど
とりあえず保留

Emmet の基本と注意点

Emmet の基本と注意点

#02 まずは基本をマスターしよう
http://dotinstall.com/lessons/basic_emmet/25102
を参考に emmet の使い方を学習

基本的にショートカットキーはエディタにより異なるため
https://github.com/mattn/emmet-vim

Quick Tutorial

emmet-vimの使い方
http://motw.mods.jp/Vim/emmet-vim.html
を参考にしながら学習

基本としては
タグ名を書いて、展開キーをおすとタグができる

emmet-vim の展開キーは
Ctrl + y を押してから , をおす
になる

なので書き込みモードで
div
と入力したら
ESC キーを押して
それから
Ctrl+y を押して , をおすと
div

となる

タグ変換一覧には
HTMLなら
https://code.google.com/p/zen-coding/wiki/ZenHTMLElementsEn

CSSなら
https://code.google.com/p/zen-coding/wiki/ZenCSSPropertiesEn
が参考になる

>
は階層を作り

+
は順番に記述

*はその後に指定した数だけ繰り返す
*3 なら3つ作成

^は階層を抜けるときに使う

()は数学の展開と同じ要領

#はid=”” .はclass=”” となりCSSをやっていると理解しやすい

$は、そのあとに* をつけて連番をふる
list$*3 なら
list1
list2
list3
となる

ちなみに、$$$*3 の場合だと
list001
list002
list003
というように
前につけ$の数だけ0がつく

ちょっとわかりにくい違いだったのが
{}で
これはタグの中に書くもの

p>{Hello}+a{world}+{!!!}
だと

<p></p>

の中に全部になるけど

p{Hello}+a{world}+{!!!}
だと

<p>Hello</p>

というように、最初に指定した
{} の中身だけ格納される
ちょっとした違いだけど注意

あと、

<a href=""></a>

みたいに入力する場所を探すときには
Ctrl+y を押してからnをおすと
=”” へ移動できるので便利

ubuntu へ Emmet-vim のインストール

ubuntu へ Emmet-vim のインストール

dotinstall で Emmetについてやっていたけど
vim で行ってみたいので
Emmet-vim を ubuntu に入れることにしました

emmet-vim ubuntu で検索して
https://github.com/mattn/emmet-vim
から
Download ZIP をクリックして
ファイルをダウンロード

次に端末を開いて
cd ダウンロード/
unzip emmet-vim-master.zip
でファイルを解凍

これで
emmet-vim-master/
が作成されます

そして
cp -rp emmet-vim-master/autoload/ ~/.vim/
cp -rp emmet-vim-master/plugin ~/.vim/
で必要なファイルをコピー

これで、emmet-vim plugin が使えるようになります

使い方に関しては
ubuntu13.04をインストールしUnityディスクトップからGnomeディスクトップへチェンジしたりした設定のまとめ+VimにZen-Coding(emmet-vim)を加える
http://edeito.seesaa.net/article/375920016.html
を参考にさせていただきました

まず試しに
hello.html を作成

そして
入力モードで最初に
html5
と入力し、ESC キーをおして
Ctrl + y を押して , を押してから Enter
これで

<!DOCTYPE html>
<html lang="en">
<head>
        <meta charset="UTF-8">
        <title></title>
</head>
<body>
        
</body>
</html>

が作成されます

次に
h1#header.nav>ul>li*5>a
と入力してから
ESC キーを押して Ctrl +y を押してから
, を押して Enter
これで

        <h1 id="header" class="na">
                <ul>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                        <li><a href=""></a></li>
                </ul>
        </h1>

が作成されます

サーバーで編集するときには vim 操作が多いため
これを活用していこうと思います

Emmet について

Emmet について

Haml がうまく動作しないので
先に Emmet について学習

まず、
#01 Emmetとはなにか?
http://dotinstall.com/lessons/basic_emmet/25101
を参考に
Emmet についての概要、必要な知識などを学習

まず、概要
Emmet はエディタ用のプラグインのことで
かつては
Zen-coding と呼ばれていたプロジェクト
これは、HTML、CSSを効率的に書くことができる

公式サイトは
http://emmet.io/

対応しているエディタについては
http://emmet.io/download/
を参考に調べることができる

ドキュメントでよく見るものとしては
cheat-sheet でこれは
http://docs.emmet.io/cheat-sheet/
を参考にする

これによりできることは簡単にコードをかけること
Sbulime Text の場合が動画で紹介されている
!を押して Ctrl + e で簡単にベースとなるHTMLのソースが書けれる

必要な知識
HTML
CSS
となる

動画だと Sublime Text だけど
私の場合はいろいろと vim つかうことが多いので
vim のものを探してみます

モバイルバッテリーの購入

外でスマートフォンを使っていると
電池の消費が激しいため
モバイルバッテリーを購入

アプリの使用用途はPDFファイルの閲覧が多いため
どうしても消費が大きいため
急速充電可能なものを選択

今回購入したのは

充電する対象のものは
HTC J One
ipod touch
イー・モバイルのモバイルルーター

いろいろと調べてみたけど
500回程度までが限界のようなので
価格と要領、そして重量で今回のバッテリーを選択

また、バッテリーそのものの充電時間もみてみたけど
これは7時間程度

ほかのものも見たけど充電に12時間かかるのもあり
さすがにそれは除外

出先に持ち運ぶことが多く、泊まり先で充電することも考えると
あまり長時間の充電は考え物

当面は、このバッテリーを使う予定

Todo チェック情報のDB反映

Todo チェック情報のDB反映

#11 チェック機能を実装してみよう (2)
http://dotinstall.com/lessons/todo_app_php_v2/9311
を元に
チェック情報をDBに反映させる

まず、どの要素なのか特定するために id を取得したいので

var id =$(this).parent().data('id');

現在の要素は

<input type="checkbox" class="checktask" <?php if($task['type']=="done"){
 echo "checked"; }?>>

なので
この input の親要素、つまり1つ↑の要素なので

<li id="task_<?php echo h($task['id']); ?>" data-id="<?php echo h($task['id']); ?>">

ということになり li 要素の id となる

次にチェックボックスの状態を取得したいので

var title = $(this).next();

next() は、現在の要素の次の要素となるので
現在の input の次の

<span class="<?php echo h($task['type']); ?>"><?php echo h($task['title']); ?></span>

を指す

これで、
var title へ
notyet
done
delete
のどれかの状態が格納されることになる

そして、次に Ajax 処理になる

        $>post('_ajax_check_task.php',{id:id},function(rs){
        
        });

実際の処理をするのは
_ajax_check_task.php

渡すのは id
成功したときの処理は

function(rs){
}

の中に書く

まず、成功したときの処理を記述

	if(title.hasClass('done')){
                title.removeClass('done');
          }else{
                title.addClass('done');
          }

これは
.removeClass() で class=”done” を消して
.addClass() で class=”done” をつけている

こうすることで
チェックボックスがついているなら
class=”done” になり
ついていないなら、このクラスがついていないことになる

removeClass() については
http://semooh.jp/jquery/api/attributes/removeClass/class/

addClass() については
http://semooh.jp/jquery/api/attributes/addClass/class/
のリファレンスを参考にする

ここまでできたら
_ajax_check_task.php
を作成する

違いは sql の内容なので
cp _ajax_delete_task.php _ajax_check_task.php
でファイルをコピーして編集する

$sql ="update tasks set type = 'delete',modified = now() where id = :id";

の部分を
$sql =”update tasks set type = if(type=’done’, ‘notyet’, ‘done’) ,modified = now() where id = :id”;
とする

mysql では if 文による分岐ができるため
type=’done’ なら
notyet にして
そうでないのなら
done にするという判定処理ができる

その部分が

if(type='done', 'notyet', 'done') 

使い慣れた言語で書き換えてみると

if(type=='done'){
  type="notyet";
}else {
  type="done";
}

とおなじ意味になる

これは三項演算子をやったことがあると
イメージしやすいかもしれない

ここまでできたら
chrome で検証

チェックボックスのチェックを入れたり消したりして
無事に反映されれば成功

もし動作しないのなら
Ctrl + shift +i
で developer tools を起動して
console でエラーがでていないか確認

ToDo チェック機能の実装

ToDo チェック機能の実装

#10 チェック機能を実装してみよう (1)
http://dotinstall.com/lessons/todo_app_php_v2/9310
を元にチェック機能を実装する

チェックボタンをつけるので、
index.php へチェックボックスを追加する

<li id="task_<?php echo h($task['id']); ?>" data-id="<?php echo h($task['id']); ?>">

の下に
チェックボックスを追加するため

<input type="checkbox" class="checktask" <?php if($task['type']=="done"){
 echo "checked"; }?>>

を追加する

intput type=”checkbox”
でチェックボックスを指定

if($task['type']=="done"

は、フラグが done つまり実行済みになっているなら

echo "checked";

でチェックボックスへチェックを入れている

また、チェック済みなら
タイトルの文章に打ち消しなどの表示効果でアクションをつけるようにする

このタイトル表示は

<?php echo h($task['title']); ?>

なのでこれを書き換える

まず span 要素をつけておく

<span class="<?php echo h($task['type']); ?>"><?php echo h($task['title']); ?></span>

これで、span 要素のクラス名が
done
delete
notyet
のどれかになるので

この type が done 、つまり実行済みで
チェックボックスにチェックが入っているなら 
span 要素へ
CSSを適用するようにする

.done{
                        text-decoration: line-through;
                        color:gray;
                }

text-decoration:は
打ち消し線とか
下線を引いたりできる

詳しい解説は
http://www.htmq.com/style/text-decoration.shtml
のリファレンスを参考にする

今回、指定した
line-through は打ち消し線

そしてチェックボックスをクリックしたときの動作をつくる
これは jQuery で実装する

  $(document).on('click','.checktask',function(){

  });

というようにする
on() を使っているのは
PHP で動的に追加された要素に対する処理のため
引数の意味は
click が行う動作
.checktask が class=”checktask”
function() がそのときに行う処理
となる

on()
bind()
live()
などの違いは
http://tacamy.hatenablog.com/entry/2013/03/03/213113
を参考に

ToDo 削除をDBへ反映

ToDo 削除をDBへ反映

#09 Todo更新情報をDBへ反映を削除してみよう (3)
http://dotinstall.com/lessons/todo_app_php_v2/9309
を参考に
Todo更新情報をDBへ反映 の削除情報をDBへ反映する

vim _ajax_delete_task.php
でファイルを開いて編集していく

まず

require_once('config.php');
require_once('functions.php');

で設定ファイルを読み込む

次に、functions.php で設定した
connectDb() でDB接続

次にsql を変数に格納
削除とはいっても
delete で実際に消すのではなく
フラグを変更することで、消したという判定にしている

$sql ="update tasks set type = 'delete',modified = now(), where id = :id";

modifiedは変更した時間なので
now() で現在時刻を指定

このsql を実行するため

$stmt = $dbh->prepare($sql);
$stmt->execute(array(":id"=> (int)$_POST['id']));

今回は、POST での値のため
id の配列指定は

(int)$_POST['id']

としている

(int) にしているのは、整数でないとダメなので
整数型に強制変換している

この強制変換はキャストといって
java とか C とかでも使われる

ここまでできたら
chrome をつかって検証

もし削除で消して、リロードして消えていないのなら
DB接続関連がおかしいので
_ajax_delete_task.php
のソースを確認する

残念ながら developer tools で
このエラーは発見できなかった

調べた結果

$sql ="update tasks set type = 'delete',modified = now(), where id = :id";

と、
now() のあとに , がついていたのが原因

これを修正したら、正常に稼働した

DBの中身を確認するため
mysql -u root -p
でログインして
use dotinstall
でDB選択

elect * from tasks;
で確認すると
type が delete
となっているのが確認できる