Ubuntuのgolang環境を1.9へアップグレードする。
現在のgolangバージョンを確認
Ubuntu 16.04 にはv1.6がインストールされているみたい
$ go version go version go1.6.2 linux/amd64
とりあえず、golang1.9をインストールする。
$ sudo apt install golang-1.9
インストールは成功するものの、golangのバージョンは変わらない
調べて見ると同じ現象で悩んでいた人を発見 http://blog.panicblanket.com/archives/4278
$ ls /usr/lib | grep go go go-1.6 go-1.9 gold-ld
確かに1.9はインストールされていた。
早速シンボリックリンクを再設定
cd /usr/bin sudo mv go go_16 sudo mv gofmt gofmt_16 sudo ln -s /usr/lib/go-1.9/bin/go /usr/bin/go sudo ln -s /usr/lib/go-1.9/bin/gofmt /usr/bin/gofmt
無事golang 1.9になった
$ go version go version go1.9.2 linux/amd64
mLabのDBを作って接続してみる
mLabにMongoDbを作成して、ローカルから接続してみる。
mLabはMongoDB用クラウドサービスで、SANDBOXの場合は5Gまでの無料プランで作成出来るため、テスト用DBにはちょうどいい感じ MongoDB Hosting: Database-as-a-Service by mLab 新規DBを作成します。プロバイダとプランを選択します。
作成されたDBをクリック刷ると情報として接続文字列などが表示されます。
To connect using the mongo shell: mongo ds249727.mlab.com:49727/mydb -u <dbuser> -p <dbpassword> To connect using a driver via the standard MongoDB URI (what's this?): mongodb://<dbuser>:<dbpassword>@ds249727.mlab.com:49727/mydb
Add Database Userボタンからログイン用のユーザを追加します。
Ubuntu 16.04から接続してみる
- やってみた
$ sudo apt-get install mongodb-clients $ mongo --version MongoDB shell version: 2.6.10 $ mongo ds249727.mlab.com:49727/mydb -u admin -p password MongoDB shell version: 2.6.10 connecting to: ds249727.mlab.com:49727/mydb 2018-01-12T16:14:29.494+0900 Error: 18 { ok: 0.0, errmsg: "auth failed", code: 18, codeName: "AuthenticationFailed" } at src/mongo/shell/db.js:1287 exception: login failed $
デフォルトのmongodb-clientsから入るMongoDB shellはversionが2.6.10でmLabとバージョンが違う場合は権限エラーになるみたい
最新バージョンのMongoDB shellを入れる。
このサイトを参考にした Install MongoDB Community Edition on Ubuntu — MongoDB Manual 3.6
$ echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list $ sudo apt-get update $ sudo apt-get install mongodb-org $ mongo --version MongoDB shell version v3.6.2 git version: 489d177dbd0f0420a8ca04d39fd78d0a2c539420 OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016 allocator: tcmalloc modules: none build environment: distmod: ubuntu1604 distarch: x86_64 target_arch: x86_64 parallels@parallels-vm:~$
最新のMongoDB shellより接続する。
$ mongo ds249727.mlab.com:49727/mydb -u admin -p password MongoDB shell version v3.6.2 connecting to: mongodb://ds249727.mlab.com:49727/mydb MongoDB server version: 3.4.10 WARNING: shell and server versions do not match Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user 2018-01-12T16:52:38.782+0900 E - [main] Error loading history file: FileOpenFailed: Unable to fopen() file /home/parallels/.dbshell: No such file or directory rs-ds235807:PRIMARY>
JAVA9をUbuntuにインストールする。
JAVA9をUbuntuに入れてみたので、備忘録です。
使用したUbuntuのバージョンは 16.04でした。
変更点概要
Ubuntuのターミナルで以下のコマンドを実行する。
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java9-installer
JAVA9 Default設定
もう、他のJavaバージョンは使用しない場合、デフォルト設定をJAVA9に設定刷ることが出来ます。
sudo apt-get install oracle-java9-set-default
jshellを使ってみる。
JAVA9から導入されたコマンドラインでJAVAを実行するツール
$ jshell Jan 11, 2018 5:20:47 PM java.util.prefs.FileSystemPreferences$1 run INFO: Created user preferences directory. | Welcome to JShell -- Version 9.0.1 | For an introduction type: /help intro jshell> System.out.println("Hello World"); Hello World jshell>
Azure Bot Service でChat BotをFacebook Messengerに連携してみる。
Azure Web App Bot
AzureでBotサービスを作成します。
Azure Portalから新規追加で「Web App Bot」を検索し、作成を開始します。
・ボット名:ボットの名前 ・サブスクリプション:所持しているサブスクリプション ・リソースグループ:新規作成します ・場所:Japan West or Japan Eastなどを選べます ・価格レベル:F0(Free) or S1(有料) ・アプリ名:Urlになるアプリ名 ・ボットテンプレート:C#とNode.jsのどっちかを選び、テンプレートをしていします。 (初期状態としてコードが提供されています) ・App Service プラン/場所 ・Azure Storage:データ登録用のストレージです ・Application Insights:日本では分析を支援していないため、オフにします。
しばらくすると、Azure上に必要なサービスが初期化されます。
・ビルド
オンラインでコードを修正したり、ダウンロードすることが出来ます。
・Test in Web Chat
作成されたBotのテスト用の簡易フラットフォームです。
・チャンネル 外のサービスと連携するためのチャンネルです。後でFacebook Messangerとの連携で使用します。
Facebook Page
アプリ連携用にPageを作成します。 とりあえず、必要なのはPage IDなので、サイドバーのページ情報から取得します。
Facebook for Developer
https://developers.facebook.com/ Facebookの開発用プラットフォームです。 ログインすると、右上のマイアプリから「新しいアプリを追加」が出来るようになるので、新しいアプリを作成します。 ダッシュボードから、アプリIDとApp Secretが確認出来ます。後で必要になるので記憶しておきましょう。 サイドバーから「製品を追加」を選択肢、「Messenger」を設定します。 トークン生成から、上記で作成したページを設定するとトークンキーが生成されます。
Azure to Facebook Setting
チャンネルから「Facebook Messenger」を選択します。
Facebook ページ ID:上記のPageID Facebook アプリ ID:Facebook アプリ ID Facebook アプリのシークレット:Facebook アプリのシークレット ページ アクセス トークン:上記で生成したトークンキー
FacebookアプリのWebhook用のコールバックが下に表示されます。
設定が完了すれば、WebHooksにPageイベントについて紐付けが出来るので、選択しフォローします。
Facebook アプリのWebHook設定
「Webhooksの設定」ボタンをクリック 以下の画面が表示されるので、上記のコールバックURLと認証トークンを設定します。
Facebook Pageからのチャット
パージのチャットは「https://m.me/ページID」もしくは「https://m.me/ページユーザ名」で表示されます。 うまく設定できていれば、Test in Web Chatと同じ用に表示されるはずです。
Go Test
Goで作成したパッケージのテスト
Goは標準のテストパッケージが存在し、以下の様なファイルはテストコードとして認識する。
ファイル名が「_test.go」で終わるもの 関数名が「Test」で始まるもの
テストソースには標準テストパッケージをimports
packagename_test.go
package pacakgename import ( "testing" ) func TestMethodName(t *testing.T) { expect := "result" actual := MethodName() if expect != actual { t.Errorf("%s != %s", expect, actual) } }
テストの実行
$ go test ./packagename $ go test -v ./packagename
「-v」で個別のテスト結果を表示する。
mainパッケージのテスト
パッケージテスト同様に_test.goを作成する
app_test.go
package main import ( "testing" ) func TestAppName(t *testing.T) { expect := "result" actual := AppName() if expect != actual { t.Errorf("%s != %s", expect, actual) } }
mainパッケージのテスト実行
$ go test -v
.Net プロジェクトでOracle接続エラー
.Net プロジェクトでOracle接続エラー
Oracleクライアントまではインストルしたが、何故かエラーになる。
要求された .Net Framework データ プロバイダーが見つかりません。これは、インストールされていない可能性があります。
原因はmachine.config?
ネットで調べた結果、machine.configの修正が必要と出た。
現在のmachine.config
<DbProviderFactories> <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/> </DbProviderFactories>
有るのはSQLServerの分だけ、おそらくローカルにSQL Serverをインストールしたため設定済み状態
Oracle Providerを追加
<add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess"/>
以下のオプションはバージョンとアセンブリを特定値に工程するため、削除しておいたほうが無難
Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342
Docker にテスト用にOracle DBを構築する。
やりたいこと
Oracleが構築されているDocker Imageを入手し、Oracle用インスタンスを起動させる。
参考にしたサイト
おそらく正攻法 https://qiita.com/lethe2211/items/0bb493fa93a0088cfac9 https://github.com/oracle/docker-images/tree/master/OracleDatabase 正攻法がだめだったので、誰かさんが作って下さったものを利用 https://hub.docker.com/r/sath89/oracle-12c/
イメージのダウンロードと実行
$ docker pull sath89/oracle-12c $ docker run -d -p 8080:8080 -p 1521:1521 sath89/oracle-12c
実行結果、Oracle用のコンテナが起動する。
ログイン情報
User Id : sys, system Password : oracle Tnsname : XE
DumpからDBを復元
インスタンスの中のDPDUMPフォルダーにDumpファイルをコピー
$ docker cp /Downloads/MYDB.DMP container_name:/u01/app/oracle/admin/xe/dpdump
コンテナに接続し、impを実行する。
$ docker exec -it 0999d96f24dd bash # impdp system/oracle directory=DATA_PUMP_DIR dumpfile=MYDB.DMP log=expdp_MYDB.log
クライアントから接続する
$ sqlplus system/oracle@xe
管理者権限でログイン
$ sqlplus sys as SYSDBA