- 投稿日:2019-10-12T23:58:18+09:00
cronでpmsetを複数登録する
以前seleniumでchrome自動操作を定期的に行う処理をしたいたが、macのシステム環境設定からのスケジュール設定数には限界があることを知りこの機会にまとめておく。
問題点
見ればわかるが起床またはスリープ解除はそもそも1つしか設定できない。解決策
調べたらmacでは電源の操作をpmsetで行うらしい。
簡単な例文は下記になる# 現在設定されているスケジュール確認 pmset -g sched # 1回のみ実行.以下は起動させる場合 # ほかに sleep, wake, shutdown, wakeorpoweron がある. sudo pmset schedule poweron "10/20/11 18:00|00" # 繰り返し実行.曜日は MTWRFSU の部分集合で記述する sudo pmset repeat shutdown RF 07:50:00GUIじゃ最大2個のスケジュールしか登録できないが、pmsetとcronをうまく組み合わせれば実際何個でもスケジュールを登録できる!
注意する点
これでうまく行くかと思いきや、cronでpmsetが起動しなかった。
エラー文にはpmsetってそもそもroot権限でしか作動しないらしい。
なのでsudoのcrontabでスケジュールやらを設定する。# rootにログイン sudo su # rootとしてcronを書く crontab -e実際に書いてみよう
例文は下記になる。
0 1 * * * /path/to/script1 1 1 * * * pmset repeat shutdown MTWRFSU 01:02:00 wakeorpoweron MTWRFSU 02:59:00 0 3 * * * /path/to/script2 1 3 * * * pmset repeat shutdown MTWRFSU 03:02:00 wakeorpoweron MTWRFSU 00:59:00これを解釈すると
1. 01:00にscript1を実行する
2. 01:02にパソコンをシャットダウンさせることと、02:59にパソコンを起動させるスケジュールを01:01に登録する
3. 02:59にパソコンが起動する
4. 03:00にscript2を実行する
5. 03:02にパソコンをシャットダウンさせることと、翌日00:59にパソコンを起動させるスケジュールを03:01に登録することで原点に戻る上記の原理でいくらでも定期的な命令を実行できるわけだ!
素晴らしい!以上!参考になったサイト
https://apple.stackexchange.com/questions/56635/schedule-multiple-wake-up-times-for-mac
http://kapibara3kapibara3.blogspot.com/2019/03/pmsetmac.html
- 投稿日:2019-10-12T23:30:36+09:00
【Rails】scaffoldを使用したRailsアプリケーションの生成手順
先日、scaffoldを初めて使ってみたのですが、めちゃめちゃ便利だったので、使用手順を中心に記事を書かせていただきます。
おそらく「scaffoldってなんだ?」という方もいらっしゃると思うので、まずはscaffoldについて簡単に記載します。
scaffoldとは?
Railsの開発に必要なルーティング、コントローラ、ビューの作成に加え、基本的なアクションの設定なども自動ですべてやってくれる便利ツールのこと
→もちろん、これを使って世の中に出すアプリケーションをつくるのは違う(というより無駄が多い)と思いますが、個人的には試しに機能を実装するための試作品をつくる上で、ベースとなるRailsのアプリケーションをなるべく工数かけずに作りたいと思っていたので、最近めちゃめちゃよく使っています。
ということで、以下scaffoldを使用したRailsアプリケーションの生成手順について記載しますので、もしよかったら参考にしてみてください。
scaffoldを使用したRailsアプリケーションの生成手順
<想定読者>
Railsを使用したアプリケーション開発の初学者
または、これからRailsを使用したアプリケーション開発を行いたいと考えている方<環境やバージョン>
・MacOS
・Rails 5.2.3まずは、通常通りrails newでrailsアプリケーションを作成しましょう。
※例ではtodoリストのアプリケーションをつくる想定で「todo_list」というアプリケーション名にしています。ターミナル$ rails new todo_listコマンドを使用して作成したアプリケーション(todo_lint)へ移動
ターミナル$ cd todo_listいよいよ本題のscaffoldを使用した各種ファイルの生成を行います。
scaffoldを使用する場合、ターミナルで以下のコマンドを入力します。
$ rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型 2 …
こうすることにより、ルーティング、コントローラ、ビューのファイルだけではなく、モデルやマイグレーションファイルの作成も自動で行なってくれます。
※例では、content、priority、limitの3つのカラムを作成するための設定を行なっています。ターミナル$ rails g scaffold todo content:text priority:string limit:dateこれでscaffoldを使用したRailsアプリケーションの雛形は作成できました。
最後に、作成されたマイグレーションファイルを元に、データベースのテーブル作成を実施しましょう。ターミナル$ rake db:migrate以上でscaffoldを使用したアプリケーションの生成手順は終了です。
ローカルのサーバにアクセスすると、以下のページが表示されるかと思います。
「ん?たしかに必要なファイルは作成されたけど、ビューファイルに記載された内容がブラウザに表示されない、、」という方↓
そうなんです。各種アクションやビューに対応したルーティングの設定はされていますが、rootの設定はされないので、そこは個別設定しましょう。
config/routes.rbroot to: "todos#index"すると、以下のようにビューがきちんと表示されたかと思います。
どうでした?簡単でしたよね?
ちなみに、今回作成したtodoリストの場合のその他のビューはこんな感じになります。
<todoの新規作成ページ>
それでは、最後になりましたが、今回使用したscaffoldで生成された(もしくは追加、変更された)ファイルを記載しますので、今後のアプリケーション開発の参考にしてみてください。
①コントローラ
・app/controllers/todos_controller.rb
※作成されたコントローラのファイルには、自動で「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションが定義されています。そのため、これらのアクションを呼び出してデータの参照、作成、変更、削除をすぐに行うことができます。②ルーティング
・config/routes.rb
※ファイルの中には「resources :todos」という記述が追加されており、上記のアクションに対応したルーティングが自動で設定されます。③ビュー
・app/views/todos/index.html.erb
・app/views/todos/edit.html.erb
・app/views/todos/show.html.erb
・app/views/todos/new.html.erb
・app/views/todos/_form.html.erb
※コントローラーで定義されたアクションに対応するビューファイルが全て作成されています。④モデル、およびマイグレーションファイル
・db/migrate/2019xxxxxxx_create_todos.rb
・app/models/todo.rb
※scaffoldを使用した各種ファイルの作成時に指定した情報を含む、モデルおよびマイグレーションファイルが自動生成されています。【参考記事】
覚えておくと超便利!Ruby on Railsのscaffoldの使い方【初心者向け】
https://techacademy.jp/magazine/7204
- 投稿日:2019-10-12T23:30:36+09:00
【Rails】scaffoldを使用したアプリケーションの生成手順
先日、scaffoldを初めて使ってみたのですが、めちゃめちゃ便利だったので、使用手順を中心に記事を書かせていただきます。
おそらく「scaffoldってなんだ?」という方もいらっしゃると思うので、まずはscaffoldについて簡単に。
scaffoldとは?
Railsの開発に必要なルーティング、コントローラ、ビューの作成に加え、基本的なアクションの設定なども自動ですべてやってくれる便利ツールのこと
→もちろん、これを使って世の中に出すアプリケーションをつくるのは違う(というより無駄が多い)と思いますが、個人的には試しに機能を実装するための試作品をつくる上で、ベースとなるRailsのアプリケーションをなるべく工数かけずに作りたいと思っていたので、最近めちゃめちゃよく使っています。
ということで、以下scaffoldを使用したRailsアプリケーションの生成手順について記載します。
本当に簡単なので、もしよかったら実際に使ってみて下さい。scaffoldを使用したRailsアプリケーションの生成手順
<想定読者>
Railsを使用したアプリケーション開発の初学者
または、これからRailsを使用したアプリケーション開発を行いたいと考えている方<環境やバージョン>
・MacOS
・Rails 5.2.3まずは、通常通りrails newでrailsアプリケーションを作成しましょう。
※例ではtodoリストのアプリケーションをつくる想定で「todo_list」というアプリケーション名にしています。ターミナル$ rails new todo_listコマンドを使用して作成したアプリケーション(todo_lint)へ移動
ターミナル$ cd todo_listいよいよ本題のscaffoldを使用した各種ファイルの生成を行います。
scaffoldを使用する場合、ターミナルで以下のコマンドを入力します。
$ rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型 2 …
こうすることにより、ルーティング、コントローラ、ビューのファイルだけではなく、モデルやマイグレーションファイルの作成も自動で行なってくれます。
※例では、content、priority、limitの3つのカラムを作成するための設定を行なっています。ターミナル$ rails g scaffold todo content:text priority:string limit:dateこれでscaffoldを使用したRailsアプリケーションの雛形は作成できました。
最後に、作成されたマイグレーションファイルを元に、データベースのテーブル作成を実施しましょう。ターミナル$ rake db:migrate以上でscaffoldを使用したアプリケーションの生成手順は終了です。
ローカルのサーバにアクセスすると、以下のページが表示されるかと思います。
「ん?たしかに必要なファイルは作成されたけど、ビューファイルに記載された内容がブラウザに表示されない、、」という方↓
そうなんです。各種アクションやビューに対応したルーティングの設定はされていますが、rootの設定はされないので、そこは個別設定しましょう。
config/routes.rbroot to: "todos#index"すると、以下のようにビューがきちんと表示されたかと思います。
どうでした?簡単でしたよね?
ちなみに、今回作成したtodoリストの場合のその他のビューはこんな感じになります。
<todoの新規作成ページ>
それでは、最後になりましたが、今回使用したscaffoldで生成された(もしくは追加、変更された)ファイルを記載しますので、今後のアプリケーション開発の参考にしてみてください。
①コントローラ
・app/controllers/todos_controller.rb
※作成されたコントローラのファイルには、自動で「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションが定義されています。そのため、これらのアクションを呼び出してデータの参照、作成、変更、削除をすぐに行うことができます。②ルーティング
・config/routes.rb
※ファイルの中には「resources :todos」という記述が追加されており、上記のアクションに対応したルーティングが自動で設定されます。③ビュー
・app/views/todos/index.html.erb
・app/views/todos/edit.html.erb
・app/views/todos/show.html.erb
・app/views/todos/new.html.erb
・app/views/todos/_form.html.erb
※コントローラーで定義されたアクションに対応するビューファイルが全て作成されています。④モデル、およびマイグレーションファイル
・db/migrate/2019xxxxxxx_create_todos.rb
・app/models/todo.rb
※scaffoldを使用した各種ファイルの作成時に指定した情報を含む、モデルおよびマイグレーションファイルが自動生成されています。【参考記事】
覚えておくと超便利!Ruby on Railsのscaffoldの使い方【初心者向け】
https://techacademy.jp/magazine/7204
- 投稿日:2019-10-12T23:30:36+09:00
【Rails】scaffoldを使用したアプリケーションの作成手順
先日、scaffoldを初めて使ってみたのですが、めちゃめちゃ便利だったので、scaffoldを使用したRailsアプリケーションの作成手順について記事を書かせていただきます。
おそらく「scaffoldってなんだ?」という方もいらっしゃると思うので、まずはscaffoldについて簡単に。
scaffoldとは?
Railsの開発に必要なルーティング、コントローラ、ビューの作成に加え、基本的なアクションの設定なども自動ですべてやってくれる便利ツールのこと
【個人的に感じたscaffoldの良さ】
①コントローラの作成だけでなく、7つの基本アクションも自動で設定してくれる
scaffoldで作成されたコントローラには、「index」「show」「new」「edit」「create」「update」「destroy」の7つのアクションが自動で定義されています。そのため、自分でアクションを設定しなくても、すぐにデータの参照や新規作成、変更、削除を行うことができます。②作成されたコントローラに対応するルーティングも自動で設定してくれる
scaffoldコマンド後のroutes.rbには、「resources :コントローラ名」という記述が追加されており、新たに作成されたコントローラに対応するルーティングが自動で設定されています。③コントローラで定義されたアクションに対応するビューも全て自動生成してくれる
scaffoldを使用した場合、コントローラで定義されたアクションに対応するビューファイルも全て自動で生成されます。④必要なモデルおよびマイグレーションファイルも自動生成してくれる
scaffoldでは、コマンド入力時に「カラム名:データ型」を指定すると、指定された情報を含むモデルおよびマイグレーションファイルを自動生成してくれます。
そのため、あとは「$ rake db:migrate」コマンドを入力するだけで、データベースのテーブルも簡単に作成できます。(この辺りの詳細は後ほど)→もちろん、scaffoldを使って世の中に出すアプリケーションをつくるのはちょっと違う(というより逆に無駄が多い)と思いますが、個人的には興味のある機能を試しに実装するための試作品をつくる上ではめちゃめちゃ便利だなと感じています。
ということで、以下scaffoldを使用したRailsアプリケーションの作成手順について記載します。
本当に簡単なので、もしよかったら実際に使ってみて下さい!scaffoldを使用したRailsアプリケーションの生成手順
<想定読者>
Railsを使用したアプリケーション開発の初学者
または、これからRailsを使用したアプリケーション開発を行いたいと考えている方<環境やバージョン>
・MacOS
・Rails 5.2.3<作成手順>
まずは、通常通りrails newでrailsアプリケーションを作成しましょう。
※例ではtodoリストのアプリケーションをつくる想定で「todo_list」というアプリケーション名にしています。ターミナル$ rails new todo_listコマンドを使用して作成したアプリケーション(todo_lint)へ移動
ターミナル$ cd todo_listいよいよ本題のscaffoldを使用した各種ファイルの生成を行います。
scaffoldを使用する場合、ターミナルで以下のコマンドを入力します。
$ rails generate scaffold モデル名 カラム名1:データ型1 カラム名2:データ型 2 …
こうすることにより、ルーティング、コントローラ、ビューのファイルだけではなく、モデルやマイグレーションファイルの作成も自動で行なってくれます。
※例では、content、priority、limitの3つのカラムを作成するための設定を行なっています。ターミナル$ rails g scaffold todo content:text priority:string limit:dateこれでscaffoldを使用したRailsアプリケーションの雛形は作成できました。
最後に、作成されたマイグレーションファイルを元に、データベースのテーブル作成を実施しましょう。ターミナル$ rake db:migrate以上でscaffoldを使用したアプリケーションの作成手順は終了です。
いかがでした?めちゃめちゃ簡単じゃないですか?ちなみに、ここでローカルのサーバにアクセスしてみると、以下のページが表示されるかと思います。
「ん?たしかに必要なファイルは作成されたけど、ビューファイルに記載された内容がブラウザに表示されない、、」という方↓
そうなんです。各種アクションやビューに対応したルーティングの設定はされていますが、rootの設定はされないので、そこは個別設定しましょう。
config/routes.rbroot to: "todos#index"すると、以下のようにビューがきちんと表示されたかと思います。
これでもう完璧ですね!
参考までにですが、今回作成したtodoリストの場合、その他のビューはこんな感じになります。
<todoの新規作成ページ>
それでは、最後になりましたが、今回使用したscaffoldで生成された(もしくは追加、変更された)ファイルを記載しますので、もし興味があれば今後のアプリケーション開発の参考にしてみてください。
①コントローラ
・app/controllers/todos_controller.rb②ルーティング
・config/routes.rb
※ファイルの中には「resources :todos」という記述が自動追加③ビュー
・app/views/todos/index.html.erb
・app/views/todos/edit.html.erb
・app/views/todos/show.html.erb
・app/views/todos/new.html.erb
・app/views/todos/_form.html.erb④モデル、およびマイグレーションファイル
・db/migrate/2019xxxxxxx_create_todos.rb
・app/models/todo.rb【参考記事】
覚えておくと超便利!Ruby on Railsのscaffoldの使い方【初心者向け】
https://techacademy.jp/magazine/7204
- 投稿日:2019-10-12T22:33:33+09:00
AWS EC2作成からSSH接続
前提条件
AWSアカウントを持っていて、AWSコンソールにアクセスできる
EC2の作成
- AWSコンソールにアクセス
- サービスよりEC2へ
- インスタンスの作成
- Amazon Linux AMI 2018.03.0 (HVM), SSD Volume Type - ami-92df37edを選択して、インスタンスを作成
※キーペアを作成した場合、保存場所を忘れないように!
接続するのに使います作成後のダッシュボード画面
- 作成したインスタンスを選択後、接続ボタンをクリック
- 接続方法が表示される
一部抜粋
インスタンスにアクセスするには: SSH クライアントを開きます。 (PuTTY を使用した接続の方法を確認) プライベートキーファイル (***.pem) を見つけます。ウィザードが、インスタンスを作成するために使用するキーを自動的に検出します。 SSH が機能するには、キーが公開されていないことが必要です。必要な場合は次のコマンドを使用します。 chmod 400 ***.pem インスタンスに接続するには、パブリック DNS を使用します。 EC2インスタンス名が表示されている 例: ssh -i "プライベートキー" ec2-user@"EC2のパブリックDNS名" ほとんどの場合、上のユーザー名は正確ですが、AMI の使用方法を読んで AMI 所有者がデフォルト AMI ユーザー名を変更していないことを確認してください。 インスタンスへの接続に関してアシスタンスが必要な場合は、接続ドキュメントを参照してください。ターミナルでの接続
$ キーペアのあるディレクトリに移動 $ chmod 400 ***.pem $ ssh -i "***.pem" ec2-user@"EC2のパブリックDNS名" The authenticity of host 'ec2-*-*-*-*.ap-northeast-1.compute.amazonaws.com (*.*.*.*)' can't be established. ECDSA key fingerprint is SHA256:aDABcIu4l1SfKoEZwPpyGPcrXvmh2kiaIvaGxpkOazY. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'ec2-*-*-*-*.ap-northeast-1.compute.amazonaws.com,*.*.*.*' (ECDSA) to the list of known hosts. __| __|_ ) _| ( / Amazon Linux AMI ___|\___|___| https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/ 11 package(s) needed for security, out of 13 available Run "sudo yum update" to apply all updates. [ec2-user@ip**** ~]$$マークの左側が[ec2-user@ip**** ~]になっていれば、SSH接続が完了
- 投稿日:2019-10-12T22:10:16+09:00
Markdownをコンソール上でプレビュー
何がしたかったのか?
昭和生まれなもんで、GUIとかよう使われへん(エセ関西弁)
入手方法
https://github.com/tksmiura/miro
ここに入っているmiroというファイルをパスの通っておくところにコピーするだけ
実行方法
$ miro <markdown file>実行結果
listとかテーブルとかちょっと頑張った。
課題
- ユニコード対応(誰だ絵文字とか考えたやつ! https://qiita.com/yumetodo/items/54e1a8230dbf513ea85b)
- もう令和なので、考え方を改める
- 投稿日:2019-10-12T20:50:38+09:00
macOS Catalinaで(古い)VMware Fusion だと画面が真っ暗になった。
私は古いバージョンのVMware Fusion 7をしつこく使ってるんですが、macOS Catalinaにアップデートしたところ、仮想マシンの画面が真っ暗になってしまいました。
一回他のバージョンのVMware Fusionをインストールして云々という情報もあったので試したんですが自分の環境ではうまくいきませんでした。
最新版にするお金をかけるほど使ってないんですよね〜悩みますね。
ふと仮想マシンのライブラリ画面をみるとこちらではプレビューできてます。あれ?じゃぁ動いていないわけじゃなくて画面だけの問題??
そういえばVNC使える設定あったよなと設定してみました。
MacのほうはFinder>移動>サーバーへ接続から、vnc://127.0.0.1:5901で接続したところうまくいきました!
- 投稿日:2019-10-12T18:01:52+09:00
MacでRailsにgem mysql2をインストールする時のトラブルシューティング
はじめに
2019年10月現在MacでRailsアプリ開発時にDBにMySQLを選択する場合、デフォルトではmysql2というgemをインストールします。
その時にいくつかエラーに出会ったので、まとめておきます。実行環境
- macOS Mojave v10.14.6
- ruby v2.6.4
- Rails v6.0.0
MySQLのクライアントが必要
MacにMySQLクライアントをインストールしていない場合、以下のようなエラーが表示されます。
Fetching mysql2 0.5.2 Installing mysql2 0.5.2 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hogehoge/sample-app/vendor/bundle/gems/mysql2-0.5.2/ext/mysql2 /Users/hogehoge/.rbenv/versions/2.6.4/bin/ruby -I /Users/hogehoge/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20191012-40688-181m253.rb extconf.rb checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes checking for -lmysqlclient... no ----- mysql client is missing. You may need to 'brew install mysql' or 'port install mysql', and try again.Homebrewなどでインストールしておきましょう。
なお、2019年10月現在gemが対応しているバージョンは以下のようですので、採用バージョンに応じたものをインストールしましょう。This gem is tested with the following MySQL and MariaDB versions:
MySQL 5.5, 5.6, 5.7, 8.0
MySQL Connector/C 6.0 and 6.1 (primarily on Windows)
MariaDB 5.5, 10.0, 10.1, 10.2, 10.3(https://github.com/brianmario/mysql2 READMEより引用)
# MySQL最新バージョン(8.0) $ brew install mysql # 5.xの場合 $ brew install mysql@5.x5.x系の場合はmysqlコマンドを使えるよう以下のようにPATHを通しておきましょう。
$ export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"bundle install時のlinkerエラー
無事MySQLクライアントをインストールできていても、以下のようなエラーが起こる場合があります。
Fetching mysql2 0.5.2 Installing mysql2 0.5.2 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/hogehoge/sample-app/vendor/bundle/gems/mysql2-0.5.2/ext/mysql2 /Users/hogehoge/.rbenv/versions/2.6.4/bin/ruby -I /Users/hogehoge/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20191012-62886-155hohe.rb extconf.rb checking for rb_absint_size()... yes checking for rb_absint_singlebit_p()... yes checking for rb_wait_for_single_fd()... yes ----- Using mysql_config at /usr/local/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for SSL_MODE_DISABLED in mysql.h... yes checking for SSL_MODE_PREFERRED in mysql.h... yes checking for SSL_MODE_REQUIRED in mysql.h... yes checking for SSL_MODE_VERIFY_CA in mysql.h... yes checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes checking for MYSQL.net.vio in mysql.h... yes checking for MYSQL.net.pvio in mysql.h... no checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes checking for my_bool in mysql.h... no ----- Dont know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load ----- ----- Setting libpath to /usr/local/Cellar/mysql/8.0.17_1/lib ----- creating Makefile current directory: /Users/hogehoge/sample-app/vendor/bundle/gems/mysql2-0.5.2/ext/mysql2 make "DESTDIR=" clean current directory: /Users/hogehoge/sample-app/vendor/bundle/gems/mysql2-0.5.2/ext/mysql2 make "DESTDIR=" compiling client.c compiling infile.c compiling mysql2_ext.c compiling result.c compiling statement.c linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1 make failed, exit code 2以下がこのエラーの原因で、ざっくり言うとgemのビルド時に、必要なopensslライブラリを見つけられないために発生しています。
ld: library not found for -lssl詳細な原因は以下記事が大変参考になります。
https://qiita.com/HrsUed/items/ca2e0aee6a2402571cf6解決策としては、bundle install時に以下オプションでpathを指定する必要があります。
- --with-cppflags
- --with-ldflags
brew info
でインストールされているopensslを確認すると、自分の環境のLDFLAGSとCPPFLAGSのpathが確認できます。$ brew info openssl@1.1 openssl@1.1: stable 1.1.1d (bottled) [keg-only] ... For compilers to find openssl@1.1 you may need to set: export LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" export CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" ...こちらのpathを
bundle config
で設定してからインストールしましょう。$ bundle config --local build.mysql2 "--with-cppflags=-I/usr/local/opt/openssl@1.1/include" $ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl@1.1/lib" $ bundle install以上、自分が遭遇したエラー内容でした。
- 投稿日:2019-10-12T16:08:31+09:00
Macから毎朝メール(gmail)を送信しよう
ご挨拶
こんにちは。台風大丈夫でしょうか。2019/10/12
毎朝、天気などの情報がメールで配信されるといいなと思いまして、
まずはメールを毎朝配信する仕組みを作ってみました。
メールサーバとか、よくわからないのでGoogleさんを使います。全体像
- msmtpをbrewでインストール
- 設定ファイルの作成
- 送信するメールのテキストファイルの作成
- cronを仕込む
msmtpをbrewでインストール
$ brew install msmtp設定ファイルの作成
$ vi ~/.msmtprc設定ファイルの中身は以下の通り
host smtp.gmail.com port 587 user sample@gmail.com <- ここは自分のアカウントにして下さい password hogehoge from sample@gmail.com <- ここは自分のアカウントにして下さい tls on tls_starttls on tls_certcheck off auth on logfile ~/.msmtp.logパスワード情報入ってますので、権限を設定します。
$ chmod 600 ~/.msmtprc
あと、googleアカウント側の設定から [安全性の低いアプリの許可] をオン にして下さい。
送信するメールのテキストファイルの作成
$ vi ~/mailsample.txtテキストファイルの中身は以下の通り
From: sample@gmail.com To: tosample@gmail.com <- ここは送りたいメール宛先にして下さい Subject: test <- ここ1行あけて下さい Hello, This is test email. Thanks,cronを仕込む
毎朝7時15分にメールを送る設定にします。
$ crontab -evi開くので以下を保存します。
15 7 * * * bash -l -c 'cat /Users/testuser/mailsample.txt | msmtp -t'それでは、7時15分を楽しみに待ちましょう。
Thanks,
- 投稿日:2019-10-12T14:31:47+09:00
完全無料でクラウドストレージを構築する【NextCloud】
完全無料でクラウドストレージを構築する【NextCloud】
まえがき
この記事では完全無料でプライベートクラウドストレージサーバを構築することを目標とします。また、この記事でなるべく全てを完結できるように最低限の操作だけを書いています。ご了承ください。
構築目安:2時間(※アップデートやダウンロードで時間がかかるので)
この記事を読んでできること
- NextCloud(ストレージサーバ)の構築
- 固定ドメインの取得(Serveo)
この記事でしないこと
- SSL化(近日更新予定)
環境
構築した環境、準備したものは以下の通りです。VirtualBoxがあればWindowsでも大丈夫(なはず)です。
- macOS Mojave 10.14.6
- VirtualBox 6.0.12
- CentOS7 minimal iso(仮想マシンディスクイメージ)
仮想マシンを構築する
まず、VirtualBoxで仮想マシンを構築します。ここはあまりややこしいところは無いと思いますので簡単に要点だけ書いておきます。
1. 「新規(N)」をクリック。名前は適当につけてタイプは「Linux」、バージョンは「Red Hat(64-bit)」を選択します。
2. RAMですがNextCloudの公式には最低128MB、推奨は512MBと書いているので1024MBあれば十分でしょう。
3. ハードディスクはデフォルトの「仮想ハードディスクを作成する」、ファイルタイプもデフォルトの「VDI」にしておきます。
4. 物理ハードディスクにあるストレージは「固定サイズ」にします。(次で容量を設定しますが、後からでも変更可能です)
5. ファイルの場所とサイズはこの時点ではなんでもいいです。特に触る必要はありません。ここまでで一旦仮想マシンを「作成」します。
〜数分待機〜
6. 出来た仮想マシンを起動します。ダウンロードしたCentOS7 minimalをディスクイメージに選択し、「Start」します。
7. 「Install CentOS7」を選択。GUIが起動するので、言語を日本語にし「続行」します。
8. インストールの概要は特に触らなくていいでしょう。「インストール先」だけ一度中身を確認しないと次に進めないのでクリックし「インストールを開始(B)」します。
9. rootユーザのパスワードを設定します。
〜数分待機〜
10. 「再起動(R)」し、rootユーザでログインします。初期設定
この時点では、ネットワーク設定が初期設定のままで繋がらないのでネットワーク設定を変更します。今回はもっとも簡単なブリッジネットワークにしておきます。(VirtualBoxのネットワーク設定まとめはこちら)
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 ///ONBOOTをyesに変更 - ONBOOT=no + ONBOOT=yes # shutdown -h nowシャットダウンしたらVirtualBoxで「設定(S)」→「ネットワーク」→「ブリッジネットワーク」に変更し、再び起動します。これで外部ネットワークにも繋がるはずです。ちなみにここから長いコマンドをたくさん打つ必要があります。VirtualBoxのウィンドウではコピペができないので、SSH(パスワード認証)を有効にしてターミナルから操作すると楽でしょう。
# vi /etc/ssh/sshd_config //インストールが全て終わったらまたコメントアウトしておきましょう - #PermitRootLogin + PermitRootLogin # systemctl enable sshd.service # systemctl start sshd.service # ip a (IPアドレスを確認しておきましょう) //ターミナルなどからアクセス # ssh root@192.0.2.10NextCloudインストール
ここからが本題です。インストール途中で何かミスると嫌なので一度ここで(この後も適宜)スナップショットを取っておきましょう。
基本的に公式の手順に沿っていきます。# yum install -y epel-release yum-utils unzip curl wget bash-completion policycoreutils-python mlocate bzip2 # yum update -y 〜数分待機〜 // Apacheインストール # yum install -y httpd //ファイルを新規作成 # vi /etc/httpd/conf.d/nextcloud.conf <VirtualHost *:80> DocumentRoot /var/www/html/ ServerName example.serveo.net(exampleの部分は自由) <Directory "/var/www/html/"> Require all granted AllowOverride All Options FollowSymLinks MultiViews </Directory> </VirtualHost> # systemctl enable httpd.service # systemctl start httpd.service # yum install -y centos-release-scl # yum install -y rh-php72 rh-php72-php rh-php72-php-gd rh-php72-php-mbstring rh-php72-php-intl rh-php72-php-pecl-apcu rh-php72-php-mysqlnd rh-php72-php-pecl-redis rh-php72-php-opcache rh-php72-php-imagick 〜数分待機〜 # ln -s /opt/rh/httpd24/root/etc/httpd/conf.d/rh-php72-php.conf /etc/httpd/conf.d/ # ln -s /opt/rh/httpd24/root/etc/httpd/conf.modules.d/15-rh-php72-php.conf /etc/httpd/conf.modules.d/ # ln -s /opt/rh/httpd24/root/etc/httpd/modules/librh-php72-php7.so /etc/httpd/modules/ # ln -s /opt/rh/rh-php72/root/bin/php /usr/bin/php // MariaDBインストール # yum install -y mariadb mariadb-server # systemctl enable mariadb.service # systemctl start mariadb.serviceMariaDB初期設定
# /usr/bin/mysql_secure_installation Enter current password for root (enter for none): (空欄でEnter) Set root password? [Y/n] Y New password: (MariaDBのrootパスワード入力) Re-enter new password: (再度入力) Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y # mysql -uroot -p Enter password:(MariaDBのrootパスワード) MariaDB [(none)]> CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS nextcloud; MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON nextcloud.* TO 'username'@'localhost' IDENTIFIED BY 'password'; MariaDB [(none)]> FLUSH privileges; MariaDB [(none)]> quitNextCloudダウンロード
# wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.tar.bz2 〜数分待機〜 # wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.tar.bz2.md5 # tar xf nextcloud-15.0.0.tar.bz2 # cp -R nextcloud/ /var/www/html/ # mkdir /var/www/html/nextcloud/data # chown -R apache:apache /var/www/html/nextcloud # systemctl restart httpd.service # firewall-cmd --zone=public --add-service=http --permanent # firewall-cmd --reload # yum install -y redis # systemctl enable redis.service # systemctl start redis.service # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/data(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/config(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/apps(/.*)?' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.htaccess' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/.user.ini' # semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?' # restorecon -R '/var/www/html/nextcloud/' # setsebool -P httpd_can_network_connect onここで、ブラウザからhttp://(サーバのIPアドレス)/nextcloud/にアクセスすると初期設定画面が表示されます。管理者アカウントのユーザ名とパスワードを設定し、セットアップを完了します。これでNextCloudの完成です!
固定ドメインの取得
次は家の外からでもアクセスできるように固定ドメインを取得します。無料で取得できるドメインサービスはたくさんありますが、特に簡単にできると思ったServeoを使いたいと思います。これは特定のURLにSSHを行うだけです。さらにサブドメインも指定できるのでちょっとうれしいです。普通のSSHだと定期的な更新が必要そうなのでautosshコマンドをバックグラウンドで使いましょう。
# vi /var/www/html/nextcloud/config/config.php - 0 => '192.0.2.10', + 0 => '192.0.2.10','example.serveo.net' # ssh -R example(自由なサブドメイン):80:localhost:80 serveo.net //初回接続をして、ブラウザでhttp:/example.serveo.net/nextcloud/にアクセスできることを確認 Ctrl+C # yum install -y autossh # autossh -f -M 0 -R example(自由なサブドメイン):80:localhost:80 serveo.netこれで固定ドメインでのプライベートクラウドストレージの完成です!!お疲れ様でした〜
Tips
関連して使いそうなことをまとめておきます。
仮想マシンのバックグラウンド起動(Headless)
# VBoxManage startvm 仮想マシン名 --type headless仮想マシンの容量変更
//ホストマシンで VBoxManage modifyhd vdiファイル --resize 変更するサイズ(MB)autosshの切断
# pkill -9 autosshあとがき
あくまで私の環境での構築手順です。訂正、補足、こんなところでエラーが出たなどあればコメントいただけると幸いです。(ちなみに実際に使ってみると激遅なので実用的ではないかもしれません。ちょっと考えます...)
参考URL
- 投稿日:2019-10-12T11:08:33+09:00
macでGitHubからレポジトリをクローンできない時の対処法
- 投稿日:2019-10-12T09:48:54+09:00
brewでRictyがインストールできない!
はじめに
macでCatalinaがリリースされましたね!
皆さんはインストールしましたか??
私はリリース翌日にインストールしましたが、32bit対策を事前にしていたので、特に問題なく利用できています。
私は新しいmacOSがリリースされるたびにクリーンインストールをしていますが、brewでRictyをインストールした際にエラーが出たので、同じ症状に悩む人がいる可能性も考えて執筆しました。
結論を言うと何も解決できていません。
自分だけじゃないのか!と安心してください。症状
下記コマンドを実行するとエラーが出る。
command$ brew tap sanemat/font $ brew install sanemat/font/ricty Updating Homebrew... ==> Installing ricty from sanemat/font ==> Downloading http://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh ==> Downloading from https://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh curl: (22) The requested URL returned error: 403 Forbidden Error: An exception occurred within a child process: DownloadError: Failed to download resource "ricty" Download failed: http://www.rs.tus.ac.jp/yyusa/ricty/ricty_generator-4.1.0.sh調査結果
403Forbiddenが出ているので、アドレス先の有効性について調査。
http://www.rs.tus.ac.jp/
上記URLは東京理科大学教職員のHPらしい。アクセス可能
http://www.rs.tus.ac.jp/yyusa/
上記URLは東京理科大学に所属している遊佐泰紀助教のページらしいが、現在アクセス不可となっている。
researchmapで調べてみると2019年9月まで東京理科大学の嘱託助教と記載があるので、御退任された可能性がある。
そのため、東京理科大学上に置かれているシェルスクリプトにアクセスできなくなり、Download failedとなったと考えられる。結論
brewでRictyをインストールする際のシェルスクリプトが大学教員が作成したシェルスクリプトであったが、御退任に伴い、アクセス不可となった。
brew側にそれを伝える方法があればコメントください。
- 投稿日:2019-10-12T02:52:29+09:00
MacのTerminalの文字色変更
Terminalの文字が全て白色だと見づらいですよね。
この方法をとるとterminalに表示される文字のうち
現在のディレクトリ(フォルダ)が青く表示されます。
また、lsコマンドを実行した時も青になります。こんな感じです。(現在のディレクトリは〜です。ルートフォルダといいます)
手順1 ターミナルで以下入力
vi ~/.bash_profile手順2 キーボードiを押す(左下に「-- INSERT --」と出る)
手順3 ターミナルで以下入力
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
手順4 escキー押して:wqと入力、エンター
ターミナルが元の表示に戻るはずです。手順5 ターミナルで以下入力
vi ~/.bashrc手順6 キーボードiを押す(左下に「-- INSERT --」と出る)
手順7 ターミナルで以下入力。色は画像を参考に変更可
alias ls='ls -G'
alias ll='ls -lG'
alias la='ls -laG'
PS1='[\e[34m]\w [\e[37m]\$[\e[0m] '
PS1=〜の中の数値により文字色変更できます。
\e[34m]\wで現在のディレクトリ(フォルダ名)を青色、
\e[37m]\$で$マークを白色に指定している。なお、自分で打つコマンドの色はターミナルを開いて画面左上の
Terminal - Preferences - Profiles - Textの脇の白い
ボックスを押すと色を選べます。
- 投稿日:2019-10-12T01:12:12+09:00