スクリプトメモ

スクリプトメモ

bash コマンドは日経Linux のコマンド一覧に
載っていないので検索

http://kazmax.zpp.jp/cmd/b/bash.1.html
によれば

bash -e 


コマンドが0以外の終了ステータス
つまりエラーがあれば終了するようになる

これは処理の最後に

rm -Rf “./$dir”

として
$dir がからのままここに来ないようにする

ただし -e オプションは途中で以上終了しても
止まってくれない

#!/bin/bash

false| true

echo "止まらない"

true| false

echo “止まる"

というファイルを実行すれば結果がわかる

止まらない
止まる

というように結果として止まらない

なので bash -e を信用しないこと

PIPESTATE などで判断するといい

次に exec コマンド

【 exec 】 現行のジョブに置き換えてコマンドを続行する

を参考にするといい

これは標準エラーを捨てるのにも使われる

exec 2> /dev/null

とすれば /dev/null
に出力され消えることになる

主な書式は
exec2 > file
とすれば
以後のシェルスクリプトのエラー出力を
file に書き出す
というようになる

書籍にある

exec2 > ./$(basename $0).$(date + %Y%m%d%H%M%S).log

とすれば
実行ファイル名.日付.log
というファイル名になる

bash のオプションに
xvとあるけど
どっちもログを標準エラー出力にする
違いは
bash – コマンド (プログラム) の説明 – Linux コマンド集 一覧表
を参考に
$(basename $0)
はシェルスクリプトの名前
試しに

vim test.bash

で作成

#!/bin/bash


basename "$0"


echo $0

実行するとわかるけど
echo との違いはパスを含まず
ファイル名だけ表示されること
結果は

test.bash

/home/vagrant/test.bash

というようになる
判定で、それぞれ変数dir に日付が入っているか
そして
本日付の圧縮ファイルがあるかを調べるのが

dir="$(date +%Y%m%d)"

[ ! -e "$dir.tar.gz” ]

の部分

-gt はシェルスクリプトの比較演算子

-e もおなじ

シェルスクリプトの条件式や演算子におけるメモ

を参考にソースを読むことに

-e の意味は、ファイルが存在するなら

という意味

-gt は〜より大きいという意味

英語の greater than の略

-gt については

#08 条件式を評価してみよう (1)

を参考にしました

!は条件の反転になるので
! -e ならファイルが存在しないのならという意味に

なお
[Sh]簡素なif文は一行で書く[Sh]簡素なif文は一行で書く

でわかったのですが
シェルスクリプトの場合1文で書くときには
if を省けるようです
このため、今回の [] の中身は if の判定でした

このため

[ "$dir" -gt "20140101” ]

は日付が 20140101 より大きいのなら
という判定になり

[ ! -e "$dir.tar.gz” ]


日付.tar.gz というファイルが存在しないのなら
という判定になります

wordpress 管理画面にアイキャッチ画像の表示

wordpress 管理画面にアイキャッチ画像の表示

管理画面でサムネイル画像を設定できると
投稿が楽になるので設定をします

functions.php にコードを追記すれば可能になります

add_theme_support('post-thumbnails');

を追記します

これでカテゴリの下で
アイキャッチ画像の設定ができるようになります

とはいっても最初から素材を用意するのは大変なので
無料写真素材サイト
FOODIE’S FEED

のものを使わせていただくことにします

ちなみに画像のアップロードにはサイズ変更をしておかないと投稿できません

基本的には2MBです

今回は centOS 6.5 での変更になります

 vim /etc/php.ini


801行めの

upload_max_filesize = 2M

upload_max_filesize = 2000M

に変更してアップロードできるサイズをあげます

post_max_size = 8M

post_max_size = 2000M

に変更
これでPOSTするサイズもあげます

ダッシュボードの投稿から
アイキャッチ画像を決定をクリック

ai

ファイルアップロードをクリックし

ai3

ファいるをアップロードしたら
アイキャッチ画像を設定
をクリックします

ai4

これでアイキャッチ画像の設定ができたので
次に
一覧画面でアイキャッチ画像が見えるようにします

page.php の中の

<img src="image/tee.jpg"  />

の部分を
wordpress のテンプレに書き換えます

このときにサムネイルがないときのことも考えて
判定をして表示するようにします

判定は

<?php if(has_post_thumbnail()): ?>
   <?php the_post_thumbnail(); ?>
<?php else : ?>
        <img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>
<?php endif;?>
<?php the_title(); ?></a></li>

となります

<?php if(has_post_thumbnail()): ?>

でサムネイルがあるか調べ
あるのなら

<?php the_post_thumbnail(); ?>

で表示します

サムネイルなしなら

<img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>

でサムネイル画像の代わりにイメージなし
という画像を表示します

これでリロードすると
一覧画面にサムネイル画像が反映されます

ai5

今回の変更によりコードは以下のようになります

<?php get_header();?>
<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=10&paged=$paged"); ?>
<form action="" class="ui-filterable">
  <input type="text" id="keywd" data-type="search" placeholder="お店の名前を入力
">
</form>
<br>
<?php if (have_posts()): while(have_posts()): the_post(); ?>
  <ul data-role="listview" data-filter="true" data-input="#keywd">
    <li class="ui-li-has-thumbnail"><a href="<?php the_permalink(); ?>">
<?php if(has_post_thumbnail()): ?>
   <?php the_post_thumbnail(); ?>
<?php else : ?>
        <img src="<?php echo get_template_directory_uri();?>/img/noimage.png"/>
<?php endif;?>
<?php the_title(); ?></a></li>
  </ul>
<?php endwhile; else: ?>
<p>該当するお店がありません</p>
<?php endif; ?>
<?php get_footer(); ?>

固定ページで投稿記事一覧を表示

固定ページで投稿記事一覧を表示

固定ページへの一覧表示にあたり

[WP]WordPress で固定ページに記事一覧を出力する方法のまとめ

を参考にさせていただきました

今回は投稿記事を最新10件取得します

<?php $paged = get_query_var('paged'); ?>
<?php query_posts("posts_per_page=10&paged=$paged"); ?>

<?php get_header();?>

の下へ書き込みます

次に投稿記事があれば表示するという判定をつけます

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

の下へ

<br>
<?php if (have_posts()): while(have_posts()): the_post(); ?>

を追記します

そして
投稿記事がなかったときの処理を

<?php get_footer(); ?>

の上に書き込みます

今回はお店がないことを表示したいので

<?php endwhile; else: ?>
<p>該当するお店がありません</p>
<?php endif; ?>

これでループで表示できるようになりましたが
まだ表示のための処理が書いてないため
見た目はそのままになりますので
次に投稿記事を反映するようにコードをかえます

今の状態だと

    <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>

ですが、ループ表示なので1つあれば十分です

 <li class="ui-li-has-thumbnail"><a href="shop.html"><img src="image/tee.jpg"  />お茶</a></li>

だけ残して削除します

次に、お茶の部分を投稿記事のタイトル
リンクを投稿記事にかえます

お茶

<?php the_title(); ?>

へ変更

<a href="shop.html">

<a href="<?php the_permalink(); ?>">

へ変更します

これで保存すると投稿記事が一覧で表示されます

page

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

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

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

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

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