固定ページへのリンク作成

固定ページへのリンク作成

後々、カテゴリごとに記事一覧をだすけど
まずは投稿記事を一覧表示するようにします

まずは
その前にトップページからアイコンをクリックしたら
固定ページにリンクするようにします

wordpress の固定ページは

echo get_page_link();

で取得可能

get_page_php() の詳細については
関数リファレンス/get page link

を参考に

パラメータとして固定ページのIDを入れます
今回の場合 ID=35 なので

home.php の中の
sweet.html
というリンクをかえます

今回も vim の置き換え機能で一度に書き換えます

%s/sweet.html/<?php echo get_page_link(35);?>/g

これを実行すると
アイコンをクリックすると
固定ページの一覧にリンクするようになります

現在の home.phpのソースは

<?php get_header(); ?>

<!-- 1行目 -->
<div class="ui-grid-b">
  <div class="ui-block-a">

    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/wa.png" alt="" class="ic"><br>和食</a>
  </div>
  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/chu.png" alt="" class="ic"><br>中華</a>
  </div>
  <div class="ui-block-c">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/yo.png" alt="" class="ic"><br>洋食</a>
  </div>
</div>

<!-- 2行目 -->
<div class="ui-grid-a">
  <div class="ui-block-a">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/cake.png" alt="" class="ic"><br>スイーツ</a>
  </div>

  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/ramen.png" alt="" class="ic"><br>ラーメン</a>
  </div>
</div>

<!-- 3行目 -->
<div class="ui-grid-b">
  <div class="ui-block-a">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img class="ic" src="<?php echo get_template_directory_uri(); ?>/img/camera.png" alt="" ><br>カメラ</a>
  </div>
  <div class="ui-block-b">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/map.png" alt="" class="ic"><br>地図</a>
  </div>
  <div class="ui-block-c">
    <a class="ui-btn ui-corner-all" href="<?php echo get_page_link(35);?>"><img src="<?php echo get_template_directory_uri(); ?>/img/tweet.png" alt="" class="ic"><br>ツイート</a>
  </div>
</div>
<?php get_footer(); ?>

となります

link

link2

次は page.php を編集します

証明写真をUbuntuで作成するアプリ

証明写真を自宅で作成するアプリを
Ubuntuへインストールしました

撮影には ipod touch のカメラ
もしくは Nexus7 のカメラを使用

撮影した写真から作成するには
おうちで証明写真 Gura Shot

を参考に行います

まず、Ubuntu に Gura Shot をインストール

最初に Gura を使う環境を整えます

http://www.gura-lang.org/Download.html

にインストール方法が載っているので
これを参考に行います

まずコンパイルに必要なものをインストール

sudo apt-get install build-essential cmake libreadline-dev rpm

次に
https://github.com/gura-lang/gura/releases/download/v0.6.2/gura-0.6.2-src.tar.gz
から
gura-0.6.2-src.tar.gz
をダウンロード

ダウンロードしたディレクトリに移動して

tar zxvf gura-0.6.2-src.tar.gz 

で展開

cd gura-0.6.2
mkdir build
cd build

でコンパイルのためのディレクトリ作成

../configure
make

でコンパイル

sudo ./setup-guest
./build-modules

でモジュールを作成

 sudo make install
sudo ldconfig  

でインストールになります

これで Gura の環境ができたので
Gura Shot をダウンロードします

https://github.com/gura-app/gurashot/releases/download/v1.3.0/gurashot-1.3.0.zip

から
Gura Shot をダウンロードします

これで実行は

gura gurashot.guraw 

でできると思ったのですが
ubuntu 12.04 で行うと

gurashot.guraw:6: ImportError: can't find a module named 'wx'
Traceback:
gurashot.guraw:6:
  import(wx)

となってしまいます

原因を調べた結果
Upgraded to Ubuntu 12.04, now import wx.lib.delayedresult fails

によれば

This issue is likely caused by changing directory standards between different versions of python-wx included in the different distributions (11.10 vs 12.04).
となっていて
バージョンが13.10 以降は
参照するディレクトリが違うのが原因のようです

仕方ないので
14.04 で実践することに

インストールまでは同じなので
Ubuntu 14.04 からX11転送で実行します

X11転送を利用したセキュアなリモートapp環境

を参考に設定を確認していきます

Ubuntu のデスクトップの場合
デフォルトでX11転送ができるはずなので

 vim /etc/ssh/sshd_config 

でファイルを開き

/X11
で検索

X11Forwarding yes
X11DisplayOffset 10

となっているのを確認します

次にssh でX転送ができるようにして接続します

これには -X オプションをつけて接続します

接続したら

https://github.com/gura-app/gurashot/releases/download/v1.3.0/gurashot-1.3.0.zip

でファイルをダウンロード

unzip gurashot-1.3.0.zip

で解凍し

 cd gurashot-1.3.0/
gura gurashot.guraw 

を実行すると無事エラー無く起動しました

grashot

wordpress 一覧ページの作成

wordpress 一覧ページの作成

まずはカテゴリを作成する

ダッシュボードの投稿 > カテゴリー

新規カテゴリに任意のカテゴリ名を入れ
新規カテゴリを追加
をクリック

cat

今回はサイトで使用するので
カテゴリに
和食
洋食
中華
スイーツ
ラーメン
を追加

次にカテゴリIDをしらべたいので 
ダッシュボードの
設定 > パーマリンク設定

デフォルト
をクリック

cat2

これでURL にカテゴリのIDが表示される

次に
投稿 > カテゴリで
今回追加したカテゴリを選び
表示をクリック

cat3

これで表示される
http://dev.dotinstall.com/wordpress/?cat=8
というように
最後の
?cat=8 という部分がカテゴリIDになる

cat4

これを後々使うのでメモしておく

和食   
http://dev.dotinstall.com/wordpress/?cat=5

洋食
http://dev.dotinstall.com/wordpress/?cat=6

中華
http://dev.dotinstall.com/wordpress/?cat=7

スイーツ 
http://dev.dotinstall.com/wordpress/?cat=8

ラーメン 
http://dev.dotinstall.com/wordpress/?cat=9

なおこれは私の環境の場合で
他の環境では変わるので注意

次に固定ページの作成
テンプレート作成に関しては
各固定ページのページデザインをテンプレート選択で可能にする方法

を参考に

まずは固定ページを新規作成

ダッシュボードで
固定ページ > 新規追加

お店一覧
として公開

このときにページIDを確認しておきます

cat6

今回の場合
http://dev.dotinstall.com/wordpress/?page_id=35

id は35です

次に固定ページテンプレートを作成します

まずはベースとなるファイルをコピーして
page.php を作成します

今回は以前一覧を表示した sweet.html から作成します

cp ~/wpt/sweet.html page.php

次にファイルの中身をwordpress の
ヘッダーとフッターにかえます

ヘッダー読み込みは

<?php get_header(); ?>
[/php

フッター読み込みは

?php get_footer(); ?>

で行います

これでまず一覧表示画面ができました

cat7

今回のソースは

<?php get_header();?>
<form action="" class="ui-filterable">
  <input type="text" id="keywd" data-type="search" placeholder="お店の名前を入力
">
</form>

  <ul data-role="listview" data-filter="true" data-input="#keywd">
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/tee.jpg"  />お茶</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cake.jpg"  />ケーキ</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/food.jpg"  />和菓子</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/cofee.jpg"  />ゼリー</a></li>
    <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/blead.jpg"  />アイス</a></li>
  </ul>
<?php get_footer(); ?>

となります

アーカイブの中からファイル抜き出し

アーカイブの中からファイル抜き出し

tar コマンドで固めたファイルは
解凍しなくてもディレクトリ構造をみることができる

例えば

sudo tar zcvf etc.tar.gz /etc/


/etc/ 以下を
etc.tar.gz 以下に固め
この中身の一覧を見るのなら
tオプションをつかう

tar ztvf etc.tar.gz |head -n5


一覧の中から5つだけ表示
結果は


drwxr-xr-x root/root         0 2015-07-29 20:37 etc/
-rw-r--r-- root/root       233 2010-01-12 22:28 etc/printcap
lrwxrwxrwx root/root         0 2015-01-12 18:34 etc/rc3.d -> rc.d/rc3.d
-rw-r--r-- root/root        58 2014-11-04 21:17 etc/networks
-rw-r--r-- root/root       158 2010-01-12 22:28 etc/hosts

となる

今度は、ファイルそのものを指定
ただし、一覧を指定しているのでファイル情報がでて
中身の表示ではない
本来は、ディレクトリなどを対象にして一覧をみるのにつかう

tar ztvf etc.tar.gz etc/networks

結果は

-rw-r--r-- root/root        58 2014-11-04 21:17 etc/networks

次に中身の取り出し
これは xオプションをつかう

tar zxvf etc.tar.gz etc/networks

とすると
etc というフォルダができ
その中に networks ファイルが入っている

ネットでよくみかけるtar の展開はほとんどこのタイプ

また、取り出さなくても
-O をつけることでファイルの中身をみることができる

tar zxvf etc.tar.gz etc/networks -O 

とすれば

etc/networks
default 0.0.0.0
loopback 127.0.0.0
link-local 169.254.0.0

というように閲覧可能

この圧縮ファイルの中身をみるのは
zip 形式のものでもできる

例えば、過去に取得した wordpress
の圧縮ファイルの
latest-ja.zip

この中身をみるため、ファイル一覧を調べる
vオプションで詳細をみれる

今回は、数が多いので
head -n10
をつけて絞っている

unzip -v latest-ja.zip | head -n10

結果は

Archive:  latest-ja.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/
    8252  Defl:X     2979  64% 07-17-2014 18:12 5aa29ac6  wordpress/wp-mail.php
    2714  Defl:X     1217  55% 07-08-2014 01:42 96436a4e  wordpress/wp-load.php
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/themes/
      28  Stored       28   0% 06-06-2014 00:59 fb11104a  wordpress/wp-content/themes/index.php
       0  Stored        0   0% 02-19-2015 23:24 00000000  wordpress/wp-content/themes/twentyfourteen/

となる

この中から
wordpress/wp-content/themes/index.php

の中身を表示するには pオプションをつかう

unzip -p latest-ja.zip wordpress/wp-content/themes/index.php


を実行すると

<?php

// Silence is golden.

という結果になる

wordpress プラグインのコピー

wordpress プラグインのコピー

vagrant 環境に wordpress を構築したので
いままで使っていたプラグインを引越し

 cd /var/www/html/wordpress/wp-content/plugins/


wordpress を配置したディレクトリにある
wp-content/plugins/
へコピーする

sudo  scp -rp snowpool@192.168.10.249:/var/www/html/wpt/wordpress/wp-content/plugins/* .

でコピー

なお、コピーはされるけど、有効化はされないため
ダッシュボードから有効化する必要があるので注意

圧縮ファイルの操作

圧縮ファイルの操作

Linux の場合、圧縮ファイルのまま
端末から操作ができる

このため解凍する手間が省ける

圧縮展開でよく使われるのは
tar コマンド

これについては
【 tar 】 ファイルを書庫化・展開する(拡張子.tarなど)

を参考に

これ以外にも1つのファイルを圧縮することもある

今回も書籍を参考にしながら実践

今回は seq コマンドをつかう

いつもの日経Linux のコマンドには載っていないため
seq コマンドで検索

seq – 連続した数字の列を出力・表示 – Linuxコマンド

を参考に行うことに

書籍だと大きいサイズのファイルを作るけど、私のマシンでは無理なので

seq 1 1000000 > hoge


1から1000000 の数を書いた hoge ファイルを作成

容量を見るには lsコマンドをつかう

詳細なオプションについては
【 ls 】 ファイルやディレクトリの情報を表示する

を参考に

今回は容量も見やすくするたm
hオプションを使用

ls -lh hoge

結果は

-rw-rw-r--. 1 vagrant vagrant 6.6M  7月 28 06:43 2015 hoge

となる

これを gzip コマンドで圧縮

詳細については

【 gzip 】 ファイルを圧縮・展開する(拡張子.gz)

を参考に

今回はオプションなしで圧縮

gzip hoge

これでサイズを確認

ls -lh hoge.gz 

結果は

-rw-rw-r--. 1 vagrant vagrant 2.1M  7月 28 06:43 2015 hoge.gz

となり hoge ファイルは圧縮されなくなる

この圧縮ファイルは解凍せずに

そのままつかうことができる

これには zcat コマンドをつかう

詳細については

【 zcat 】 gzipやcompressで圧縮されたファイルの内容を表示する

を参考に

今回圧縮した hoge.gz の中身をみるには

zcat hoge.gz | head -n5

とする

結果は


1
2
3
4
5

となる

また、zgrep コマンドをつかうことで
圧縮ファイルの中身を検索することもできる

zgrep コマンドについては
よく使うLinuxコマンドメモ

を参考に

今回の hoge.gz から 10000 を検索するなら

zgrep 100000 hoge.gz 

となる

結果は

100000
1000000

古いファイルを上書きしないように同期

古いファイルを上書きしないように同期

この場合、rsync コマンドの
-u オプションをつかう

本来は、2つのマシンでやる予定だったけど
用意できなかったので、今回はローカルで実践

rsync コマンドについては

rsync – 高速なファイル同期(バックアップ) – Linuxコマンド

を参考に

まずはテストディレクトリを作成して実験

mkdir test

次にサンプルを書籍のものをつかうことに

cp -rp ~/GihyoShellBookSamples-master/chapter3/事務 .

もう一つ作成したディレクトリにもコピー

cd test
cp -rp ~/GihyoShellBookSamples-master/chapter3/事務 .

これで準備ok

cd
vim 事務/厄介な仕事.txt 

でファイルを編集し
1行目末尾に done を追加

その後、rsync で同期する

rsync -av 事務/ test/事務/

これで同期するけど
このとき間違えて
test 側から同期するとデータが古くなってしまう

rsync -av test/事務/ 事務/

となってしまうとデータが古くなる

この対策として
-u オプションをつける
これをつけることで
タイムスタンプを比較し
新しいものを残すようになる

rsync -avu test/事務/ 事務/

これで更新したファイルだけ同期になる

なお、これだけだと、test のほうは古いままなので

rsync -avu 事務/ test/事務/
cat test/事務/厄介な仕事.txt

というように相互に行えば
更新したファイルを相互に同期することができる

注意点は、ファイルの変更の有無ではなく
タイムスタンプなので
ファイルを開いて保存するだけでも対象になってしまうこと

今回はローカルでのファイルだけど
これをリモートマシンでやれば
簡易バックアップができる

ほかのマシンと同期

ほかのマシンと同期

ほとんどの場合ssh 接続がデフォルトなので
通常は sshを明示的にしなくてもいい

手元の Music ファイルを
リモート先と同期するのなら

rsync -av Music/ developapp.net:~/Music/

というようにする

もしIP指定で、逆に自分の新規インストールマシンに
音楽を同期させたいのなら

rsync -av 192.168.10.248:~/Music/ ~/Music/

とすればいい

もし、ユーザが違うのなら

rsync -av snow@192.168.10.248:~/Music/ ~/Music/

となる

あと、講習とかで ssh を変更したのなら
zオプションで通信を圧縮

そして
rsyncの使い方(オプション SSH)

にあるように
-e オプションをつかうことで暗号化してファイル転送します

もし 222 番にしたのなら

rsync -avz -e ‘ssh -p 2222’ ~/Download/ snowpool@191.168.10.248:~/Download/

とすればいい

rsync コマンドでシンボリックリンクを扱うには

rsync コマンドでシンボリックリンクを扱うには

rsync コマンドで
シンボリックリンクを同期するには
-lオプションでシンボリックリンクをそのままコピーする
もしくは
-a オプションですべてコピーする

試しに ln コマンドでシンボリックリンクを作成

lnコマンドの詳細は
【 ln 】 ファイルやディレクトリにリンクを張る
を参考に

ln -s /etc/ link

で/etc/のシンボリックリンク link を作成

-s オプションはシンボリックリンクを
作成するオプション

次に rsync コマンドで同期

sudo rsync -av ~/ /var/tmp/

rsyncコマンドの詳細は
rsync – 高速なファイル同期(バックアップ) – Linuxコマンド

を参考に

a オプションで属性をコピー
v オプションでログ出力

終わったら、ls コマンドで調べる

ls コマンドの詳細は
【 ls 】 ファイルやディレクトリの情報を表示する

を参考に

今回使用するオプションは
-l オプションでファイルの詳細表示
-d オプションで
ディレクトリを含んでいてもファイルみたいに表示

ls -ld /var/tmp/link

ls -ld link

の結果は

lrwxrwxrwx. 1 vagrant vagrant 5  7月 27 09:10 2015 /var/tmp/link -> /etc/

lrwxrwxrwx. 1 vagrant vagrant 5  7月 27 09:10 2015 link -> /etc/

というように同じになる

ディレクトリの同期する rsync コマンド

ディレクトリの同期

同期には
rsync コマンドを使用

詳しくは
rsync – 高速なファイル同期(バックアップ) – Linuxコマンド
を参考に

今回は /home/vagrant/以下を
/var/tmp/ へコピー

rsync -av /home/vagrant/ /var/tmp/

オプションの
a はファイル属性をそのままコピー
v はファイルのログ出力になります

コピーしたときに同じになるので

ll /home/vagrant/ | head -n5

ll /var/tmp/|head -n5

の実行結果は同じになる

ちなみに、コピーするときに
/home/vagrant

/home/vagrant/
では意味が変わる
最後の / がないと、ディレクトリごと
コピーしてしまう

nao,rsync コマンドは
変更のあったファイルや新規ファイルなど
変化のあったものだけを同期する
つまり差分バックアップみたいなかんじ
なので
2回目は時間短縮できる

実際の時間を計るため
time コマンドを使い計測

timeコマンドの詳細は
【 time 】 指定したコマンドの実行時間を表示する
を参考に

実行するコマンドは

time rsync -av /home/vagrant/ /var/tmp/

1回目の結果は

real	0m2.055s
user	0m0.538s
sys	0m1.111s

2回目の結果は

real	0m0.422s
user	0m0.065s
sys	0m0.228s

というようにかなり短縮される

注意点は、少しでも変化があれば
同期対象にしてしまう

これは仮想マシンなど
GB単位のファイルで行われることになる

あと、スクリプトで実行するときなど
/etc/ のように
sudo がないと同期できないものもあるので注意