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

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

daw

dwa

元記事を表示

Ruby と Python で解く AtCoder ABC057 C 素因数分解 ビット全探索

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Recommendation を利用して、過去の問題を解いています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。

尚、昨日より過去問においても言語のアップデートが実施されました。

“`
ruby
“2.7.1”

python
Python: 3.8.2
NumPy: 1.18.2
SciPy: 1.4.1

pypy3
Python: 3.6.9

cython
Python: 3.8.2
“`
Numo::NArrayのバージョン確認方法は不明でした。
# 今回のお題
*[AtCoder Beginner Contest C – Digits in Multiplication](https://atcoder.jp/contests/abc057/tasks/abc057_c)*
Difficulty: 834

今回のテーマ、素因数分解 + ビット

元記事を表示

【DBエラー解決】Error: Duplicate column name ””

#はじめに
$ rails db:migrate した際にDBには反映されているがエラーが起こっている解決策について調べたのでまとめました。

#今回の状況

$ rails db:migrate
⬇︎
エラー発生
⬇︎
エラーなのにDBにはカラムが反映されている

#エラー内容

“`
andardError: An error has occurred, all later migrations canceled:

Mysql2::Error: Duplicate column name ” ・・・・・




“`

これはカラムが重複していますと言うエラーだそうです。

#解決策

command + f でmigrationファイルの中身を空にする。

“`
class AddCategoryToItems < ActiveRecord::Migration[5.2] def change ここを空にする end end ``` 空の状態で $ rails db:migrate すると通る。 command + f で切り取ったコ

元記事を表示

【開発ログ⑩】Railsで法定付与日と勤続年数を計算したよ

# 前提について
はじめまして、
プログラミングスクールに通ういりふねと申します。この記事は、スクールの課題である個人アプリの開発の記録を書くことで、自身のアウトプットに利用しています。もし、読んでいただけた方がいましたら、フィードバックをしていただけたら嬉しいです。

開発するのは「有給休暇管理ツール」です。仕様は[過去記事](https://qiita.com/iczo32/items/97ad7d4baa985b3b99ca)をどうぞ。

アプリはデプロイまで行いますが、サービスとして提供するものではありません。あくまでも自学習の一環ですので、ご理解下さい。では本題へどうぞ。

# 今回の実施内容
前回までで、社員登録の実装が完了しました。社員登録時に「入社日(カラム名は、hire_date)」を入力してもらいます。そこで、この入社日を使用して、法定付与日と勤続年数を計算させます。具体的には以下の手順で進めます。今回は書くこと少なめ。

– 法定付与日の計算方法を確認
– 法定付与日の実装
– 勤続年数の計算方法を確認
– 勤続年数の実装

# 法定付与日の「とは?」と「計算方法

元記事を表示

【Rails】 5分でExcel出力を実装する方法

# はじめに
社内アプリケーションを作成したときに管理部へ提出するようの資料をExcel出力するとき調べたことをまとめました。
Axlsx というライブラリを使用すると、Rails で簡単にExcel出力ができるようになります。
利点なのかわかりませんが、複数のシートを作成することができて便利だなーと感じました。

# コマンド

“`
// Rails アプリケーション作成
$ rails _5.2.4.2_ new five_min_axlsx_rails
$ cd five_min_axlsx_rails

// scaffold で Excel モデルを作成
$ rails g scaffold excel title:string body:string
$ rails db:migrate RAILS_ENV=

元記事を表示

マイグレーションファイルを修正する

【開発環境】
macOS Catalina
バージョン 10.15.3
ruby 2.5.1
Rails 5.2.4.2
visual studio code

#DB反映後のマイグレーションファイルを修正する
マイグレーションファイルをrails db:migrateでDBに反映した後に、「カラム名間違えた、、、」などミスに気づくことがあるかと思います。
ミスを訂正してまた反映させればいいんじゃね?と思うのですが、そうもいきません。
反映ずみのマイグレーションファイルは修正できません。修正してしまうと、DBとの整合性が取れなくなり、エラーなどの原因になります。
しかし、順を追えば修正可能ですので、その方法を書いていきます。

##マイグレーションファイルをDBから戻す
ではどうすればいいかと言いますと、まず、DBに反映させているマイグレーションファイル一度DBから差し戻します。

マイグレーションファイルの状態を見てみます。

“`
$ rails db:migrate:status
“`

このコマンドで、マイグレーションファイルの状態がわかります。
statusがupだとDB

元記事を表示

新しく作成した.jsファイルが読み込まれない

#新しく作成した.jsファイルが読み込まれない
jQueryで追加機能を新しいファイルに書き込み実装したところ、うまく起動しなかった。
つまり読み込まれていないという状況であった。
その時の解決方法を備忘録的に記入する。

##状況
![スクリーンショット 2020-05-13 23.33.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590181/206c12a6-a80c-c6e6-39b7-cdbcafe2dc14.png)

新たに「searches.js」を加えたがうまく実装しない。

##結論
![スクリーンショット 2020-05-13 23.35.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/590181/6f8e4d5c-4d35-36ee-2c7f-985d69eed22c.png)
「application.js」に
`//= require_tree .`
を追記するだけ

##軽く説

元記事を表示

ローカルサーバーがすでに起動していると言われてrails sできない時の対処

# 背景
何らかの理由でローカルサーバーが落ちてしまったが、内部的には起動中となっているときに再度rails sできなかった事があったのでそれを解決した時の方法

# 対処法
* localhostのタスクを確認
*
“`
sudo lsof -P -i:3000
“`

* 実行中のタスクidをkill

“`
sudo kill -9 “`

元記事を表示

【Rails Error】No such table userと言われた

# 【Rails Error】No such table userと言われた
あるとき、Deviseを導入した時に、こんなエラーが出た

“`:terminal
> rails db:migrate
== 20190905110927 AddDeviseToUsers: migrating =================================
— change_table(:users)
rails aborted!
StandardError: An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: no such table: users:
“`
Userテーブルがないとお!
とはいえrails g devise userをしてもrails g model userをしても反応しないじゃないか!

無いからダメって言われて、じゃあ作ろうとしたら怒るってどんなツンデレよ..

あれこれ調べていると、

“`:2019*********_add_d

元記事を表示

【Rails】 .where について

# はじめに

.whereについて調べたことについて自分なりにまとめておきます。

# .where

“`
Post.where(title: “food”)
“`

titleがfoodのレコードを全て取得する

#.where.not

**NOT条件**

“`
Post.where.not(title: “food”)
“`

titleがfood以外のレコードを全て取得する

#.where.and

**AND条件**

“`
Post.where(title: “food”, price: 1000)
“`

titleがfood、なおかつpriceが1000のレコードを全て取得する

#.where.or

**OR条件**

“`
Post.where(title: “food”).or(where(price: 1000)
“`

titleがfood、またはpriceが1000のレコードを全て取得する

#AND条件OR条件

“`
Post.where(title: “food”, price: 1000).or(Post.where(

元記事を表示

Kinx アルゴリズム – 選択ソート

# アルゴリズム – 選択ソート

## はじめに

**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」** でお届けしているスクリプト言語 [Kinx](https://github.com/Kray-G/kinx)。「プログラム=アルゴリズム+データ構造」。アルゴリズムの実装例をご紹介。

元ネタは「C言語による(30年経っても)最新アルゴリズム事典」。今回はソート(選択ソート)です。

* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](https://github.com/Kray-G/kinx)
* Pull Request 等お待ちしております。

アルゴリズムと言えばソート。選択ソート。

> 何気に実際のコードに

元記事を表示

難解で簡潔なattr_accessorについてまとめてみた。

Ruby初学者のものです。

**attr_accessorについてまとめてみました。**

railsチュートリアルなどでチラホラ出てきましたが、放置していました。
> プロを目指す人のRuby入門

で本日再度遭遇したので、この機会にきちんと理解しようと思い記事にした次第です。

“`ruby:attr_accessor
class Bird
attr_accessor :name
end

bird = Bird.new
bird.name = “そらじろう”
p bird.name #=> “そらじろう”
“`

初めて上記のコードを見たとき、かなりちんぷんかんぷんでした。
「クラスを定義したけどメソッド?がなくて、クラスの中身薄!!!」
「bird = Bird.newで、オブジェクトを作ったのはわかるけど、nameメソッドって定義されてなくない?』
といった具合でした。

attr_accessorに至る背景を知らなかったので、当然といえば当然ですが、初見の理解度はこの程度でした。

**この難解で簡潔なコードを、順を追ってみたいと思います。**

#attr_

元記事を表示

本番環境でローカルで指定していたフォントが使用できない時の対処法

アプリをRails で開発して1ヶ月経ち、デプロイして本番環境でどんなふうに動くのかを確かめている時に、フォントが適用されず半日くらい潰れてしまったので備忘録として書きます。

使用している技術はRuby,Rails, EC2, Nginx,Puma
WebサーバーにNginx  アプリケーションサーバーにPuma

Capistranoを使ってデプロイしている。(まだ使い始めてから1日なので、理解が浅いが簡単にデプロイできて感動している)

“`ターミナル
$ rails -v
Rails 5.2.3
“`
“`ターミナル
$ ruby -v
ruby 2.5.7
“`

クロームのブラウザで検証を見ると、/assets/soft.ttfがnot foundと言っていた。

フォントファイルが見つからないと

ターミナルでログを確認

“`ターミナル
$ sudo tail -f /var/log/nginx/access.log
“`

すると

“`
“GET /assets/soft.ttf HTTP/1.1” 404 555
“`
こちらも見つからないという

元記事を表示

AtCoder 茶diff 一覧

# はじめに
*[AtCoder Problems](https://kenkoooo.com/atcoder/#/)* の Difficulty Status を利用して、プログラミングの勉強をしています。
AtCoder さん、AtCoder Problems さん、ありがとうございます。
# 茶埋完了
20200513.png

茶diff`(Excluding)`埋め完了しましたので、~~コピペ資料として~~まとめたいと思います。
# 茶diff 一覧
|Contest|Problem|Diffculty|記事|コメント|
|:–:|:–:|:–:|:–:|:–:|
|abc073|Rubyの「?」「!」の整理メモ

表題の件です。

「!」は破壊的メソッドにする。
「?」は真偽値を返すメソッドにする。

という感じです。

例を↓

まずは「!」破壊的メソッド。

“`ruby
#ファイルへの記述
name=”taguchi”
puts name
puts name.upcase
puts name
puts name.upcase!
puts name
“`

この場合のコンソールでの出力は

“`ruby
ec2-user:~/environment/ruby_lessons $ ruby hello.rb
taguchi
TAGUCHI
taguchi
TAGUCHI
TAGUCHI
“`

となります。

つづいて「?」真偽値を返すメソッド。

“`ruby
#ファイルへの記述
name=”taguchi”
puts name
puts name.empty?
puts name.include?(“g”)
“`

この場合のコンソールでの出力は

“`ruby
ec2-user:~/environment/ruby_lessons $ ruby hello.rb
tagu

元記事を表示

バリデーションについて

バリデーションとはデータベースにデータを登録する際に一定の制約をかけることを言います

![blog.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533191/b264ac22-0506-b435-2fd1-0c9192f2cd88.jpeg)

よくwebサイトで新規会員登録などをする際に、「パスワードは何文字以上にして下さい」などのメッセージが表示されることがあります。あれもバリデーションによる制約の一つです。

バリデーションを設ける際はモデルに記載します

“`hoge.rb
validates :カラム名, バリデーションの種類
“`

以下にバリデーションの種類の一例を載せておきます。

#種類

空のデータはダメ(マイグレーションファイルにも記載)

“`
validates :カラム名1, presence: true
“`
“`
def change
create_table :hoges do |t|
t.カラム型 :カラム名1, null:

元記事を表示

resourcesメソッド

#ルーティング

ルーティングを省略なしで記述する場合は以下のような記述になります

“`routes.rb
[HTTPメソッド] ‘[URIパターン]’, to: ‘[コントローラー名]#[アクション名]’
“`

ですが、それぞれのアクションに対応したルーティングを上記のように毎回書いていると記述量が多くなり、可読性に欠けます。そのため通常はresourcesメソッドを使用した記述を行います。

resourcesメソッドは上記で指定すべきhttpメソッドとアクションを全て設定してくれます。

“`routes.rb
resources :コントローラー名, only: [:アクション名]
“`
“`routes.rb
resources :コントローラー名, except: [:アクション名]
“`

resourcesメソッドはオプションを指定しないと全てのアクションのルーティングが生成され、可読性も下がるため、オプションを使用して、アクションの指定をします。

上記のonlyとexceptがそれに当たります。onlyは指定したアクションのみのルーティングを生

元記事を表示

fizzfazzを噛み砕く

あんま噛み砕けてないわ・・・w
##近況報告
 一歩踏み出すことを助けてくれることば
・思い立った日が吉日,その日以降は凶日(トリコ)
・運命が僕を追いかけるくらいに清潔な衝動に正直でいたい(ポルノグラフィティ)
・本気でそれをなしたいと思えば世界があなたに味方をしてくれる(アルケミスト)
・選択しなかった道は最悪の結末が待っている(ラブホスタッフ上野さん)

やってから考える。死ぬこと以外かすり傷。

# 今日のお題
 while文を用いた演算処理

## 背景
某社のオンラインテストでボコボコにされたので勉強した

## ruby
### 1から100までの総和

“`
i = 1
def calc(i)
sum = 0
while i <=100 do sum += i i += 1 end puts sum end calc(i) ``` ### fizzfazz(3の倍数と5の倍数で) ``` def fizzFazz(i) while i <16 do if i%3 == 0 && i%5 == 0 puts "fi

元記事を表示

RailsのDBコマンド

Railsで開発を行う際にターミナルでよく使うコマンドをまとめておきます

“`
rails db:create
“`

データベースの作成↑

“`
rails db:drop
“`

データベースの削除↑

“`
rails db:reset
“`

データベースの削除から作成をまとめて行ってくれる↑

“`
rails db:migrate
“`

マイグレーションファイルの実行↑

“`
rails db:migrate:status
“`

マイグレーションファイルがデータベースに適用されているか確認。↑
適用されている時は「up」  適用されていなければ「down」 と表示される

“`
rails db:rollback
“`

適用されているマイグレーションファイルを「down」にすることができる。↑
既に適用されたマイグレーションファイルを修正する時は、一度ロールバックしてから、修正し、実行という手順を踏まないと整合性が取れず、修正を反映できません

元記事を表示

【ruby】corderbyteやってみた記録_20200513

“`Coderbyte is the #1 website for technical interview
prep and coding challenges“`
ということなので勉強がてらやってみました

### 問題
“`Have the function BinaryReversal(str) take the str parameter being passed, which will be a positive integer, take its binary representation (padded to the nearest N * 8 bits), reverse that string of bits, and then finally return the new reversed string in decimal form. For example: if str is “47” then the binary version of this integer is 101111 but we pad it to be 00101111. Your

元記事を表示

OTHERカテゴリの最新記事