- 1. Railsを使ったToDoリストの作成(7.CRUDのDelete機能)
- 2. Railsを使ったToDoリストの作成(6.CRUDのUpdate機能)
- 3. 【Rubyによるデザインパターン】コマンドパターンのメモ
- 4. [Rails]hidden_fieldとhidden_field_tagの違いについて![初心者]
- 5. Assert&Rubular
- 6. ヘッダーが日本語の巨大CSVを取り込んでみる
- 7. 文字列を配列に入れる方法
- 8. Railsを使ったToDoリストの作成(5.CRUDのCreate機能)
- 9. Python学習 基礎編 ~文字列を出力(表示)するには?~
- 10. AtCoder 茶色(400)になるまでにやったこと
- 11. 【Rails5】check_boxで任意の文字列を渡す方法(ガチ初学者向け)
- 12. Kinx 実現技術 – JIT: sljit の使い方
- 13. rubyクラスを利用したアプリ
- 14. [Rails]selfについての理解を深めたい[初心者]
- 15. enumを使用して投稿の公開設定をする(二択式)
- 16. 【RSpec】letを使用するメリット
- 17. rubyzipでディレクトリが圧縮できない事がある不具合を解決する
- 18. 【Rails】ジャンル&商品名の検索機能実装
- 19. 【Ruby】バイナリーサーチを用いた配列内の要素検索
- 20. Ruby oci8 で k:v形式のArrayでレコード取得
Railsを使ったToDoリストの作成(7.CRUDのDelete機能)
#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –
Railsを使ったToDoリストの作成(6.CRUDのUpdate機能)
#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –
【Rubyによるデザインパターン】コマンドパターンのメモ
#【Rubyによるデザインパターン】コマンドパターンのメモ
プログラムの設計力向上のため『Rubyによるデザインパターン』を読んでおり、気になるデザインパターンを、1つずつまとめています。
今回は、コマンドパターンについてまとめました。
[【Rubyによるデザインパターン】テンプレートメソッドパターンのメモ – Qiita] (https://qiita.com/yuki_0920/items/07382034dfb65f0a13a0)
[【Rubyによるデザインパターン】ファクトリーメソッドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/324c5536bf4e3d085f33)
[【Rubyによるデザインパターン】ストラテジーパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/87dc056952f71b88a287)
[【Rubyによるデザインパターン】コマンドパターンのメモ – Qiita](https://qiita.com/yuki_0920/items/46545
[Rails]hidden_fieldとhidden_field_tagの違いについて![初心者]
#どういう時に使用するの?
“form_with“や“form_for“を利用して、ユーザーに何かを打ち込んでもらい、送信してもらいたい時に便利なメソッドです。例えば、AmazonのようなECサイトで、ショッピングカートの商品を購入するとき。
ユーザーからすると、「確定ボタン」だけ押したいのに、再度“username“や“address“を打たなければならないのは面倒ですよね。
また、パラメーターを経由したいけれども、ユーザー側にその情報を隠しておきたい時などにも使えます。#使い方
““ruby:hidden_field
hidden_field :値の取得時に使用する名前(シンボル), :value => 実際に渡す値
#第一引数→name属性 #第二引数→value属性
““アクションで“hidden_field“で渡されたパラメータを受け取ることが出来ます。
ここで、controllerに記述する際に、フォームフィールドに紐づく値となっている為、記述方法は
“par
Assert&Rubular
# Document\_Links
– [チャート式ruby-IV(assert\_equal)](https://qiita.com/daddygongon/items/f6cea87314ee26e130ea)
– [チャート式ruby-appendix-V(rubular)](https://qiita.com/daddygongon/items/5e2de543400fe56be768)# テスト駆動開発
## assert\_equal
とりあえず,equalかどうかを調べる関数を書いてみる.
“`ruby
def assert_equal(expected, result)
return expected == result
endp assert_equal(1,1)
p assert_equal(1,2)
“`これで,
$ ruby assert_equal.rb
true
falseとなる.
## Colorize
trueとfalseは返すようになったが,パッと見で分かるようにしたい.
ヘッダーが日本語の巨大CSVを取り込んでみる
CSVファイルの取り込みが必要とする場面はかなり頻繁に出ていると思います。しかし数百メガ以上ファイルサイズだとサーバーの処理に影響出かねなません。そして取り込まれるファイルのヘッダーが日本語だと、実装のハードルが格段上がると思います。
# TL;DR
Demo用のRuby fileは下記のURLで見れます。
https://gist.github.com/jerrywdlee/55ba403f02651afc67dbda8185329780“`rb
# まずは日本語ヘッダーを英語に転換するlambdaを作成
headers_jp = %w[ID 名前 フリガナ 年齢 血液型 都道府県 携帯キャリア]
headers_en = %w[id name kana age blood state carrier]
headers_dict = headers_jp.zip(headers_en).to_h
converter = lambda { |h| headers_dict[h] }# CSV.foreacで1行ずつ取り込む
CSV.foreach(path, header
文字列を配列に入れる方法
##splitメソッド
文字列に使うことのできるメソッド。
文字列を分割して、配列に入れる事ができる。“`ruby
str = “Ruby PHP”
ary = str.split(”) #何で区切るか
#=>ary = [“Ruby”,”PHP”]
“`
(”)空白で区切ったり、(,)カンマで区切ったりを引数で指定できる。配列にすることで、使う事ができるメソッドが変わる。
`gets`で入力されたものを配列に入れるときにも使える。
Railsを使ったToDoリストの作成(5.CRUDのCreate機能)
#概要
本記事は、初学者がRailsを使ってToDoリストを作成する過程を記したものです。
私と同じく初学者の方で、Railsのアウトプット段階でつまづいている方に向けて基礎の基礎を押さえた解説をしております。
抜け漏れや説明不足など多々あるとは思いますが、読んでくださった方にとって少しでも役に立つ記事であれば幸いです。#環境
* `Homebrew: 2.5.10` -> MacOSのパッケージ管理ツール
* `ruby: 2.6.5p114` -> Ruby
* `Rails: 6.0.3.4` -> Rails
* `node: 14.3.0` -> Node.js
* `yarn: 1.22.10` -> JSのパッケージ管理ツール
* `Bundler: 2.1.4` -> gemのバージョン管理ツール“`:iTerm
$ brew -v => Homebrew 2.5.10
$ ruby -v => ruby 2.6.5p114
$ rails -v => Rails 6.0.3.4
$ npm version => node: ‘14.3.0’
$ yarn –
Python学習 基礎編 ~文字列を出力(表示)するには?~
こちらではPython学習の備忘録と、Ruby、JavaScriptとの比較も含め記載していきたいと思います。
プログラミング初心者や他の言語にも興味、関心をお持ちの方の参考になれば幸いです。####文字を出力(表示)するには?
**共通部分**
文字列は、必ず半角の「”」シングルクォーテーション、または「””」ダブルクォーテーションのどちらかで囲む必要がある。
記述がない場合はエラーになるので注意!
#####Python“`py:script.py
print(‘Hello World’)
“`#####Ruby
“`ruby:index.rb
puts ‘Hello World’
“`
#####JavaScript“`javascript:script.js
console.log(‘Hello World’);
“`
文の最後は「;」セミコロンで終わりにする。
* * *
#####Pythonにてクォーテーションの記述がなかった場合
“`
SyntaxError: invalid syntax
“`
「構文エラー:無効な構文」と
AtCoder 茶色(400)になるまでにやったこと
こんにちは、yukad2です。
この記事では私がAtCoderでRating:400になるまでに勉強したことをまとめています。# 0.初めてのコンテスト前
中学生の頃にC++ゲームプログラミングに挑戦しましたが、if, forが理解できる程度の知識でした。
大学1年で学習したRubyが(Cと比べて)非常に書きやすかったので、プログラミングの練習も兼ねて競技プログラミングを始めました。
1. [chokudaiさんの記事](http://chokudai.hatenablog.com/entry/2019/02/11/155904)を読んで、就活まで(2年以内)に緑~水色を目標にしました。
2. コードテストで入出力の確認をしました。
3. 過去問を何度か解きました。# 1. コンテスト
- 1回目
- 3完 Perf:681
- 2回目
- 2完 Perf:244
- 3回目
- 2完 Perf:196
全然できない、と焦りを感じて過去問でアルゴリ
【Rails5】check_boxで任意の文字列を渡す方法(ガチ初学者向け)
初投稿です。
初学者のため、参考程度に見ていただければ幸いです。至らない点、わかりにくい点などあればコメントで教えていただければ幸いです。
#version
Ruby 2.5.7
Rails 5.2.4.4#How to
まずチェックボックスフォーム機能を実装する際に、デファルトだとか機能ようなコードになると思います。(form_withを使う場合)“`
<%= form_with model: 変数, url:遷移先のパス do |f| %>
<%= f.check_box :カラム名,{オプション(クラス名など} %> ←チェックボックスを表示
<%= f.submit %>
<% end %>
“`このようにするとデフォルトで`”1″か”0″`が送られます。
“`
<%= form_with model: 変数, url:遷移先のパス do |f| %>
<%= f.check_box :カラム名, {オプション(クラス名など}, "true","fales" %> ←チェックボックスを表示
<%= f.submit %>
<%
Kinx 実現技術 – JIT: sljit の使い方
# sljit の使い方
## はじめに
こんにちは。皆さん、お元気でしょうか。
今日は JIT Compiler の話です。Just In Time Compiler 技術です。技術の紹介をして皆の役に立とうという気持ちもありますが、半分は **自分のための備忘録** の意味もあります。なにせ、情報が少なくて元のソースコードを解析しながら使っているので。
Kinx では `native` 関数を定義できる機能があり、いわゆる JIT 実行させています。ここで Kinx って何?な方は下記をご参照ください。**「見た目は JavaScript、頭脳(中身)は Ruby、(安定感は AC/DC)」**で頑張っているアレです。
* 参考
* 最初の動機 … [スクリプト言語 KINX(ご紹介)](https://qiita.com/Kray-G/items/ca08b6fb40d15dd0ec76)
* 個別記事へのリンクは全てここに集約してあります。
* リポジトリ … [https://github.com/Kray-G/kinx](h
rubyクラスを利用したアプリ
シンボルクラスとストリングクラスは同義と考える
hash = {“key” => “value”}
hash = {key: => “value”}###教訓
1.`attr_accessor :id, :name, :content` クラス外から参照、編集するために必要な処理
2. `@@xxx`はクラス変数。クラスを使うたびに定義される
3. `@xxx`はインスタンス変数。インスタンス毎に定義される
4. `@tasks << task(TASKクラスを利用したインスタンス)`ではインスタンス変数に、`task(TASKクラスを利用したインスタンス)`を配列の要素として代入している。※ハッシュを代入していると思っており、ハッシュのメソッドを探していた。 5. initializeはインスタンス作成時に動作する(主に変数の初期値設定) 6. クラス毎に用途を分けた方が良い。今回なら、TASKクラスはタスクを保存するため用途。TODOクラスはtaskインスタンスを扱う用途。 ``` class Task # コードを追加 attr_accessor :id, :n
[Rails]selfについての理解を深めたい[初心者]
#はじめに
プログラミングの超初心者です。
“self“への理解が全然できていないと感じたので、アウトプットも兼ねて、学んだことをまとめます!
それではいきましょう!!#selfって何のこと?
“オブジェクトそのものを指す特殊な変数“です。と、説明だけでは非常に分かりにくいですよね。
一緒に、どのように使用されているのか、確認していきましょう。#使用例
“`ruby:book.rb
class Book < ActiveRecord::Base def hoge #インスタントメソッド end def self.hoge #クラスメソッド end def author #インスタントメソッド self.hoge #インスタンスメソッドのhogeが呼ばれる hoge #インスタンスメソッドのhogeが呼ばれる self.class.hoge end def self
enumを使用して投稿の公開設定をする(二択式)
# はじめに
## やりたいこと
– 投稿機能に公開ステータスを持たせる
– デフォルトは非公開にする
– 公開設定をセレクトボタンで選択させる## やってみて
enum自体は非常に奥が深いモジュールだと感じましたが、私がやりたいことは簡単に実装できました。
ですので、この投稿は初心者でもすぐに実践できる内容になっていると思います。## 参考
[Rails公式リファレンス](https://api.rubyonrails.org/v5.2.3/classes/ActiveRecord/Enum.html)
[Pikawaka <【Rails】enumチュートリアル](https://pikawaka.com/rails/enum) # 手順 ## DB設計 ```ruby:db/migrate/create_item.rb class CreateItems < ActiveRecord::Migration[6.0] def change create_table :items do |t| t.string :title, nul
【RSpec】letを使用するメリット
最近、RSpecによるテストにおいて、インスタンス変数の代わりに「let」という機能を用いることができると知りました。
そこで、自分もletを使ってみようと考えたのですが、
「letを使うとどんなメリットがあるの?」
という疑問が湧いたので、備忘録としてまとめることにしました。今回、参考にさせていただいた記事を一番下にまとめていますので、気になる方はそちらをご覧ください。
同じような疑問を持っている方の参考になると幸いです。
# letの書き方
先ほども書きましたが、テストにおいて、インスタンス変数を「let」に置き換えることができます。今回はFactoryBotを使用している場合の書き方を紹介します。
“`ruby
#インスタンス変数を使用した場合
before do
@インスタンス変数名 = FactoryBot.create(:モデル名)
end#↓以下のように書ける!
#letを使用した場合
let(:メソッド名) { FactoryBot.create(:モデル名) }
“`# letを使用するメリットとは?
(以下の内容は、@j
rubyzipでディレクトリが圧縮できない事がある不具合を解決する
Ruby on Rails でディレクトリをzipで圧縮しようとしたときに遭遇したエラーのお話です。
[rubyzip](https://github.com/rubyzip/rubyzip)というgemを使って実装する際、ディレクトリをzip圧縮する[サンプルスクリプト](https://github.com/rubyzip/rubyzip/blob/9d891f7353e66052283562d3e252fe380bb4b199/samples/example_recursive.rb)が含まれていたので、
その通り導入してみたのですが…# サンプルスクリプトでは圧縮できなかった
大きく以下の問題でエラーが発生しました。(箇条書きですみません…)
1. 日本語のディレクトリ名を使った場合に文字化けする
2. ディレクトリの合計容量が大きかった場合に、処理が途中でコケる# 調整後のスクリプト
“`ruby:zip_file_generator.rb
require ‘zip’# This is a simple example which uses rub
【Rails】ジャンル&商品名の検索機能実装
#前提
ジャンルの一覧表示の中で検索したいジャンルをクリック or 検索フォームに商品名を打ち込んで「検索」ボタンをクリックすることで、searchアクションを実行します。ジャンルor商品名の検索結果を遷移後のsearch.html.erbで表示するような機能を実装していきます。検索結果画面には、該当する商品のレコード内容(商品写真や商品名など)をeach文で表示する形になります。モデル同士のアソシエーションなどの部分は省いていきます。
通常の検索機能の実装がしたい方は[こちらを参考にしてください(gemなし複数モデル対象の検索機能)]
(https://qiita.com/IsakiMatsuo/items/69f406d85dbd0ba62625)#####実装の条件、太文字は必須のカラムです(カラム名は違くても問題ありません、デフォルトでつくidカラムは一応記述しました)
・genresテーブル(PK:**id**、ジャンル名:**name**、ジャンル有効or無効:is_active(boolean))
・itemsテーブル(PK:**id**、ジャンルのid(FK):**
【Ruby】バイナリーサーチを用いた配列内の要素検索
配列内に任意の値が存在するかを確認するプログラムを作成します。
任意の値が配列内に存在しない場合は、「値は配列内に存在しません」と表示し、存在する場合は、配列の何番目にあるかを表示します。今回のプログラムではバイナリーサーチという、配列を2分割した検索方法を用います。
例えば以下のような配列がある場合、中央値である「3」から左右と比較して検索する手法です。
これにより検索したい値が「1」であった場合、「4,5」は比較を行わないため処理速度の向上につながります。“`java:ruby
array = [1, 2, 3, 4, 5]
“`## 回答例
“`java:ruby
def binary_search(array, number_of_elements, target)
left = 0 //配列の先頭の番号
right = number_of_elements – 1 //配列の末尾の番号
while left <= right //配列番号が逆転するまで繰り返し cente
Ruby oci8 で k:v形式のArrayでレコード取得
# Ruby oci8 で oracle接続して各行のデータをk:v形式のArrayで取り出す話
“`ruby
#!/home/user/local/bin/rubyrequire ‘oci8’
oracle = OCI8.new(‘id’,’pw’,’service’)
oracle.prefetch_rows = 100result = []
sql = “select * from table_name”oracle.exec(sql).fetch_hash(){|r| result << r.map{|colname,coldata| "#{colname} : #{coldata}"} } ``` `fetch_hash()`っていうふうに`()`を付けないとだめなのね。 レコードを普通にArrayで取り出したいときは`fetch()`。 oci8は癖があるな。mysql2のほうが扱いやすい。