コントロール+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)
こちらもstr
をanimals
に置き換えて考えてみます。
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年になりますように!
何か色々と道が開けていくといいです。