2017年10月31日火曜日

ドメイン乗っ取りの話(バリュードメインの公式Q&A掲示板)

https://help.value-domain.com/f_domain/index.cgi?read=78&ukey=0
ドメイン乗っ取りの話。バリュードメインの公式Q&A掲示板にて。

Whois情報が書き換えられてます?
投稿日     : 2014/08/10(Sun) 14:27
投稿者     : Mr.d
参照先     :

    8/7頃よりドメインメールが使用不可になり、ドメインウェブが中華サイトになっています。
    Xreaサーバの中身は変更されていませんが、Whois情報が書き換えられているようです。期限も1年伸ばされています。
    Whois情報の変更しようにも

    エラーが発生しました。

    1) Domain name not found
    2) Domain name ID not found
    3) There was an error validating the domain owner.

    と出てどうしようもありません。
    どうなっているのでしょうか?

2年くらいやり取りして、乗っ取りは結局泣き寝入りということらしい。

Re: Whois情報が書き換えられてます?
投稿日     : 2016/09/13(Tue) 17:12
投稿者     : スタッフ ◆OKSXpIjDx1k
参照先     :

    ご迷惑をお掛けし申し訳ございません。
    また、回答が遅くなりましたことをお詫び申し上げます。

    現状の経緯の説明と、代替案についてご案内させていただきます。

    以前より、弊社からレジストラ両社に経緯の説明および対策案の
    確認を行っておりますが、これまでも回答させていただいておりますように、
    形式上は正規移管と判断されておりますため、有効な回答を得られて
    いない状態が未だ継続しております。

    今回発生いたしました事象について、他社や他国でも発生しており、
    全てにおいて解決に至っていないようです。

    両レジストラにおきましても、非協力的であることから解決策としましては
    先程お知らせいたしましたように、法的に解決する(国際裁判)しか
    ございません。

    大変申し上げにくいお話にはなりますが、これまでの経緯を加味して
    これ以上弊社にて返還要求を継続しても、状況に変わりはないと判断
    いたしましたため、弊社からの調査依頼を一旦打ち切らせていただきたく
    存じます。

    つきましては、以前もご提案させていただきましたが、
    代替ドメインをご検討いただける場合、弊社より購入可能金額を追加させて
    いただきたく存じます。

    ご連絡につきましては、個人情報等を伴います為、ユーザーフォーラムではなく
    以下のURLへアクセスいただきまして、ご連絡くださいませ。
    ※VALU-DOMAINへログインをした状態で、お問い合わせフォームより連絡ください。
    https://www.value-domain.com/support/

    最後になりましたが、当該ドメインについて、有効期限が切れ、取得可能と
    なりましたら、弊社にて代行取得いたしまして、ご連絡を差し上げたく思っております。

    こちらにつきましては、引き続き監視を行ってまいりますので
    何卒よろしくお願いいたします。


    最後になりましたが、この度の件にて数年に渡りお待たせしたにも関わらず
    ドメインの返還に協力できなかったこと、この場を借りて深くお詫び申しあげます。

    ご希望に沿えるご回答に至らず、心苦しい限りでございますが、
    何卒、ご理解賜りますようお願い申し上げます。

2017年10月30日月曜日

Python3、mecabを導入するときにハマった(Ubuntu)

(Ubuntu16.04, Python3.6)
Ubuntu22.04、Python3.10でも確認

Python3、mecabを導入するときにハマったのでメモ

mecabはインストールできたものの、python-mecab3でいろいろつまづきました。

結論的には、これで入るはず。
sudo apt-get install libmecab-dev
sudo apt-get install mecab mecab-ipadic-utf8
pip install mecab-python3
https://gist.github.com/YoshihitoAso/9048005

===

Python2と3で違うので注意。

--失敗してたときのメモ--

入れたつもりが、import で確認すると

ModuleNotFoundError: No module named 'MeCab'

とエラーになっていた。

--

インストール時の表示で、

/usr/share/mecab/dic/ipadic/model.def is not found. skipped.

と出ているのは特に気にしなくて良いようだ。

--

ターミナルで

$ mecab

と入力するとmecabじたいは動作確認ができた。

--

python2用になっていた。

$ sudo apt-get install python-mecab

でインストールしてしまっていてPython2用になっていた。

$ pip install mecab-python3

で入れると3用で入った。

しかしimportすると、

ImportError: (略)/anaconda3/lib/python3.6/site-packages/zmq/backend/cython/../../../../.././libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /usr/lib/libmecab.so.2)

というエラーがでて、libstdc が見つからないとのこと。

--

これは試したがだめだった
https://askubuntu.com/questions/575505/glibcxx-3-4-20-not-found-how-to-fix-this-error

最終的にこれで解決できた。

$ conda install libgcc

こちらに感謝です。沢山感謝されていますね。
https://github.com/dmlc/xgboost/issues/1043

原因?

libgccでつまづいたのは、gccをいじってたから変になったとか?よくわからないですが。

[未解決]firefoxのメモリが蓄積されてしまう件

環境: Ubuntu16.04, firefox56(64bit)

■症状

・メモリが徐々に蓄積されていって、2Gに近づくとほとんど稼働しなくなる。
( ・システムモニタでメモリを見ている)
・Juypyterを使っていると増えるのが早い気がする
・普通のブラウジングでも少し蓄積されている
・firefoxを再起動すると開放される

■調べたこと

・キャッシュの問題?
いまいち分からない。

設定のところのキャッシュのクリアをしてみたが、、変化なし?


 https://www.reddit.com/r/IPython/comments/4jrzs0/jupyter_notebook_memory_footprint/

を見てバージョンを確認したが、関係ないようだ。

#inside python

import jsonschema
print(jsonschema.__version__)

# 2.4.0 であればバグがあるからupgradeするのが良いらしい

2017年10月29日日曜日

pythonのfloatとintの比較はできる

基本的なことですが、Pythonで浮動小数点型(float)と整数(int) について少し試したときに確認しました。

==で比較できます。
>>>type(3.0)
float
>>>type(3)
int
イコール判定ができます。
>>>3.0 == 3
True
>>>float(3) == int(3)
True
type関数で見れば、違いが判定できます。
>>>type(3.0) == type(3)
False
こういうこともできます。
>>>type(float(int(3.0)))
float

2017年10月28日土曜日

Pythonでググったことメモ

いつも調べてしまうので覚えるためにメモ・・・

(python3.6)


■ある範囲でランダムに整数を出すためにはrandrange

from random import randrange

num1 = randrange(11,19) # 11-18からランダムな数字が入る。整数のみ。

■ datetime.timeの差を出すときは、日の情報を付加すること

「 9時30分と9時15分の差」を出そうとして、datetime.time同士を引き算したいとき、単純にやってしまうとエラーになるので、日付を足してから演算する。


t1 = datetime.time(9,15)
t2 = datetime.time(9,30)

t2 - t1

TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.time'

こういうときはtoday()を使う

from datetime import datetime, date, time

t1 = time(9,15)
t2 = time(9,30)

diff = datetime.combine(date.today(), t2) - datetime.combine(date.today(), t1)
# datetime.timedelta(0, 900)

diff.total_seconds() # 900.0

日時を文字で持っていたりする場合は、pandas.to_datetime()を使ったりしますが。

https://stackoverflow.com/questions/25265379/how-do-you-get-the-difference-between-two-time-objects-in-python

■文字列をタイムスタンプに変換するには

import pandas as pd
pd.to_dataframe()

を使えば簡単にできます。




 ■Pandas dataframeで欠損(NaN)がある行を消すのはdropna()


2017年10月11日水曜日

Python正規表現メモ

正規表現チートシートを作りたい。

よく迷うこと
- 後方参照
- 先読み/後読み・肯定/否定



後方参照

patternで () をつけたものは、その場で使える。
()の順番に\1, \2...として使える。
\1はエスケープされてしまうので、「 r"\1"」のようにrawにする。

re.sub("(\d{8})", r"\1-", "1234567890") 

8つ数字を見つけたら、末尾に-を入れて置き換える。
'12345678-90'


否定肯定先読み後読み

・マッチさせる場所に(?)
・否定か肯定化で!か=
・?< 、 ? は前後で決める

Look Behind
3の後ろに4があるならマッチ
re.sub("3(?=4)", "x", "123456123")
'12x456123'

3の後ろに4がないならマッチ
re.sub("3(?!4)", "x", "123456123")
'12345612x'

Look Ahead
3の前に2があるならマッチ
re.sub("(?<=2)3", "x", "12345613")
'12x45613'

3の前に2がないならマッチ
re.sub("(?<!2)3", "x", "12345613")
'1234561x'


間違いの例 -- 前に持ってきているので全部にマッチしている。
re.sub("(?!2)3", "x", "12345613")
'12x4561x'


---

Python正規表現で調べたメモ。

全てのスニペットでreモジュールをインポートして使います。
import re

urlのような文字列にマッチ

content = 'string' # チェックしたいもの
re.search('(https?|ftp)(:*\/*[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)', content)
文字列の冒頭にhttp(s)またはftpがあり、:...でアドレスに使える文字が連続して含まれているものを探している

回数でマッチ

"テストです \n\n\n\n"のように末尾に\n改行が3つ以上あるとき、2つにしたい
"テストです \n \n \n \n"のように スペースがある場合もある。

やり方

 正規表現を使ってマッチさせてreplaceする。
import re
content1="テストです \n\n\n\n"
content2="テストです \n \n \n \n"
content = content1 # or content2
if re.search('(\n\s*){3,}',content):
content = content.replace(re.search('(\n\s*){3,}',content).group(), '\n\n')
content
 re.search('(\n\s*){3,}',content)は contentを対象として
 \nと0回以上(*)の\s(空白)とマッチする、ということ
{3,} は3回以上繰り返しているものとマッチする、ということ

\n\s* は \n(\s)* とかいても同じになる

.group() でマッチしたその部分が出力される。
'テストです \n\n'

その2

やりたいこと

ファイル名を作って保存するとき、禁止されている文字が入ることがあるので、
それを置き換える。

やり方

ファイル名として禁止されている文字をre.subで置き換える。
参考というか丸写し。
 http://iori084.blog.fc2.com/blog-entry-16.html

禁止文字は \ / : ? " > < | ということで。 ピリオドも加えてマッチさせます。
content = 'put:some"char?which\are>forbidden as>filename'
re.sub(r'[\\|/|:|?|.|"|<|>|\|]', '_', content)
'put_some_char_which\x07re_forbidden as_filename' 

その3

'【これを消したい】残すところ【これを消したい】'
という2chスレッドタイトル風の文字列があって、re.subでカッコの部分を消したいと思いました。
# 見えるように'X'に置換
# 消すときは'X'を''とする
import re
re.sub('【.*】','X','【これを消したい】残すところ【これを消したい】')
だと最初と最後の【】にマッチしてしまって'X'
が出力されてしまいます。

こういうときは、最短一致の?を使います。非貪欲のマッチとも言います。
re.sub('【.*?】','X','【これを消したい】残すところ【これを消したい】')
'X残すところX'
となってOK。

その4 正規表現の肯定的後読み  Aが直前にあるBにマッチ

 (?<=A)B
でAが直前にあるBにマッチする

やりたいこと: 掲示板のレスで">>103" などにマッチ(>>のあとに数字3桁まで)

問題発生

>> のあとに 1-3個の数字をマッチさせようとして \d{1,3} とすると
s ='>>103 somestring'
*error*
re.match('(?<=>>\d{1,3})', s)
error: look-behind requires fixed-width pattern

というエラーが。

英語ではlook-behindらしいですが、先読みは文字数が決まっていないといけないようです。

面倒ですが、d{1},{2},{3}でループして解決しました。


■文末のスペースを消す

\s は 空白文字( スペース、改行、タブ...\f\n\r\t\v) にマッチする

        # 文末のスペースを消す
        content = re.sub('\s{1,}$','', content)

■大文字小文字を区別しないでマッチする

(?i)  というフラグをつける

re.search('(?i).jpg|.png', content)

これでマッチする。content = 'test.Png' とか 'test.JPG'でもOK。jupyterでWarningが出ていたが1回目だけだった。よく理解できなかった・・・。

re.I または re.IGNORECASE

というコマンドでもIGNORECASEフラグを立てられるようだが戻し方が解らない。


https://docs.python.org/3/library/re.html#module-contents

■同じ文字が出てきたらマッチ

re.search('(.)\\1', 'apple')

とやると (.) と丸括弧でくくった部分がグループとなって、\\1 で後方参照でき、 back referenceになってマッチする。
<_sre.SRE_Match object; span=(1, 3), match='pp'>
 
\1 と \が1重だとエスケープできていなくて失敗していた。 


re.VERBOSE(冗長)と re.IGNORECASE(大文字小文字無視)を同時に設定
 
Pattern = re.compile(r'''
AAA
|BBB\d+
|CCC\d+
''', re.VERBOSE | re.IGNORECASE)
f = re.sub(Pattern, '', f)
こんな感じで、 |  で区切ればよい。

■後方参照

()内でマッチしたものがグループになるが、再利用する場合は\\1(後方参照)を使う。
(※\\1はエスケープのため\\になっている。)

rでrawにしてエスケープしておいてもよい

re.sub("(\d{8})", r"\1-", "1234567890") 

'12345678-90'


例: 何でもよいから同じ文字が2つあるときにマッチ

import re
re.search('(.+)\\1{1}', 'oraange')

<_sre.SRE_Match object; span=(2, 4), match='aa'>

■マッチする部分に名前をつける

(?P<name>regex)

とするとマッチしたところがnameという名前を持ちます。それを呼び出すときは、m.group("name")とします。

アルファベット、スペース、アルファベットという文字列にfirst_name、last_nameという名前をつけてマッチさせます。

>>>m = re.match(r"(?P<first_name>\w+) (?P<last_name>\w+)", "Malcolm Reynolds")
>>> m.group("first_name")
'Malcolm'
>>> m.group("last_name")
'Reynolds'

2017年10月9日月曜日

python2, 3の文法の違い

http://packtpub.ooops.me/2017/04/08/Mastering_matplotlib.pdf から転記


Syntactical Differences Python 2 Python 3
Division with floats x = 15 / 3.0 x = 15 / 3
Division with truncation x = 15 / 4 x = 15 // 4
Longs y = long(x * 10) y = int(x * 10)
Not equal x <> y x != y
The unicode function u = unicode(s) u = str(s)
Raw unicode u = ur"\t\s" u = r"\t\s"
Printing print x, y, z print(x, y, z)
Raw user input y = raw_input(x) y = input(x)
User input y = input(x) y = eval(input(x))
Formatting "%d %s" % (n, s) "{} {}".format(n,s)
Representation 'x' repr(x)
Function application apply(fn, args) fn(*args)
Filter itertools.ifilter filter
Map itertools.imap map
Zip itertools.izip zip
Range xrange range
Reduce reduce functools.reduce
Iteration iterator.next() next(iterator)
The execute code exec code exec(code)
The execute file execfile(file) exec(fh.read())
Exceptions try: ... except val, err: ... try: ... except val as err: ...


関数の属性名

Python2

function.func_name

Python3

function.__name__

2017年10月7日土曜日

Pythonで文字列のつもりが末尾にコンマをいれるとタプルになる件

Pythonで末尾にコンマを残したままというミスにより、文字列のつもりがタプルになってしまった、という話。知らなかった。dive into pythonでも書かれていたような気がしてきました。
# 文字列
test = 'aaa'
type(test)

# out
str


# タプル
test = 'bbb', #コンマで終わっている
type(test)

# out
tuple

2017年10月2日月曜日

日誌2017年10月

2017/10/02
・ロベールC++1部64章まで

64章のオーバーライドのところで、

error: call of overloaded ‘Abs(int&)’ is ambiguous
     cout << nInt    << " の絶対値は " << Abs(nInt)    << "で、" << endl
というエラーが出ていた。Abs関数をlongとdoubleで定義していたが、intとdoubleにしたら直った。サイトの問題なのか、コンパイラ側の仕様なのか不明。


入力側は、intとdoubleにしているので当然かも。

 int Input(int& nInt, double& nDouble)
{

型をintかlongに揃えれば問題ないと確認できた。

2017/10/03

ロベール75章まで。

--

gcc, c++ のバージョンが5.4.0と出るのだが、C++11, C++14といったくくりでいうとどうなのかがよく分からない。
->11とかいうのはstandardのバージョンであって、コンパイラのバージョンとは別であるらしい。

https://stackoverflow.com/questions/10026150/what-c-norme-im-currently-using

2017/10/04

スクレイピングを少し。webdriverを開いて、フォームに入力しようとして失敗すると、"Web content"という名前の何かがメモリを食いまくるようだ。6GBくらいになってフリーズする。

フリーズしたときはCtrl + Alt + F2 で仮想モードを切り替えて怪しげなプロセスをkillすればよいようだ。


2017/10/05

PythonJSの本をやった。Python部分は概ね理解できるが、Javascriptは初心者すぎるのでよくわからない・・・。D3で地図がかけるようになりたいですが。

ComputerVisionの本も少し。imshow(im)と書くのが慣れない。


2017/10/06

CVの教科書をやっている。pdfで落ちているJan Erik Solemの英語の本だけど、harrisだとかsobleフィルターとか初めに出てくるやつはかんたんで楽しい。python2系だけど。。

英語だとクリエイティブコモンズで公開されているのに日本語で本になると高いし重いし読みにくいし、というのが問題ですね。

http://programmingcomputervision.com/

computer vision pdf とかで検索するといろいろ出てきますな。

Stanfordの入門的教科書らしい。
http://szeliski.org/Book/

・・・他にもあるけど、どれが良いのかな・・・。とりあえずオライリーで。

2017/10/07 特になし
2017/10/08 特になし

2017/10/09

中途半端になっている自分プロジェクトが多い。

・降水量と河川水量のグラフ化
JavaScriptの操作のところで止まっている。あと、降水量のデータが使えなさそう。

・スクレイピング
-2chのスクレイピング。全く同じではないが微妙に同じ書き込みを削除したい。
-メルカリのスクレイピング。 基本的な機能はできたけど放置。

・OpenCV ナンバープレートの認識がしたいのだが、別の方向に行っている気がする。

・・・こういう状況を管理するのはRedmineが良いのかな。エクセルでもできるのだけれど。

2017/10/10

スクレイピングで正規表現を使おうと思ったら全然できないので勉強しようと思います。

2017/10/11

スクレイピングを少々。正規表現も少しやりました。

2017/10/12

OpenCV python本。python2系だと合わないモジュールとかあって困ってたり。あとは画像サイトが閉鎖されていたりして困った件。2013年の本だともう古いのかーという感じ。SIFTはナカナカすごい手法で楽しい。画像をつないだりして試したいことがあるのだけど・・・。

 2017/10/18

jupyterのモジュールを整理していたら、本体がバグってしまった・・・一回消して再インストールしようと思ったら、condaとwheelのバージョンが合わなくなってしまったようだ・・・なぜだ。。どうしようもなくなり、これまでのものは放置して、virtualenvで作った環境で作りなおしている。

2017/10/19

OpenCVで輪郭の認識。

2017/10/22

OpenCVでSIFTを使って画像の比較ができるようになった。なかなかおもしろい。画像の切り出しと元々の画像の比較をしてみると、うまく行きそうな雰囲気です。

2017/10/27

仕事ではあれこれ試した。DTWとか。
家では少し翻訳が進んだくらいかな。

2017/10/30

mecabやってみた。すごいソフト。これが大学院で作るレベルなのは恐ろしいとしか言えません。
--

ひとまずPythonでよい、という結論で少し笑いました。

言語処理するのに Python でいいの?
https://www.slideshare.net/shuyo/nlp-implementation-python

2017/10/31

レンタルサーバをどこにしようか悩んでいるのですが。
GMOは個人情報漏洩?事件がちょうど起きたりしてどうしたものかと・・・。