- 1. 【Rails】ENV[]とENV.fetch() {}の違い【Ruby】
- 2. Rails チュートリアルを終えて
- 3. Rubyスクリプトをどうコンパイルするのか?
- 4. Ruby on Rails 超簡単レベル上げ機能
- 5. 投稿数
- 6. Lv
- 7. あと投稿でレベルup
- 8. DockerでRuby on Railsの環境を構築する際のDockerfileのコマンド及びコード理解
- 9. RubyとPHPの比較(クラス、インスタンス、継承、オーバーライド)
- 10. 【個人開発】温泉宿の情報交換ができる掲示板とSNSが組み合わさったサービス「みんなの温泉宿」を開発しました。
- 11. いいねボタンのAjaxが機能しません。リロードをしなければ反応しません。
- 12. 【LeetCode】69. Sqrt(x)を解いてみた
- 13. 【LeetCode】67. Add Binaryを解いてみた
- 14. Rubyスクリプトの字句解析
- 15. 【初心者用】RubyでJSONを扱ってみよう
- 16. 【個人開発】筋トレ × 音ゲー × EDMの新感覚トレーニングアプリ「Muscle Beat」をリリースしました?
- 17. アプリケーションの雛形を作成する。
- 18. チェックボックスの作り方
- 19. shionさん主催のコワーキングスペース C作業場さんの勉強会がいい感じだったので、Rails Pluginを「リリースした話」
- 20. アプリケーションサーバーについて
- 21. 【Ruby】特異メソッドについて
- 22. 【LeetCode】66. Plus Oneを解いてみた
- 23. 【LeetCode】58. Length of Last Wordを解いてみた
【Rails】ENV[]とENV.fetch() {}の違い【Ruby】
## はじめに
本記事は、プログラミング初学者、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。## `ENV[]`と`ENV.fetch() {}`の違い
`ENV[]`と`ENV.fetch() {}`の違いは指定した環境変数が存在しない場合に`nil`を返すかデフォルト値を返すかの違いです。例えば、以下の場合には、`RAILS_MAX_THREADS`、`DB_USER_NAME`、`DB_USER_PASSWORD`が存在しない場合にはnilとなります。
“`detabase.ymldefault: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.["RAILS_MAX_THREADS"] %>
username: <%= ENV.["DB_USER_NAME"] %>
password: <%=
Rails チュートリアルを終えて
Qiita初投稿です。私は現在、都内の私立大学の新3年生です。昨年の夏頃からプログラミングに興味を持ち、独学による学習を続けてきました。Virtual Box を利用した環境構築、「Rails Tutorial」やDotinstall など様々な教材に触れてきました。これらの経験から現状を振り返り、これからの目標設定を考えたいと思います。
※この記事は第三者に閲覧していただくことを目的としていません。あくまで、自己完結する記事となります。
現在の目標は、SNSアプリをポートフォリオとして作成することです。そのために必要な知識をqiita などを通じて模索する予定です。
これまでやったこと(3/27現在)
• Rails Tutorial
一周目: 理解度は60%ほど。章にもよるが、一章を読むのに2~3日ほどかかった。モチベの維持が難しいと感じた。開発の大まかな概要を理解した。
二周目: コードの細部やテスト(TDD)の流れ、REST API など一周目では見落としていた概念を理解した。また、各リソース毎に仕組みを適宜、紙などにフローチャートなどで分かりやすくまとめた。し
Rubyスクリプトをどうコンパイルするのか?
前回の記事では、字句解析、そして構文解析までをご紹介しました。
今回の記事は前回の内容がモリモリに必要になるので、読んでいない方がいらっしゃいましたら以下の記事をご覧ください。https://qiita.com/wangqijiangjun/items/fa153176f7b410cb4a5f
前回の記事で以下のような画像を提示しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/7e628acd-0c13-02c6-d318-5b5d0e01ec00.png)
この続きが以下の画像になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/b16d0910-8ad2-b743-81ec-c778ea715bd4.png)今回は、構文解析の次である「コンパイル」~「YARV」までを見ていこうとおもいます。
こちらも中々の重厚感があるのでめげずに頑
Ruby on Rails 超簡単レベル上げ機能
5投稿ごとに1レベ上がる。
次のレベル上がるまであと何投稿かを表示する。
“`ruby:users_controller
def show
@user = User.find(params[:id])
@count = @user.tweets.count
@level = @count / 5
@next_level = 5 – (@count % 5)
end
“`“`erb:users/show.html.erb
投稿数<%= @count %>
<%= @level %>Lv
あと<%= @next_level %>投稿でレベルup
“`
![スクリーンショット 2022-03-27 19.44.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1081227/fec181f8-a831-7145-e8f0-441637226993.png)
DockerでRuby on Railsの環境を構築する際のDockerfileのコマンド及びコード理解
## なぜ記事を書こうと思ったか
Rails用のDockerfileを作成する際にコマンド及びコードの理解を備忘録として残すため。## Dockerfileとコマンド説明
Dockerfile
“`
FROM ruby:[バージョン]
RUN set -x && curl -sL https://deb.nodesource.com/setup_14.x | bash –RUN set -x && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add – && \
echo ‘deb http://dl.yarnpkg.com/debian/ stable main’ > /etc/apt/sources.list.d/yarn.listRUN set -x && apt-get update -qq && apt-get install -yq nodejs yarn vim default-mysql-client
RUN mkdir /app
WORKDIR /app
COPY
RubyとPHPの比較(クラス、インスタンス、継承、オーバーライド)
# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。これらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a
https://qiita.com/Hashimoto-Noriaki/items/96eadd7076675fe19dc9# クラス
⚫︎“`Ruby“`
“`rb
class Dog
def initialize(name,kind,weight)
@name = name
@kind = kind
@weight = weight
enddef feed(eat)
@weight += 1
puts “重さ:#{@weight}kg
【個人開発】温泉宿の情報交換ができる掲示板とSNSが組み合わさったサービス「みんなの温泉宿」を開発しました。
# はじめに
こんにちは。ひろかずと申します。独学でプログラミングを学んだ後、タイトルにあるようなサービス「[みんなの温泉宿](https://minnano-onsenyado.herokuapp.com)」を作ってみました。
作ろうと思った理由は主に以下の2点です。
##### ①自分自身が温泉宿に泊まってのんびりすることが好きで、情報交換ができる場を作りたかった。(掲示板)
##### ②温泉宿が好きな人同士で繋がれる場を作りたかった。(SNS)
これら①②を合体させて、掲示板+SNSの機能を持ったサービスとなりました。
![無題9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2493043/5aa13fc4-854a-f352-e75c-ee0b2dc4e1f3.png)# 工夫した点
##### ①会員登録無しでも使用可能
まずは誰でも気軽にお試し感覚で使ってもらいたいと思い、登録無しでも口コミ投稿・掲示板書き込み機能を使えるようにしました。その場合、その方の名前は「名無しさん」となり
いいねボタンのAjaxが機能しません。リロードをしなければ反応しません。
# エラー
いいねボタンを押しても反応しません。### destroy
エラーメッセージがなかったのでログを載せました。
“`
Started DELETE “/favorites/4950” for 14.12.68.160 at 2022-03-27 02:18:28 +0000
Cannot render console from 14.12.68.160! Allowed networks: 127.0.0.0/127.255.255.255, ::1
Processing by FavoritesController#destroy as JS
Parameters: {“authenticity_token”=>”*******==”, “id”=>”4950”}
User Load (0.2ms) SELECT “users”.* FROM “users” WHERE “users”.”id” = ? LIMIT ? [[“id”, 1], [“LIMIT”, 1]]
↳ app/helpers/sessions_helper.rb:17:in `c
【LeetCode】69. Sqrt(x)を解いてみた
## はじめに
コーディングテスト対策としてLeetCodeの69. Sqrt(x)を解いていく。## 問題文を和訳
– 負でない整数xが与えられた場合、xの平方根を計算して返します。
– 返されるタイプは整数であるため、10進数は切り捨てられ、
– 結果の整数部分のみが返されます。
– 注: pow(x、0.5)やx ** 0.5などの組み込みの指数関数や
演算子を使用することは許可されていません。
– Input: x = 8
– Output: 2
– Explanation: The square root of 8 is 2.82842…,
and since the decimal part is truncated, 2 is returned.## 回答
“`69_Sqrt(x).rb
def my_sqrt(x)
left = 0
right = x
while left <= right middle = (left + right) / 2 if middle * middle ==
【LeetCode】67. Add Binaryを解いてみた
## はじめに
コーディングテスト対策としてLeetCodeの67. Add Binaryを解いていく。## 問題文を和訳
– 2つの二進数文字列aとbが与えられた場合、
– それらの合計を二進数文字列として返します。
– Input: a = “1010”, b = “1011”
– Output: “10101”## 回答
“`67_AddBinary.rb
def add_binary(a, b)
return (a.to_i(2) + b.to_i(2)).to_s(2)
end
“`## 最後に
難易度はEasyでした。
Rubyスクリプトの字句解析
Rubyを触っていく中で、「Rubyはどんな過程を経てコードが理解されて処理されるんだろう」と思って書籍を読んでそのアウトプットをしていこうとおもいます。
## 処理の流れ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2485775/7e628acd-0c13-02c6-d318-5b5d0e01ec00.png)全体的な処理の流れはこのような感じです。まずは全体の流れを抑えることが大事になりそうです。
この記事では、字句解析と構文解析までを書こうとおもいます。## 字句解析
以下のコードを“`simple.rb“`ファイルに記述し、実行してみます。
“`
10.times do |n|
p n
end# =>0
1
2
3
4
5
6
7
8
9
“`
まず、この文字列に遭遇すると、Rubyは**字句解析**を行います。
>字句解析とは、自然言語の文やプログラミング言語のソースコードなどの文字列を解析して、後半の狭義の構文解析で最小単位(終端記号)となってい
【初心者用】RubyでJSONを扱ってみよう
# 1.やりたいこと
Slack上でのやり取りをJSON形式で出力してきて、その内容を分析したい。
具体的には、次の3つを行うプログラムを作成したい。– 発信が多かったチャンネルベスト3を特定したい。
– “`high_motivation_user_aggregator.rb“`
– スタンプを多く押したユーザーベスト3を特定したい。
– “`kind_user_aggregator.rb“`
– 一番スタンプを獲得したメッセージを特定したい。
– “`poupular_message_aggregator.rb“`また、Slackから出力したJSONデータの構成については、次の記事を参照すること。
[Slack からエクスポートしたデータの読み方](https://slack.com/intl/ja-jp/help/articles/220556107-Slack-%E3%81%8B%E3%82%89%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%
【個人開発】筋トレ × 音ゲー × EDMの新感覚トレーニングアプリ「Muscle Beat」をリリースしました?
[![Image from Gyazo](https://i.gyazo.com/e53f4d2fd2bde97ad508a7716e5ad6ed.png)](https://www.muscle-beat.com)
EDMの音ゲーに合わせて筋トレを行えるサービスをリリースいたしました!
**▼ サービスURL(スマホ専用)**
https://www.muscle-beat.com**▼GitHub**
https://github.com/jibiking/muscle_beat## はじめに
はじめまして!
[駆け出し筋肉エンジニアのJibiki](https://twitter.com/ji_bi__)と申します?– **時間がなくとも、筋トレを知らなくとも、楽しくトレーニングを行えるサービスを開発したい!**
– **普通の筋トレでは満足できない体の人でも楽しめるサービスを開発したい!**そのような想いから、Muscle Beatの開発に至りました?
## トレーニング手順
**1. All Beats画面からプレイしたい曲を選択**
★ モ
アプリケーションの雛形を作成する。
駆け出しエンジニアのTakaです。
本日はアプリケーションの雛型の作成の仕方を学んだのでシェアさせて頂きます。まず、大切になってくるのは、
1,今から自分の作成するアプリケーションの内容を考えることです。どんなアプリを作りたいのかしっかりと考えます。2,次にアプリケーションの名前を考えます。
3,その後に、アプリケーションの雛型を作ります。
その際に使うのがrails new コマンドです。rails newコマンドでアプリケーションに必要になってくる基本的なデータやファイルは一式揃います:relaxed:
“`
rails new 作成するアプリケーションの名前
“`4,次にデータベースを作成します。
※データベースとは決まった形で整理したデータの集まりのこと。
例えば、氏名、電話番号、社員番号などがバラバラに整理されていたら分かりにくいように、整理してまとめたもののことをデータベースという。
アプリケーションが生み出すデータを保存するところです。
“`
rails db:create
“`5,データベースを作成した後にサーバーを起動します。
“`
チェックボックスの作り方
チェックボックスの作り方を調べていると、いくつかの方法があることがわかった。
①“check_box“ モデルに関連するチェックボックス
※パラメーターとして値を保存したい場合
②“check_box_tag“ モデルに関連しないチェックボックス
③“collection_check_boxes“ 複数選択のチェックボックス今回実装したい内容は①に当てはまるので、それをまとめる。
### check_box
まずはマイグレーションファイルに以下を入力。
“`ruby:
class Createxxxxxx < ActiveRecord::Migration[6.0] def change create_table :xxxxxx do |t| t.boolean :カラム名 # 追記 t.timestamps end end end ``` 次にビューファイル。 ```html: <%= f.check_box 'カラム名', {:checked => true}, checked_value
shionさん主催のコワーキングスペース C作業場さんの勉強会がいい感じだったので、Rails Pluginを「リリースした話」
# この記事は
データベースを使って手っ取り早くツリーダイアグラムを描きたいんだよって人向けに作ったRails Pluginを紹介する記事です
![output.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/179979/0356e77c-db06-7f27-5adf-2a36347fcf2d.gif)
* gem
* [acts_as_tree_diagram | RubyGems.org | コミュニティのGemホスティングサービス](https://rubygems.org/gems/acts_as_tree_diagram)
* github
* [smapira/acts_as_tree_diagram](https://github.com/smapira/acts_as_tree_diagram)# やりたかったこと
mermaidもいいけど出来るだけ手作業はしたくなかったので
# 前提
* Rails
* ActAsTree# やり方
“`ruby
アプリケーションサーバーについて
# はじめに
アプリケーションサーバーについて調べたところ、「Unicorn」や「Puma」などのワードが出てきたので、どんなものかと気になったので調べて見ました。# アプリケーションサーバーとは
Ruby、Javaなどのプログラミング言語で構築されるアプリケーション(プログラム)を動作させるためのサーバサービスのことです。# Unicornとは
マルチプロセス型であります。
マルチプロセス型は、私なりの解釈で言うと「一人の作業者が、複数の顧客に向けた製品を並行で制作している」と言う感じだと思います。
![スクリーンショット 2022-03-26 12.39.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2594478/26307307-16eb-510e-ce29-ef67a65ac886.png)# Pumaとは
マルチスレッド型であります。
マルチスレッド型とは、私なりの解釈で言うと「一人の作業者が、一つの製品を制作する時に、同時並行で複数の作業を行う」と言う感じだと思います。
【Ruby】特異メソッドについて
## 特異メソッドについて
“`ruby
class C
class << C def hoge 'Hi' end end def hoge 'Goodbye' end end p C.new.hoge ``` ``` "Goodbye" ``` このように表示される。 ``` p C.new.hoge ``` 上記の記述では、インスタンスを作成してその中のメソッドを呼び出ししているため```"Goodbye"```と表示される。 ### 特異メソッドの宣言方法 特異メソッドの宣言方法には2つあるらしい。 ```ruby ## 1つめ class << C def hoge 'Hi' end end ## 2つめ def C.hoge 'Hi' end ``` このように2つの宣言方法があるらしい。 そしてこの特異メソッドを呼び出したい時は、```p C.hoge```というようにすればいい。 そうすると```Hi```と表示される。
【LeetCode】66. Plus Oneを解いてみた
## はじめに
コーディングテスト対策としてLeetCodeの66. Plus Oneを解いていく。## 問題文を和訳
– 負でない整数を表す空でない配列を指定すると、整数に 1 を加えます。
– 最も大きい位の数字がリストの先頭にあり、
– 配列の各要素に 1 つの数字が含まれるように数字が格納されます。
– 数値 0 を除いて、整数には先頭に0が含まれていないと見なすことができます。
– Input: digits = [1,2,3]
– Output: [1,2,4]
– Explanation: The array represents the integer 123.## 回答
“`66_PlusOne.rb
def plus_one(digits)
if digits.length == 0
digits.push(1)
elsif digits[-1] == 9
digits = plus_one(digits[0…digits.length – 1])
digits.push(0)
else
digits[-
【LeetCode】58. Length of Last Wordを解いてみた
## はじめに
コーディングテスト対策としてLeetCodeの58. Length of Last Wordを解いていく。## 問題文を和訳
– 文字列 s がスペースで区切られたいくつかの単語で構成されている場合、
– 文字列の最後の単語の長さを返します。
– 最後の単語が存在しない場合は、0 を返します。
– 単語は、スペース以外の文字のみで構成される最大の部分文字列です。
– Input: s = “Hello World”
– Output: 5## 回答
“`58_LengthofLastWord.rb
def length_of_last_word(s)
words = s.split(” “)
if words.length > 0
return words[-1].length
else
return 0
end
end
“`## 最後に
難易度はEasyでした。