Google Mexus7 でタブレットを操作するときに
タブレットスタンドがあるとずっと持っていなくてもよいため
購入しました
私の場合、自炊した参考書をAdobe Reader でみるのですが
コードを書いたりするときに毎回手荷物のは面倒ですし
FXなどをするときにも手で持たなければ
他の作業もできます
今回購入したのは、机やサイドテーブルに取り付けるタイプです
これなら、落下するということもなさそうなので安心して使うことができます
Just another WordPress site
Google Mexus7 でタブレットを操作するときに
タブレットスタンドがあるとずっと持っていなくてもよいため
購入しました
私の場合、自炊した参考書をAdobe Reader でみるのですが
コードを書いたりするときに毎回手荷物のは面倒ですし
FXなどをするときにも手で持たなければ
他の作業もできます
今回購入したのは、机やサイドテーブルに取り付けるタイプです
これなら、落下するということもなさそうなので安心して使うことができます
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
#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 の基本と注意点
#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 のインストール
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 について
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反映
#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 チェック機能の実装
#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へ反映
#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
となっているのが確認できる