VPS作業記録3

2015/1/8は、nginxです。

http://nginx.org/en/linux_packages.html#stable
に従って、yumにnginxレポジトリを追加する。

具体的には、/etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1

という内容のファイルを作る。

これでおっけーらしいので、

# yum install nginx

でインストール。

# nginx -v
nginx version: nginx/1.8.0

起動は

# nginx

のコマンド。

で、ブラウザで自分のIPアドレスにアクセスして、確認すると、
Welcome to nginx!
が表示されてて、無事動いたと。


さて、ドキュメント。ロシア語と英語のみ・・・。
まずはビギナーズガイドをを読む。

Beginner’s Guide


デフォルトの設定ファイルは、3つのどこかに、nginx.confがあるよと書いてあるので、探す。

# find / | grep nginx.conf
/etc/nginx/conf.d
/etc/nginx/conf.d/example_ssl.conf
/etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf

となったので、/etc/nginx/nginx.confにあると。

起動は、nginx、終了は、nginx -s quit、設定ファイルの再読み込みは、nginx -s reload。

で、設定ファイルをいじって、ガイドに従って、/data/wwwのデータを表示させてみようと思ったら、

できなかったので、ここまで。

別件

vimで日本語をタイプすると文字化けがおこっていた。
調べると、環境変数LANGを変えればよいとのこと。

なので、

LANG="ja_JP.UTF-8"
export LANG

の2行を、~/.bashrcに加えるか、全ユーザーに適応したいなら/etc/profileに追加するか、する。

が、日本語に変わってしまうのもあれなので、

LANG="en_US.UTF-8"

にした。一応これでも日本語も入力できた。

VPS作業記録2

3日目(12/30)の記録です。

Djangoチュートリアルをやろうかなと思ってたのですが、またひとつインストール作業することにしました。
今回入れるのは、OpneCV です。
Versionは、2.4の最新版の2.4.11にしました(3.1もリリースされているのですが、なんとなくこっち。また、yumは、2.0なのでちょっと古過ぎる。)。
DOWNLOADS | OpenCV
必要な要件は、ここ(Installation in Linux — OpenCV 2.4.12.0 documentation)に書いてあるとおりっぽいのですが、apt-get用になってるので、多少読み替えが必要。

# yum install gcc
# yum install cmake
# yum install git
# yum install gtk2
# yum install gtk2-devel
# yum install python-devel
# yum install python-numpy
# yum install pkgconfig

必要要件の"ffmpeg or libav development packages: libavcodec-dev, libavformat-dev, libswscale-dev"なのですが、対応しそうなものがyum searchで見つけられず、とりあえず、放置して、先に進みます。

続きを読む

IEでCSSが読み込まれない

www.shoeisha.co.jp

スタンダードレイアウト編をざっと一通り読み終わったので、さて、自分向けのページとしてHTMLを書いてCSSも書いて、さて、だいたい完成したので、サーバーにアップロードしたところ、なぜかIEで開くとデザインが崩れる(Firefoxは大丈夫)。
自分の書き方がわるかったのかと思ったけど、そんな新しい要素とか使ってもいないし、なぜ崩れるか原因が不明。

そこで、原因を探索する。


自分が書いたHTML5/CSS3は信用ならないので、サンプルサイトのコードそのままで原因を調べることにした。

ダウンロードしたサンプルサイトのコードを(デスクトップとかに置いて)IEで開くと、ちゃんと表示される。IEの問題ではないようだ。
次に、そのままサンプルサイトのコードをサーバにあげてから、開くと、なんとデザインが崩れる!

デスクトップで普通に表示されて、サーバに上げるとダメということは、サーバに上げたときになんかダメになってるのか?
じゃあ、文字コードと改行コードの問題かなと思って、nkfを使ったりして、2つを揃えるも、まったく変化なし。

完全に詰んだ感があったのですが、IEの開発(?)を見てみると、エミュレートモードのデフォルトが「7」になっている。
なんかIEの設定が変っぽい感じがしてきたので、ぐぐってみると、原因判明。

furoshiki.hatenadiary.jp

有効にするんじゃなくて、無効にします。

なので、ローカルだと相互表示じゃないので、ちゃんと見れるけど
イントラのサーバに上げたら、相互表示になって、IE7で開いてる状態になって、デザインが崩れると。

その設定のところのチェックマークを外して、みると、デザイン崩れなくなりました!
(自分の書いたCSSIEでもOKだった。よかった。)

Python 3の波がオライリー本にも・・・

TLで、オライリーのカレンダー(O'Reilly Japan - 2015年 ブックフェア開催中)をゲットしてるひとがいて、いいなーと思って、なにげなく目録をみたら、Python 3の文字を発見。

入門 Python 3

入門 Python 3

実践 Python 3

実践 Python 3


はじめてのPythonとかクックブックとか、2系の時代のものだったので、ついに、オライリー本にも3系の流れがきましたね。
カレンダー目当てで、一冊買おうかな。
あと2レベルぐらいPythonに強くなりたいので、このへんとか手をだしたい気もする。

Cython ―Cとの融合によるPythonの高速化

Cython ―Cとの融合によるPythonの高速化

Python文法詳解

Python文法詳解

ハイパフォーマンスPython

ハイパフォーマンスPython

最近気になってること(2015年11月アップデート版)

  • Webサーバ周り
    • Apache(特に認証とか関係。cgiとか)
    • サクラのVPS借りたい(Nginx)
  • Webフロント
    • HTML5 & CSS3(→モダンコーディング読んでる)
    • JavaScript()
  • 基礎体力
  • 急がないけどやっておきたい
    • OpenCV
    • SQL
    • 関数型言語なにかひとつ(「プログラミングの基礎 (Computer Science Library)」とか?)
  • 統計
    • 岩波データサイエンス vol.1


読み物関係(結構読んだ)

Javaで配列をソートする

Javaで配列をソートするときの備忘録。

まずは基本のき

int[] a = {5, 2, 4, 1, 3};                                                            
Arrays.sort(a);
//結果a = {1, 2, 3, 4, 5}となる

もちろん、順序が定義されているクラスは、intじゃなくてもArrays.sort()を使うことができる。

Date[] b = {new Date(100000000), new Date(50000000), new Date(0)};
Arrays.sort(b);

自分で作ったクラスでは、どうするか

1.自分で作ったクラスでComparableインターフェイスを実装しておく。intを返すようにちゃんとかく。

自ら比較する能力がある(-able)クラスを作っておく。

class MyClassComparable implements Comparable<MyClassComparable> {
  //フィールド変数に整数xとyをもつクラス
  int x;
  int y;
  public MyClassComparable (int x, int y) {
    this.x = x;
    this.y = y;
  }
  public int compareTo(MyClassComparable other) { //ここを実装する
    return this.x + this.y - (other.x + other.y); //2つの整数の合計が大きい方が、同じクラスを比較した時に大きいとした
  }
}

のようにしておけば、

MyClassComparable[] c = {new MyClassComparable(1, 5), new MyClassComparable(2,1) , new MyClassComparable(3,1)};
Arrays.sort(c);

のように、基本のきのように使うだけ。

2.コンパレーターインターフェイスを実装しておく。

インスタンスを比較するやつ(クラス)を作っておく。
こんな感じで、MyClassとMyComparatorをかいておく。

class MyClass {
  int x;
  int y;
  public MyClass (int x, int y) {
    this.x = x;
    this.y = y;
  }
}
class MyComparator implements Comparator<MyClass> {
  public int compare(MyClass m1, MyClass m2) {
    return m1.x + m1.y - (m2.x + m2.y);
  }
}

で、使うときは、Arrays.sort()にこんな感じで渡す。

MyClass[] d = {new MyClass(1, 5), new MyClass(2,1) , new MyClass(3,1)};
Arrays.sort(d, new MyComparator());
2'. 無名クラスでComparatorを作って渡す

MyClassで、implaments Comparableと加えるのも、新たにMyComparatorを追加するのも、あれだなーというときは、Comparatorを無名クラスで作って渡せばよい。

Arrays.sort(e, new Comparator<MyClass>(){
  public int compare(MyClass m1, MyClass m2){
  return m1.x + m1.y - (m2.x + m2.y);}});

多次元配列で2番目の要素で比較する

ベストプラクティスがよくわからなったけど、配列用のComparatorを作って渡せばよいので、こんな感じなるのかな?
何度も使うなら、Comparatorを作っておけばいいと思うし、今回だけ使うみたなときは無名クラスで渡してしまえばいいかなと。以下は、無名クラスで渡す場合。

double[][] f = {{1.0, 3.0},{2.0,2.0},{3.0,4.0},{4.0,1.0},{5.0,3.0}}; //2番目の要素で並べ替えたい
Arrays.sort(f, new Comparator<double[]>() { //double[]でコンパレーターを実装する
  public int compare(double[] a, double[] b) {
    if(a[1] > b[1]) {
      return 1;
    }else if (a[1] == b[1]) {
      return 0;
    }else {
      return -1;
  }}});

いじょ。