MySQLで半角カタカナを全角に変換する
MySQLで半角カタカナを全角に変換する
便利な関数は無いため、ストアドファンクションを作成し対応
DROP FUNCTION IF EXISTS kanaToKANA; DELIMITER // CREATE FUNCTION kanaToKANA (data TEXT) RETURNS TEXT DETERMINISTIC BEGIN DECLARE kana1_len, kana2_len INT; DECLARE kana1_h VARCHAR(62) DEFAULT 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッャュョァィゥェォ ー。「」、・'; DECLARE kana1_z VARCHAR(62) DEFAULT 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンッャュョァィゥェォ ー。「」、・'; DECLARE kana2_h VARCHAR(52) DEFAULT 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ'; DECLARE kana2_z VARCHAR(26) DEFAULT 'ガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポヴ'; SET kana1_len = CHAR_LENGTH(kana1_z); SET kana2_len = CHAR_LENGTH(kana2_z); WHILE kana2_len > 0 DO SET data = REPLACE(data, SUBSTRING(kana2_h, kana2_len * 2 - 1, 2), SUBSTRING(kana2_z, kana2_len, 1)); SET kana2_len = kana2_len - 1; END WHILE; WHILE kana1_len > 0 DO SET data = REPLACE(data, SUBSTRING(kana1_h, kana1_len, 1), SUBSTRING(kana1_z, kana1_len, 1)); SET kana1_len = kana1_len - 1; END WHILE; RETURN data; END; // DELIMITER ;
-- 正しく変換できるか確認 SELECT hogeKanaName, kanaToKANA(hogeKanaName) FROM t_hoge; -- 対象レコードを更新 UPDATE t_hoge SET hogeKanaName = kanaToKANA(hogeKanaName);
Linuxで30分以内に変更したファイルを削除する
Linuxで30分以内に変更したファイルを削除する
find を使ってファイルを特定する
find . -type f -mmin -30 -exec rm -f {} \;
※いきなり実行するのは危険なので、必ず対象ファイルを確認してから実行すること
Pythonバージョンアップによる yum の SyntaxErrorについて
以前、python3.6 をインストールした際、エイリアスを変更したことで、yumでエラーが発生した模様
修正前
[root@localhost ~]# ll /usr/bin/python* lrwxrwxrwx. 1 root root 12 May 31 17:49 /usr/bin/python -> /bin/python3 lrwxrwxrwx. 1 root root 9 Apr 27 03:48 /usr/bin/python2 -> python2.7 -rwxr-xr-x. 1 root root 7136 Nov 6 2016 /usr/bin/python2.7 lrwxrwxrwx. 1 root root 14 May 31 17:47 /usr/bin/python3 -> /bin/python3.6 -rwxr-xr-x. 2 root root 11312 Apr 7 23:35 /usr/bin/python3.6 lrwxrwxrwx. 1 root root 26 May 31 17:22 /usr/bin/python3.6-config -> /usr/bin/python3.6m-config -rwxr-xr-x. 2 root root 11312 Apr 7 23:35 /usr/bin/python3.6m -rwxr-xr-x. 1 root root 173 Apr 7 23:34 /usr/bin/python3.6m-config -rwxr-xr-x. 1 root root 3415 Apr 7 23:32 /usr/bin/python3.6m-x86_64-config
リンクを貼り直して対応する
-- python のエイリアスを python3.6 から、python2.7に変更 unlink /bin/python ln -s /bin/python2 /bin/python
修正後
[root@localhost ~]# ll /usr/bin/python* lrwxrwxrwx. 1 root root 12 Jul 10 14:14 /usr/bin/python -> /bin/python2 lrwxrwxrwx. 1 root root 9 Apr 27 03:48 /usr/bin/python2 -> python2.7 -rwxr-xr-x. 1 root root 7136 Nov 6 2016 /usr/bin/python2.7 lrwxrwxrwx. 1 root root 14 May 31 17:47 /usr/bin/python3 -> /bin/python3.6 -rwxr-xr-x. 2 root root 11312 Apr 7 23:35 /usr/bin/python3.6 lrwxrwxrwx. 1 root root 26 May 31 17:22 /usr/bin/python3.6-config -> /usr/bin/python3.6m-config -rwxr-xr-x. 2 root root 11312 Apr 7 23:35 /usr/bin/python3.6m -rwxr-xr-x. 1 root root 173 Apr 7 23:34 /usr/bin/python3.6m-config -rwxr-xr-x. 1 root root 3415 Apr 7 23:32 /usr/bin/python3.6m-x86_64-config
PHP をソースからインストールする
PHPをインストール
# cd /usr/local/src -- http://php.net/downloads.php から任意のミラーサイトを選択して、ダウンロード # wget -O php-7.1.7.tar.gz http://php.net/get/php-7.1.7.tar.gz/from/this/mirror # tar -zxvf php-7.1.7.tar.gz # cd php-7.1.7 # ./configure # make && make install
configureで以下のようなエラーが発生する場合
configure: error: xml2-config not found. Please check your libxml2 installation.
libxml2-devel をインストールすると解決
# yum install libxml2-devel
PHPの多重代入
PHPの多重代入
PHPで複数の変数に同じ値を代入する
以下の式を実行すると、全ての変数に 100 が代入される
<?php $var1 = $var2 = $var3 = 100; var_dump($var1); var_dump($var2); var_dump($var3); /* 実行結果 int(100) int(100) int(100) */ ?>
配列の場合は list() を使用する
<?php list($var1, $var2, $var3) = [1, 2, 3]; var_dump($var1); var_dump($var2); var_dump($var3); /* 実行結果 int(1) int(2) int(3) */ ?>
文字コードについての基礎知識
文字コードについての基礎知識
Software Design 2016年12月号の特集文字コード攻略マニュアルを読んで、自分用にまとめておく
符号化
文字をビット列で表すこと
例)じゃんけんの種別を符号化したもの
文字 | 符号 |
---|---|
グー | 00 |
チョキ | 01 |
パー | 10 |
文字コード
どの文字をどのようなビット列で表現するか
文字化け
表現と解釈のルールが一致しない場合、情報を正しく扱うことができない
文字コードは視覚的な表現について責務を持たない
その文字がどのように視覚的に表現されるか決定するのはフォント
文字コードの種類
ASCII
American Standard Code for Information Interchangeの略
文字コードの祖先EUC-JP
Extended UNIX Code Packed Format for Japaneseの略
UNIX上で日本語の文字を扱う場合にもっとも多く利用されているShift_JIS(SJISとも呼ばれる)
かつては日本語環境でのデファクトスタンダードCP932
MicrosoftによってShift_JISが拡張されたもの
NEC特殊文字、NEC選定IBM拡張文字、IBM拡張文字が含まれるUTF-8
1文字が1~4バイトで表現される可変長の符号化方式
1バイト文字はASCIIそのものなので、上位互換として普及
ひらがなや漢字は3バイトで表現される
MySQLで副問い合わせによって取得した複数のキーでデータを削除する
MySQLで副問い合わせによって取得した複数のキーでデータを削除する
MySQLで副問い合わせによって取得した複数のキーでデータを削除したい
主キー(id)に serialNo を追加し、複合主キーにしようとしたが、serialNo に同じ値が入っており、主キー制約を変更できなかった
重複する項目を削除する際に、少し悩んだのでメモしておく
-- 重複行を特定し、主キーだけのビューを作成 CREATE VIEW v_dummy AS SELECT id, serialNo FROM t_hoge GROUP BY id, serialNo HAVING COUNT(*) > 1; -- 重複行を削除 DELETE FROM t_hoge WHERE (id, serialNo) IN (SELECT id, serialNo FROM v_dummy); -- ビューを削除 DROP VIEW v_dummy;
一度ビューを作成する理由は、副問合せで利用したテーブルをそのまま削除することができないため