FreeNASにてOPENVPNを同時起動

タグ: , | 投稿日: 投稿者:

こんにちは、hijikataです。

今回はFreeNASにてOPENVPNサーバを稼働した状態で別VPNのクライアントも稼働させる方法を書いていきます。

VPNサーバのみ稼働させるのはインターネットで検索すればすぐ見つかりましたがVPNサーバを稼働した状態で他のVPNサーバのクライアントとして接続させる方法はなかなか見つからなかったため(自分自身が忘れないためにも)そちらを書いていきます。

※前提としましては下記になります。

FreeNASのバージョンにつきましては8.3.1です。
VPNサーバとしての設定が終わっています。
VPNサーバの設定時、openvpnの設定ファイル等は下記ディレクトリに保存しています。 /conf/base/etc/local/openvpn

まずは/conf内に書きこめるようmount -uw /を実行します。
/conf/base/etc/local/openvpnに別VPNクライアント用の設定ファイル、中間証明書、証明書、鍵ファイルを配置します。

その後/conf/base/etc/rc.confにopenvpn_configfile="/conf/base/etc/local/openvpn/(読み込ませたい設定ファイル)を新たに追記しても起動時にOPENVPNインタフェースは1つしか立ち上がってこないためVPNサーバを稼働しつつ別VPNのクライアントとして接続できません。

そのため/conf/base/etc/rc.localに下記コマンドを記入していきます。

/usr/local/sbin/openvpn –script-security 2 –writepid /var/run/openvpn-server2.pid –config /usr/local/etc/openvpn/(読み込ませたい設定ファイル) 

これでFreeNAS起動時に上記コマンドが実行されVPNサーバを稼働させつつ別VPNのクライアントとしても接続できます。

rc.localに記載しないままFreeNASを起動した際、VPNサーバだけ稼働しますがrc.localに記載して反映するのに再起動する必要がございます。
再起動できない場合上記コマンドを実行すれば再起動せずに別VPNのクライアントも接続できます。

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

vim カスタマイズ

タグ: , , | 投稿日: 投稿者:

こんにちは最近、寒波続きで寒いので帰宅途中でコーンポタージュを飲むのが日課になっているモリです。

今回はよく使用しているvimを自分仕様にカスタマイズしているので紹介しようと思います。

紹介する内容はLinux系のOSです。

Windows系ですとやり方が異なるので注意して下さい。

私はカラースキーマ(コードの色分け)と入力、検索の設定をしています。

簡単にできるので、是非してみては如何でしょうか。

注意点として、共有ユーザに対して適用しないようにしましょう~!

やる事

1.vim設定

 a.まずはサーバにログインして、自身のホームディレクトリへ移動します。

 b.「.vimrc」ファイルの作成

  このファイルが設定ファイルになります。

  作成は「vim .vimrc」で作成します。

  c.好みの設定を記述

  基本的に[set]コマンドにて設定していきます。

     設定する内容はたくさんあるので割愛させてもらいますが(汗

  私の設定は以下のようなオーソドックスな感じです。

" ##### 表示設定 #####
" 行番号を表示する
set number
" 編集中のファイル名を表示
set title
" 括弧入力時の対応する括弧を表示
set showmatch
" インデントをスペース4つ分に設定
set tabstop=4
" オートインデント
set smartindent

" ##### カラースキーマ設定 #####
 colorscheme molokai
" コードの色分け
syntax on

" ##### バックスペース設定 #####
" eol    => 行頭で[Backspace]を押したときに行の連結
" indent => オートインデントモードのインデントも削除
set backspace=start,eol,indent

" ##### 入力補完 #####
" コマンドラインモードで[Tab]を押すと、適切な文字を補完したり、補完候補を一覧表示
set wildmenu wildmode=list:full

" ##### 検索設定 #####
" 大文字/小文字の区別なく検索する
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する
set smartcase
" 検索時に最後まで行ったら最初に戻る"
set wrapscan

2.カラースキーマ

 a.カラースキームのダウンロード

  こちらは「vim カラースキーム」等で検索するといっぱい出てきます。

  好みのカラースキームが見つかったら「xxx.vim」ファイルをGETします。

 b.ファイルの設置

  「xxx.vim」ファイルの設置場所はホームディレクトリの「.vim/colors」ディレクトリ配下に置いて終了

 c.適用

  適用は先ほどの「.vimrc」ファイルに記述します。

  ファイル名は拡張子を省いて記載します。

" ##### カラースキーマ設定 #####
 colorscheme [ファイル名]
" コードの色分け
syntax on

★適用前

a

★適用後

b

 

これだけです。

でわでわ!よいvimライフを!!

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

動画の倍速再生の考え方

タグ: , | 投稿日: 投稿者:

こんにちは毎度お騒がせします、いかおです

早送りと遅送り(?) まず、映像だけ考えていきますと・・・・・

1.再生時にフレームレートを偽る

→毎秒30フレームの動画であれば、これを毎秒60フレームの動画として再生すれば2倍速、毎秒15フレームで再生すれば0.5倍速になる。

2.フレームを間引いたり、水増しする

→再生対象フレームを半分にすると2倍速、同じフレームを2回づつ再生すると0.5倍速になる。

1の方法は昔のビデオテープの早送りに似た方法ですね。 デバイスその他が対応すれば、サンプリングレートを自在に操って様々な再生に対応できます。 遅くする方は簡単なのですが、早くする方は場合によって、デバイスが対応しないことがありそうです。

多分、普通は2の方法を採用しますね。ただ、これも2倍、3倍、1/2倍、1/3倍位はたやすいのですが、 1.5倍とか2/3倍とかの割り振りというか、計算は大変そうです。 この様に映像の方は案外簡単に速度変更できます。ま、こういうところは所詮ぱらぱら漫画の延長なので、考え方的にも 楽ですね。

でも、音を考えると意外に難しいのがわかります。

ここで、色んな難しいパターンを排除して、音声の2倍速再生を想像して下さい

【音の2倍速再生をどうするか?】

皆さんならどうします?

映像と同じで音声サンプルを半分間引くと、半分の長さの同じ様な波形ができます。

これは実際、間引いたためのギャップでノイズが多発するのと、そうです、

周波数があがるのです。つまり、音が高くなります。

昔のアナログビデオやカセットテープ(みんな知らないか?)の早送りみたいです。

映像でいくところのフレームレートの偽りと似ています。そんなことなら

最初からサンプリングレートを偽って再生すりゃいいんですよね。

でも、現実的じゃない。じゃ、間引きでいきますか?

「いや、それでいいよね。普通」

っていうなよ絶対。ダメ絶対

音程を上げなくても倍速再生できるんです。

音は実はいろいろ奥が深くて様々な方法があるのですが、概ね

こんな方法が採られます。

・音をある時間的長さのかたまりに分割して考える

・その大きさで間引いて、それぞれをつなぎ合わせる

・つなぐ部分にのりしろを設けて、のりしろ部分で前のかたまりのフェードアウトと次のかたまりのフェードインを合成する

#これはノイズ除去のために行います

実際のコードは次回必ず載せます。

それでは

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

UPSバッテリーの交換でちょっと便利な小道具

タグ: | 投稿日: 投稿者:

初めまして、shiraneです。

最近、APC Smart UPS 1500のバッテリー交換をした際に

ある人から教えてもらった小道具を使ってみたら、目から鱗だったのでご紹介します。

 

APC Smart UPS 1500は写真のように金属ケースに4つのバッテリーがセットされています。

IMG_1110

バッテリーは両面テープでケースに固定されており、

このテープの粘着力が半端ではない!

素手ではとても取ることができません。

マイナスドライバーなどで、取り外すのが一般的なようです。

でも、この方法は力を入れ過ぎるとバッテリーをセットする金属ケースが

歪んでしまう可能性があり気が進みません。 

以前、実際に歪めてしまった事も

そんな時、教えてもらったのが下の小道具です。

IMG_1111

人によって、「テコ」「コテ」「ヘラ」など呼び方は色々あるようですが、お好み焼きをひっくり返すやつです。

100円ショップなどでも買うことができます。

使ってみるとこれが丁度良い形をしています。

IMG_1112IMG_1113

ある程度力が必要でしたが、上の画像のオレンジ線で囲った

バッテリーケース背面にある穴から差し込んでケースとバッテリー間のテープを

剥がす事で極力ケースを歪めずにバッテリーを外すことができました。

IMG_1114

機会がありましたらお試しあれ。

※今回は、UPSのバッテリーを互換性のあるメーカ純正でない物と交換する際の作業となります。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

【備忘録】lsyncdの使い方 ssh編

タグ: | 投稿日: 投稿者:

ご無沙汰しております。工藤です。

しさしぶりなのでライトな内容にしようと思います。

インフラエンジニアではお馴染みのリアルタイム同期ツール「lsyncd」の使い方について。
lsyncd自体についての説明は割愛します。

相変わらずのCentOSでのやり方。

yumります。

# yum install lsyncd

レポジトリは任せます。(epelとかだと2.1.4とかなんで便利です)

sshで同期を実施するため、同期元→同期先といった感じでpushによる同期となります。sshの鍵を作成します。

(同期元)

# ssh-keygen -t rsa

出来上がったファイルを同期先のauthorized_keysにコピーします。

(同期元)

#scp .ssh/id_rsa.pub (同期先アドレス):/root/.ssh/authorized_keys

sshでログインしてみましょう

(同期元)

# ssh root@(同期先)

ログインできたらOKです。これでNGなら何かがおかしいので、/ssh/sshd_configなどをよく見ましょう。

lsyncdを設定します。yumると/etcにlsyncd.confが作成されています。
簡単に動かすだけならこんな感じです。

例:同期したい元ディレクトリ /home
同期したい先ディレクトリ /home
同期したいくないディレクトリ /home/exclude

settings{
    logfile = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd.status",
    nodaemon = false,
}
sync{
    default.rsync,
    source = "/home/",
    target = "root@(同期先):/home/",
    rsync = {
      _extra = { "-av" },
    },
    exclude = "/home/exclude",
}

こんな感じです。

で、lsyncdを起動します。

# /etc/init.d/lsyncd start

自動起動に登録します。

# chkconfig lsyncd --on

後はちゃんと同期されているか確認してみましょう。

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

ajaxでクロスドメイン通信のやりかた

タグ: , | 投稿日: 投稿者:

こんにちは、kikuです。
今日はサーバー間で通信処理をjavascriptでしたいと思った時の実装例を記述していきます。

方法は色々あるかと思いますが、今回はajaxでやる方法について記述していきます。

ajaxでhoge.comにGETアクセスする処理例

クライアント側のコード例(hoge.comでないサーバーのコード)

    jQuery.ajax( {
        url: 'http://hoge.com',
        type: 'GET',
        success: function( data ) {
            console.log('通信に成功しました。');
        },
        error: function( data ) {
            console.log('通信に失敗しました。');
        }
    } );

サーバー側のコード例(hoge.comのコード)

header('Access-Control-Allow-Origin: *');
echo '成功です';

セキュリティの問題でサーバー側にも対応が必要なんです。
別のサーバーから無許可でアクセスが来て勝手にレスしていたら怖いですから当然ですね。

Access-Control-Allow-Origin:で許可するオリジンを決めます。

特定のオリジンのみ許可をする場合はこんな感じ

header('Access-Control-Allow-Origin: http://hoge.com');

クッキー情報を付けてアクセスしたい場合は

クライアント側のコード例(hoge.comでないサーバーのコード)

    jQuery.ajax( {
        url: 'http://hoge.com',
        type: 'GET',
        xhrFields: {
            withCredentials: true
        },
        success: function( data ) {
            console.log('通信に成功しました。');
        },
        error: function( data ) {
            console.log('通信に失敗しました。');
        }
    } );

サーバー側のコード例(hoge.comのコード)

header('Access-Control-Allow-Origin: ' . getenv('HTTP_ORIGIN'));
header('Access-Control-Allow-Credentials: true');
echo '成功です';

サーバー側にAccess-Control-Allow-Credentials: trueが必要になります。
更にAccess-Control-Allow-Origin:*が使えません。
ですが基本的にgetenv('HTTP_ORIGIN')で取得可能な場合が多いのでこれを付けておけば大体OKです。
※ダメだった場合は色々制限や工夫をすればいけますが省略します

今回はGETアクセスのみの紹介です。
POSTとかはまた色々やらなくてはいけませんので気をつけて下さい。。

 

参考
https://developer.mozilla.org/ja/docs/HTTP_access_control

 

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

yumをおいしく

タグ: , | 投稿日: 投稿者:

yumはCentOSなどのLinuxで使用されているパッケージインストーラです。

yumという単語は、おいしいという意味の単語ですが、フォーマルな場ではほとんど使われません。
ほとんど幼児語であり、親しい仲や子供に対してのみ使用されるので会話で使用する際はご注意を。

さて、yumはサーバをセットアップする上で、非常に有用なツールですが、インストールやアップデート以外にも使い道があります。
yumを有効利用するには、レポジトリについて知る必要があります。
yumを扱う上で重要になるのが、レポジトリと呼ばれるものです。
このレポジトリ次第で、yumに出来ることが決まります。
この場合のレポジトリとは、簡単に言うとパッケージのリストみたいなものです。レポジトリが違うとインストールされるパッケージやバージョンが変わったりします。レポジトリは複数登録できますが、あまり数が多いと時間がかかってしまい不便になってしまうため、通常はレポジトリを無効化しておき、必要時のみ有効化するという方法を取るのが良いです。

–enablerepo=[レポジトリ名]

をコマンドオプションとして追加することで、yumの実行時にのみレポジトリを有効化することができます。
因みに、

–disablerepo=[レポジトリ名]

を使用することでレポジトリを無効化することができます。

さて、この有効化と無効化ではワイルドカード(*)を使うことができます。ですので上手く設定をすると効率的に複数のレポジトリを指定し有効化・無効化を行えるようになります。

さて、ここで有用となってくるのが、次のコマンド

yum repolist

有効となっているレポジトリのリストを表示してくれます。
ハイ、有効となっているレポジトリを表示させるので、上述の有効化のオプションが役に立ちます。

yum repolist –enablerepo=*

と入力すると通常では無効状態となっているレポジトリも含め全てのレポジトリが表示されます。
この際、左の列に表示されるのが、名称で有効化・無効化のオプションで認識されるものとなります。

もし、レポジトリの状態が意図しない形で有効化・無効化されている場合、レポジトリのファイルを修正します。
CentOSの場合、下記にレポジトリのファイルが保管されています。

/etc/yum.repos.d

対象となるレポジトリの情報が記載されているファイルを編集すれば、有効化・無効化の設定を変更できます。

[ ]で囲まれているのが、レポジトリの名称です。これを確認してください。次の[ ]に囲まれた記述が現れるまでがそのレポジトリについての設定になります。その中に、enable=0、もしくはenable=1という項目があるはずです。これが有効化・無効化の設定になります。0が無効、1が有効となるので、適宜に変更してください。

レポジトリを使いこなすことができるとyumが便利になるので皆さんもぜひ試してください。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

WordPressでのサイト制作にはVCCWがおすすめ

タグ: , | 投稿日: 投稿者:

新年あけましておめでとうございます。ニタです。

年末年始、いかがお過ごしでしたか?

私はWordPressのプラグインの改修を進めたかったのですが、何かと慌ただしく過ぎてしまいました。
機能追加を計画していますので、もうしばらくお待ちください。

さて、そんなWordPressでのサイト(テーマ)、プラグイン開発で非常に便利なのが今回ご紹介する「VCCW」です。

VCCWって何?

VCCWは、VagrantとChefによるWordPress開発環境ツールです。

ローカル開発環境にインストールするのは、VirtualHostの設定、MySQLのDB登録などの作業だけで、すぐ済むのですが、そういった作業が苦手なデザイナーやHTMLのコーダー、いちいち設定するのが面倒と感じる方もいると思います。

VCCWでは、WordPress単体だけでなく、テーマ・プラグイン制作に役立つツール類もインストールされます。

Vagrantとchefにより、centos上にApache、PHP、MySQL、WordPressなどがインストールされます。

opensslもインストールされるので、フォームなどのSSL環境が必要な状況にも対応しています。

初回起動時にインストールされるツール、プラグイン

  • openssl
  • Grunt
  • Composer
  • rbenv
  • bundler
  • node.js
  • grunt-cli
  • WordPress Unit Tests(PHPUnit)
  • WordPress i18n Tools
  • WP-CLI
  • theme-check (WordPress plugin)
  • dynamic-hostname (WordPress plugin)
  • plugin-check (WordPress plugin)
  • wp-multibyte-patch (WordPress plugin)

利用には、VagrantとVirtualBoxが利用できることが前提となるので、予めインストールしておいてください。

また、Vagrantのプラグインvagrant-hostsupdaterが必要となります。

Vagrantインストール後、以下にてプラグインをインストールしてください。

※今回はmacでのインストール方法のみになります。予めご了承ください。

vagrant plugin install vagrant-hostsupdater

インストール、設定

パッケージのダウンロード

VCCWのサイトにあるzipかtar.gzをダウンロードし、適当なディレクトリに解凍します。

この記事の執筆時のVCCWのバージョンは1.9.6です。

解答すると、「vccw-1.9.6」というディレクトリが作成されます。

Vagrantfileの編集

解凍してできた「vccw-1.9.6」というディレクトリ内にあるVagrantfileがあるので、ターミナルなどでvccwディレクトリに移動し、vagrant upコマンドで開発環境は立ち上がります。
その前に日本向けにVagrantfileを編集します。

  • 15行目、WordPress内のlocaleをjaに。
WP_LANG = ENV["wp_lang"] || "ja" # WordPress locale (e.g. ja) 
  • 70行目、cent os側のWordPressのディレクトリをローカルマシンのディレクトリとsyncさせる。
config.vm.synced_folder "www/wordpress/", "/var/www/wordpress", :create => "true"

上記の"www/wordpress/"をローカルマシンでWordPressを格納するディレクトリパスに書き換える。

パスが、/Users/nita/workspace/wp-developの場合、

config.vm.synced_folder "/Users/nita/workspace/wp-develop", "/var/www/wordpress", :create => "true"
  • 113行目、 cent osにインストールされるPHPのタイムゾーンを変更。
"date.timezone" => "Asia/Tokyo",

起動 確認

Vagrantfileの編集が終わったら、ターミナルなどでVagrantfileがあるディレクトリに移動し、vagrant upコマンドで起動します。

初回起動時は、centosのboxファイルのダウンロードや、apache、PHP、MySQL、WordPressのインストールや設定が行われるので、多少時間がかかります。

また、途中でhostsファイルにVagrantで利用するホストとURLを書き込むため、ローカルマシンのユーザーパスワードを求められます。

無事、起動が成功しますと、以下のURLにてWordPressサイトが表示されます。

http://wordpress.local

また、管理画面は以下のID/パスワードでログインできます。

http://wordpress.local/wp-admin

ID パスワード
admin admin

といった感じです。

WordPressを利用したサイト制作では、WordPressの設定やデータベースの設定など何かと準備が細々とあります。

VCCWを使えば、そんな準備に時間をかけることなく開発作業に臨めると思います。

VCCWには今回紹介した他にも、WordPressでの様々な操作をコマンドラインで実行できる「WP-CLI」やtheme-check、plugin-checkなど便利なツールが使えます。

おまけ

VCCWがデフォルトでインストールしているプラグインやWP-CLIについて説明します。

theme-check

ダウンロードしたテーマや、制作したテーマが、WordPressが設けている品質ガイドラインに準拠しているか、セキュリティホールが開いていないかどうかチェックしてくれます。

plugin-check

制作したプラグイン、インストールしたプラグインが、WordPressの品質ガイドラインに準拠しているかどうか、セキュリティホールが開いていないかどうかをチェックしてくれます。

互換性に問題のある関数が使われていないか、システムコマンドが実行されていないか、プラグイン内でini_set()が使われていないかなど、細々とチェックしてくれます。

WP-CLI

WP-CLIで出来ることをちょっとだけ。

まずは、VCCWの仮想環境にSSH接続しWordPressのディレクトリに移動ます。

vagrant up
vagrant ssh
cd /var/www/wordpress

WordPressのDBのエクスポート

例:mysqldump_wordpress.sqlにエクスポート

wp db export mysqldump_wordpress.sql

WordPressプラグインのアップデート

例:プラグインakismetをアップデート

wp plugin update akismet

また、rbenv、node.js、Grunt、bundlerなどはjQueryのプラグインのインストールやSassのインストールなど、テーマ制作時に利用すれば、色々捗ると思います。

その辺については、また改めて紹介したいと思います。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

PowerConnect5548でのMACアドレス制御

こんにちは、hijikataです。

今回は最近行ったスイッチでのMACアドレス制御について書きます。

3ヶ月経過したら忘れそうなので書きます。

目的として特定のMACアドレスを持つ端末以外はインターネットに接続できないようスイッチに設定します。

図面としましてはこのような感じになります。

 今回ノードAはインターネット接続出来ないようにし、ノードBは接続できるようにします。

スイッチの初期設定が終わり、ローカルIPアドレスも設定し、ルータと結線します。

その後ノードA,ノードBをスイッチに結線します。

結線が終わりましたら、ノードA、BそれぞれのMACアドレスを調べます。

Windowsの場合ですとコマンドプロンプトを開いて、ipconfig /allを実行します。

使用しているNICの物理アドレスがMACアドレスです。

※画像に表示されている物理アドレスは修正しております。

このようにしてノードのMACアドレスが分かりましたらスイッチに設定を加えます。

設定方法についてはGUIから設定していきます。

WEBブラウザでスイッチのIPアドレスを入力後ID、パスワードを入力しスイッチにログインします。

ログインしましたらswitching→network security→MAC Based ACLの順番にクリックしていきます。

クリック後以下の画面が表示されAdd ACLをクリックします。

testというACLを追加しました。

次にMAC based ACE→Add ACEの順番にクリックしていきます。

クリック後以下の画面が表示されます。

先ほど作成しましたACLに対しどのようなルールを追加していくか設定していきます。

今回の目的ですと以下のようになります。

※MACアドレス84:84:84:84:84:84を持つノードは通信を許可します。

これで84:84:84:84:84:84の持つノードは通信を許可されますが、それ以外のノードは通信を拒否する設定になりました。

次にルールを適用します。

MAC Based ACEの近くにACL Bindingがありますのでクリックし、クリック後Editをクリックします。

クリック後下記画面が表示されます。先ほど作成したACL「test」をどのポートに適用するか指定できます。

※上記の画面ですとポート1にACLルール「test」を適用します。

※ルータと接続しているポートにこのルールを適用してしまうと許可したノードもインターネット接続出来なくなるため適用しないようにしましょう。

ルータと接続しているポート以外のポート全てに適用しましたら作業完了です。

これでスイッチ配下に接続されたノードは許可された端末以外通信が出来なくなるようになります。

組み合わせ次第では色々できそうで試してはないですがIPV4,IPV6でも同様な事が出来そうな感じですね。

※今回書いた事は他のPowerConnectスイッチで実現できるかは試しておりません。

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook

コマンド履歴

タグ: , , , , | 投稿日: 投稿者:

こんにちは、モリです。

忘れっぽい自分の為に、またまた備忘録を書いていきます。

今回はLinuxコマンドで使用する「コマンド履歴」です。

■一覧

まず単純にコマンド履歴を見るなら[history]コマンドで一覧表示。

■直近

直近なら[↑][↓]でhistoryを遡るまたは戻る

■検索

[ctrl] + [r]

上記のコマンドで検索。

さらに使用したいコマンドをある程度入力して[ctrl] + [r] すると直近の類似候補を表示。

遡りすぎて目的のコマンドを過ぎてしまった場合[ctrl] + [s]で戻ることが可能

ただ、デフォルトの設定では戻るコマンド[ctrl] + [s]が画面のロックに割り当てられている為、動かない。

解除するには以下のコマンドで外してやれば可能になる。

[stty stop undef]

解除出来たか確認するには[ssty -a]で[stop]に割り当てられている値が[undef]であることを確認すればOK。

ちなみに、初期値は[^S]なので戻したいと思ったら再度割り当てればOK

頻繁に使用する人は結構重宝するかも。

 

 

Share on Google+Tweet about this on TwitterShare on StumbleUponShare on Facebook