- 1. Bundler の Platform 一覧 (Mac OS / Linux版)
- 2. 100日後くらいに個人開発するぞ!day039
- 3. Rubyの基本
- 4. Ruby on Rails7.0.3 × MySQL8.0 のDocker環境構築
- 5. Ruby コーディングテスト 便利メソッド一覧
- 6. DockerでRuby on Railsの環境を構築する際のmysql.cnfのコマンド及びコード理解
- 7. Ruby + Victor でSVGお絵描き(簡単な散布図を描いてみた)
- 8. Ruby + Numo::Gnuplot(numo-gnuplot gem)で散布図を描く
- 9. Ruby と crystal で解く AtCoder ABC254 D
- 10. Railsのアプリケーションの新規作成からページを表示するまでの手順を徹底解説
- 11. 【Ruby on Rails】migrationファイル change・up/downの使い分けについて
- 12. プログラミングと出会って
- 13. 【RSpec】システムテストでcurrent_userが使えないことを解決する
- 14. 四捨五入、切り捨て、切り上げをしたい(Math)
- 15. 素人がレビューせざるを得ない時
- 16. Rubyのspawnで生成したプロセスを終了できない罠と解決策
- 17. RSpecでsessionメソッドを使えるようにするには?
- 18. 【Rails+DynamoDB】Dynamoidの主な使用方法まとめ
- 19. 【RubyMine】よく使う便利なショートカット10選
- 20. ターミナル
Bundler の Platform 一覧 (Mac OS / Linux版)
## はじめに
– Bundler 2.2.x から 適切なプラットフォームを `Gemfile.lock` に記載する必要があった
– すべての環境をすぐに用意、再現できるマシンが複数手元にないため Platform 一覧を作成した
– Mac OS は新しい OS が公開後更新します## Platform一覧
– Linux, Mac 別に記載します
– 32bit 環境や Windows マシン は手元に無いため省略しています
– 以下に記載する Platform 名を `bundle lock –add-platform` コマンド実行時に渡すことで、実行環境の追加できます ### Linux
| OS | x84_64 | arm64 |
|:–|:–|:–|
| Linux | x86_64-linux | arm64-linux |### Mac OS (darwin)
– Mac OS は新しい OS が公開されたら Platform 指定が変更になるため、アップグレード後追記します| OS | x84_
100日後くらいに個人開発するぞ!day039
## 今日は条件分岐をやってみた!
## 今日の学び
### 条件分岐の方法(if文)
* 条件分岐とはある条件が成り立つときだけある処理を行うようプログラムすること
* if文を用いると「もし〜ならば・・・を行う」という条件分岐が可能になる
* if文の書き方
* `if 条件式`
* ` 処理 `
* `end `
* if文の書き方例:scoreが80より大きい場合は「よくできました」というテキストを出力する
* `score = 94`
* `if score > 80`
* `puts “よくできました”`
* `end`### 真偽値
* 真偽値にはtrueとfalseという2つの値が存在する
* 条件式はが成り立つと「true」、成り立たなけれ
Rubyの基本
## Rubyの基本
#### Rubyとは?
Rubyは、1995年頃に開発された**オブジェクト指向のスクリプト言語**。C言語やJavaといったプログラミング言語は、**コンパイラ言語**と呼ばれており、プログラムを実行するために「コンパイル」という手続きを行うことで初めてそのプロジェクトを実行するができる。対して、Rubyのような**スクリプト言語**では、上記のコンパイルという処理が一切不要。そのままプロジェクトを実行することができる。
そのため、コンパイラ言語に比べてRubyはプログラミングを手軽に行えるのが特徴となっている。つまりRubyは、上から下へ書いた内容を実行する手続き型言語ではなく、実体(オブジェクト)を組み立てながら作る、**オブジェクト指向の中でも比較的容易に実装できるプログラミング言語**。
#### Rubyで何をすることが多いのか?
* ユーザー同士の交流ができるSNSサービス開発
* 人と人をつなぐことのできるマッチングサービス開発
* 動画や音楽などの配信サービス開発
* 業務効率化ツールやソフトの開発
* 機会を制御するためのソフト開発
Ruby on Rails7.0.3 × MySQL8.0 のDocker環境構築
おはよう。:relaxed:
色々あってRuby on Railsに入門するので、環境づくりをしたよ。## Ruby on Railsって何? :thinking:
Webアプリケーション開発フレームワーク。
特徴的だと思ったのは「最善の開発方法は1つ」という信念のもと設計されているところで、手法を学び、手法に則ることで生産性向上につながるとのこと。哲学2つ
・Don’t Repeat Yourself: DRY
– 同じ意味や機能を持つ情報を複数に重複しておくことは避けましょうの考え方。
・Convention Over Configuration
– 規約>設定:Rails側で既にWebアプリケーションの「最善の方法」を明確にし、各種設定にもデフォルト値を設定している。アプリケーションが迷走することを避けるために、規約の遵守を推奨しているらしい。## 今回用意する環境
今回はRailsの現時点最新バージョン7を使用したいので、Rubyも公式推奨の3.0で設定するよ。
Ruby: 3.1
*https://hub.docker.com/_/ruby
Rail
Ruby コーディングテスト 便利メソッド一覧
※自分用メモ
Rubyによるコーディングテストまたは競技プログラミングにうまく使えそうなメソッド一覧## Array#combination
“`
a = [1, 2, 3, 4]
a.combination(1).to_a #=> [[1],[2],[3],[4]]
a.combination(3).to_a #=> [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
“`## Array#product
“`
[1,2,3].product([4,5]) # => [[1,4],[1,5],[2,4],[2,5],[3,4],[3,5]]
[1,2].product([1,2]) # => [[1,1],[1,2],[2,1],[2,2]]
[1,2].product([3,4],[5,6]) # => [[1,3,5],[1,3,6],[1,4,5],[1,4,6],[2,3,5],[2,3,6],[2,4,5],[2,4,6]]
“`
## Array#inject or Hash#inject
“`
# 合計を計算する
DockerでRuby on Railsの環境を構築する際のmysql.cnfのコマンド及びコード理解
## なぜ記事を書こうと思ったか
mysql 用の設定ファイルを作成する際にコマンド及びコードの理解を備忘録として残すため。## entrypoint.shのコマンド説明
mysql.cnf
“`
[mysqld]
default_authentication_plugin = mysql_native_password
skip-host-cache
skip-name-resolvecharacter-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = SET NAMES utf8mb4
skip-character-set-client-handshake[client]
default-character-set = utf8mb4[mysqldump]
default-character-set = utf8mb4[mysql]
default-character-set = utf8mb4
“`以下にコマンド及びコードの解説を致します。
– `
Ruby + Victor でSVGお絵描き(簡単な散布図を描いてみた)
Victor は Ruby で SVG 画像を作るための gem です。pure Ruby なので気軽に使えます。
https://github.com/DannyBen/victorリポジトリの [examples ディレクトリ](https://github.com/DannyBen/victor/tree/master/examples) を見ると雰囲気が分かります。
これを使ってためしに簡単な散布図のようなものを描いてみました。
# できあがり

ブラウザで表示させてスクリーンショットを撮ったもの。
色付きのグラフも良いものですが、白黒のも渋くて好きです。# コード
感触がなんとなく分かればOK という程度の試み
Ruby + Numo::Gnuplot(numo-gnuplot gem)で散布図を描く
@obelisk68 さんに教えてもらったサンプル([ruby_gnuplot の記事のコメント](https://qiita.com/sonota88/items/50609275668fcd7511e4#comment-0890d29e9583e74eba70), [ブログ](https://obelisk.hatenablog.com/entry/2022/05/29/181912))で十分という気もしたのですが、一応自分でも触ってみました。
# 準備
– gnuplot コマンドをインストール
– Ubuntu 18.04 の場合は `sudo apt install gnuplot`
– [Numo::Gnuplot](https://github.com/ruby-numo/numo-gnuplot) をインストール
– `gem install numo-gnuplot`これだけ。
[Numo::NArray](https://github.com/ruby-numo/numo-narray) は必須ではありません(インストールも不要)。以下は Num
Ruby と crystal で解く AtCoder ABC254 D
# はじめに
AtCoder さん、ありがとうございます。
# D – Together Square
https://atcoder.jp/contests/abc254/tasks/abc254_d時々出題される、素数系の問題。
# 愚直な例(失敗)
“`rb
n = gets.to_i
ans = 0
a = []
k = 1
while k <= n a << k * k k += 1 end k = 1 while k <= n a.each do |x| ans += 1 if x >= k && x % k == 0 && x / k <= n end k += 1 end puts ans ``` ```rb while k <= n a.each do |x| ``` ここの二重ループが $O(N^2)$ となってしまいますので、**TLE**となります。 # Integer#prime_division https://docs.ruby-lang.org/ja/latest/method/Integer/i/prime_div
Railsのアプリケーションの新規作成からページを表示するまでの手順を徹底解説
## 概要
こんにちは。shun198です。
今回はRailsアプリケーションの新規作成からページを表示させるまでの手順を解説したいと思います。## 前提
rubyのバージョンは2.6.6
Railsのバージョンは6.0.5
linuxの基本的なコマンドは知っている
RailsではじめてWebアプリケーションを作成する
MacOSを使っている(zshを使っている)
ローカル(Mac)上でページを表示します## アプリケーションの作成からWebページの表示方法
### アプリケーションを作成
ターミナルを開いてRailsのアプリケーションを任意のフォルダ内に移動して作成します。
今回私はqiita_appという名前で作成しますが、アプリケーションの名前は自由に決めてください。
ターミナルで
“`
rails new
“`
と打つと大量のファイルが生成されます。ls -lでリスト化して見てみると以下の通りです
“`
❯ ls -l
-rw-r–r– 1 shun staff 1967 6 4 17:08 Gemfile
-rw-r-
【Ruby on Rails】migrationファイル change・up/downの使い分けについて
## はじめに
カラムの追加や削除をしたり、テーブル内の情報を変更する際にmigrationファイルを追加して対応することがある。その時に、基本的な記述として、、、
“`ruby
def changeend
“`
“` ruby
def upend
def down
end
“`
という2つのパターンがある。厳密には、ファイル名の付け方(クラス名の付け方?)、“rails g migration <クラス名>“で入力されるクラス名によって、上のどちらのパターンのメソッドでファイルが生成されるらしい。
ただ、このメソッド changeとup/downの違いがいまいちわからなかったのでまとめておく。間違いがありましたら、コメントいただけますと幸いです。喜んで修正します。
## changeとup/downの違い
違いとしては、“メソッドの中で 使用できる処理“に違いがあるらしい。
Rails公式ドキュメントには以下の処理がchangeメソッドでは使用できるらしい。現時点では、changeでサポートされているマイグレーション定義は以下のものだけで
プログラミングと出会って
## はじめに
エンジニアとして就職できたので、これを機に勉強を初めてからエンジニアになるまでのことを書いてみようと思う。
この文章は長いですけど、僕の思いを書いたので是非読んで欲しいなと思います。
10分ほどみなさんの時間を僕に時間をください。### 自己紹介
年齢:20代前半
学歴:高卒(大学中退)
職歴:正社員の経験なし## プログラミングを始める前に
まずプログラミングを始めたきっかけを話そうと思います。
当時、資格スクールに通っており、担当の先生に言われるがまま安定した収入とかっこよさに惹かれて公務員を目指しました。
今思えばそれがそもそも良くなかったのかなとも思っています笑
ただ、公務員の勉強は思ったよりもつまらなくて、元々勉強が好きではなかったため、友達とばかり遊んでまともに勉強をしていなかったです。
その結果もちろん受かりませんでした。
担当の先生に,「来年またチャレンジしよ」と言われましたけど、自分はまた勉強しないだろうから同じ結果になるのが分かっていた為、もういいですと言いました。
そこで担当の先生が勧めてくれたのがプログラミングです。## プログ
【RSpec】システムテストでcurrent_userが使えないことを解決する
## 記事の対象者
・RSpecのシステムテストでユーザーの情報を渡す方法を知りたい方
## 前提条件
Ruby 2.6.3
Rails 6.1.5**< gem >**
・capybara
・rspec-rails
・factory_bot_rails
・faker## 解決方法の手順
結論、この手順で進めると解決することができました!・rails_helperにDeviseを記述する(include)
・FactoryBotでUserモデルのダミーデータを作る
・システムテスト画面のbeforeでsign_userを記述する## 私がハマったところ
devise機能のcurrent_userをテストでも使用できる思っておりました。
しかし、エラーが出てしまうため、アドバイスをいただいたところ、下記のことが判明しました。**current_user はテスト項目が通らない**
ということで、deviseのヘルパーを使用してuser情報を渡す方法がありました。
1つずつ手順を書いていきます。## rails_helperにDeviseを記述する(incl
四捨五入、切り捨て、切り上げをしたい(Math)
## はじめに
現在、独学でJavaScriptを勉強中です。
`Mathオブジェクト`で躓いてしまったのでまとめてみました。## よく使うMathオブジェクト
`Math.round` ・・・四捨五入する(戻り値 数値)
`Math.round()メソッド`は次のような挙動をする。
・小数点部分が0.5以上であれば、次に大きい整数へ切り上げ
・小数点部分が0.5以下であれば、次に小さい整数へ切り下げ
“`javascript
Math.round(5.34); //結果: 5
Math.round(6.8); //結果: 7
“`
`Math.floor` ・・・切り捨てる。数値以下の最大の整数を返す(戻り値 数値)
※少数の大小に関わらず切り捨てる。
“`javascript
Math.floor(5.34); //結果: 5
Math.floor(6.8); //結果: 6
“`
`Math.ceil` ・・・切り上げる。数値以上の最小の整数を返す(戻り値 数値)
※少数の大小に関わらず切り上げる。
“`javascript
Math.ceil(5.34); //結
素人がレビューせざるを得ない時
## 実務1年生が人生の先輩をreviewしないといけなくなった
私は素人である。今の会社に実務1年で転職して来た。
1年なんて経験は無いに等しいから、「未経験」と強調して面接は押し切った。
そしたらなぜか「今まで色々経験されてるので」とった理由で給与などもある程度色をつけてくれた。
そんな事はしなくてよろしい。私に過度な期待はしないで下さい。なぜなら過去に勝手に期待値上げられた後、「実は大した事ないですね」って、惨めな思いをした経験があるからです。
大した事ないと思ってたけど、実は結構やりなさるねあんた。そういったストーリーを、そういった展開を私は好む。80点が30点にではなく、時間の流れとしては、その逆が望ましい。
その私は今、SES出身の年上先輩をgithub reviewしている。
### 言葉の威力を再確認せよ
これまでの経験上、chatなどでやり取りする時はなるべく絵文字など装飾を使うようにして来た。
了解です、より了解です!
了解です!より了解です?以前の会社では絵文字使う事がmustになったぐらい、確かにこの手法は威力がある。果たして確かに、空気は
Rubyのspawnで生成したプロセスを終了できない罠と解決策
## 概要
Ruby言語から、コマンドラインツールを呼び出すときには、`system` や `open3` を使うが、非同期的に呼び出したい場合は`spawn` を使うことが多い。しかし、引数のこまんどに空白などの文字が入ると、シェル経由の実行になってしまい、プロセスIDを記録してプログラムを終了しようとしても、思ったように終了できないことがある。これを防ぐためには、コマンドに空白などの文字を入れず、引数を分割する。
“`ruby
pid = spawn(“command which you want to execute”)
“`↓
“`ruby
pid = spawn(“command”, “which”, “you”, “want”, “to”, “execute”)
“`## もう少し詳しく
Rubyでコマンドを非同期的に実行するためには、spawnを利用して、
“`ruby
pid = spawn(“command which you want to execute”)
“``detach` を呼び出せばいい。
“`ruby
thr =
RSpecでsessionメソッドを使えるようにするには?
## 背景
フレンドリーフォワーディングのテストをRSpecで行いたい。
編集ページのpathをsessionがちゃんと保持しているのかを確認するために、編集ページのpathと` session[:forwarding_url] `が一致していることをテストしたいが、sessionメソッドを使おうとしたらエラーが発生し解決に時間がかかったので、備忘録として投稿します。## 失敗したコード
“` spec/system/users_edit_spec.rb
RSpec.describe “Users”, type: :system do
describe ‘PATCH /users’ do
let(:user) { FactoryBot.create(:user) }
.
. #中略
.
it ‘ログインすると、編集画面にリダイレクトされる’ do
visit edit_user_path(user)
#↓ここでフレンドリーフォワーディングのテストをしている
expect(session[:forwarding_url]).to
【Rails+DynamoDB】Dynamoidの主な使用方法まとめ
# はじめに
[Dynamoid](https://github.com/Dynamoid/dynamoid)は[Amazon DynamoDB](https://aws.amazon.com/jp/dynamodb/)をRailsアプリケーションで利用するためのORMです。
Dynamoidを用いることで、ActiveRecordに近い感覚でDynamoDBにアクセスできるようになります。
この記事ではRailsアプリケーションにDynamoidを導入する手順と主な使用方法をまとめました。# 導入
Gemfileに以下を追記します。“`ruby:Gemfile
gem ‘dynamoid’
“`バージョンについて
AWS SDKとのバージョン互換性は次のようになっています。
| Dynamoid version | AWS SDK version|
|:-:|:-:|
| 0.x | 1.x |
| 1.x | 2.x |
| 2.x | 2.x |
| 3.x | 3.x |
【RubyMine】よく使う便利なショートカット10選
# はじめに
私は普段、[RubyMine](https://www.jetbrains.com/ja-jp/ruby/) というIDE(Integrated Development Environment)を用いてMacでRuby/Railsプロジェクトの開発をしています。
そんなRubyMineには便利なショートカットが数多くあります。
中でも、私が普段からよく使うショートカットを一部抜粋して紹介しようと思います。
すべてのショートカットを知りたい方は ▷[こちら](https://resources.jetbrains.com/storage/products/rubymine/docs/RubyMine_ReferenceCard_mac.pdf)。
# よく使う便利なショートカット10選| 記号 | 意味 |
|:-:|:-:|
| ⌃ |Controlキー|
| ⌥ | Optionキー |
| ⇧ | Shiftキー |
| ⌘ | Commandキー |
## 1. ⌘Click / ⌘B : 宣言場所 ・ 定義元参照
Commandキーを押しながら変数
ターミナル
620 cd /var/www
621 cd
622 cd /var
623 sudo chmod 755 www
624 cd www/
625 sudo git clone https://github.com/jojo232/cloud9.git
626 ls
627 cd cloud9
628 gem install bubler
629 gem install bundler
630 vim .gemrc
631 cd
632 vim .gemrc
633 rails -v
634 ruby -v
635 gem install rails -v 6.1.4
636 cd /var/www/cloud9
637 bundle install
638 sudo chown ec2-user:ec2-user .
639 bundle install
640 sudo chown -R ec2-user:ec2-user .
641 bundle i