ls でクエスチョンマークが表示された場合の対処法

dockerでELKスタックを構築していたら、elasticsearchが起動出来なくなってしまいました。

原因はこれ。

[root@f634ca04c992 elasticsearch]# ls -l
ls: cannot access elasticsearch.yml~: No such file or directory
total 36
-rw-r--r-- 1 root root 13541 Aug 1 01:00 elasticsearch.yml
-rw-r--r-- 1 root root 13476 Apr 27 2015 elasticsearch.yml.org
?????????? ? ? ? ? ? elasticsearch.yml~          ←← ここ!!!!
-rw-r--r-- 1 root root 1512 Apr 27 2015 logging.yml

 

elasticsearch.yml~をlsしても「 No such file or directory 」と表示される。
statも出来なかった。が、なぜかviで編集することができ、viで書き込みを行うと、
普通のファイルになった。(lsにてクエスチョンマーク表示されない。statも出来る)

ただし普通のファイルに戻っても、rmすると再びクエスチョンマークに戻った。
謎です。

もし原因についてピンと来た方がいたら教えてください。

elasticsearchのプロセスをkillしたのが原因かとも思いましたが再現せず。

route: netmask doesn't match route address と表示され、ルーティングを追加できない場合の対処法

以下コマンドを実行しても、ルーティング追加が出来ませんでした。

実行コマンド: 

 route add -net 172.21.108.140 netmask 255.255.255.128 dev eth0

 
エラーメッセージ: 
 route: netmask doesn't match route address

 netmask dosen't match ~~~ と書いてあったので、netmaskが悪いのかと思いましたが、netオプションにて指定するIPをネットワークアドレスにしたところ、解決。

実行コマンド: 
 route add -net 172.21.108.128 netmask 255.255.255.128 dev eth0

 

参考 ネットワークアドレスとは

http://www.infraexpert.com/study/ip4.html

dockerにてcakephp3, php7, centos7な環境を構築するメモ

docker run -it -p "80:8765" centos:7 bash #ここだけdockerホストにて実施
 
yum install --enablerepo=remi-php70,epel php-fpm php-gd php-gmp php-mbstring php-mcrypt php-opcache php-pdo php-pear-MDB2-Driver-mysqli php-pecl-memcached php-pecl-msgpack php-xml php-devel php-gd php-intl
yum install git zip unzip
 
cd /root # アプリを作成したいフォルダ
php composer.phar create-project --prefer-dist cakephp/app hogehoge
bin/cake server -H 0.0.0.0
 最後のサーバ起動にてオプション指定を行うことにより、どこからのアクセスでも受け付けるようにするのがコツです。(デフォルトではローカルホストからのみ受付)
私はdockerホストや外部からcakephpのアプリにアクセス出来ず、ハマりました。
docker初心者だったので、docker固有の問題かと思いました。
 
 参考にしたページ
 

samba 特定フォルダにアクセス出来ない時に確認すること

sambaで特定フォルダにアクセスできない場合、以下確認すると良いです。

1.SELinuxがonになっていないか確認

getenforceコマンドで確認出来ます。disabledとかになってればOK

2. アクセス出来るパーミッションになっていること

そのユーザがアクセスできるパーミッションになっているか、ls -alとかで確認しましょう。
アクセス出来ないフォルダだけでなく、その上位フォルダも確認が必要です。

自分は/home/user_name/sambaにアクセスできずはまりました。
原因は、/home/user_nameにアクセス権がなかったことでしたorz

 

上記2点確認してダメだったらそもそもsmb.confの設定が間違っているのではないでしょうか。

Rubyで面白いと思ったこと2つ

最近知った、Rubyで面白いことが2つあります。

  • クラス拡張が簡単
  • 文章を書くように、直感的なコードを書ける(擬似コードのように書ける)

です。

それぞれ説明します。

 

Rubyはクラス拡張が簡単

例えば以下のように、簡単に既存クラスに独自メソッドを追加することが可能です。

class String
  def to_hoge!
    self.replace("hoge")
  end
end
 

str = "aaa"

str.to_hoge!

p str # => "hoge"

Rubyは文章を書くように、直感的なコードを書ける

例えば3回繰り返す処理について、他の(私が経験したことのある)言語では

for (int i = 0; i < 3; i++) {...}

 のように書きますが、Rubyだと、

3.times{|i| ...}

と書けますね。

 

Rubyのほうが圧倒的に分かりやすいです。

Rubyなら3.times → 3回繰り返す

と一発で読むだけで直感的に分かりますが、

 

他だと、for (int i = 0; i < 3; i++) → iが最初0で、iが3より小さければ処理を実行して、一回の処理が終わるごとにiを1増やす→つまり3回繰り返すってことか!という感じ。

 

今思えばすごい分かりづらい。

まぁ慣れてるのでfor (int i = 0; i < 3; i++)も3回繰り返すという意味だとすぐ分かりますが・・・

 

以上です!

まとめ

Ruby

  • クラス拡張が簡単
  • 文章を書くように、直感的なコードを書ける(擬似コードのように書ける)

2..100 は何者なのか

下記のような2から100に対してループするコードを見た

(2..100).each do |i|

  #何かしらの処理

end 

 このソースを見て、2..100はArrayなのかと思ったのですが、違うみたい。

p (2..100) #=> 2..100 

Arrayだとしたら[2, 3, 4, ... , 100]のように出力されるはず。

 

答えはRangeというクラスでした。

p (2..100).class #=> Range 

初めてのRubyを読んだ 1

初めてのRubyを購入しました。

 

というわけで、読んだメモを書いていきたいと思います。
(いつまで続くかな。。。笑)

 

 本日は1~5ページ、Rubyの特徴についてです。

Rubyの全てはオブジェクト

Rubyの全てはオブジェクトみたいです。
なので、Objectクラスのインスタンスメソッド、object_idが実行できます。

p 1.object_id #=>3
p Array.object_id #=>70310424487200
p Array.new.object_id #=>70310426468000

 数値でも、クラスでも、クラスメソッドでもobject_idが出てきました。

また、全てオブジェクトということは、全て何らかのクラスに属するということです。

p 1.class #=>Fixnum
p Array.class #=>Class
p Array.new.class #=>Array
p Array.new.class.class #=>Class
p Array.new.class.class.class #=>Class

ClassのクラスはClassのようです。

 Rubyは読みやすい

本にはRubyは疑似コードと書いてありました。
つまり、非常に読みやすい、という解釈を私はしました。

例えば、

3.times do

  puts ""aaa"

end 

 3回aaaと表示する。
読んだままの動作ですね。

一般的な言語だと、

for(int i = 0; i < 3; i++) {

  print("aaa");

 という感じでしょうか。

 

本日は以上です。

このペースだといつ初めてのRuby読み終わるのだろうか(^^;