投稿

9月, 2017の投稿を表示しています

Dump PostgreSQL to S3 and Restore from S3 to Local

#! /bin/sh -x
pg_dump -Fc --host= postgres://role:password@host:port/dbname -c > $data
aws s3 cp $data s3://host/path/filename --acl public-read
rm $data

aws s3 cp s3://host/path/filename /tmp/
pg_restore -c -C --no-privileges --no-owner /tmp/filename
OR pg_restore -c -h localhost -U username -p 5432 --no-privileges --no-owner /tmp/filename
########################

pg_restore -C creates the same name database as one in an archive file ignoring with -d option.
according to https://www.postgresql.jp/document/9.3/html/app-pgrestore.html

-c, --clean option drop a table in your destination database if only it has the same name as one in an archive file. It could print warning when trying to drop non-existing table.

For option meaning,
-no-privileges avoids an error on "role "role" does not exist"
-no-owner avoids an error on "ALTER OWNER"

When you dump with "pg_dump" or "pg_dumpall", you restore with "psql".
When you dump with …

Python on Xserver (エックスサーバーにpyenvをインストール)

エックスサーバーにpython環境構築。デフォルトのpython3.4を使った。外部モジュールの追加方法を下記に書いた。

Install easy_install cd
mkdir tmp
cd tmp
wget https://pypi.python.org/packages/f3/2b/e97c01487b7636ba3fcff5e73db995c66c524d54d0907d238311524f67c8/distribute-0.6.49.tar.gz#md5=89e68df89faf1966bcbd99a0033fbf8e
tar xzvf distribute-0.6.49.tar.gz
cd distribute-0.6.49.tar.gz
python3 setup.py install --user

Install other libraries
 ~/.local/bin/easy_install-3.4 flask --user

Installed library path is ~/.local/lib/python3.4/site-packages/<name>-<version>-py3.4.egg

When you want to remove a module installed by easy_install, remove related folders in ~/.local/lib and ~/.local/bin


pyenv, virtualenv is difficult to setup on Server yum install pyenv すると、sudo使えと怒られる。
sudo yum install pyenvすると、パスワード入力求められるが、xserver運営しか知るはずがない。
pipは入ってない。/etcへのアクセス権限なし
sudo 権限なし


pyenvに必要なopenssl-develをソースから導入しようとし、依存性のある10以上のパッケージをwgetしてrpm -ivh *としたが、失敗。
https://rpmfind.net/linux/rpm2html/search.php?query=openssl-devel
https://www.rpmfind.net/li…

プログラミング教室第二期を終えました

7月に四回のプログラミング教室を開きました。Pythonのインストールからウェブアプリケーションの公開までが目標でした。

資料はGitbookを用いて自作しました。Markdown形式で書くことができ、Gitを使った管理ができて便利でした。htmlやepubに変換するのも容易です。
https://www.gitbook.com/read/book/asterisk37n/simplest-course-to-develop-in-python

ローカルに環境構築するまでは調子がよかったのですが、アプリケーションをHerokuに公開の段階でつまずく人が多数でした。

参加者は主に口コミで集まった学生。一部の学生は意欲が高く、積極的に取り組んでいました。四回のコースが終わると、自主的にウェブサイトを作っていた人もいて、うれしい限りです。
あまり意欲的ではなく、たとえば「誘われたから来てみた」、「プログラミングがどんなものかちょっと見てみたい」という学生は、モチベーションがあまり高くなく、ずっとわりと早い段階から写経のようになっていました。

みなが参加費や場所代や飲み物の費用などを出すことや、各自の積極的な参加を期待していたのですが、それは難しかったです。
お金は一回1000円を回収しようと思っていたのですが、回収できない会の方が多かったです。言い出すタイミングがわからないのです。さらに、参加者は、場所や講義が提供されるのが当たり前で、自身がお客様だと思っている人が多い様子でした。たとえば、自分が使ったコップを洗わず机に放置したり、ゴミをそのまま置いていくなどの行動です。それは、私が望んでいた雰囲気ではありませんでしたが、もう20を過ぎた大人たちにそれを指摘するのも憚られ、改善できませんでした。

Create a new read only role (user) on PostgreSQL

You type following lines Launch psql and log in to a database, then execute following lines

CREATE ROLE read_only WITH LOGIN PASSWORD 'password'; GRANT CONNECT ON DATABASE mydb TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO read_only;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO read_only;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON SEQUENCES TO read_only; What you have done:Create a new role, we call "read_only".Grant access to database, we call "mydb".Grant access to schema, public (all tables are supposed to be in public schema).Grant access to all tables in public.Grant access to all sequences in public(Optional) Grant access to all tables created in the future in public(Optional) Grant access to all sequences created in the future in public Useful InfoGrant is used as: GRANT (some privilege) ON (som…