Windows 8.1 フリーソフトのスクリーンキャプチャー
長らくフリーバージョンのFastStone Captureを愛用していたんですが・・・・
Windows8.1との相性なのか、何なのか分かりませんが新しいパソコン
になってからFastStone Captureが使えなくなってしまいました。
具体的にどう使えないかというとフルスクリーンでキャプチャーすると
このPCは1920 X 1080 pxのフルHDですが1445 X 864 pxという枠になってしまいました。
これじゃあフルスクリーンのキャプチャーではないですね
またウインドウキャプチャーをするとウインドウ位置を正確に捉えてくれません。
この画面のキャプチャーの仕方が分からなかったので携帯で撮りました。
そしてこの状態で選択した画像はというと
あちゃー
ということで、別のソフトを探しました。
そもそもWindows 8.1ではデフォルトの機能としてWindowsキー + Prt Scキーで
C:\Users\ユーザ名\Pictures\Screenshots
へキャプチャー画像が保存されていきます。
でもこの機能ではウインドウのキャプチャーが出来ません。
そこで見つけたのがGreenShot
どんな感じかとういうと起動するとまずタスクトレイに入って
右クリックでメニュー
最初は英語ですが、Preferencesから簡単に日本語化することが出来ます。
ややこしいことはなにもありません。
設定で出力フォルダと、動作を指定するだけで
ショートカットキーでフルスクリーンやウインドウキャプチャーの
画像がどんどん作成されていきます。
ファイルの名前の形式に${title}を入れることが出来るので
2015-06-09 05_49_41-設定.pngみたいなファイル名にすることが出来ました。
これは便利!
ダウンロードとインストール
ダウンロード先
http://getgreenshot.org/
downloadページに進みversion historyをクリック
installerをダウンロードして
このページでちょっと待っているとダウンロードが始まります。
インストールは特に難しいこともなく、Select Componetsで日本語にチェックを入れます。
起動してPreferencesから色々とカスタマイズして完了です!
Ubuntu 15.04 ノートパソコンを閉じてもスリープさせない
/etc/systemd/logind.confを設定します。
#HandleLidSwitch=suspend
となっている行を下記に修正します。
HandleLidSwitch=ignore
そしてコンフィグを読み込み直します。
$ systemctl restart systemd-logind
これでノートパソコンを閉じてみてください。
SoftEther VPNの不具合??
さてSoftEtherVPNの設定が終わりました。
あれ、なんだかパソコンが熱いな・・・・?
このパソコンではvpnとsambaくらいしか動かしてないはずだけどな。
夏だからかな?
ちょっとプロセス使用率確認
$ top PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2600 root 0 -20 1166588 170944 5220 S 119.1 8.8 5:34.77 vpnserver
信じられないCPUの使用率!
SoftEtherVPNってこんな使用率になるの???
しょうがないのでCPU使用率下げるよう小細工しましょう(後々この判断が間違いだったと気付きます)
以下はその小細工です。
CPU使用率を制限する為にcgroupを導入しました。
これを使うとCPUリソースやらメモリやらに制限をかけることができます。
$ apt-get -y install cgroup-bin
続いてcgroupのコンフィグを作成。
このファイルはうちの環境では存在しなかったので、新規作成しました。
$ vi /etc/cgconfig.conf group limit { cpu { cpu.cfs_quota_us = 200000; cpu.cfs_period_us = 1000000; } cpuacct { } }
1000000マイクロ秒(つまり1秒)あたり200000μ秒(0.2秒)単一のCPUにアクセス
出来るようになります。20%までこのプロセスにCPUを割いてくれるらしいです。
続いて何やらおまじない
$ cgconfigparser -l /etc/cgconfig.conf
これをやらないと
cgroup change of group failed
って出てきます。
そしてcgroupを使ってvpnserverを起動します。
$ cgexec -g cpu:limit /usr/local/vpnserver/vpnserver start
これで完了なんですが、そうです。
起動スクリプトも修正してやらないといけません。
最終的にこのような形になりました。
再起動後にスマホからVPNアクセス出来て、topも20%に収まりました。
とここでまた問題が発生しました。
スマホのOpenVPN ConnectのConnection statsに表示される
Bytes inが異常に増えるという現象が発生しました。
みた感じ200kByte/sくらいのスピードでどんどん通信量が増えていきます。
あれこれ設定を見直しましたが、結局SoftEtherVPNのサーバのバージョンを変更すると状況が改善しました。
うちの環境ではBuild 9546でこの事象が発生しました。
以前試していたBuild 9529に戻して確認していますが今のところこの事象は発生していません。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 6294 root 0 -20 1036472 21984 5032 S 0.7 1.1 0:50.98 vpnserver
クライアントがガンガンアクセスするような環境なら当然負荷は高いでしょうが、個人でたててるサーバだとこんなもんなでしょう。(core2duoでもね)
結局cgroupの設定なんて必要なかったですね・・・・
まあお勉強ということで。
Ubuntu 12.04 LTS (ubuntu15.04) にsoftether vpnをインストール(その7) 起動スクリプト
7.起動スクリプトと設定
数か月前にUbuntu 12.04 LTSにsoftether vpnをインストールという記事を
書きましたが、起動スクリプト回りを書いていなかったので書いてみます。
あの時はまだ12.04でしたが、15.04でもほぼ同じだと思います。
基本的にはsoftether.orgに書いてある通り進めます。
7.3.8 スタートアップスクリプトへの登録
https://ja.softether.org/4-docs/1-manual/7/7.3
ですが、今回はtapを使用しますので、起動スクリプトにそれを記載します。
8行目からがstart時の処理です。
11行目、12行目に処理を追加しました。
vpnserver起動後ちょっとsleepさせて、tapへネットワークの設定を行います。
この2行だけ追加すれば問題ないでしょう。
(必要であればrestartの部分にも同様に処理を追加してください。)
作成した/etc/init.d/vpnserverへ実行権限を付与します。
$ chmod 755 /etc/init.d/vpnserver
後はOS起動時にvpnserverを稼働させる設定をするだけです。
$ /sbin/chkconfig --add vpnserver /sbin/chkconfig: そのようなファイルやディレクトリはありません
あれれ、ubuntuにはchkconfigが無いんだっけ。
そこでsysv-rc-confを使用します。
$ apt-get install sysv-rc-conf $ sysv-rc-conf vpnserver on $ sysv-rc-conf --list vpnserver vpnserver 2:on 3:on 4:on 5:on
動作確認の為に再起動してみましょう。
スマホなどからVPNサーバにアクセス出来れば大丈夫でしょう。
うちの環境だけだと思いますがちょっと問題が発生したので
その問題については別の記事に記載したいと思います。
PHPでActiveDirectory接続クラス
phpでActiveDirectoryに接続するクラスを書いてみます。
機能としては、認証処理とパスワード変更処理が出来るもの
とします。
プロパティ
・ActiveDirectoryのホスト(IPアドレス)
・ActiveDirectoryのAdministrator権限を持ったユーザ★
・ActiveDirectoryのAdministrator権限を持ったユーザのパスワード★
・ドメイン名
・ベースDistinguishName★
★つきのプロパティはパスワード変更をする際に必要となります。
色々と説明を省くために、クラス内で直接必要な変数の情報を記載しました。
コンフィグとして別ファイルから読み込むほうが一般的かと思います。適宜修正してください。
まずはコンストラクタ
function __construct(){ $connInfo = array( 'host' => 'ldaps://192.168.1.10', 'admin_user' => 'admin', 'admin_pass' => 'password', 'domain_name' => 'example.co.jp', 'base_dn' => 'DC=example,DC=co,DC=jp' ); $this->host = $connInfo['host']; $this->admin_user = $connInfo['admin_user']; $this->admin_pass = $connInfo['admin_pass']; $this->domain_name = $connInfo['domain_name']; $this->base_dn = $connInfo['base_dn']; if(!$this->ldapconn = ldap_connect($this->host)){ file_put_contents( "/var/log/ldap_log.log", "ldap_connect failed" ); } }
必要なプロパティに値を入れます。
今回はhostにldapsを指定しています。
もし、bind認証しかしないのであればldapでも良いと思います。
ldapsを使うということはssl通信をするというわけで、証明書を入れる
必要があります。これについてはまた別の記事に記載します。
ldap_connectしActiveDirectoryサーバと接続します。
失敗するとFALSEが返ってきます。
もし失敗するようであれば、ActiveDirectoryのサーバと
通信できるか、サービスが起動しているか
このphpを動かしているサーバのネットワークに問題は
ないか等単純なところを疑いましょう。
file_put_contentsの行は適宜ログ出力クラス等に修正してください。
次にbind認証メソッドです。
function ad_bind($userName, $userPass){ if($userPass === ""){ return false; } $userId = $userName."@".$this->domain_name; ldap_set_option($this->ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); if(ldap_bind($this->ldapconn, $userId, $userPass)){ return true; }else{ return false; } }
パスワードを空としてbind認証を行うと、なぜかtrueが返ってくるので
コーディングで空かどうか判定しましょう。
ldap_set_optionでプロトコルバージョンを3とします。
ldap_bindでbind認証を行います。
認証出来ればtrue、そうでなければfalseととてもシンプルな戻り値です。
続いてパスワード変更メソッドです。
function ad_modify($userName, $userPass){ $adminId = $this->admin_user."@".$this->domain_name; $userId = $userName."@".$this->domain_name; //DNを取得 $filter = array("dn"); $ls = ldap_search($this->ldapconn, $this->base_dn, "sAMAccountName=$userName", $filter); $userInfo = ldap_get_entries($this->ldapconn, $ls); $entry["unicodePwd"] = mb_convert_encoding("\"" . $userPass . "\"", "UTF-16LE"); $rtn = ldap_mod_replace($this->ldapconn, $userInfo[0]['dn'], $entry); return $rtn; }
以下が完成系です。
<?php class Ad_Conn { function __construct(){ $connInfo = array( 'host' => 'ldaps://192.168.1.10', 'admin_user' => 'admin', 'admin_pass' => 'password', 'domain_name' => 'example.co.jp', 'base_dn' => 'DC=example,DC=co,DC=jp' ); $this->host = $connInfo['host']; $this->admin_user = $connInfo['admin_user']; $this->admin_pass = $connInfo['admin_pass']; $this->domain_name = $connInfo['domain_name']; $this->base_dn = $connInfo['base_dn']; if(!$this->ldapconn = ldap_connect($this->host)){ file_put_contents( "/var/log/ldap_log.log", "ldap_connect failed" ); } } function __destruct() { ldap_close($this->ldapconn); } function ad_bind($userName, $userPass){ if($userPass === ""){ return false; } $userId = $userName."@".$this->domain_name; ldap_set_option($this->ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); if(ldap_bind($this->ldapconn, $userId, $userPass)){ return true; }else{ return false; } } function ad_modify($userName, $userPass){ $adminId = $this->admin_user."@".$this->domain_name; $userId = $userName."@".$this->domain_name; //DNを取得 $filter = array("dn"); $ls = ldap_search($this->ldapconn, $this->base_dn, "sAMAccountName=$userName", $filter); $userInfo = ldap_get_entries($this->ldapconn, $ls); $entry["unicodePwd"] = mb_convert_encoding("\"" . $userPass . "\"", "UTF-16LE"); $rtn = ldap_mod_replace($this->ldapconn, $userInfo[0]['dn'], $entry); return $rtn; } } ?>
Ubuntu 15.04 でGitHubの設定
GitHubのアカウント作成がまだのようなら作成します。
https://github.com/
下記の順番で設定します。
・SSH KEYの作成
ubuntu上で作成します。
・SSH KEYの設置
公開鍵をGitHub、秘密鍵をローカルに設置します。
・ローカル(pushする側)の設定
gitの設定を行います。
SSH KEYの作成
まずはssh keyを作成します。
今回はubuntuでssh keyを作成しました。
接続時にパスワードを問われたくなかったので空で設定しました。
$ ssh-keygen -t rsa -b 4096 -C "mailaddress@gmail.com" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa):そのままenter Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase):そのままenter Enter same passphrase again:そのままenter Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX mailaddress@gmail.com The key's randomart image is: +---[RSA 4096]----+ | ++==. | | ..NYAN | | +.*+ | | . A .C | | * o S | | o . . . | | | | | | | +-----------------+
これで公開鍵を作成できました。
$ cat ~/.ssh/id_rsa.pub
このid_rsa.pubの中身をコピーしてGit Hubに追加します。
SSH KEYの設置
GitHubにサインインします。
右上のほうにあるsettingボタンをクリックします。
続いて左のほうにSSH keyがあるのでそれをクリック。
Add SSH Keyをクリックします。
Titleはなんでもいいです。私は"Personal Thinkpad"としました。
Keyに先ほどのid_rsa.pubの中身を張り付けて下さい。
GitHub側の設定はこれで終わりです。
ローカル(pushする側)の設定
さてubuntuに戻ります。
下記のようにsshでgithub.comに接続します。
ユーザ名はgitとなっていて良いです。
ssh -T git@github.com Hi XXXXXX! You've successfully authenticated, but GitHub does not provide shell access.
このようになれば設定に問題はありません。
うちではこのようなレスポンスが1秒くらいで返ってきました。
さてそれでは.gitが生成されているディレクトリに移動します。
もしgitの設定を終えていないようであれば、下記の記事を参照して
設定を行ってください。toshtone.hatenablog.jp
$ git remote add origin ssh://ユーザ名@github/home/ユーザ名/workspace/first_app
これでoriginにurlが設定できたようです。
万が一originに指定するurlを間違えてしまった場合は
$ git remote rm origin
としてoriginを一旦削除して正しいものを再度addしてください。
HTTPSで接続する場合は下記のようにoriginを設定してください。
$ git remote set-url origin https://ユーザー名:パスワード@github.com/ユーザー名/first_app.git
それではいよいよソースをpushします。
$ git push -u origin master
これでGitHubにソースが追加されました。
ブラウザからGitHubにアクセスして確認しましょう。
トップページのPopular repositoriesからアップロードした
プロジェクト名をクリックしてファイルを確認してください。
以上で設定は終わりです。