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

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

Google Recruit

# Google Recruit

過去に出題された Google のリクルート問題を解いていく.

問題は次の通り.

## Google Recruit Problem

**e(自然対数の底)の値で連続する10桁の数のうち,最初の素数をrubyで求めよ.**ただし,e(自然対数の底)は以下の200桁までとする.

“`
2.71828182845904523536028747135266249775
7247093699959574966967627724076630353547
5945713821785251664274274663919320030599
2181741359662904357290033429526059563073
81323286279434907632338298807531952510190
“`

## 解法

それでは実際に解いていく.まずはじめに方針を決める必要があるので,タスクをまとめてみると

1. 数値ファイルを読み込む.
2. 10桁の数を取り出す.
3. 素数を判定する.

これらを順に実装していこう.

##

元記事を表示

[Ruby]色々なeachの種類

# はじめに

勉強していると色々な種類のeachが出てきたので
忘れないように記していきます。:sunny:

# eachメソッド

1 . 配列や範囲オブジェクトなどに用意されているメソッドです。
オブジェクトに含まれている要素を取り出します。

“`Ruby
fruits = [ “apple”, “orange”,”banana”]

fruits.each do |fruit|
p fruit
end

#=>”apple”
# “orange”
# “banana”
“`

2 . 配列のkeyとvalueを同時に取り出して使用したい場合は変数を2つ設定します。

“`Ruby
fruits = { apple: 100, orange: 200, banana: 300}

fruits.each do |key, value|
puts “#{key}の値段は#{value}円です。”
end

#=>”appleの値段は100円です。”
# “orangeの値段は200円です。”
# “bananaの値段は300円です。”
“`

元記事を表示

google recruit

\![Ubuntu-20.04.1]() \![ruby-2.7.1p83]()

# お題

テキストで読み込ませたe(自然対数の底)で連続する10桁の数のうち、最初の素数を求めよ

# 方針

やることはシンプルだ。文字列を読み込ませ、文字列を前から10桁ずつ切り出して素数かどうかを判定していく。

# まず動くやつを作る

## テキストを読み込む

まずは200桁までのeが記述されたテキスト(exp.txt)を作っておいて、それを読み込ませる。

“`ruby
def read_exp
exp1=gets.to_s.chomp
end
exp1 = read_exp()
“`

これでexp1に文字列が配列として読み込まれたようだ。試しに

“`ruby
puts exp1[0..9]
“`

として、配列の0番目から9列目を出力させ

元記事を表示

[個人開発]人生経験を共有するコミュニティサイト作ってみた!

新しいwebアプリ開発しました。「Elder」という人生経験を募集、公開、評価できるサイトです。今回は作ったwebアプリの紹介、サービスのネタの考え方、herokuの無料プランでスリープにさせない方法など書いていきます。今回は前回みたいなヘマしないように頑張ります(^^♪

[今回作ったWebアプリはこちら](https://e-elder.herokuapp.com/)

##紹介
![Elder-top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/480294/a27fc9ff-ead1-c620-8d8b-fe821cb0a3bd.png)

↑トップページ
人生経験を共有するコミュニティサイトです。
人生経験の募集、エッセイ、一言だけ投稿、などができます。
現在技術系の記事ばかりですが、分野は問いません。

募集中のところはスライドショーになっていて動きます。一か所でも動くところがあると凝ったサイト感が出ます。
イメージカラーは**紫**を選びました。
使ってみた感想として、いろんな色とは合わ

元記事を表示

Rails開発の変遷2020

# 概要
– webサイトの作成はRailsを使ってきた。
– 今年はHTML、CSSを学び、UIを作るようになった。
– vue/nuxtを学んでから、開発の仕方が変わった

# Webpack
– Rails本来のview作成はerb形式。slimで書くのが普通らしい
– Rails 5.2からWebpackをサポートし、vueを使ってHTMLを作成できるようになった。知らんけど。
– viewsにはjavascriptを参照する記述のみ。実際の中身はjavascriptディレクトリに作成する

## やり方
– Qiitaにわかりやすいチュートリアルがあるので、それを参考にするのが良い。
– vue側はvue CLIを使ったほうが開発が捗る。vue CLIである程度完成させてから、railsのjavascriptにコピペするような方法で作成した。

## 欠点
– 何も設定せずに開発すると、vueを更新した後にrails sを立ち上げなおす必要がある。
– vue-routerを使っていると、ホットリロードした時にルーティングエラーがでてしまう。

# サーバー側とフロント側を

元記事を表示

パラメーターが配列の場合、ストパラのparams.permitに含める方法

# パラメーターが配列の場合、ストパラのparams.permitに含める方法

# 状況
1つのusersテーブルに対して、同時に複数のレコードを作成するために下記のようなパラメーターを送りました。

“`.rb
 Parameters: {“users”=>[{“name”}=>{“satoshi”}, {“name”}=>{“yuta”}]}
“`

## 受けるストパラは下記

“`.rb
private

def users_params
params.require(:users).permit(
:id,
:name
)
end
“`

# 発生したエラー
requireした後にpermitメソッドを使うと、
「**permit?そんなメソッドは知らんよ**」と言われてしまいました。

“`.js
[1] pry(#)> params.require(:users).permit
NoMethodError: undefined method `permit’
for #

元記事を表示

はじめまして。

 思い切って、記事を初めて書いてみます。

 自己紹介にも記していますが、現在は公務員として勤務している者です。
 業務を通じてシステム開発等に興味を持ち、こちらの業界に転職したいと考え、勉強を始めました。
 
 自分なりに調べて検討し、現在はRubyの初歩的な参考書を購入。まずはこれを一周してみようかな。
 その他にも、基礎的な知識として基本情報技術者試験の参考書は既に何周か読んでいます。業務多忙で試験自体はなかなか受けられていないのですが、目標は4月に受験し合格することですかね。
 
 現在はそんなところです。
 転職を考え始めて何冊か書籍も目を通しましたが、自分が学んだことをQiitaやTwitter等でアウトプットしている、という記載を見かけ、「文字を書くのが好きな私にとってこれは1つの目標になる!」と思い、記事を書くことに決めました。
 繁忙期もそろそろ峠を越えてくるので、目標はまず月に2本ということにします!

 こうして書いてみると、やっぱり今は何も有益な情報を提供できないものですね……。
 きちんと勉強をしていって、皆様と同じように有益なことを記して、誰かのお役に立

元記事を表示

wp2txtのインストール中、nokogiriがないと怒られた時の対処法

“`
sudo gem install wp2txt
“`
を実行したところ、nokogiriというものをインストールするところでエラーが発生。

散々調べて色々試した結果、公式サイトっぽいところに掲載されていた以下コマンド実行したら、無事解決。長い戦いだった・・・。

“`
sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev
gem install nokogiri
“`

https://nokogiri.org/tutorials/installing_nokogiri.html

元記事を表示

scopeメソッドの主な機能

scopeメソッド、名前から機能を推察するのがむずかしいだけでなく出てくる場面もいろいろでややこしいので整理した。

#1 scope(name, body, &block)
特定の条件を持ったオブジェクトをデータベースへ問い合わせるためのクラスメソッドを生成する。モデルで呼び出す。コントローラのアクションの記述をシンプルにしたいときに使える。

“`ruby:shirt.rb
class Shirt < ActiveRecord::Base scope :red, -> { where(color: ‘red’) }
end
“`

↓同義

“`ruby:shirt.rb
class Shirt < ActiveRecord::Base def self.red where(color: 'red') end end ``` 第一引数にメソッド名を表すシンボル、第二引数に検索条件を示すブロック{ where.. }を引数として受けたラムダ式“->“が返すProcオブジェクトが渡されている。
->はlambdaに代替しても同じ。

#2 scope(*ar

元記事を表示

作ったポートフォリオを簡単に解説してみる。

#何を作ったのか?
### アプリ名 Dig Memo
思考を深掘る事を意識して作ったメモアプリです。
下記URLで公開中しております!
http://www.digmemo-app.xyz/
#なぜ作ろうと思ったのか?
#### 思考をサポートできるサービスを作りたいと思ったからです。

プログラミング学習をしている時に、ただ勉強するよりも思考して勉強する方が、知識が定着しやすいと感じました。しかし、ただのメモだと楽をしてインプットした情報をそのまま吐き出すこともできてしまうなと思いました。そこを制限して思考をサポートすることができるサービスがあったらいいのではないか?と思い、作ることにしました!

# どんな機能を実装したのか?
### 機能一覧
・メモ投稿・編集・削除機能
・カテゴリー機能
・全文検索機能
・お気に入り機能
・ページネーション機能
・メール認証機能
・パスワードリセット機能
・ゲストログイン機能

### ER図
![Copy of Untitled Diagram (1).png](https://qiita-image-store.s3.ap-northeas

元記事を表示

Ruby 3 の Ractor がわからない

Ruby 3.0 の予定どおりのリリース、おめでとうございます。3.0 では Ruby で並列並行プログラミングを可能にする Ractor という機能が入りました。Ractor については Qiita でも既に[よい記事](https://qiita.com/S_H_/items/f9d1917fda770bcdbe2a)があります。が、プログラミング完全に独学素人のわたしには少しレヴェルが高すぎるので、以下はもう少し初歩的な部分を、ただ自分用にメモしたものです。もし他人のお役に立てば幸いです。

なお、Ruby のバージョンは ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-linux] です。

#範囲外の参照

Ractor の外のローカル変数を参照することはできません。

“`ruby
i = 0
Ractor.new {
i
}.take
#=>:267:in `new’: can not isolate a Proc because it accesses outer var

元記事を表示

Ruby学習#35 Interactive Ruby (irb)

irb

def sayhi
puts “hello”
end
sayhi

num = 123
puts 123

元記事を表示

Ruby学習#34 Modules

useful_tools.rb

module Tools
def sayhi(name)
puts “hello #{name}”
end
def saybye(name)
puts “bye #{name}”
end
end

include Tools
Tools.saybye(“mike”)

require_relative “useful_tools.rb”
include Tools

Tools.sayhi(“mile”)

元記事を表示

Ruby学習#33 Inheritance

class Chef
def make_chicken
puts “The chef makes chicken”
end
def make_salad
puts “The chef makes salad”
end
def make_special_dish
puts “The chef makes bbq ribs”
end
end

class ItalianChef < Chef def make_special_dish puts "The chef makes eggplant parm" end def make_past puts "The chef makes pasta" end end chef = Chef.new() chef.make_chicken italian_chef = ItalianChef.new() italian_chef.make_pasta

元記事を表示

Ruby学習#32 Building a Quiz

class Question
attr_acessor :prompt, :answer
def initialize(prompt, answer)
@prompt = prompt
@answer = answer
end
end

p1 = “What Color are apples?\n(a)red\n(b)purple\(c)orange”
p2 = “What Color are bananas?\n(a)pink\n(b)red\(c)yellow”
p3 = “What Color are pears?\n(a)yellow\n(b)green\(c)orange”

questions = [
Question.new(p1, “a”),
Question.new(p2, “c”),
Question.new(p3, “b”)
]

def run_test(questions)
answer = “”
score = 0
for question in questions
puts question.promp

元記事を表示

Ruby学習#31 Object Methods

class student
attr_accessor :name, :major, :gpa
def initalize(name,major,gpa)
@name = name
@major = major
@gpa = gpa
end

def has_honors
if @gpa >= 3.5
return true
end
return false
end
end

student1 = Student.new(“Jim”,”Business”,2.6)
student2 = Student.new(“Pam”,”Art”,3.6)

puts student2.has_honors

元記事を表示

Ruby学習#30 Initialize Method

class Book
attr_accessor :title, :author, :pages
def initialize(title, author, pages)
@title = title
@author = author
@pages = pages
end
end

book1 = Book.new(“Harry Potter”,”JK Rowling”,400)
book2 = Book.new(“Lord of the rings”,”Tolkein”,500)

puts book1.author

元記事を表示

Ruby学習#29 Classes & Objects

class Book
attr_accessor :title, :author, :pages
end

book1 Book.new()
book1.title = “Harry Potter”
book1.author = “HK Rowling”
book1.pages = 400

puts book1.pages
>> 400

book2. = Book.new()
book2.title = “Lord of the rings”
book2.author = “Tolkein”
book2.pages = 500

puts book2.author
>> Tolkein

元記事を表示

Ruby学習#28 Handling Errors

lucky_nums = [4,8,15,16,23.42]

lucky_nums[“dog”]
> into Integer(Typeerror)

begin
num = 10 / 0
rescue
puts “Division by zero error ”
end
>>Division by zero error

begin
lucky_nums[“dog”]
num = 10 / 0
rescue ZeroDivisionError
puts “Division by zero error ”
rescue TypeError => e
puts e
end

元記事を表示

【Ruby On Rails】DBに一意性を与えるユニーク制約(unique)の正しい記述場所

備忘録です。

# ユニーク制約とは
一意性制約のことです。DBにおいてデータを追加や更新する際の制約。カラムに独自性を与えます。

例えば、ユニーク制約を適用することで、ユーザーが新規登録をする際に、既に登録されているemailアドレスと同じアドレスで登録しようとした場合にエラーを返すことができます。

# uniqueの書き方

“`ruby
add_index :テーブル名, [:カラム名1, :カラム名2, :カラム名3, …(続く)], unique: true
“`

テーブル名をcontents、カラム名をpart_idとwordとした場合は次のようになります。

“`ruby
add_index :contents, [:part_id, :word], unique: true
“`

# 記述場所

以下のように、マイグレーションファイルのchangeメソッド内に記述するようにしましょう。

“`ruby:マイグレーションファイル
class CreateContents < ActiveRecord::Migration[6.0] def ch

元記事を表示

OTHERカテゴリの最新記事