- 1. 商品詳細
- 1.1. 【Ruby】combinationメソッドで重複のない組み合わせを作る
- 1.2. いいコード悪いコードまとめ6章 条件分岐
- 1.3. rails –taskしたら便利コマンドが大量にあったので忘備録
- 1.4. いいコード悪いコードまとめ9章設計の健全性を損なうさまざまな悪魔たち
- 1.5. 小数点以下の桁数を指定して四捨五入、切り上げ、切り捨て
- 1.6. erbで関数的にコードの再利用を行う
- 1.7. deviseの導入
- 1.8. RubyでAtCoder ABC231(A, B, C)を解いてみた
- 1.9. RubyでAtCoder ABC232(A, B, C)を解いてみた
- 1.10. 現場で使えるRuby on Rails5速習実践ガイドを読んで感じたこと
- 1.11. SQLite3::BusyException: database is locked を解決した方法
- 1.12. 【Ruby】 ハッシュ、シンボルの基礎
- 1.13. 【プログラミング勉強】完全無料のプログラミング習得ロードマップ【JavaScript】
- 1.14. 20%ルールは何分に該当するのか計算してみた
- 1.15. 【Ruby】バブルソートで配列の並べ替え
- 1.16. 【Ruby】繰り返し処理の制御構造 (で遊んでみた)
- 1.17. RubyでAtCoder ABC293(A, B, C)を解いてみた
- 1.18. Boolean型カラムをpresence: trueで設定したらfalseで保存出来なかった
- 1.19. Railsで’application.css’以外のCSSファイルを作成する手順
管理者 商品詳細ページ
### :star2: 管理者の商品詳細ページの作成
bootstrap導入済
namespases使用
_________
### :shamrock:コントローラー作成
アイテムを一つ取得して@item に格納
“`admin/items_controller.rb
ef show
@item = Item.find(params[:id])
end
“`### :shamrock: views 詳細ページ作成
“`erb:abmin/items/show.html.erb商品詳細
<%= image_tag url_for(@item.image), class: 'img-fluid', style: '【Ruby】combinationメソッドで重複のない組み合わせを作る
Rubyを使ったアルゴリズムについて学習しています。
今回はcombinationメソッドを使ったロジックの実装についてまとめました。# やりたいこと
数字(n個)の配列から、重複のない2個の組み合わせを選択するロジックを作成する。# 出力例
“`ruby
n = 6 とした場合の出力例[
[1, 2], [1, 3], [1, 4], [1, 5], [1, 6],
[2, 3], [2, 4], [2, 5], [2, 6],
[3, 4], [3, 5], [3, 6],
[4, 5], [4, 6],
[5, 6]
]
“`# combinationメソッドとは?
今回のロジックは、combinationメソッドを使うことで簡単に作れます。> サイズ n の組み合わせをすべて生成し、それを引数としてブロックを実行します。
h
いいコード悪いコードまとめ6章 条件分岐
# 条件文のネストを早期リターンで避ける
# 条件分岐を一箇所にまとめる
例えば、以下のようにクラスが複数あって、その中で条件に応じて表示を切り替えているコードがある場合、
これでは、抜け漏れがかなり起きやすいようになっています。なぜなら、条件分岐が重複して色々なところに書かれているからです。
“`
# 車のクラス
class Car
def initialize(type)
@type = type
enddef drive
case @type
when ‘sedan’
puts ‘乗用車を運転しています。’
when ‘truck’
puts ‘トラックを運転しています。’
when ‘suv’
puts ‘SUVを運転しています。’
else
puts ‘不明な車種です。’
end
end
end# 自転車のクラス
class Bicycle
def initialize(type)
@type = type
endd
rails –taskしたら便利コマンドが大量にあったので忘備録
“`
rails –tasks
“`
知っているものが大半だが、中には初めて見るものもあるので、ぜひ使ってみたい。
“`
rails about # List versions of all Rails frameworks and the environment
rails action_mailbox:ingress:exim # Relay an inbound email from Exim to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:postfix # Relay an inbound email from Postfix to Action Mailbox (URL and INGRESS_PASSWORD required)
rails action_mailbox:ingress:qmail # Relay an inbound email fromいいコード悪いコードまとめ9章設計の健全性を損なうさまざまな悪魔たち
# デッドコードは消すこと
到達不能コードともいう# YAGNI原則
You aren’t gonna need it.
必要になるまで先回りして実装する必要はない# マジックナンバーは避けて、定数化しよう
定数化が難しい場面もありますが、基本的にマジックナンバーは避けましょう。# グローバル変数は避けよう
グローバル変数は影響範囲が広すぎるので、必要に迫られるまで使用しないこと。# nullを返さない、渡さない
rubyだとnilですが、`return nil`のはnilチェックしなければならなくなるので、良い書き方ではない。
ついやってしまいがちですが、`EMPTY`という変数を作り、それを返すようにした方がいいです。# rescueの例外処理を忘れずに
rubyだと、begin, raise, rescue, ensureなどで例外処理していくわけだが、rescueを忘れるとただ例外を握りつぶすだけなので意味がない。# 問題検出時にけたたましく叫ばせる
railseなどでエラーが発生した場合は、通知や記録、リカバリ処理、ログへの記録などを実装しよう。#
小数点以下の桁数を指定して四捨五入、切り上げ、切り捨て
Decimal(Big Decimal)のデータを取り扱うとprecisionとscaleの設定値が必要となる。
しかし、こいつの問題はデフォルトで四捨五入をしてしまい、切り捨てに対応していないこと!
面倒だが、before_saveでfloorメソッドを使うしかなかった。そのときに関連のメソッドも気になったので調べて忘備録とする。
# 小数点以下N桁で四捨五入
## .round
roundメソッドは、引数に小数点以下の桁数を渡し、それより下の桁を四捨五入
“`
100.1111.round
# 出力結果 ==> 100100.1111.round(1)
# 出力結果 ==> 100.1100.3399.round(3)
# 出力結果 ==> 100.34
“`# 小数点以下N桁で切り上げ
## .ceil
“`
100.1111.ceil
# 出力結果 ==> 101100.3333.ceil(1)
# 出力結果 ==> 100.4100.3383.ceil(3)
# 出力結果 ==> 100.339100.3399.ceil(3)
# 出力結果erbで関数的にコードの再利用を行う
erbは他言語含め有名なテンプレートエンジンと比較すると特別な構文がとても少ない。
jinja系でいうところのmacro、pugとかでいうところのmixinの機能は最低限ほしいと感じることはないだろうか。
実は特別な構文など用意しなくてもerbではその辺の要件を簡単に満たせる
## macro, mixin的なものが不要な理由
jinja系だとHTML snippetの関数的な再利用方法としてmacroがある
こんな感じだ
“`jinja
{% macro foo(title, content) %}{{ title }}
{{ content }}{% endmacro %}
{{ foo(‘最寄駅について’, ‘大崎駅まで徒歩5分、大崎広小路駅まで徒歩6分です’) }}
“`これをerbで書くとこんな感じで書ける
“`erb
<% foo = lambda do |title, content| %><deviseの導入
https://github.com/heartcombo/devise
公式サイトより、Getting startedを参考にしながらdeviseを導入してみました。gemファイルに追記、bundle installを実行
“`
gem ‘devise’
“`
次に、以下のコードを実行
“`
rails generate devise:install
“`以下のファイルが作成される
“`
create config/initializers/devise.rb
create config/locales/devise.en.yml
“`ファイルを作成すると、ターミナルに以下のようなメッセージが表示される。
“`===============================================================================
Some setup you must do manually if you haven’t yet:
1. Ensure you have defined default ur
RubyでAtCoder ABC231(A, B, C)を解いてみた
# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC231のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。# A – Water Pressure
https://atcoder.jp/contests/abc231/tasks/abc231_a
“`ruby:a-231.rb
puts gets.to_i.fdiv(100)
“`# B – Election
https://atcoder.jp/contests/abc231/tasks/abc231_b
“`ruby:b-231.rb
n = gets.to_i
hash = Array.new(n){ gets.chomp }.tally
puts hash.key(hash.values.max)
“`
## 解説
`tally`メソッドで同じkey同士をくくった後のvalueが最大となるkeyが答えとなります。(`max_by`を使った書き方もできると思います)# C – Counting 2
https:/RubyでAtCoder ABC232(A, B, C)を解いてみた
# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC232のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。# A – QQ solver
https://atcoder.jp/contests/abc232/tasks/abc232_a
“`ruby:a-232.rb
puts gets.split(“x”).map(&:to_i).inject(:*)
“`# B – Caesar Cipher
https://atcoder.jp/contests/abc232/tasks/abc232_b
“`ruby:b-232.rb
s = gets.chomp.chars
t = gets.chomp.charsu = s.zip(t)
k = (t[0].ord – s[0].ord) % 26
puts u.all?{ (_1.ord + k) % 26 == _2.ord % 26 } ? “Yes” : “No”
“`
## 解説
`ord`メソッドと`all?`メ現場で使えるRuby on Rails5速習実践ガイドを読んで感じたこと
Railsの学習に際し、インプット教材にRuby on Rails5速習ガイドを選び今回読み終えたので全体の感想をまとめていきます。
# 初の実践には持ってこいの辞書
一通り読み終えて感じたのは、これは参考書であると同時に辞書引きができるようになっているものであると感じました。
どうしてそう思ったのかは以下の点を感じたからです。
– 開発の全体像を掴むことができる
– アプリケーションの作成から機能追加や削除を一通り学べる
– Rspecでのテスト技法が記載されている
– 概念への理解
– JSへの理解度の追求
– チーム開発の流れ
– バージョンアップへの対応の姿勢Railsアプリケーションを作るのは簡単ではありませんし、今後ECサイトをHCの課題で制作していくわけですが、根本的な部分の理解度がないとそもそもアプリケーションを作れないでしょう。
どういう手段を用いて開発へ取り組むべきなのか、
またどういったステップで次へ行っているのかを明確にする時、
本書は開発経験がヒヨコな私のような駆け出しには必要な書籍であると感じました。
わからない
SQLite3::BusyException: database is locked を解決した方法
# 背景
railsチュートリアルをやってる途中で `rails s` でサーバーを起動し、seedファイルの最初のユーザーでログインしようとしたら以下のエラーが発生しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3515182/e48be9fd-8722-9dfc-dd92-39b69d6e4a87.png)# 原因
`rails s` でサーバーを起動する前に `rails c –sandbox` でコンソールを開き、
“`
> user = User.first
“`
と、最初のユーザーに対する操作を行っていたためでした。
sandboxオプションをつけると、操作したレコードにロックがかかってしまうみたいです。
今回はsandboxオプションをつけて開いた、コンソールを閉じずに、サーバーを起動させたため、
最初のユーザーのレコードにロックがかかり、ログイン時にレコードの操作ができなかったのだと思われます。# 解決方法
`exit`または`quit`でrail【Ruby】 ハッシュ、シンボルの基礎
# 概要
– ハッシュ、シンボルについて復習をしたので、自分の中で整理しておくことにした
– 学習したことの備忘録# 主な内容
– ハッシュ
– シンボル
– keysメソッド、valuesメソッド
– ハッシュのキーワード引数# ハッシュ
##### {}は、Hashクラスのオブジェクト
“`ruby
a = {}
puts a.class => Hash
“`まずは基礎の基礎
##### ハッシュの要素を追加する場合
“`rb:要素の追加
# ハッシュ[キー] = バリューcolors = { “apple” => “red”, “orange” => “orange”, “melon” => “green” }
colors[“remon”] = “yellow”puts colors => {“apple”=>”red”, “orange”=>”orange”, “melon”=>”green”, “remon”=>”yellow”}
“`##### バリューを取り出したい場合
“`rb:バリューの取り出し
# ハッシュ[キー]color
【プログラミング勉強】完全無料のプログラミング習得ロードマップ【JavaScript】
私は大学3年生(2023年時点)で[Matcher株式会社](https://matcher.jp)のエンジニアインターンをさせて頂いております。
この記事では、**完全独学・費用を一切かけずにエンジニアになりたい**という方向けに書きました。「**プログラミングってよく聞くけど、何から始めればいいの?**」という気持ちを少しでも解決する手立てになれればと思っております。
# どのプログラミング言語を学ぶのが最適か
プログラミング言語を選定することが一番難しく感じる方も多いと思います。Python, JavaScript, Ruby, C++…挙げていけばマイナーな言語も含めてキリがないと思います。ではどの言語を勉強すればいいのか…完全に私の主観ですが、結論**どれでもいい**です。理由は、一つでも言語をマスターすることができれば、他の言語でもほとんど融通が効くことが多いからです。大事なことは一つの言語を完璧に身につけることが大切だと思います。
どれでもいいと申したのですが、記事を書く上で一つの言語に絞ってロードマップ的なことを書いていきたいので、今回は**JavaScrip
20%ルールは何分に該当するのか計算してみた
## 環境
Ubuntu 20.4
Ruby 2.6## はじめに
Googleに20%ルールというものがあります。業務時間の20%を自分の好きなことに充ててもいいというものです。Googleのような大手が、こうしたエッジの効いたルールを導入して成果を上げているとのことで、日本でもわりと話題になりました。そして、Web業界の中にも、同じようなルールを導入し出している会社がちらほらとあるようです。自分が所属する組織はSIerですが、社内にこのようなルールはありません。しかし、個人的に何%でも、わりと自由に設定できる、暗黙のカルチャーのようなもはあったりします。
自分の組織に20%ルールがあった場合、業務時間の何分を割り当てることになるのだろうか、気になったため、計算するプログラムを作ってみました。
## コード
“`rule.rb
def calc_time(rule)require ‘time’
str_tm = Time.parse(“09:00”) # 業務開始時間
end_tm = Time.parse(“17:30”) #【Ruby】バブルソートで配列の並べ替え
Rubyを使ったアルゴリズムについて学習しています。
今回は数字の配列を並べ替える方法についてやっていきます。# やりたいこと
sortメソッドを利用せず、数字の配列を昇順ソートして出力するアルゴリズムを作成する。“`ruby
array = [6, 7, 3, 2, 5, 4, 1]
“`
これを、こうしたい。
“`ruby
array = [1, 2, 3, 4, 5, 6, 7]
“`# バブルソートとは?
> 値を昇順・降順で並べ替えるアルゴリズムのひとつ
> pointデータを小さい順(大きい順)に並べ替えるよ
> point隣り合う要素の大小比較を繰り返すことで、全体を並べ替えるよ引用:バブルソートとは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
# まずは数字の並べ替えるプログラムを作る
“`ruby
# 配列を定義
array = [6, 7, 3, 2, 5, 4, 1]
if array[2] > ar【Ruby】繰り返し処理の制御構造 (で遊んでみた)
# はじめに
– 繰り返し処理の動作を変更するための制御構造について、遊びながら学んでみた
– 学習したことの備忘録# 主な内容
– break
– redo
– catchとthrow# break(ひたすらラーメンを完食していくコード)
`break`:繰り返し処理を脱出できる
“`rb
ramens = [“豚骨ラーメン”, “醤油ラーメン”, “塩ラーメン”]
tastes = [“スープを飲む”, “麺をすする”, “完食!”]
ramens.each do |ramen|
tastes.shuffle.each do |t|
puts “#{ramen}, #{t}”
break if t == “完食!”
end
end
“`
shuffleで、「スープを飲む」, 「麺をすする」, 「完食!」がランダムに入れ替わり、「完食!」でbreakする。それを、「豚骨ラーメン」,「醤油ラーメン」,「塩ラーメン」のそれぞれについて繰り返す。“`:実行結果例
とんこつラーメン, スープを飲む
とんこつラーメン, 麺をすする
とんこつラーメン,RubyでAtCoder ABC293(A, B, C)を解いてみた
# はじめに
Webエンジニアを目指して、RubyやRailsをいじってます。
今回は、RubyでAtCoder ABC293のA, B, Cを解きました。備忘録として解き方をまとめていきたいと思います。# A – Order Something Else
https://atcoder.jp/contests/abc310/tasks/abc310_a
“`ruby:a-293.rb
n, a, b = gets.split.map(&:to_i)
d = gets.split.map(&:to_i).sortdiscounted_price = d[0] + b
puts a <= discounted_price ? a : discounted_price ``` # B - Strictly Superior https://atcoder.jp/contests/abc310/tasks/abc310_b ```ruby:b-293.rb n, _ = gets.split.map(&:to_i) array = Array.new(n){ gets.splitBoolean型カラムをpresence: trueで設定したらfalseで保存出来なかった
# 前提条件
Userテーブルにnullを許容しないBoolean型のhoge_flagというカラムがあるとする。
“`ruby
create_table :users do |t|
t.boolean :hoge_flag, default: true, null: false
end
“`migration後にuser.rbにvalidatesを追加
“` ruby
validates :hoge_flag, presence: true
“`# データ保存時にエラーが出る・・・
上記を踏まえて、hoge_flagをfalseにしてみた!
“`
user = User.first
user.hoge_flag = false
user.save!
“`結果
“`
Translation missing: ja.activerecord.errors.messages.record_invalid (ActiveRecord::RecordInvalid)
“`あらら・・・
もう少し確認してみると
“`
user.valid?
=>Railsで’application.css’以外のCSSファイルを作成する手順
## はじめに
#### 実装したこと
レスポンシブ対応のために新しいCSSファイルを作成と適用する手順を記事にします。#### 動作環境
Ruby 3.1.2
Rails 6.1.7.3## 手順
1\. まず app/assets/stylesheetsディレクトリ内に、’responsive.css’という名前の新しいCSSファイルを作成します。(ファイル名はなんでも問題ないです)2\. responsive.cssファイルを開き、メディアクエリなどのレスポンシブデザインに必要なスタイルルールを記述します。例えば、以下のようなコードを追加します。
~~~ responsive.css
/* 例: スマートフォンサイズの場合に適用されるスタイル */
@media screen and (max-width: 520px) {
/* スタイルの定義 */
}/* 例: タブレットサイズの場合に適用されるスタイル */
@media screen and (min-width: 521px) and (max-width: 960px) {
/* スタイルの定関連する記事
OTHERカテゴリの最新記事
- 2024.09.19
JavaScript関連のことを調べてみた
- 2024.09.19
JAVA関連のことを調べてみた
- 2024.09.19
iOS関連のことを調べてみた
- 2024.09.19
Rails関連のことを調べてみた
- 2024.09.19
Lambda関連のことを調べてみた
- 2024.09.19
Python関連のことを調べてみた