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

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

【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
“`

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

以上です。

元記事を表示

テックキャンプ卒業、挫折ばかりだった自分が内定を獲得するまで

## はじめに

12月6日から2月21までテックキャンプを受講しました。
その後転職活動が始まり、無事3月15日に第一志望の受託開発・自社開発の企業様から内定をいただきました!

3年ほど派遣社員で転々としていたので、経歴的には不利だと思っていましたが
自分にとって納得のいく転職ができました。

不安で仕方なかったこの期間、不安だったからこそたくさん成長もできたと思います。
人生においてもなかなか経験できない、この期間の事を言語化してまとめたいと思います。

## 自分の経歴① 新卒で未経験エンジニア→挫折
 まずは自分の経歴からお話ししたいと思います。
2018年に八王子にある大学を卒業後、Sier企業に未経験エンジニアとして就職いたしました。
そこには「困っている人の課題を解決するためにIT技術を身につけたい」という思いがありました。
しかし結果は散々でした。
自分の理解力の低さから業務にどうしても付いていけない。
人間関係でもつまづいてしまい、コミュニケーションがうまくとれない。
客先での仕事だったため、なかなか相談ができない。

上司からは
「お前エンジニアに向いてない

元記事を表示

本日の基礎練習問題(22/3/25)

# 問題
以下の仕様を満たすアプリケーションを作成しましょう。また、注意書きを確認し、雛形を使用して実装してください。

**仕様**
・実行すると [1] : 点数を登録する, [2] : 点数を確認する, [3] : 終了する という選択肢を表示し、ユーザーに入力を求め、その入力に従い以下のような各処理を行う
・アプリケーションを終了するまで、処理を繰り返す

[1]の処理
・名前、年齢、国語・数学・英語の3教科の点数を入力させて、保存する

[2]の処理
・投稿された情報から番号と名前で一覧を表示し(例 1: yamada)、見たい個人の番号の入力を求める
・ 入力された個人の名前、年齢、国語・数学・英語の3教科の点数を表示する

[3]の処理
・アプリケーションを終了する

注意
・ 引数などは雛形で考慮していないため、必要に応じて引数を設定すること
“`雛形.
def registration_student
# 生徒の名前と年齢を登録できるようにする
student = {}
puts ‘生徒名を入力してください’
puts ‘生徒の年齢を入力してください

元記事を表示

RubyとPHPの比較(メソッド、引数、戻り値)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

これらの記事の続きです。

https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c
https://qiita.com/Hashimoto-Noriaki/items/449c00327e99574e430a

# メソッド
“`メソッド(関数)“`とは***何の処理をしているかをわかりやすくまとめた、かたまりのこと***です。
***Ruby***なら“`def“`、***PHP***なら“`function“`で定義します。
それぞれコードを見ていきます。

⚫︎“`Ruby“`
“`rb
def language(lang)
puts “#{lang}を勉強したい”
puts “#{lang}が話せます。”
end

#メソッドの呼び出し
language(“英語”)
language(“中国語”)

#英語を勉強したい
#英語が話せます。

元記事を表示

Rubyの正規表現の特殊変数

# 正規表現

Rubyでは正規表現を生成する方法が大体二つある、即ち正規表現リテラルとRegexpクラスのクラスメソッドとなります。

## 正規表現を生成する

“`
irb(main):001:0> a = /abcdefg/i
=> /abcdefg/i
irb(main):002:0> a.class
=> Regexp
irb(main):003:0> a = Regexp.new(“abcdefg”)
=> /abcdefg/
irb(main):004:0> a = Regexp.new(“abcdefg”, Regexp::IGNORECASE)
=> /abcdefg/i
“`

## Regexpのオプション

### Regexp::IGNORECASE

大文字小文字の違いを無視する
“`
irb(main):021:0> str = “This is Regexp”
=> “This is Regexp”
irb(main):022:0> t1 = Regexp.new(“this is regexp”, Regexp::IGNORECASE)
=>

元記事を表示

【個人開発】ガン飛ばしてちょいワル気分になれるサービスを開発しました(-“-#)

# はじめに
突然ですが大人になるにつれ怒りの感情を表に出さなくなったと思うことはありませんか?
今回はそんな世の大人達の為にガン飛ばして遊べる~~物騒なクソ~~コンテンツアプリを作成しました!
– 普段優しそうというイメージを持たれてるけど、たまには悪ぶりたい人
– 舐められたくない人
– いざという時のために相手を威嚇する練習をしたい人
– 今むしゃくしゃしている人
– 東京リベンジャーズが好き!

そんな方々に是非使ってみて欲しいサービスです◎

本記事では主な機能や技術面の紹介をさせて頂きます。
面白い!と思って頂けたらエンジニア冥利に尽きます…!

# サービス概要
[![Image from Gyazo](https://i.gyazo.com/900b2d9980232c075a0feb785600a0bf.png)](https://gyazo.com/900b2d9980232c075a0feb785600a0bf)
カメラに向かってガン飛ばすだけ!
「たまにはちょっと悪ぶりたい〜(-“-#)」
そんな少しやんちゃな想いを叶えるサービスです◎

https://

元記事を表示

【LeetCode】28. Implement strStr()を解いてみた

## はじめに
コーディングテスト対策としてLeetCodeの28. Implement strStr()を解いていく。

## 問題文を和訳
– haystack 内で needle が最初に出現するインデックスを返します。
– needle が haystack 一部でない場合は -1 を返します。
– 明確化:
– needle が空の文字列の場合、何を返す必要がありますか?
– needle が空の文字列の場合は 0 を返します。
– これは、C の strstr() および Java の indexOf() と一致しています。
– Input: haystack = “hello”, needle = “ll”
– Output: 2

## 回答
“`28_ImplementstrStr().rb
def str_str(haystack, needle)
if needle.length == 0
return 0
end
for i in 0…haystack.length – needle.length + 1 do
for

元記事を表示

【LeetCode】27. Remove Elementを解いてみた

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

## 問題文を和訳
– 配列 nums と値 val を指定すると、
– その値のすべてのインスタンスをその場で削除し、新しい長さを返します。
– 別の配列に余分なスペースを割り当てないでください。
– これは、O(1) の余分なメモリを使用して入力配列をその場で変更することによって行う必要があります。
– 要素の順序は変更できます。 新しい長さを超えて何を残すかは問題ではありません。
– 明確化:
– 戻り値が整数であるのに、答えが配列である理由が混乱していますか?
– 入力配列は参照によって渡されることに注意してください。
– つまり、入力配列への変更は呼び出し側にも認識されます。
– 内部的には、次のように考えることができます。
– nums は参照によって渡されます。 (つまり、コピーを作成せずに)
– int len = removeElement(nums, val);
– 関数内の nums への変更は、呼び出し元によって認識されます。
– 関数に

元記事を表示

RubyとPHPの比較(条件分岐、配列、ハッシュ)

# この記事の概要
Rubyで学習を始めてPHPに言語チェンジをする人が一定数いるみたいなので
そういった人達が参考にするための記事です。

こちらの記事の続きです。
https://qiita.com/Hashimoto-Noriaki/items/82beae9d3d6dac11e11c

# 比較
演算子などを使った比較の方法をみていきます。

### PHPで値を調べる

“`var_dump“`を使うと値の解析ができます。
“`php
var_dump(10);
var_dump(“10”);

//int(10)
//string(2) “10” と出力
“`
initは“`数値“`のことで、stringは“`文字列“`のことです。
stringの後の(2)は***文字数***のことです。

### 条件式
数値などを比較をする時には使う***条件式***をRubyとPHPで比較しながら見ていきます。
“`==“`は比較したものが等しいかをチェックします。

⚫︎“`Ruby“`

“`rb
puts 100 == 100
puts 100 ==

元記事を表示

Ruby の rexml で XML をパースするの2

# はじめに
移植やってます。
( from python 3.7 to ruby 2.7 )
# 概要
https://qiita.com/superrino130/items/91d3357ce808008eb96d

前回の記事で簡単そうだったのですが、実際は難しい操作でした。
各種のxmlに対応させるclassのため、`xpath`が不定でタグをスキャンして、その階層に合わせてパースする必要がありました。
# どうすRuby
“`xml:sample

元記事を表示

Ruby, Sinatra, HerokuでLINE Botを動かしてみた

RubyでLINE Botを動かすための方法です
## 環境, ライブラリ
– Windows10
– Visual Studio Code
– Ruby(3.1.1)
– Sinatra
– Heroku
– LINE Message API

## ファイル構成
– Gemfile
– Gemfile.lock
– Procfile
– app.rb
– config.ru

## 前提
Ruby、Gitのインストールが完了していることが前提です。

## [手順1] ボット用のチャネルを作成する
LINE Developersコンソールでボット用のチャネルを作成します。

#### 1. LINE Developersコンソールにログインする
[**LINE Developersサイト**](https://developers.line.biz/ja/) の右上の[**ログイン**]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2549439/4d813a47

元記事を表示

OTHERカテゴリの最新記事