Ruby関連のことを調べてみた2021年12月19日

Ruby関連のことを調べてみた2021年12月19日

Rubyで画像からテキストを認識する

# はじめに
テキストでいっぱいの画像があり、わからなくても意味はまだ知りたいと想像してください。その時にどうすれば良いでか。翻訳ツールを利用すると思い付きますね。翻訳したいのにどのように書かれているのかわからないので、その際に画像からテキストを取得する方法が必要になります。
それで今日はRubyで画像から文字を認識するを紹介したいと思います。
# 実装

画像からテキストを認識するため、`ImageMagick`と`Tesseract`を使います。
**ImageMagick**: Rubyに画像処理ツールです。

“`
# インストール(MacOS)
brew install imagemagick
“`

**Tesseract**: 光学式文字認識を使用してテキスト認識ツールです。現在、多くの言語をサポートしています。

“`
# インストール(MacOS)
brew install tesseract
# training dataはどこで保存しているか確認するコマンド
brew list tesseract
“`
training dataフォルダで画像からテキスト

元記事を表示

RubyのC拡張でサブディレクトリに配置したCファイルを使いたい! ー symbol lookup error を回避する

## はじめに

RubyのC拡張でバインディングを作成する場合、`ext/fooba` にCファイルを配置する。伝統的なRubyのGemはこのディレクトリにフラットにCファイルを展開するようだ。けれども、サブディレクトリを使いたい場合がある。具体的には Git submoduleなどで、バインディング先のCのライブラリを `ext/foobar` に配置してバージョン管理したいような場合だ。

その場合、`$INCFLAGS` や `$VPATH` を利用するという方法がよく紹介される。

“`
INCFLAGS << " -I$(srcdir)/libFooBar" VPATH << " $(srcdir)/libFooBar" ``` しかしこの方法は一見すると`rake compile`が成功するのだが、いざテストを実行すると、と symbol lookup error が発生する。そして `ldd` をしても特に足りない共有ライブラリなどはない。どうすればいいのだろうか? ## どうればいいのか? 一つの方法 インターネット上を探してもそれほど回答は多くない。

元記事を表示

【初心者向け】Ruby の Hash#each はブロックに何を渡す?

# 質問

Ruby の `Hash#each` はブロックに対して何を渡すか。

# 回答

うわー,これまたチョー初心者向けの質問やなあ,各要素のキーと値のペアに決まっとるやん。
だってほら,たとえば

“`rb
food = {morning: 3, evening: 4}

food.each do |time, amount|
p [time, amount]
end
# => [:morning, 3]
# [:evening, 4]
“`

ってなるやんか。

# 更問

その「キーと値のペア」ってどういうこと?
たとえば次のコードの結果はどうなる?

“`rb
food = {morning: 3, evening: 4}

food.each do |x|
p x
end
“`

# 回答

げっ,二つ渡されてるのにブロックパラメーターを一つしか書いてないときって,ええと・・・。
リファレンスマニュアルの「[ブロックパラメータの挙動](https://docs.ruby-lang.org/ja/3.0.0/doc/spec=2fcall.html

元記事を表示

unvt/equinox コンポーネントレビュー

これは[ベクトルタイル Advent Calendar 2021](https://qiita.com/advent-calendar/2021/vt)の第19日目です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/102082/0eedf77c-fe41-825d-fb58-552673e29507.png)

– 地図に自由を
– データに愛着を
– 現場に向かって

をビジョンとして進めている国連ベクトルタイルツールキット(UNVT)ファミリーですが、特に現場に向かって前進するときに重視しているのが Raspberry Pi の活用です。

なお、UNVTを用いる場合のサーバー選びについては、[サーバーの選び方 – ベクトルタイルをどう配備するか
](https://docs.google.com/presentation/d/1FFal8xxbGbSJrjk8CViYcsAXv9VfXdO9eGawKgdpuGo/edit?usp=sharing) も見ていただけると嬉しいで

元記事を表示

【Ruby のまずいコード】2022 年の日曜日はいくつ?

# お題

2022 年は日曜日がいくつあるか数えてください。

# コード

## コード 1

“`rb
require “date”

count = 0
(1..12).each do |month|
(1..31).each do |day|
begin
date = Date.new(2022, month, day)
rescue Date::Error
next
end
count += 1 if date.wday == 0
end
end

puts count
“`

## コード 2

“`rb
require “date”

count = 0
(Date.new(2022, 1, 1)..Date.new(2022, 12, 31)).each do |date|
count += 1 if date.sunday?
end

puts count
“`

# 講評

どちらのコードも,2022 年一年間のすべての日付を Date オブジェクトとして生成し,それが日曜日である場合にカ

元記事を表示

Ruby/Railsで画像に文字を入れ込む

こんにちは。エンジニアのronです。

SmartHRは、Rubykaigi 2021 Takeoutでスケジュールアプリを提供しました。
https://tech.smarthr.jp/entry/2021/11/02/204403

実はその中で、スケジュールページで設定した一言コメントがOGPに反映されるようにしていました。
これは、Twitterで自分の視聴予定をシェアしてワイワイ盛り上がってほしいという気持ちから実装したものです。

![スクリーンショット 2021-12-18 13.56.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/87285/a9252262-b996-5e2d-08cc-9761190ac618.png)

今回は、どうやって画像の生成を行っているのかを解説していきたいと思います。

## 画像の生成方法
Rubyで画像を生成する方法はいくつかあります。
– imagemagick
– Thinreports
– wkhtmltoimage
などが候補になりま

元記事を表示

そうだ、Batch処理を使おう!【Rails】【タグ機能】【Whenever】【cron】

# はじめに
こんにちは!DMM WEBCAMP Advent Calendar 2021 :christmas_tree: 19日目を担当させていただく@smasa1112です!

今回で初のqiita投稿ですのでお見苦しいところ多々あるかと思います
どうか温かい目で見守っていただけますと幸いです…

本日は初学者の方が中級者になるときに使うであろうBatch処理とそれを有効に使えるであろうタグ機能に関連することを書いていきます!

## 目次
1. [Batch処理とは](#anchor1)
1. [目標](#anchor2)
1. [完成系](#anchor2-1)
1. [ER図](#anchor2-2)
1. [実装](#anchor3)
1. [使用環境](#anchor3-1)
1. [タグ機能の処理](#anchor3-2)
1. [Batch処理](#anchor3-3)
1. [最後に](#anchor4)
1. [参考記事](#anchor5)

元記事を表示

我流プログラマは、点字メーカーチャレンジのお題に、ちゃんと答えられるのか?

この記事はアドベントカレンダー「Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- Advent Calendar 2021」の19日目の記事として作成しました。

#目次
[1.はじめに](#1-はじめに)
[2.ソースコード](#2-ソースコード)
[3.ロジックの解説](#3-ロジックの解説)
[4.コードのアピールポイント](#4-コードのアピールポイント)
[5.苦労したところ](#5-苦労したところ)
[6.さいごに](#6-さいごに)

#1. はじめに
 kazkuraと申します。初Qiita記事投稿、初アドベントカレンダー参加です。至らぬ点が多いかと思いますが、何卒ご容赦いただけますと幸いです。

 簡単に自己紹介ですが、回路設計・EMC設計という仕事をしており、プログラミングは趣味でやっております。Rubyについては、逐次ググって使い方を覚えた、「我流な」プログラマとなります。

 そんな人間でも、今回のお題にちゃ

元記事を表示

RailsでFace APIを扱うので噛み砕いてみた◎

## はじめに
RailsでFace APIを扱う記事が少なく実装に一手間かかってしまったので、
初歩的ですが今後同じように開発する方がスムーズに実装できるようにこの記事が手助けになれば幸いです!m(_ _)m

## この記事に期待できること

– RailsでFace APIを扱うためのコードを理解できる
– リクエストするデータについての理解が深まる(おまけ)

前提としてREST APIについての知識があればより理解してもらえると思います。

## Face APIについて
本題に入る前にFace APIとは?の説明をしておきます。

Microsoftが提供するAzure APIと呼ばれるサービスの一つです。

公式サイトは[こちら](https://azure.microsoft.com/ja-jp/services/cognitive-services/face/)
Face API詳細については[こちら](https://westus.dev.cognitive.microsoft.com/docs/services/563879b61984550e40cbbe8d/o

元記事を表示

【Rails】ログイン、ログアウトって結局なに?

# 概要
Railsのログイン関連処理について、
Railsチュートリアルの第8章をもとに整理。

## 環境
ruby 3.0.2
rails 6.1.4

## ログイン関連の用語

### HTTP
– ステートレスなプロトコル
– ブラウザページを移動した時に、ユーザーのIDを保持しておく手段が無い

### session
– 半永続的な接続
– コンピュータ間(ブラウザとサーバの間)に設定する
– HTTPプロトコルより上の階層のため、HTTPの特性とは別に接続を確保できる
– sessionメソッド:ブラウザを閉じると自動的に終了する一時セッションを作成。

### cookies
– ユーザーのブラウザに保存される小さなテキストデータ
– ページ移動しても破棄されないので、ユーザーID等を保存可能
– アプリケーションは、このcookiesのデータを使用してDBから情報を取り出せる
– cookiesメソッド:ブラウザを閉じても終了しないセッションを作成。

## ログイン機能の実装

### RESTfulなセッション
セッションをRESTfulなリソースとしてモデリ

元記事を表示

Ruby on Railsでアプリを作る【Progateまとめ】

#はじめに
まずは、railsがしっかり起動するかを確認する。
以下、全てターミナルで作業する。
Macの人はSpotlightでターミナルを検索して、表示させる。

##railsのインストール確認
“`terminal
rails -v
“`
これで、「Rails is not currently installed on this system.」と表示されたら、railsがインストールされていないので、インストールする。

##インストール方法
“`terminal
gem install rails
“`
これでインストールされるはずだが、「You don’t have write permissions for the /Library/Ruby/Gems/2.6.0 directory.」と表示される場合は、こちらのやり方がおすすめです。
非常に丁寧に記載されており、初心者の私でも躓くことなくrailsをインストールすることができました。
https://qiita.com/nishina555/items/63ebd4a508a09c481150
https:/

元記事を表示

RubyのTimeクラスを理解する

# 目的
コーディングテストのオブジェクト指向問題において、クエリの処理などの時間を使用するものが多いためまとめる

# DateクラスとTimeクラス
– Dateクラス
– ***日付のみ***を扱いたい場合に使用
– Timeクラス
– ***日付と時刻***を扱いたい場合に使用

# Timeクラスよく使うメソッド

## parse メソッド
時間の文字列からTimeクラスオブジェクトに変換

“`ruby
time_str = “2021/11/5 14:00:32”
time_obj = Time.parse(time_str)
=> 2021-11-05 14:00:32 +0900
“`

## Time オブジェクト同士減算
– 時間の差を出したい時がある
– Timeオブジェクトに変換して、減算してあげることで差が求まる
– 結果は秒数のFloat型で変換

“`ruby
time1 = “2021/11/5 14:00:32”
time2 = “2021/11/5 15:42:32”
time1_obj = Time.par

元記事を表示

【Rails】LINE API の Webhook を使用してリッチメニューの切り替えをしてみた!!PF[LINE API]

# 概要
PFで**LINE Messaging API**を使用して通知サービスを作成しました。
その際に、ユーザーがLINE画面で設定や最新情報を受け取ることができるようにしました。
今回は`リッチメニューの切り替え`についてまとめます。

#Webhookとは

>Webhookとは、Webアプリケーションに対して、特定のイベントが発生したら別のWebアプリケーションに通知を発行するよう利用者が指定する仕組み。HTTPのPOSTリクエストを利用する。

https://e-words.jp/w/Webhook.html

###友達登録時
![1639715013543.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2133440/d41234b6-078e-4795-6d36-16821c06b2f8.jpeg)

###タッチした後(タッチしてもらうと)
![S__37134358_new.jpg](https://qiita-image-store.s3.ap-northeast-1.am

元記事を表示

Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- 18日目

## 概要
本記事は[Rubyプログラミング問題にチャレンジ! -改訂版・チェリー本発売記念- Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby-challenge)に、18日目として参加したものです。
ローマ字で与えられる入力値を点字に変換し出力するプログラムを作成しました。問題の詳細は[こちら](https://github.com/JunichiIto/tenji-maker-challenge)をご確認ください

## PR
私のPullRequestは[こちら](https://github.com/JunichiIto/tenji-maker-challenge/pull/25)になります

## コードの解説
ざっくりと書いたコードについて解説していきます。
まずもって、今回実装対象のto_tenjiメソッドに関わる実装は以下のとおりです。

“`ruby
class TenjiMaker
# 点字配列のindex順は、ドメインとしての点字のナンバリングと同じ順で扱う
TENJI_

元記事を表示

paiza(PHP)でよく使う処理をまとめてみた

#はじめに
rubyからスタートして約4か月。最近は次の仕事でよく使われるPHPを勉強している。paizaでよく使われる入力値の仕方をまとめてみました。

###➀入力値の取得
####ruby
“`
hoge = gets
“`
####PHP
“`
$hoge = fgets(STDIN);
“`

###➁空白や改行が与えられる場合
####ruby
“`
hoge = gets.chomp
“`
####PHP
“`
$hoge = trim(fgets(STDIN));
“`

###➂➁を配列で取得したい場合
####ruby
“`
hoge = gets.chomp.split
“`
###PHP
“`
$hoge = explode(” “,trim(fgets(STDIN)));
“`

##おわりに
学習していくうちに追加していこうと思います。
間違っていたらご指摘お願いします(笑)

てかセミコロンのつけ忘れてしまう。。

元記事を表示

【Ruby のまずいコード】数値が全て一定範囲に収まっているか

# お題

引数として浮動小数点数(Float オブジェクト)の配列を受け取り,それらの数値がすべて 0 以上 1 以下であるかどうかを返すメソッドを書いてください。

# コード

## コード 1

“`rb
def all_ge0_lt1?(numbers)
numbers.each do |number|
unless (0..1).cover?(number)
return false
end
end
true
end
“`

メソッド名は「greater than 0, less than 1」から名付けました。もっと良い名前があるかもしれませんが,本記事では命名については不問とします。

## コード 2

“`rb
def all_ge0_lt1?(numbers)
numbers.all?{ |number| (0..1).cover?(number) }
end
“`

# 講評

## コード 1

素朴な(ある意味で素直な)コードですね。
一つでも範囲外の要素が見つかったらそれ以降の要素については調べる必要が

元記事を表示

【初級者向け】RubyのStringとHashのeach系メソッドを体系的に整理

# 最初に

[Ruby Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ruby) Part2の18日目の記事です。
昨日は著名なigaigaさんの「[Ruby3.0キーワード引数仕様変更に伴う書き換えをしたので調べたことのまとめAdd Star](https://igarashikuniaki.net/diary/20211217.html)」でした!

RubyのアドベントカレンダーのPart2は枠が余ってたし、備忘用に書いたものがあったこともあり、編集して公開してみることにしました。
StringやHashのeach系のメソッドが体系化されて説明された記事を読んだことがないし、他の人も読んだことがなさそうだと思ったので、そういった内容です。
ちょっと表にしたり、ちょっと歴史的な流れを説明したりって感じですけど。

# Stringのeach系メソッドについて

配列(Array)やハッシュ(Hash)には`each`というインスタンスメソッドがあります。
対して、今の文字列(String)には`each

元記事を表示

refinarycms-blogの使い方

# 概要
refinarycms-blogの使い方について説明します
この内容について書かれている記事が少なかったので助けになれば幸いです
# 前提
既にrefinarycmsを導入したサイトにblog機能を追加する形で実装していきます
その実装方法については[こちらの記事](https://qiita.com/nanaho_mu/items/11c3c76b50217d4ad1be)で紹介しています
# 実装

## install
作成したrefinerycmsを導入したサイトのgemfileを開いて、一番下の行に下のコードを追加します。

“` :Gemfile
gem ‘refinerycms-blog’, git: ‘https://github.com/refinery/refinerycms-blog’, branch: ‘master’
“`

その後ターミナルで`bundle install`をしてください

※うまくいかない場合は`bundle update`をするとうまくいくことがあります

次にターミナルで以下のコマンドを実行して、blogのbackend

元記事を表示

refinarycmsの使い方

# 概要
・refinarycmsについての記事が少ない
・versionによってうまく動かない方法が多い
 などの理由で使い方を習得するのに苦労したので作成方法をまとめます

#準備
RefineryはImageMagickに依存するので、まずそれからインストールします。
OSXの場合一番簡単なのはHomebrewを利用する方法です。必要な作業は以下のコマンドを実行するだけです。

“` :terminal
$ brew install imagemagick
“`
# 実装
## install
Refinery gemをインストールします。

“` :terminal
$ gem install refinerycms
“`
## create application
新規のRefineryアプリケーションを作成するために、refinerycmsコマンドをアプリケーション名を指定して実行します。

“` :terminal
$ refinerycms refinary_sample
“`
※refinary_sampleはアプリ名なので自由に変えてください

#

元記事を表示

M1 MacでGCP Cloud RunのQuickstart(ruby版)試したので詰まったポイントをメモ

技術選定のため、

* GCP Cloud RunのQuickstartを
* M1 Macの環境で
* プログラミング言語はRubyで

試してみる。
基本的にはquickstartの手順通りやっていくが、詰まった点の解消方法を書く。

https://cloud.google.com/run/docs/quickstarts/build-and-deploy

なお、GCPの中でWebサービスをする上で初期の低負荷なフェーズであれば、Cloud RunのほうがGoogle App Engineよりもコストが安く上がるらしい。

https://dev.to/pcraig3/cloud-run-vs-app-engine-a-head-to-head-comparison-using-facts-and-science-1225

# 環境構築

* Python(Cloud SDKの動作のため)
* Cloud SDK
* Ruby(開発用)

## Python

cloud sdkのインストールにはバージョン3.5以上のPythonが必要である。(2.7.9も使えるけどもはや

元記事を表示

OTHERカテゴリの最新記事