【jQuery】textareaの入力内容を簡単にHTML↔テキスト切り替え


メール配信システム作成にあたり、入力結果プレビューを簡単に実装できないかと色々調べた結果、jQueryを利用すれば簡単にプレビューを表示することができました。

jQueryを利用すれば、テキストメールとHTMLメールのプレビューも簡単に切り替えることができます。

まずは、サンプルをどうぞ。
【jQuery】textareaの入力内容を簡単にHTML↔テキスト切り替え|サンプル

主な記述は下記のみで、実装できます。

<script>
$(function() {
  $('textarea[name="body"]').keyup(function() {
    if($('input[name="sort"]:checked').val() == 'html') {$('#preview_body').html($('textarea[name="body"]').val());}
    else {$('#preview_body').text($('textarea[name="body"]').val());}
  });
  $('input[name="sort"]').click(function() {
    if($('input[name="sort"]:checked').val() == 'html') {$('#preview_body').html($('textarea[name="body"]').val());}
    else {$('#preview_body').text($('textarea[name="body"]').val());}
  });
});
</script>
<table>
	<tr>
		<th>タイプ</th>
		<td>
			<label><input type="radio" name="sort" value="text">テキスト</label>
			<label><input type="radio" name="sort" value="html">HTML</label>
		</td>
	</tr>
	<tr>
		<th>本文</th>
		<td>
			<textarea name="body" cols="40" rows="20"></textarea>
		</td>
	</tr>
</table>
<div>
	<h2>本文プレビュー</h2>
	<div id="preview_body"></div>
</div>

3~6行目で textarea タグで keyup イベントが発生した際の処理を行っています。
7~10行目で input タグで click イベントが発生した際の処理を行っています。

keyup イベントの処理

$('textarea[name="body"]').keyup(function()

name 属性が body の textareaタグ で keyup イベントが発生したら { } 内の処理を行います。
keyup イベントは、キーボードのキーが押した後、離された際に呼び出されます。

4行目と5行目は、ちょっと長いので分解して説明します。

if($('input[name="sort"]:checked').val() == 'html')

まず if 文は、name 属性が sort になっている inputタグ の checked されている値(value)が html ならば { } 内の処理を行います。

$('#preview_body').html($('textarea[name="body"]').val());

id要素 が preview_body となっている HTML タグの中身を、jQuery の html 関数を使って texterea に入力されている内容に書き換えます。
html 関数は、入力されている内容を HTML として扱い出力します。

else

else は、4行目の if 文の条件に当てはまらなかった場合に { } 内の処理を行います。
(inputタグ の checked されている値(value)が html 以外の場合ですね)

$('#preview_body').text($('textarea[name="body"]').val());

id要素 が preview_body となっている HTML タグの中身を、jQuery の text 関数を使って texterea に入力されている内容に書き換えます。
text 関数は、入力されている内容を テキストとして扱い出力します。
< や > がエスケープされて、HTMLエンティティとして出力されます。

click イベントの処理

$('input[name="sort"]').click(function()

name 属性が sort の inputタグ で click イベントが発生したら { } 内の処理を行います。
click イベントは、マウスなどのポインティングデバイスでクリックされた際に呼び出されます。

8~9行目は、4~5行目と同じ処理を行っています。

もっとややこしい処理を色々入れないと、実装できないかと思ってましたがやってみると案外簡単に実装できました。
jQueryは便利な関数が色々揃ってますね。

jQueryを組む際にいつもお世話になっているサイト。
jQuery 日本語リファレンス


crontab(クロンタブ)でmysqldumpをデータベース毎に実行し毎日自動でバックアップ


データベース毎にMySQLのバックアップを自動で取るために設定した手順を書き記しておきます。

mkdir -pv /home/backup/mysql
chown -R user:user /home/backup

バックアップを保管するためのフォルダを作ります。

mkdir /home/user/cron

ユーザーフォルダに cron 設置用のディレクトリを作ります。

vim /home/user/cron/backup_mysql.sh

mysqldump を行うシェルスクリプトを作成し、下記の内容を書き込みます。

#!/bin/sh

# バックアップファイルを保存するディレクトリ
path='/home/backup/mysql'

# データベース名
db_name=("db_name_01" "db_name_02" "db_name_03")

date=`date +%y%m%d`

date_old=`date --date "7 days ago" +%y%m%d`

for i in ${db_name[@]}
do
  # mysqldump実行
  mysqldump --user=XXX --password=YYY --skip-lock-tables --no-create-db --single-transaction --databases ${i} > ${path}/${i}_${date}.sql

  # パーミッション変更
  chmod 700 ${path}/${i}_${date}.sql

  # 古いバックアップファイルを削除
  rm -f ${path}/${i}_${date_old}.sql
done

mysqldumpのオプションについては下記を参照。
mysqldump — データベースバックアッププログラム

chmod 700 /home/user/cron/backup_mysql.sh

DBのパスワードを記載しているため、パーミッションを絞る。

# 動作確認
/home/user/cron/backup_mysql.sh

# バックアップファイルが作成されているか確認
ls -l /home/backup/mysql
db_name_01_140725.sql
db_name_02_140725.sql
db_name_03_140725.sql

成功していれば、このようなファイルができる。

# crontabファイル
vi /home/user/crontab

「crontab -e」で直接編集するのは危険なため、crontabファイルを作成してそこに下記の内容を書き込む。

# MySQLダンプ
2 3 * * * /home/user/cron/backup_mysql.sh

毎日03:02に実行する。

crontab /home/user/crontab

crontabファイルを反映させる。

crontab -l

反映されていることを確認する。

less /var/log/cron

crontabの実行ログ確認。
※環境により、実行ログの保存ディレクトリは異なります。

mysql -u user -p db_name < /home/backup/mysql/file_name.sql

リストアが必要になった場合はこちら。

参考にしたサイト
mysqldumpとcronでMySQLを自動バックアップする


【Tera Term】SSH自動ログインマクロ


(鍵認証方式での SSH自動ログインマクロは「Tera Term 鍵認証方式でのSSH自動ログインマクロ」をご覧ください。)

 

さくらレンタルサーバーへのSSHアクセスにTera Termを使用しています。

ただ、毎回ユーザー名やパスワードを入力するのは手間がかかります。

そこで、Tera Termのマクロを使いオートログインできるようにします。

Tera Termをインストールしたフォルダ(C:\Program Files (x86)\teraterm\ 等)に、オートログインマクロのサンプルファイル(ssh2login.ttl)があるので、コピーしてデスクトップ等に貼り付けます。
ファイル名は「ホスト名.ttl」などにすると分かりやすいかと思います。

次に、「ホスト名.ttl」をテキストエディタで開き編集します。

username = 'アカウント名'
hostname = 'xxx.sakura.ne.jp'
passwdfile = 'D:\Tool\teraterm\pass_ホスト名.dat'
portnum = '22'

getpassword passwdfile username userpasswd

msg = hostname
strconcat msg ':'
strconcat msg portnum
strconcat msg ' /ssh /2 /auth=password /user='
strconcat msg username
strconcat msg ' /passwd='
strconcat msg userpasswd

connect msg

settitle 'タイトル(ホスト名など)'

解説
1行目 サクラのアカウント名を入れます
2行目 サクラの初期ドメイン「xxx.sakura.ne.jp」を入れます
3行目 暗号化したサーバパスワードの保存先ファイルを指定します
(初回起動時に自動でファイルが作成されます)
4行目 ポート番号(22)を指定します
6行目 「getpassword」コマンドを使用して、パスワードを「userpasswd」に代入します
8行目 変数「msg」に「hostname」を代入します
9~14行目 変数「msg」に「strconcat」コマンドで文字列を継ぎ足しています
16行目 「connect」コマンドで接続します

コマンドの詳細については公式サイトのコマンドリファレンスを参照してください。
詳しく解説が載ってます。

あとは、出来上がった「ホスト名.ttl」をダブルクリックすると接続できるようになります。
※初回起動時のみ、パスワードの入力が求められます

ただ、インストール時に拡張子「ttl」の関連付けをしていない場合は、手動で関連付けを行う必要があります。

関連付けは、「ホスト名.ttl」アイコンを右クリックして【プロパティ】を開きます。

TeraTermの設定

【変更】から、Tera Termをインストールしたフォルダ(C:\Program Files (x86)\teraterm\)を選び、「ttpmacro.exe」を開きます。
これで、自動ログインマクロの設定は完了です。