Note to Self

自分用のメモ置き場

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の略
    文字コードの祖先

  • Unicode
    世界中の文字を1つの符号化文字集合に収めようとする規格
    4バイト

  • EUC-JP
    Extended UNIX Code Packed Format for Japaneseの略
    UNIX上で日本語の文字を扱う場合にもっとも多く利用されている

  • Shift_JISSJISとも呼ばれる)
    かつては日本語環境でのデファクトスタンダード

  • 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;


一度ビューを作成する理由は、副問合せで利用したテーブルをそのまま削除することができないため

MySQLでランダムに指定件数分データを取得する

MySQLでランダムに指定件数分データを取得する

ORDER BY に RAND() 関数を使用し、LIMIT 句で取得件数を指定する

例)hoge テーブルからランダムに10件取得する

SELECT * FROM hoge ORDER BY RAND() LIMIT 10;