子育て×調理師×プログラミング

プログラミング勉強中なので、アウトプットもしながら更新していきます。

コントロール+Cをしてもサーバーが停止しない時

ターミナルの機嫌が悪いです!

サーバーを停止させて、再起動させようと思いコントロール+Cをしました。

いつもは最後に Good Bay! と出るのにこの日は ^C の表示から何も進まないという状態でした。

行ったこと

コントロール+Q

結果

何も変わらない

行ったこと

ターミナルを終了させてまた立ち上げる

結果

=> Booting Puma
=> Rails 6.0.3.4 application starting in development 
=> Run `rails server --help` for more startup options
A server is already running. Check /Users/ユーザー名/ディレクトリ/ファイル名/tmp/pids/server.pid.
Exiting

すでにサーバーは起動していますと出る。

localhost:3000にアクセスしても動かないんです。

起動しているならコントロール+Cで終了するんじゃないかと思いやってみる

結果

ユーザー名@ユーザー名noAirディレクトリ名 %

が続きます。

行ったこと

tmp/pids/server.pid.を削除

方法

サーバー側のターミナル で

% lsof -i:3000

そうすると

COMMAND   PID        USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ruby    90299 ユーザー名   12u  IPv4 0xdee52275598d78d3      0t0  TCP localhost:hbci (LISTEN)
ruby    90299  ユーザー名  13u  IPv6 0xdee522755440b4a3      0t0  TCP localhost:hbci (LISTEN)
ruby    90299  ユーザー名   25u  IPv6 0xdee522754cd3a863      0t0  TCP localhost:hbci->localhost:64418 (CLOSE_WAIT)
ruby    90299  ユーザー名   27u  IPv6 0xdee522754cd37143      0t0  TCP localhost:hbci->localhost:64413 (CLOSE_WAIT)
ruby    90299  ユーザー名  32u  IPv6 0xdee522753a195763      0t0  TCP localhost:hbci->localhost:64143 (CLOSE_WAIT)
ruby    90299  ユーザー名   33u  IPv6 0xdee522755440ae83      0t0  TCP localhost:hbci->localhost:64150 (CLOSE_WAIT)

rubyのPIDの番号を削除します。 この場合90299のことです。

% kill -9 90299

そして再度rails sをするとサーバーが再起動します!

sliceメソッド

文字列の最後の2文字を3回繰り返して出力させる!

今日はrubyドリルででてきた問題です。

sliceメソッド

配列から指定された要素を返します。指定の要素を切り取る(slice)イメージです。

出力例:
extra_end('Hello') → 'lololo'
extra_end('ab') → 'ababab'
extra_end('Hi') → 'HiHiHi'

こんな感じで最後から2文字目を3回繰り返すということです。

# 配列を作成します
array = [0,1,2,3,4,5,6]

# 配列から引数で指定した要素をsliceします
ele1 = array.slice(1)
puts ele1
#=> 1

# 配列番号1から4つ分の要素をsliceします
ele2 = array.slice(1,4)
puts ele2
#=> 1 2 3 4

# 配列はもとのままです
puts array 
#=> [0,1,2,3,4,5,6]

上記がsliceメソッドを使った例です。

今回は、animalsの最後から2番目の文字を3回繰り返して出力させようと思います。

def extra_end(str)
  extra_end = str.slice(str.length - 2,2)
  puts extra_end * 3
end

extra_end("animals")

5行目の("animals")という引数は、1行目の(str)に置き換えられます。 置き換えると考えやすいです。

def extra_end(animals) #←実際は(str)

2行目の

extra_end = str.slice(str.length - 2,2)

こちらもstranimalsに置き換えて考えてみます。

extra_end = animals.slice(animals.length - 2,2)
#animalsは実際はstrです

この

animals.slice

animalsという文字列をスライスしましょう。という事です。

(animals.length -2,2)

.lengthは文字の長さを調べるメソッドです。 animals.length -2で最後の文字から2番目という意味です。 animalsの最後の文字から2番目はlsです。

その次にある2の意味は先ほど書いた最後から2番目、すなわちanimalsの最後から2番目の、lsから2文字という事です。

少しわかりにくいので、数値を変えてみます。

extra_end = animals.slice(animals.length - 5,3)

-5,3に変えて考えていきます。

animals.length -5で最後の文字から5番目という事なのでimalsという事です。

そして、次に3ということはimalsの前から3文字目という意味です。 なので、

extra_end = animals.slice(animals.length - 5,3)

imaを表しています。

それでは先ほどの記述の続きに戻ります。

puts extra_end * 3

このextra_endにはlsが入っています。 *3は×3という意味なので出力結果は

lslsls

となります!

繰り返し処理 times do〜end

繰り返し処理について

カリキュラムがだいぶ進み、行き詰まることが多いです。難しいなぁと思いながらも、でも理解したい、読めるようになりたいという気持ちがとても強いのでまだまだ頑張ります!!

ここへきて復習と同時にアウトプットしていきたいと思います!

timesメソッド

数値.times do
  繰り返す処理
end

[数値]→繰り返したい数値を入れる

例:5回繰り返したい場合

5.times do
  繰り返す処理
 end

[繰り返す処理]→繰り返したい文を呼び出す

5.times do
  puts "おはよう"
end

[結果]

おはよう
おはよう
おはよう
おはよう
おはよう

このように、[繰り返す処理]の部分に

puts "おはよう"

を書いたことで 『"おはよう"を5回繰り返してください』 ということになります。

繰り返し処理の中で、何回目の処理であるか番号を付けたい場合、timesメソッドではメソッド内で使用できる変数を『||』で囲うブロックを使うことができます。このブロック変数を使って番号を表示させていきます。

5.times do |num|
  puts num
  puts "おはよう"
end

[結果]

0
おはよう
1
おはよう
2
おはよう
3
おはよう
4
おはよう

変数 |num| にはちゃんと番号が入っていることがわかります。

この変数 |num| (番号)を、"おはよう"の前につけるときは

5.times do |num|
  puts "#{num} おはよう"
  end

[結果]

0 おはよう
1 おはよう
2 おはよう
3 おはよう
4 おはよう

このように表示されます。 また、#{num} と"おはよう"の間に "." や ":" を入れても表示させることができます。

5.times do |num|
  puts "#{num}: おはよう"
  end

[結果]

0: おはよう
1: おはよう
2: おはよう
3: おはよう
4: おはよう

表示された結果を見た通り、番号は0から始まってしまいます。 1から番号を付けたい時には、#{num} の後に + 1 をつけることで 0 からではなく、1 から番号をつけることができます。

5.times do |num|
  puts "#{num + 1}: おはよう"
  end

[結果]

1: おはよう
2: おはよう
3: おはよう
4: おはよう
5: おはよう

うまく表示させることができました!

zawaと申します。

初めまして!zawaです。

年が明けたばかりなので、あけましておめでとうございます。

 

ブログ初めてみようかなと思います!

 

簡単にプロフィールです。

 

現在33歳(今年34歳になります)調理師です。

今はプログラミングの勉強をしながら仕事してます。(パートです)

仕事は社員食堂で働いています。前職はずっとレストラン勤務でした。

外食も楽しかったのですが、給食も面白いですね。

給食業界にきたきっかけは、あれです。コロナの影響でシフト入れてもらえなく

なってしまいまして。正社員の時からお世話になった会社を退職し、転職しました。

社員食堂とか、前から気になっていたので良いきっかけになったのかなと

思っています。前向きにね、、、!

そして最近はプログラミングに興味をもちはじめ毎日コツコツ勉強してます。

そんな感じです。

 

あ!あとお母さんです!もうすぐ4歳になる男の子がいます。

めちゃ可愛いです。

私は毎日怒っていますが、、、。

 

という事で、これからちょこちょこ日常や勉強した事や仕事のことなど

書いていこうと思っています。

 

今年は良い1年になりますように!

何か色々と道が開けていくといいです。