2018年6月30日土曜日

Python PostgreSQLをUbuntuで使う インストール〜psycopg接続

WindowsではPostgreSQLが使えるようになったので、Ubuntuでもやってみることにしました。

インストール

公式ページにはデフォルトで入っていると書かれているのですが、16.04LTSで入っていませんでした。version10は見つからず、9.5を下記コマンド
sudo apt-get install postgresql
でインストールします。1分くらいで完了。
 $ cd /usr/lib
を見ると、postgresqlというディレクトリができていて、インストールが確認できます。


データベースを作る

 $ sudo su postgres
とやってユーザをpostgresに切り替えます。

データベース(ここではmydatabaseという名前)を作って、消すには 
$ createdb mydatabase
$ dropdb mydatabase 
 とします。

postgresql起動

その後は、su (元のユーザ) として戻って
$ sudo -u postgres psql
で起動できます(postgresのままならpsqlだけで起動)。
(※終了は \q )
$ sudo -u postgres psql
psql (9.5.13)
Type "help" for help.

postgres=# 

ここで\list または \l と打つと、データベースのリストが見れます。

postgres=# \l

                                   List of databases
    Name     |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges  
-------------+----------+----------+-------------+-------------+-----------------------
 my_database | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 


postgresを使うときはサーバが動いている必要があります

$ sudo systemctl status postgresql 
とやって確認できます。動いていればこんな感じに出ます。
 ● postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled
   Active: active (exited) since
statusのところをstopにすると停止。startで起動できます。参考。


パスワード設定

Windowsのときはインストール時にパスワードの設定がありましたが、ubuntuではありませんでした。
$ sudo -u postgres psql
 \password postgres
(enter password)
\q
とやってパスワードを設定します。


ここからPythonです。


psycopg2をインストール

$ conda install psycopg2

psycopg2接続

wikiのこのページを参考にして接続します。

#!/usr/bin/python
import psycopg2
import sys


def main():
    #Define our connection string
    conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"

    # print the connection string we will use to connect
    print ("Connecting to database\n ->%s" % (conn_string))

    # get a connection, if a connect cannot be made an exception will be raised here
    conn = psycopg2.connect(conn_string)

    # conn.cursor will return a cursor object, you can use this cursor to perform queries
    cursor = conn.cursor()
    print ("Connected!\n")

if __name__ == "__main__":
    main()
出力が
Connected!

となればOK。

続きPythonでPostgreSQL(テーブル作成〜)


参考:

リスト
https://chartio.com/resources/tutorials/how-to-list-databases-and-tables-in-postgresql-using-psql/
パスワード
http://suite.opengeo.org/docs/latest/dataadmin/pgGettingStarted/firstconnect.html

2018年6月22日金曜日

mecabの人名辞書入れるか検討中

python3 mecabで固有名詞の辞書を入れたほうが良いのか、と思い始めたのですが、とりあえずデフォルトでどうなのか試してみました。 

結論的感想 辞書入れないと全然ダメなのでは?と思った。

インストールの話はこれ→Python3、mecabを導入するときにハマった 



やったこと

このNHKニュースを使ってテストしました。特にこれを使った理由はなく、たまたまニュースの1位だったからです。

 https://www3.nhk.or.jp/news/html/20180622/k10011491371000.html?utm_int=news_contents_news-main_002

# coding: utf-8
import sys
import MeCab

news = '''

がん患者にやじ 自民 穴見議員 がん財団理事を辞任

2018年6月22日 17時15分

自民党の穴見陽一衆議院議員は、先週の衆議院厚生労働委員会で参考人として出席したがん患者の男性が意見を述べている際、「いい加減にしろ」と発言し、批判を受けたことを踏まえ、22日、大分がん研究振興財団の理事の辞任届を提出しました。

自民党の穴見陽一議員は、今月15日、受動喫煙対策を強化する健康増進法の改正案を審議していた衆議院厚生労働委員会で、参考人として出席した肺がん患者の男性が意見を述べている際、「いい加減にしろ」と発言し、がん患者などから批判を受けました。

こうした中、がん治療に関する研究を支援する、大分がん研究振興財団(大分県由布市)は、理事を務める穴見氏が辞任届を提出したと発表しました。

財団は、来週にも評議員会を開いて、辞任届を受理することにしています。

穴見氏の発言について、大分がん研究振興財団の植山茂宏理事長は「参考人をはじめ、全国のがん患者や家族の方々に大変不快な気持ちを抱かせましたことを心よりお詫び申し上げます」というコメントを発表しています。
'''
m = MeCab.Tagger ("-Ochasen")
print (m.parse(news))
  結果はこんな感じで出力されますが。人名、地名を太字にしています。
がん ガン がん 名詞-一般  
患者 カンジャ 患者 名詞-一般  
に ニ に 助詞-格助詞-一般  
やじ ヤジ やじ 名詞-一般  
自民 ジミン 自民 名詞-固有名詞-組織  
穴見 アナミ 穴見 名詞-固有名詞-地域-一般  
議員 ギイン 議員 名詞-一般  
がん ガン がん 名詞-一般  
財団 ザイダン 財団 名詞-一般  
理事 リジ 理事 名詞-一般  
を ヲ を 助詞-格助詞-一般  
辞任 ジニン 辞任 名詞-サ変接続  
2018 2018 2018 名詞-数  
年 ネン 年 名詞-接尾-助数詞  
6 6 6 名詞-数  
月 ツキ 月 名詞-一般  
22 22 22 名詞-数  
日 ニチ 日 名詞-接尾-助数詞  
17 17 17 名詞-数  
時 ジ 時 名詞-接尾-助数詞  
15 15 15 名詞-数  
分 フン 分 名詞-接尾-助数詞  
自民党 ジミントウ 自民党 名詞-固有名詞-組織  
の ノ の 助詞-連体化  
穴見 アナミ 穴見 名詞-固有名詞-地域-一般  
陽 ヒ 陽 名詞-一般  
一 イチ 一 名詞-数  
衆議院 シュウギイン 衆議院 名詞-固有名詞-組織  
議員 ギイン 議員 名詞-一般  
は ハ は 助詞-係助詞  
、 、 、 記号-読点  
先週 センシュウ 先週 名詞-副詞可能  
の ノ の 助詞-連体化  
衆議院 シュウギイン 衆議院 名詞-固有名詞-組織  
厚生 コウセイ 厚生 名詞-一般  
労働 ロウドウ 労働 名詞-サ変接続  
委員 イイン 委員 名詞-一般  
会 カイ 会 名詞-接尾-一般  
で デ で 助詞-格助詞-一般  
参考 サンコウ 参考 名詞-サ変接続  
人 ジン 人 名詞-接尾-一般  
として トシテ として 助詞-格助詞-連語  
出席 シュッセキ 出席 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
た タ た 助動詞 特殊・タ 基本形
がん ガン がん 名詞-一般  
患者 カンジャ 患者 名詞-一般  
の ノ の 助詞-連体化  
男性 ダンセイ 男性 名詞-一般  
が ガ が 助詞-格助詞-一般  
意見 イケン 意見 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
述べ ノベ 述べる 動詞-自立 一段 連用形
て テ て 助詞-接続助詞  
いる イル いる 動詞-非自立 一段 基本形
際 サイ 際 名詞-非自立-副詞可能  
、 、 、 記号-読点  
「 「 「 記号-括弧開  
いい加減 イイカゲン いい加減 名詞-形容動詞語幹  
に ニ に 助詞-格助詞-一般  
しろ シロ する 動詞-自立 サ変・スル 命令ro
」 」 」 記号-括弧閉  
と ト と 助詞-格助詞-引用  
発言 ハツゲン 発言 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
、 、 、 記号-読点  
批判 ヒハン 批判 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
受け ウケ 受ける 動詞-自立 一段 連用形
た タ た 助動詞 特殊・タ 基本形
こと コト こと 名詞-非自立-一般  
を ヲ を 助詞-格助詞-一般  
踏まえ フマエ 踏まえる 動詞-自立 一段 連用形
、 、 、 記号-読点  
22 22 22 名詞-数  
日 ニチ 日 名詞-接尾-助数詞  
、 、 、 記号-読点  
大分 オオイタ 大分 名詞-固有名詞-地域-一般  
がん ガン がん 名詞-一般  
研究 ケンキュウ 研究 名詞-サ変接続  
振興 シンコウ 振興 名詞-サ変接続  
財団 ザイダン 財団 名詞-一般  
の ノ の 助詞-連体化  
理事 リジ 理事 名詞-一般  
の ノ の 助詞-連体化  
辞任 ジニン 辞任 名詞-サ変接続  
届 トドケ 届 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
提出 テイシュツ 提出 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
。 。 。 記号-句点  
自民党 ジミントウ 自民党 名詞-固有名詞-組織  
の ノ の 助詞-連体化  
穴見 アナミ 穴見 名詞-固有名詞-地域-一般  
陽 ヒ 陽 名詞-一般  
一 イチ 一 名詞-数  
議員 ギイン 議員 名詞-一般  
は ハ は 助詞-係助詞  
、 、 、 記号-読点  
今月 コンゲツ 今月 名詞-副詞可能  
15 15 15 名詞-数  
日 ニチ 日 名詞-接尾-助数詞  
、 、 、 記号-読点  
受動 ジュドウ 受動 名詞-一般  
喫煙 キツエン 喫煙 名詞-サ変接続  
対策 タイサク 対策 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
強化 キョウカ 強化 名詞-サ変接続  
する スル する 動詞-自立 サ変・スル 基本形
健康 ケンコウ 健康 名詞-形容動詞語幹  
増進 ゾウシン 増進 名詞-サ変接続  
法 ホウ 法 名詞-接尾-一般  
の ノ の 助詞-連体化  
改正 カイセイ 改正 名詞-サ変接続  
案 アン 案 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
審議 シンギ 審議 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
て テ て 助詞-接続助詞  
い イ いる 動詞-非自立 一段 連用形
た タ た 助動詞 特殊・タ 基本形
衆議院 シュウギイン 衆議院 名詞-固有名詞-組織  
厚生 コウセイ 厚生 名詞-一般  
労働 ロウドウ 労働 名詞-サ変接続  
委員 イイン 委員 名詞-一般  
会 カイ 会 名詞-接尾-一般  
で デ で 助詞-格助詞-一般  
、 、 、 記号-読点  
参考 サンコウ 参考 名詞-サ変接続  
人 ジン 人 名詞-接尾-一般  
として トシテ として 助詞-格助詞-連語  
出席 シュッセキ 出席 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
た タ た 助動詞 特殊・タ 基本形
肺がん ハイガン 肺がん 名詞-一般  
患者 カンジャ 患者 名詞-一般  
の ノ の 助詞-連体化  
男性 ダンセイ 男性 名詞-一般  
が ガ が 助詞-格助詞-一般  
意見 イケン 意見 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
述べ ノベ 述べる 動詞-自立 一段 連用形
て テ て 助詞-接続助詞  
いる イル いる 動詞-非自立 一段 基本形
際 サイ 際 名詞-非自立-副詞可能  
、 、 、 記号-読点  
「 「 「 記号-括弧開  
いい加減 イイカゲン いい加減 名詞-形容動詞語幹  
に ニ に 助詞-格助詞-一般  
しろ シロ する 動詞-自立 サ変・スル 命令ro
」 」 」 記号-括弧閉  
と ト と 助詞-格助詞-引用  
発言 ハツゲン 発言 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
、 、 、 記号-読点  
がん ガン がん 名詞-一般  
患者 カンジャ 患者 名詞-一般  
など ナド など 助詞-副助詞  
から カラ から 助詞-格助詞-一般  
批判 ヒハン 批判 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
受け ウケ 受ける 動詞-自立 一段 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
。 。 。 記号-句点  
こうした コウシタ こうした 連体詞  
中 ナカ 中 名詞-非自立-副詞可能  
、 、 、 記号-読点  
がん ガン がん 名詞-一般  
治療 チリョウ 治療 名詞-サ変接続  
に関する ニカンスル に関する 助詞-格助詞-連語  
研究 ケンキュウ 研究 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
支援 シエン 支援 名詞-サ変接続  
する スル する 動詞-自立 サ変・スル 基本形
、 、 、 記号-読点  
大分 オオイタ 大分 名詞-固有名詞-地域-一般  
がん ガン がん 名詞-一般  
研究 ケンキュウ 研究 名詞-サ変接続  
振興 シンコウ 振興 名詞-サ変接続  
財団 ザイダン 財団 名詞-一般  
( ( ( 記号-括弧開  
大分 オオイタ 大分 名詞-固有名詞-地域-一般  
県 ケン 県 名詞-接尾-地域  
由布 ユウ 由布 名詞-固有名詞-人名-名  
市 シ 市 名詞-接尾-地域  
) ) ) 記号-括弧閉  
は ハ は 助詞-係助詞  
、 、 、 記号-読点  
理事 リジ 理事 名詞-一般  
を ヲ を 助詞-格助詞-一般  
務める ツトメル 務める 動詞-自立 一段 基本形
穴見 アナミ 穴見 名詞-固有名詞-地域-一般  
氏 シ 氏 名詞-接尾-人名  
が ガ が 助詞-格助詞-一般  
辞任 ジニン 辞任 名詞-サ変接続  
届 トドケ 届 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
提出 テイシュツ 提出 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
た タ た 助動詞 特殊・タ 基本形
と ト と 助詞-格助詞-引用  
発表 ハッピョウ 発表 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
。 。 。 記号-句点  
財団 ザイダン 財団 名詞-一般  
は ハ は 助詞-係助詞  
、 、 、 記号-読点  
来週 ライシュウ 来週 名詞-副詞可能  
に ニ に 助詞-格助詞-一般  
も モ も 助詞-係助詞  
評議 ヒョウギ 評議 名詞-サ変接続  
員 イン 員 名詞-接尾-一般  
会 カイ 会 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
開い ヒライ 開く 動詞-自立 五段・カ行イ音便 連用タ接続
て テ て 助詞-接続助詞  
、 、 、 記号-読点  
辞任 ジニン 辞任 名詞-サ変接続  
届 トドケ 届 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
受理 ジュリ 受理 名詞-サ変接続  
する スル する 動詞-自立 サ変・スル 基本形
こと コト こと 名詞-非自立-一般  
に ニ に 助詞-格助詞-一般  
し シ する 動詞-自立 サ変・スル 連用形
て テ て 助詞-接続助詞  
い イ いる 動詞-非自立 一段 連用形
ます マス ます 助動詞 特殊・マス 基本形
。 。 。 記号-句点  
穴見 アナミ 穴見 名詞-固有名詞-地域-一般  
氏 シ 氏 名詞-接尾-人名  
の ノ の 助詞-連体化  
発言 ハツゲン 発言 名詞-サ変接続  
について ニツイテ について 助詞-格助詞-連語  
、 、 、 記号-読点  
大分 オオイタ 大分 名詞-固有名詞-地域-一般  
がん ガン がん 名詞-一般  
研究 ケンキュウ 研究 名詞-サ変接続  
振興 シンコウ 振興 名詞-サ変接続  
財団 ザイダン 財団 名詞-一般  
の ノ の 助詞-連体化  
植山 ウエヤマ 植山 名詞-固有名詞-人名-姓  
茂 シゲル 茂 名詞-固有名詞-人名-名  
宏 ヒロシ 宏 名詞-固有名詞-人名-名  
理事 リジ 理事 名詞-一般  
長 チョウ 長 名詞-接尾-一般  
は ハ は 助詞-係助詞  
「 「 「 記号-括弧開  
参考 サンコウ 参考 名詞-サ変接続  
人 ジン 人 名詞-接尾-一般  
を ヲ を 助詞-格助詞-一般  
はじめ ハジメ はじめ 名詞-副詞可能  
、 、 、 記号-読点  
全国 ゼンコク 全国 名詞-一般  
の ノ の 助詞-連体化  
がん ガン がん 名詞-一般  
患者 カンジャ 患者 名詞-一般  
や ヤ や 助詞-並立助詞  
家族 カゾク 家族 名詞-一般  
の ノ の 助詞-連体化  
方々 カタガタ 方々 名詞-一般  
に ニ に 助詞-格助詞-一般  
大変 タイヘン 大変 名詞-形容動詞語幹  
不快 フカイ 不快 名詞-形容動詞語幹  
な ナ だ 助動詞 特殊・ダ 体言接続
気持ち キモチ 気持ち 名詞-一般  
を ヲ を 助詞-格助詞-一般  
抱か イダカ 抱く 動詞-自立 五段・カ行イ音便 未然形
せ セ せる 動詞-接尾 一段 連用形
まし マシ ます 助動詞 特殊・マス 連用形
た タ た 助動詞 特殊・タ 基本形
こと コト こと 名詞-非自立-一般  
を ヲ を 助詞-格助詞-一般  
心 ココロ 心 名詞-一般  
より ヨリ より 助詞-格助詞-一般  
お詫び オワビ お詫び 名詞-サ変接続  
申し上げ モウシアゲ 申し上げる 動詞-自立 一段 連用形
ます マス ます 助動詞 特殊・マス 基本形
」 」 」 記号-括弧閉  
という トイウ という 助詞-格助詞-連語  
コメント コメント コメント 名詞-サ変接続  
を ヲ を 助詞-格助詞-一般  
発表 ハッピョウ 発表 名詞-サ変接続  
し シ する 動詞-自立 サ変・スル 連用形
て テ て 助詞-接続助詞  
い イ いる 動詞-非自立 一段 連用形
ます マス ます 助動詞 特殊・マス 基本形
。 。 。 記号-句点  
EOS

・・・ということで、なかなか人名、地名を当てるのはデフォルトでは難しいことが分かりました。

  • 大分県XX市と来てXXが人名になってしまっている
  • 2文字の名前を1文字+1文字に分かち書きしている 
  • 珍しい名前は固有名詞にならない?
 ・・・とはいえ、人名、地名をどちらも伏せ字にするのが目的だったら大丈夫かもしれませんが。

[Python]ウェブページの文字エンコーディングをurllibで調べる

日本語のページだと文字化けになったりします。URLを開いてエンコーディングを調べる方法です。

たとえば、はてなブックマークのトップページでやってみると
 # python3
import urllib
url = 'http://b.hatena.ne.jp/'
resource = urllib.request.urlopen(url)
resource.headers.get_content_charset()

# Out
'utf-8'
となります。

https://stackoverflow.com/questions/4981977/how-to-handle-response-encoding-from-urllib-request-urlopen

2018年6月16日土曜日

Python PostgreSQLをWindowsで使う。インストール〜接続

Windows7, Python3, Postgres10.2

PostgreSQLをインストールする

公式ページからダウンロードしてインストール。
数10分かかりました(環境による)。


設定は何でもOKです。
user名: postgres
パスワード: 仮にsecretとする
ポート: 5432(デフォルト)

データベースを作る(コマンドプロンプト上で)

公式wikiのサンプルを参考にします。
# in window  # c:\path\to\psql.exe -U xxx -d postgres
# again, windows doesn't care what your current user is, by default

という部分を参考に、psql.exeのあるディレクトリにコマンドプロンプトで移動します
(例えばC:\Program Files\PostgreSQL\10\bin)。

plql.exeコマンドで起動します。-U postgresはユーザ名、-d postgresはデータベース名です。
psql.exe -U postgres -d postgres

で接続して、postgresが起動します。
CREATE DATABASE my_database;

でmy_databaseという名前のデータベースを作成します。コマンドプロンプトはここまで。

psycopg2モジュール(pythonでPostgreSQLを使う)

インストールはconda, pipなど。Anacondaならこちら(https://anaconda.org/anaconda/psycopg2)にあるこのコマンドで。
conda install -c anaconda psycopg2 

wikiのこのページを参考にして接続します。パスワードはsecretのままなので変えてください。
#!/usr/bin/python
import psycopg2
import sys


def main():
    #Define our connection string
    conn_string = "host='localhost' dbname='my_database' user='postgres' password='secret'"

    # print the connection string we will use to connect
    print ("Connecting to database\n ->%s" % (conn_string))

    # get a connection, if a connect cannot be made an exception will be raised here
    conn = psycopg2.connect(conn_string)

    # conn.cursor will return a cursor object, you can use this cursor to perform queries
    cursor = conn.cursor()
    print ("Connected!\n")

if __name__ == "__main__":
    main()
出力が
Connected!

となれば接続OKです。

続き。PythonでPostgreSQL(テーブル作成〜)

2018年6月12日火曜日

LibreOfficeを日本語化した@ubuntu16.04

なぜかものすごくハマってしまった。


LibreOfficeをアップデート

これはSoftwareUpdaterd

日本語パッケージをダウンロード

公式ページからダウンロード。rpmファイルが2つできる。


解凍してインストール

alienでrpmを解凍してdebファイルにして、dpkgでインストール。

https://askubuntu.com/questions/2988/how-do-i-install-and-manage-rpms


めでたくインストール。これでなくても日本語フォントは使えるような気がしますが・・・。

vim基本的なことメモ

vimを使い始めたのでメモです。

目次:
vimインストール
基本的なことのメモ
vimrcのrcってなんだろう

vimインストール

ubuntu16.04

$ gvim と入力するとエラーメッセージ。代わりに候補が。

The program 'gvim' can be found in the following packages:
 * vim
 * vim-gnome
・・・

こちらに詳しく書いてあったので略。
http://zorinos.seesaa.net/article/451348076.html

自分としてはvim-gtkが良さそうです。

■vim-gtkインストール

sudo apt-get install vim-gtk

起動は

gvim

です。 (vim-gtkと打っても立ち上がりません)

基本的なことのメモ

.vimrcファイルどこ→/home/userです。:version で調べられます。 :echo $HOME で出てきます。

% は自分自身。

同じファイルを開き直すのは%(自ファイル)を使います。開いている間に更新されたはずのログファイルを開き直すとか。

:source % 
でファイルを読み込み直す。

substitude で、%s:foo/bar/ と%があると、全体を検索。s:foo/bar/ だと、カレントラインだけを検索する。
 
■コマンド

gg 最初の行へ
G 最後の行へ

dd その行を切り取り
yy その行ヤンク(コピー)
p ペースト(カーソルの下に)
P ペースト(カーソルの上に)

[数字]で倍数を指定できます。

[数字]yy で数字行だけコピー


:tabnew 新しいタブを開く:tabnでも

gt 次のタブへ


map

Ctrl-V でペーストする。ただし挿入モードのみ。Alt-E-Pという操作をimapしました。
"Insert mode Ctrl-V Paste from clipboard
imap <C-V> <M-E>p

Tips


差分を見る gvimdiff

左右に並べるために、:vs で分割し、比べる2つを表示します。どちらも :difft[his] を入力すると、diffで差分を表示します。

行をハイライトするが、行全体ではなく、番号だけをハイライトしたいとき。写経のときに便利です。

set cursorline
hi clear CursorLine

gvimでスペルチェックをON/OFFする

:set spell
:set nospell

修正候補を出すときは、赤線の上で
z=
間違いではないので辞書登録するときは
zg (goodの意味)

日本語のスペルチェックはないようです。2018/12現在

コードのときはソースコード内は読まずにコメント部分に関してスペルチェックをしてくれるようです。

■カレントファイルパスをコピーする。

:let @" = expand("%:p")   

のあとにpでプットできる。

"(レジストリ)に%:p をコピーする?ということでしょうか。覚えられません・・・。

VIM正規表現

■行末の空白(trailing whitespace)を消す

:%s/\s\+$//gc

:%s/  検索開始
\s スペース
\+$ 1文字以上あって末尾
//gc 空白と置換して消す

例えばpycodestyleでひっかかるので行末のスペースだけを消したいときに使いました。
 ■vim正規表現で①を# ①に置き換える

コード例で、解説のために①などの番号がついているときがあります。このままコピーしてしまうとコードが動かないのでコメントアウトしたいと思います。

(前)
def hoge:  ①

(後)
def hoge:  # ①


:%s/\(①\|②\|③\|④\|⑤\|⑥\|⑦\|⑧\|⑨\)$/# \1/gc

行末にある①〜⑨をORでマッチして、# 後方参照 で確認しながら変更します。

■vimでor検索

括弧と | をエスケープしないとだめ

\(aaa\|bbb|)

これで aaa または bbb にマッチする

■vimの非貪欲non-greedyマッチ

.*

これを

.\{-}

こうする

■Vim のウィンドウ高さを最大にする。
Windows
<Win> + Shift + ↑

Ubuntu
ショートカットはないので
:set lines=120

などで調整する。

■ 検索で大文字小文字を制御する

/hoge\c 大文字小文字を区別しない

/hoge\C 大文字小文字を区別する

:set ignorecase いつでも無視する設定

■ vimで印刷時にヘッダを消す

:set printoptions=header:0


調べたこと豆知識

■vimrcのrcってなんだろう

と思って調べると諸説あるようです。
https://stackoverflow.com/questions/11030552/what-does-rc-mean-in-dot-files
http://www.faqs.org/docs/artu/ch10s03.html#id2941902

    run commands
    resource control
    run control
    runtime configuration

The ‘rc’ suffix goes back to Unix's grandparent, CTSS. It had a command-script feature called "runcom". Early Unixes used ‘rc’ for the name of the operating system's boot script, as a tribute to CTSS runcom.

UNIXの祖であるCTSSでは"runcom"というシステムブートファイルがあって、rcはをれへのトリビュートである。

・・・ということでrun controlが歴史的な解釈のようです。

失敗・未解決


■(未解決)Windows gvimでテキストを開いたとき、
「続けるにはenterを押すかコマンドを入力してください」と出ます。これを出さずに直接ファイルを開いて欲しいのですが・・・。方法がわかりません。2個同時に開いたときも出るようです。

■deinが使えなかった失敗

■[soloved]

gvimでset autochdirが動作しない。と思ったら、.gvimrcを書き換えて再読み込みしないとできなかった。その場でsetしてもダメということのようです。

■設定ファイルの再読み込み
.gvimrcファイルを読みなおすときは、
:source .gvimrc

.vimrcにdeinの設定を入れれば良いのですが、.gvimrcに入れていたので読み込めていませんでした。なぜかdein#update()はできていましたので毎回それやっていました。という失敗。

■権限がない状態のファイルを保存する

NTT西日本の利用料金請求が2ヶ月合算になるらしい

NTTから通知ハガキが届き、平成30年11月請求から5,000円未満の請求のときは2ヶ月合算するとのこと。最大2ヶ月らしいけど、なんなんでしょうか、これは。

ご利用料金が5,000円(税込)未満の場合の翌月合算について

ちなみにNTT東日本も同じ文面のアナウンスが出ています(そしてウェブサイトのスタイルが違う・・・)

googleで調べてみるとソフトバンクは2012年からこれをやっているようです。単に合理化なんでしょうか。どれくらい効果があるのか不明ですけど・・・。

1ヶ月5,000円未満のときだけ2ヶ月に1度になる(5,000円を超えていたら毎月でも請求)ということですが、希望すれば必ず2ヶ月に1度の請求にもできるようです。

回収費用の問題なんでしょうか。

仮説


支払いの方法は

クレジットカード
口座引き落とし
コンビニ等で支払い

があって、NTTの負担分は

クレジットカードは額面からの%で負担
口座引き落としは引き落とし毎に手数料を負担
コンビニ支払いは支払い毎に手数料を負担

ということで、支払いを減らした方がNTTとしては得といくことなんでしょう。払われなかったときの督促等等のコストを考えると5000円くらいで落ち着くんでしょう。

2018年6月11日月曜日

Python3でPDFからテキストを取り出す

Python3.6
PDFファイルからテキストを抜き出します。けっこう面倒です。

ここを参考にしましたが、Python2だったのでPython3用に変更しています。
https://qiita.com/korkewriya/items/72de38fc506ab37b4f2d


■インストール
pdfminer.sixをインストールします。importするときはpdfminerでOK
conda install -c conda-forge pdfminer.six
■コード
pdfminerを使って、pyスクリプトと同じディレクトリにあるTEST.pdf を、from_pdf.txtに出力します。

buf = False とします。テーブルなどはPDFで見えている順にならないこともあります。そのときは自力で整形します。

--
インタラクティブに整形するのであれば、

text = convert_pdf_to_txt("TEST.pdf", "from_pdf.txt", True)
text = re.split('\n{1,}', text)

すると、text が改行を消したリストになっているので確認しながら整形して取り出すこともできます。

PyPDF2は日本語では使えなかった

オライリーの『退屈なことはPythonにやらせよう』で紹介されているPyPDF2ではエンコーディングがutf-8のみしか対応していないので、日本語フォントが読めませんでした。

2018年6月8日金曜日

RのサンプルデータをPythonで使う

Rが入っている状態でなら

install.packages("car")
library(car)
data("Davis")
write.csv("Davis", file="Davis.csv")

などで確認しながらダウンロードすることもできる。

・・・という面倒くさいことをやっていましたが、
github上で管理している人がいて、ここにcsvが置いてあるようです。

https://vincentarelbundock.github.io/Rdatasets/datasets.html


2018年6月6日水曜日

日誌2018年6月分

2018/06/06

Ubuntuを1年ぶりくらいでシャットダウンした。よくもシャットダウンしないで良かったものだ。ログアウトすらほとんどしていませんが。

2018/06/13

極力避けていたのだが、LibreOfficeを使わないといけなくなり、がんばって日本語化しました。自分の環境はLinuxUbuntuを英語で使っているので、Windows、Office、Word、日本語、、となるとけっこう遠い気がします。どうにか互換性を高めていきたいところです。ちょっとした冊子の編集委員になってしまい(光栄なことに)、いろいろやらねばならないのです。

・・・日本語化に3日くらいかかっていまったのですが。苦笑。途中でUbuntuを再起動しなくてはならなくなり、ちょうど先週に試していたのが良かったです。グッドタイミングっていやつですね。

2018/06/24

最近のメルカリのキャンペーンに関して思うこと。 上場のタイミングで好成績を出したいのでしょうね。それと、化粧品などのジャンルを強化したいと。もう1つ、機械学習による出品補助、つまり画像認識で商品の基礎情報まで提供したいんでしょう。その練習あるいはテストをするために、本・CD・ゲームに至っては出品するだけで(画像認識を利用した方法に限る)、30円分のポイントが得られますよ、と。

自分のスマートフォンではバーコードの認識ができなくなってしまいました。以前はできていたのに、なんででしょう。HUAWEIだから?バーコードは絶版にならなければ一意的に決まると思うのですが、その後に価格とかが変わったときに対応できるんでしょうか。

見る順番としては、

1. バーコード あるいは ISBN 2. 表紙の画像

なんでしょうか。背表紙の方が限定的だし、文字が決まったようにかかれていることが多いし、当てやすいのではないかと思うのですが。どうなんでしょうか。背表紙は選ぶためのものですし・・・。


2018/06/27

PostgreSQLの高速化とか、Vimの練習とか、Pythonのベンチマーク測定とか、やっていました。しかし調べていると、チュートリアルを日本語で書きなおしただけ、他のブログを書き直しただけ、という情報しか出てこなくて、それがグーグルの上位に出てきたりするわけです。このブログも同じ状態になっていることは往々にしてあるのですが・・・。

2018年6月4日月曜日

[Python]2つのリストから辞書をつくる

zip関数を使えばかんたんに作れます
https://stackoverflow.com/questions/209840/map-two-lists-into-a-dictionary-in-python
keys = ['a', 'b', 'c']
values = ['1', '2', '3']
dictionary = dict(zip(keys, values))
print(dictionary)

2018年6月3日日曜日

[python]sys.argvで引数をリスト出力する

foo.py
というファイル をつくり、
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
print(sys.argv)
 として保存。

ターミナルで
$ python foo.py 1 2
とすると
['foo.py', '1', '2']
が返ります。

[ファイル名, 引数1, 引数2, .. ]

というリストが返ることになります。

ターミナルで呼び出すときに『ディレクトリ名+ファイル名』としていたら、ディレクトリ名も出力されます。

2018年6月1日金曜日

Pythonのloggingモジュールでhandlersを使う

PythonのloggingモジュールをJupyterで動かしたあと、pyファイルに移してターミナルで実行すると・・・このエラー

AttributeError: module 'logging' has no attribute 'handlers'

・サブモジュールをインポートしなければならない
・(Jupyterでは)何かの拍子にインポートされている(?)


ということで

from logging import handlers

でhandlersをインポートしなくてはならないとのこと。


https://stackoverflow.com/questions/3781522/why-do-python-modules-sometimes-not-import-their-sub-modules