Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

paizaラーニング解答: 累積和メニュー[Ruby]

# 累積和メニュー
https://paiza.jp/works/mondai/prefix_sum_problems/problem_index?language_uid=ruby
## STEP: 1 区間の和 1
“`ruby
a = [1, 5, 9, 7, 5, 3, 2, 5, 8, 4]
s = [0] * 11
(0..9).each do |i|
s[i + 1] = s[i] + a[i]
end
puts s[8] – s[2]
“`

## STEP: 2 区間の和 2
“`ruby
a = gets.split.map(&:to_i)
s = [0] * 11
(0..9).each do |i|
s[i + 1] = s[i] + a[i]
end
puts s[8] – s[2]
“`

## STEP: 3 区間の和 3
“`ruby
x, y = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
s = [0] * 11
(0..9).each do |i|
s[i +

元記事を表示

【Rails】小学校教員、初心者が現場で使える時間割アプリを作った話

# 制作背景

元記事を表示

LEIMIX Group Guangdong Co., LTD

Hunan JINLING Machine Tool Co., Ltd is a well-known supplier of “machine tools and control, feedback devices and mechanical and electronical engineering” in domestic manufacturing enterprises.It is a complete industrial manufacturer specializing in high-grade five-axis CNC lathes and key functional components in China, with an autonomous controllability rate of more than 85%. Its business covers the processing technology of turning, milling

Panyu District, Guangzhou, Guangdong, 511495 P.R. Chin

元記事を表示

Rails SQLでデータ整形(ROUMD, SUM)

## はじめに

Railsでデータを取得する際に、SQLでROUND内でSUMをして、平均や率として取得する際に一癖あったので備忘録として残しておきます。

## やりたいこと

レコードからデータを取得するときに率として取得したい。

`一部 / 全体 * 100`のようなイメージ

普通にレコードを取得してから計算することもできるが、アプリの仕様上やクエリ上、viewへの表示、CSVダウンロードなどにも使用するため取得時にデータを整形しておくことが良いと判断しております。

## コードサンプル

“`rb
select(
“ROUND((SUM(一部) / NULLIF(SUM(全体), 0.0)) * 100)
as 算出したい率,
…”
)
“`

ポイントとして`NULLIF()`を用いることで分母が`0.0`の場合でもエラーにならないようにしている。
筆者はこの`0.0`の箇所を`0`にしていたがために、期待する結果にならず多くの時間を費やした。

元記事を表示

インスタンスとは?

# はじめに
インスタンスがなんなのか説明できないので備忘録も兼ねてまとめます。
# インスタンスとは?
クラスを元に生成された実体のこと。
簡単に言えば、クラスは設計図であり、その設計図に基づいて作られる実際の物体がインスタンスです。
“`ruby
# クラスの定義
class Car
def initialize(make, model)
@make = make
@model = model
end

def display_info
puts “Make: #{@make}, Model: #{@model}”
end
end

# インスタンスの生成
car_instance = Car.new(“Toyota”, “Camry”)

# インスタンスの利用
car_instance.display_info # 出力: Make: Toyota, Model: Camry
“`
この例では、`Car`クラスが定義され、そのクラスから`Car.new(“Toyota”, “Camry”)`としてインスタンスが生成されています。`i

元記事を表示

Progate +α メモず【Ruby on Rails ①】

# はじめに
Progateに記事見つかっちゃったマンです。ありがとうございます!

[Progate +α メモず 【Ruby】](https://qiita.com/kohki_takatama/items/383ea364bbf41fdae95e)に続き、Rails編第一弾です(複数になる予定)。
範囲:ProgateのRube on Rails 5 l
# メモず
## `MVCモデル`のざっくりとした理解 ※学習前
`M: モデル`:俗に言うバックエンド。**舞台でいう裏方**。ユーザーからは見えない部分。
`V: ビュー`:俗に言うフロントエンド。**舞台でいう役者**。ユーザーに見せる部分。
`C: コントローラー`:モデルとビューの橋渡し・選定をする**舞台監督**。役者と裏方の調整、選定。
## 最初の呪文:`$ rails generate controller home top`とは?
`home`という名前の`controller`を`generate`する。
`top`という名前のアクション(メソッド)と、そのアクションのレスポンスとして表示される`top.h

元記事を表示

attr_accessor・ゲッター・セッターについて掘り下げて考えた

## 自己紹介
はじめまして、はると申します。完全異業種からのエンジニア転職を目指して学習をしています。

## 概要
Rubyの「`attr_accessor`」について、わかりやすく解説されている記事はすでにたくさんありますが、自分が理解できるまで掘り下げたことをまとめました。

## 注意
私は前職が完全異業種であり、英語も苦手で、スクールに入って初めてプログラミングに触れました。
そんな自分が理解しづらかった部分を、同じように初めてプログラミングの概念に触れた人に向けてまとめました。
自分の復習も兼ねて、超超噛み砕いて書いているため、周りくどい書き方になっている箇所もあるかと思います。

また、初学者のため、間違っている箇所もあるかもしれませんのでその際は教えて頂けると嬉しいです🙇

## ゲッターとセッターとは
こちらの記事が大変わかりやすかったので引用させていただきます🙇

https://qiita.com/k-penguin-sato/items/5b75be386be4c55e3abf

こちらの記事で全て理解できた方は今回の記事は対象外となります。
  
一応、公

元記事を表示

paizaラーニング解答: ハッシュメニュー[Ruby]

# ハッシュメニュー
https://paiza.jp/works/mondai/hash_problems/problem_index?language_uid=ruby

## STEP: 1 ハッシュ関数とは
“`ruby
n, mod = gets.split.map(&:to_i)
x = n.times.map { gets.to_i }
hash = x.to_h { |i| [i, i % mod] }
puts hash.values
“`
xの要素に対して順番に% modするだけでも解答できますが、それをハッシュテーブルに保存してみました。

## STEP: 2 やや複雑なハッシュ
“`ruby
n, a, b, mod = gets.split.map(&:to_i)
x = n.times.map { gets.to_i }
hash = x.to_h { |i| [i, (a * i + b) % mod] }
puts hash.values
“`

## STEP: 3 文字列のハッシュ
“`ruby
n = gets.to_i
x = n.t

元記事を表示

Railsのparamsの基本とログでの確認方法

#### Railsのparamsとは?
Ruby on Railsでの開発において、paramsは非常に重要な概念です。これは、ユーザーから送信されたデータ(フォームの入力、URLのクエリパラメータなど)をコントローラー内で取得するために使用されるメソッドです。

#### paramsの基本
paramsは、ユーザーからのリクエストに含まれるパラメータを含むハッシュのようなオブジェクトです。例えば、フォームから送信されたデータやURLのクエリパラメータを取得する際に使用します。

#### パラメータのログでの確認
Railsアプリケーションでは、開発中に送信されたパラメータをログで確認することができます。これはデバッグに非常に役立ちます。

1.サーバーログの確認:
Railsサーバーを起動し(rails s)、ユーザーからのリクエストを行います。
ターミナルに表示されるサーバーログを確認します。

2.パラメータの検索:
ログ内でParameters:という部分を探します。これに続く情報が、リクエストに含まれるパラメータです。

元記事を表示

エクセルファイルへの書き込み(Ruby)

rubyXLクラスを使ってエクセルファイルへの書き込み処理を実装しました

“`ruby
require ‘rubyXL’

array1 = [“白石麻衣”,”秋元真夏”,”遠藤さくら”,”山下美月”,”吉田綾乃クリスティー”]
m_array = []
m_array = array1.shuffle!
array2 = [“好きなコスメ”,”好きなお笑い芸人”,”好きな落語家”,”好きな駅”,”好きなファッションブランド”]
t_array = []
t_array = array2.shuffle!
out_file = “result1.xlsx”
# rubyXLクラスを読み込み、エクセルファイルへ出力するインスタンスを呼び出す
xlsx = RubyXL::Workbook.new
# ワークシートの定義
worksheet = xlsx[0]
n=array1.length
srow = 2
erow = srow + n
nowrow = srow

# 配列の要素を取り出し、エクセルファイルへ書き込む
for i in 0…n do
name =

元記事を表示

paizaラーニング解答: スタック・キューメニュー[Ruby]

# スタック・キューメニュー
https://paiza.jp/works/mondai/stack_queue/problem_index?language_uid=ruby
## STEP: 1 スタック・キュー実装編( 共通問題 ) step 1
“`ruby
n = gets.to_i
a = n.times.map { gets.to_i }
puts n
puts a
“`

## FINAL問題 スタック・キュー実装編( 共通問題 ) step 2
“`ruby
a = []
q = gets.to_i
query = q.times.map { gets.split.map(&:to_i) }
query.each do |que|
if que[0] == 1
a << que[1] end end puts a.length puts a ``` ## STEP: 1 スタック実装編 step 1 ```ruby a = [] q = gets.to_i query = q.times.map { gets.split.map

元記事を表示

【備忘録】Rails7 Stimulus セレクトボックス 親子 複数 連動

会社を選択すると、現場と品目の選択肢に、アソシエーションされているレコードをセットする
![add_flow7.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324819/67806d9c-4a2f-2c56-41b6-a9b76eb46162.gif)

“`config/routes.rb
resources :companies do
get ‘sites’, on: :member
get ‘waste_kinds’, on: :member
end
“`

“`app/controllers/companies_controller.rb
def sites
company = Company.find(params[:id])
sites = company.sites

respond_to do |format|
format.json { render json: sites }
end
end

d

元記事を表示

Progate +α メモず 【Ruby】

# はじめに
Progate楽しいマンです。
[最近学んだことリスト【主にCSS】](https://qiita.com/kohki_takatama/items/f3a516bece97ea407435)に続き、Rubyをやりました。
今回は1つの記事にまとまった!あと、少し見やすく書けました。(^^)
相変わらずなっがいので、気になった見出しがあれば見てみてください。
# メモず
### Rubyの`”`と`’`は区別なし
言語によっては区別あるので……Rubyは緩い方。
### コメントは`#`
シンプルですこ (^^)
### 余り計算は`%`でOK
“ `mod` “も好きだけどね
### Rubyの`puts`の挙動一覧
“`rb
puts “str ” int # 間違った構文
puts “str “, int # “str”
int
puts “str #{int}” # str int テンプレート記法
puts ‘str #{int}’ # str #{int} シングルクォーテーション(’)だとテンプレート記法と認識しない。
“`
テンプレート記法は

元記事を表示

おみくじを改良しました

おみくじを改良しました

“`Ruby
########################################
# おみくじプログラム #########
########################################

#乱数を発生させる
num = rand(100)
flag1 = 0
while flag1 == 0 do
# 0以下の整数と整数以外が入力されたら例外処理で再度整数入力を促す
begin

if num >= 0 then
flag1 = 1
else
raise StandardError.new()
end
rescue => e
e = “0以下の整数および整数以外は入力できません”
puts e
end
end
# 5で割る
ans = num % 5
# 5で割った余りでおみくじの結果を表示する。
if ans == 0
puts(“大吉”)
elsif ans == 1
puts(“中吉”)
elsif a

元記事を表示

Rubyでは予期しない型の問題を回避するために

Rubyでは予期しない型の問題を回避するために、いくつかのアプローチがあります。これらはプログラムの堅牢性を高めるために重要です。

1. **型チェックの実施**: 明示的に引数の型をチェックして、期待される型でない場合はエラーを投げるか、適切な処理を行う。

“`ruby
def multiply(a, b)
raise TypeError, “aは数値でなければなりません” unless a.is_a?(Numeric)
raise TypeError, “bは数値でなければなりません” unless b.is_a?(Numeric)

a * b
end
“`

2. **`respond_to?` メソッドの使用**: オブジェクトが特定のメソッドを持っているかどうかをチェックする。これは柔軟性を保ちつつ、メソッドの存在を確認するのに役立つ。

“`ruby
def add(a, b)
unless a.respond_to?(:+) && b.respond_to?(:+)

元記事を表示

Rubyにおける予期しない型の問題(Javaと比較)

予期しない型の問題は、特に動的型付け言語でよく見られます。Rubyの例を使って、このような問題を示します。

### Rubyにおける予期しない型の問題

Rubyでは、変数の型が実行時まで決定されないため、予期しない型の値が渡されると、エラーが発生するか、または意図しない振る舞いが起こり得ます。

“`ruby
# Ruby の例
def multiply(a, b)
a * b
end

puts multiply(5, 3) # 期待通りの乗算: 出力は 15
puts multiply(“5”, 3) # 文字列の繰り返し: 出力は “555”
“`

上記の例では、`multiply` メソッドは2つの引数を乗算します。最初の呼び出しでは、両方の引数が整数なので、期待通りの乗算結果が得られます。しかし、二番目の呼び出しでは、一方の引数が文字列であるため、Rubyは文字列を繰り返す動作をします。この挙動は意図していない可能性があり、バグの原因になりえます。

### 静的型付け言語での対応

対照的に、静的型付け言語ではこのような問題が発生しにくいです。Java

元記事を表示

動的型付け(Ruby)と静的型付け(Java)の違い

RubyとJavaの違いを説明する際、動的型付け(Ruby)と静的型付け(Java)の違いが重要なポイントです。これらの違いを理解するために、両方の言語で同じ機能を実現する簡単な例を用いて説明します。

### 動的型付け: Ruby

Rubyは動的型付け言語です。これは、変数の型が実行時に決定されることを意味します。型の宣言は必要ありませんし、同一の変数に異なる型の値を代入することも可能です。

“`ruby
# Ruby の例
def add(a, b)
a + b
end

puts add(5, 3) # 整数の加算: 出力は 8
puts add(“5”, “3”) # 文字列の連結: 出力は “53”
“`

この例では、`add` 関数はどのような型の引数でも受け入れ、それらを足し合わせます。整数が渡されれば足し算をし、文字列が渡されれば連結します。これはRubyが実行時に型を決定するため可能です。

### 静的型付け: Java

Javaは静的型付け言語です。つまり、変数の型はコンパイル時に決定され、一度決定した型の変数に異なる型の値を代入すること

元記事を表示

paizaラーニング解答: 標準入力サンプル問題セット[Ruby]

# 標準入力サンプル問題セット
https://paiza.jp/works/mondai/stdin/problem_index?language_uid=ruby

## 1つのデータの入力
“`ruby
s = gets.chomp
puts s
“`
sはstring(文字列)の略で、とりあえず文字列を受け取るときによく使います。
## 1行のデータの入力
“`ruby
s = gets.chomp
puts s
“`

## 3行のデータの入力
“`ruby
3.times do
s = gets.chomp
puts s
end
“`

## N行のデータの入力
“`ruby
n = gets.to_i
n.times do
s = gets.chomp
puts s
end
“`
nはnumber(番号)の略で、とりあえず数字を受け取るときによく使います。

## 3つのデータの入力
“`ruby
a = gets.chomp.split
puts a
“`
aはarray(配列)の略で、とりあえず配列を受け取ると

元記事を表示

paizaラーニング解答: ソートメニュー応用編[Ruby]

# ソートメニュー応用編
https://paiza.jp/works/mondai/sort_advanced/problem_index?language_uid=ruby
## STEP: 1 ソートの基本
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
puts a == a.sort ? “Yes” : “No”
“`

## STEP: 2 最大最小
“`ruby
n = gets.to_i
a = gets.split.map(&:to_i)
a.sort!
puts “#{a[-1]} #{a[0]}”
“`
maxとminメソッドでも解答できますが、せっかくなのでソートを使って答えてます。
## STEP: 3 Top – k (easy)
“`ruby
n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
a.sort!
puts a[-k]
“`

## STEP: 4 重複削除
“`ruby
n = gets.to_i
a = gets.sp

元記事を表示

paizaラーニング解答: 効率的なソートアルゴリズムメニュー[Ruby]

# 効率的なソートアルゴリズムメニュー
https://paiza.jp/works/mondai/sort_efficient/problem_index?language_uid=ruby

問題に挑戦する前に今回登場するソートアルゴリズムについて解説されている下記の講座に取り組むのがおすすめです。

https://paiza.jp/works/algorithm-java/new-primer/algorithm-java-new-primer-5
## FINAL問題 シェルソート
“`ruby
def insertion_sort(a, n, h)
num_of_move = 0
for i in h..n – 1
x = a[i]
j = i – h
while j >= 0 && a[j] > x
a[j + h] = a[j]
j -= h
num_of_move += 1
end
a[j + h]

元記事を表示

OTHERカテゴリの最新記事