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
参考 ネットワークアドレスとは
dockerにてcakephp3, php7, centos7な環境を構築するメモ
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読み終わるのだろうか(^^;