iMacのSpotlightを再設定する

たまにSpotlightからアプリを立ち上げる(検索する)ことができなくなる
そうなったときはSpotlightを再設定するとよい

環境は macOS Sierra 10.12.6


システム環境設定で「Spotlight」を選択

「プライバシー」タグを選択

+(プラス)マークをクリック

Macintosh HD」を選んで選択ボタンをクリック
そうするとMacintosh HDがSpotlightの検索から除外される

「Spotlightの検索から除外する場所:」一覧からMacintosh HDを選択

-(マイナス)マークがアクティブになるのでそれをクリックしてMacintosh HDを除外から外す


これでSpotlightからアプリケーションを検索して立ち上げることができるようになる

windows10でrubyのgem、twitterを使ったらSSL_connectエラーがでた

普段、macでやっていることをwindowsでやってみたらうまくいかなかった。

require 'twitter'

client = Twitter::REST::Client.new do |config|
    config.consumer_key        = 'key'
    config.consumer_secret     = 'secret'
    config.access_token        = 'token'
    config.access_token_secret = 'token_secret'
end

tweets = [
    "tweet1",
    "tweet2",
  ]

tweets.each do |tweet|
    client.update(tweet)
    sleep(60)
end

エラー表示

C:/Ruby23-x64/lib/ruby/gems/2.3.0/gems/twitter-6.1.0/lib/twitter/rest/request.rb:37:in `rescue in perform': SSL_connect returned =1 errno=0 state=error: certificate verify failed (Twitter::Error)

調べてみたら対応策が見つかったので試してみた。

まず、証明書の場所を確認するため、powershellで下記のコマンドを入力する。

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE"

するとディレクトリとファイル名が表示される。

C:/Users/...省略.../ssl/cert.pem

現状これらのディレクトリやファイルはないので、各ディレクトリをつくって最後のsslディレクトリにpemファイルを収める。

powershellを使ってディレクトリをつくるため、powershellを管理者で立ち上げる。
Windowsマークを右クリックしてWindowsPowerShell(管理者)を選んでpowershellを起動させる。

下記のコマンドでディレクトリをつくる。
New-Item "C:/Users/...省略.../ssl" -Type Directory
(このときコマンド内のPATHはシングルもしくはダブルクォーテーションで囲むこと。)

下記のURLからpemファイルをダウンロード
https://curl.haxx.se/ca/cacert.pem

ファイル名をcacert.pemからcert.pemに変更する。

cert.pemファイルをsslディレクトリに移動する。

これでtweetできるようになった。

なぜSSLエラーになるようになったのか?
少し前にRubyの入れ替えをしたので、そのときへんなことをしてしまったのかもしれない。

環境

windows10
Ruby 2.3.0
twitter(gem) 6.1.0

参考にしたページ

RubyTwitterを SSLではじかれる件(Windows)
http://qiita.com/Accent/items/bc454e2fb653abedc77d

RailsTwitterREST APIを叩いた際のSSL証明書の認証エラー回避方法
https://teratail.com/questions/70035

Herokuに2台目のパソコンからデプロイする方法

普段はiMacで運営しているsinatraアプリをWindows10のラップトップパソコンからもデプロイする方法。
調べるときは「Heroku」「git」「 紐付ける」などで検索すると良い。
Rubyやgitをインストールしておく必要あり。

PowerShellからHerokuにログインする

環境によってはコマンドプロンプトやGit BASHを利用する。
PS C:\Users\name> heroku login

メルアドとパスワードを求められるので入力する

Enter your Heroku credentials:
Email: メルアド
Password: ************

Herokuからcloneする

PS C:\Users\name>heroku git:clone --app アプリ名

これでHerokuとgitが自動で紐づく
このとき、アプリ名のディレクトリがつくられる
一旦Heroku logout

アプリを更新する

ラップトップで更新したファイルをデプロイする

cdコマンドで新しくできたディレクトリに移動する

Heroku loginする

PS C:\Users\name\ディレクトリ名> git add .
PS C:\Users\name\ディレクトリ名> git commit -m "コメント"

git commit でエラーになる場合
エラーメッセージ

*** Please tell me who you are.

Run

git config –global user.email “you@example.com
git config –global user.name “Your Name”

to set your account’s default identity.
Omit –global to set the identity only in this repository.

fatal: unable to auto-detect email address (got ‘*@DESKTOP-**.(none)’)

指示通りにメルアドと名前を入力する。その際、ダブルクォーテーションは不要
PS C:\Users\name\ディレクトリ名> git config --global user.email メルアド
PS C:\Users\name\ディレクトリ名> git config --global user.name 名前

commitしてpush
PS C:\Users\name\ディレクトリ名> git commit -m "コメント"
PS C:\Users\name\ディレクトリ名> git push heroku master

終了後にHerokuからログアウト。

Ruby Hashに要素を追加する

新しくHashをつくる
hash = Hash.new("")hash = {}

要素を格納する
hash = { hoge: "item1" , hoo: "item2" }

要素を追加する
hash = { bar: "item3" } #これだと変数hashが上書きされてしまう
p hash #=> { :bar => “item3” }

なので要素を追加するときは
hash[:hoge] = "item1"
hash[:hoo] = "item2"
とする。
こうすれば
p hash #=> { :bar => “item3”, :hoge => “item1”, :hoo => “item2” }
となる。

Ruby 2.4.0

ターミナルで文字絵が重なって表示される

るびまを読みながら配列の利用方法を勉強していたら、ターミナルで"□"が重なって表示されてしまった。
Rubyist Magazine - Ruby ではじめるプログラミング 【第 2 回】

□が半角文字と認識されてしまうらしい。
ターミナルの設定を変更したら解決したのでそのときのメモ。

ターミナル > 環境設定 > プロファイル > 詳細
詳細の言語環境項目にある「Unicode 東アジアA(曖昧)の文字幅をW(広)にする」をチェックする。
これで全角表示されるようになった。

Mac OS 10.12.3
ターミナル version 2.7.1

Heroku Ruby version 確認 メモ

Heroku Topページ

Documentation

Reference

Dev Center

Writing a Dev Center Article

Languages

Heroku Ruby Support

Ruby version

現在の最新
Ruby 2.4.0 patchlevel 0
Ruby gems 2.6.8

Ruby sortメソッドでArgumentErrorになる

配列の中にnilがはいっているとsortしたときにエラーになる。

 

array = [3,1,nil,5,4]

p array.sort  #=>ArgumentError

array.delete(nil)  #=>[3,1,5,4]

p array.sort  #=>[1,3,4,5]

 

文字列の配列で空(" ")があるとき、sortすると" "は先頭にくる。

 

str = ["f","","e","c","a"]

p str.sort #=>["","a","c","e","f"]

str.delete("")

p str #=>["f","e","c","a"]

 

ruby 2.3.1