ページ

2012-04-20

リダイレクション、パイプライン等についてのまとめ

端末、シェルスクリプトのリダイレクション(>)やパイプライン(|)といった
メタキャラクタについてのまとめ


・標準入力、標準出力、標準エラー出力とチャネルの対応
  • 標準入力 →チャネル0
  • 標準出力 →チャネル1
  • 標準エラー出力→チャネル2

入力が0,出力が1,エラーが2と対応していることを覚ればいい。

また、通常の場合、入力はキーボード、出力とエラーは画面とつながっている。





(出力)リダイレクション

% command argument … > file ←新規作成
% command argument … >> file ←内容追加

チャネル1の接続先を画面からファイルに変更し、出力がファイルに書き出される。
出力を切り替えるために出力リダイレクションという。

また別の出力先としてエラー出力があるが、これはエラーを出力するためのチャネルであり上のコマンドでも、チャネル1の接続先のみがファイルに接続されていて、標準エラー出力のチャネル2は画面に接続されたままなのでエラーは画面で確認することができる。

以下に使うであろうパターンを列挙しておく。


出力リダイレクションパターン

% command argument … > file 2>&1 ←チャネル1にチャネル2を合流
% command argument … 1> fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% commend argument … > fileA 2> fileB ←チャネル1とfileA,チャネル2とfileBを接続
% command argument … > dev/null 2>&1 ←チャネル1とチャネル2をnullに接続




パイプライン

% command1 argument … | command2 argument … ←command1の出力をcommand2の入力に接続する。

パイプラインは前方のコマンドの出力であるチャネル1と後方のコマンドの入力であるチャネル0を接続するものである。





その他メタキャラクタ

% command1 argument … ; command2 argument … ←コマンドを順番に実効する。
% command1 argument … & command2 argument … ←コマンドを平行に実行する。

コマンドの実効を制御するメタキャラクタとしては上のようなものがある。






2012-04-17

robots.txtの書き方

サイトに設置をするrobots.txtの書き方をまとめておく。

まず、robots.txtの役割
googleやmicrosoftといった検索エンジンの運用するクローラ、
スパイダーがrobots.txtに記されたルールに従って動作をしますよというもの。(無視するクローラもいます。)

次にrobots.txtの書き方

robots.txtはサイトのトップに設置する。
・全て許可
User-agent:*
Disallow:
・全て拒否
User-agent: *
Disallow:/

・その他の例
Disallow:/*.jpg jpgは拒否
Disallow:/*. jpgは拒否
Disallow: /*images/ imagesフォルダは拒否
Crawl-delay:10 クロール間隔の指定(10秒)

google robots.txt

AURとABSの方法まとめ

AURとABSに関係する記事が分かれているのでまとめとして書いておく。

AUR:[arch user repository]
コミュニティにより、Arch linuxのためのPKGBUILD形式でパッケージが配布されている。mozcとかもある。
ABS:[arch build system]
ビルドを管理するためのシステム,PKGBUILDが入ったABS treeを作る。pacmanでインストール可能

具体的な方法は Arch linuxでAURとABSを使う方法に。

簡単な流れとしては、

  1. ABS、base-develのインストール(pacmanから),ABS設定
  2. AURサイトからPKGBUILDをwget
  3. makepkgでビルド
  4. pacmanでインストール

なんだけれども、3.makepkgでビルドをする時、 makepkg.confを設定しておくと自分の環境に合わせてビルドをすることが可能になる。
具体的な方法は makepkg.confの最適化に。
※デフォルトの設定では多くのPCにインストールが可能なパッケージを作成する設定になっている。

参考リンク(AUR,ABS)

Archwiki::USB_storage_device
Archwiki::udev

参考リンク(makepkg)
gentoowiki::Safe Cflags
Compilation Optimization Guide
Archwiki::makepkg



2012-04-11

javascript xmlファイルの読込みとdomの使い方

javascriptでxmlファイルを読み込んで取り扱う方法に少しなやんだので、書いておく。

xmlの読込み (例:dname='./etc/data.xml')
function loadXMLDoc(dname){
    if (window.XMLHttpRequest){
        xhttp=new XMLHttpRequest();
    }else{
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",dname,false);
    xhttp.send("");
    return xhttp.responseXML;
} 

xmlの使用例
txtbox = document.getElementById("canvas");
xmlDoc = loadXMLDoc('./etc/data.xml')
txtbox.innerHTML = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;

・getElementByTagNameは選択したタグのノードリストを返す。
・childNodesは子ノードのリストを返す。初めの子ノードの場合はfirstChildでもよい。
・nodeValueは値を返す。

参考リンク
XML DOM


2012-04-09

makepkg.confの最適化

arch linuxでmakepkgをする時の設定がデフォルトのままだったので、
makepkg.confを書き換え、最適化を行った。

設定項目のMAKEFLAGS, CFLAGS, CXXFLAGS は make, gcc, g++で使われる。
デフォルトの設定では多くのPCがインストールができるように一般的なパッケージが生成されるので、
これを自分専用の設定にするとパフォーマンスが上がるとのこと。

使用しているcpuの情報
cat /proc/cpuinfo

一応自分の設定(Atom)
# /etc/makepkg.conf
########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################

CFLAGS="-march=atom -O2 -fomit-frame-pointer -pipe"
CXXFLAGS="${CFLAGS}"


参考リンク
gentoowiki::Safe Cflags
Compilation Optimization Guide
Archwiki::makepkg



2012-04-06

siri+咽喉マイクについて考える

最近iphone やandroidで音声入力サポートの siri喋ってコンシェル といったものが有名になっていて、
とても便利そうに見える。

siriや喋ってコンシェルの音声入力には、端末のマイクから音を拾う形態であり(スマートフォンであるため当然の帰結ではあるが) 、現在音声サポートを使用する環境というものは、屋内。さらにいえば独り言を言うという事を考えるとプライベートな空間であると私は考えている。

ここでまず普通のマイクを使えばどうなるのかを考えると、端末ではなくマイクに音声入力をし、端末が処理した結果を、イヤホンにでも出力すれば音声で操作できるデバイスとなる。といっても、この方法でも声を出す必要がある。

ここで咽喉(いんこう)マイクに焦点を当ててみる。 簡単に咽喉マイクの説明をすると、声帯の振動から音声を取り出すマイクである。
もう分かった人もいるだろうが、この咽喉マイクを使えば、喉を動かし喋る必要性すらない。機械相手に理解させられさせられればよい。

2012-04-05

bloggerのテンプレート編集方法

前回の BloggerでHTMLのマークアップ要素を試してみる。で直そうと思っていた h2とかh3を編集する方法 テンプレート→HTMLの編集→続行→ウィジェットのテンプレートを展開→コピー→テキストエディタ→編集 以下自分の行った事 vimで
:%s /h4/h5/g#h4->h5
:%s /h3/h4/g#h3->h4
:%s /h2/h3/g#h2->h3
:%s /h4/h2/g#h4->h2
タイトルがh2になっているはず。

postgresql9.1インストール(2) utf-8

postgreSQLの初期設定がasciiなので設定をutf-8に変更する方法

template0は削除できない。
1.tamplate0をfalseにし、2.tamplate1のdrop。
3.utf-8として作成。4.tamplate1をtrueに変更。
5.接続許可のオプション
UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
DROP DATABASE template1;
CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE';
UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
UPDATE pg_database SET datallowconn = FALSE WHERE datname = 'template1';


createdb
\l ->UTF8になってる。


参考リンク
PostgreSQL 9.1.3
Archwiki::PostgreSQL



postgresql9.1インストール(1)

postgresqlのインストール方法を忘れていたのでメモ。
  1. インストール、起動設定。
  2. pacman -S postgresql                                                            
    rc.d start postgresql
    deamon(postgresql)
    

  3. user作成
  4. createuser -s -U postgres
    #Enter name of role to add: [いつもloginしているuserの名前]
    

  5. postgres userへの変更方法
  6. #通常userから
    sudo -i -u postgres
    #rootから
    su root
    su - postgres
    

  7. dbの作成、削除
  8. createdb name
    createdb -> username のdbが作成
    dropdb name
    
参考リンク
PostgreSQL 9.1.3
Archwiki::PostgreSQL



2012-04-04

conkyメモ

conkyをインストールして、.conkyrcを作ったのでメモ。

Arch linuxのforumを参考にすると気に入るものができるはず
作ったconkyrc

update_interval 5
alignment middle_right
background yes
double_buffer yes
total_run_times 0

stippled_borders 0
border_width 2
default_color grey
default_outline_color white
default_shade_color grey
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
gap_x 40
gap_y 40
minimum_size 100 500
maximum_width 500
cpu_avg_samples 2
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
extra_newline no

own_window yes
own_window_class Conky
#own_window_transparent yes
#own_window_type desktop
own_window_type dock
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

stippled_borders 0
uppercase no
use_spacer right
mpd_host 0.0.0.0
mpd_port 6600
use_xft yes
#xftfont Courier 10 Pitch 426:size=8
xftfont DejaVu Sans:size=8
xftalpha 0.8
# fef7b2 e18522}
# stuff after 'TEXT' will be formatted on screen
TEXT
${if_running audacious}${execpi 3 ~/.conky/audacious-info.sh}${endif} 
${font Arial:size=9}${color #e43526}System ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Kernel  : ${color grey}$kernel ${color #597DB2}${alignr}Uptime: ${color grey}$uptime
${color #597DB2}Host     : ${color grey}${nodename}${color #597DB2}${alignr}${time %Y.%m.%d}    ${color grey}${time %H:%M}${color}
${color #597DB2}CPU      : ${color grey}${freq}MHz${alignr}$cpu% ${color #597DB2}${cpugraph 6,150 000000 0000ff}
${color #597DB2}RAM     : ${color grey}$memmax${alignr}$memperc% ${color #597DB2}${membar 6,150}
${color #597DB2}Processor temperature: $color${acpitemp}°C ${color #597DB2}${alignr}Battery: $color ${battery}

${font Arial:size=9}${color #e43526}Disk ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}/   ${alignr}:  ${color grey}${fs_size /}     ${fs_used_perc /}% ${color #597DB2}${fs_bar 6,150 /}
${color #597DB2}/home   ${alignr}:  ${color grey}${fs_size /home}     ${fs_used_perc /home}% ${color #597DB2}${fs_bar 6,150 /home}

${font Arial:size=9}${color #e43526}Network ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Local IP : ${color grey}${addr wlan0} ${alignr}${color #597DB2}Public IP : ${color grey}${texeci 1800 ~/.conky/externalIp.sh}
${color #597DB2}Down : ${color grey}${downspeed wlan0}${color #597DB2}${alignr}Total : ${color grey}${totaldown wlan0}
${color #597DB2}Up     : ${color grey}${upspeed wlan0}${color #597DB2}${alignr}Total : ${color grey}${totalup wlan0}

${font Arial:size=9}${color #e43526}Processes ${color DarkSlateGray}${hr 2}${font}
${color #597DB2}Processes: ${color grey}$processes  ${alignr}${color #597DB2}Running: ${color grey}$running_processes
${color #597DB2}CPU Usage ${alignr}PID   CPU%  MEM%
  ${color grey}${top name 1}${alignr}${top pid 1}  ${top cpu 1}  ${top mem 1} 
  ${color grey}${top name 2}${alignr}${top pid 2}  ${top cpu 2}  ${top mem 2} 
  ${color grey}${top name 3}${alignr}${top pid 3}  ${top cpu 3}  ${top mem 3} 
${color #597DB2}Memory Usage 
  ${color grey}${top_mem name 1}${alignr}${top_mem pid 1}  ${top_mem cpu 1}  ${top_mem mem 1} 
  ${color grey}${top_mem name 2}${alignr}${top_mem pid 2}  ${top_mem cpu 2}  ${top_mem mem 2} 
  ${color grey}${top_mem name 3}${alignr}${top_mem pid 3}  ${top_mem cpu 3}  ${top_mem mem 3} 
${font Arial:size=9}${color #e43526}Weather ${color DarkSlateGray}${hr 2}${font}
${color grey}${texeci 3600 weather}


参考リンク
audacious+conky

REST,SOAP?

RESTとSOAPについて少し

REST:[Representational State Transfer]
httpを使って通信、xmlが帰ってくる。実際はより抽象的でありhttpは一般的に使われている利用法。
SOAP:[Simple Object Access Protocol]
他のPCのオブジェクトサービスを呼び出すためのプロトコルである。
参考リンク REST入門

2012-04-03

Arch linuxでUSBを読み取る

thunarとudevをインストールしていたら、
USBは自動的に読み取れるとか思っていたが読み取れなかったので、一応覚え書き。

まずmodprobe
modprobe usb-storage
  1. デバイスの場所(UUID or device_node)を見つける

  2. カーネルに割り当てられたデバイスへの識別子(UUID,device_node)を知る必要がある。

    1. device node(/sd*)を使う。
    2. これが最もシンプルな方法。node nameを取得する方法。 dmesgでカーネルデバイスを検索する。
              dmesg|grep "sd[a-z]"
              fdisk -1
      

    3. UUIDを使う。
    4. どのドライブもUUIDを作り。ドライブを識別できる。
              blkid -o list -c /dev/null
              ls -lF /dev/disk/by-uuid/
      

  3. USBをマウントする。


    1. デバイスをマウントするディレクトリを作成
    2.     mkdir /mnt/usbstick
      

    3. rootユーザで
    4.     mount device_node /mnt/usbstick
          mount -U UUID /mnt/usbstick
      

    5. normalユーザで(/dev/sdb1は読み取ったUSB)
    6.     sudo mount -o gid=users,fmask=113,dmask=002 /dev/sdb1 /mnt/usbstick
      


参考リンク

Archwiki::USB_storage_device
Archwiki::udev