- 1. 新社会人が読むべき、初心者からRailsを始めて三ヶ月が経った人間の日記①
- 2. density
- 3. keisan3
- 4. keisan2
- 5. 配列をコピーする時の注意点
- 6. Ruby でかけっこのパズルを解く
- 7. 新人エンジニアに向けてのエール
- 8. Railsを使ってアプリを作る(基礎中の基礎)
- 9. rescueとrescue_fromの使い方
- 10. 【Ruby】ハッシュを使って条件分岐をスッキリさせよう
- 11. 20240406 日記 pipenvについて、githubのlockについて
- 12. 【Ruby】じゃんけんプログラム
- 13. Rails 6.0.3でRuby 2.6.6の環境構築
- 14. Railsでの命名の単数複数形使い分け
- 15. 【Rails】Ferrumを使ってHTMLをPDFへ変換してみた(wicked_pdfからの移行)
- 16. tailwind cssを導入しているプロジェクトにSystemSpecを導入・実行したらエラーが出る
- 17. macOS で glib2 gem がインストールできなかった
- 18. [マイグレーション]Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON columnの原因と解決策
- 19. Rubyのバージョンをアップグレードする方法
- 20. 【個人開発】自分以外の「死ぬまでにやりたいことリスト」が見れるサービスを作りました
新社会人が読むべき、初心者からRailsを始めて三ヶ月が経った人間の日記①
## 注意
仕事をやめ実家に帰ることとなった際、
兄に誘われた事をきっかけにRailsをやり始めた。
プログライミング?何それ?からの三ヶ月です。
つらつらと自分が分かった事、知ったことを羅列しておきます。
新社会人に教えていて、こいつどこでどうつまずいるのかよくわかんないなって思っている人は、何かの参考になるかも知れません。
※誤った情報もあるかも知れません。
# 学んでいった過程
### エンジニアにはインフラ、システム、フロントエンドなどがある。
・インフラエンジニアはシステムやインターネットを使用するために必要なサーバーやネットワークを開発、運用できるようにする仕事
・システムエンジニアはインターネット内のシステム全体の開発、設計をする仕事
・フロントエンドエンジニアはwebサイトやアプリの見た目を開発、設計をする仕事
webページで言うと、ログインしたり、お気に入りをしたり、投稿された動画が並ぶような開発をするのがシステムエンジニア、
それの見た目をしっかり作るのがフロントエンドエンジニア、
インフラエンジニアがいるからそのインターネットが使えてる。
そう言う認識です。
##
density
“`ruby:title.rb
import pandas as pd
import numpy as npr_res = 0.01 # 距離方向の分解能(m)
# DataFrameの作成
df = pd.DataFrame(columns=[‘r’, ‘theta’, ‘phi’])# r, theta, phiの値を生成するリスト内包表記
data = [{‘r’: r, ‘theta’: theta, ‘phi’: phi}
for r in [num * r_res for num in range(0, 1000)]
for theta in range(-30, 32, 2)
for phi in range(-30, 32, 2)]sin_th = np.sin(np.radians(df[‘theta’].astype(float)))
cos_th = np.cos(np.radians(df[‘theta’].astype(float)))
sin_ph = np.sin(np.radians(d
keisan3
“`ruby:title.rb
import pandas as pd
import numpy as np# DataFrameの作成
df = pd.DataFrame(columns=[‘r’, ‘theta’, ‘phi’])# r, theta, phiの値を生成するリスト内包表記
data = [{‘r’: r, ‘theta’: theta, ‘phi’: phi}
for r in range(4, 5) # rの範囲は1~10
for theta in range(-60, 62, 2)
for phi in range(-60, 62, 2)]# DataFrameにデータを追加
df = df.append(data, ignore_index=True)df[‘x’] = df[‘r’] * np.sin(np.radians(df[‘theta’].astype(float))) * np.cos(np.radians(df[‘phi’].astype(float)))
df[‘y’] =
keisan2
“`ruby:title.rb
import pandas as pd
import numpy as np# DataFrameの作成
df = pd.DataFrame(columns=[‘r’, ‘theta’, ‘phi’])# r, theta, phiの値を生成するリスト内包表記
data = [{‘r’: r, ‘theta’: theta, ‘phi’: phi}
for r in range(4, 5) # rの範囲は1~10
for theta in range(-60, 62, 2)
for phi in range(-60, 62, 2)]sin_th = np.sin(np.radians(df[‘theta’].astype(float)))
cos_th = np.cos(np.radians(df[‘theta’].astype(float)))
sin_ph = np.sin(np.radians(df[‘phi’].astype(float)))
cos_ph = np.cos(np
配列をコピーする時の注意点
# はじめに
Atcoder004 – Cross Sum(★2)の問題を解いている時、自分の考えている処理と異なる処理が行われた。具体的には、2次元配列をコピーする際、コピーする元の配列まで変化してしまうというエラーが発生した。自分の学習のメモとして、記事を書いた。
# コード
“`ruby
#1次元配列の場合
a = [1,3]
b = a.dup
b[0] = 2print a #[1, 3]
print b #[2, 3]#2次元配列の場合
c = [[1,2],[1,3]]
d = c.dup
d[0][0] = 2print c #[[2, 2], [1, 3]]
print d #[[2, 2], [1, 3]]
“`
# 解説
1次元配列の場合、配列をコピーしたものの要素を変更しても、元の配列は変化しない。しかし、2次元配列の場合、配列をコピーしたものお要素を変更すると、元の配列も変更されてしまう。
原因は、dupやcloneなどの配列を複製するコマンドは浅いコピーであることだ。浅いコピーの場合、コピー元の配列も変更する場合が生まれてしまう。今回の
Ruby でかけっこのパズルを解く
https://qiita.com/jpwgad/items/5431e452b4a65cba3862
# 問題
>一郎、二郎、三郎の三人で駆けっこをして、その結果を次のように言っています。
>
>一郎:「僕は一番じゃない」
>二郎:「僕は一番だ」
>三郎:「僕は二番だ」三人のなかで一人だけウソをついています。それは誰でしょう?
# Ruby で解いてみる
総当りで解いています。
0, 1, 2 でそれぞれ一郎、二郎、三郎を表しています。“`ruby
names = %W(一郎 二郎 三郎)
(0..2).each do |usotsuki| #嘘つきを選びます
table = [-1, 1, 2] #与えられた条件(否定は負にします)
#嘘をつかせます
table[usotsuki] = -table[usotsuki]
#可能性のある順位を配列にします
tmp = table.map { _1 < 0 ? [1, 2, 3] - [-_1] : [_1] } #順位を総当りでまわして判定します [1, 2, 3].permuta
新人エンジニアに向けてのエール
# 初投稿です。
4月も1週間過ぎたので、駆け出しエンジニアに向けてエールを送る意味で記事を執筆することにしました。
まず初めに軽い自己紹介から。
### About me
“`java:AboutMe.java
// 私は都内のIT企業で働く4年目のエンジニアです。
// 得意科目はフロントエンドの実装で、これまでにReact.jsやVue.jsなど
// のプロジェクトで要件定義~テストまで幅広く開発してまいりました。
// フロント以外にも、JavaやPHP、Pythonなども経験があります。
// 4年目といってもまだまだ勉強することだらけの毎日ですが、培ってきた知見や、
// つらかった経験、楽しかった経験などつらつらと発進できたらと思います。
// ということで。。。String greeting = “よろしくお願いします。”;
System.out.println(greeting);
“`### プログラミング学習について
未熟な私ですが、最近では後輩なども何人かできて、よく質問されるのが、「どうやって覚えてますか?」といった質問です。
その問いに対
Railsを使ってアプリを作る(基礎中の基礎)
# はじめに
今回は、railsをつかってアプリをつくり、デプロイまでの基本的な流れをまとめました。
基礎中の基礎という通り、画面にHello,worldを表示するだけのアプリになります。
エディタはVSCodeを用いて、バージョン管理をGitで行い、Renderへデプロイします。
使用ハードはmacbook m2です。
Rubyはデフォルトで入ってるので、Railsのインストールから始めます。# Railsをインストール
“`
$ gem install rails
“`-vを行うことでバージョンの指定もできます。
“`
$ gem install rails -v 7.0.4.3
“`次にbundlerをインストールします。
“`
$ gem install bundler
“`# アプリを作る
Railsプロジェクト用のenvironmentディレクトリを作ります。
“`
$ cd
$ mkdir environment
$ cd environment/
“`rails newを実行する。
このとき、PCにインストー
rescueとrescue_fromの使い方
# はじめに
先日、業務でrescueを使用したエラー処理を実装したので、備忘録として記事にしたいと思います。
この記事では、rescue と rescue_from の基本的な使い方をまとめてみました。
私自身、まだまだ未熟な経験の浅いエンジニアですので、誤った解釈をしている可能性もあります。もしそういった場合がありましたら、ぜひコメントでご指摘いただければ幸いです。
# rescue
`rescue` は、プログラム内で発生する特定のエラーを効果的に捕捉し、対処するための機能です。
これにより、エラー発生時の適切な対応やプログラムの安定稼働が可能になります。### 基本構文
`rescue` を使うことで、特定のエラーが発生した時に特定のコードを実行するよう設定できます。
基本的な形式は以下のようになります。“`ruby
begin# 例外が発生する可能性のあるコード
rescue [例外クラス]
# 例外が発生した時に実行するコード
end
“`### 使用例
例えば、ユーザーがデータベースに存在しない ID でアクセスしたときにエラ
【Ruby】ハッシュを使って条件分岐をスッキリさせよう
## これは何?
目の前にいる海外からやってきた人にあいさつしたいとき、ありますよね?
どうせあいさつするならその方の国の言語であいさつしたいものです。相手の国に合わせたあいさつをするときに便利なのが、条件分岐です。
この条件分岐をスッキリ書く方法を学んだので、アウトプットします。## やってみよう
レベル別に段階を踏んでやっていきます。
### if文
“`ruby
if country == ‘Japan’
hello = ‘こんにちは’
elsif country == ‘USA’
hello = ‘Hello’
elsif country == ‘France’
hello = ‘Bonjour’
elsif country == ‘Spain’
hello = ‘Hola’
elsif country == ‘China’
hello = ‘你好’
else
hello = ‘Hello’ # デフォルトの挨拶
end
“`もっとも地道に書く方法として、if文があります。
でも、いちいち`elsif country ==`、`
20240406 日記 pipenvについて、githubのlockについて
### pipenvについて
Pipfileというのがあって、そこに環境ごとに使うpipモジュールを書いていく
そして、`pipenv install` (`–dev`とかつけるとその環境用の)とすると、Pipfileに書かれたモジュールが閉じられた仮想環境向けにインストールされる、という仕組みらしいこれだけ聞くとrubyのbundlerに似てる、と思った。けどbundlerはグローバルにgemをインストールしてくる(`–path vender/bundle`とかでグローバルに入れない方法もあるのは知ってるけど)
Rubyではグローバルに入れる使い方だけど、それで問題になったことはない
一方pythonはなんとなく仮想環境つかってグローバルを汚染しないようにする、という感覚だったけど、何が違うのだろう?と不思議におもったのでまずBundlerで調べると、まさに自分が思った通りのことをまとめてくれている方がいた
参考:[bundle install時に–path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみよう #Ruby – Qiita
【Ruby】じゃんけんプログラム
# 仕様
– ユーザーにじゃんけんの手を選んでもらう。(0:グー、1:チョキ、2:パー)
– プログラム側では、ユーザーと勝負するじゃんけんの手をランダムに選ぶ。
– 「ユーザーが選んだじゃんけんの手」と「プログラムがランダムに選んだじゃんけんの手」を表示する。
– ユーザーが勝った場合は「あなたの勝ちです。」と表示する。
– ユーザーが負けた場合は「あなたの負けです。」と表示する。
– あいこの場合は 「あいこで」と表示させたあともう一度じゃんけんをさせる。
– あいこが3回続いた場合は、「3回あいこが続きました。また挑戦してください。」と表示させたあとにプログラムを終了させる。# 自分のコードとChatGPTのコードの比較
### 自分のコード
“`ruby:janken
# 配列とあいこカウント用変数の定義
janken_hands = [“グー”, “チョキ”, “パー”]
aiko_count = 0puts “最初はグー、じゃんけん…”
# 3回ループさせる
while aiko_count < 3 if aiko_count > 0
puts
Rails 6.0.3でRuby 2.6.6の環境構築
Ruby on Railsなるものを勉強してみようと『パーフェクトRuby on Rails【増補改訂版】』に手を出しました。
数年前の書籍だから完全に同じ環境を構築する必要も無さそうだけど、出来るだけ同じ環境で勉強してみることにしました。意外と手間が掛かったので記録しておきます。
書籍の「Appendix Railsの開発環境構築」に関しては特に問題は無かったので省略して、Railsのversion 6.0.3をインストールする部分を説明していきます。
まず普通に`gem install rails -v 6.0.3`をすると下記のようにnokogiriライブラリに関するエラーが出ます。
“` console
$ gem install rails -v 6.0.3
(中略)
Successfully installed activesupport-6.0.3
Building native extensions. This could take a while…
/home/user/.rbenv/versions/2.6.6/lib/ruby/2.6.0/ru
Railsでの命名の単数複数形使い分け
### モデル名
– **形式**: 単数形
– **例**: User, Product, Order
– **理由**: モデルは1つのオブジェクトを表すため
– **参考コマンド**: “`rails generate model Post content:text“`
(postsテーブルにtext型のcontentカラムを作成)### コントローラー名
– **形式**: 複数形
– **例**: UsersController, ProductsController, OrdersController
– **理由**: コントローラーは複数のリソース(モデルのインスタンス)を扱うため
– **参考コマンド**: “`rails generate controller Posts home about“`
(home,aboutアクションを持つPostsコントローラーを作成)### テーブル名
– **形式**: 複数形
– **例**: users, products, orders
– **理由**: 1つのテーブルには複数のレコー
【Rails】Ferrumを使ってHTMLをPDFへ変換してみた(wicked_pdfからの移行)
HTMLからPDFを生成する処理が上手く動かなくなってしまったため、
PDF生成ライブラリを`wicked_pdf`から`Ferrum`へ移行しました。
まだまだRails初心者なので、何か間違い等あればご指摘いただけると幸いです!## HTMLからPDFの変換処理に定番だった`wicked_pdf`
上記の通り、PDF生成機能の実装によく使われていたかと思います。
今回、私はRailsのバージョンを6から7へ引き上げて動作確認を行なった際に、
既存で実装されているPDF生成機能が動かなくなっていることに気がつきました。
なお、既存の実装内容は、viewテンプレート(hogehoge.html.erb形式のファイル)から
`wicked_pdf`を使用してPDFへ変換処理を行っていました。`wicked_pdf`自体は現在もサポートされているgemですが、
このgemは`wkhtmltopdf`というHTMLをPDFに変換するCLIツールに依存しています。
そして、この`wkhtmltopdf`は、2023年1月にGitHub上からリポジトリがアーカイブされており、開発終了
tailwind cssを導入しているプロジェクトにSystemSpecを導入・実行したらエラーが出る
– Rails 7.1.2
– tailwind css
上記を用いて開発しているプロジェクトにおいて、ModelSpecは実行できるが、SystemSpec実行時にエラーが出る。config/environments/production.rb
に以下を追記したら解決した記載があり、試したが効果なし
“`
config.assets.css_compressor = nil
“`
## 環境
Gemfile“`
group :development, :test do
gem “debug”, platforms: %i[ mri windows ]
gem ‘rspec-rails’
gem “capybara”
gem “selenium-webdriver”
gem “webdriver”
gem ‘factory_bot_rails’
gem ‘faker’
end
“`spec/rails_helper.rb
“`
config.before(:each, type: :system) do
driven_b
macOS で glib2 gem がインストールできなかった
# はじめに
Ruby で pango や poppler といった gem を使っているが,最新版(4.2.2)をインストールしようとしたらエラーが出てインストールできなかった。
エラーをよく見ると,これらが依存している **glib2** gem のインストールでコケているのだった。
**最終的には解決した**のでその記録。
環境は以下のとおり。
* macOS Sonoma 14.3.1
* ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin20]なお,poppler などの gem と,それが依存している glib2 gem のバージョンは揃っている(例えば poppler 4.2.2 は glib2 4.2.2 を使う)。
# glib2 のインストール失敗
“`terminal
gem install glib2
“`とやったら以下のように出て,インストールに失敗する。
“`
ERROR: Error installing glib2:
ERROR: Failed to bui
[マイグレーション]Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON columnの原因と解決策
# エラー文
テーブル作成のため、モデルとともに作成されたマイグレーションファイルに、型とカラム名を書き、`rails db:migrate`を実行した。するとターミナルが以下のようなエラーを吐き出した。
“`terminal
xxxxxx@yyyyyy testApp % rails db:migrate
== 20240404111608 DeviseCreateUsers: migrating ================================
— create_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled: (StandardError)Mysql2::Error: BLOB, TEXT, GEOMETRY or JSON column ‘profile’ can’t have a default value
/Users/code/Desktop/xxxxx/project_2.0/testApp/db/
Rubyのバージョンをアップグレードする方法
# はじめに
Rubyのバージョンをアップグレードする方法を記述します。
使用しているOSはMacOSです。
今回はHomebrewのインストールから、rbebvをインストール、それを用いてRubyのバージョンをアップグレードします。# Homebrewをインストール
“`
$ /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)”
“`
わたくしの場合はここで2つのコマンドを実行しろと言われたので実行しました。“`
$ echo ‘eval “$(/opt/homebrew/bin/brew shellenv)”‘ >> /Users/◯◯◯/.zprofile
$ eval “$(/opt/homebrew/bin/brew shellenv)”
“`brew -v で確認してみると、
“`
$ brew -v
Homebrew 4.2.16
“`
インストール完了。お次はrbenvをインストール。
“`
$ b
【個人開発】自分以外の「死ぬまでにやりたいことリスト」が見れるサービスを作りました
# はじめに
皆さま、こんにちは、すみ([@sumisumi2000](https://twitter.com/sumisumi2000308)) と申します。
2024 年 1 月 20 日より、オンラインプログラミングスクール RUNTEQ にて、Ruby on Rails を学習しています。2024 年 3 月 30 日にリリースしたアプリの紹介と開発の振り返りをまとめました!
アプリについての記事は初めてなので、温かい目で見ていただけると幸いです。# 目次
1. [作成経緯](#作成経緯)
2. [アプリの紹介](#アプリの紹介)
3. [技術構成](#技術構成)
4. [こだわったポイント](#こだわったポイント)
5. [開発の流れ](#開発の流れ)
6. [改善点](#改善点)
7. [開発を振り返って](#開発を振り返って)# 作成経緯
通っているオンラインプログラミングスクールで受講生がアプリを出し合おう!というイベントがあります。
そこに向けて、カリキュラムで行っていた Rails の復習と、カリキュラムであまり触れない CSS の学習を兼ねてア