- 1. Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較
- 2. herokuビルドでアプリがcrashしてしまった時の解決例
- 3. Ruby 3.2 で Struct がチョイ楽になる?
- 4. Ruby 3.2 で Set が組込みクラスになる?
- 5. times文を用いた繰り返し処理問題
- 6. rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。
- 7. [Rails]selectフォームにenumのリストを表示する2つの方法
- 8. Active Record attribute methodまとめ(その④: Query, Read, Write編)
- 9. Active Record attribute methodまとめ(その③: PrimaryKey編)
- 10. 【計算結果が正しくない!?】案外知らない、計算誤差の話
- 11. RubyKaigi 2022にオンラインで参加しました
- 12. minitestでRailsをテストする際に使える検証メソッドの一覧と、そのメソッドに対応するAPIドキュメントのまとめ
- 13. ruby「インスタンスメソッドとクラスメソッドの使いわけ」と「アクセサメソッドの使い分け」
- 14. Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
- 15. 正規表現 備忘録
- 16. 【Ruby】特定のレベルよりも重要なログのみを出力したい
- 17. SQLの練習ができる学習サービス「SQLab」を作ってみた
- 18. 2重以上のハッシュの取り出し方について
- 19. Ruby on Rails link_toのパスの引数に.idって、いるの?いらないの?(自分用メモ)
- 20. オブジェクト指向 とは
Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較
Python,Ruby,PHP,Java,JavaScript,Perlのコマンドライン引数の比較
# Python
https://qiita.com/taashi/items/07bf75201a074e208ae5
# Ruby
https://qiita.com/shiGira/items/44586bdc48c06e00d99f
# PHP
https://qiita.com/aic0o/items/91ca1ddc1fc6e025286f
# Java
https://qiita.com/takahirocook/items/ece64146015f702d0a83
# JavaScript
https://qiita.com/furusin_oriver/items/f030d1eaa9e7b54233c3
# Perl
https://perlzemi.com/
herokuビルドでアプリがcrashしてしまった時の解決例
herokuにデプロイした際にビルドは成功したのですが、WEBページを開くと下記の画面になってしまいました。
1週間ほど嵌ったので備忘録として記載します。?
参考にしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/3e3bc773-05ce-3a65-2112-ec106f64817d.png)# 起点 「Application error」
ビルドが正常に終了したのに、WEBページに「Application error」画面が表示され、「heroku logs –tail」でログを確認してね!とあるのでターミナルで確認する。
以下のログが表示されていた。“`zsh:heroku logs –tail
2022-09-12T03:32:48.194301+00:00 heroku[web.1]: Starting process with command `npm start`
2022-09-12T03:32:49.916104+00:00
Ruby 3.2 で Struct がチョイ楽になる?
Ruby で構造体的なデータを表すクラスにはいろいろありますが,その代表格は,やはり組込みクラスの Struct ですよね。
たとえば,猿への給餌計画を表す `ApeFeed` クラスはこんなふうに:
“`rb
ApeFeed = Struct.new(:morning, :evening)proposed_ape_feed = ApeFeed.new(4, 3)
p proposed_ape_feed.morning # => 4
p proposed_ape_feed.evening # => 3
“`しかし,どうも私は Struct を多用する気になれないでいます。
理由の一つは,`Struct.new` が Struct のインスタンスではなくサブクラスを返す,という謎仕様。
えっと,クラスに `new` したらインスタンスを生成して返すでしょ,ふつう。
なぜこんなワケの分からない仕様なのか理解に苦しみます。もう一つは,上記のようなコードだと,`ApeFeed.new(4, 3)` の引数のどっちがどっちかすぐ分かんなくなっちゃうことなんですよね。
やっぱ
Ruby 3.2 で Set が組込みクラスになる?
Array クラスの陰に隠れて存在感の薄い Set クラスですが,みなさん使ってますか?
Set クラスは文字どおり数学の「集合」を表すクラスです。標準添付ライブラリーなので(組込みではないので),`require` しないと使えません。
Set の影が薄い理由は,組込みクラスでないことに加え,集合にまつわるだいたいのことが Array で代用できてしまう,ということがあると思います。
これは,Array が「大クラス主義」的に設計されていて,他言語なら分けて設計するようなさまざまなデータ型の機能を Array に詰め込んでいるからですね。しかし,Set が「要素の重複が無いことが確実」であるのに対し,Array で集合を表すと要素の重複があるかもしれないので,最後に `uniq` をかます必要があったりします。
やはり集合のようなデータは Set クラスで表すのがよさそうです。
でも `require` が面倒。なのですが,どうやら Ruby 3.2 で Set が組込みクラスになるようです。
https://www.ruby-lang.org/en/news/2022/
times文を用いた繰り返し処理問題
問題
times文を使って、以下のようにターミナルに出力されるプログラムを書く。1回目の繰り返し
2回目の繰り返し
3回目の繰り返し
4回目の繰り返し
5回目の繰り返し
6回目の繰り返し
7回目の繰り返し
8回目の繰り返し
9回目の繰り返し
10回目の繰り返し自分の答え
10.times do|i|
puts “#{(i+1)}回目の繰り返し”
end正解
10.times do|i|
puts “#{i+1}回目の繰り返し”
end修正が必要な点
ブロック変数+1の式展開は、()が不要。式展開
文字列の中に式を入れることができる機能。
式展開する場合は、文字列を””で囲む必要があり、’’で囲んでも機能しない。
rails 7でdevice を使用するとusersモデルに独自で追加したカラムが保存されない。
先日の[watnow](https://github.com/watnows)のハッカソンでアプリを開発をした際にRails 7.0.3を利用して開発しました。
ハッカソンで作ったアプリでログイン機能をrails7かつdeviceで実装するという選択をしたところハッカソンにおいて貴重な2時間を失ってしまいました。その際に得た知識が誰かの役にたてばなと思い記事にさせていただきました。### 環境
Rails 7.0.3
Ruby 3.1.2## 状況
Rails 7でdeviceでアカウント登録する際に独自に追加したカラムが保存されないという状況にハマりました。form_withを使用して実装しており、deviceが用意してくれているemailやnameといったカラムは保存されます。## エラー内容
deviceを使用してuserをcreateすると以下のようなエラーが出ました。
“` terminal:ログ
Started POST “/users” for ::1 at 2022-08-07 16:52:12 +0900
Processing by Devise
[Rails]selectフォームにenumのリストを表示する2つの方法
すんごい基礎的な内容なのですが、2通りのやり方に出会ったので整理したかったのと、地味なとこでハマったので備忘録。
## やりたいこと
Postモデルにstatusというenumがあるとする。“`ruby
class Post < ApplicationRecord enum status: { active: 10, inactive: 20 }, _prefix: true end ``` これをこういう感じ↓で表示したい。 ![スクリーンショット 2022-09-12 12.09.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/645077/b0e3c242-c7da-f570-f417-f87c24cf5242.png) htmlはこう。ブラウザで見える文字列とvalue属性を渡してあげたい。 ```html
Active Record attribute methodまとめ(その④: Query, Read, Write編)
# はじめに
今回はActive Recordのattribute methodのうち、Query, Read, Writeメソッドをまとめていきます。
(2022年6月時点。Rails7.0対応。)
その他のメソッドについては、別記事でまとめてますので是非ご覧ください。
[ActiveRecord attribute methodまとめ(その①: BeforeTypeCast編)](https://qiita.com/maabow/items/33ad5328b192e3adb49e)
[ActiveRecord attribute methodまとめ(その②: Dirty編)](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)
[Active Record attribute methodまとめ(その③: PrimaryKey編)](https://qiita.com/maabow/items/012c473312961ce7e060)# 検証環境
以下のschemaとmodelに基づいて検証を行なっています。
“` R
Active Record attribute methodまとめ(その③: PrimaryKey編)
# はじめに
今回はActiveRecordのattribute methodのうち、PrimaryKeyメソッドをまとめていきます。
(2022年9月時点。Rails7.0対応。)
[BeforeTypeCastメソッド](https://qiita.com/maabow/items/33ad5328b192e3adb49e)、[Dirtyメソッド](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)は全attributeに関連するメソッドでしたが、今回は主キー専用のメソッドになります。
関連したメソッドも多いので、[BeforeTypeCastメソッド](https://qiita.com/maabow/items/33ad5328b192e3adb49e)、[Dirtyメソッド](https://qiita.com/maabow/items/0a5a228fb6c1447877e0)の内容も確認してみてください。
PrimaryKeyメソッドを使う機会は多くはないかもしれませんが「こんなのもあるんだ〜」程度に知っておいて損はな
【計算結果が正しくない!?】案外知らない、計算誤差の話
# はじめまして
63歳ですが、プログラム書いてます。
30年以上昔に知った話を、最近、また耳にしましたので、ちょっとご紹介させていただきます。# 実数計算が正しいか、9種類の言語で試しました。
今回試したのは、linux 標準の bc(計算機)、PHP、python3、ruby、perl、node.js、C++、go、fortran95 の9つの言語です。
C++ のコンパイルは “`gcc ru88.c -lm -o ru88.out“`、“`gcc ru88-boost.cpp -lstdc++ -o ru88-boost.out“`、
fortran95 のコンパイルは “`gfortran -O3 -o ru88.exe ru88.f95“`、
“`gfortran -O3 fmsave.o fm.o fmzm90.o fm_interval.o fm_doubleint.o fm_quadint.o fm_quadreal.o fm_rational.o -o ru88-FM.exe ru88-FM.f95“`、
go は “`go run ru88.
RubyKaigi 2022にオンラインで参加しました
## はじめに
[RubyKaigi 2022](https://rubykaigi.org/2022/)にオンラインで参加しました。
まつもとさんから、ブログを書くまでがRubyKaigiだと言われたので、聴いたトークの感想をひとことずつ書いていこうと思います。## [1日目](https://rubykaigi.org/2022/schedule/#day1)
### [Ruby meets WebAssembly](https://rubykaigi.org/2022/presentations/kateinoigakukun.html#day1)
WebAssenbly、今まであんま気にしてなかったけど、発表を聴いて俄然気になってきました。
ちょっとサイズが大きいですが、JSのようにHTMLのscriptタグで書けたりするし、DOMの操作もできたりしてました。
Ruby3.2でサポートされるということなので、楽しみです。### [Making \*MaNy* threads on Ruby](https://rubykaigi.org/2022/presentation
minitestでRailsをテストする際に使える検証メソッドの一覧と、そのメソッドに対応するAPIドキュメントのまとめ
## はじめに
Rails標準のテスティングツールはminitest(をベースにRailsが独自拡張したもの)です。
現場ではRSpecがよく使われるとはいえ、Rails標準のminitestを使っている方も中にはおられると思います。
Railsのminitestには`assert`や`refute`(または`assert_not`)で始まる検証メソッドが数多く定義されていますが、かなり数が多いため全メソッドを把握している方は少ないのではないでしょうか。
また、それら検証メソッドは、
– minitestがデフォルトで提供しているもの
– Railsが独自に提供しているもの
– Capybaraのような外部gemが提供しているものなど様々です。そのため、メソッドの使い方を調べたくてもどのドキュメントで解説されているのかわからない、ということがよくあります。
そこでこの記事では、Railsのminitestではどんなメソッドが使えて、そのメソッドの使い方を調べたいときはどのドキュメントを見にいけばいいのかを一覧化してみました。
minitestでRailsのテストを書く
ruby「インスタンスメソッドとクラスメソッドの使いわけ」と「アクセサメソッドの使い分け」
# はじめに
著者自身も初学者なので本内容を鵜呑みにせず参考程度に読んで頂けるとありがたいです。?
___
![スライド2.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/92d8ce09-2868-c8fa-5a6e-678cd3244749.png)
___
![スライド3.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/f21fff5a-980a-fd75-314f-f87a910d3ba3.png)
クラスとはインスタンスの設計書にあたるものです。
___
![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2534058/851818ff-47d0-5dd9-7b11-2ad63cde7444.png)
インスタンス(オブジェクト)は設計書をもとに作ったものです。
そのため、クラスが車の設
Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
Python,Ruby,PHP,Java,JavaScript,Perlのfor文の比較
# Python
https://qiita.com/Morio/items/e8aed85346c0055beea7
# Ruby
https://qiita.com/Morio/items/3ac5cac9ace7e9ddbdb4
# PHP
https://qiita.com/miriwo/items/d1b5d5ece4f16c7b5985
# Java
https://qiita.com/Co_Pilot/items/7c59410cd90be4cf06d8
# JavaScript
https://qiita.com/w-tdon/items/f3ecb29dc9350f2f2e8d
# Perl
https://perlzemi.com/blog/20080327120662
正規表現 備忘録
# よく使用する正規表現
`//`:構文の最初と終わり
`[]`:[]で囲まれた文字のうちいずれか1つにマッチする
`[a-z]`:aからzのいずれか1つにマッチ
`\d`:数字にマッチ
` [ぁ-んァ-ヶ一-龥々ー]`:かな/カナ漢字のいずれかにマッチ
`\s ` :スペースと全角スペース(\sの後ろに全角スペースを入れる)にマッチ`/i`:大文字・小文字を区別しない
`\A`:\の直後においた文字が先頭にある文字列にマッチ
`\z`:\の直前においた文字が末尾にある文字列にマッチ`.`:ハイフンやピリオドなど含めたすべての英数字において、1文字マッチする
`*?`:直前の1文字が0回以上続く文字列をチェックし、?の直後の文字が出た段階でその1文字を返す
`+`:直前の文字が1回以上の繰り返しにマッチ
`{n}`:直前の文字がn回以上出現するものにマッチ
`{n,m}`:直前の文字が少なくともn回、多くてもm回出現するものにマッチ
`?=`:?後に設定した文字が続く文字列にマッチ
【Ruby】特定のレベルよりも重要なログのみを出力したい
# 概要
開発時にはデバッグログまで記録し、運用時には重要なログしか残さないという制御をするには、Logger#levelメソッドでログを記録するしきい値を指定します。# LOGの段階
* 6段階のログレベルに分けてログを記録します。* UNKNOWN
* 常に記録されるべき不明なエラー* FATAL
* プログラムをクラッシュさせるような制御不可能なエラー* ERROR
* 制御可能なエラー* WARN
* 警告* INFO
* 一般的な情報* DEBUG
* 低レベルの情報* Logger#levelメソッドにINFOを設定した記載例
“`ruby
require ‘logger’log = Logger.new(STDOUT)
log.level = Logger::INFO #INFO以上のログのみ出力log.debug(“debug message”)
log.info(“info message”)
log.warn(“warn message”)
“`上記の記載例だとINFOよりも重要度の低い情報は記
SQLの練習ができる学習サービス「SQLab」を作ってみた
# はじめに
![sqlab-min.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1074872/d8013e1c-7b65-0242-3de4-38778c2b94e5.png)
こんにちは、[タケ](https://twitter.com/take_paolo)と申します。
SQLの練習ができる学習サービス「SQLab」を作りました。https://sqlab.net/
※ PC専用です。
※ 推奨ブラウザはGoogle Chromeです。# なぜ作ったの?
SQLを学び始めた当初は **「SQLってなんか難しそう」** というイメージでしたが、
練習問題を解いていく中で次第に自力でクエリを組み立てることが **「クイズみたいで楽しい」** と思うようになりました。
そこでもっと多くの練習問題を解いてみたい、もう少し難易度の高い練習問題を解きたいと思ったのですが、・無料でバリエーション豊かな多くの練習問題に取り組める
・環境構築不要でブラウザ上ですぐに実践できる
・シンプルで使いやす
2重以上のハッシュの取り出し方について
## 久しぶりに問題をしたら忘れていたのでメモ
### そもそもハッシュとは
複数の値をまとめて管理する方法
ハッシュはそれぞれの値(バリュー)に名前(キー)をつけて管理する
書き方はいろいろあるが良く使う(というかほぼこの書き方しかしない?)のがキーにコロン「:」をつけて記述するシンボルという書き方がある
“`
{キー: バリュー}
user = {name: “Tanaka”, age: 25}
“`### 取り出し方
複数のユーザーの情報をハッシュとして持つ変数user_dataがある
“`
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
“`配列の要素を順番に取り出すeach分を使う
“`
user_data.each do |u|
end
“`
ハッシュから特定の値を取得するにはその値に対応するキーを取得する
“`
ハッシュ[取得したい値のキー]
`
Ruby on Rails link_toのパスの引数に.idって、いるの?いらないの?(自分用メモ)
# はじめに
Ruby on Railsのlink_toの読み方についてなんとなく理解したので
自分用メモとして投稿します。
(自分にしかわからない書き方となっていること、ご了承ください:bow:)# link_toのパスの引数に.idって、いるの?いらないの?
#### link_toの記述方法
“`
<%= link_to "表示したいテキスト", url又はパス %>
“`
補足:link_toのHTTPメソッドは特に設定しなければGETになる。
そのため、もし設定したい場合は下記のようにmethodオプションを設定すること
“`
<%= link_to "表示したいテキスト", url又はパス, method: :HTTPメソッド %>
“`#### 今回のコード
“`show.html.erb
<%= link_to "編集", edit_list_path(@list.id) %>
“`
コードの意味:ブラウザに”編集”と表示させるよ。
”編集”を押すとedit_list_path(@list.id)に飛ぶよ。#### 疑
オブジェクト指向 とは
# 目的
– オブジェクト指向とは何かを抽象的に理解する# オブジェクトの性質
– Ruby は全てものもがオブジェクトでできている
– オブジェクトは、いずれもなんらかの型(クラス)に属している
(”apple” は Stringクラス に属している)
– クラスによって別々のメソッドを持つ
(pry の ls で確認してみる)
– インスタンスはオブジェクトから実体化したオブジェクト
(”apple” は Stringクラス の インスタンス)# オブジェクト指向とは
– クラスをもとにインスタンスを作る考え方
(hash = Hash.new <= ハッシュクラスから、そのメソッドが使えるインスタンスを生成) - メリットは、同じ性質のものを簡単に作れること・コードの修正箇所が減ること - インスタンス変数はインスタンス内で使いまわせる変数のこと (@ をつける) # 例 ```ruby #任意の名前が出力できるメソッド # =>引数に名前を入れるclass Student
def say_name
puts @name
enddef sa