Ajax 初めの一歩
非常にいまさらなんですが、Ajaxの基礎の基礎について書きたいと思います。
使用言語はPHPにします。
値を入力して送信、サーバで計算してローカルに値を戻します。
必要なファイルはtest.htmlとtest.phpです。
test.htmlにアクセスして送信ボタンを押すとtest.phpにデータが送信され
結果をtest.htmlに戻して値を表示します。
htmlはこんな感じ
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script type="text/javascript"> function func() { $.ajax({ type: "POST", url: "./test.php", data: { num1 : $(val1).val(), num2 : $(val2).val() }, dataType: 'json', success: function(data) { target = document.getElementById("output"); target.innerHTML = data.msg; } }); } </script> </head> <body> <center> <label>値1<input type="text" name="val1" id="val1" size="3" maxlength="3"> X </label> <label>値2<input type="text" name="val2" id="val2" size="3" maxlength="3"></label> <input type="button" value="送信" onclick="func();" /> <div style="text-align:center" id="output"></div> </center> </body> </html>
続いてphp
<?PHP $num1 = (int)$_POST['num1']; $num2 = (int)$_POST['num2']; $rtnVal = $num1 * $num2; header("Content-Type: application/json; charset=utf-8"); echo json_encode( array( 'msg' => $rtnVal ) ); ?>
シンプルな例ということで。
エクセルで各値の個数の集計
エクセルでこういったデータの個数の集計をしたい時
どうやるんだったかよく忘れてしまうので、手順をまとめます。
こういったデータを・・・
こんな感じに集計したい
まずはソートします。
そのままね
ソートされました。
次に集計
ここで個数の集計
そうすると完成
Linuxサーバに公開鍵認証でsshログイン
クライアントからLinuxサーバにSSHアクセスする方法の一つに鍵認証を用いる方法があります。
この図のように、クライアントに秘密鍵を配布しサーバに公開鍵を配置します。
秘密鍵と公開鍵を作成します。
作成するサーバはどのサーバでも構いません。
(teratermの機能を用いても同様のことが出来ますが今回は割愛します。)
# ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: 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 root@localhost.localdomain The key's randomart image is: +--[ RSA 2048]----+ | | | NYAN | |*_* :o | | . + = | | :)S= = o | | o.+ .^o^ | | +.+ + . . | | . o.= = . | | .+.+ . | +-----------------+
Enter passphrase (empty for no passphrase):の箇所で入力するパスワードを
空にすると、ログイン時にパスワードを入力する必要がなくなります。
今回は空にしました。
ここまで終わるとid_rsaとid_rsa.pubの2つのファイルが作成されます。
リナックスサーバに公開鍵を設定します。
ログインしたいユーザのホームディレクトリに.sshディレクトリを作成します。
所有者とグループはそのユーザとし、パーミッションを700とします。
# mkdir ~/.ssh # chown ユーザ:ユーザ ~/.ssh # chmod 700 ~/.ssh
公開鍵ファイルを~/.sshディレクトリに配置し、
authorized_keysファイルに名称を変更します。
パーミッションを600とします。
# mv id_rsa.pub authorized_keys # chmod 600 authorized_keys # rm rsa.pub
既にauthorized_keysが存在するようならcatします。
# cat rsa.pub >> authorized_keys
続いて秘密鍵をクライアントに渡してやります。
一度権限をrw-r--r--くらいにしてやります。
# chmod 644 id_rsa
これでファイルをクライアントに渡してください。
そのファイルをTeraTermでこのように設定すれば、ログイン出来るかと思います。
クライアントがCentOSなどのLinuxの場合は、
~/.ssh/の下にid_rsaを配置。
複数id_rsaがある場合は任意の名前に変更する。
その場合~/.ssh/configファイルを作成し
IdentityFile ~/.ssh/id_rsa IdentityFile ~/.ssh/任意の名前
↑のように列挙していく。
Host test HostName サーバの名前あるいはアドレス User ユーザ名
とするとssh testで接続出来ます。
もしログイン出来ないようなら、サーバの/etc/ssh/sshd_configの
設定を見直します。
下記3行のコメントブロックが外れているかどうか確認してください。
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys
下記のようにしたい場合について
rootユーザのパスワード認証でのログインは拒否
rootユーザの鍵認証でのログインを許可
PermitRootLogin without-password
普段はNoにしているかと思いますがwithout-passwordを指定することで
パスワード以外での認証を許可します。
CentOS7とCentOS6までの違い
今更ながらCentOS7の操作に戸惑っています。
CentOS6までと違うとこを記載していきたいと思います。
ipconfig
↓
ip addr
service XXX start
↓
systemctl start XXX
chkconfig XXX on (off)
↓
systemctl enable(disable) XXX
※chkconfigコマンドはまだ使用することができます。
・サービス名の変更
iptables
↓
firewalld
Firewalldは/etc/firewalld/zones/public.xmlが設定ファイルです。
みたいな感じに追加してsystemctl restart firewalld
まだ随時追記していきます。
Excelでスケジュール
たまにこのような表を作成する機会があります。
土日と祝日の色を青や赤に自動で変える方法どうだったかなと
毎回忘れてしまうのでここで整理したいと思います。
まずはこのように手動で入力
次に日付の入力です。
1日(月の初日)を表示させるセルに下記を入力します。
=DATE(B2,D2,1)
その次の日からは+1で対応していきます。
31日までコピーしてこうなります。
続いて、日付の隣に曜日を表示させます。
曜日のセルにこのように記載します。
=CHOOSE(WEEKDAY(F4,1),"日","月","火","水","木","金","土")
WEEKDAY("2015/8/1",1)で、日曜日なら1、月曜日なら2、~~、土曜日なら7を取得できます。
CHOOSE(1,"日","月","火","水","木","金","土")としてやると"日"が取得できます。
一番目の引数が5なら"木"になります。
(セルの書式をaaaとしても同じことが可能です。)
作成したものを31日目までコピーするとこんな感じ
続いて土日に色を付けます。
条件付き書式を使います。
土曜日の色を水色にします。
=$G4="土"
適用範囲を日付と曜日の表示セル全てにします。
そうするとこんな感じ。
日曜日も同様に設定してやりましょう。
次は祝日設定です。
祝日を定義してやりましょう。
邪魔にならないセルに移動します。
お盆の週は全て休みという設定にします。
そして定義したセルに名前をつけてやります。
セルにつけた名前の管理は数式バーの名前の管理から行うことが出来ます。
それでは設定です。
条件式は下記です。
=NOT(ISNA(MATCH($F4,Holidays,0)))
まずMATCH($F4,Holidays,0)ですが
F4のセルがHolidaysにマッチすると2015/8/10なら1が、2015/8/14なら5が返ります。
もし存在しなかったら#N/Aが返ります。
次にISNA("")ですが括弧内の値が#N/Aであればtrue、そうでなければfalseが返ります。
NOTは否定ですね。
つまり=NOT(ISNA(MATCH("2015/8/1",Holidays,0)))の場合はfalseとなるわけです。
=NOT(ISNA(MATCH("2015/8/10",Holidays,0)))はtrueですね。
反映するとこうなります。
日付のフォーマットを変更しましょう。
dにするだけです。
31日が無い月の判定対応をしていきます。
まず邪魔にならないセルに先ほどおこなった日付出力を行います。
元々の日付のセルの式を修正します。
=IF(MONTH(AZ4)<>MONTH(DATE($B$2,$D$2,1)),"",AZ4)
これで、指定した月でない値が入っている場合表示されないことになります。
これを31日まで反映させると、うるう年にも対応したものになります。
曜日のほうもちょっと直せばすぐ対応できると思います。
日付が空であれば曜日を空にする条件を追加するだけですね。
以上で完成です。
MyDNS.JP
mydnsに登録しました。
が、しばらくたつとこんなメールが届きます。
IPアドレスの通知が9日間確認できません。
通知って、誰もこのアドレスを検索しなかったのかなとか思ったんですが、
そんなことMyDNS.JPのサービス運営しているところが把握できるはずもないなあなんて
思ってMyDNSのサイトにログインしてよく見てみると、IP ADDR DIRECT
ページのcheckボタンを定期的に押さないといけないみたい。
いちいちログインしてだなんて面倒だと思って色々検索するとそこはやはり自動化できる手段がありました。
CentOS6.6では以下の通りで自動化できます。
$ cd /etc/cron.daily/ $ touch mydns $ chmod 775 mydns $ vim mydns wget http://www.mydns.jp/login.html --http-user=[mydnsXXX] --http-passwd=[XXXXX] -O /dev/null
ネットを見回ってみるとcron.hourlyで指定させていたりするようですが、そんなに頻繁にする必要はないのでdailyくらいで設定させてやりましょう。