Initシステム

upstartとsystemdの見分け方

各々、代表的なコマンドがあるかどうかで決めて良いと思います。以下、自分の環境で調べた結果をまとめます

How To Confirm

system command
sysVinit cat /etc/inittab
upstart initctl
systemd systemctl

Confirmed List

distribution system
ubuntu14,04 upstart
ubuntu15.04 systemd
raspbian sysVinit
CentOS6.2 upstart
CentOS6.7 upstart
CentOS7.1 systemd

systemd

ubuntu14.10からsystemdの導入が決定し、CentOS7もsystemdに移行しているので、時代のトレンド的にSystemdが流行り出しているのかな、とか勝手に思っていますが、要するにsysVinitは依存関係上の処理が止まると全てのサービスの起動が停滞してしまう、という欠点があり、それが起動の遅延を引き起こしていましたが、systemdはサービスの起動を並列的に処理してくれるので結果的に起動が速くなります。

注意ですが、sysctlコマンドはカーネルのパラメータを操作するときのコマンドであり、systemdのコマンドではありません。 Systemd関連記事
systemdを本番運用してわかったこと

upstart

Upstartもsystemdと同じような働きをしており、過去多くのLinux distributionで利用されてきましたが、今はUpstartよりも多機能で膨大な働きができるSystemdの方が主流となっているようです。しかしながらUbuntu14.04LTSではUpstartが採用されていますので、現在のところどちらも使えるようになっておく必要があります(私の場合ですが)。

起動スクリプトの考え方は変わらない

起動スクリプトの考え方、つまりは、CentOS6における、/etc/init.d/* startみたいな使い方には変化しないようです。systemdではsystemctlを使用するかservice サービス名という使い方をします。

Nov 7th, 2015

このブログについて

環境を整える

for ubuntu

下のインストールは、ubuntu14.04用

haroopad(64bit)のインストール

1
2
3
wget https://bitbucket.org/rhiokim/haroopad-download/downloads/haroopad-v0.13.1_amd64.deb
sudo apt-get -y install gdebi
sudo gdebi haroopad-v0.13.1_amd64.deb

rbenvのインストール

1
2
3
4
5
6
7
8
9
sudo apt-get update
sudo apt-get upgrade
cd ~
sudo apt-get install git build-essential libssl-dev
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

octopress環境のインストール

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir blog
cd blog
git clone git@github.com:YusakuSakamoto/YusakuSakamoto.octopress.git
cd YusakuSakamoto.octopress
git clone git@github.com:YusakuSakamoto/YusakuSakamoto.github.io.git _deploy
sudo apt-get install rbenv
rbenv install 1.9.3-p0
rbenv local 1.9.3-p0
sudo apt-get -y install curl nodejs build-essensial
sudo apt-get -y install gem
gem install rails
gem install bundler
bundle install
rake install

ubuntu14.04LTSでのインストールを確認しました。

for centos

ブログの環境の整え方を再勉強してみた

  1. rubyの基礎知識
  2. bundleとは
  3. gemとは
  4. nodejsとは
  5. curlとは
  6. rakeとは
  7. jekyllとは

rubyの基礎知識

octopressを使うには、ruby1.9.3の環境が必要、とありますので、インストールしなければなりませんが、aptでは入れることができません。そのため、

のコマンドでインストールします。ここでrbenv versionsのコマンドを打てば、バージョンを確認できます。これでrubyのインストールは終了です。

bundle

bundleとは

英語で意味は「束」です。BundlerはRailsアプリケーションに必要となるGemパッケージの種類やバージョンを管理し、複数のPCで必要なGemパッケージをインストールする仕組みを提供してくれます。 railsは、webアプリケーションを作るためのフレームワークです。bundle installは、Gemfileに指定されたものをインストールするものです。Gemfileにrakeやjekyllなども記述してあります。

Nov 2nd, 2015

CentOS7のインストール

logo centos

基本の知識

CentOSは、Red Hat系linuxであり、RHELの完全互換を目指した無料のlinux distributionである。

ROSでdistroという言葉が出てきていましたが、distro = distributionだそうです。もちろん、debianではないのでaptは使えません。では、その代わりに何があるのかというと、yum(Yellowdog Updater Modified)というメタパッケージ管理システムが用意されています。

しかし、デフォルトの状態であれば、入れることができるアプリケーションは非常に限定的であり、レポジトリを新たに追加するという人が多いようです。

管理ファイルは、/etc/yum.repos.dのレポジトリ。
ここに.repoファイルを作成すればいいようです。

yumのレポジトリを確認する

yum repolist

私の環境(入れたばかり)の状況では、以下のものが出ました。

1
2
3
4
5
6
7
8
9
10
読み込んだプラグイン:fastestmirror, langpacks
Determining fastest mirrors
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
リポジトリー ID                  リポジトリー名                      状態
base/7/x86_64                    CentOS-7 - Base                     8,652
extras/7/x86_64                  CentOS-7 - Extras                     236
updates/7/x86_64                 CentOS-7 - Updates                  1,531
repolist: 10,419

レポジトリの説明

私はなんの気無しにiijというミラーサイトのOSをダウンロードして入れてみましたが、iijとはおそらく(internet initiative japan)の会社のことです。日本の会社であるので、もうあらかたの日本語環境は導入済みなようです。ここでは、予めOSのイメージを作成した際に、これは絶対に必要だと判断されたもののパッケージがbase,extras,updatesというレポジトリとして存在しています。

では、yumにレポジトリの追加をしていきます。とりあえず、以下の3種類のものをとりあえず入れたら?みたいな感じで様々なサイトに記載していましたので、どのようなレポジトリなのかを調べてみましょう。

  • repoforge
  • epel
  • remi
  • RPMFusion
  • IUS
  • Utter Ramblings

注意
今は、RPMForgeではなく、Repoforgeという名前になっているようです
しかし、rpmファイルの名前は依然としてrpmforgeになっていたりして。

調べた結果、個人的な感想を述べるとすれば、みなさんパッケージの種類が増えるだの、バージョンが増えるなど、様々言いたいことを申しているようですが、よくわからないので公式ページを見に行きました。

RPMforge is a collaboration of Dag and other packagers. They provide over 5000 packages for CentOS, including wine, vlc, mplayer, xmms-mp3, and other popular media tools. It is not part of Red Hat or CentOS but is designed to work with those distributions. See also Using RPMforge and Repoforge.

そんだけかい!

その他のレポジトリもそんなものなんでしょう。とりあえずいっぱい追加しても悪いことはない、ということですね。

repo追加(rpmforge,epel,elrepo,remi,IUS)

1
2
3
4
5
6
7
8
9
10
11
cd ~/Downloads
rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7
rpm -ivh http://ftp-srv2.kddilabs.jp/Linux/packages/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -ivh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
rpm --import http://rpms.famillecollet.com/RPM-GPG-KEY-remi
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
wget https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/ius-release-1.0-14.ius.centos7.noarch.rpm
rpm -Uvh ius-release-1.0-14.ius.centos7.noarch.rpm

各種インストール

keepassxのインストール

ubuntuを使っている間は、keepass2をインストールするのが当たり前でしたが、今回はcentosで、しかも不慣れなyumなので、少しの違和感がありました。次のコマンドを実行
sudo yum install keepassx

初めて聞きますが、このコマンドで入りました。

dropboxのインストール

解説ページにしたがってコマンドを入力するだけで入ります。ありがとうございます。

gitのインストール

1
2
sudo yum install git
sudo yum install gitk

git-flowのインストール

これに関してはビビりまくっていましたが、yumで行けるんかい!となってしまいました。コマンドはこちら

1
sudo yum install -y gitflow

keepass2のインストール

keepassxですが、これでは.kdbxのファイルは扱えない、ということらしいので、入れなおしました。
gitでkeepass2のインストーラーを起動します。
この時にちょっとしたエラー
monoについてのエラーのようですが、以下のコマンドで解決しました。
install方法を示します。

1
2
3
4
5
6
7
8
sudo yum install mono-core
sudo yum install mono-devel
sudo yum install mono-devel
cd ~/Downloads
git clone https://github.com/akmc/fedora_keepass_installer
cd fedora_keepass_installer
chmod u+x keepass.sh
./keepass.sh

build-essentialsをinstall

ubuntuでは簡単ですが、ccentosの場合は?

1
2
3
sudo su
yum groupinstall "Development Tools"
yum install kernel-devel kernel-headers

yumのgroup-installを使えばいいようですね。存在は知っていましたが、初めて使いました。これによって、gccだのg++だのもすべてインストールしてくれるので、素晴らしく楽ですね。

emacs 24.4のインストール

なんか気持ち悪い….
しかし入りました。

1
2
3
4
5
6
7
8
9
yum install gcc make ncurses-devel gtk+ gtk3-devel.x86_64
yum install giflib-devel libjpeg-devel libtiff-devel
cd /usr/local/src
wget http://mirror.bjtu.edu.cn/gnu/emacs/emacs-24.4.tar.gz
tar xzvf emacs-24.4.tar.gz
cd emacs-24.4
./configure --without-all --with-x-toolkit=no --without-x
sudo make
sudo make install

gitのバージョンアップ

1
2
3
4
5
6
7
8
9
sudo yum remove git
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
cd ~/Downloads
wget https://www.kernel.org/pub/software/scm/git/git-2.5.1.tar.gz
tar -zxf git-2.5.1.tar.gz
cd git-2.5.1
sudo make
sudo make install
git --version

していない?

vimのインストール

これに関しては、ほぼ教科書通りのことをしました。 vimは今までの過程で既に入っているようでしたので、neobundleの設定をして終了でした。

その他

tmuxのインストール

1
sudo yum install tmux

haroopadのインストール

1
2
3
4
5
6
7
8
wget https://bitbucket.org/rhiokim/haroopad-download/downloads/haroopad-v0.13.1-x64.tar.gz
tar -zxv haroopad-v0.13.1-x64.tar.gz
cd haroopad-v0.13.1-x64
tar -zxvf data.tar.gz
sudo cp ./usr/ / -rf
tar zxf control.tar.gz
chmod 755 postinst
sudo ./postinst

VirtualBoxのインストール

CentOS 7 における VirtualBox のインストール手順

日本語環境のインストール

1
2
3
4
sudo yum -y groupinstall "Japanese Support"
sudo yum -y install ibus-anthy
sudo yum -y remove ibus-kkc
sudo yum -y install ibus-kkc

参考文献

  1. UnixPower on Networking
  2. repositoryの解説・入れ方
  3. dropboxのinstall
  4. CentOS7の日本語入力にAnthyを使うには
Oct 27th, 2015

Passport08

キャッシュメモリ

主記憶とのアクセス時間を見かけ上短縮することによって、CPUの処理効率を高める。

フラッシュメモリ

フラッシュメモリは、不揮発性(電源を切っても記録が消えない)のメモリで、これをカードがあにしたものがメモリカードと呼ばれる。

DRAM

DRAM(Dynamic Random Access Memory)は、単純で安価であるので、多用される。電荷は時間と共に減少するので、一定時間ごとに記憶保持のための再書込(リフレッシュ)を行う必要がある。電源が切れると、記録が消えてしまうので、揮発性である。

RAID

信頼性、予算、速度のどれに重きを置くのかによってレベルが用意されている。

RAIDレベル 内容
RAID0 ストライピング
RAID1 ミラーリング
RAID2 ハミング符号による耐障害性保証
RADI3 パリティによる障害性保証
RAID4 パリティによるブロック単位記録
RAID5 パリティによるブロック単位分散記録
RAID6 パリティによるブロック単位分散記録の方法にもう一手間

シリアルATA(SATA)

Oct 24th, 2015

Passport04

ウォーターフローモデル

手順 1. 基本計画(実現目標) 2. 外部設計(具体的な機能として定義) 3. 内部設計(機能を実現する処理ごとにプログラムを分割する) 4. プログラム設計(プログラムの構造を設計) 5. プログラム(ロジック) 6. テスト

ファンクションポイント法

開発工数を見積もる方法。機能数や複雑さによって重み付けした点数をつけることから。

構造化プログラミング

制約はあるが、保守しやすいプログラム。制御構造として、順次、選択、繰り返しの3種類が挙げられる。

共通フレーム2007

共通フレーム(SLCP-JCF)とは、SLCPの国際標準準拠であるISO/IEC 12207を日本の商習慣に合わせて拡張したものである。

  1. 要件定義プロセスのアクティビティは利害関係者要件の定義
  2. 企画プロセスのアクティビティはシステム化計画の立案
  3. 開発プロセスのアクティビティはシステム方式設定とソフトウェア要件定義

企画プロセスの目的

経営事業の目的、目標を達成するために必要なシステム化の方針及びシステムを実現するための実施計画を得ること

Oct 23rd, 2015

Raspi_pwm

raspberry_Piでpwm信号を扱う

以下の動画の様なことをしました。

レポジトリraspiにプログラムを追加。

Oct 23rd, 2015

Tmux使ってみました

install

以下の環境で動作確認済みです。
- raspberry Pi
- ubuntu15.04
- ubuntu14.04LTS

1
2
3
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install tmux

memo

機能 キー
ウィンドウ移動 ctrl-b o
水平分割 ctrl-b “
垂直分割 ctrl-b %
分割解除 ctrl-b x

元ネタ 完熟トマト

感想

ctrl-bが辛い。その他良好。

遊び

画面分割、という機能は割となんにでも装備されているものです。
- terminator
- tmux
- emacs
- vim

での端末分割・作成ができるようになりましたので、ここで一度遊んでみました。 terminal

  • 左上がterminator
  • 左下がVimShell
  • 右上がtmux
  • 右下がemacsのansi-term

です。遊んでみた結果、端末で端末の端末が開けるという事を実証できたことに満足。 なんにせよ、これでraspberry pi での操作が簡単になります。

Oct 23rd, 2015

半波整流

osiro

用語整理

1. 半波整流回路(以下、参考文献1より)

読み方:はんぱせいりゅうかいろ 【英】Half-Wave Rectifier Circuit

半波整流回路とは、電流をある正・負どちらかの方向にのみ流れるようにする回路(整流回路)のうち、交流電流において正・負の両方の方向に流れている電流のどちらか一方だけを流すことによって整流を行う回路のことである。

半波整流回路は、主にダイオードなどを利用して実現される。ダイオードは整流素子と呼ばれる素子の一つで、電流をアノードからカソードへの方向にしか流さない性質を持っている。そのため、回路中にダイオードを一つ挟むことによって、電流を常に単一の方向にしか流れないようにすることができる。

半波整流回路は、整流素子一個だけで手軽に整流回路が構成できるという利点がある。その反面、電流サイクルの半分を遮断して整流している仕組み上、変換効率が悪いなどの困難がある。このため、半波整流回路はもっぱら簡易的な、負荷や容量の小さい整流器に使用されている。

単純に半波整流回路で整流しただけの電流は、交流電流の波形を残した脈流と呼ばれる状態となっている。このとき、平滑回路やチョークコイルなどを使用することにより、脈流をより直流電流に近づけることができる。

なお、半波整流回路に対して、交流の正・負の両方の電流を同一方向へ流れるようにする(整流する)ことによって電流を変換する回路が、全波整流回路と呼ばれている。全波整流回路の構造は、電気製品のACアダプタなどで一般的に利用されている。

つまり?

ダイオードを用いて、マイナス電圧をクランプ(clamp:制限)した回路のこと。例えば、電池を逆につないでも壊れない、みたいな使い方ができる。実際、一度逆電圧をかけるだけで壊れてしまう電子部品なんてたくさんあります。

2. ダイオード

ダイオードは、n型半導体とp型半導体でできている。ダイオードには、逆電流を流さないという特性を持っているが、一定以上の逆電圧をかければ電流は流れ始める。

n型半導体

wikiより
n型半導体(エヌがたはんどうたい)とは、電荷を運ぶキャリアとして自由電子が使われる半導体である。負の電荷を持つ自由電子がキャリアとして移動することで電流が生じる。つまり、多数キャリアが電子となる半導体である。 例えば、シリコンなど4価元素の真性半導体に、微量の5価元素(リン、ヒ素など)を不純物として添加することでつくられる。不純物半導体に含まれる。

  • N型半導体をつくる為の不純物をドナーといい、この不純物より形成された準位をドナー準位と呼ぶ。
  • 負の電荷を持つ自由電子が多数キャリアであることから、英語の頭文字をとってn型半導体と呼ばれる。
  • 工学ではn形半導体と表記される(日本工業規格(JIS)など)。

p型半導体

wikiより
p型半導体(ピーがたはんどうたい)とは、電荷を運ぶキャリアとして正孔(ホール)が使われる半導体である。正の電荷を持つ正孔が移動することで電流が生じる。つまり、正孔が多数キャリアとなる半導体である。 例えばシリコンなど4価元素の真性半導体に、微量の3価元素(ホウ素、アルミニウムなど)を添加することでつくられる。不純物半導体に含まれる。

  • p型半導体をつくる為の添加物をアクセプタといい、この添加物によって形成された準位をアクセプタ準位と呼ぶ。
  • 正(英: positive)の電荷を持つ正孔が多数キャリアであることから、英語の頭文字をとってp型半導体と呼ばれる。
  • 工学ではp形半導体と表記される(日本工業規格(JIS)など)。

3. マイナス電圧

電圧とは、相対的なものであるので、必ずしもearthが0Vということではない。実際、交流は正の電圧と府の電圧が交互(alternative)に入れ替わるので、ACと呼称される。つまり、どこを基準(GND)とするかで、電圧というものは変わってくる。だけど殆どは地球(earth,ground)を基準電圧とすることが多い。

こうして考えると、電気製品は静電気とかめっちゃ怖かったんだろうな。今はそんなに聞かないけど。

4. 発信器

発信器は、矩形波や正弦波のような電圧の波を発生させるのに使用されます。

動作原理は、LC共振回路(コイルとコンデンサ)、またはRC回路(抵抗とコンデンサ)の回路を用いて発生させるようです。人間の叡智ですね。

擬似的な交流電流を作って、電気回路の実験をするときは、低周波発信器を使ったことがあるかもしれませんね。

5. オシロスコープ

さて、ここは少し重要なことですが、オシロスコープの内部構成によって、以下の動作がされます。

  • DCで接続した場合 低周波の交流電圧、または直流の電圧を測定するのに用いられます。つまり、直流成分も交流成分も表示します。基本的にはこのDCモードで測定をおこないます。もしも発振周波数が高すぎると、過渡減少が発生して正常な測定ができなくなります。

  • ACで接続した場合 入力に直列にDCカット用のブロッキングコンデンサが入れられるようです。つまり、DC成分が観測されませんが、高周波の交流回路でも安定して計測できます。

考察的な何か

ダイオードで交流電圧を半波整流にしても負電圧を通す理由

詳しくは参考文献4を参照して下さい。
つまり、少数キャリア蓄積効果というものが関係しているらしいです。

順方向電圧をいきなり0Vにすれば、理想的なダイオードでは、確かに0Vになります。しかし、現実では一旦逆方向電流が流れ、次第にだらだらと0Vに近似していくような経過をたどります。したがって、今考えている状況では逆方向電圧が僅かながらにかかっているわけですから、写真のような挙動をします。

オシロスコープの負電圧を通した部分の波形が右側にずれてしまっている件

これは前述した少数キャリア蓄積効果が少しかぶっていますが、回路的に逆電圧をかけて、おそらく半導体に電荷が微量溜まっていて、コンデンサ的な働きをしているのではないか、と考えられます。したがって負電荷から正電荷に変わる際には値が急激に上がっており、逆に正電荷から負電荷になる際には電荷が流れなくなった結果、傾きが緩やかになっていると考えます。

参考文献

  1. IT用語辞典バイナリ
  2. 半波整流波形の実効値、平均値、最大値、波形率、波高率の計算方法
  3. 初歩の測定器活用、入門シリーズ第4回目 オーディオ発振器
  4. ダイオードの特性
  5. ダイオードの逆回復時間とステップリカバリダイオード
Oct 20th, 2015

Passport05

PERT(Program Evaluation and Review Technique)

partではありません。pertです。 IT用語辞典から

PERTとは、プロジェクトマネジメントの手法の一つで、各工程の依存関係を図示して所要期間を見積もったり、重要な工程を見極めたりする手法。1950年代に米海軍で弾道ミサイル開発プロジェクトのために考案された手法である。

PERTでは各工程を依存関係(前の工程が終わらないと、次の工程が始められない)に従って矢印で繋いでいき、それぞれの工程には所要時間を記入していく。出来上がったネットワーク図(アローダイアグラム、PERT図とも呼ばれる)にはプロジェクト開始から終了まで通常いくつかの経路が現れる。経路をたどって各工程の所要時間を足し合わせていくとその経路の所要時間が求められ、その中で最大のものがプロジェクト全体の工期の見積りとなる。

man-month

単位:人月について IT用語辞典から

人月とは「人数×月」を意味し、プロジェクトに投入する人員と、月で表した一人あたりのプロジェクト従事期間の積を表す。1人で1ヶ月かかる仕事の量が1人月である。10人で6ヶ月かかれば60人月、100人で半月かかれば50人月となる。

開発規模

定義
開発規模 = 開発工数 ✕ 生産量 / 単位時間

ここで、
生産性 =  生産量 / 単位時間

DOA

データ中心アプローチ(Data Oriented Approach:DOA) 手法
1. ERモデルをモデル化
2. 正規化
3. RDB(リレーショナル・データベースを)設計

利点
データの整合性、一貫性が保たれる

POA

プロセス指向アプローチ(Process Oriented Approach:POA)
手法
1. 業務の手順・工程を図に書き表す
2. ソフトウェア・システムの挙動の決定

欠点 データの連続性が失われる。

WBS

作業分解図(Work Breakdown Structure:WBS)
1. 全体を大きな単位に分割
2. 細分割化(ワークパッケージの作成)

OBS

作業構成図(Organization Breakdown Structure:OBS)
WBSで作成された作業の単位(ワークパッケージ)に責任者と担当者を配置したもの

Oct 20th, 2015

Raspi1

Wiring Piの導入方法

raspberry pi 2 model Bにて動作確認済み
wiringPi installの手順

1
2
3
git clone https://YusakuSakamoto/raspi ~/GPIO
cd ~/GPIO
sh wiringPi.sh

wiringPi.shの中身

1
2
3
4
5
6
7
8
sudo apt-get install git-core
sudo apt-get update
sudo apt-get upgrade
mkdir -p ${HOME}/lib
git clone git://git.drogon.net/wiringPi ${HOME}/lib/wiringPi
cd ${HOME}/lib/wiringPi
git pull origin master
./build

WiringPiを使用したLチカ

LED Light

blinkレポジトリのプログラムを実行する

makeして下さい。デフォルトの状態では、Physical13ピンでの動作をします。

Oct 19th, 2015