2019年9月7日土曜日

CentOS7でsoftwarecollectionsのRuby on Rails 4.2をrh-ruby24で使う方法

 CentOS7のsoftwarecollectionsではrailsの4.2を利用する事になる。

https://www.softwarecollections.org/en/scls/rhscl/rh-ror42/
Ruby on Rails 4.2
together with the rh-ruby23 とある通りで、推奨されているパッケージ指定では基本ruby2.3でしかrails4.2を使う事しか出来ない。
とは言えrails本体に必須なrubyバージョンは1.9.3以降であり、rails4.2をruby2.3で動かす事自体は問題がない。
https://rubygems.org/gems/rails/versions/4.2.0
これでは不便な事もあり、任意のrubyのバージョンを指定して利用したい。
そこで回避策として通常sclの設定を変更する。
/etc/profile.d/以下に任意のファイル名のbashファイルを配置する。

#!/bin/bash
source /opt/rh/rh-ror42/enable
source /opt/rh/rh-ruby24/enable
#export X_SCLS="`scl enable rh-ror42 rh-ruby24 'echo $X_SCLS'`"
export X_SCLS="rh-ruby24 rh-ror42"
コメントアウトしてある箇所が通常の指定で、その直下の様に$X_SCLSを指定しない様にする。
(他のパッケージ指定が必要であればこちらに直接追記する事になるはず。)
 setにて以下の変数を確認できるはずで、ruby -vにてバージョンの確認もできる。
 X_SCLS='rh-ruby24 rh-ror42’

くれぐれも自己責任で御利用いただきたい。

2019年1月6日日曜日

【2019年版】Yosemite Mac OS 10.10.5でUnity開発

YosemiteにてUnityの開発を試みたがインストーラーが起動しない。

UnityDownloadAssistant-2018.3.0f2.dmg
をダウンロードしてクリックしても以下の様になりインストーラーが起動しない。





https://unity3d.com/jp/get-unity/download/archive
に過去バージョンのインストラーがあるので、
UnityDownloadAssistant-5.6.1f1.dmg
を利用した。
ダウンロードしたdmgファイルをクリックしてディスクイメージをマウントする。
このバージョンであればインストーラーは動作した。
なお、ディスク容量は9.29G程度を必要とした。
(開発するアプリケーションによる。)

2018年9月15日土曜日

Google Apps Script(GAS)上でPOSTメソッドの値をjavascriptから扱う方法

Google Apps Script(以下GASと略す)ではformによる、ユーザからの入力をdoPostメソッドで扱える。
このユーザからの入力値をJquery等のjavascripで扱いたい。
GAS側で出来る事が多く、また関連する情報の多くがjavascriptでの扱いについては触れていない。
この投稿ではdoPostからの入力値をjavascriptで扱う為の一連の情報をまとめて扱う。
GAS側での処理で完結してしまう情報は多いが、javascriptで扱う記事が少ないので投稿した次第。
GAS上のhtml内でjavascripからPOSTのデータを扱う事で、Bootstrap等と併用が可能となり表現が多彩となる。

およその流れ
1) doGet側で通常のwebページ作成。ここにformを設定する。
2) doGetから送られたPOSTデータをdoPostで受けとる。
3) doPostから新たなwebページを表示する。
 この時の変数をjavascripから参照する。

やや冗長に記載したが、要点としては僅かなので、以降実際のページを記載する。
全てを記載せず、説明を簡単にすませる目的で部分的な記載とした。

1) doGet側で通常のwebページ作成。
任意のhtmlページでformを書く。
actionで目的のdoPostでURLをGASのURL(execで終わるもの)を指定する。
通常のwebページと違い気をつけたい点は、targetの記載がないと動作しない様だ。
以下ではnameで受け取る事とした。
<form method="post" action=“【https://script.google.com/で始まるGASのURL】” target="_blank">
    <p>
      <label>名前を入力してください:<br><input type="text" name="name"></label>
    </p>
    <br>
    <p>
      <input type="submit" value="送信">
    </p>
</form>
2) doGetから送られたPOSTデータをdoPostで受けとる。
function doPost(e){
  //データ取得
     var title = e.parameter.name;
     var temp = HtmlService.createTemplateFromFile('results');
     temp.data = title;
     return temp.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
3) doPostから新たなwebページを表示する
results.htmlでは
<?= data > と記載する事で表示できる。
javascriptで参照したい場合は

<script>
var inputdata = String("<?= data ?>");
</script>
となる。
もちろんタグ内で他のスクリプトと併用できる。

2018年7月12日木曜日

BOLT on VirtualBOX

facebookが出したBOLTについて、VirtualBOX上での動作が出来たので書いておく。
まだまだ日本語での情報も少なく手間取ったり思考錯誤してる人も多いかと思う。

正確に動作を確認した訳ではないが、順次わかる事を書いていく。
このpostにアクセスがあれば続きを早めに書いていく方針。

CentOS7で動作した。
BOLTのビルド環境はだいたい以下の通り
HDD 50G 程度
CPU4コア or 3コア程度
メモリ10G程度
コア数は無くてもビルドできるとは思うが4コアで概算2日程度。
また、ninjaを使っているので途中動作が止まってしまっても、追加でビルドできる。

HDDは50Gあればビルドできるが、boltで最適化するバイナリをビルドする分も必要となる。
とはいえ最終的に出来たbuildディレクトリがあれば十分でpatchをあてたllvmは不要となるので削除していい。
手元でビルドしたboltをgithubなどにあげとけばcloneするだけで動作する。

おおまかな手順は次の通り。
1)kernelは4系を早い段階で入れてしまう。
(3で必須になるので、最初からkernelを上げた方が早くていいに違いないと推測している。)
2)scl devtoolset-6 devtoolset-7 llvm-toolset-7 でビルドできる。
3)perfは4系を使う

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]
# yum --enablerepo=elrepo-kernel install kernel-lt
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * elrepo: mirror.cedia.org.ec
 * elrepo-kernel: mirror.cedia.org.ec
 * epel: epel.scopesky.iq
 * extras: mirror.vodien.com
 * updates: mirror.qoxy.com
No package 2 available.
Resolving Dependencies
--> Running transaction check
---> Package kernel-lt.x86_64 0:4.4.140-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package        Arch        Version                    Repository          Size
================================================================================
Installing:
 kernel-lt      x86_64      4.4.140-1.el7.elrepo       elrepo-kernel       39 M

Transaction Summary
================================================================================
Install  1 Package

Total download size: 39 M
Installed size: 175 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : kernel-lt-4.4.140-1.el7.elrepo.x86_64                        1/1
  Verifying  : kernel-lt-4.4.140-1.el7.elrepo.x86_64                        1/1

Installed:
  kernel-lt.x86_64 0:4.4.140-1.el7.elrepo

Complete!
として、お好みのカーネルをインストールする。
インストール後もちろん再起動する。

参考
CentOS7にelrepoからkernel 4系をインストール
https://qiita.com/tukiyo3/items/19866eebd0c52207f99c
アプリケーションを高速化するBOLTを試してみた
https://qiita.com/nigaky/items/fa651f52c5e06294ecd1

2018年7月1日日曜日

ロリポップマネージドクラウド備忘録3 DBダンプ

ロリポップマネージドクラウドは、いわゆるコンテナサービスでsshログインが可能となっている。
railsでのサービス提供もしている。
sshログインを許可している為、コンテナ上で非常に手軽に様々な対応が出来る。

その一つとしてrailsのデータベースのバックアップ手法として、seed_dumpによるデータベースのダンプが挙げられる。

seed_dumpはgemなので、Gemfileに記載して利用する。
よくあるgemと同じでgem 'seed_dump'を記載して、gem install seed_dumpをすれば良い。
database.ymlにてDBへの接続情報を記載しておく。
ロリポップマネージドクラウドへsshログインした後は、currentディレクトリに移動する。
後は以下の様にdumpが出来る。

current$ RAILS_ENV=production bundle exec rake db:seed:dump FILE=../seed.rb
微細な注意点はRAILS_ENVとbundleの指定が必要。
アプリケーションディレクトリより上部へでもダンプファイルは作成できる。

※2019/04/20 追記
ロリポップマネージドクラウドにてGemfileにseed_dumpを書かなくとも以下の様にインストールできる。
$ RAILS_ENV=production bundle exec gem i -N seed_dump
Fetching seed_dump-3.3.1.gem
Successfully installed seed_dump-3.3.1
1 gem installed
参考
https://qiita.com/masa-iwasaki/items/c5b33c88b985e2fbd040

関連記事
ロリポップマネージドクラウド備忘録1
ロリポップマネージドクラウド備忘録2 環境構築

2018年6月16日土曜日

[SOLVED]OAuth::Unauthorized 403 Forbidden/Action REQUIRED - Sign in with Twitter users must whitelist callback URLs

自作したwebアプリにてtwitterログインする時に以下のエラーとなってしまった。
OAuth::Unauthorized 403 Forbidden

最初は開発環境であるVMの現在時刻がずれていてログインできなくなっているのだろうと想像した。

検索した結果twitter側の仕様が変わった。
Action REQUIRED - Sign in with Twitter users must whitelist callback URLshttps://twittercommunity.com/t/action-required-sign-in-with-twitter-users-must-whitelist-callback-urls/105342
August 16, 2018 とある。

https://apps.twitter.com にログインして、callbackを書くだけで改修できる。

しかし気がつきにくい点として、https://とhttp://の両方をサポートしているサイトはhttps://apps.twitter.comのCallback URLsはhttps://とhttp://の両方を記載する必要がある。
また、開発環境等でポート番号の指定がある場合はポート番号まで指定する。


参考
Devise+OmniauthでTwitter認証時に「OAuth::Unauthorized 403 Forbidden」が出て認証できなくなった
https://qiita.com/gifu_w/items/41d2c868317edea5045b

2018年5月20日日曜日

railsメモ

link_toに見出しを適応したい場合は外側に出す。
文字列とテンプレート変数の結合は+で良い。

<%= link_to "変数 barの値"+@bar , "http://www.blogger.com" >