Ruby関連のことを調べてみた2021年11月12日

Ruby関連のことを調べてみた2021年11月12日

文字列と数値②

#①.数値で計算

前回数値は文字列とは異なることを学びました!

数値は計算できることが特徴です!

ここからは、メソッドと同じくプログラムでよく使われる演算子について学びます!

#演算子

プログラミングにおける値の計算や比較などに使用する記号のことです!

計算における代表的な演算子は+や-、比較における代表的な演算子は>や<があります! この簡単な記号である演算子を用いることで、計算や比較処理を瞬時に行ってくれます! #代数演算子 演算子の中でも計算を行うものは、代数演算子と呼ばれます! Rubyで一般的な計算をする場合、以下の様な演算子が使えます! ```php 代数演算子 説明 + 足し算 - 引き算 * かけ算 / 割り算 % 剰余(割ったあまり) ``` 使い方は、普通の算数の計算と同じです! ただし、剰余の計算は馴染みがないので注意が必要です! 例えば、「17を5で割ったときの余り」を求めることが

元記事を表示

スマホのパターンロックの総数の計算

スマホのパターンロックは何通り作れるのか気になったので、 Ruby でサクッと計算してみました。

* **使用する点の数ごと**に何通りか
* 点の配置を通常の 3×3 でなく **3×5 や 4×4 に拡張**したらどうなるか

![pattern-lock-2138.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/857667/b26050d0-6935-e39d-3f20-d2197d1d42e3.png)

## パターンのルール
[Androidのヘルプ](https://support.google.com/android/answer/9079129?hl=ja)には「指で簡単なパターンを描きます」としか説明が無かったので、ルールを纏めておきます。

* パターンロックとは、画面上の点を一筆書きでいくつか結ぶことで暗証番号(PIN)の代わりとする方式
* 結んだ点の「順序」によってパターンを区別する
* 同じ点を2回使うことはできない
* 点は9個あり、縦横 3×3 に等間隔で並んでいる

元記事を表示

【RSpec】Railsチュートリアル第6版 第13章

#はじめに
Railsチュートリアル第6版のテストをRSpecで書き直していく。

###目次
– [第3章](https://qiita.com/supyolo888/items/35081ead2cfafb40a995)
– [第4章](https://qiita.com/supyolo888/items/939b670b62eb18467f6d)
– [第5章](https://qiita.com/supyolo888/items/42234ac2ed3919b14586)
– [第6章](https://qiita.com/supyolo888/items/bd10e64c77fe391cf203)
– [第7章](https://qiita.com/supyolo888/items/d2824ced26402b5f58d1)
– [第8章](https://qiita.com/supyolo888/items/508caaa40edf307093ed)
– [第9章](https://qiita.com/supyolo888/items/62e471b07a0c9a81575

元記事を表示

【Ruby on Rails】楽天APIで商品検索アプリを作る

##プロジェクトを開始

“`
rails new raktuensearch
“`

##データベースと接続

“`
cd rakutensearch
rails db:create
“`

サーバーを起動して動作確認

“`
rails s
“`
“Yay! You’re on Rails!” の表示を確認できたらOK

##共通レイアウト

###共通のView

“`ruby:app/views/layouts/application.html.erb



WishlistTest

<%= csrf_meta_tags %>
<%= csp_meta_tag %>

Rubyで小数点以下の扱い方。

# はじめに
Rubyで小数点以下の記述を扱うときにこの記事を見てください。

# 小数点以下の入力を受け取る。
こちらのメソッドは Integer クラスではなく、 Float クラスになります。

“`
入力
1.5
“`

“`Ruby
input = gets.to_f #1.5
“`

# 切り捨て
小数点の切り捨てを行う場合は、Float クラスの floor メソッドを使用します。

“`Ruby
1.4.floor # 1
1.5.floor # 1
-1.4.floor # -2
-1.5.floor # -2
“`

### 小数点以下 N 桁の切り捨て
Float クラスの floor メソッドでは、小数点以下の桁数は指定できません。そのため、数値を一度 BigDecimal に変換したのち、floor メソッドを指定します。
floor メソッドの引数には小数点以下の桁数を指定します。

BigDecimal のオブジェクトを生成するときは、引数にStringクラスを指定しなければなりません。
to_s メソッドで Float を String に変

元記事を表示

Railsで謎のDISTINCTクエリが発行される件

Railsのクエリログに発行した覚えの無いDISTINCTクエリがあったので、原因を調べてみた。

![distinct-query-log.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305052/3e889906-c455-ae43-f397-55e9baf67724.png)

# 環境

| ソフトウェア | バージョン |
|:-|:-|
| Ruby | 2.7.4 |
| Ruby on Rails | 6.0.4.1 |
| MySQL | 5.7.35 |

# 再現例

ブログの記事を表すarticlesテーブルと、記事に対するコメントを表すcommentsテーブルを例として使う:

![articles_comments_er.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/305052/84c5a9de-cab2-577c-534f-4f1d49a7f60c.png)

1つの記事に対してコメント

元記事を表示

Elastic BeanstalkでAmazon Linux 2に移行する際に気をつけること

# はじめに

Amazon Linux AMIのプラットフォームが非推奨となったため、Amazon Linux 2への乗り換えを実施したのですが、いろいろとハマった箇所があったので解決法とともに紹介したいと思います。

プラットフォームの変更によりファイルの配置などが大幅に変更されているので、新しい環境を立ち上げてデプロイするだけではまともに起動することも出来ません。
`.ebextensions`を使用したカスタマイズを行っている場合は特に注意が必要です。

# 環境

弊社ではRuby on Railsを使用しているので、Ruby2.7のAmazon Linux 2プラットフォームを選択しました。

– Ruby 2.7 AL2バージョン 3.3.4

※移行時点(現在は3.3.6)

# 乗り換え時の注意点

## Procfile

アプリケーションの実行はProcfileを使用するようになりました。
アプリケーションソースのルートディレクトリにあるProcfileが参照されます。
開発時にforemanを使用している方は開発用のProcfileをデプロイ時に含めないように注

元記事を表示

佐々木さんが勤怠管理をお手伝いするってよ

勤怠管理システムを作りました。
名は**SASAKIsan**。敵の名は**miyamoto**。
昔いたベンチャー企業でみやもとさんという勤怠管理botを使っていました。Slackから出勤と退勤の時間を打刻できるので非常にありがたく利用しておりました。

https://github.com/masuidrive/miyamoto

そんなみやもとさんですが、SlackとGAS連携が前提なのと時たまバグが発生するのが曲者でした。何奴。
8月にバグが出る件は直っているようですね。

そこで、導入の敷居がもっと下がればと思い開発したのがSASAKIsanです。

https://github.com/uichi/SASAKIsan

サンプルをHerokuサーバーで立ち上げているので、遊んでいただいて構いません。

[SASAKIsan on Heroku](https://sasakisan.herokuapp.com/)
*※アカウント登録はできないのでご注意を*

**Adminユーザー**
email : kojiro_sasaki@ykonishi.tokyo
pass :

元記事を表示

【Rails】Formオプションdisabledとreadonlyの違い

##環境
Ruby 3.0.2
Rails 6.1.4.1

##disabledとreadonlyの違い

“`disabled: true“`でフォームを送信すると**paramsに値は入らない**
“`readonly: true“`でフォームを送信すると**paramsに値が入る**

“`html.slim
= f.label :name, ‘名前’
= f.text_field :name, disabled: true
“`

https://bonoponz.hatenablog.com/entry/2020/11/12/%E3%80%90HTML%E3%80%91%3Cinput%3E%E3%82%BF%E3%82%B0%E3%81%AEreadonly%E5%B1%9E%E6%80%A7%E3%81%A8disabled%E5%B1%9E%E6%80%A7%E3%81%AE%E9%81%95%E3%81%84

元記事を表示

文字列と数値①

#①.ターミナルを用いたプログラムの記述と実行

#irb

irbコマンドは、ターミナルから直接Rubyのプログラムを動かすことができる機能を起動します!

ちなみに、irbは「Interactive Ruby」の略です!

簡易的にRubyを実行する手順で学びます!

irbコマンドという機能を使って、ファイル無しでプログラムを実行します!

“`php:【例】ターミナル
# irbを起動
% irb
“`

irbではエンターキーを打つたびに、そこまでの記述を実行して結果を表示する!ということが分かります!

![aad21d0259fdbbe89d213db8262934c5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2015058/431a00ba-7dab-f5be-38de-9e4a410f64b3.png)

irbを終了するときは、exitと記述して実行します!

“`php:【例】irbの終了
# irbを終了
irb(main):001:0> exit

# 問題なく終了

元記事を表示

AtCoder ABC224B を Ruby らしく

問題は以下を参照して下さい。

https://atcoder.jp/contests/abc224/tasks/abc224_b

たんに四重ループ総当りで解ける簡単な問題ですが、Rubyらしくというのにこだわってみました。コードは以下です。

“`ruby:atcoder224b.rb
h, w = gets.split.map(&:to_i)
a = h.times.map { gets.split.map(&:to_i) }

def selected_loop(x)
x.pred.times do |i1|
(i1.next…x).each do |i2|
yield(i1, i2)
end
end
end

e = Enumerator.new do |y|
selected_loop(h) do |i1, i2|
selected_loop(w) do |j1, j2|
y << (a[i1][j1] + a[i2][j2] <= a[i2][j1] + a[i1][j2]) end end e

元記事を表示

いまどきの Ruby なフィボナッチ数列

`Enumerator.produce`を使います。

“`ruby:fib.rb
fib = Enumerator.produce([1, 1]) { |a, b| [b, a + b] }.lazy.map(&:first)

#最初の10個
fib.first(10)
#=>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

#数列の100以上3000未満の部分
fib.drop_while { _1 < 100 }.take_while { _1 < 3000 }.force #=>[144, 233, 377, 610, 987, 1597, 2584]

#1000未満で素数であるもの
require “prime”
fib.select(&:prime?).take_while { _1 < 1000 }.force #=>[2, 3, 5, 13, 89, 233]
“`

元記事を表示

これまで無かった「映画の予告がメインのサービス」を未経験エンジニアが作ってみた【個人開発】

![ogp_default.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/641012/cf70d8dd-88fe-46fd-592d-131ccc517a18.png)

# はじめに

はじめまして! @taiju365と申します。
私は映画が大好きで、1ヶ月で176作品観たこともあります。

そんな私は、見たい映画を探すときに必ず予告動画を見るのですが、**「検索するのが面倒」**といつも感じていました。

YouTubeで映画会社のチャンネルを登録しても、投稿されるのは新しい作品ばかりで家では観られない。
もっとカンタンに探せないかとTikTokを使っても、予告動画は全然ない。

そこで、

自分がまだ観ていない
評価が高い作品の
予告動画がたくさん並んでいる

そんなサービスがあ

元記事を表示

GCP 自然言語処理API(natural language processing)をつかって感情分析してみた(Docker Rails heroku GCP)

#前書き
RailsアプリでGCPのAPIを叩きたかったけれど、全然情報が出てこなかったのでまとめておく

#実現したこと
###Docker + Rails + GCP + heroku
自作したWEBアプリの口コミ(コメント)を投稿したときに
![スクリーンショット 2021-11-09 15.14.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427079/46d2f091-44a7-bd16-38f0-578b05009ed7.png)

bodyの内容に対してGCPで用意されている自然言語処理の感情分析のAPIを叩き
`score`と`magnitude`を取得しDBに保存
![スクリーンショット 2021-11-09 15.16.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427079/05234abe-1b94-f99e-6fd4-84bfca409284.png)

#開発環境
“`

元記事を表示

ハイアンドロー・カードゲームの解き方

# はじめに
ハイアンドロー・カードゲーム問題でつまづいたところがあったので、備忘録にと書かせていただきました。

# ハイアンドロー・カードゲームとは 
### ※問題をしている方は読み飛ばしても構いません。
ハイアンドロー・カードゲームは、複数枚の子カードそれぞれが、1枚の親カードとの強弱関係で勝負するゲームです。

どのカードにも2つの番号が書かれています。
1つ目の番号は1から10の整数、2つ目の番号は1から4の整数で表されます。
また、2つの番号の各組み合わせは1枚だけカードの束に含まれています。(同じカードが2枚以上存在しません)

2枚のカードの強弱関係は、次のルールによって決まります。
・1つ目の番号が大きいカードのほうが強い
・1つ目の番号が同じ場合、2つ目の番号が小さいカードのほうが強い

親カードと子カードの情報が与えられるので、それらの強弱関係を調べるプログラムを作成してください。

##入力される値
入力は以下のフォーマットで与えられます。

“`
a b
n
A_1 B_1

A_n B_n
“`

1行目では親カードの情報が与えられます。親カードの1

元記事を表示

【RSpecエラー】’0′ is not a valid role

##環境
Ruby 3.0.2
Rails 6.1.4.1

##状況

“`
enum genre: { mistery: 0, romance: 1 }
“`

“`factory.rb
FactoryBot.define do
factory :post do
user

title { ‘first’ }
genre { 0 }
end
end
“`

“`rspec.rb
context ‘記事を追加する際、正しい値の場合’ do
let!(:post) { create(:post) }
let!(:post_params) { attributes_for(:post, title: ‘other’) }
it ‘記事を追加できること’ do
expect {
post “/manage/posts/#{post.id}”, params: { post: post_params }
}.to change(Post, :count)
expect(response).to

元記事を表示

Dockerfileのstage nameが読み込めない!

“`ruby:ターミナル
docker build .
“`
実行時に

“`ruby:ターミナル
failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to parse stage name “ruby:”: invalid reference format
“`
というエラーが発生しました。

そこでDockerfileを確認してみると、

“` ruby:Dockerfile
FROM ruby:$RUBY_VERSION
“`
というふうにrubyのversionが書かれていなかったため、

“` ruby:Dockerfile
FROM ruby:3.02
“`
と記述するとエラーが解消しました。

元記事を表示

【Rails】nil、空文字、0を1つのコードで判定したい

##これまで
numberが“`nil“`か“`”(空)“`か“`0“`を判定したいとき

“`
number.blank? || number.zero?
“`

##これから

“`nil“` “`”(空)“` “`0“`を1つのコードで判定できる。
“`nil“` “`”(空)“`はto_iすると0になる。

“`
number.to_i.zero?
“`

“`
[1] pry(main)> number = ‘ ‘
=> ” ”
[2] pry(main)> number.to_i.zero?
=> true
[3] pry(main)> number = ”
=> “”
[4] pry(main)> number.to_i.zero?
=> true
[5] pry(main)> number = nil
=> nil
[6] pry(main)> number.to_i.zero?
=> true
“`

元記事を表示

未経験からエンジニア転職

こんにちは。
転職活動がひと段落ついたので、私と同じく転職活動を行っている方の支えとなればいいなと思い書かせていただきます。

# 自己紹介
__年齢__: `拳で戦える年齢`
__学歴__: `高卒`
__前職__: `車造ってました`
__社会人歴__: `高校卒業してから丸々3年働いてました`
__使用言語__: `Ruby & Rails`
__きっかけ__: `在職中に興味本位で触ってみたRubyが面白かったから本気で目指してみようと思いました`
__ポートフォリオ__: `恥ずかしいので載せませんが、簡単な画像投稿アプリを作成`

# 使用媒体
転職するにあたって、いろんな転職サイトに登録して応募しまくってました。

  • doda
  • indeed
  • Qiita jobs
  • マイナビ
  • リクナビ
  • レバテックキャリア
  • Wantedlly

これらを用いて企業を探していました。

# 企業選び
選んでいた特徴としては

  • Ruby
元記事を表示

Ruby:小数点を扱うとき

アルゴリズムが動かなくて頭を抱えていたのですが、
“ceil”と”floor”を使い間違えていただけでした。
使うタイミングも多々あると思うので整理してみました。

#少数点切り捨て
“`

puts 1.1.floor
puts 1.9.floor
puts -1.1.floor
puts -1.9.floor
“`
[![Image from Gyazo](https://i.gyazo.com/002a1f795215fd2be4b99f1f1fa2d399.gif)](https://gyazo.com/002a1f795215fd2be4b99f1f1fa2d399)

#小数点切り上げ
“`

puts 1.1.ceil
puts 1.9.ceil
puts -1.1.ceil
puts -1.9.ceil
“`
[![Image from Gyazo](https://i.gyazo.com/c4822ea5ebb270b310b2cb793ea5c284.gif)](https://gyazo.com/c4822ea5ebb270b310b2c

元記事を表示

OTHERカテゴリの最新記事