- 1. [ruby] [paiza] 配列を扱う上での個人的な小ステップアップ
- 2. 【Rails】「… 続きを見る」という部分を作る。(truncateの実装とminitestの追加)
- 3. グループ機能全般で利用できるサイト
- 4. 記事投稿の「タイトル」を作りたいよ〜投稿内容に加えて
- 5. 【Ruby翻訳】実務でリーダブルコードはどう役に立つのか(インデント、コメント)
- 6. Ruby3(Rails7) / MySQL8 の構成をdocker-composeで構築する
- 7. bundle installしたときにUnfortunately, an unexpected error occurred, and Bundler cannot continue.が出た時の対処法
- 8. cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? の解決方法
- 9. rbenv installのエラーを解決
- 10. 【Rails】他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた件
- 11. 16進数から10進数への変換方法を学んだ
- 12. 新米エンジニアによるリファクタリングのすすめ-後編-
- 13. クラスについて学んだことまとめ
- 14. RubyのCSV出力でUTF8→S-JISに変換する時の文字化け対応
- 15. PV実装する際に使えるサイト
- 16. 表示速度を上げるための個人的な考察 画像読み込み編
- 17. 【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたいよ
- 18. 【Ruby】何度も繰り返してしまったエラー「undefined method `+’ for nil:NilClass (NoMethodError)」
- 19. Rubygemsの基本コマンド(インストール/アンインストール/確認)
- 20. 【R】複数のテーブルをまとめてYAML形式で保存する
[ruby] [paiza] 配列を扱う上での個人的な小ステップアップ
### はじめに
最近paizaをはじめました
完全なる初心者ですがアウトプットを兼ねて投稿しています### 文字と整数の組のソート (paizaランク C 相当)の問題にて
**問題**
nに整数が入力され、その後n回分「文字」と「整数」の組が空白区切りで入力される
「整数」で昇順に並び替える“`ruby
n = gets.to_i
w = {}n.times do
line = gets.split(‘ ‘)
# ここが自分は使ってこなかった記述でした
w[line[1].to_i] = line[0]
endw = w.sort
w.each { |ele| puts ele[1] }
“`
いつもはこうしていました
“`ruby
n.times do |i|
w[i] = gets.split(‘ ‘)
# 中身=> {0=>[“A”, “1”], 1=>[“B”, “2”]}
end
“`
これだといらない数字も配列に入っちゃうため扱いにくかったのですが、
上の例の中身は`{1=>”A”, 2=>”B”}`になるので欲しかった情
【Rails】「<投稿内容>… 続きを見る」という部分を作る。(truncateの実装とminitestの追加)
# はじめに
記事投稿サイトでよく見る「<投稿内容>… 続きを見る」という部分を作りたい。
なので作る!!!
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
|4 | minitest| 5.11.3 |
|5| minitest-reporters| 1.3.8|
# 一覧表示テンプレートに文字数制限と”続きを見る”リンクを追加
truncateメソッドにより文字数制限をして表示する。
続きをみるはlink_toメソッドにより投稿の詳細ページ(showテンプレート)に飛ぶようにする。
“`app/views/microposts/index.html.erb
<%= trunc
グループ機能全般で利用できるサイト
★グループ作成実装-アソシエーションメイン! Viweは簡単!
https://qiita.com/ki_87/items/5add92e34c639fe13ef0
★グループへの入退会機能-ネストがメイン! Viewの記述に注意!
https://qiita.com/ki_87/items/eb2d073c2dccbed42c5a
★グループメンバーへのメール送信機能-全体的に難しい! 覚えるしかない!
〜実装時は↓こっちの方が良い!〜
https://qiita.com/ki_87/items/67f8965e8de17e95ac1c
〜解説重視なのは↓こっちの方が良い!〜
https://qiita.com/annaaida/items/81d8a3f1b7ae3b52dc2b
※どちらのページも素敵なまとめ方でした!!! Ψ(☆ω☆)Ψ
★環境変数についてのサイト! 簡単・便利!
https://qiita.com/ki_87/items/82b28f89a8552506a169
https://qiita.com/yuichir43705457/ite
記事投稿の「タイトル」を作りたいよ〜投稿内容に加えて
# はじめに
SNS風のWEBアプリを元に、記事投稿サイトにしていきたい。
SNSだとタイトルは必要ないため、内容のみの実装していた。
そこで、投稿にタイトルを追加し、投稿内容と一緒にタイトルをつけてタイムラインに表示させるようにする。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
# カラムの追加
contentカラムのみ実装されていたので、titleカラムを追加する。
rails generate migration “Add「カラム名」To「モデル名」 カラム名:データ型
の順で投げるとchangeメソッドの中に自動でadd_columnを生成してくれる。“`言語名:ターミナル
$ rails generate migration AddTitleToMicroposts ti
【Ruby翻訳】実務でリーダブルコードはどう役に立つのか(インデント、コメント)
# はじめに
どうも、未経験からエンジニア転職し半年が経ちました。
今回も前回に引き続きリーダブルコードを元に実務ではどう役に立ちそうか、逆にこれはやめた方が良さそうなど考えていきたいと思います。今回は適切なインデントとコメントに関してです。https://www.amazon.co.jp/s?k=%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB+%E3%82%B3%E3%83%BC%E3%83%89&adgrpid=56076398369&gclid=Cj0KCQjwzLCVBhD3ARIsAPKYTcQ9BABns25tc2X99NY7Ymv4OkuqwRPWtwHjkHrAft2axqEo7Pg51nkaAmmiEALw_wcB&hvadid=591886305975&hv
Ruby3(Rails7) / MySQL8 の構成をdocker-composeで構築する
# はじめに
Dockerコンテナでローカルに環境構築をしたので
作業内容をメモとして残します。RailsAPIの挙動を確かめるために、構築したものです。
# 構成の概要
* Ruby: 3.1
* Rails: 7.0 (APIモード)
* MySQL: 8.0# ディレクトリ構成
作業前にディレクト・ファイルを用意しておきます。
“`zsh:ディレクトリ
.
├── Dockerfile
├── Gemfile
├── Gemfile.lock
├── docker-compose.yml
└── entrypoint.sh“`
# 設定ファイル
各種ファイルの設定していきます。
## docker-compose.yml
まずは複数コンテナを操作するdocker-composeから設定します。
ここではMySQLのパスワードを直書きしていますが
本来は環境変数をまとめる.envなどのファイルを
gitignoreで追跡除外して、GitHub上で
一般に公開されないように考慮するべきです。
(今回は行っていません)“`yml:doc
bundle installしたときにUnfortunately, an unexpected error occurred, and Bundler cannot continue.が出た時の対処法
環境
– MacOS Montrey 12.4
– Rails 6.0.5
– Ruby 2.7.6
– Bundler 2.3.16## エラー内容
“`
$ bundle install
“`不可解なエラーの発生
“`
— TEMPLATE END —————————————————————-Unfortunately, an unexpected error occurred, and Bundler cannot continue.
First, try this link to see if there are any existing issue reports for this error:
https://github.com/rubygems/rubygems/search?q=undefined+method+%60full_name%27+for+nil+NilClass&type=IssuesIf there aren’t any reports fo
cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running? の解決方法
## 前提
__環境__
Ruby 2.7系
Rails 6.1系## 結論
デスクトップからDockerのアイコンをクリックする等して再起動したら解決しました## 経緯
1. docker-compose up でサーバーを立ち上げようとする
2. A server is already running. と表示され立ち上がらない
3. 以下コマンドを実行
lsof -wni tcp:3000
4. 実行結果の「COMMAND」に「com.docke」と書いてある行のPIDをコピーして以下コマンドを実行(今思えばこれが誤りかと)
kill -9 xxxxx(コピーした数字)
5. docker-compose up
5. cannot connect to the docker daemon at unix:///var/run/docker.sock. is the docker daemon running?と表示される## 試したこと
“`
% sudo service docker stop
% sudo service docker start
“`
rbenv installのエラーを解決
# 経緯
Herokuへデプロイしていたら、Rubyのバージョンが合わなかったので、
バージョンの変更をしようとした。エラーの抜粋として
BUILD FAILED (macOS 12.1 using ruby-build
や
xcrun: error: invalid active developer path
が表示された。# 結論
上記のエラーで検索するとXcodeが最新版でないことが原因とのこと。# 解決策
ターミナルで下記コマンドで最新版にし、必要としていたRubyのバージョンを
無事インストールできました。~~~
$xcode-select –install
~~~# 参考記事
【Rails】他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた件
プログラミングを初めて3ヶ月。
備忘録としてつまづいたところを記載し、アウトプットツールとして活用していきます。ポートフォリオを作成し、学習段階で身につけたスキルだったはずですが
うっかり漏れていてメンターから指摘を受けたので再発防止、備忘録の為、記載します。# 他ユーザーの投稿やコメントを削除、他ユーザーの投稿を編集といった操作ができる状態になっていた。
編集ページのurlを直接打ち込んだり、削除リンクを検証ツールから書き換えることで可能なので注意しなくてはならない。
編集や削除といった操作を実装する場合、ログインユーザーのデータなのかチェックを挟む必要がある。# 直打ち禁止のコード
直打ち禁止対象のcontrollerを開き
(今回は、posts_controller.rb)“`ruby:posts_controller.rb
class PostsController < ApplicationController before_action :authenticate_customer!, except: [:show, :index] before
16進数から10進数への変換方法を学んだ
# はじめに
現在プログラミングを学んでいますが、【課題の中でOxBFは10進数では幾つになるか】というような、2進数・10進数・16進数を自分の頭でそれぞれ変換して回答しなければならない問題があり、どのように考えて変換するのかを調べた結果を備忘録として書き記します。下記のサイトがとても分かりやすくまとめてくださっており、学ばせていただきました。
参考:https://www.infraexpert.com/study/ip2.html# 10進数と16進数
10進数が【0〜16】の時16進数に置き換えると下記の図のようになります。![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2666919/7e98c70a-2047-e6d9-7abe-4f9b095e230e.png)
10進数の【10〜15】までは16進数では【A〜F】を数字として使用します。
そのままでは数字だけの時に10進数と区別がつかないので16進数では数値の先頭に【Ox】(ゼロエックス)をつけます。# 2進数か
新米エンジニアによるリファクタリングのすすめ-後編-
## はじめに
この記事は『[新米エンジニアによるリファクタリングのすすめ-前編-](https://qiita.com/Yporon/items/f5664677fedb9c5343c6)』の続きです。
前編を読まれていない方は、それを先に読むとより内容がわかりやすいと思います。## **リファクタリングの必要性を感じるコード**
早速ですが、怪しい香りのするコードについて具体的に解説していきます。
### **再代入を繰り返す変数**
“`ruby
def sample(text)
tmp = text.delete(‘円’)
tmp = tmp.delete(‘,’)
tmp = tmp.to_i
tmp = tmp > 500 ? tmp : tmp * 1.5
# なんらかの複雑な処理
tmp.to_s
end
“`再代入は変数の意味が無闇に変更されるため、コードが理解しづらくなります。
またコードを修正するために、いつ値が変更されたのかを特定する必要があり、修正に多くの時間を必要とします。
さらに、読み手を不用に混乱させてしまう
クラスについて学んだことまとめ
# はじめに
クラスについて勉強したことをまとめました!# 参考
プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで# クラスの定義方法
class クラス名
end
で定義します。クラス名は、キャメルケースで書くのが一般的です。
“`ruby:クラスの定義
class Userend
“`
# オブジェクトの生成方法
クラス名.newで生成します。
“`ruby:オブジェクトの生成方法
User.new
“`
# initializeメソッド
newメソッドでがオブジェクト生成されると、initializeメソッドが自動的に呼び出されます。
初期化を行いたい場合は、initializeメソッド内に処理を記述します。“`ruby:initializeメソッドの例
class User
def initialize
puts “hello”
end
end#initializeメソッドが呼び出されるため、”hello”が出力される
User.new #=>hello
“`
initializeメソッドは
RubyのCSV出力でUTF8→S-JISに変換する時の文字化け対応
UTF8で保存した?や、旧漢字といったものをSJISに変換して、そのまま出そうとエラーがでる。
そのため以下のように書けば、SJISに変換する時、文字化け対象は「?」で書きだすことでエラーが出ない。“`
text = utf8_dummy_data
CSV.open(“hoge.csv”, “w”, encoding: “SJIS”) do |csv|
csv << [text.encode(Encoding::Windows_31J, Encoding::UTF_8, invalid: :replace, undef: :replace)] end ``` 簡単なことなんだけど、検証とか調査に時間がかかったので記録しておきます。 よかったらいいね!? いただけると嬉しいです✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
PV実装する際に使えるサイト
★簡潔でわかりやすいです!
https://qiita.com/ryouzi/items/727063547da2432beda9
★少しだけ実装を多くしたパターンのやつでした!わかりやすいです!
https://qiita.com/ryo___eng/items/a525f80398210d0486b7
表示速度を上げるための個人的な考察 画像読み込み編
今回は私が開発したwebサービス(https://universitycommunity.herokuapp.com/) のページを読み込む速度を改善していきたいと思います。
ユーザーがサービスを利用する際に負担に感じる大部分はデザイン・表示速度の2つだと考えます。
なので今回は表示速度の改善を通じてより良いサービス開発に繋げていこうと思います。まずGoogle社が提供しているPageSpeed Insights(https://pagespeed.web.dev/?hl=ja) を用いて表示速度を測っていきます。
![スクリーンショット 2022-06-24 2.36.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1667538/0cb3d474-2491-a864-9e65-ae1eae0425cf.png)
モバイル版の表示速度スコア
![スクリーンショット 2022-06-24 2.37.43 1.png](https://qiita-image-store.s3.ap-north
【Rails】javascriptで入力フォーム(textarea)の高さを自動で変えたいよ
# はじめに
textareaの高さが固定の場合、改行していくと前の文章が埋もれていってしまい、かなりUXが悪い。
これを改善するために、Javascriptを導入し、改行に合わせて高さが自動で変わるようにしていく。
意外と一連の流れを記載している記事が少なかったため、かなり殴り書きだが投稿する。ただし、自身が実施した流れのため環境によって要不要がある。
使用環境は以下の通りである。
| No | 項目 | 内容 |
|—:|————-|————|
| 1 | OS | Mac |
| 2 | Ruby | 2.6.3 |
| 3 | rails | 6.0.4 |
| 3 | turbolinks| 5.2.0 |
| 3 | webpacker | 4.0.7 |**変更前(右のスクロールバーが出る)**
![gif2.gif](https://qiita-image
【Ruby】何度も繰り返してしまったエラー「undefined method `+’ for nil:NilClass (NoMethodError)」
## 概要
Ruby初心者の私が、ここ最近勉強中に何度も発生させてしまったエラーについて書きました。
難しいエラー内容ではないかと思いますが、なんか前もこのエラー出たな。。。となったので、備忘録として残すことにしました。### エラー再現コード
“`rb
numbers = 1..5numbers.each do |number|
# 1~5まで順に足しあげながら繰り返し処理する
sum += number
puts sum
end
“`### エラー内容
「+」 メソッドは、nilクラスに定義されていませんという意味のエラーメッセージ。
“`rb
$ undefined method `+’ for nil:NilClass (NoMethodError)
“`
「-」の場合も発生しました。
“`rb
$ undefined method `-‘ for nil:NilClass (NoMethodError)
“`
### 原因と解決策
– 原因
eachメソッドのブロック内の変数sumを、メソッド外で定義していないため。– 解決策
each
Rubygemsの基本コマンド(インストール/アンインストール/確認)
## はじめに
Ruby用のパッケージ管理システムであるRubygemsの基本コマンド(インストール/アンインストール/確認)について記事を書きます。
自宅のMacにchefを導入しようと試みる過程でgemを触っていて、パッケージの確認やインストール等をする機会があり、そこでコマンドの使い方を調べていたことが記事を書く動機になります。## コマンド一覧
### Gemのインストール
“`zsh:コマンド
gem install <対象のGem>
“`“`zsh:実行例
% gem install chef
Fetching aws-eventstream-1.2.0.gem
Fetching multi_json-1.15.0.gem
Fetching uuidtools-2.2.0.gem
Fetching aws-sigv4-1.5.0.gem
Fetching little-plugger-1.1.4.gem
Fetching vault-0.17.0.gem
Fetching rubyntlm-0.6.3.gem
〜〜〜省略します〜〜〜
“`### イン
【R】複数のテーブルをまとめてYAML形式で保存する
Rでデータを保存するときには、CSV形式などでテーブル1つを1ファイルで保存することが多いですが、複数の表をYAML形式で1つのファイルにまとめて保存することができます。
### テーブルをYAML形式で保存する
まず、1つのテーブルの保存です。
“`R:write_table1a.R
library(tidyverse)
library(yaml)table1 <- data.frame(a=c(1,2,3),b=c(10.3,11.6,12)) write_yaml(table1, "table1a.yaml") ``` 保存されたファイルはテキストになっていますので、テキストエディタなので読むことができます。 ```YAML:table1a.yaml a: - 1.0 - 2.0 - 3.0 b: - 10.3 - 11.6 - 12.0 ``` 列単位のベクトルになっています。 行数が多くなると、行単位で保存した方がテキスト見る場合読みやすいように思います。 ```R:write_table1b.R write_yaml(transpose(as.list(