ページ

2012-03-28

pythonのチュートリアルを読む上で

pythonのチュートリアルを読んでいる。
確かにわかりやすいのだが、雑然と読んでいると思ったので、 目先の目的として作りたいプログラムの要求を書く。

単語の学習用のスクリプト
概要:英語の記事を読んでいるとfirefoxの翻訳addonを ちょくちょく使うことになるのだが、 そういった単語を保存していって覚えられるようにしたい。簡易的な学習曲線的なものも使いたい。
文字列のエンコード方法、デフォルトは?
デフォルトはASCIIで、このプログラムにはutf-8を扱う。
ファイル入出力 or DB入出力
調べた単語を保存する場合、リストに簡単に追加できるようにしたい。といってdeamonにはしたくない。
配列、ハッシュの扱い方
keyを今日と学習日、学習回数の関数式にし、そこに日付、回数、英語、日本語を格納する。
時間、日付のオブジェクト,logの計算
学習曲線を使うので、日付の計算方法、logの方法を知る。
動作中の文字の入力、出力
英語、日本語が完全に一致出きるとは思っていないので、入力はできるが、正否(y/n)は自分で確認する方法とし、入力された組の単語を削除(d)と、リトライ(r)も付加する。リトライの場合の式は要検討
配列、ハッシュへの挿入
学習をし、回数が更新された時にその要素を新たな位置に挿入する。
HTML解析用のMecabまで繋げるスクリプト
概要:wiki、特定のソースなどをHTMLを入手し、 今回は単語までの分割を行う。そして、その途中には本文抽出もできるようにする。
複数ファイルに分かれたソースの使用方法
mecabや本文抽出のextractContentの使用方法。
htmlへの接続
接続、エラー処理

2012-03-27

BloggerでHTMLのマークアップ要素を試してみる。

今までのページでh1,とかstrongとか使ったことがなかったので、
普通にbloggerにhtmlとして読み込ませれば試しにもなるし、ちょうどいいかなっと思ったので。

h要素

----h1----

----h2----

----h3----

----h4----

----h5----
----h6----
h4の順番おかしいよね

----h1----

----h4----

----h2----

----h3----

----h5----
----h6----
大きさ順にしてみたが、h4を使わない方が良さそう。

strong要素 これがstrong要素ですよ。strong要素は強い強調

em要素
これがem要素ですよ。em要素は強調
これが  <-普通のテキスト
em要素分かりにくいね。

sub要素
------------ 普通のテキストここがsub要素,subは下付き
sup要素
------------ 普通のテキストここがsup要素,supは上付き

mark要素
mark要素,markはマーク付き

span要素
span要素
hr要素,hrは水平線

あとは文字の色を変更はどこでやるのだろうか。調べてみる。
a:リンク,アンカー要素
MDN:HTML5

linux の標準的なファイルシステム構造

linuxを使う上で一度
/bin,/sbin,/usrなどのファイルシステムにおいての
ディレクトリ構造についてまとめておく

/:ルートディレクトリ。木構造の最も上に位置する。
/bin:基本コマンドディレクトリ。awk,ls,cpといった基本的なコマンドのバイナリファイルが入っている。
/sbin:システムコマンドディレクトリ。システム管理者が扱うような基本的なコマンドが入っている。
/etc:管理用ディレクトリ。管理者が設定をする、システムの様々な設定ファイルが含まれる。
/lib:基本ライブラリディレクトリ。基本のライブラリファイル、コマンドとして直接には呼び出さないプログラムが含まれる。
/dev:デバイスファイル。デバイスを読み込むためのファイルが含まれる。
/opt:オプションパッケージ。追加プログラムを格納する場所だが/usr/optと役割が被っている。
/tmp:作業用ディレクトリ。一時的な作業は/tmpで行われ、ここはアクセスが高速。だけれどもリブートすると消えてしまうので困る場合は/var/tmpで。
/var:更新されるファイル用のディレクトリ。更新されるファイルを/varに集めることで/usr以下などを書き換える必要がなくなる。作業用ファイルの/var/tmp,ログファイルの/var/logなどがある。
/usr:システムの核以外のファイルやディレクトリを/usrに入れていく。

/usr以下に/usr/bin,/usr/sbin,/usr/local/binと続いていく。



Arch linuxのGUI環境設定(openbox,slim,tint2)

Arch linux 自分の環境での
主にopenbox,slim,tint2での
GUI関係設定。

1.openboxのメニューをmenumakerを使って生成する。
pacman -S menumaker
#menu.xmlの自動生成
mmaker -v OpenBox3  #menu.xmlがあったら上書きしない
mmaker -vf OpenBox3 #forceでmenu.xmlがあっても上書きする。

2.slimのログイン画面をarchlinux-themes-slimで変更する。

pacman -S archlinux-themes-slim
#テーマ一覧
ls /usr/share/slim/theme/
#テーマプレビュー、loginの所にexitで終了
slim -p /usr/share/slim/theme/[theme name]
#/etc/slim.confの編集
current_thema [theme name] #<-変更したい[theme name]

3.tint2のtintwizardを使った設定
panelを表示するtint2だが、案外とGUIのtintwizardを
使った設定が簡単だった。

#tintwizardの場所
pacman -Ql tint2
#->tint2 /usr/bin/tintwizard.py
python2 /usr/bin/tintwizard.py #GUI起動


tint2を画面の上部と下部、であったり複数よびだすには

tint2 -c ~/.config/tint2/[savefilename1] &
tint2 -c ~/.config/tint2/[savefilename1] &

とすればいいはず。



Arch linuxでAURとABSを使う方法

Arch linuxでscreenshotを取るためのshutterってAURパッケージのアプリケーションが使用したかったために、
AURとABSの使い方をまとめておく

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

AURとABSの使い方。

1.ABSのインストール、設定
パッケージのabsとbase-develをpacmanでインストールし、
次にabs.confを設定、REPOSの!を外す。
そしてabsコマンドを打つと、abs treeが作成される。

pacman -S abs base-devel
vim /etc/abs.conf##編集
REPOS=(core extra community testing etc)#<-!を全てはずす
abs #<-absツリーが/var/absにできる

2.AURからパッケージのインストール

パッケージをインストールするにはAURをサイトから検索する、(このサイトはarch linuxの公式サイトからいける)
欲しいパッケージを見つけたらsourceではなく、PKGBUILDのURLをwgetする。

wget https://aur.archlinux.org/packages/sh/shutter/PKGBUILD

ちなみに検索をしなくても/packages/sh/shutter/PKGBUILDの部分が他のパッケージも共通で
mozcなら/packages/mo/mozc/PKGBUILDって風に/先頭2文字/パッケージ名/になってるっぽい。

PKGBUILDを入手したらば、必要に合わせて編集。
makepkg -s ##引数はいらない、PKGBUILDが読み込まれる.
#perl-gtk2-imageviewがない
    wget https://aur.archlinux.org/packages/pe/perl-gtk2-imageview/PKGBUILD
    makepkg -s
    sudo pacman -U perl-gtk2-imageview*.pkg.tar.xz #makepkgで*pkg.tar.xzができてpacman -U でインストールできる
#perl-gtk2-unique
    wget https://aur.archlinux.org/packages/pe/perl-gtk2-unique/PKGBUILD
    makepkg -s
    pacman -U *.pkg.tar.xz
#perl-proc-simple
    wget https://aur.archlinux.org/packages/pe/perl-proc-simple/PKGBUILD
    makepkg -s
    pacman -U *.pkg.tar.xz
#省略
# shutter の PKGBUILDがあるフォルダ
makepkg -s
sudo pacman -U *.pkg.tar.xz

これで、AURからインストールすることができる。

補足としてのmakepkgコマンド
makepkg -c #clean のことで、複数ファイルのビルド、アップデート、などで使える。廃
止されたファイルなどを新しいビルドにしてくれる。

makepkg -s #もし依存関係が求められるとしたら、失敗をする前に警告をしてくれる。

makepkg -i #pacman -Uまでやってくれる。

参考リンク

Arch wiki::Arch Build System
Arch wiki::Arch User Repository
Arch linux::AUR
Archwiki::makepkg



2012-03-26

Arch linuxの気になっていたこと

今回は前回までのArch linuxのインストールで
気になってた事についてをまとめた。

以下の事について調べた、
・acpid
・HAL
・dbus
ちなみにacpidとHALについては使用をしておらず,dbusは使用している。

acpid :ACPIのイベントを柔軟に拡張するためのデーモンを提供する。このacpidが存在すると電源ボタンやスリープ、サスペンドボタンを押すこと、ノートPCの蓋を閉じることAC電源アダプタをノートPCに接続しておけるようになるとのこと。

ちなみにACPIとは、
ACPI[Advanced Configuration and Power Interface]:APMという昔の電力管理方式から、OSが電力管理をできるようにした電力制御規格。

それで、私のノートPCでは端末でhaltとか打ち込んでるから、ボタンが使用可能になるという機能は必要なくて、最後のAC電源も充電されてるし、最後の部分はいまいち意味が分かってない。まあ、電源関係で困ったら入れるかも。

HAL[hardware abstraction layer]:HALはArch linuxの公式リポジトリから外れ、現在ではudev/PolicyKitが使われている。 HALはアプリケーションがHALを通す事で簡単にハードウェアにアクセスする事ができる物であったが、結果的にデバイスを全てHALを通しアクセスさせるという事で、HALは巨大化しメンテナンスがしづらくなってしまった。そうして、廃止の方向に進み、現在Arch linuxではudevに置き 換えられている。ってところ、それとHALにしか対応していないアプリケーションもまだ少数ではあるが存在しているということらしい。

dbus[desktop bus]:アプリケーションとアプリケーションの通信、アプリケーションとOSの通信といった、IPC(プロセス間通信)を行うのだが、簡素で無駄がような方法らしい。

参考リンク
Archwiki::acpid
Archwiki::HAL
Archwiki::D-Bus



2012-03-25

Arch linux設定(その他)

Arch linuxの設定は前回までで気づいている必要なことは できたのだが,
その後、pacmanで入れたアプリケーションをまとめておく。
python:python3.2
ruby:ruby1.9
vim:編集
postgresql:データベース
apache:サーバ
lxterminal:lxde端末
lha,unrar,unzip,p7zip,file-roller::ファイルの解凍、圧縮関係
flashplugin::フラッシュを使用するため
firefox,firefox-i18n-ja:firefoxと日本語化プラグイン
libreoffice,libreoffice-ja:libreofficeと日本語化
feh:軽量の画像表示、デスクトップの表示とかにも使える。



2012-03-24

Arch linuxの設定( GUI openbox)

Arch linuxのGUI関係がまとまったので書いておく、
WE:openbox
FM:thunar
パネル:tint2
日本語入力:ibus

こんなところか、以下設定方法。

まずは基本のX関係をインストールする
pacman -S xorg-server xorg-xinit xorg-utils xorg-server-utils mesa xorg-twm xorg-xclock xterm

次にPCのVGAに合ったビデオドライバ、xf86-video-?をインストール
lspci|grep VGA
pacman -Ss xf86-video|grep less
pacman -S xf86-video-servage

NVDIAだったので以下の2つのグラフィックドライバもインストール
pacman -S xf86-video-nouveau
pacman -S nouveau-dri

他の入力を追加、laptopの場合synapticsでタッチパッド、タッチスクリーン追加
pacman -Ss xf86-input|less
pacman -S xf86-input-synaptics

dbus,slim,consolekit,openbox,ibus,thunar,tint2のインストール
pacman -S dbus slim consolekit openbox obmenu obconf ibus ibus-anthy thunar thunar-archive-plugin thunar-media-tags-plugin thunar-volman tint2
rc.d start dbus

deamons=(…dbus…)

各種設定
設定の準備
デフォルトの~/.xinitrcの作成
 cp /etc/skel/.xinitrc ~/.xinitrc

デフォルトの~/.config/openboxの作成
 mkdir -p ~/.config/openbox
  cp /etc/xdg/openbox/{rc.xml,menu.xml,autostart,environment} ~/.config/openbox

・/etc/slim.confの編集
numlock off 
    ssessions openbox
    default_user hoge
    #current_thema hoge

・~/.xinitrcの編集 以下を追加
  export PATH=$HOME/bin:$PATH
    export LC_CTYPE=ja_JP.utf8
    export XMODIFIERS=@im=ibus
    export GTK_IM_MODULE=ibus
    export QT_IM_MODULE=ibus
    /usr/bin/ibus-deamon --xim -d &
    exec ck-launch-session dbus-launch openbox-session

・/etc/X11/xorg.conf.d/10-evdev.confの編集 以下の追加
Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
    Option "XkbRules" "xorg"  <-追加
    Option "XkbModel" "jp106"    <-追加
    Option "XkbLayout" "jp"      <-追加
EndSection
・/etc/inittabの編集
#id:3:initdefault:  <-コメントに
id:5:initdefault:     <-コメントを外す

#x:5:respawn:/usr/bin/xdm -nodaemon    <-コメントに
x:5:respawn:/usr/bin/slim >/dev/null 2>&1  <-コメントを外す
デーモンにslimの追加 deamon=(slim) これで動作するはず、 tint2はautostartに tint2 & とか追加すれば動く。 参考リンク Archwiki::Openbox Archwiki::Beginners' Guide openboxhelp::Help:Autostart

2012-03-23

Arch linuxの設定(iptables)

Arch linuxのファイヤーウォールとして
iptablesを設定した。


  • iptablesの取得
  • iptablesはpacmanから入手できる。

    pacman -S iptables
  • 必要なチェインの生成
  • # iptables -N TCP
    # iptables -N UDP
    
  • ポリシーの設定
  • # iptables -P FORWARD DROP
    # iptables -P OUTPUT ACCEPT
    
  • INPUT chainのpolicyをdropに設定する。
  • 全てのトラフィックを破棄し、必要なものを指定して許可することがセキュアなファイヤーウォールの作り方らしい。

    # iptables -P INPUT DROP
    
  • ESTABLISHED,RELATEDの許可
  • ESTABLISHED
    確立された既存のパケットと関係のあるパケット
    RELATED
    既存のパケットと関係のある新しいセッションのパケット
    # iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    



  • loopbackの許可
  • loopbak(lo)interfaceは多くのサービスやアプリケーションに必要である。

    loopback
    自分自身に対するデータ通信
    # iptables -A INPUT -i lo -j ACCEPT
    



  • INVALIDの破棄
  • invalid状態のトラフィックを全て破棄すること。

    トラフィックは状態により、NEW,ESTABLISHED,RELATED,INVALIDという4つのカテゴリに分けられる。

    そして、"stateless"firewallよりもセキュアな"stateful"firewallを作ることが可能。

    # iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
    


  • ICMP echo requestの許可(ping)
  • PCがルータでなくなってから、他に状態NEWのICMPトラフィックは許可する必要はない。

    # iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
    


  • OPEN chainsの設定
  • トランスポート層でありネットワーク層のIPとセッション層のプロトコル橋渡しする。

    UDP
    user datagram protocol
    TCP
    transmission control protocol

    新しい接続はsyn packetで始まる。

    # iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
    # iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
    



  • RST TCPコネクションと、ICMP port unreacheのUDP streamは拒絶(REJECT)する。
  • これはデフォルトのLinuxのふるまい(RFC準拠)を模倣しており、接続停止の素早い許可と整理がなされる。

    REJECT:dropとは違い、拒絶したことが送り側に返される。

    RST:syn を送り、接続できなかった場合RSTパケットが送られてくる。

    # iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
    # iptables -A INPUT -p tcp -j REJECT --reject-with tcp-rst
    



  • 他のプロトコルのための設定。
  • これはデフォルトのLinuxの振る舞いを模倣している。

    # iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
    

    以下ではFTP,SMPT,WEBを許可している。



    FTPの許可
    # iptables -A TCP -p tcp --dport 20 -j ACCEPT
    # iptables -A TCP -p tcp --sport 20 -j ACCEPT
    # iptables -A TCP -p tcp --dport 21 -j ACCEPT
    # iptables -A TCP -p tcp --sport 21 -j ACCEPT
    


    SMTP(送信)の許可
    # iptables -A TCP -p tcp --dport 25 -j ACCEPT
    # iptables -A TCP -p tcp --sport 25 -j ACCEPT
    


    WEBの許可
    # iptables -A TCP -p tcp --dport 80 -j ACCEPT
    # iptables -A TCP -p tcp --sport 80 -j ACCEPT
    



  • spoofing attack対策(なりすまし)
  • spoofing attackに対応するために/etc/sysctl.confを編集する。

    vim /etc/sysctl.conf
    net.ipv4.conf.all.rp_filter=1
    



  • Hide PC
  • echo リクエストをブロックする。

    vim /etc/sysctl.conf
    net.ipv4.icmp_echo_ignore_all = 1
    

    また、レート制限をすることは不正行為をコントロールするためには良い方法といえる。

    iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 30/min --limit-burst 8 -j ACCEPT
    iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
    



  • ルールのセーブ
  • ここまで行った操作を保存する。

    # /etc/rc.d/iptables save
    



  • boot時の読み込み(/etc/rc.conf::networkの前に書く)
  • boot時にiptablesが読み込まれるようにdaemonの設定をする。

    DAEMONS=(... iptables network ...)
    


サーバ用ではない個人用のPCのファイアーウォールの設定としてArch linuxに以上のiptablesの設定をした。




参考リンク
Archwiki::Simple Stateful Firewall


2012-03-21

Arch linux 設定(sound)

前回に引き続きArch linuxでのsoundの設定についてまとめておく


サウンドドライバについて

まずalsaとossという2つのサウンドドライバのどちらを使うべきなのかで迷ったが、
Archwikiによると現在はalsaが主流でArch linuxにはデフォルトで入っているということ 。



以下にpacmanでインストールするsound関係list

  • alsa-utils:alsamixerが使えるようになる。
  • alsa-oss:ossのサウンドドライバで動作するアプリケーションをalsaで動かす。
  • alsa-plugins:必要ないかもしれない。
pacman -S alsa-utils alsa-oss alsa-plugins
alsamixer   <-sound調節
speaker-test -c 2    <-soundtest
alsactl store       <-設定保存
/etc/rc.confのdeamon=(…@alsa…)と追加 以上の設定でsound設定は問題ないはず。
参考リンク Archwiki:Advanced Linux Sound Architecture

2012-03-19

Arch linux のインストール方法

手持ちのノートPCにArch linuxのインストールを行ったので、
自分の行った設定を忘れたときなどの為にまとめておく。

Arch linux
動作に最低限の状態でインストールをし、ユーザーが必要なパッケージをインストールしていくことで理想的な環境を構築できるディストリビューション。

Arch linuxのインストールを行う。

公式のHPからイメージをDL。その後、
インストールCDを入れて立ち上がったら、まずkeymapの選択を行う。

km          
を入力しその中からjp106を選択する、これで日本語のkeymapになる。次のフォントはskipでよい。

keymapの選択が終わったら

/arch/setup
でarchlinuxのインストールが始まる。


以下はインストール時の設定ファイルである。

/etc/rc.conf
KEYMAP="jp106"
LOCALE="ja_JP.utf8"
HARDWERECLOCK=""<-localtime or UTC HOSTNAME="hoge"





/etc/locale.gen
使用をしてもよいロケールのコメントアウトをはずす。

/etc/hosts
rc.confで入力したhostname は自動で入力されているので編集する必要はないかもしれない。

/etc/pacman.d/mirrorlist
日本のサーバーのチェックを外しておく。

インストール後,pacman -S pacman-mirrorlist で新たなミラーリストを入手可能


GRUBの所で編集画面に入るが、他にOSがなければ編集の必要はない。
あるならば、ファイルの末尾の部分に使用するOSを追加していく。

ここまでで簡単にだがインストール作業が終了。


とりあえずリブートを行っておく。rebootで再起動ができる。haltでシャットダウン。

reboot

パッケージのアップデートも行っておく。
pacman -Syu

ユーザの追加

一般ユーザを作っておき、そちらで作業を行う。

ユーザの追加
adduser
・username:hoge
・Aditional group:audio,lp,optical,storage,video,wheel,games,power,scanner
ユーザの削除
userdel hoge


viのsudoを可能にする

以下の設定はユーザがwheelグループに含まれて入る場合に有効となる。

visudo
#%wheel ALL=(ALL) ALL   <ーコメントアウトを外す

wheel グループのユーザはsudoが使用可能になる。



無線LANへの接続

使用しているデバイスを見る。

lspci |grep -i net

ここからはbroadcomのBCM4312用の設定についてである。Archwikiには他の場合についても書いてある。

pacman -S b43-fwcutter
b43-fwcutter -l

以下のページからファームウェアをダウンロード
http://linuxwireless.org/en/users/Drivers/b43


ファームウェアの展開

tar xjf broadcom-wl-[firmware_version].tar.bz2
export FIRMWARE_INSTALL_DIR="/lib/firmware"
b43-fwcutter -w "$FIRMWARE_INSTALL_DIR" broadcom-wl-[firmware_version]/linux/wl_apsta.o

無線LANを有効にする

modprobe b43
ip link set wlan0 up
iwlist wlan0 scan

ここで無線LANがWPA/WPA2だったのでwpa_supplicant 及び wpa_passphrase を使用する

mv /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.original
wpa_passphrase ESSID "my_secret_passkey" > /etc/wpa_supplicant.conf
を行い
wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant.conf
でLANに接続
dhcpcd wlan0
でインターネットに接続できるようになる。


ひとまずインストールとしてはここまで、GUI関係はまとまったら
参考リンク
Archwiki

導入メモ:Arch Linux




2012-03-09

rssのxml構造を少し

ネットの定点観測としてrssが便利だねってことで
rssを取り込む時の基礎知識程度だが、

rssはchannel要素とitem要素に分かれている。
channelはサイトの基本情報、itemは記事の情報で
rssを取得するときはitem要素の記事の情報を取得することが目的のはず

title:タイトル
link:url
description:概要

の3つが必ずある要素で、
以下にあるかは分からないが便利そうな要素

language:言語の選別が可能になる(channelのみ)
pubDate:コンテンツの発行日時
category:コンテンツのカテゴリ(便利かも)


参考リンク

RSS 2.0 Specification 日本語訳

RSSのフォーマット・仕様・構造 - RSS1.0、RSS2.0、Content-Type