そこにいる

小林麻央さんの訃報を聞いて、亡くなった母のことを思い出した。

残された家族はこれからも様々な心の葛藤があると思うが、思い出した時、あるいは常にそこにいるのだと思う。

心よりご冥福をお祈り申し上げます。

Xperia Z5 Compact E5823を購入

f:id:uu_ka:20160703210021j:plain

Z5 Compactの海外版SIMフリー端末を買いました。
Xperia X Performanceも検討しましたが、5インチ未満のサイズが無い&技適マーク無しで断念。
Expansysでは暫く品切れ状態だったので、Etorenで注文しました。
Etorenは日本のAmazonにも出店していて、Amazonの倉庫から配送されたため、注文した翌日には届きました。(Amazonから買うより若干安かった..!)
HPにも書いてあるように、一度検品してるらしく起動した痕跡がありました。
端末自体は、保護シートも貼ってあり新品でしたが、気になる人は気になっちゃうかもしれませんね。

海外端末の多くはband19に対応していないので、首都圏と言えど建物内などは電波がつながりにくいです。
まぁでも、つながらない時はつながらないで問題無いのでそこは気にしてません。(カバンにiPad忍ばせているので・・)
あとは、電子書籍を予めDLしておくなどで対処しています。

端末自体は、低スペックなスマホからの乗り換えなので文句なし。
キビキビと動くので感動ですw
そして最近はブラックばかり選んでいた反動で、イエローを選択。
心までイエローな明るい感じになりますよね。

暫くは相棒になりそうです。

Apache2.4.3をソースからインストール

apache2.4.3をソースからインストールしたのでメモ

ソース取得から展開まで

ソースは、Apacheのサイトから取得する。

# cd /usr/local/src/
# ls
# wget http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/httpd-2.4.3.tar.gz
# ls
httpd-2.4.3.tar.gz
# tar xvfz httpd-2.4.3.tar.gz
# rm -rf httpd-2.4.3.tar.gz

必要なライブラリ群のインストール

必要なライブラリをインストールする。gccとかmakeとか

./configure でエラー見て確認でいいのだろうか、、?
yumの開発ツール一括インストールすれば一気に入るけど、余計なものもたくさん入ってしまう。
必要なのはほとんど入ってるっぽいので、Development toolsのくだりは飛ばし。

# yum grouplist | grep Development
Development tools
Additional Development
Desktop Platform Development
Server Platform Development
# yum groupupdate "Development tools"
# yum groupinfo "Development tools"
# yum groupinstall "Development tools"

APRとAPR utilをインストールする。

# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-1.4.6.tar.gz
# tar xvfz apr-1.4.6.tar.gz
# rm apr-1.4.6.tar.gz
# cd apr-1.4.6/
# ./configure
# make
# make install
# wget http://ftp.jaist.ac.jp/pub/apache//apr/apr-util-1.5.1.tar.gz
# tar xvfz apr-util-1.5.1.tar.gz
# cd apr-util-1.5.1
# ./configure --with-apr=/usr/local/apr/
# make
# make install

pcreをインストールする。

# yum install pcre-devel

コンパイルからインストール

Apacheには、様々な機能がありそれらを静的もしくは動的に組み込むことができる。

  • 静的に組み込むとは、コンパイル時に組み込むことを指す。
  • 動的に組み込むとは、起動時に呼び出すよう設定することを指す。

使用の有無にかかわらずLoadModuleされている機能は必ず読み込む。
違いは、コンパイルし直さなくても設定ファイルを編集して再起動することによって動作の有無を変更できる点にある。
動的機能を利用するためには、mod_soを静的に取り込む必要がある。
間違ってたらゴメンナサイ、、、(._.)
今回は、mod_soとmod_sslmod_rewriteを静的に取り込み、その他を動的オブジェクトとして取り込む。( --enable-mods-shared=allで全てがはいるわけではないっぽい)
その前に、opensslのバージョンが古いみたいなので怒られたのでインストールする。

# yum install openssl-devel
# ./configure --enable-so --enable-ssl --enable-module=rewrite --enable-mods-shared=all
# make
# make install

※ 環境によって、足りないライブラリは異なるのでその都度インストールすること。

起動スクリプトとサービス登録

# cp /usr/local/src/httpd-2.4.3/build/rpm/httpd.init /etc/init.d/httpd
# chkconfig --add httpd
# chkconfig httpd on
# chkconfig --list httpd
httpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
#vi /etc/init.d/httpd
# パスを変更
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
CONFFILE=/usr/local/apache2/conf/httpd.conf
pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid}

起動確認

# /etc/init.d/httpd start
Starting httpd: [ OK ]

ブラウザからIt worksが表示されることを確認する。

バージョン確認

# /usr/local/apache2/bin/httpd -v
Server version: Apache/2.4.3 (Unix)
Server built: Oct 8 2012 21:09:07

実行ユーザの設定

サーバーが不正にアクセスされた場合でも被害を最小限に抑えるために、必要最低限の権限を持ったユーザーでサーバを実行する。
Apache用ユーザーを作成してそのユーザーがサーバーのリクエストに応答するように設定する。
ちなみに、root権限で立ち上げた後、設定ファイルのユーザで子プロセスを起動してるよう。

# groupadd apache
# useradd -g apache -d /var/empty/apache -s /sbin/nologin apache
# vi /usr/local/apache2/conf/httpd.conf

# apacheユーザとグループに変更
User apache
Group apache

# chown -R apache:apache /usr/local/apache2/htdocs/*
# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
# ps axuwf | grep httpd
root 30293 0.0 0.0 6380 660 pts/0 S+ 22:33 0:00 \_ grep httpd
root 30179 0.0 0.1 75576 2912 ? Ss 22:11 0:00 /usr/local/apache2/bin/httpd
apache 30181 0.0 0.2 485372 5136 ? Sl 22:11 0:00 \_ /usr/local/apache2/bin/httpd
apache 30182 0.0 0.2 485372 5152 ? Sl 22:11 0:00 \_ /usr/local/apache2/bin/httpd
apache 30183 0.0 0.2 419836 4616 ? Sl 22:11 0:00 \_ /usr/local/apache2/bin/httpd

ログローテート

accsess_logとerror_logをログローテートさせる。
今回は月1でログローテート。

/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
missingok
notifempty
monthly
sharedscripts
postrotate
/sbin/service httpd graceful 2> /dev/null || true
endscript
}

調べまくってわっと書いたので、間違いたくさんあるかも知れませんがご容赦くださいmm

mysqlクライアント立ち上げに失敗する。error: 'Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)'

mysqlサーバを立てて、クライアントを立ち上げるもつながらない。

# /usr/local/mysql-5.5.27/bin/mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

mysql.sockにつなげないらしい。
調べてみると、mysqladminでどこにあるかわかるみたい。

# /usr/local/mysql-5.5.27/bin/mysqladmin version
/usr/local/mysql-5.5.27/bin/mysqladmin Ver 8.42 Distrib 5.5.27, for Linux on x86_64
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version 5.5.27
Protocol version 10
Connection Localhost via UNIX socket
UNIX socket /tmp/mysql.sock
Uptime: 4 min 23 sec

設定ファイルを見てみると、、、

# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

/tmp/mysql.sockに直してあげると、無事起動。

http://dev.mysql.com/doc/refman/4.1/ja/problems-with-mysql-sock.html
https://dev.mysql.com/doc/refman/4.1/ja/option-files.html

Git リモートリポジトリの移行

リモートリポジトリを移行したい場合は、リモート先のURLを変更してpushしてやれば良い。

  • 移行前のリモートリポジトリ上のソースを取得する。

$ git clone {URL}

  • configファイルから現在のリモートリポジトリのURLを確認

$ git remote -v
$ git config --list

$ git remote set-url origin {URL}

  • 変更できたことを確認する。

$ git remote -v
$ git config --list

  • 新しいリモートリポジトリにpushする。(tagも忘れずにpush)

$ git push origin master --tags

おわり!

異動は突然に

先日、突然偉い人に呼び出されまして。

「おやっ?もしかして」

思った通り、異動する事になりました。
伝えられた理由は、

  • 部の方針として、出来る限り色々な部署を回って経験をつませる&人脈をつくってもらう
  • 大きい案件があるので、そこでがっつりと開発経験をつんでほしい
  • 話題の大きい所からの異動だが、悪い異動ということではない
  • 新卒3人の中で、異動してもすぐ戦力としてなるから

とのこと。
特に3つめのことを結構心配された 笑
個人的に思ったのが、

  • 開発(主にコーディング)したいが、思っている仕事が全然できていなかったので良い機会かも
  • 最近は、席も分断されて楽しいと思える日がほとんどなかった
  • 慣れ親しんだ所から離れるのはやっぱり寂しい
  • あたらし環境楽しみ、でも馴染める!?

といったかんじで、
今いるところは諸々の事情で開発らしい事ががっつりとは出来ない&席のこと
とかを理由にして、悪い方向に考えてしまうという悪循環にはまっていたので絶妙なタイミングだと思いました。
(最近の悪態っぷりと言ったら、、、すみません)
まぁ、色々な理由があるんでしょうがそんなの考えてもしょうもないので。

後から聞くと、結構前から誰か一人は異動することが決まっていたらしい。
10月からなので、何とも言えない1ヶ月を過ごすわけですがゆっくりやすみつつ
英語とPHPの勉強でもしようかなーと思ってます。

あと、今後どういう事やりたくてどう進んで行くのかおざなりになっていたのでもう一度考える良い機会になったかな。
さらばeb、凄い人いっぱいで楽しかったー

morphiaでnullをstoreする方法

morphiaを使っているのですが、valueにnullがきたときにkeyもろとも消えてしまって悩んでました。

morphiaさんのページを見てみると、

Does not store Null/Empty values (by default).

by defaultということは、設定できるのかと思い調べてみるとありました。

MapperOptionsクラス

storeNulls
          Controls if null are stored.

が!ちなみにEmputyの設定も出来ます。

morphia.getMapper().setOptions(options);

こんな感じだったかな?

結局必要なくなったんですけどねotz

 

分からないこと一杯だけど楽しいなー