Zabbixサーバ構築
CentOS 6.6で行った。
Zabbixサーバ構築
#リポジトリの登録 rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm # Zabbixサーバのインストール yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese # MySQLのインストール yum install -y mysql-server # MySQLの環境設定 vim /etc/my.cnf で以下の2行つけたす default-character-set=utf8 skip-character-set-client-handshak # MySQL起動 service mysqld start # Zabbix用データベースの作成 mysql -uroot create database database_name; grant all privileges on database_name.* to username@localhost identified by 'password'; flush privileges; exit # 初期データベースのインポート cd /usr/share/doc/zabbix-server-mysql-2.2.11/create mysql -uroot database_name < schema.sql mysql -uroot database_name < images.sql mysql -uroot database_name < data.sql # Zabbixサーバの環境設定 vim /etc/zabbix/zabbix_server.conf で DBPassword= をコメントアウトして適当な値を入れる # Zabbixサーバの起動 service zabbix-server start # PHPの環境設定 vim /etc/httpd/conf.d/zabbix.conf で タイムゾーンをAsia/Tokyoにする # Apacheの起動 service httpd start # 自動起動の設定 chkconfig mysqld on chkconfig zabbix-server on chkconfig httpd on
Zabbixエージェント
# Zabbixエージェントのインストール yum install -y zabbix-agent # Zabbixエージェントの設定 vim /etc/zabbix/zabbix_agentd.conf で Server=server IP Address ServerActive=Server IP address # 自動起動の設定と起動 chkconfig zabbix-agent on service zabbix-agent start
PythonでMySQL基本操作
ライブラリのインストール
ここからmysql-connector-pythonのzipファイルをダウンロード.
Index of Packages : Python Package Index
そして、解凍先へ行って
python setup.py install
するだけ。
コード
import mysql.connector try: cnn = mysql.connector.connect(host='localhost', db='データベース名', user='ユーザ名', passwd='パスワード', port=ポート番号, charset='文字コード' ) # 例で t1 というテーブル作ってます cur = cnn.cursor(buffered=True) cur.execute("drop table if exists t1") cur.execute("create table t1 (a int,b int)") sql = "insert into t1 values " for j in range(100): for i in range(10000): sql += "("+str(i)+","+str(i)+")," sql += "("+str(-1)+","+str(-1)+")" cur.execute(sql) cnn.commit() sql = "insert into t1 values " except Exception as e: print e
参考文献
MySQL 基本文法2 メモ
並べ替えと抽出
# カラム名で昇順 select * from テーブル名 order by カラム名; # カラム名で降順 select * from テーブル名 order by カラム名 desc; # グループ化->抽出 select カラム名 from テーブル名 group by カラム名 having 条件 select bang,sum(uria) from tb group by bang having sum(uria)>100;
更新
# 指定したカラム名の値すべて変更 update テーブル名 set カラム名=値; # 条件に一致したレコードのカラムだけ修正 update テーブル名 set カラム名=値 where 条件;
統合
# 基本統合(重複分はunion allで出せる) (select カラム名 from テーブル名1 where 条件) union (select カラム名 from テーブル名2 where 条件);
結合
# 内部結合 select カラム名 from テーブル名1 join 結合するテーブル名2 on テーブル名1.カラム名=テーブル名2.カラム名; # 左外部結合 select カラム名 from テーブル名1 left join テーブル名2 using(カラム名); #右外部結合 select カラム名 from テーブル名1 right join テーブル名2 using(カラム名);
サブクエリ
# tb1内のtosiの平均値以上のtosiをもつレコードの抽出 select * from tb1 where tosi >= (select avg(tosi) from tb1); # tb内のuriaの最大値をもつレコードの抽出 select * from tb where uria in (select max(uria) from tb); # tbにあってtb1にないやつ以外の情報の中でtb1にあるレコードを抽出 select * from tb1 where exists (select * from tb where tb.bang=tb1.bang); # tbにあってtb1にないやつの情報の中でtb1にあるレコードを抽出 select * from tb1 where not exists (select * from tb where tb.bang=tb1.bang);
ストアドプロシージャ
# 定義 delimiter // create procedure pr2(d int) begin select * from tb where uria>=d; end delimter ; // # 呼び出し call pr2 # 内容表示 show create procedure pr2; # 削除 drop procedure pr2;
ストアドファンクション
# 定義 delimiter // create function fu1(sintyo int) returns double begin return sintyo * sintyo * 22 / 10000; end // delimiter ; # 呼び出し select fu1(174); # 変数定義 delimiter // create function fu2() returns double begin declare r double; select avg(uria) into r from tb; return r; end // delimter ; # 内容表示 show create function fu2; # 削除 drop function fu2;
トリガ
# 定義 delimiter // create trigger tr1 before delete on tb1 for each row begin insert into tb1M values (old.bang, old.nama, old.tosi); end // delimiter ; # 確認 show triggers; # 削除 drop trigger tr1;
ストレージエンジン
# ストレージエンジンの確認 show create table tb;
トランザクション処理
# トランザクションの開始 start transaction; # ロールバック rollback; # コミット commit; # 自動コミットをオフ set autocommit=0; # 自動でコミットされる処理 drop database drop table drop alter table
ファイル
# コマンドが書かれたファイルの読み込んで実行 source ファイルのパス # CSV読み込み load data infile 'CSVファイルのパス' into table テーブル名 fields terminated by ','; # CSV書き込み select * into outfile 'CSVファイルのパス' fields terminated by ',' from テーブル名; # 実行コマンドと結果をファイルに書き込み開始 ## 始まり tee ファイル名 ## 終わり notee
参考文献
基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )
- 作者: 西沢夢路
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/05/01
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (9件) を見る
MySQL 基本文法 メモ
ログインとログアウト
ログイン
# 対話モード mysql -u username -p password # ファイルを読み込ませて実行 mysql -u username -p password -e ファイルのパス
ログアウト
quit or exit
設定
# ユーザの作成 create user username@localhost identified by ‘password’; # ユーザの削除 drop user username; # 権限の付与 grant authority on database_name.table_name to username@localhost; # 情報の表示 status
データベース操作
# データベースの作成 create database new_table_name; # データベースの表示 show databases; # データベースの削除 drop database データベース名; # 使用するデータベースを決める use database_name; # 現在使用しているデータベースの表示 select database();
テーブル基本操作
# テーブルの作成 create table table_name(column_name1 data_type1, column_name2 data_type2, ……) charset=utf8; # 指定のテーブルが存在しているときに削除 drop table if exists テーブル名; # 自動インクリメントの初期化 alter table table_name auto_increment=0 # すべてのテーブルの表示 show tables; # テーブルの属性構造の表示 desc table_name; # テーブルのコピー create table new_table_name select * from table_name;
データ操作
# データの挿入 insert into table_name values(data1, data2,…...); # データの表示 select カラム名1, カラム名2,... from table_name; # すべてのデータ表示 select * from table_name; # レコードの削除 delete from テーブル名; # カラムのデータ型の変更 alter table table_name modify カラム名 データ型 # カラムの追加 alter table table_name add カラム名 データ型; # カラム位置の変更 alter table table_name modify カラム名 データ型 first # 先頭 alter table table_name modify カラム名 データ型 after bang # bangの後 # カラム名とデータ型の変更 alter table table_name change 変更前カラム名 変更後カラム名 変更後データ型; # カラムの削除 alter table table_name drop カラム名; # カラム情報だけコピー create table 新しいテーブル名 like テーブル名; # 他のテーブルのデータをコピー insert into コピー先のテーブル名 select * from コピー元のテーブル名; # 特定のカラムを選択してコピー insert into コピー先のテーブル名 (カラム名) select カラム名 from コピー元のテーブル名;
インデックス操作
# インデックス作成 create index インデックス名 on テーブル名(カラム名); # インデックスの表示 show index from テーブル名 \G # インデックスの削除 drop index インデックス名 on テーブル名;
テーブルいろいろ操作
# 主キー設定 create table table_name(column_name1 data_type1 primary key, column_name2 data_type2, ……) charset=utf8; # UNIQUE create table table_name(column_name1 data_type1 unique, column_name2 data_type2, ……) charset=utf8; # 自動インクリメント create table table_name(column_name1 data_type1 auto_increment primary key, column_name2 data_type2, ……) charset=utf8; # デフォルト値 create table table_name(column_name1 data_type1 default 初期値, column_name2 data_type2, ……) charset=utf8;
条件に一致したレコードの表示
# 条件に一致したレコードの表示 select カラム名 from テーブル名 where 条件;
演算子 | 内容 |
---|---|
A in B | Bの中にAがある |
A not in B | Bの中にAがない |
A between B and C | BからCにAがある |
A not between B and C | BからCにAがない |
例
# カラム名に4か5をもつレコードの表示 select * from テーブル名 where カラム名 in (4,5) # あいまい検索 like # %は任意の文字列, _は任意の1文字 select * from tb where カラム名 like 条件 select * from tb where bang like '%03_'; # 一致 select * from tb where bang not like '%03_'; # 不一致 select * from tb where bang is null; # null
参考文献
基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )
- 作者: 西沢夢路
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/05/01
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (9件) を見る
各言語での実行時間計測
各言語での実行時間の計測メモ。
シェルスクリプト
#!/bin/sh TIME_START=`date +%s` # start # end TIME_END=`date +%s` PT=`expr ${TIME_END} - ${TIME_START}` H=`expr ${PT} / 3600` PT=`expr ${PT} % 3600` M=`expr ${PT} / 60` S=`expr ${PT} % 60` echo "${H}:${M}:${S}"
Python
import time start = time.time() # start # end end = time.time() - start print end
Ruby
require 'benchmark' result = Benchmark.realtime do # start # end end puts "#{result}s"
参考
スレッド Python
スレッドの使い方のメモ。
# coding:utf-8 import threading # スレッドクラスの継承 # 独自スレッドクラス定義 class MyThread(threading.Thread): # 初期化処理 def __init__(self): super(MyThread, self).__init__() # スレッドの処理 def run(self): print "Class Thread" # スレッドにさせたい処理 def inc(h): for i in range(5): print i print threading.currentThread().getName()+ ": " + h # Main if __name__ == '__main__': # スレッド定義と処理開始 th = threading.Thread(target=inc,name="th",args=("hello",)) th.start() # Mainスレッドの処理 print threading.currentThread().getName() # 独自スレッド定義と処理開始 th_c = MyThread() th_c.start()
統計の基礎とPython
本読みながらコード書いて勉強しています。
Rで統計したことあるけども、Pythonでも。 以下コードメモ。
# coding:utf-8 import numpy as np # データ data = np.array([34,35,47,51,58,62,81]) # 平均計算 ave = np.average(data) print(u"平均:"+str(ave)) # 分散計算 var = np.var(data) print(u"分散:"+str(var)) # 標準偏差計算 std = np.std(data) print(u"標準偏差:"+str(std))
不偏分散と標本分散
Nの値(標本数)を増やしていくと、不偏分散と標本分散の値の差が少なくなる。
# 標本分散 def bunsan(n): ret = 0 for i in range(len(n)): ret += (n[i]-np.average(n))**2 return ret/len(n) # 不偏分散 def bunsan2(n): ret = 0 for i in range(len(n)): ret += (n[i]-np.average(n))**2 return ret/(len(n)-1) N = 100000 r = np.random.random(N)*100 print(bunsan(r)) print(bunsan2(r))
参考文献
まずはこの一冊から 意味がわかる統計学 (BERET SCIENCE)
- 作者: 石井俊全
- 出版社/メーカー: ベレ出版
- 発売日: 2012/01
- メディア: 単行本
- 購入: 4人 クリック: 15回
- この商品を含むブログを見る
PowerShell上でのシャドウコピーの作成
シャドウコピーとは
ここら辺参照。
Volume Shadow Copy Service (Windows)
Windows用語集 - ボリューム・シャドウ・コピー:ITpro
シャドウコピーとは|shadow copy|シャドーコピー - 意味/解説/説明/定義 : IT用語辞典
作成 (Windows8)
シャドウコピーを手動で作ろうとすると、Windowsの「システムの保護」っていう機能から、GUI的にポチポチしていけばできる。
「コントロールパネル」-> 「システムとセキュリティ」-> 「システム」-> 「システムの保護」で出てくる。
GUIでポチポチするのが面倒くさいときは、PowerShellを管理者権限で起動して以下を起動。
> Get-WmiObject -list win32_shadowcopy).Create("C:\","ClientAccessible")
とするだけ。
PowerShell メモ
Power Shell ISEなんか使いにくい。
実行環境
スクリプトを実行できるようにする。 Windows Power Shellを管理者権限で起動し以下を入力する。
Set-ExecutionPolicy RemoteSigned
で、ポリシーを変更するとスクリプトを処理できるようになる。
Hello World
echo “Hello World”
コマンドレット
PS(PowerShell)でのコマンドをコマンドレットという。 Set-LocationとかGet-Contentとか。 Unixコマンドの名前でAliasされているものもある。
alias
で見られる。
コマンドレットのヘルプは
help コマンドレット
で見られる。
コメント
# 単一行コメント <# 複数行コメント #>
基本的な文法
# test.ps1 # 引数定義 Param($p1, $p2) # 変数定義 $test = "Test" ${こんにちは世界} = "Hello World" [int] $one = 1 echo $test echo ${こんにちは世界} echo $one # .NETモジュールのAPIを使用可能 echo $test.ToUpper() # ""なら展開される echo "Hello $test" # 文字列連結 echo ("a"+"b") # 配列 $array = "one", "two", "three" $number = 1..3 echo $array[1] echo $number # ループ foreach($i in @(1,2,3,4)){ echo $i } for($i=0;$i -lt 3;$i++){ echo $i } # if if($true){ echo $true # $true, $false はすでに登録されている }elseif($false){ echo $false }else{ echo "else" } # 引数 echo $args.Length echo $p1 echo $p2 # 関数 function func(){ echo "func" } function func1($a){ echo $a return 0 } func $ret = func1("Hello") echo $ret # 定数 set CONST "const" -option constant echo $CONST # $CONST = "error" エラーになる # コマンドの実行結果取得 $ret = (ls) echo $ret