プログラミング備忘録

linux, javascript, php, C#, そのうちScalaとかアプリ開発とかやってみたいです。

golangのwebsocketのモジュール名

 

golang.org/x/net/websocket

が最近は正しいものらしいので、

 

 go get golang.org/x/net/websocket

 

でゲットする。

virtualbox guest additionをコマンドラインのみでインストールする方法

virtualboxubuntu派生のxubuntuを入れてみたんですが、マウスが反応しません。

GUIなのにキーボードオンリーで、virtualbox guest additionをコマンドラインで入れたらマウスも反応してくれるんじゃないかと思いました。

 

そういうわけで、コマンドラインのみでguest additionをインストールすることに…。

 

と言っても、コマンドをいくつか叩くだけです。

 

1つめ。

sudo apt-get update

 

2つめ。(といってもいろいろいっぺんにインストールします)

sudo apt-get install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11

 

以上です。

 

結論から言いますと、やっぱり無印?ubuntu尊いです。

全部最初から整っている気がします。

 

phpの無名関数で値を使いまわす場合は参照渡しが必須

題名通りです。

無名関数のuseに渡す値を参照渡しにしないと、毎回値がリセットされてしまうようです。

 

例として、まわりくどいですが、配列の重複を削除する方法。

array_unique使えばええやんというツッコミはなしで

 

$check_array = ;

$filterd_array = array_filter ($target_array, function($item) use (&$check_array) {

     if ( in_array($item, $check_array) ) {

           return false;

     }

     $check_array = $item;

     return true;

});

 

 

みたいな感じですかね。

 

tarコマンドでディレクトリ全体を圧縮する

いつも忘れてググっては、情報いっぱいあって2,3分探すので…。

 

例) foobarディレクトリをfoobar.tar.gzファイルに圧縮するコマンド

tar cvfz foobar.tar.gz foobar/

 

ちなみに、解凍は

tar xvzf foobar.tar.gz

ですな。

MySQLのALTER TABLEで既存カラムVARCHARの文字数は減らせないことがある

知らなかったです。

 

tbl_user.user_nameがVARCHAR(500)とかで、

「田中太郎衛門」(VARCHAR(10)は越えてるデータ)

などというデータが既にテーブルに入っていた場合、

 

 ALTER TABLE tbl_user  MODIFY user_name VARCHAR(4); 

 

などとして、

既にカラムに入っているサイズより小さくしようとしても、

エラー出るんですね!

 SQLSTATE[01000]: Warning: 1265 Data truncated for column 'XXXXX' at row 1

「田中太郎衛門」(VARCHAR(10))     VARCHAR(4)

なので。

ネット情報では、切り捨てられるとか書いてるページあったけど、

バージョンによってはエラーになるんですな。時間とられた。つかれた。

 

 

ただし、

カラムに入っているサイズより大きい場合、

たとえばVARCHAR(300)ぐらいに縮める場合

 ALTER TABLE tbl_user  MODIFY user_name VARCHAR(300); 

はうまくいきます。

「田中太郎衛門」(VARCHAR(10))     VARCHAR(300)

なので。

 

 

 

 

ubuntu + apache2 で8080ポートも併用する場合

apache使って開発している時に、

http://hogehoge.comと、http://hogehoge.com:8080とで、

表示サイト変えたいなどということ、あると思います。

 

そういう場合の手順になります。

ubuntuのバージョンは16.04で、apache2の場合です。

 

・/etc/apache2/ports.conf に8080ポートを追加

vi /etc/apache2/ports.conf

 

Listen 80
Listen 8080 ←これを追加

 

・sites-availableに、8080ポート用の設定を追加

cd /etc/apache2/sites-available

 

例として、もともとの「000-default.conf」をコピーして、

「new-port.conf」を作成します。

cp 000-default.conf new-port.conf

 

vi new-port.conf

 

<VirtualHost *:8080> 8080にします。

...(なんやかんやの設定)...

DocumentRoot /var/www/newport ←別のディレクトリを設定

...(なんやかんやの設定)...

</VirtualHost>

...(なんやかんや)...

 

<Directory "/var/www/newport"> ←ディレクトリの設定
AllowOverride All
Require all granted
</Directory>

 

・サイトの設定を有効化

※new-port.confを有効化したいので、a2ensite new-port とコマンド打ちます。a2ensite new-port

 

apacheを再起動するなどします。

service apache2 reload

もしくは

service apache2 restart

 

・結局どうなるの?

http://hogehoge.com:8080/でアクセスすると、

new-port.confの設定が適用されて、

/var/www/newport ディレクトリの内容が読み込まれます。

※当たり前ですが、/var/www/newport はmkdirして、パーミッション適当に設定しておいてください。

 

 

以上です。

 

 

 

 

 

Mysqlのdate_time型で、「月」や「月日」で検索する方法

Mysqlのdatetime型や、date型のカラムに対して、

年月日ではなく、「月」や「月日」で抽出したいときは、

DATE_FORMAT関数を使うと便利です。

 

MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.7 日付および時間関数

 

例)誕生日が7月のユーザを抽出

SELECT * FROM users  

WHERE DATE_FORMAT(birth_day, '%m') = '07';

 

例)誕生日が7月8日のユーザを抽出

SELECT * FROM users  

WHERE DATE_FORMAT(birth_day, '%m%d') = '0708';

 

もちろん、年月日でも抽出可能です。

例)誕生日が1999年7月8日のユーザを抽出

SELECT * FROM users  

WHERE DATE_FORMAT(birth_day, '%Y%m%d') = '19990708';

 

 

以上になります。

 

参考URL)

d.hatena.ne.jp