Symfoware

Symfowareについての考察blog

Ubuntu 16.04にAndroid SDKをインストール

以前も試したのですが、記載のバージョンが古いので改めて手順を確認します。
Ubuntu 14.04にAndroid SDKをインストールする(Cordova向け)


javaとgradle



javaとgradleが必要になる(はず)なので、事前にインストールしておきます。


$ sudo apt-get install openjdk-8-jdk
$ sudo apt install gradle





javaとgradleのバージョンはそれぞれ以下のようになりました。


$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.2-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

$ gradle -version

------------------------------------------------------------
Gradle 2.10
------------------------------------------------------------

Build time: 2016-01-26 15:17:49 UTC
Build number: none
Revision:     UNKNOWN

Groovy:     2.4.5
Ant:         Apache Ant(TM) version 1.9.6 compiled on July 8 2015
JVM:         1.8.0_131 (Oracle Corporation 25.131-b11)
OS:         Linux 4.4.0-87-generic amd64






Android SDKの設定



Android SDKをダウンロードします。
こちらのページから、「sdk-tools-linux-3859397.zip」をダウンロードしました。
https://developer.android.com/studio/index.html#downloads

755_01.png

解凍したフォルダを適当なパスに移動しておきます。
私は、/fssdb/android-sdk-linuxにコピーしました。

.bashrcの末尾に一行追加。
android-sdk-linux/toolsとandroid-sdk-linux/platform-toolsにパスを通します。

※この時点で、platform-toolsは存在しませんが、これ以降に行う
Android SDK Managerを実行すると作成されます。


$ vi ~/.bashrc



末尾に一行追加。


export PATH=${PATH}:/fssdb/android-sdk-linux/tools:/fssdb/android-sdk-linux/platform-tools



内容を反映します。


$ source ~/.bashrc





ここから手順が変わったようで、androidコマンドではなく、sdkmanagerコマンドを使用するようです。


$ /fssdb/android-sdk-linux/tools/sdkmanager "platforms;android-26"
$ /fssdb/android-sdk-linux/tools/sdkmanager "build-tools;26.0.1"




とりあえず、avdを作成してみます。


$ /fssdb/android-sdk-linux/tools/sdkmanager "system-images;android-23;google_apis;x86"
$ /fssdb/android-sdk-linux/tools/avdmanager create avd --name test --device 14 --package "system-images;android-23;google_apis;x86" -b x86 -c 100M -d 7 -f




かなり手探りですが、これでエミュレーターが起動してくれました。


$ cordova emulate android



755_02.png

内容、まとまってないですが備忘録として。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/07/26(水) 23:34:25|
  2. 未分類
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Ubuntu 16.04にCordova(コルドバ)のインストール

以前試した時から2年以上経過したので、再度手順を試してみます。
Cordova(コルドバ)チュートリアル1 Cordovaプロジェクトの作成



nodejsのインストール



nodejsとnpmをインストール。


$ sudo apt-get install nodejs npm




バージョンは4.2.6でした。


$ nodejs -v
v4.2.6




「node」で動いてくれないと後々こまるので、


$ sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10




これでnode -vでも起動できるようになりました。


$ node -v
v4.2.6








cordovaのインストール



npmを使用して、cordovaをインストールします。


$ sudo npm install -g cordova




バージョンは7.0.1。
前回試した時は4.2.0でしたので、随分バージョンが上がっています。


$ cordova -v
? May Cordova anonymously report usage statistics to improve the tool over time? Yes

Thanks for opting into telemetry to help us improve cordova.
7.0.1





前回同様、プログラムの雛形を作成してみます。


$ cordova create workshop com.yourname.workshop Workshop




作成されたフォルダに移動。


$ cd workshop




androidのプラットフォームを追加してみます。


$ cordova platforms add android



この辺は変更ありませんね。
次の手順。プラグインのインストールでハマりました。


$ cordova plugin add org.apache.cordova.device
Error: Registry returned 404 for GET on https://registry.npmjs.org/org.apache.cordova.device





どうも、プラグインの名称が変更されているようです。
こちらで、変更後のプラグイン名を調べます。
http://cordova.apache.org/plugins/

「org.apache.cordova.device」は「cordova-plugin-device」
「org.apache.cordova.console」は「cordova-plugin-console」に
それぞれ名称が変更されたようです。

以下のコマンドでプラグインがインストールできました。


$ cordova plugin add cordova-plugin-device
$ cordova plugin add cordova-plugin-console

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/07/26(水) 22:41:35|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

jQuery ajax サーバー側が処理終了を通知するまでずっと問い合わせる

まずはこんなプログラム


  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>sample</title>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  8. <script>
  9. $(function() {
  10.     
  11.     $('#get').on('click', function() {
  12.         $('#result').html('結果表示');
  13.     });
  14. });
  15. </script>
  16. </head>
  17. <body>
  18. <div>
  19.     <button id="get">データ取得</button>
  20. </body>
  21. <div id="result">-</div>
  22. </html>




初期状態

754_01.png


ボタンを押したら、文字を表示します。

754_02.png


ここから肉付けしていきます。




ajax通信



ボタンを押したらサーバーと通信して結果を受け取り表示します。

※参考
Python 組み込みのCGIHTTPServerやhttp.serverでcgiを動かす

・html


  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>sample</title>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  8. <script>
  9. $(function() {
  10.     
  11.     $('#get').on('click', function() {
  12.         $.ajax({
  13.             url:'cgi-bin/sample.py'
  14.         }).done(function(result){
  15.             $('#result').html(result.data);
  16.         });
  17.     });
  18. });
  19. </script>
  20. </head>
  21. <body>
  22. <div>
  23.     <button id="get">データ取得</button>
  24. </body>
  25. <div id="result">-</div>
  26. </html>




・cgi


  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import cgi
  4. import cgitb
  5. import json
  6. cgitb.enable()
  7. print('Content-type: application/json; charset=UTF-8\r\n')
  8. print(json.dumps({'status':'ok', 'data':'応答データ'}))




754_03.png





リクエストパラメーター付与



リクエストパラメーター付きでajax通信。
応答にリクエストパラメーターを付加してみます。

・html


  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>sample</title>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  8. <script>
  9. $(function() {
  10.     
  11.     $('#get').on('click', function() {
  12.         var count = 1;
  13.         $.ajax({
  14.             url:'cgi-bin/sample.py?count=' + count
  15.         }).done(function(result){
  16.             $('#result').html(result.data);
  17.         });
  18.     });
  19. });
  20. </script>
  21. </head>
  22. <body>
  23. <div>
  24.     <button id="get">データ取得</button>
  25. </body>
  26. <div id="result">-</div>
  27. </html>




・cgi


  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import cgi
  4. import cgitb
  5. import json
  6. cgitb.enable()
  7. print('Content-type: application/json; charset=UTF-8\r\n')
  8. form = cgi.FieldStorage()
  9. count = form['count'].value
  10. print(json.dumps({'status':'ok', 'data':'応答データ' + count}))




754_04.png




リクエストパラメーターによる応答の分岐



リクエストパラメーターに「100」を渡すと正常な応答。
それ以外は、まだサーバー側で処理を行っていると仮定します。

result.statusに「ok」が設定されるまでcountに1を加えながら再帰呼出ししてみます。


・html


  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>sample</title>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  8. <script>
  9. $(function() {
  10.     
  11.     $('#get').on('click', function() {
  12.         var count = 1;
  13.         watch(count);
  14.     });
  15.     var watch = function(count) {
  16.         $.ajax({
  17.             url:'cgi-bin/sample.py?count=' + count
  18.         }).done(function(result){
  19.             $('#result').html(result.data);
  20.             if (result.status == 'ok') {
  21.                 return;
  22.             }
  23.             watch(count + 1);
  24.         });
  25.     };
  26. });
  27. </script>
  28. </head>
  29. <body>
  30. <div>
  31.     <button id="get">データ取得</button>
  32. </body>
  33. <div id="result">-</div>
  34. </html>




・cgi


  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3. import cgi
  4. import cgitb
  5. import json
  6. cgitb.enable()
  7. print('Content-type: application/json; charset=UTF-8\r\n')
  8. form = cgi.FieldStorage()
  9. count = form['count'].value
  10. result = {}
  11. if count == '100':
  12.     result['status'] = 'ok'
  13.     result['data'] = '正常終了'
  14. else:
  15.     result['status'] = 'ng'
  16.     result['data'] = 'データ取得中(%s)' % count
  17. print(json.dumps(result))




754_05.png

これでも狙い通りの処理になったのですが、結構な勢いでサーバー側に問い合わせを行うため、
ちょっと加減したい。



setTimeout



setTimeoutを使用して、1000msまってから処理を行うようにしてみます。

・html


  1. <!doctype html>
  2. <html lang="ja">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>sample</title>
  6.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  7.     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
  8. <script>
  9. $(function() {
  10.     
  11.     $('#get').on('click', function() {
  12.         var count = 1;
  13.         setTimeout(function() { watch(count); }, 1000);
  14.     });
  15.     var watch = function(count) {
  16.         $.ajax({
  17.             url:'cgi-bin/sample.py?count=' + count
  18.         }).done(function(result){
  19.             $('#result').html(result.data);
  20.             if (result.status == 'ok') {
  21.                 return;
  22.             }
  23.             setTimeout(function() { watch(count + 1); }, 1000);
  24.         });
  25.     };
  26. });
  27. </script>
  28. </head>
  29. <body>
  30. <div>
  31.     <button id="get">データ取得</button>
  32. </body>
  33. <div id="result">-</div>
  34. </html>



754_06.png


1000msごとにサーバー通信を行うようになりました。
これでwebサーバー側も一息つけそうです。

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/07/13(木) 23:37:09|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Debian 9(Stretch)にPostgreSQL 9.6をapt-getでインストールし、外部アクセスを許可する

Debian 9にPostgreSQL 9.6をインストールしてみます。

過去の記事を参考にしました。
Debian 8(Jessie)にPostgreSQL 9.4をapt-getでインストールする



PostgreSQLのインストール



apt-getでインストール


# apt-get install postgresql-9.6




インストール時のログの抜粋です。


(略)
postgresql-client-common (181) を設定しています ...
systemd (232-25) のトリガを処理しています ...
postgresql-common (181) を設定しています ...
ユーザ postgres をグループ ssl-cert に追加

Creating config file /etc/postgresql-common/createcluster.conf with new version
Creating config file /etc/logrotate.d/postgresql-common with new version
(略)
postgresql-9.6 (9.6.3-3) を設定しています ...
Creating new cluster 9.6/main ...
config /etc/postgresql/9.6/main
data /var/lib/postgresql/9.6/main
locale ja_JP.UTF-8
socket /var/run/postgresql
port 5432
update-alternatives: /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) を提供するために自動モードで /usr/share/postgresql/9.6/man/man1/postmaster.1.gz を使います
postgresql-contrib-9.6 (9.6.3-3) を設定しています ...
python3 (3.5.3-1) を設定しています ...
running python rtupdate hooks for python3.5...
(略)




ユーザー「postgres」が自動的に作成されています。
また、python3も一緒にインストールされるようです。

postgresユーザーに切り替えて、psqlを実行。


# su - postgres
postgres@debian9:~$ psql
psql (9.6.3)
"help" でヘルプを表示します.

postgres=#




バージョン9.6.3がインストールできました。

「\q」で終了します。


postgres=# \q
$







データベースユーザーの追加(createuser)



データベースに接続するためのユーザーを作成してみます。
今回は「pgadmin」というスーパーユーザーを作成してみます。


$ createuser --pwprompt --interactive pgadmin
新しいロールのためのパスワード: (設定するパスワード入力)
もう一度入力してください:(上記と同じパスワード入力)
新しいロールをスーパーユーザにしますか? (y/n)y




これでユーザーが作成できました。
ログイン出来るかテストしてみます。


$ psql -U pgadmin -d postgres -h localhost
ユーザ pgadmin のパスワード: (パスワードを入力)
psql (9.6.3)
SSL接続(プロトコル: TLSv1.2, 暗号化方式: ECDHE-RSA-AES256-GCM-SHA384, ビット長: 256, 圧縮: オフ)
"help" でヘルプを表示します.

postgres=#




接続できました。
データベースを作成してみます。


postgres=# create database sample;
CREATE DATABASE
postgres=#




「\l」でデータベースの一覧が表示できます。


postgres=# \l

                                         データベース一覧
名前    | 所有者 | エンコーディング | 照合順序 | Ctype(変換演算子) |    
アクセス権    
-----------+----------+------------------+-------------+-------------------+-----------------------
postgres | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     |
sample    | pgadmin | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     |
template0 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     | =c/postgres         +
         |         |                 |             |                 | postgres=CTc/postgres
template1 | postgres | UTF8             | ja_JP.UTF-8 | ja_JP.UTF-8     | =c/postgres         +
         |         |                 |             |                 | postgres=CTc/postgres
(4 行)




ちゃんとsampleデータベースが作成できています。






外部接続許可



別の端末から接続できるようにしてみます。
まず、postgresql.confを編集。


# vi /etc/postgresql/9.6/main/postgresql.conf




60行目付近のlisten_addressesを'localhost'から'*'に変更します。


#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all

listen_addresses = '*'




続いてpg_hba.confを編集。


# vi /etc/postgresql/9.6/main/pg_hba.conf




「IPv4 local connections」に、接続を許可するIPの範囲を指定。
今回は192.168.1.0/24の範囲を追加しました。


# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.0/24         md5




編集が終わったら、PostgreSQLを再起動。


# service postgresql restart




Psycopg2を使用して、接続をテストしてみます。


  1. # -*- coding:utf-8 -*-
  2. import psycopg2
  3. con = psycopg2.connect(
  4.     host = "192.168.1.101",
  5.     port = 5432,
  6.     database="sample",
  7.     user="pgadmin",
  8.     password="P@ssw0rd")
  9. con.close()
  10. print(u'ok')




ちゃんと外部から接続できたようです。


$ python sample.py
ok




関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/28(水) 22:09:02|
  2. PostgreSQL
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集

Debian easy_installで「SSL: CERTIFICATE_VERIFY_FAILED」エラー

ここでインストールしたDebian 9
Debian 9 (Stretch)を最小構成でインストールしssh接続を許可する

Pythonの環境をインストールしました。


# apt-get install python
# apt-get install python-setuptools




easy_installでcythonをインストールしようとしたら、
「SSL: CERTIFICATE_VERIFY_FAILED」
というエラーが発生。


# easy_install cython
Searching for cython
Reading https://pypi.python.org/simple/cython/
Download error on https://pypi.python.org/simple/cython/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) -- Some packages may not be found!
Couldn't find index page for 'cython' (maybe misspelled?)
Scanning index of all packages (this may take a while)
Reading https://pypi.python.org/simple/
Download error on https://pypi.python.org/simple/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661) -- Some packages may not be found!
No local packages or working download links found for cython
error: Could not find suitable distribution for Requirement.parse('cython')




FreeBSDの時にも同様のエラーが発生したので、これを参考に
FreeBSD 10.1で、easy_installのSSLエラー(CERTIFICATE_VERIFY_FAILED)
ca-certificates package


「ca-certificates」をインストールしたら、エラーが解消されました。


# apt-get install ca-certificates



関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2017/06/19(月) 23:04:53|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
次のページ