非同期処理に使いたいので、調べてみました。
こちらを参考に
https://cloud.google.com/tasks/docs/creating-appengine-tasks?hl=ja
インストール
$ pip install google-cloud-tasks
まず、タスクを作ってキューに入れます。
--
@app.route('/task_send')
def task_send():
from google.cloud import tasks_v2
PROJECT = <プロジェクトID>
LOCATION = <リージョン>
QUEUE = "default"
client = tasks_v2.CloudTasksClient()
parent = client.queue_path(PROJECT, LOCATION, QUEUE)
app_route = "/task_run"
data = {
'a': "abc",
}
payload = json.dumps(data)
task = {
'app_engine_http_request': {
'http_method': 'POST',
'relative_uri': app_route,
'headers': {
'Content-Type': "application/json"
},
'body': payload.encode(),
}
}
response = client.create_task(parent, task)
--
説明
・LOCATION: GAEの実行場所(リージョン)です。
"us-central"の場合、"us-central1" とします。(1を追記)
・app_route: タスクを実行する場所(PATH)です。
・data: データをJSON形式で送りたいので、一旦dictに入れて、jsonに変換します。
・headers: Content-Typeを jsonにします。
※デフォルトは、"application/octet-stream"
次に、タスクを受け取ります。
--
@app.route('/task_run', methods=["POST"])
def task_run():
data = request.json
....
--
説明
・data: dictデータです。
あとは、お好きに。
2020年5月6日水曜日
2020年4月17日金曜日
GCEに「NGINX Unit」入れて、WEB(アプリケーション)サーバとして使う
久しぶりにGCE(Google Compute Engine)を使うことになり、改めて最新のトレンドをチェックしてみました。
[GCEの無料枠]
これは健在でした。
と言うか、「無料枠で試しに使って貰い、他社との優位性を知らしめる」戦略なのでしょう。
技術力に自信があるからこその戦略だと思います。
個人で趣味的に使うには、この無料枠で充分。
無料枠の条件
・リージョン(地域): us-central(米中央), us-west(西海岸), us-east(東海岸)
・マシンタイプ: f1-micro
要は、「アメリカのデータセンターで、一番スペックの低いCPU」と言うことですが、サーバ用途であれば十分です。
[OS]
Ubuntuしか使わないので、その他のことは分かりません...
とりあえず、それなりに新しいものを使います。
OS: Ubuntu18.04 LTS
OSの選択で、「Minimal Ubuntu」と言う見慣れないものがあったので、ちょっと調べてみました。
これ、クラウド用のOSなんですね。
とりあえず、HDDは十分(20GB)あるので、通常バージョンで良いかと。
[Nginx]
Web(アプリケーション)サーバとして、単にFlaskを動かしたいだけなのに、これまでだと、uWSGI入れて、設定をあれやって、これやって... と、非常に煩雑で、はっきり言って面倒くさい!!!!
で、調べてみると「NGINX Unit」なるものが有りました。
これ、凄いかも。
本家はこちら。
http://unit.nginx.org/
aptでインストールして、jsonで設定するだけ。ほんと簡単です。ビックリ!!!!!
もう、Apacheは、過去の遺物ですね。(言い過ぎ!!!)
-- 以下は、自分用のメモです。--
[GCE/VM]
コンソール
https://console.cloud.google.com/home/dashboard
新規プロジェクトの作成
※省略
課金の上限設定
お支払 → 予算とアラート
予算額: 100円
Budget type: 指定額
Target amount: ¥100
Compute Engine
VMインスタンス
インスタンスの作成
ゾーン us-west1-b
シリーズ N1
マシンタイプ f1-micro
ブートディスク Ubuntu18.04 LTS 20GB ※残り10GBは将来用
ファイアウォール HTTP
接続 SSH → ブラウザウィンドゥで開く
※初回のみ標準ポート(22)で接続
SSHのポートを変更 (OS側) ※セキュリティリスク対策
$ sudo sed -i".bak" -e 's/#Port 22/Port 3843/g' /etc/ssh/sshd_config
$ sudo reboot
VPCネットワーク
外部IPアドレス
種類: エフェメラル → 静的
新しい静的IPアドレスの予約: static-ip
ファイヤーウォール
*SSHのポートを変更 (FW側)
default-allow-ssh
SSH port: 22 -> xxxx *任意のポート
接続 SSH → ブラウザウィンドゥでカスタムポートを開く
※SSHdの Port変更後は、カスタムポート(xxxx)で接続
スワップの作成
How to Create a Swap File on Google Compute Engine Virtual Machines
$ sudo -i *rootで作業
-- shell command
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon -s
echo "/swapfile none swap sw 0 0" >> /etc/fstab
--
# reboot
接続 SSH → ブラウザウィンドゥでカスタムポートを開く
[apt]
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-venv python-pip
[Flask]
https://flask.palletsprojects.com/en/1.0.x/installation/#installation
構成
~/
└ project1/
├ venv/
│ └ Flask
└ main.py
仮想環境 & Flaskインストール
$ cd
$ mkdir project1 && cd project1
$ python3 -m venv venv
$ source ./venv/bin/activate
V pip install Flask
アプリケーション
V nano main.py
--
from flask import Flask
application = Flask(__name__)
@application.route("/")
def index():
return "Hello Project1!"
if __name__ == "__main__":
application.run()
--
動作確認
V python3 main.py
→コンソールをもう1つ開いて動作確認
$ curl http://127.0.0.1:5000/
V deactivate
[Nginx]
http://unit.nginx.org/installation/#ubuntu
(インストール準備)
キー取得
$ sudo -i *rootで作業
# curl -sL https://nginx.org/keys/nginx_signing.key | apt-key add -
リポジトリ追加 *Ubuntu18.04 = bionic
# nano /etc/apt/sources.list.d/unit.list
--
deb https://packages.nginx.org/unit/ubuntu/ bionic unit
deb-src https://packages.nginx.org/unit/ubuntu/ bionic unit
--
インストール
# apt update
# apt install unit unit-dev unit-python3.6
コンフィグ
https://unit.nginx.org/howto/flask/
ソケットの場所を調べる
# unitd --help
--control ADDRESS
set address of control API socket
default: "unix:/var/run/control.unit.sock"
現在の設定をファイルに出力
# curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > config.json
Flask用の設定
# nano config.json
--
{
"listeners": {
"*:80": {
"pass": "applications/flask_app"
}
},
"applications": {
"flask_app": {
"type": "python",
"path": "/home/yamayoshiakira/project1/",
"home": "/home/yamayoshiakira/project1/venv/",
"module": "main"
}
}
}
--
*説明
listeners: ポート *80(HTTP)
type: 言語
path: プログラムの場所
home: 仮想環境の場所
module: プログラム本体(ファイル拡張子を除く)
設定を上書き
# curl -X PUT --data-binary @config.json --unix-socket /var/run/control.unit.sock http://localhost/config
再起動
# service unit restart
ブラウザから動作確認。
おつかれさまでした。
参考サイト
http://yamayoshi.blogspot.com/2017/06/gce.html
http://unit.nginx.org/configuration/
https://thr3a.hatenablog.com/entry/20170909/1504925172
https://qiita.com/happou/items/23be1615927be6376dec
----
UNIT のサンプルアプリを調べてみる
# apt install unit unit-dev unit-python3.6
こんなメッセージが出たの、調べてみます。
The Python 3.6 module for NGINX Unit has been installed.
To check out the sample app, run these commands:
sudo service unit restart
cd /usr/share/doc/unit-python3.6/examples
sudo curl -X PUT --data-binary @unit.config --unix-socket /var/run/control.unit.sock http://localhost/config
curl http://localhost:8400/
Online documentation is available at https://unit.nginx.org
デフォルトの設定値
# curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > config.json
--
{
"listeners": {},
"applications": {}
}
--
サンプルを見てみる
/usr/share/doc/unit-python3.6/examples
├ unit.config
└ python-app/
└ wsgi.py
File: unit.config
--
{
"applications": {
"example_python": {
"type": "python 3.6",
"user": "nobody",
"processes": 2,
"path": "/usr/share/doc/unit-python3.6/examples/python-app",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"pass": "applications/example_python"
}
}
}
--
File: wsgi.py
--
import os
import datetime
import sys
def application(environ, start_response):
output = datetime.datetime.now().strftime("%Y-%m-%d %I:%M:%S %p")
output += "\n\nPython: "
output += sys.version
output += "\n\nENV Variables:\n\n"
for param in os.environ.keys():
output += param
output += "\t"
output += os.environ[param]
output += "\n"
start_response('200 OK', [('Content-type', 'text/plain')])
return [s.encode('utf8') for s in output]
--
[GCEの無料枠]
これは健在でした。
と言うか、「無料枠で試しに使って貰い、他社との優位性を知らしめる」戦略なのでしょう。
技術力に自信があるからこその戦略だと思います。
個人で趣味的に使うには、この無料枠で充分。
無料枠の条件
・リージョン(地域): us-central(米中央), us-west(西海岸), us-east(東海岸)
・マシンタイプ: f1-micro
要は、「アメリカのデータセンターで、一番スペックの低いCPU」と言うことですが、サーバ用途であれば十分です。
[OS]
Ubuntuしか使わないので、その他のことは分かりません...
とりあえず、それなりに新しいものを使います。
OS: Ubuntu18.04 LTS
OSの選択で、「Minimal Ubuntu」と言う見慣れないものがあったので、ちょっと調べてみました。
これ、クラウド用のOSなんですね。
とりあえず、HDDは十分(20GB)あるので、通常バージョンで良いかと。
[Nginx]
Web(アプリケーション)サーバとして、単にFlaskを動かしたいだけなのに、これまでだと、uWSGI入れて、設定をあれやって、これやって... と、非常に煩雑で、はっきり言って面倒くさい!!!!
で、調べてみると「NGINX Unit」なるものが有りました。
これ、凄いかも。
本家はこちら。
http://unit.nginx.org/
aptでインストールして、jsonで設定するだけ。ほんと簡単です。ビックリ!!!!!
もう、Apacheは、過去の遺物ですね。(言い過ぎ!!!)
-- 以下は、自分用のメモです。--
[GCE/VM]
コンソール
https://console.cloud.google.com/home/dashboard
新規プロジェクトの作成
※省略
課金の上限設定
お支払 → 予算とアラート
予算額: 100円
Budget type: 指定額
Target amount: ¥100
Compute Engine
VMインスタンス
インスタンスの作成
ゾーン us-west1-b
シリーズ N1
マシンタイプ f1-micro
ブートディスク Ubuntu18.04 LTS 20GB ※残り10GBは将来用
ファイアウォール HTTP
接続 SSH → ブラウザウィンドゥで開く
※初回のみ標準ポート(22)で接続
SSHのポートを変更 (OS側) ※セキュリティリスク対策
$ sudo sed -i".bak" -e 's/#Port 22/Port 3843/g' /etc/ssh/sshd_config
$ sudo reboot
VPCネットワーク
外部IPアドレス
種類: エフェメラル → 静的
新しい静的IPアドレスの予約: static-ip
ファイヤーウォール
*SSHのポートを変更 (FW側)
default-allow-ssh
SSH port: 22 -> xxxx *任意のポート
接続 SSH → ブラウザウィンドゥでカスタムポートを開く
※SSHdの Port変更後は、カスタムポート(xxxx)で接続
スワップの作成
How to Create a Swap File on Google Compute Engine Virtual Machines
$ sudo -i *rootで作業
-- shell command
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon -s
echo "/swapfile none swap sw 0 0" >> /etc/fstab
--
# reboot
接続 SSH → ブラウザウィンドゥでカスタムポートを開く
[apt]
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install python3-venv python-pip
[Flask]
https://flask.palletsprojects.com/en/1.0.x/installation/#installation
構成
~/
└ project1/
├ venv/
│ └ Flask
└ main.py
仮想環境 & Flaskインストール
$ cd
$ mkdir project1 && cd project1
$ python3 -m venv venv
$ source ./venv/bin/activate
V pip install Flask
アプリケーション
V nano main.py
--
from flask import Flask
application = Flask(__name__)
@application.route("/")
def index():
return "Hello Project1!"
if __name__ == "__main__":
application.run()
--
動作確認
V python3 main.py
→コンソールをもう1つ開いて動作確認
$ curl http://127.0.0.1:5000/
V deactivate
[Nginx]
http://unit.nginx.org/installation/#ubuntu
(インストール準備)
キー取得
$ sudo -i *rootで作業
# curl -sL https://nginx.org/keys/nginx_signing.key | apt-key add -
リポジトリ追加 *Ubuntu18.04 = bionic
# nano /etc/apt/sources.list.d/unit.list
--
deb https://packages.nginx.org/unit/ubuntu/ bionic unit
deb-src https://packages.nginx.org/unit/ubuntu/ bionic unit
--
インストール
# apt update
# apt install unit unit-dev unit-python3.6
コンフィグ
https://unit.nginx.org/howto/flask/
ソケットの場所を調べる
# unitd --help
--control ADDRESS
set address of control API socket
default: "unix:/var/run/control.unit.sock"
現在の設定をファイルに出力
# curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > config.json
Flask用の設定
# nano config.json
--
{
"listeners": {
"*:80": {
"pass": "applications/flask_app"
}
},
"applications": {
"flask_app": {
"type": "python",
"path": "/home/yamayoshiakira/project1/",
"home": "/home/yamayoshiakira/project1/venv/",
"module": "main"
}
}
}
--
*説明
listeners: ポート *80(HTTP)
type: 言語
path: プログラムの場所
home: 仮想環境の場所
module: プログラム本体(ファイル拡張子を除く)
設定を上書き
# curl -X PUT --data-binary @config.json --unix-socket /var/run/control.unit.sock http://localhost/config
再起動
# service unit restart
ブラウザから動作確認。
おつかれさまでした。
参考サイト
http://yamayoshi.blogspot.com/2017/06/gce.html
http://unit.nginx.org/configuration/
https://thr3a.hatenablog.com/entry/20170909/1504925172
https://qiita.com/happou/items/23be1615927be6376dec
----
UNIT のサンプルアプリを調べてみる
# apt install unit unit-dev unit-python3.6
こんなメッセージが出たの、調べてみます。
The Python 3.6 module for NGINX Unit has been installed.
To check out the sample app, run these commands:
sudo service unit restart
cd /usr/share/doc/unit-python3.6/examples
sudo curl -X PUT --data-binary @unit.config --unix-socket /var/run/control.unit.sock http://localhost/config
curl http://localhost:8400/
Online documentation is available at https://unit.nginx.org
デフォルトの設定値
# curl --unix-socket /var/run/control.unit.sock http://localhost/config/ > config.json
--
{
"listeners": {},
"applications": {}
}
--
サンプルを見てみる
/usr/share/doc/unit-python3.6/examples
├ unit.config
└ python-app/
└ wsgi.py
File: unit.config
--
{
"applications": {
"example_python": {
"type": "python 3.6",
"user": "nobody",
"processes": 2,
"path": "/usr/share/doc/unit-python3.6/examples/python-app",
"module": "wsgi"
}
},
"listeners": {
"*:8400": {
"pass": "applications/example_python"
}
}
}
--
File: wsgi.py
--
import os
import datetime
import sys
def application(environ, start_response):
output = datetime.datetime.now().strftime("%Y-%m-%d %I:%M:%S %p")
output += "\n\nPython: "
output += sys.version
output += "\n\nENV Variables:\n\n"
for param in os.environ.keys():
output += param
output += "\t"
output += os.environ[param]
output += "\n"
start_response('200 OK', [('Content-type', 'text/plain')])
return [s.encode('utf8') for s in output]
--
2018年9月22日土曜日
Chromebook C101PA に Ubuntu をインストール
自分用のメモなので、要点のみ
・開発者モードに変更
・Croutonダウンロード
・Ubuntuインストール
chroot環境に任意の名前を付けることで、複数の環境を切り替えて使えるように
・セットアップ(パッケージのインストール)
enter-chrootから、シェルスクリプトで実行
・プレーンな状態でバックアップを取っておく
[Crouton]
https://goo.gl/fd3zc
[Install]
C:$ sudo sh ~/Downloads/crouton -n <name> -r xenial -t xfce,keyboard,audio,extension,touch,xorg
[Setup]
C:$ sudo enter-chroot -n <name>
U:$ vi setup.sh
i
--
#!/bin/sh
apt -y update
## Aplication
apt -y install \
fonts-takao ibus-anthy \
python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox chromium-browser geany nano curl git \
libjpeg-dev zlib1g-dev
apt -y autoremove
#ubuntu-restricted-extras lame asunder audacity handbrake mpv
--
esc -> :wq
U:$ sudo sh setup.sh
U:$ exit
chroot環境のリスト表示
C:$ sudo edit-chroot -a
バックアップ
C:$ sudo edit-chroot -b <name>
起動
C:$ sudo startxfce4 -n <name>
あとは、xfce側で自分用に設定
2017年11月24日金曜日
USBメモリにGalliumOSをインストールしたけど
イロイロと、不具合が出てます...
多分、OSの問題では無く、Chromebook自体が不安定なんですよね。
症状
・Bluetooth テザリングが出来なくなりました。
・時々、動作が引っ掛かります。(10秒反応無しとか..)
当然、元々の症状のWiFiは使えないし、こまったものです。
騙しダマシ使うにしても、どうしたものか...。
かと言って、R11以外のChromebookって、どれもイマイチなんですよね。
Amazon.com で、HPのを見つけたけど、日本には直接送れないみたい。
やっば暫くは、USBテザリングとCrouton(Xubuntu)で凌ぐしかないようです。
多分、OSの問題では無く、Chromebook自体が不安定なんですよね。
症状
・Bluetooth テザリングが出来なくなりました。
・時々、動作が引っ掛かります。(10秒反応無しとか..)
当然、元々の症状のWiFiは使えないし、こまったものです。
騙しダマシ使うにしても、どうしたものか...。
かと言って、R11以外のChromebookって、どれもイマイチなんですよね。
Amazon.com で、HPのを見つけたけど、日本には直接送れないみたい。
やっば暫くは、USBテザリングとCrouton(Xubuntu)で凌ぐしかないようです。
2017年11月18日土曜日
奇跡を信じて、Acer.co.jp に問い合わせ。
その後です。
こんな記事を見つけました。
https://pcefan.com/diary/?p=1768
ASUSは、日本でも修理受付をしてくれるみたい。
もしかしたら、Acer も?? と期待して Acer.co.jp に問い合わせてみた。
しかし、まったく話にならず。Acer 駄目ですね。
問い合わせた内容:
--
acer.com に修理に出しても修復せず。
再度問い合わせたところ、このようなメールが来ました。
You may reach technical support by telephone at 1(800)816-2237 for further assistance.
私は英会話が出来ないので、どうすれば良いでしょうか??
--
回答:
--
日頃より弊社製品をご愛用いただき、誠にありがとうございます。
日本エイサーカスタマーサービスセンターでございます。
お問い合わせいただいた件について、以下にご案内いたします。
============================== ====================
1) acer.com の返答について
============================== ====================
このたびは弊社製品の問題発生により、お客様にご迷惑を
おかけいたしまして、誠に申し訳ございません。
お知らせ頂いたメッセージを確認いたしますと
CaseIDが発行されていることから、おそらく修理の受付が
済んでいる事が推察されます。
また、英語のメッセージに「さらにサポートが必要な場合は」と
取れるメッセージがある事から
「修理の受付は済んでいるので、発送してください。 その他不明点などがある場合
1(800)816- 2237まで電話してテクニカルサポートにお問い合わせください 。」
という状況であることが推察されます。
特に不明点が無ければこのメッセージは無視しても問題ないかと存 じます。
海外モデルに関しては、製造国で修理を行う必要があるため
お手数ですが、受付の際に送付方法などの説明等がございましたら
手順に従って頂ければと存じます。
お客様のご期待にそうご案内を差しあげられず、恐縮に存じますが
何とぞご了承くださいますようお願い申しあげます。
------------------------------ --------------------
今後とも、弊社製品へのご愛顧を賜りますよう
よろしくお願い申しあげます。
****************************** *********************
日本エイサーカスタマーサービスセンター
各窓口のお問い合わせ先・営業時間につきましては
下記をご確認くださいますようお願いいたします。
Http://www2.acer.co.jp/ support/customer/index.html
****************************** *********************
--
残念。
こんな記事を見つけました。
https://pcefan.com/diary/?p=1768
ASUSは、日本でも修理受付をしてくれるみたい。
もしかしたら、Acer も?? と期待して Acer.co.jp に問い合わせてみた。
しかし、まったく話にならず。Acer 駄目ですね。
問い合わせた内容:
--
acer.com に修理に出しても修復せず。
再度問い合わせたところ、このようなメールが来ました。
You may reach technical support by telephone at 1(800)816-2237 for further assistance.
私は英会話が出来ないので、どうすれば良いでしょうか??
--
回答:
--
日頃より弊社製品をご愛用いただき、誠にありがとうございます。
日本エイサーカスタマーサービスセンターでございます。
お問い合わせいただいた件について、以下にご案内いたします。
==============================
1) acer.com の返答について
==============================
このたびは弊社製品の問題発生により、お客様にご迷惑を
おかけいたしまして、誠に申し訳ございません。
お知らせ頂いたメッセージを確認いたしますと
CaseIDが発行されていることから、おそらく修理の受付が
済んでいる事が推察されます。
また、英語のメッセージに「さらにサポートが必要な場合は」と
取れるメッセージがある事から
「修理の受付は済んでいるので、発送してください。
1(800)816-
という状況であることが推察されます。
特に不明点が無ければこのメッセージは無視しても問題ないかと存
海外モデルに関しては、製造国で修理を行う必要があるため
お手数ですが、受付の際に送付方法などの説明等がございましたら
手順に従って頂ければと存じます。
お客様のご期待にそうご案内を差しあげられず、恐縮に存じますが
何とぞご了承くださいますようお願い申しあげます。
------------------------------
今後とも、弊社製品へのご愛顧を賜りますよう
よろしくお願い申しあげます。
******************************
日本エイサーカスタマーサービスセンター
各窓口のお問い合わせ先・営業時間につきましては
下記をご確認くださいますようお願いいたします。
Http://www2.acer.co.jp/
******************************
--
残念。
2017年10月24日火曜日
Chromebook 改め Galliumbook R11
アメリカ帰りの Chromebook R11 の障害が再発。
また、wifiが動作しなくなった..
Acer の WEBサイトに問い合わせたところ、技術サポートに電話しろと。
ぉいぉい、国際電話かよ。それに、もちろん英語..
瞬間、諦めましたわ。こりゃ自己解決しかないよな。
そもそも、wifiが使えなくなったときに、ハードっぽく無い障害だったので、チップ交換だけで帰って来たのが、ちょっと心配だった。
R11 は、ハードのリセットボタンが無いので、バッテリの通電を切るには底面のカバーを全て外さなければならないんだけど、WEBで調べてみると結構簡単そう。
で、早速解体。
バッテリのコネクタを外し、30秒ほど待ってから再度通電。
ChromeOSを立ち上げてみると、見事に復帰。やはりか。
でも、このまま使っても再発するのは間違いないよな。さて、どうしたものか..
ChromeOSの影響を受けずに、直接Linuxを使うには、やはりあれしかない。
そう、GalliumOSです。
ChromeOSのリカバリ媒体も準備できてるので、何かあっても、なんとかなるでしょ。
さようなら ChromeOS。こんにちは GalliumOS。
以下は、インストール手順です。
普段から Ubuntu 触ってるので、簡単簡単。
公式サイト
https://galliumos.org/
1.開発者モードに入る
2.USB-Bootを有効にする。
https://wiki.galliumos.org/Installing/Preparing
[Ctrl+Alt+T] to get a ChromeOS terminal "crosh"
crosh> shell
At the chronos@localhost / $ prompt, run the following:
$ sudo crossystem dev_boot_legacy=1
3.ファームウェアの更新
https://mrchromebox.tech/#fwscript
$ cd; curl -LO https://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
4.インストール媒体の準備
5.GalliumOS インストール
6.日本語入力の設定
セットアップ用のシェルスクリプトを作成
u:$ setup.sh
こんな感じ。
File: setup.sh
-- ここから --
#!/bin/sh
apt update
## Input Method
apt -y install fonts-takao ibus-anthy
## Aplication
apt -y install python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox geany nano
apt -y autoremove
# ubuntu-restricted-extras lame asunder audacity handbrake mpv
-- ここまで --
1)
$ sudo apt install
2) インプットメソッドの追加
Menu => Settings => IBus Preferences
=> Input Method => Japanese - Anthy を追加
※ English(US)は、そのまま残しておきます。これ大事。
3) 入力の切り替え
標準は「Super+Space」→ これを「ctrl +Space 」に。
ここはChromebookに合わせおきます。
Menu => Settings => IBus Preferences
=> General => Keyboard Shortcuts
Next input method: <Super>space を ctrl + Space に変更。
4) Languege Support
Apply
Keyborad input method system: IBus
7.Bluetooth テザリンクを使う。
1) ペアリング
2) スマホ
・ペアリングしたデバイスの設定
使用目的-> インターネット接続 を有効にする。
・Bluetoothテザリングを有効にする。
3) GalliumOS
・Network Manager -> スマホを選択
一応、これで使えました。
また、wifiが動作しなくなった..
Acer の WEBサイトに問い合わせたところ、技術サポートに電話しろと。
ぉいぉい、国際電話かよ。それに、もちろん英語..
瞬間、諦めましたわ。こりゃ自己解決しかないよな。
そもそも、wifiが使えなくなったときに、ハードっぽく無い障害だったので、チップ交換だけで帰って来たのが、ちょっと心配だった。
R11 は、ハードのリセットボタンが無いので、バッテリの通電を切るには底面のカバーを全て外さなければならないんだけど、WEBで調べてみると結構簡単そう。
で、早速解体。
バッテリのコネクタを外し、30秒ほど待ってから再度通電。
ChromeOSを立ち上げてみると、見事に復帰。やはりか。
でも、このまま使っても再発するのは間違いないよな。さて、どうしたものか..
ChromeOSの影響を受けずに、直接Linuxを使うには、やはりあれしかない。
そう、GalliumOSです。
ChromeOSのリカバリ媒体も準備できてるので、何かあっても、なんとかなるでしょ。
さようなら ChromeOS。こんにちは GalliumOS。
以下は、インストール手順です。
普段から Ubuntu 触ってるので、簡単簡単。
公式サイト
https://galliumos.org/
1.開発者モードに入る
2.USB-Bootを有効にする。
https://wiki.galliumos.org/Installing/Preparing
[Ctrl+Alt+T] to get a ChromeOS terminal "crosh"
crosh> shell
At the chronos@localhost / $ prompt, run the following:
$ sudo crossystem dev_boot_legacy=1
3.ファームウェアの更新
https://mrchromebox.tech/#fwscript
$ cd; curl -LO https://mrchromebox.tech/firmware-util.sh && sudo bash firmware-util.sh
4.インストール媒体の準備
5.GalliumOS インストール
6.日本語入力の設定
セットアップ用のシェルスクリプトを作成
u:$ setup.sh
こんな感じ。
File: setup.sh
-- ここから --
#!/bin/sh
apt update
## Input Method
apt -y install fonts-takao ibus-anthy
## Aplication
apt -y install python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox geany nano
apt -y autoremove
# ubuntu-restricted-extras lame asunder audacity handbrake mpv
-- ここまで --
1)
$ sudo apt install
2) インプットメソッドの追加
Menu => Settings => IBus Preferences
=> Input Method => Japanese - Anthy を追加
※ English(US)は、そのまま残しておきます。これ大事。
3) 入力の切り替え
標準は「Super+Space」→ これを「ctrl +Space 」に。
ここはChromebookに合わせおきます。
Menu => Settings => IBus Preferences
=> General => Keyboard Shortcuts
Next input method: <Super>space を ctrl + Space に変更。
4) Languege Support
Apply
Keyborad input method system: IBus
7.Bluetooth テザリンクを使う。
1) ペアリング
2) スマホ
・ペアリングしたデバイスの設定
使用目的-> インターネット接続 を有効にする。
・Bluetoothテザリングを有効にする。
3) GalliumOS
・Network Manager -> スマホを選択
一応、これで使えました。
2017年10月20日金曜日
GAE/Py 開発サーバで too many directories エラー発生
日本語の情報が見つからなかったので、自分用のメモです。
開発中は、サーバがファイルの更新を監視しています。
これによって、サーバの再起動が不要になる、すぐれ機能です。
でも、ファイル数の上限は10000で、これを越えると、
There are too many directories in your application for changes in all of them to be monitored. You may have to restart the development server to see some changes to your files.
とエラーが出て、ファイルの更新を検知できなくなります。
/lib に Flaskとか、イロイロ入れてるので、10000越えてるのかなぁ??
ググってみると、こんな記事が見つかりました。
https://stackoverflow.com/questions/24551795/appengine-too-many-directory-to-be-monitored
どうやら、 watcher_common.py が怪しいみたい。
で、
def skip_ignored_dirs(dirpath, dirnames, skip_files_re=None):
に、
dirpath = '/lib'
を追加し、サーバを再起動すると見事に監視が始まりました。
これで解決!!
でも、SDKのアップデートがあると、再設定が必要なんだろうな...。(^^;;
-- 2017/12/26 追記 --
再発...
結論は、開発環境の場所が悪かったようです。
旧: /home/<USER>/Downloads/d/GCP
新: /home/<USER>/GCP
そもそも、何故 Downloads の下に置いてたかと言うと、このフォルダだけは、ChromeOS と Ubuntu の両方からアクセスできるから。
これが、なかなか便利なのです。
多分こんな使い方は、Chromebook に Ubuntu 入れてる場合しか無いと思う。
なので、ネット調べてもヒットしないんだよね。
これが分かるまで、とにかく何をやってもダメで、ほとんど詰んでました。
最初は、watcher_common.py をイジイジしてたけど、全くダメ。
あきらめて、Ubuntu を再インストールしたけど、これもダメ。
その他、SDKの再インストールとか、開発環境に置いてるプログラムファイルを消して app.yaml だけにしてみたりと..
イロイロなことを試してみましたが、どれもダメ。
ではと、ChromeOS から再インストール(リカバリ)してみて、やっと Downloads に入れてたのが原因だと気づきました。遅っ;;
分かってしまえば何てこと無いんだけど、久しぶりにハマりましたね。
でも、イロイロ調べてる内に、SDKのインストールに3種類の方法があるとか、新しい発見もあり、これはこれで良かったかも。
以下、Ubuntu のセットアップから、開発環境の整備までの手順(メモ)です。
[Add Package]
$ nano setup.sh
--
#!/bin/sh
apt update
## Input Method
apt -y install fonts-takao ibus-anthy
## Aplication
apt -y install python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox geany curl git
apt -y autoremove
--
$ sudo sh setup.sh
[SDK] https://cloud.google.com/sdk/downloads?hl=ja#versioned
$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk google-cloud-sdk-app-engine-python
$ gcloud init
[Structure]
/home/<USER>/GCP
-venv/
-<APP>/
-project/
-lib/
-app.yaml
-main.py
[MkDir & Venv]
$ sudo pip install virtualenv pycodestyle
$ cd
$ mkdir -p GCP/<APP>/project/lib
$ cd ~/GCP
$ virtualenv --no-site-package venv
$ source ./venv/bin/activate
V pip install pillow
V cd project
V pip install -t lib flask flask-wtf markdown
V deactivate
$
[Run]
$ cd ~/GCP && source ./venv/bin/activate && cd <APP>/project
V dev_appserver.py app.yaml backend.yaml
=> http://localhost:8000
http://localhost:8080/_ah/stats/
V deactivate
$ pycodestyle main.py > pycodestyle.txt
[Deploy]
$ gcloud app deploy --project <APP> -v <N> app.yaml backend.yaml queue.yaml cron.yaml
開発中は、サーバがファイルの更新を監視しています。
これによって、サーバの再起動が不要になる、すぐれ機能です。
でも、ファイル数の上限は10000で、これを越えると、
There are too many directories in your application for changes in all of them to be monitored. You may have to restart the development server to see some changes to your files.
とエラーが出て、ファイルの更新を検知できなくなります。
/lib に Flaskとか、イロイロ入れてるので、10000越えてるのかなぁ??
ググってみると、こんな記事が見つかりました。
https://stackoverflow.com/questions/24551795/appengine-too-many-directory-to-be-monitored
どうやら、 watcher_common.py が怪しいみたい。
で、
def skip_ignored_dirs(dirpath, dirnames, skip_files_re=None):
に、
dirpath = '/lib'
を追加し、サーバを再起動すると見事に監視が始まりました。
これで解決!!
でも、SDKのアップデートがあると、再設定が必要なんだろうな...。(^^;;
-- 2017/12/26 追記 --
再発...
結論は、開発環境の場所が悪かったようです。
旧: /home/<USER>/Downloads/d/GCP
新: /home/<USER>/GCP
そもそも、何故 Downloads の下に置いてたかと言うと、このフォルダだけは、ChromeOS と Ubuntu の両方からアクセスできるから。
これが、なかなか便利なのです。
多分こんな使い方は、Chromebook に Ubuntu 入れてる場合しか無いと思う。
なので、ネット調べてもヒットしないんだよね。
これが分かるまで、とにかく何をやってもダメで、ほとんど詰んでました。
最初は、watcher_common.py をイジイジしてたけど、全くダメ。
あきらめて、Ubuntu を再インストールしたけど、これもダメ。
その他、SDKの再インストールとか、開発環境に置いてるプログラムファイルを消して app.yaml だけにしてみたりと..
イロイロなことを試してみましたが、どれもダメ。
ではと、ChromeOS から再インストール(リカバリ)してみて、やっと Downloads に入れてたのが原因だと気づきました。遅っ;;
分かってしまえば何てこと無いんだけど、久しぶりにハマりましたね。
でも、イロイロ調べてる内に、SDKのインストールに3種類の方法があるとか、新しい発見もあり、これはこれで良かったかも。
以下、Ubuntu のセットアップから、開発環境の整備までの手順(メモ)です。
[Add Package]
$ nano setup.sh
--
#!/bin/sh
apt update
## Input Method
apt -y install fonts-takao ibus-anthy
## Aplication
apt -y install python-dev python-pip \
software-center synaptic gparted thunar-archive-plugin \
transmission firefox geany curl git
apt -y autoremove
--
$ sudo sh setup.sh
[SDK] https://cloud.google.com/sdk/downloads?hl=ja#versioned
$ export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
$ echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
$ curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install google-cloud-sdk google-cloud-sdk-app-engine-python
$ gcloud init
[Structure]
/home/<USER>/GCP
-venv/
-<APP>/
-project/
-lib/
-app.yaml
-main.py
[MkDir & Venv]
$ sudo pip install virtualenv pycodestyle
$ cd
$ mkdir -p GCP/<APP>/project/lib
$ cd ~/GCP
$ virtualenv --no-site-package venv
$ source ./venv/bin/activate
V pip install pillow
V cd project
V pip install -t lib flask flask-wtf markdown
V deactivate
$
[Run]
$ cd ~/GCP && source ./venv/bin/activate && cd <APP>/project
V dev_appserver.py app.yaml backend.yaml
=> http://localhost:8000
http://localhost:8080/_ah/stats/
V deactivate
$ pycodestyle main.py > pycodestyle.txt
[Deploy]
$ gcloud app deploy --project <APP> -v <N> app.yaml backend.yaml queue.yaml cron.yaml
登録:
投稿 (Atom)