- 1. nil にto_i to_s
- 2. 【初心者向け】Railsに出てくるsessionとは??
- 3. 配列の値 入れ替える
- 4. RubyでUMAPをできるgemを作った話
- 5. created_atとupdated_atの表示を変更する方法
- 6. Rubyで多次元ベクトルの内積を並列計算
- 7. RSpecを読む、駆け出しエンジニア。
- 8. VBA で Ruby を動かす
- 9. 【Ruby on Rails】booleanで実装するときとenumを使うときの違いは?(データ型一覧有り)
- 10. 二重ハッシュについて
- 11. バイナリーサーチ
- 12. Railsでカラムにnull制約を後から設定する
- 13. 【Ruby】ArrayとHashの便利メソッドまとめ(随時更新)
- 14. Python,Ruby,PHP,Java,JavaScript,Perlの自動試験(ユニットテスト)の比較
- 15. 【個人開発】テクノロジーをピラミッド構造で整理するアプリ「Technology Pyramid」を作りました
- 16. takeメソッドについて
- 17. enumで実装したラジオボタンのRspec
- 18. 【Ruby】ファイルのタイムスタンプを参照したい時
- 19. 【Ruby】ファイル名がパターンにマッチするか調べたい時
- 20. `a ||= 10` は `a = a || 10` じゃないよ
nil にto_i to_s
nilに対して、to_sやto_iをすることができました。
“`
n = nil
p n.to_i
p n.to_s# 0
# “”
“`
【初心者向け】Railsに出てくるsessionとは??
## 書いた理由
Railsの学習をしていて、sessionの使い方が分からなかったため記事にまとめてみました。
プログラミング初学者のため、間違えていることがあるかもしれません。ご容赦ください?## 環境
mac m1
Ruby 3.0.1
Ruby on Rails 6.0.3## sessionとは?
sessionとは主にログイン機能に使用されるもので、ログイン状態を維持させるものです。つまり、ステートフルな通信を実現させるための仕組みとなります。## sessionを使ってみよう!
1. sessionに値を保存する
セッションはハッシュと同じようにキーとバリューの組み合わせで値を保存します。“`
session[:user_id] = user.id
“`1. sessionの値を削除
デリートメソッドの引数にキーを与えて、該当する要素を削除します。“`
session.delete(:user_id)
“`
結果的にsessionの中身はnilとなります。## 注意!
sessionは基本
配列の値 入れ替える
配列の値を入れ替える式が理解できませんでした。
“`
numbers[indexMin], numbers[i] = numbers[i], numbers[indexMin]
“`
この式はnumbers[indexMin]とnumbers[i]を入れ替えています。
値を入れ替える方法は
“`
x = numbers[indexMin]
numbers[indexMin] = numbers[i]
numbers[i] = x
“`
上記のような形しか思いつきませんでしたが、
このような方法があると初めて知りました。
RubyでUMAPをできるgemを作った話
[![Gem Version](https://badge.fury.io/rb/umappp.svg)](https://badge.fury.io/rb/umappp)## はじめに
Uniform manifold approximation and projection ([UMAP](https://github.com/lmcinnes/umap)) はt-SNEとならんでよく使われる次元圧縮によ
created_atとupdated_atの表示を変更する方法
# created_atとupdated_atを日本時間へ変更する方法
config/application.rbに以下のコードを記述する
“`config/application.rb
config.time_zone = ‘Tokyo’
“`“`config/application.rb
require_relative ‘boot’require ‘rails/all’
# Require the gems listed in Gemfile, including any gems
# you’ve limited to :test, :development, or :production.
Bundler.require(*Rails.groups)module App名
class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defa
Rubyで多次元ベクトルの内積を並列計算
例として12次元ベクトルを前半、後半に分けて、前半の内積、後半の内積を2つのTheadを使って求める。2つの内積の和が求めたい内積の値となる。
前半の内積、後半の内積を計算するProc(クロージャー)を作ってQueueに放り込むコードは次の通り。
前半の内積、後半の内積を変数sumに蓄積したいが、この計算はThread安全に行いたいのでクリティカルセクションとしたい。
クリティカルセクションにしたいクロージャーは、Mutexオブジェクトのsynchromizeメソッドの引数に与えれば作ることができる。“`ruby
# 内積の計算を2Threadで実行。
ary0 = [0.4, 0.2, 0.3, 0.5, 0.2, 0.4, 0.5, 0.1, 0.2, 0.4, 0.5, 0.9]
ary1 = [0.1, 0.2, 0.2, 0.2, 0.3, 0.4, 0.4, 0.4, 0.5, 0.5, 0.5, 0.9]
sum = 0
lock = Mutex.new
q = Queue.new
[{:from => 0, :to => ary0.size/2},
{:from
RSpecを読む、駆け出しエンジニア。
## 駆け出し歴、1年5ヶ月
Railsで開発を行っている駆け出しエンジニアです。
RSpecでのテストを書いているのですが、自身がテストを書くときに意識している **文脈** について
共有したいと思い記事にしました。駆け出したばかりの頃の自分へ向けた内容になっています :walking_tone1:
## 例とするテストコード
下記のようなテストコードがありました。
今日はこれを日本語で読んで行きたいと思います。“`rb
describe “drink?” do
subject { UniversityStudent.new(age: age).drink? }context “19歳の場合” do
let(:age) { 19 }it “お酒を飲んではいけないこと” do
expect(subject).to be_falsey
end
endcontext “20歳の場合” do
let(:age) { 20 }it “お酒を飲んでもいいこと” do
expect(sub
VBA で Ruby を動かす
# はじめに
前回の記事で、~~会社支給のパソコンに~~`Ruby`をインストールすることに成功しました。https://qiita.com/superrino130/items/e2d7b039c8d91a373770
VBA最強ではありますが、速度やネットワーク関連でRubyを呼び出したいところです。
ここでは、次の記事を参照しています。
https://qiita.com/O_LUPAN/items/1ceb5c950ff40f3558ab
# VBAソース
“`VB:VBA
Option ExplicitPublic Sub puts_Ruby01()
Dim suji1 As String
Dim suji2 As String
Dim rb_file As Stringsuji1 = “3”
suji2 = “5”Dim WSH
Dim wExec
Dim cmd_str As StringSet WSH = CreateObject(“WScript.She
【Ruby on Rails】booleanで実装するときとenumを使うときの違いは?(データ型一覧有り)
# はじめに
Ruby on Railsでポートフォリオ作成にあたりテーブル定義書を作成したが、booleanで実装するときとenumを使うときの違いがわからなかったため調べた結果を記録に残しておく。
また、今後のためにデータ型はどんなものがあるのか一覧にしておくことで、調べる時間の短縮を図る。
(実際に何度も実装する内によく使うデータ型は自然と覚えていくと思うが、現時点ではそのレベル感には到達していないため、記録に残しておきます。)# データ型一覧
– string : 文字列(1 〜 255文字)
– text : 長い文字列(1 〜 4,294,967,296文字)
– integer : 整数型(4バイト)
– bigint : 整数型(8バイト)
– float : 数値(浮動小数点数)
– decimal : 固定長整数型(精度の高い小数)
– datetime : 日付と時刻(1000-01-01 00:00:00.000000 〜 9999-12-31 23:59:59.999999)
– time : 時刻 (-838:59:59 〜 838:59:59)
二重ハッシュについて
# 目的
二重ハッシュから任意の値を取り出す方法を記録する。## 二重ハッシュから任意の値を取り出す方法
取得したい値のキーまで連続して指定すると取得できます。ハッシュ[:取得したい値のキー名][:取得したい値のキー名]
<例>
user_data = [
{user: {profile: {name: ‘George’}}},
{user: {profile: {name: ‘Alice’}}},
{user: {profile: {name: ‘Taro’}}},
]
からnameキーの値を取り出すには、
user_data.each do |u|
puts u[:user][:profile][:name]
endもしくは、digメソッドを用いて
user_data.each{ |u| puts u.dig(:user, :profile, :name) }## 補足
digメソッドについては、
https://techtechmedia.c
バイナリーサーチ
# はじめに
バイナリーサーチについて、忘れないように記録を残す。## バイナリーサーチとは
ソート済みのリストや配列に入ったデータ(同一の値はないものとする)に対する検索を行うときに用いられる手法。
まず、中央の値を確認し、検索したい値との大小関係を用いて、検索したい値が中央の値の右にあるか、左にあるかを判断する。
それを繰り返し、片側には存在しないことを確かめながら検索していく方法。
1回の処理で選択肢が半分になるので、処理速度の向上が期待できる。## バイナリーサーチの利用法
def binary_search(array, right, target)
left = 0
while left <= right center = (left + right) / 2 if array[center] == target return center elsif array[center] < target left = center + 1
Railsでカラムにnull制約を後から設定する
# 目的
Postテーブルにある既存のtitleカラムに“`null:false“`を追加すること# 設定方法
### migartionファイルの作成
“`ruby
$ rails g migration ChangePresenseTitleOfPostscreate db/migrate/20221008061033_change_presense_title_of_posts.rb
“`### migrationファイル追記
“`20221008061033_change_presense_title_of_posts.rb
class ChangePresenseTitleOfPosts < ActiveRecord::Migration[7.0] def change change_column :posts, :title, :string, null: false end end ``` ### データベース反映 ```Ruby rails db:migrate ``` # まとめ 書き方としては ```ruby chang
【Ruby】ArrayとHashの便利メソッドまとめ(随時更新)
# はじめに
RubyのArrayとHashの便利メソッドをまとめてあります。
ぜひ辞書としてご活用ください。# Array
### 取得([], first, last, index, select, find)
– n番目の要素を取得
要素数を超えるとnilが返る
“`ruby
array = [‘red’, ‘blue’, ‘green’]
p array[1]
# => ‘blue’
p array[5]
# => nil
“`
– 後ろからn番目を取得
要素数を超えるとnilが返る
“`ruby
array = [‘red’, ‘blue’, ‘green’]
p array[-1]
# => ‘green’
p array[-5]
# => nil
“`
– 先頭・末尾を取得
“`ruby
array = [‘red’, ‘blue’, ‘green’]
p array.first
# => ‘red’
p array.last
# => ‘green’
“`
– indexを取得
要素が存在しないとnilを返す
“`ruby
array = [‘red’
Python,Ruby,PHP,Java,JavaScript,Perlの自動試験(ユニットテスト)の比較
Python,Ruby,PHP,Java,JavaScript,Perlの自動試験(ユニットテスト)の比較
# Python
https://qiita.com/_dakc_/items/e663359c81645bc4e65e
# Ruby
https://qiita.com/jnchito/items/ff4f7a23addbd8dbc460
# PHP
https://qiita.com/yamato1491038/items/7aa0168a6145749db78c
# Java
https://qiita.com/ryuutamaehara/items/c8efb304b73cc0542e6f
# JavaScript
https://qiita.com/jintz/items/61af86a12b53b24ef121
# Perl
https://perlzemi.
【個人開発】テクノロジーをピラミッド構造で整理するアプリ「Technology Pyramid」を作りました
>どうもaono1234と申します。記事がいいなと思ったら是非twitterフォローもよろしくお願い致します❗❗
Tweets by takeshi_program初めてのオリジナルアプリ【Technology Pyramid】(以下、TechP)ver 0.1をリリースすることができました。???
感無量です?
url: https://technology-pyramid.herokuapp.com/
github: https://github.com/TakeshiAono/technology_pyramid今回の記事はTechPの概要説明です。良ければプロトタイプですが使用してみて下さい。
:::note warn
次の記事で
– 企画過程
– 設計思想
– 要件定義
– バックエンドの実装について
– フロントエンドについて
について詳しく書きたいと思っています。おたのしみに?
:::## 1. TechP概要説明
### 1-1. Why?
皆さんは何か新しい技術を学ぶ際、このような事を感じたことはないでしょうか?
– 何が書いてあるの
takeメソッドについて
### takeメソッド
先頭から任意の数の要素を取得
使い方は下記の通り。(%w使用し、配列の要素をスペースで区切り配列を作成する)
“`
irb(main):040:0> %w(Ruby Python Java C Smalltalk Brainfuck)
=> [“Ruby”, “Python”, “Java”, “C”, “Smalltalk”, “Brainfuck”]
“`(takeメソッドで先頭から3つの要素を取得)
“`
irb(main):041:0> %w(Ruby Python Java C Smalltalk Brainfuck).take(3)
=> [“Ruby”, “Python”, “Java”]
“`
enumで実装したラジオボタンのRspec
# 概要
次のようなラジオボタンのどちらかを選択して、
「宣言する」を押すというところまでのRspecを作成しました。
ラジオボタンの作成につきましては、私の前回の記事を参照いただけますと幸いです。https://qiita.com/gogoserver578/items/2b5d13f62843b2158dc9
こちらのcapybaraの
【Ruby】ファイルのタイムスタンプを参照したい時
# 概要
内容が更新されていた場合のみファイルを処理したいなど、
タイムスタンプ情報を元にしてファイルを処理したい場合などがあります。
その場合は、
`File.mtime`メソッド,`File.atime`メソッド,`File.ctime`メソッド
を使って取得することができます。## 使用例
| 定義 | 動作 |
| —– | —- |
| File.mtime | 最終更新時刻を返す。 |
| File.atime | 最終アクセス時刻を返す。 |
| File.ctime | 状態が最後に変更された時刻を返す。状態の変更とは chmod などによるもの |### File.mtime
“`ruby
File.mtime(__FILE__) # => 2017-12-03 03:16:22 +0900
“`### File.atime
“`ruby
File.atime(__FILE__) # => 2017-11-28 22:38:44 +0900
“`### File.ctime
“`ruby
IO.write(“testfi
【Ruby】ファイル名がパターンにマッチするか調べたい時
# 概要
File.fnmatchメソッドを使用すると、与えられたファイル名がパターンにマッチするか確認できます。
特定のファイル名のみ受け付けるなどの処理に有効です。(特定の文字から始まるファイル名しか受けつけないなど)## 記載方法
* fnmatch(pattern, path, flags = 0) -> bool
* fnmatch?(pattern, path, flags = 0) -> bool例
“`ruby
%w(foo foobar bar).each {|f|
p File.fnmatch(“foo*”, f)
}
# => true
# true
# falsep File.fnmatch(“ruby*”, “rubytest.txt”) # => true
p File.fnmatch(“ruby*”, “javatest.txt”) # => false
“`## 注意事項
パターンで使用できるワイルドカードの一覧は以下の通りです。
正規表現ではないため注意が必要。| 指定方法 | 動作 |
| —–
`a ||= 10` は `a = a || 10` じゃないよ
## はじめに
Rubyを触り始めて結構長いのですが、今更ながら`||=`についての理解を間違えていることに気がついたため、この記事で理解を深めようと思います。## `||=` とは
自己代入の一種です。
例えば、`a ||= 10`という式は `a || (a = 10)`と解釈され、`aが偽もしくは未定義であれば10を代入する`という意味になります。
変数を初期化する際のイディオムの一種です。## 何を間違えていたのか
`a = a || 10`と解釈されると勘違いしていました。
`a += 10`や`a -= 10`などは`a = a + 10`、`a = a – 10`と解釈されるため、それと同じと思い込んでいました。## どう違うのか
再代入されるかどうかが違ってきます。
`a || (a = 10)`の場合、`a`が真であれば再代入されませんが、`a = a || 10`の場合、`a`が真であっても再代入が行われます。そのため、例えば以下のような、ある属性に代入した数を数えるようなコードがあったとすると、結果が違ってきます。
#### コード
“`rub