Ruby関連のことを調べてみた2022年03月27日

Ruby関連のことを調べてみた2022年03月27日

いいねボタンの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を「リリースした話」

# この記事は

データベースを使って手っ取り早くツリーダイアグラムを描きたいんだよって人向け

![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
# Gemfile
gem “acts_as_tree

元記事を表示

アプリケーションサーバーについて

# はじめに
アプリケーションサーバーについて調べたところ、「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でした。

元記事を表示

google-cloud-translate gemの翻訳結果でアポストロフィが実体参照(')で返ってきてしまう問題

# 遭遇したver

google-cloud-translate (3.2.3)
google-cloud-translate-v2 (0.3.1)
google-cloud-translate-v3 (0.4.2)

# 現象

“`ruby
text = “お腹空いた”

response = Google::Cloud::Translate.translation_service.translate_text(
contents: [text],
target_language_code: “en”,
parent: YOUR_GOOGLE_CLOUD_PROJECT_ID
)

translate_result = response.translations.first
puts translate_result.translated_text
#=> “I'm hungry”
“`

# 解決法1: 返ってきたものをunescapeする

“`ruby
text = “お腹空いた”

respo

元記事を表示

Railsで作成したアプリをGitHubで管理する方法

# 結論    

アプリを保管するための倉庫を`自分のパソコン`(local repository)と`GitHub`(remote repository)上に作成して、`送り込む`(push)。

### ちなみに

remote: 遠隔
local: 地元
repository: 倉庫、保管庫

## 1.リモートリポジトリを作成

“`
GitHubで新規リポジトリを作成する。
“`

## 2.ローカルリポジトリを作成し、送り込むための準備

“`ターミナル
$ git init        #remote ripositoryが作成されるだけ

$ git add .   

# 編集中のコードをGitで管理対象にするという意味のコマンド   
# ‘index’にステージングともいう

$ git commmit -m ”どんな機能を実装したのか等のコメントを残す”

#local repositoryにプログラムを保存するコマンド
#これでremote repositoryに送り込む準備は整った
“`
### ちなみに
initialize

元記事を表示

【LeetCode】53. Maximum Subarrayを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの53. Maximum Subarrayを解いていく。

## 問題文を和訳
– 整数配列 nums を指定して、最大の合計を持つ連続したサブ配列
– (少なくとも 1 つの数字を含む) を見つけ、その合計を返します。
– Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
– Output: 6
– Explanation: [4,-1,2,1] has the largest sum = 6.

## 回答
“`53_MaximumSubarray.rb
def max_sub_array(nums)
max = nums[0]
for i in 1…nums.length do
nums[i] = [nums[i – 1] + nums[i], nums[i]].max
max = [max, nums[i]].max
end
return max
end
“`

## 最後に
難易度はEasyでした。

元記事を表示

【LeetCode】35. Search Insert Positionを解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの35. Search Insert Positionを解いていく。

## 問題文を和訳
– 異なる整数のソートされた配列とターゲット値を指定して、
– ターゲットが見つかった場合はインデックスを返します。
– 見つからなかった場合は、順番に挿入された場合のインデックスを返します。
– O(log n) 時間計算量のアルゴリズムを作成する必要があります。
– Input: nums = [1,3,5,6], target = 5
– Output: 2

## 回答
“`35_SearchInsertPosition.rb
def search_insert(nums, target)
left = 0
right = nums.length – 1
while left <= right middle = (left + right) / 2 if nums[middle] == target return middle elsif nums[middle] < targ

元記事を表示

Rails MVCモデルとは何か

# 結論

アプリケーション設定を整理するための概念。

この概念に基づいてアプリ制作を行うことで、**開発がしやすくなったり**、**保守性が高くなったり**します。

Q:開発がしやすい?

A:プログラムを書き込む場所がルール化されているので作業が早くなる。

例えば`夕飯を用意してください。`と指示されるよりも`カレーを作ってください、ただし人参は抜きなさい`とルールが決められている方が動きやすいのです。

Q:保守性が高い?

A:メンテナンスのしやすさのこと

つまり、こういう考え方で作ると安全で壊れにくいアプリケーション作りやすいよってことです。

# ちなみに

Model View Controller の頭文字です。
それぞれ役割が分かれていて、どこに何のプログラムを書くか決まっています。

M: 模型、型

V: 光景、眺め

C: 支配者、制御装置

## Modelの役割

データベース操作に関わる処理を作る

商品情報や、顧客情報のデータを扱うデータベース(db)のデータ操作をするためのプログラムを作る。

例:個人情報に関するデータや自己紹介メソ

元記事を表示

rails 詳しいフォロー機能の仕組み

## 初めに

今回この記事では、フォロー機能について詳しく解説していきたいと思います。
他の人の記事を読んでも仮想モデルってなんだよ、、、
さっぱりわからんわと感じた人にぜひ読んでいただきたいです。
フォローの記述の設定はこの記事で行いますが、フォロー一覧ページの作成やフォローボタンの作成は行わないので実装だけしたい人は下記で載せさせていただいておりますサイトを参照していただけますと幸いです。

## 前提の状態
– テーブル構成(schemaファイル)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1717562/f12a9ea4-8f74-24d1-8f3f-fbb885a65605.png)

– 備考
– userテーブルは、deviseを使用。
– 基本的にconsoleからデータを入れてみています。

– 参考になるフォローの記事
[こちら](https://note.com/memomemotarou/n/n673f99a79ffe)の記事では、解説

元記事を表示

Railsアプリでデータベースを作成する方法

# 結論
ターミナルで以下を入力する
“`
$ rails db:create
“`
これでデータベースを作成できます。

## 成功した場合
“`
Created database ‘db/development.~~~~’
Created database ‘db/test.~~~’
“`
`データベースが作成された`と表示されます。

## ちなみに 
rails db:create を2回以上打ち込むと
“`
Created database ‘db/development.~~~~’already exists
Created database ‘db/test.~~~’already exists
“`

`既にデータベースが存在している`とエラーが表示されます。

以上です。

元記事を表示

OTHERカテゴリの最新記事