2017年12月16日土曜日

日誌2017年12月

2017/12/16
特に何もしないまま。翻訳はちょこちょこやっているのですが。

2017年11月14日火曜日

Wordpressページネーションの装飾

■やりたいこと
ページネーションの「次のページ:1,2,3...」を装飾する。

Post Sections —
の—でハマった。文字エンコーディングの問題だそうです。
ということで、ここは削除して使いました。

  /*https://victorfont.com/paginate-post/*/

function.phpの最後にこれを貼り付けた

  function my_custom_pagination($defaults) {
      $args = array(
          'before' => '<div class="my-paginated-posts"><p>' . __('ページ: '),
          'after' => '</p></div>',
      );
      $r = wp_parse_args($args, $defaults);
      return $r;
  }
  add_filter('wp_link_pages_args','my_custom_pagination');

style.cssにこれを貼り付けた

  .my-paginated-posts {
      font-size: 1em;
      font-weight: normal;
      font-family: arial;
  }

  .my-paginated-posts p {
      font-size: 1.4em;
  }

  .my-paginated-posts p a {
      background: #E8E8E8;
      color: #000;
      margin-left: 0.1em;
      margin-right: 0.1em;
      padding: 0.5em 0.7em;
      text-decoration: none;
  }

  .my-paginated-posts a:hover {
      color: #fff;
      background: black;
  }

Wordpress Iconic One の修正


■やりたいこと
WordpressのIconic Oneの投稿で

末尾に「カテゴリー」「タグ」が並ぶが、カテゴリーを消したい。

「外観」→「テーマの編集」から「content.php」を開く。

content.phpのfooter entry-metaの部分を<!-- -->で囲ってコメントアウトする。
※コメントアウトしているだけで、ソースには残る。

<footer class="entry-meta">
  <!--<?php if ( is_home() && ( get_theme_mod( 'iconic_one_catg_home' , '1' ) == '1' ) ) : ?>
    <span><?php _e('Category:','iconic-one'); ?> <?php the_category(' '); ?></span>
  <?php elseif( !is_home() ): ?>
    <span><?php _e('Category:','iconic-one'); ?> <?php the_category(' '); ?></span>
  <?php endif; ?>-->
  <?php if ( is_home() && ( get_theme_mod( 'iconic_one_tag_home' , '1' ) == '1' ) ) : ?>
      <span><?php the_tags(); ?></span>
  <?php elseif( !is_home() ): ?>
      <span><?php the_tags(); ?></span>
  <?php endif; ?>

  タグを消したければ同様に下にあるtagsの部分をコメントアウトすればよい。


2017年11月4日土曜日

日誌2017年11月

2017/11/04

Wordpressを開始。サーバは練習でロリポップにしてみた。10日間の無料期間に見極められるんでしょうか。特に問題なければこのまま行くような気がしています。

pythonの正規表現に少しずつ慣れてきた気がします。re.matchは頭からしかマッチしないことをすぐに忘れてしまいますね。

翻訳を少々やりました。ですます調の方が訳しやすいですね。


2017/11/05

Wordpress続き。確かに便利ですが、blogger(これ)とあまり使い勝手は変わらない気がします。むしろbloggerのほうが手軽で楽ちんですけど。

pythonでの自動あれこれプログラムも少し改善。取得データがずれていたりすると回避するパートが増えるので面倒ですね。そういうところが腕の見せ所なんでしょうか。正規表現は少しずつですが慣れてきたような(こればっかり言っているな〜)

世の中ではAI、IoTエンジニアが不足しているそうです。しかし周りでは余っているような・・・というか待遇が悪すぎるのでは?グーグル並の扱いにしたら良いかもしれませんね。


2017/11/07

LINE株式会社から、(ここではない)livedoorブログについて送信防止措置依頼というのが来たとかで連絡あり。おっと失敗したかな、と。あまり慌てず当該記事を非表示にしてみましたけど。→その後は特に連絡もなくブログは存続しているので、これで対応としては問題ないようです。

2017/11/10

レンタルサーバは結局どこが良いのか分からないまま、ロリポップの無料期間が終わろうとしています。とりあえず別のところで試してみます。

PyPDF2を試したのですが、日本語はutf-8は対応していないので無理でした。残念。

2017/11/16

最近は特に進捗なし。仕事を真面目にやっているとも言えます。翻訳を少し。とあるプロレーサーが不倫の謝罪文を発表しているようです。いろんな人の謝罪文を学習して自動で書いてくれるAIとかそろそろ生まれるのでは?

PCがやたらと重いのですが、クラッシュ寸前なのか、Firefoxのアップデートが問題なのか不明です。

自動で取り続けていたデータが途切れてしまいました。 これはjupyterを再起動したときに忘れていたのが原因。


2017/11/20

今週なにもできず。 来週も微妙ですけど何か勉強したいところ。


2017/11/30

連休で遊んでいたのと、仕事が割と忙しく、何もできず。前に書いた自動データ取得の溜まってきたものを活かして何か作りたいですが。

2017年11月1日水曜日

Jupyterで出力を消すコードclear_output

Jupyterの出力を消す方法ですが、clear_output()を使えばかんたんにできます。

コンソールで

この例では、"This line is cleared." を出力して、clear_output()で消します。

>> from IPython.display import clear_output
>> print("This line is cleared.")
>> clear_output()

Jupyterで

以下のコードでは『Jupyterの表示を消す』→『Hello World!を出力』 →『1秒待つ』という処理を繰り返しています。

from IPython.display import clear_output
import time

for i in range(10):
    clear_output()
    print("Hello World!")
    time.sleep(1)
参考stackoverflow

Amazonで404のときに表示される犬がかわいい

何かお探しですか?申し訳ございません。お探しのページは見つかりませんでした。わんわん。

--

GMOの流出個人情報がamazon Kindleで売られていたらしい。怖い時代になったものですね。

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は個人情報漏洩?事件がちょうど起きたりしてどうしたものかと・・・。

2017年9月30日土曜日

[未解決]gcc, c++のフォーマットWarning

warning: format not a string literal and no format arguments [-Wformat-security]

こういうWarningが出るのだけれど、解決できない。ロベール1-52部のファイル読み込みのところ。

#include <stdio.h>

int main()
{
    FILE* pFile;
    char  buffer[128];

    pFile = fopen("test.txt", "r");
    fgets(buffer, 128, pFile);
    printf(buffer);
    fclose(pFile);

    return 0;
}

2017年9月29日金曜日

warning: deprecated conversion from string constant to ‘char*’ を回避

ロベールC++の1部40章で、strを代入するとエラーが出ます。

hello.cpp:21:36: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
     DispLength("ホメホメール");
string constantの部分に問題があるようで。

int strlen(const char *str)
// int strlen(char* str)
{
  int i;
  for(i = 0; str[i]; i++);
  return i;
}
void DispLength(const char *str)
// void DispLength(char* str)
{
    printf("文字列「%s」の長さは %d バイトです。\n", str, strlen(str));
}

と変えれば良いようです。

参考:

https://stackoverflow.com/questions/59670/how-to-get-rid-of-deprecated-conversion-from-string-constant-to-char-warnin


2017年9月28日木曜日

PHPローカルホストのビルトインサーバ起動

かなり初歩的なのだがメモしないと忘れてしまうので。

やりたいこと


PHPローカルホストのビルトインサーバ起動

どうやるか 

 表示したい  YYY.php  ファイルを

~/home/XXX/ (htmlファイルなどのルートディレクトリ)に入れて、カレントディレクトリにする。

ターミナルで下記コマンドでビルトインサーバ起動

$ php -S 127.0.0.1:8080

結果の確認

ターミナルにこんなのが出る
PHP 7.0.22-0ubuntu0.16.04.1 Development Server started at Thu Sep 28 06:25:31 2017
Listening on http://127.0.0.1:8080
Document root is /home/XXX/
Press Ctrl-C to quit.

ブラウザのアドレスに

127.0.0.1:8080/YYY.php

などと入力すれば、そのページが表示される。


ipアドレスの確認方法


ターミナルで

$ ip address

と打てば

inet 127.0.0.1 .....と出てくるこれを使えば良い


2017年9月26日火曜日

日誌2017年9月

2017/09/26

少しずつ書き足していけば良いのでは、と気づく。
 ・Python+JSの本少し。はっきり言ってわかりにくい本ですね。翻訳も校正がぬるい。
・matplotlibを少し。histgramにしたときの横軸のことなど。
・100本ノックを少し。dataframeでやってしまうと早いけど、readlineとかを使った方が良いのかしらん。
・C++できず。
・スクレイピングを少し。2ch.scならやって良いのかな?

2017/09/27

・Py+JS本を20pほど。Pandasのところ。
・100本ノック少し。

2017/09/28

・前にやったことのメモが残っていなくて困る。PHPwebサイトの立ち上げからできない・・・
・いろいろ少しずつ進めたロベールC++39章まで

2017/09/29

・ロベール少し1部-40章

2017/09/30

・ロベール54章まで





2017年9月23日土曜日

ubuntu環境変数を変更して、パスワードを格納する

ubuntuの環境変数にパスワードを入れました。

目的はGithub上のハードコードを避けるため。いずれにしても何かに記述しなくてはいけないのですが・・・。

PATHなどの変更も同様にできます。


システム全体で変更するとき

 

$ /etc/environment に、このように書き込みます。
PASSWORD="hogehoge"

と書き込む。ログインし直すと有効になる。

セッション(ユーザー限定)で変更するとき

 

$~/.profile に、このように書き込みます。
export PASSWORD="hogehoge"
~/.bash_profile を変更しても良いですが、シェルから起動しなかったプログラム(デスクトップGUI)では効果がないです。

確認方法

ターミナル上では以下のコマンドで確認できる。何もなかったら空白。
echo $PASSWORD

Pythonでの読み出し

import os
os.environ['PASSWORD']
でOK。

ここここでも話題になっています。

参考になる公式ヘルプ
https://help.ubuntu.com/community/EnvironmentVariables

2017年9月18日月曜日

ubuntuにtimeshiftを入れてバックアップのメモ

Ubuntuデータのバックアップ用にtimeshiftを使っています。細かい説明は技術評論社の解説がよいです。

作者の解説


https://teejeetech.in/timeshift/

GUIで起動するには


$ sudo timeshift-gtk
-gtkがないとCLIになります。

入れたらappstreamcliの更新エラー

http://gihyo.jp/admin/serial/01/ubuntu-recipe/0399

$ sudo apt-get update

とやると、

*** Error in `appstreamcli': double free or corruption (fasttop):

となって更新が止まる。こことかここによるとappstreamcliのバグとのこと。

対策がありました。

一回killすれば良いそうです。
$ sudo kill -KILL $(pgrep appstreamcli)
または
$ sudo pkill -KILL appstreamcli
のあと、
$ wget -P /tmp  https://launchpad.net/ubuntu/+archive/primary/+files/appstream_0.9.4-1ubuntu1_amd64.deb   https://launchpad.net/ubuntu/+archive/primary/+files/libappstream3_0.9.4-1ubuntu1_amd64.deb 
$ sudo dpkg -i /tmp/appstream_0.9.4-1ubuntu1_amd64.deb /tmp/libappstream3_0.9.4-1ubuntu1_amd64.deb
$ sudo apt-get update

snapshotのリスト



timeshift --list でsnapshotのリストが見られるのですが、

8 snapshots, 708.4 GB free
Num     Name                 Tags  Description  
------------------------------------------------------------------------------
0    >  2017-09-27_21-00-01  B                  
1    >  2018-06-06_11-59-51  B                  
2    >  2018-06-12_07-17-56  B                  
3    >  2018-07-07_21-00-01  D                  
4    >  2018-07-08_21-00-01  D                  
5    >  2018-07-09_21-00-02  D                  
6    >  2018-07-10_21-00-01  D                  
7    >  2018-07-11_21-00-01  D

TagのBはbootのときのバックアップ、DはDailyバックアップです。バックアップには10分くらいかかっているとのこと。

[日誌]C++ポインタアドレスを64bitで表示する。

ロベールC++教室をやっていたら、ポインタアドレスを表示させるところでこんなエラー
error: cast from ‘char*’ to ‘unsigned int’ loses precision [-fpermissive]
こちらと同じ症状だった。
http://d.hatena.ne.jp/taksei/20140208/1391834451


#include <stdint.h>

を付け加えて、

(uint64_t)

に置き換えて完了。"原因:64bit環境のアドレスを32bitにキャストしている"ということらしい。
#include <iostream>
#include <stdint.h> // インクルード必要
using namespace std;
int main()
{
    char a;
    char* p;
    p = &a;
    cout << " p = " << (uint64_t) p << endl
         << "&a = " << (uint64_t)&a << endl;
    return 0;
}

2017年9月13日水曜日

[日誌]OpenCV3をpython3.6 で

OpenCV3をpython3.6 で入れた。linuxだと対応しているらしいが、OSX,WINは未対応のようです。(2017/09/04現在)

https://anaconda.org/menpo/opencv3/files
conda install -c menpo opencv3
でおしまい。anacondaをバージョンアップすることを問われたくらい。

他のブログ情報などによると3.6で入れられなくて困っている人が多いようです。3.5の環境を作るのが手っ取り早いのかな。

[日誌]OpenCVに入門する。

OpenCVを使い始めました。

Ubuntu+Pythonではすごく簡単なのですが、 ドキュメントはC++の方が多いような気がします。やってみたいテクニックが載っている教科書もC++だったりして、、Windows、VisualStudio、C++という組み合わせをやっています。。スクリプト型からプログラムを始めたので、けっこうつらいです。

いちおう、includeとかの話は理解したつもり。。

Visual Studioの使い方、C++のやり方も知らないといけないのでちょっと先は長そうですが、ぼちぼちやりましょう。

2017年9月4日月曜日

[日誌]いろいろ続き

DjangoはTutorial5まで。テストが通っているとかいまいち分からない。英語が読めているようで読めていないようです。

DjangoGirlsというサイトの日本語版は非常によくできている気がします。そちらをチラチラやっています。

2017年8月27日日曜日

[日誌]DL本少し、Djangoチュートリアル少し

DL本は5章が終わり。出力された勾配が本と違うのだけど・・・。

W1:2.51862234686e-13
b1:1.07189214698e-12
W2:8.72132937456e-13
b2:1.19682040667e-10
 
オーダーはそこまでずれていないが、出ている順も違うので、何かが違っているのでしょう。間違いなのかは分からないけど・・・とりあえず無視して進むことに。

--

Djangoはturorial-3まで。進んでいるはずなのだが、途中でできたものが確認できないのでいまいちよく分からない感じ。Turorialは英語で読んでいます、日本語版もあるのだが、訳がよく分からないところがあったりして、結局英語のほうが良い感じ。


2017年8月23日水曜日

[日誌]メルカリの検索スクレイピングを作った(コードなし)

新しいことに手を付けすぎな感もありますが、Djangoをさわってみることに。チュートリアルを少しずつやろうかと。first appの1まで終了。

--

pythonでメルカリの検索スクレイピングを作りました。

コードを書くと、なんとなくまずそうなので割愛。ヘッドレスを使うとまぁなんとかなりますね。
from selenium import webdriver
import requests
from bs4 import BeautifulSoup
らへんでスクレイピングして、タイマー動作させて差分を抽出、という感じです。

そんなに大掛かりな検索はしていなくて、自分がいつも検索するキーワードの出品物の新着を見ているだけ。1日多くても10出品くらいです。

2017年8月22日火曜日

selenium geckodriverを入れる

python  seleniumでのスクレイピングで、Chromeを使っていたのをFirefoxに変えました。理由は特にないです。

from selenium import webdriver 

# driver = webdriver.Chrome('/usr/local/bin/chromedriver') # chrom
driver = webdriver.Firefox('/usr/local/bin'

chromedriver の代わりのWebドライバとして、 geckodriverをダウンロード、PATHの通ったフォルダに入れたら終了。

OSError: [Errno 8] Exec format error

というエラーが出ていたのですが、単に自分の環境linux64に合っていないバージョンのものを間違えてダウンロードしていたのが原因でした。


このQA

Looks like this is complaining about the format of chromedriver binary. It might be because of platform and chromedriver format mismatch. For example windows requires chromedriver.exe while there are different formats for linux and mac.

というところを見て意味が分かりました。

2017年8月18日金曜日

[日誌]誤差逆伝播法

オライリーディープラーニング本続き。ディープラーニングは名前がいろいろ出てきて覚えられないですが。SGVとか。stochastic gradient descent 確率的勾配降下法・・・日本語でも難しいですが。ストークスのstocasticなのね。小文字にして良いのか謎ですが。

逆伝播法はbackward propagation。英語のほうがしっくりきます。

p136まで。コードを全部はレポジトリから入れていないので、gradientという高速なDeepLearningはできず。それをこれから作りますよと。

しかしこの本はA5サイズなのが残念ですね。・・・ページ数の問題かな?
あと、表記が著者の自己流な部分があって、一般のPEPとかリーダブルコードと合わない気がするのですが。別に好みの問題だが。

linuxシェルコマンド(ubuntu)


コマンドプロンプトで、ある文字列を含むファイルを探すとき

find /N "import" *py そのディレクトリにある*pyに対応するファイルに対して、"import"を含むかを探して見つかればその行番号を表示する(/N)

find コマンドで抽出したファイルに対してコマンドを入れるとき

$ find . - name '**hoge*' | ls -l

は可能だが、cpでコピーができないので、[-exec {} \;] を使う



$ find . -name '*hoge*' -exec cp {} dir  \;

-exec で次のコマンドへ

{} : find の結果
\; : exec の終了

https://askubuntu.com/questions/339015/what-does-mean-in-a-linux-command
https://unix.stackexchange.com/questions/43739/missing-argument-to-find-exec?noredirect=1&lq=1

2017年8月17日木曜日

[日誌]Ruby本終わり

初めてのRubyは読了。さくさく読めたような気がしますが、後半のメソッドの話とかは読み飛ばした感があります。「Rubyはオブジェクト志向だからこんなことができます!」という主張はPythonと比較されていないからちょっとな、、よく分からない気がします。

最近では、RubyよりもPythonの人気が出てきたという説もあります。(日本語の本がたくさん出てきた、ということ)。世界的には、、どうなんでしょう。

自分としては、Pythonを先にやっていて、タブでそろえるPEP式のコーディングスタイルが気に入っているのですが・・・。Rubyは省略可能な部分が多く、自由度が高いのかな、と思います。でもそれって揃えておかないとチームでやるときは大変なのかも、と思いますが。

--

オライリーのDeepLearning本p112まで。なかなか進みません。勾配をコーディングして、最小になるように繰り返す、というところです。しかしこの本ってPython初めての人には絶対向いていないような・・・。

2017年8月16日水曜日

[日誌]SQLからグラフ化つづき

2つのデータを同じグラフにして、右軸を使ったりするようにはできました。

雨量と川の水位をグラフ化しようとしているのですが・・・相関とれないですね。雨量計がある地点が飛び飛びなので、ピンポイントで降水があるとあまり反映されない、と。なかなか悩ましい。

Ruby本はちょっと失速してp133まで。
多重代入で*を使うとまとめて入れられるのがなかなかおもしろいな、とpythonではこういう機能はないような。ほとんどがpythonとの比較になってしまいますねー、感覚的には。

2017年8月13日日曜日

[日誌]php->SQLの続き

PHPでsqliteに接続して、GoogleChartで描画しようとしている。GoogleChartのお作法がいろいろあるようで・・・。なんやかんやで毎日少しずつやるしかない。グラフ化は2つのデータを並べて左右の軸にしたら良いのだが・・・
 こんな感じかな。
 http://www.marinamele.com/2014/04/google-charts-double-axes.html

Rの本はp124まで。 バージョン変更が気になる。

2017年8月11日金曜日

firefoxにflashを入れる

Firefoxでは初期状態ではFlash Playerが入っていませんでした。Instagram、Facebook、他埋め込み画像がいろいろ見れません・・・ということで対応。

下記公式の情報を参考にして入れました。

https://support.mozilla.org/ja/kb/install-flash-plugin-view-videos-animations-games

『スーパーユーザ 権限で、抽出した libflashplayer.so ファイルを Firefox をインストールしたディレクトリ内の plugins サブディレクトリにコピーしてください。例えば、Firefox が /usr/lib/mozilla にインストールされている場合は、sudo cp libflashplayer.so /usr/lib/mozilla/plugins コマンドを実行し、スーパーユーザのパスワードを入力します。』
Firefoxをインストールした場所を調べるためにはwhichコマンドが使えて、
$ which  firefox
とやればOK。自分のubuntuでは
 /usr/bin/firefox
が返ってきました。

2017年8月10日木曜日

[日誌]グーグルフォーラムで英語の勉強

 グーグルのフォーラムを見ていて、けっこう英語の勉強になるなぁ、と思った次第。使えそうな英語が多いですね。当たり前だけど。

Your JSON is not syntactically valid. Having "2016-03-02" as a raw value is not proper. Please refer to our Dates and Times documentation page for guidance on how to use dates properly.
is not syntactically valid: 文法が間違ってます 
is not proper: 値が正しくない
please refer to: ...を見てください
とか

 LineCharts should work fine with dates in any column. I'm not sure whether by "col 1" you mean the first column (indexing starting at 1), or the second column (indexing starting at 0), so here are both examples:

should work fine with dates in any column どの列でも動くはず
Your issue is that you have "new" before your Date, which you don't need when using the string version (which is necessary for being able to transfer Dates via JSON). Here is a fixed example that uses the data you posted:
your issue is that... : 間違いは...ですよ


https://groups.google.com/forum/#!topic/google-visualization-api/-I4JoNBkh-E

--

Ruby本はp84まで。文字列の章

ベル文字というのがよく分かっていないが、使ったことがないことに気がついた。wikipediaではこんな感じ


ベル文字は、ASCIIUnicodeでは十進数で7、十六進数で0x07に割り当てられている。キャレット記法では ^G と表され、Unicodeでは制御文字の図形表現として ␇ (U+2407)が定義されている。
1972年に作られたC言語では、ベル文字は文字定数 \aで表される。'a'は"alert"や"audible"の頭文字である。'b'は既にバックスペースに使われていた。

[日誌]転職ドラフト

転職ドラフトに登録した

利用規約を読む。気になるのは、免責のところでしょうか。これだと、提示年収を下回ろうがなんだろうが転職ドラフト側は関与しません。ということですね。

ヤフーでの事件(?)もあったわけですが、ここらへんは難しいところでしょうか。

以下全文コピペ。色は勝手につけました。

利用規約

転職ドラフト ご利用規約
「転職ドラフト」(以下、「本サイト」といいます。)は、株式会社リブセンス(以下、「当社」といいます。)が企画・運営する、ITエンジニア(第1条で定義します。)向けの就職活動支援及び就職活動に関する情報提供を目的とするウェブサイトです。
この「転職ドラフトご利用規約」は、本サービスについて、当社と本サービスの全てのユーザーとの間に適用されるものです。
会員登録の有無にかかわりなく、本サービスを利用(第1条で定義します。)された場合には、以下の「転職ドラフトご利用規約」に同意されたものとみなされますので、ご利用になる前に、「転職ドラフトご利用規約」を注意深くお読みください。
また、当社が本サイトにて提供するサービスの機能について別途定める利用条件等の全て(以下、「利用条件等」といいます。)は、「転職ドラフトご利用規約」と一体となって適用されるものですので(「転職ドラフトご利用規約」及び利用条件等を「本規約」と総称します。)、利用条件等も併せてご確認ください。
 登録してもしなくても、利用すると利用規約に同意となります。
第1条(定義)
本規約において使用する以下の用語の定義は、以下のとおりとします。
①「本サービス」とは、本サイトで提供される全てのサービスをいいます。
②「利用」とは、本サービスにおいて提供される一切の情報についてその一部でも閲覧する行為、本サイトを介した指名(第10号で定義します。以下、本号において同じ。)の承諾、求人情報(第9号で定義します。)に関する問合せ、求人会社(第8号で定義します。)とのメッセージ送受信(第11号で定義します。)、当社からの就職活動支援の享受、他の審査合格会員(第6号で定義します。)の指名状況等の閲覧又はその他本サービスに関連し若しくは本サービスを介してユーザー(第3号で定義します。)が行う一切の活動をいいます。
③「ユーザー」とは、本サービスの利用者をいいます。
④「本契約」とは、当社とユーザーの間で成立する、本規約に基づく本サービスの利用契約をいいます。
⑤「ITエンジニア」とは、ユーザーのうち、ITサービスに従事するエンジニアのことをいいます。なお、ユーザーの居住先を日本国内に限定はしておりません。
⑥「会員」とは、ITエンジニアのうち当社所定の方法で会員登録を完了した者をいい、「審査合格会員」とは、会員のうち、当社の定める審査に合格した会員をいいます。審査合格会員になることにより、当社が定める審査合格会員専用サービスを利用することができるようになります。
⑦「会員情報」とは、ユーザーが会員登録の申請及び会員登録後の審査申請をするにあたり当社が提供を求める情報をいい、「登録情報」とは、会員情報を含む、会員が当社に提供した当該会員についての一切の情報をいいます。
⑧「求人会社」とは、当社との間で、本サイトにおける求人情報(次号で定義します。)の提供及び指名(第10号で定義します。)に関する契約を締結した事業者をいいます。
⑨「求人情報」とは、求人会社の業務内容・年収等の採用応募に関する情報のことをいいます。
⑩「指名」とは、当社又は求人会社(以下、併せて「求人会社等」いいます。)が、審査合格会員の登録情報に基づいて、審査合格会員に対し、面談を行う意思を明示の上求人情報を内容とするメッセージを送信し、求人会社等の情報を提供することをいいます。
⑪「メッセージ機能」とは、会員が本サイト専用ページ内で、当社及び会員が指名に返答した求人会社とメッセージの送受信ができる機能をいい、メッセージ機能を用いた送受信を「メッセージ送受信」といいます。
⑫「再提示機能」とは、指名を受けた審査合格会員が、指名を承諾する前に、求人会社等からの求人情報の提示に関して、当該求人企業等に再提示を要望できる機能をいいます。再提示を要望できる項目や回数は、当社が、別途本サイト上で明示するものとします。なお、当該機能は、審査合格会員からの再提示に対して、求人会社等が回答することを保証するものではありません。また、審査合格会員からの要望がなくても、求人企業等が自ら再提示を行う場合があります。
⑬「スケジュール機能」とは、指名を承諾した審査合格会員が、指名をした求人会社等と面談等の日程調整を行うことができる機能です。
言葉の定義。審査に合格したら、指名の候補になれますとか。
第2条(本サービスの概要)
本サービスの概要は以下のとおりです。
1.就職活動支援サービス
① 求人会社等が審査合格会員に対して行う指名を通じて、審査合格会員が当該企業からの評価を受けられるサービス。なお、指名対象は求人会社等が決定するものとします。
② 審査合格会員が求人会社等からの指名を返答した場合に、審査合格会員と当該求人会社等との連絡を仲介するメッセージ機能を提供するサービス(なお、求人会社等からの審査合格会員への個々の情報提供は、本サービスに含まれるものではなく、当社の管理・監督下にあるサービスではありませんので、あらかじめご了承ください。)また、審査合格会員が求人会社等からの指名を承諾した場合、当社は、当該求人会社等に当該審査合格会員の会員情報として登録されたメールアドレス及び電話番号を提供する場合があります。
③ 当社が支援を行うことが適切と判断したユーザーに対し、当該ユーザーが承諾した場合における会員情報の入力代行等の就職活動の支援サービス
④ その他就職活動支援に関するサービス
2.就職活動情報提供サービス 
① ユーザーが、求人会社等に関する情報を閲覧できるサービス
② 就職活動情報の提供に付随するメール配信・メッセージ配信、その他の就職活動に関する情報の提供に関するサービス(本サイトに付随する広告配信を含みます。)
③ その他就職活動情報提供に関するサービス
3.就職活動状況共有サービス
① ユーザーが、他の会員の登録情報(経験プロジェクトカテゴリ・担当工程・役割・使用技術、最終学歴、写真、応募企業、指名状況、フリーテキスト欄の記載内容についての情報、会員がアイコンとして登録した画像を含みますが、これらに限りません。)を、容易に個人を特定できない範囲(但し、会員自身が個人を特定し得る情報(顔写真やフリーテキスト欄への記載等)を登録し、又は登録が禁止されている箇所に登録した場合はこの限りではありません。)で閲覧することができるサービス。なお、会員及び審査合格会員とユーザーで、閲覧できる項目は異なります。
② 会員が、求人会社等や指名、職務経歴の記入方法等について、他の会員に相談ができるサービス。但し、相談について、回答がつくことを保証するものではなく、また回答をするには、別途当社が定める利用条件に従うものとします。
サービスの概要。
第3条(適用)
本規約は、ユーザーが本サービスを利用した時点より、当社とユーザーとの間の本サービスの利用に関わる一切の関係に適用されます。
第4条(当社からの通知)
1.当社がユーザーに対して行う、本サービスについての一切の通知は、原則として、本サイト上に表示した時点(電子メール、メッセージ機能その他当社が適当と判断する方法により通知を行う場合は、当社がユーザーから届出を受けているメールアドレスその他の連絡先に宛ててその通知を発信したと認められる時点)で、ユーザーに到達したものとみなします。
2.前項に定める通知の効力は、各ユーザーが現実に通知を受領又は認識したかどうかを問わず、発生するものとします。
 通知の効力は、メールを送った時点で発生します。
第5条(規約の変更)
当社は、本規約を予告なく任意に変更できるものとします。当社は、本規約を変更した場合には、ユーザーにその旨通知するものとし、当該通知の効力発生後、ユーザーが本サービスを利用した場合には 、ユーザーは、本規約の変更に同意したものとみなされます。
第6条(本サービスの利用)
ユーザーは、本規約に同意することを条件に、本規約に違反しない限りにおいて、本サービスの目的・当社が定める利用期間・利用可能サービス・利用方法の範囲内で、本サービスを利用することができるものとします。
第7条(会員登録・審査)
1.ユーザーは、本規約を遵守することに同意していることを条件に、本サイト上の会員登録画面より会員情報を当社に提供することにより、当社に対し本サービスの会員登録を申請することができます。
2.ユーザーは、会員登録の申請及び会員登録後の審査申請にあたり、真実、完全、正確かつ最新の情報を当社に提供しなければなりません。
3.当社は、当社の基準によりユーザーの申請を審査するものとし、当社が承認した場合、当該ユーザーは本サービスの会員として会員専用サービスの利用ができるようになるものとします。但し、会員専用サービスのうち、審査合格会員向けのサービスについては、会員になることに加え、当社が設けた一定の基準を充たすことが条件になります。
4.会員は、登録情報に変更があった場合は、遅滞なく当社所定の手続きにより、登録情報の変更を行うものとします。
5.当社は、第1項に基づき会員登録を申請した者及び登録後会員が審査申請をした場合に当該会員登録申請者又は審査申請会員が、以下の各号のいずれかの事由に該当する場合は、会員登録を拒否又は審査を不合格とすることがあります。
① 本規約に違反し又はそのおそれがあると当社が判断した場合
② 当社に提供された会員情報の全部又は一部につき、虚偽の情報、誤記、不十分な情報、不正確な情報、記載漏れ、又は最新のものでない情報があった場合
③ 本サービスと競合し得る事業を行う者であると当社が判断した場合
④ 自己又は第三者のためかを問わず、本サービスの目的の範囲を超えて、営利、広告、又はその他顧客誘引等の目的・意図で本サービスを利用し又は利用するおそれがあると当社が判断した場合
⑤ 過去に本サービスの会員登録を拒否又は取り消された者である場合
⑥ 反社会的勢力等(暴力団、暴力団員、右翼団体、反社会的勢力、その他これに準ずる者を意味します。以下、同じです。)である、又は資金提供その他を通じて反社会的勢力等の維持、運営若しくは経営に協力若しくは関与する等反社会的勢力等との何らかの交流若しくは関与を行っていると当社が判断した場合
⑦ その他、当社が会員登録又は審査を合格とすることを適当でないと判断した場合
6.当社は、会員登録承認後又は審査合格後に前項各号に掲げる事由(但し、第2号については、「会員情報」とあるのを「登録情報」と読み替えます。)が判明した場合、会員資格を抹消するとともに、以後、当該ユーザーの本サービスの全部又は一部の利用を禁止することができるものとします。
7.退会(会員資格の抹消)を希望するユーザーは、当社所定の退会手続きを行い、その旨を当社に通知するものとします。なお、退会後は、再度会員登録を行った場合でも、退会前の登録情報は引き継がれず、利用できません。当社は、退会手続きの申請を受けた場合、遅滞なく、退会処理を行います。但し、登録情報のうち、他の会員、他の審査会員、求人会社等、その他ユーザーが閲覧できる情報については、退会後も引き続き閲覧が可能です(なお、閲覧は、容易に個人を特定できない範囲としますが、会員自身が個人を特定し得る情報(顔写真やフリーテキスト欄への記載等)を登録し、又は登録が禁止されている箇所に登録した場合はこの限りではありません。)。また、退会手続き以前に求人会社へ提供した情報の回収・破棄について、当社は責任を負わないものとします。
8.当社は、本条に基づき当社が行った行為によりユーザーに生じた一切の損害等(精神的苦痛、逸失利益又はその他の金銭的損害を含む一切の不利益を含みます。以下、同じです。)について何ら責任を負いません。また、当社は、本条に基づき当社が行った行為につき、当該行為を行うべきと当社が判断した理由を、お客様に対して回答する義務を負わないものとします。
会員登録について。反社会勢力はNGですよ。
第8条(ログイン用アカウントの管理)
1.会員は、自己の責任において会員専用サービスの提供を受けるためのログイン用のメールアドレス又はアカウント、及びパスワード(以下、併せて「ログイン用アカウント」といいます。)を管理及び保管するものとし、これを第三者に利用させ、開示し、又は貸与、譲渡、名義変更、売買等をしてはならないものとします。
2.会員が前項に違反し、又はその疑いがあると当社が判断した場合、当該会員の会員専用サービスの利用を停止することがあるとともに、当該ユーザーのその後の本サービスの一切の利用を禁じることがあります。
3.ログイン用アカウントの管理不十分、使用上の過誤、第三者の使用等による損害等の責任はユーザー自身が負うものとし、当社は一切の責任を負いません。
4.ユーザーは、ログイン用アカウントが盗まれたり、第三者に使用されている可能性を認識した場合には、直ちにその旨を当社に対して当社の定める方法で通知するとともに、当社からの指示に従うものとします。
ログイン情報は管理しましょう。
つい最近、パスワードの組み合わせについて失敗だったという回顧があったようですが。
第9条(本サービスの停止、中断)
1.当社は、以下のいずれかに該当する場合には、事前の通知なく、本サービスの利用の全部又は一部を停止又は中断することができるものとします。
① 本サービスに係るコンピューター・システムの点検又は保守作業を定期的又は緊急に行う場合
② コンピューター、通信回線等が事故により停止した場合
③ 火災、停電、天災地変等の不可抗力により本サービスの運営ができなくなった場合
④ その他、当社が停止又は中断を必要と判断した場合
2.当社は、本条に基づき当社が行った措置によってユーザーに生じた損害等について、一切の責任を負いません。また、メンテナンスやシステム障害等により、本サービスに関するいかなる情報が消失した場合であっても、一切責任を負いませんので、必要な情報は、ユーザー自身で保存してください。
天変地異が起きればサービス停止しますよ。当たり前ですね。
第10条(本サービスの変更、終了)
1.当社は、当社の都合により、事前の通知なく、本サービスの内容や仕様を変更(サービスとしての同一性を維持しつつ、本サービスの内容や仕様の全部又は一部について、異なる内容や仕様とすることをいいます。)することができます。
2.当社は、当社の都合により、本サービスの提供を終了(サービス全体の提供を終了すること、及びサービスとしての同一性を維持しないで、本サービスの内容や仕様の全部又は一部について、異なる内容や仕様とすることをいいます。)することができます。この場合、当社はユーザーに事前に通知するよう努めるものとします。
3.本条に基づく当社の措置について、ユーザーは異議を申し立てることはできず、これによってユーザーに何らかの損害等が生じたとしても、当社は一切責任を負いません。
第11条(書き込み)
1.第2条第3項第2号の回答を含む書き込み及び利用条件等違反に基づく削除要求等については、随時アップデートしていますが、即時反映されないことがあります。また、当社が違反に該当しないと判断した場合は、当該削除要求等に応じない場合があります。
2.当社は、すでに掲載済みの書き込みについて、違法性・本規約違反の有無に関わらず、以下の各号のいずれかの事由に該当する場合は、その全部若しくは一部の削除又は公開範囲の変更等、当社が必要と認める措置を講じることができるものとします。
① 権利者と称する者から、掲載された情報が自分の権利を侵害する旨の申告があった場合
② その他、当社が掲載を不適切と判断した場合
3.ユーザーは、当社が本条に基づく措置を講じたこと又は講じなかったことについて、異議を申し立てることはできず、ユーザーに何らかの損害等が生じたとしても、当社は一切責任を負いません。
第12条(削除義務等の不存在)
 前条の規定は、本サービスにおける書き込みの削除、変更、掲載制限、公開範囲変更、修正要請、及びその他一切の書き込みに対する措置についての当社の義務又はユーザーの請求権を基礎づけるものではありません。なお、ユーザーによるそれらの措置についての要求等(要求、質問、苦情、又はその他一切の事実伝達・意思疎通行為をいいます。)につき、当社が何らかの返答又は対応をすることを保証しかねますので、予めご了承ください。
第13条(権利帰属)
1.本サイトに掲載された情報、商標、デザイン等の著作権を含む知的財産権は全て当社又は当社に許諾を与えた第三者に、本サイトの商標、デザイン等の著作権を含む知的財産権は全て当社に帰属するものです。従って、ユーザーは、無断で、使用、複製、改変することができません。また、本規約に定める会員登録に基づく本サービスの会員専用サービスの利用の承認は、本サイト又は本サービスに関する当社の知的財産権の利用許諾を意味するものではありません。
2.ユーザーが本サービスを利用したことにより発生した著作物に関する著作権については、ユーザーが書き込み等・編集を行った時点で、著作権法(昭和45年法律第48号)第27条及び第28条の権利を含む知的財産権を当社に対して無償で譲渡したものとし、当社及び当社の使用許諾を受けた第三者が無制限に使用できるものとします。また、ユーザーは、当社及び当社の使用許諾を受けた第三者に対して著作者人格権(公表権、氏名表示権、同一性保持権)を一切行使しないものとします。
 著作権について。法律が分かっていませんが、例えばこのサイトの内容が本に載ったとして、自分が書いた内容が断りなく記載されても文句は言えない、というところでしょうか。
第14条(個人情報)
1.ユーザーは別途定める「個人情報の取扱い」について同意の上、ご自身の個人情報を当社に提供するものとします。なお、当社が取得しましたユーザーの個人情報は、当社のプライバシーポリシーに従って適正に管理されます。
2.会員は、登録情報の一部が求人会社等及び他の会員に閲覧されるものであることを予め承諾します。
第15条(通信の秘密)
当社は、ユーザーの本サービスの利用履歴等(閲覧履歴、指名履歴等を含みますが、これらに限りません。)、審査合格会員と求人会社等の間で行われるメッセージ送受信の内容及び送受信履歴(開封状況等を含みますが、これらに限られません。)、再提示機能の利用結果(利用内容等を含みますが、これらに限りません。)を、会員登録前後を問わず(会員でなくなった場合も含みます。以下、同じです。)、閲覧・使用(当該ユーザーに適したサービス提供のため、本サイト・本サービスの運営改善のため、統計情報の取得のための使用を含みますが、これらに限りません。)することがあるものとし、ユーザーはこれを予め承諾するものとします。
第16条(ユーザーの禁止行為)
当社は、ユーザーが以下の行為を行うことを禁止し、違反した場合には、以後、当該ユーザーの本サービスの利用の全部又は一部を禁止(会員登録の抹消、本サイトへのアクセス拒否、又はその他本サービスの利用を全部若しくは一部不可能にする等当社による一切の措置のことをいいます。以下同様とします。)することができるものとします。なお、当社は、本条に基づく措置を講じる義務を負わず、ユーザーは、当社が本条に基づく措置を講じたこと又は講じなかったことについて、異議を申し立てることはできず、ユーザーに何らかの損害等が生じたとしても、当社は一切責任を負いません。また、違反が判明した場合、ユーザーは、損害賠償金とは別に当社の損害の立証にかかわらず、当社に対し、違約金として金100万円を支払うものとします。但し、当該当該違反が悪質でないと当社が認めた場合、当社は、かかる違約金を免除又は減額することができるものとします。
① 本規約又は法令等(ユーザーが所在する国・地域のものを含み、政令・ガイドライン・業界自主基準等の一切を含みます。以下、同じです。)に違反する行為又はそのおそれのある行為
② 社会規範、社会常識、社会通念若しくは公序良俗に反し、又は他人の迷惑となる行為
③ 正しく事実に合致しない又はそのおそれのある情報(ユーザー自身の個人情報、その他一切の自らの社会的地位・属性に関する情報を含みます。)を、当社に提供し、又は本サービスにおいて書き込み、掲載、開示、配布、提供若しくは送信(以下、これらを総称して「書き込み等」といいます。)する行為
④ 本サービスを、本サービスの目的とは異なる目的で利用する行為(求人会社の採用担当者・人材紹介会社等が就職活動を行う者になりすまし、登録情報を取得する場合等を含みます。)
⑤ 求人企業等からのメッセージを含むメッセージ送受信記録及び再提示機能を、本サービス上でのみ利用できるものとします。かかるメッセージ送受信記録及び再提示機能の利用結果について、当社が認める本サービス上での閲覧・返信等の利用行為を除き、複製、印刷、第三者への開示等をしてはならないものとします。但し、バックアップのための最小限の複製はこの限りではありません。
⑥ 正当な理由なく、求人企業等と直接した約束(面接の約束、採用応募書類提出の約束等を含みますが、これに限られません。)に違反する行為等、その他、当社、求人企業との信頼関係の維持に支障をきたす行為
⑦ 当社、他のユーザー又は第三者に不利益を生じさせるおそれのある内容を含む、外部サイトへのアクセスを可能とするウェブアドレス・リンク等の情報を書き込み等する行為
⑧ 当社、他のユーザー又は第三者に対して、誹謗中傷若しくは嫌がらせをし、又は財産権、プライバシーに関する権利、その他あらゆる法的権利を侵害する行為
⑨ 他のユーザーの登録情報を含む個人情報等を無断で収集・蓄積・漏洩・公開する行為
⑩ 他のユーザーのログイン用アカウントを使用して本サービスを利用する行為、又は他のユーザー若しくは第三者の名前・名称を用いる等、他人や他の存在になりすまして書き込み等をする行為
⑪ 勧誘、広告、又はその他自己若しくは第三者を介して顧客誘引の意図をもって行う一切の書き込み等をなす行為(但し、当社から事前の書面での承認を経てなされる広告は除きます。)
⑫ 当社の事前の書面による承認を経ない広告をなす行為
⑬ 以下のいずれかに該当する行為
a.当社のサーバー又はネットワークの機能の他、当社、他のユーザー又は第三者の使用するソフトウェア、ハードウェア等の機能を破壊したり、妨害したりするようなプログラム等の書き込み等をする行為
b.当社が定める一定のデータ容量以上のデータを本サービスを通じて送信する行為
c.本サービスに使用されているソフトウェアや本サービスのために使用されているソフトウェアの修正改変、使用許諾、翻訳、販売、解析、模倣、解読、逆コンパイル、逆アセンブルその他これらに類する行為を行い、又は他人にこれを行わせる行為
d.自動投稿ツール等を使用して書き込み等をし、又は巡回ツール等を使用して書き込み等の検索・収集をする行為
 e.本サービスを利用してチェーンメール、スパムメール、ジャンクメール等を送信する行為
⑭ 本サービスに関連して、反社会的勢力等に直接・間接に資金を提供し、又は便益を供与する等、反社会的勢力の維持、運営に協力し、又は関与する行為
⑮ 前各号に準じる行為等、本サービスの運営、当社の経営を妨げるおそれのある一切の行為
⑯ その他、当社が不適切と判断する一切の行為
違約金100万円が発生することがあります。これは損害賠償とは別とのこと。
第17条(ユーザーの損害賠償責任及び紛争処理)
1.ユーザーが、本規約に違反する等、本サービスに関連して当社又は第三者(他のユーザー、求人会社を含みます。以下、本条において同じです。)に損害を与えた場合、当該ユーザーは、当社又は第三者に対してその損害(通常損害、特別損害、本サービスのイメージを回復するために講じた措置に要した費用、訴訟費用、及び弁護士費用等を含みますが、これに限りません。本条において同じです。)の賠償義務を負担するものとします。
2.前項のほか、ユーザーの行為に起因して、当社が第三者からの請求に応じて損害賠償その他の支払いを行うことを余儀なくされた場合、当社は、原因を作出した当該ユーザーに対し、当社が被った損害を請求できるものとします。
3.ユーザーが、本サービスに関連して、第三者からクレームを受け又はその者との間で紛争が生じた場合には、直ちにその内容を当社に通知するとともに、ユーザーの費用と責任において当該クレーム又は紛争を処理し、当社からの要請に基づき、その経過及び結果を当社に報告するものとします。
損害賠償の話。
第18条(当社の免責)
1.当社は、本サービスの内容の追加、変更、又は本サービスの中断、終了によってユーザーに生じたいかなる損害等についても、一切責任を負いません。アクセス過多、その他予期せぬ要因で表示速度の低下や障害、メッセージ送受信・再提示機能及びスケジュール機能の利用結果が抹消・不到達等が生じた場合も同様とします。
2.当社は、ユーザーによって書き込み等される情報を監視又は保存する義務を負いません。
3.当社は、正確性や信頼性を高める努力を積み重ねますが、本サービス上において当社が提供する一切の情報に関する、正確性、最新性、有用性、適合性、完全性、安全性、合法性及びその他一切の事由について保証せず、これによってユーザーに生じた損害等について一切責任を負いません。本サイトに掲載された求人情報等、本サービス上で提供される情報をご利用の際には、ユーザーご自身でよくご確認ください
4.当社は、ユーザー、求人会社によって書き込み等される情報(これらの者の属性等に関する一切の情報を含みます。)の正確性、最新性、有用性、適合性、完全性、安全性、合法性及びその他一切の事由について保証せず、これによってユーザーに生じた損害等について一切責任を負いません。また、当社は、ユーザー、求人会社によって書き込み等される情報が、法令等及びそれらの者が所属する法人、団体等の内部規則等に適合することについても、責任を負いません。
5.当社は、本サイト上において各広告主が掲載する広告、本サービスの各ページからリンクしている外部サイト、又は外部サイトの各ページに関して、正確性、最新性、有用性、適合性、完全性、安全性、合法性及びその他一切の事由について保証せず、これによってユーザーに生じた損害等について一切責任を負いません。
6.当社は、万一、ユーザー同士、ユーザーと求人会社間及びユーザーとその他の第三者間に紛争があった場合でも、当該ユーザー、求人会社又はその他の第三者において解決するものとし、当社はその責任を一切負いません。
7.本規約のうち、当社の債務不履行又は債務の履行に対してされた当社の不法行為責任を完全に免責する規定の全部又は一部が適用されないことが管轄権を有する裁判所により判断された場合で、当社の債務不履行又は不法行為に直接起因してユーザーに損害等が発生した場合、ユーザーに直接かつ現実に生じた通常の損害等に限り、当社が賠償の責任を負うものとします。但し、当社に故意又は重過失があるときは、この限りでないものとします。
 けっこう突き放した書き方ですね。嘘が書いてあってもしりませんよ、ということです。
第19条(権利義務等の譲渡等)
1.ユーザーは、本契約について、その契約上の地位及びこれにより生じる権利義務の全部又は一部を、当社の書面による事前の承諾なく第三者に譲渡等の処分をし、引き受けさせ、又は担保に供することはできません。
2.当社が本サービスに係る事業を他社に譲渡した場合には、当該事業譲渡に伴い本契約上の地位、権利及び義務並びに登録情報その他の情報を当該事業譲渡の譲受人に譲渡することができるものとし、ユーザーは、かかる譲渡につき予め同意するものとします。なお、本項に定める事業譲渡には、通常の事業譲渡のみならず、会社分割その他事業が移転するあらゆる場合を含むものとします。
第20条(分離可能性)
本規約のいずれかの条項又はその一部が、管轄権を有する裁判所により、違法、無効、又は執行不能と判断された場合であっても、残部はその後も有効に存続します。また、違法、無効、又は執行不能と判断された条項若しくは部分についても、当該条項若しくは部分の趣旨に最も近い有効な条項を無効な条項若しくは部分と置き換えて適用し、又は当該条項若しくは部分の趣旨に最も近い有効な条項となるよう合理的な解釈を加えて適用します。
第21条(完全合意)
 本規約は、本サービスに関して、本契約締結時における当社・ユーザー間の全ての合意を包含するものであり、本契約締結以前における当社・ユーザー間の明示又は黙示の合意、協議、申入れ、各種資料等は、本規約の内容と相違する場合には、効力を有しません。なお、本契約の内容を変更する場合は、書面による合意によらなければならないものとします。
第22条(存続規定)
本契約が存続しているか否かにかかわらず、第3条、第4条、第5条、第7条第7項、第7条第8項、第8条第3項、第9条第2項、第10条第3項、第11条ないし第15条、第16条柱書、第17条ないし第24条は、引き続き効力を有するものとします。
第23条(準拠法及び管轄裁判所)
本サービスに関する一切については日本法に準拠して解釈されるものとし、本規約に起因し又は関連する一切の紛争については東京地方裁判所を第一審の専属的合意管轄裁判所とします。
第24条(協議解決)
当社及びユーザーは、本規約に定めのない事項又は本規約の解釈に疑義が生じた場合には、互いに信義誠実の原則に従って協議の上、速やかに解決を図るものとします。
【2016年2月26日制定】
【2016年7月12日改定】
【2016年10月13日改定】

[日誌]オライリー 初めてのRuby を買った

他の言語をすでにやっていて、Rubyを初めて触る人、向けらしいです。

本書は、「Rubyリファレンスマニュアル」を読みこなせるだけのRubyの基礎知識を提供します。

という部分が良さそうと感じたので購入。

2008年初版で改定されていないのが少し気になります、Ruby1.9が当時最新だったようですが、、2017年現在では2.4.1が出ているようです。 大枠の思想としては変わらないのでしょう。

今日は1章p28まで。

2017年8月5日土曜日

[日誌]sqliteからPHPでJSONにしてGoogleChartでグラフ化

遊んでいたり、仕事が忙しかったりであまり進まず。

Googleのページを参考にして、JSONからGoogleChartにする方法はわかった。

 https://developers.google.com/chart/interactive/docs/php_example


PHPで、sqliteからデータをqueryして、所望のJSON形式にする。
このページが役に立った。
https://stackoverflow.com/questions/9195025/data-columns-for-axis-0-cannot-be-of-type-string-error-in-google-chart/9444309


--

stackoverflowって書くと非常に長いのですが、省略形はないのかしら。SOFとか見たことはないですけど。

2017年7月11日火曜日

[日誌]Google chartsでJSONからグラフにする

JSONファイルを作って、PHPで読み込み、さらにajaxやらjQueryでhtmlに読み込む。jQueryはインストールではなくダウンロードリンクで良い、ということらしい(?)

とりあえずGoogleDeveloperで紹介されている部分はそのとおりにできた。
 https://developers.google.com/chart/interactive/docs/dev/gviz_api_lib

PHPかPythonを使って、sqliteからJSONにすれば良い気がする。
楽な方でやるとしたら、Pythonかなと。

[日誌]PHPからJavaScript

PHPで読み込んでJSにする方法はいろいろあるらしい。変数をどう扱うかが問題?GoogleのChartが簡単そうですが。

しかし、前回ubuntuがブートしなくなったときと同じ兆候が現れ始めた。
・SDカードが読めない
・ロックからログインするときにパスワードをを入力できない。

原因?

iPhoneを充電しようとして挿した直後にアップデートの通知が来た。これが問題?
bluetoothのキーボードを使っているが、これが問題?マウスもbluetoothだが。。

ということであまり進んでいません。

自動で郵便のトラッキングをしてくれるpyは少し改善。

python hoge.py tracking

とコマンドラインで打ってトラッキング番号を受け取ることにした 。

ubuntu updateで起動できなくなった原因考察

ubuntu update をするとbootができなくなることは、よくあるらしい
(特にデュアルブートで、起動.efiファイルが壊れるとか)

・VirtualBoxの起動のために、UEFIのSecure設定を外している
・VirtualBoxを立ち上げたまま、ubuntu updateをした

ことが原因なのでは?想像ですが・・・

2017年7月9日日曜日

[日誌]PHPでデータベース接続

メモ

PHPとsqlite3を接続してデータを抽出
 ドットインストールではMySQLでやっていたのだが、これをsqliteで書き換えたらできた。
結果がArrayになっていて、これを並べる必要があり

php上でグラフにしたいのだがJpGraphというのを試してみる。商用でなければオープンソースらしい。(ココらへんがよく分かっていないが)

が、

The function imageantialias() is not available in your PHP installation.

 というエラーが出て駄目だった。GDバージョンのPHPを使えとのこと。PHP7.2ならデフォルトで使えているのかもしれない。少し調べないといけない。

--

調べものの途中ででてきた長いQ&A。根気強い。
https://teratail.com/questions/18599

デフォルトでUbuntu16.04LTSにPython2も3も入っている

デフォルトでUbuntu16.04LTSに入っているpythonは2系と3系の両方。

$ python --version

とすると

Python 2.7.12

 で

$ python3 --version

とすると

 Python 3.5.1+

となっていることが分かる。

参考

https://kledgeb.blogspot.jp/2015/11/ubuntu-1604-3-pythonpython2python3.html

2017年7月8日土曜日

ubuntu16.04(Win10デュアルブート)が起動しなくなったので再インストールした

ubuntu初心者なのでよくわからないなりにメモします。

Windows10
ubuntu16.04
のデュアルブートで、UEFI起動ファイルが不具合だった模様。

不具合兆候

ubuntu16.04LTS をアップグレードしたから?なのかいろいろ不具合が出て、再起動したらブートのところで止まるようになった。

不具合(これが兆候だったのか?)とは、
・jpgが閉じられなくなる
・SDカードを挿しても認識しなくなった
という変化が起きたこと

そのうち、Filesが反応しなくなったのでPCシャットダウンしてみると・・・起動せず。


やったこと 

(効果なし)boot-repair-DiskをUSBにいれてブートし、リペアする
 ソフトとしての挙動はSuccessと出たが、起動はできなかった。後で活躍した。

(効果なし)リカバリモードで起動
自分の知識ではなんともできなかった

USBのBootRepairDiskをWindowsで作るとき

 ubuntuが立ち上がらなくても、Windowsは起動したのでそちらで作った。

このサイトからファイルをダウンロード、USBに焼く。
使ったソフトはRufus
(640MBくらいなので、それ以上の空のUSBメモリが必要)

クリーンインストールをする


・バックアップ
HDDの中身は、USB起動のUbuntuを立ち上げて、外付けのHDDとしてコピペする。
Windows等でも同じように救済方法として採用されているようだ。
(ここで一部コピーに失敗してファイルが消失した)

・再インストール
すでに入っているUbuntu を消して再インストールする。
その後、GRUNのコマンドラインしか見られないというエラーになったので、ここでboot-repair-Diskを使ったら、治った。


よく理解できていないが、EFI/... らへんのファイルが不具合があって直してくれた模様。

感謝、感謝のソフトです。テンション高い背景が謎。


 その後 

同様の不具合兆候でSDカードを読み取らなくなったりしたため、2018/06/06までシャットダウンしていませんでした。

意を決して(バックアップをとって)、再起動してみると、無事できました。よかった。

この画面から一番上の『Ubuntu』を選択したらOK。


2017年7月1日土曜日

メルカリの利用規約を読んでみた

ふと思い立って、メルカリの利用規約を読んでみることにしました。およそ1万8千文字くらいです。コピペしたら番号が消えていたりしますが・・・。

感想:免責事項が非常に多いものだなと思いました。他のWEBサービスの利用規約も見てみたいものです。

まずは利用規約の説明。
メルカリ利用規約
この規約(以下「本利用規約」といいます)は、株式会社メルカリ(以下「弊社」といいます)が運営するインターネットサービス「メルカリ」において、弊社が提供する各種サービス(以下「本サービス」といいます)の利用の諸条件を定めるものです。

オンラインフリーマーケットサービスなんですよと。売買を自ら行わず、委託を受けるものでもありませんよ、と。オークションでもありませんよ、と。

第1条 本サービスの内容及び弊社の役割
本サービスは、オンラインフリーマーケットサービスです。ユーザー(次条で定義します)間の物品の売買の場・機会を提供するもので、ユーザー間の売買契約、出品、購入等の保証等に関しては、すべて当事者ユーザーの自己責任とし、弊社は自ら売買を行うものではなく、売買の委託を受けるものでもありません。弊社は売買契約の取り消し、解約、解除や返品、返金、保証など取引の遂行には一切関与しません。また、本サービスは、競りの方法(オークション)により物品の売買を行おうとする者のあっせんを行うものではありません。
本サービスの内容は、本利用規約及びガイドに規定する通りとします。
ことばの定義です。およびその適用範囲ですね。

第2条 定義
1. 定義
本利用規約において、以下の用語は、別途定義されている場合及び文脈上別異に解すべき場合を除き、以下の意味を有するものとします。
「本規約」とは、本利用規約、プライバシーポリシー及びガイドをいい、これらはすべて本規約を構成するものとします。
「プライバシーポリシー」とは、弊社が定めるプライバシーポリシー(名称の如何を問わないものとします)をいいます。
「ガイド」とは、弊社が定める本サービスに関するガイドをいいます。
「ユーザー」とは、本規約の内容に同意して、日本国内において本サービスを利用される個人を指します。
「個人情報」とは、個人情報保護法に定める「個人情報」を指すものとし、ユーザーが入力した氏名、郵便番号、住所、生年月日、性別、職業、電話番号、アカウント情報(電子メールアドレス及びパスワード等をいう。)、プロフィール情報(ニックネーム、趣味、家族構成、年齢その他の個人に関する属性情報)、クレジットカード情報及び利用履歴等で、かつ特定の個人を識別できる情報(他の情報と容易に照合することができ、それにより特定の個人を識別することとなるものを含む。)をいいます。
「コンテンツ」とは、弊社又はユーザーが本サービスに掲載・発信した、情報をいいます。
「出品」とは、ユーザーが、本サービスにて、商品の取引に必要なコンテンツを書き込み、他のユーザーが閲覧可能かつユーザーが商品を取引できる状態にすることをいいます。
「出品者」とは、本サービスを通じて商品を出品するユーザーをいいます。
「購入者」とは、本サービスにて商品を購入するユーザーをいいます。
「ポイント」とは、本サービスにおける各種キャンペーン参加、その他弊社が本サービスにおいて指定する方法で取得可能な電子的仮想通貨をいいます。 
2. 適用
本条の定義は、別途定義されている場合及び文脈上別異に解すべき場合を除き、本利用規約のほか、プライバシーポリシー及びガイドにおいても、適用されるものとします。

この規約への同意は、サービスを利用することでなされていますと。同意のボタンが登録のときにありますね。

第3条 本規約への同意及び本規約の変更
1. 本規約への同意及び適用
本規約は、本サービスの利用に関する条件をユーザーと弊社との間で定めることを目的とし、ユーザーと弊社の間の本サービスの利用に関わる一切の関係に適用されます。ユーザーは、本規約に同意をしたうえで、本規約の定めに従って本サービスを利用しなければなりません。ユーザーは、本サービスを利用することにより本規約に同意をしたものとみなされます。

未成年者の場合は事前に親権者の同意が必要ですと。

2. 未成年者の場合
ユーザーが未成年者である場合は、事前に親権者など法定代理人の包括的な同意を得たうえで本サービスを利用しなければなりません。ユーザーが未成年者である場合は、親権者の同意の有無に関して、弊社から親権者に対し、確認の連絡をする場合があります。
変更があった場合、ユーザーに通知され、メルカリの定める期間内にアカウント削除の手続きをとらなかった場合、変更に同意したとみなされるようです。これは知りませんでしたが、そういうものなのでしょう。

3. 本規約の変更
弊社は、必要に応じ、本規約を変更できるものとします。弊社は、本規約を変更した場合には、ユーザーに通知するものとし、通知後、ユーザーが本サービスを利用した場合又は弊社の定める期間内にアカウント削除の手続をとらなかった場合には、ユーザーは、本規約の変更に同意をしたとみなされるものとします。弊社は、本規約の改定、変更によりユーザーに生じたすべての損害について、一切の責任を負いません。

ユーザー登録について。複数アカウントはだめですよ、と。暴力団は団員でなくなって5年経過したら登録したら良いそうです。いろいろまとめて「暴力団員等」と呼ぶようです。すごいまとめ方ですけど、こういうものなのでしょう。

第4条 ユーザー登録及びアカウント情報
1.登録
ユーザー登録は、必ず本人が行ってください。また、ユーザー登録の際は、必ず正確な情報を入力してください。
2.複数登録の禁止
ユーザーおよびユーザー登録をされようとする方(以下併せて「ユーザー等」といいます)は、複数のユーザー登録を行うことができないものとします。
3.登録拒否
弊社は、以下各号のいずれかに該当する場合、ユーザー登録の申請を承認しないことがあります。
第3条第2項及び本条第2項のユーザー資格を満たしていない場合
過去に本規約違反等により、弊社から利用停止等の処分を受けている場合
登録内容に正確ではない情報、又は虚偽の情報が含まれている場合
弊社の運営・サービス提供又は他のユーザーの利用を妨害、支障をきたす行為を行った場合やそのおそれがあると弊社が判断した場合
暴力団、暴力団員及び暴力団員でなくなったときから5年を経過しない者、暴力団準構成員、暴力団関係企業に属する者、総会屋等、社会運動等標ぼうゴロ、特殊知能暴力集団等、テロリスト等、日本政府または外国政府が経済制裁の対象として指定する者(以下上記の9者を総称して「暴力団員等」といいます)、暴力団員等の共生者、その他これらに準ずる者(以下、上記のすべてを総称して「反社会的勢力」といいます)であると判明した場合、又は、反社会的勢力等が経営に実質的に関与している法人の役員、従業員である等反社会的勢力等と何らかの関係を有していると判明した場合
その他弊社が不適当であると判断する場合
4.ユーザー等の確約
ユーザー等は、反社会的勢力等のいずれにも該当しないこと、かつ将来にわたっても該当しないこと、および、自ら又は第三者を利用して、暴力的な要求行為、法的な責任を超えた不当な要求行為、取引に関して脅迫的な言動をし又は暴力を用いる行為、風説を流布し、偽計を用い又は威力を用いて弊社の信用を毀損し又は弊社の業務を妨害する行為、その他これらに準ずる行為を行わないことを確約するものとします。
5.登録内容の変更
ユーザーは、登録内容の変更がある場合は、直ちに変更しなければならず、常にユーザー自身の正確な情報が登録されているよう、登録内容を管理及び修正する責任を負います。登録内容に変更があったにも関わらず、変更を行っていない場合、弊社は、登録内容の変更のないものとして取り扱うことができます。変更の届出があった場合でも、変更登録前に行われた取引や各種手続は、変更前の情報に依拠する場合があります。
6.弊社の免責
ユーザーがユーザー登録や登録内容の変更をしたことや弊社がユーザー登録を承認しないことにより生じた損害に関しまして、弊社は一切責任を負わないものとします。
7.アカウント情報の管理
ユーザーは入力したメールアドレス及びパスワード等(以下「アカウント情報」といいます。)を自ら管理する責任を負います。ユーザーは、アカウント情報を第三者等に利用させたり、譲渡や売買、質入、貸与、賃貸したり、その他形態を問わず処分することはできません。

これはどうなんでしょうね。管理不十分でも損害の責任はユーザーが負うんですか。こういうものなのでしょうか?

8.アカウント情報の不正利用等
アカウント情報の管理不十分による情報の漏洩、使用上の過誤、第三者の使用、不正アクセス等による損害の責任はユーザーが負うものとし、弊社は一切責任を負わないものとします。また、アカウント情報が不正に利用されたことにより弊社に損害が生じた場合、ユーザーは当該損害を賠償するものとします。
9.アカウント情報の漏えい
アカウント情報が第三者に漏えいした場合又はそのおそれがある場合、速やかに弊社まで連絡するものとします。また、その際に弊社の指示がある場合にはこれに従うものとします。
いろいろな場合にメルカリ側の判断でユーザー登録を取り消せますよと。
第5条 ユーザー登録の取消等
1.ユーザー登録の取消・利用停止等
弊社は、ユーザーが以下の各号のいずれかに該当した場合又は該当したと弊社が判断した場合、事前の通知なしに、ユーザー登録の取消、本サービスの全部もしくは一部へのアクセスの拒否・利用停止等、又は、ユーザーに関連するコンテンツや情報の全部もしくは一部の削除の措置をとることができるものとします。弊社は、その理由を説明する義務を負わないものとします。なお、弊社は、ユーザーが以下の各号のいずれにも該当しないことを確認するために、弊社が必要と判断する本人確認を行うことができ、確認が完了するまで本サービスの全部もしくは一部へのアクセスの拒否・利用停止等の措置することができます。
法令又は本規約に違反した場合
不正行為があった場合
登録した情報が虚偽の情報であると弊社が判断した場合
本規約上必要となる手続又は弊社への連絡を行わなかった場合
登録した情報が既存の登録と重複している場合
登録した携帯電話番号又はメールアドレスが不通になったことが判明した場合
ユーザーが債務超過、無資力、支払停止又は支払不能の状態に陥った場合
他のユーザーや第三者に不当に迷惑をかけた場合
登録した金融機関の口座に関し違法または不適切その他の問題があることが当該金融機関による指摘その他により判明した場合
第4条第3項各号のいずれかに該当する場合
ユーザーが自ら又は第三者をして、暴力的な要求行為、法的な責任を超えた不当な要求行為、脅迫的な言動又は暴力を用いる行為、風評を流布し、偽計を用い又は威力を用いて、信用を毀損又は業務を妨害する行為をした場合
その他弊社がユーザーに相応しくないと判断した場合
2.サービスの利用禁止等
弊社は、本条の措置を受けたユーザーに対し、将来にわたって弊社が提供するサービスの利用及びアクセスを禁止することができるものとします。
3.支払いの留保
弊社は、本条の措置の時点で当ユーザーに支払われることとなっていた金銭等について、違法行為への関与が疑われる場合等、弊社の判断により、支払いを留保することができるものとします。
4.弊社の免責
弊社は、本条の措置により生じる損害について、一切の責任を負わないものとします。
ユーザーは退会を希望して、メルカリに認められれば退会できますよ、と。手続きが終わるまでは退会できません。

第6条 ユーザーの退会
1.退会の手続
ユーザーは、弊社に退会を希望する旨を問い合わせ、弊社の判断により認められた場合には退会することができます。但し、取引の決済や商品の郵送等取引の手続が未完のものがある場合は退会することができず、ユーザーは、一連の未完の取引を本規約に従って遅滞なく円滑に進め、完了させた後、弊社に問い合わせを行わなければなりません。
2.無効化等
ユーザーが退会を希望する時点で当ユーザーに支払われることとなっていた金銭等については、弊社の判断により、無効とすることができるものとします。
3.弊社の免責
弊社は、本条の措置により生じる損害について、一切の責任を負わないものとします。

個人情報に関して、利用することがありますよと。


第7条 個人情報等の取扱い
1.プライバシーポリシー
弊社は、本規約のほか、プライバシーポリシーに従って個人情報等を取り扱います。
2.プライバシーポリシーへの同意
ユーザーは、本サービスの利用又は本サービスの閲覧の前に、本サービス上で、プライバシーポリシーを必ず確認し、その内容に同意した上で、本サービスを利用するものとします。
3.ユーザーによる利用
ユーザーは、本サービスを通じて得た個人情報等に関しまして、本サービスの利用の範囲内においてのみ利用することができ、それ以外の利用はできないものとします。
4.利用の目的
弊社は、弊社が取得する個人情報等に関しまして、以下の各号に定める目的で利用することができるものとします。
本サービスの提供で必要となってくる範囲での利用
運営上に必要な事項の通知の際の利用
品質管理及び利便性向上の為のアンケート調査及び分析での利用
本サービスに対する問い合わせ対応の際の利用
運営に関する事柄についての連絡又は追加対応の際の利用
本サービス運営上の不正利用や、その他のトラブル解決の際の利用
システムの維持又は不具合の改善の際の利用
その他プライバシーポリシーに定める目的
5.第三者への預託又は提供
弊社は、法令に基づく場合又は以下に定める場合を除き、個人情報等を第三者に預託又は提供する場合は、事前にユーザーの同意を得ることなしにしません。
弊社が定めている期間内で、コンテンツ、利用履歴及びプロフィール情報を本サービス上において公開する場合
商品代金を回収する為に必要な場合
合併や、その他の事由による事業の承継に伴って事業を承継する者に対して個人情報を提供する場合
ユーザー間又は第三者とのトラブルを解決するために、弊社が開示を必要と判断した場合
その他プライバシーポリシーに定める場合
6.弊社の免責
個人情報等を前項に基づき第三者に預託又は提供したことによるユーザーの損害について、弊社は一切責任を負わないものとします。ユーザーは、本条の内容を十分に認識した上で、本サービスを利用する必要するものとします。
7.ユーザーによる訂正等の請求
弊社は、ユーザーが本サービスに入力した個人情報等について、関連法規に従い、事実確認を行った上で、訂正、削除又は利用停止等の適切な措置を講じます。

売ってはいけないものなど。けっこう具体的ですが。これはヤフオクとかと同じでしょうか?
第8条 禁止事項
弊社は、本サービスに接したユーザー及び第三者の、下記各号に該当すると弊社が判断する行為(以下「禁止事項」といいます)を禁止します。以下の禁止事項は、弊社により適宜追加修正される場合がありますので、ユーザーは、サービスの利用にあたり、常に最新の内容を確認する義務を負うものとします。
法令又は本規約等に違反する行為
本規約の精神に照らして不適切な行為
弊社のご利用上の注意に反する行為
弊社のサービス運営を妨げること
自分以外の人物を名乗ること
他のユーザーのユーザー資格を利用して弊社のサービスを利用すること
弊社もしくは他のユーザーの著作権その他の権利を侵害すること、又は、そのおそれのある行為
弊社又は他のユーザーの利益を侵害すること
青少年の心身に悪影響を与える行為
公序良俗に反する行為
低俗、わいせつな書き込みなどを行うこと
虚偽の情報の書き込みなどを行うこと
他のユーザーが、理解することができなかったり、誤解や混乱をするおそれのある行為
他のユーザーのプライバシーを侵害したり、名誉を毀損したり、精神的損害を与えること
弊社の所定の手続き以外で、ユーザー本人又は他のユーザーの個人情報(本名、住所、電子メールアドレス及び電話番号を含むあらゆる連絡先)を発信もしくは掲載すること
弊社又は他のユーザーに経済的損害を与えること
他のユーザーに肉体的損害を与えること
他のユーザーが迷惑や不快感を感じるおそれのある行為
他のユーザーと紛争が生じる可能性のある行為
民族差別・人種差別を意識させたり、それらにつながる行為
倫理的視点で認められないと弊社が判断する行為
弊社の事前の書面による許可なく、弊社のサービス外のところで、商業目的で、弊社が提供するあらゆるサービス、コンテンツ、情報、システム、機能、プログラム等の全部又は一部を利用すること
商業用の広告、宣伝を目的とした行為
弊社が運営する以外のウェブサイトやリソースへリンクを貼ること
勧誘活動等を行うこと
選挙運動に関するあらゆる行為
コンピュータウィルスの送信等、コンピュータの機器や通信回線、ソフトウェア等の機能に悪影響を及ぼす行為
弊社が提供するサービスに繋がっているサーバーやネットワークに対して悪影響を及ぼすこと
弊社がサービスを提供する上で関係するあらゆるシステムに対して、不正にアクセスすること
弊社が提供するインターフェイスとは別の手法を用いてサービスにアクセスすること
弊社のウェブサイトに関連するシステムやソフトウェアのセキュリティホールやエラー、バグ等を利用した行為
弊社のウェブサイトに関連するシステムやソフトウェア、プロトコル等をリバースエンジニアリングや逆アセンブル等の手法により解読する行為、これらを改ざん、修正等する行為、及び、これらを複製、二次利用する行為
マネー・ロンダリングを目的とした行為
通常の経済的価値と著しくかい離した販売価格により商品を出品すること
お互いの商品を、値下げして、購入しあう行為
交換及び半交換並びにそれらを持ちかける行為
代引きを持ちかける行為(商品の代金の一部もしくは全部を代引きで支払うよう持ちかける)
転売目的で得たチケット類を出品する行為
同じ商品を、他社のサービスやその他の方法によって、二重に出品すること(ただし、株式会社ソウゾウが運営するサービスへの出品を除く)
同じ商品が含まれる商品の複数出品
手元にない商品を予約・取り寄せで販売する行為
古物商間の売買又は交換
海外から商品を配送する行為
他のユーザーに出品代行させる行為及び他のユーザーに代わり出品代行する行為
その他、弊社が不適切と考える行為
第9条 商品の出品
1.出品手続
出品者は、弊社所定の手続に従い商品の出品を行うものとします。
2.出品禁止商品
出品者は次の各号に関係する商品の出品ができないことについて予め了承します。以下に該当する商品を出品した場合は、出品者の故意又は過失に関わらず、本規約違反行為とみなします。
法令に違反する商品
主として武器として使用される又はそのおそれのある目的を持つ商品
他のユーザーの権利を侵害する又はそのおそれのある商品(偽ブランド品を含むがこれに限られないものとします)
犯罪等によって入手した商品
公序良俗に反する商品(アダルト関連の商品、わいせつな商品、児童ポルノに関連する商品を含むがこれらに限られないものとします)
商品の販売の際に、法律上の許認可が必要な商品
人体・健康に影響を及ぼすおそれのある商品
コンピュータウィルスを含むデジタルコンテンツ
一つの商品でありながら代金を複数に分割して出品された商品
道路運送車両法上の所有者の変更登録が直ちにできないまたはそのおそれがある自動車およびオートバイ
債券、有価証券、保険等の金融商品
人体、臓器、細胞、血液またはそれに類するもの
生き物
盗品
物品ではないもの(情報、サービスの提供、会員権などの権利を含むがこれに限られないものとします)
その他、弊社が不適切と判断した商品
3.商品説明等
ユーザーは、出品する際に、真に売却する意思のない出品、その商品情報だけでは正しく商品を理解できない又は混乱する可能性のある出品、商品説明で十分な説明を行わない出品等を行ってはなりません。また、出品者は、出品する商品と関係のない画像等を当該出品情報として掲載してはいけません。
4.法令遵守
ユーザーは、出品にあたっては、古物営業法、特定商取引に関する法律、不当景品類及び不当表示防止法、不正競争防止法、商標法、著作権法その他の法令を遵守しなければなりません。
5.特定ユーザーへの販売を意図した出品
ユーザーは、他の特定のユーザーのみを対象とする販売を意図して商品を出品することができません。弊社は、その裁量により、出品の条件その他の状況から、ある商品の出品が他の特定のユーザーのみを対象とする販売を意図するものであるか否かを判断することができ、かかる判断によってユーザーに生じる損害について、一切責任を負わないものとします。
6.出品に関する本規約違反
出品に関して弊社が本規約に違反すると判断した場合又は不適切と判断した場合、弊社は、第5条に定める措置のほか、その出品やその出品に対して発生していた購入行為等を弊社の判断で取り消すことができるものとします。本項に基づく措置によってユーザーに生じる損害について、弊社は一切責任を負わないものとします。
7.弊社の免責
ユーザーの出品等によって、ユーザー及び第三者に生じる損害につき、弊社は一切責任を負わないものとします。

購入に関して。損害に対してはメルカリは一切関与しません、というように読めますが。

第10条 商品の購入
1.購入手続
ユーザーは、弊社の定める手続により購入の意思をもって、注文を行うものとします。
2.購入意思等
ユーザーは、購入する意思のない注文、転売等の営利を目的とした商品の購入等、また弊社の判断でいたずら目的と見受けられる注文を行うことはできません。
3.必要データ
弊社が定める取引開始可能な時間内に、弊社の管理するサーバーに販売金額に関するデータ、販売意思のアクションデータなどの弊社所定のデータの到達が確認できなかった場合、注文は無効になるものとし、ユーザーはあらかじめこれを承諾するものとします。
4.自らの出品物の購入禁止等
出品者は、自らの出品物を購入することはできません。出品を取り下げたい場合は、ユーザーは、弊社所定の手続に従って行うものとします。
5.弊社の免責
ユーザーの注文又は購入等によって、ユーザー及び第三者に生じる損害につき、弊社は一切責任を負わないものとします。
第11条 支払及び取引の実行
1.売買契約の成立
購入者が出品された特定の商品の購入完了手続をした時をもって当該商品の売買契約が成立するものとします。出品者及び購入者は、売買契約に基づき発生した権利・義務を第三者に譲渡、担保提供その他の処分することはできないものとします。
2.支払期限及び送料
売買契約が成立した場合、購入者は、弊社の定める方法により商品代金と手数料の合計額を支払うものとします。商品の送料は、出品者が負担する場合には、商品代金に含むものとし、購入者が負担する場合には、商品の発送を着払いで行うものとします。
3.発送
出品者は、購入者の商品代金の決済が完了した後に商品の発送をするものとします。
4.商品等に関するトラブル
出品者、購入者の間で商品等に関してトラブル発生した場合は当該ユーザー間で解決するものとします。ただし、弊社の判断により、弊社も協議に入ることができるものとします。
5.キャンセル及び商品の瑕疵
本サービスの利用にあたり、出品後、及び商品の注文後のキャンセルはできないものとします。
商品に瑕疵がある場合、商品説明と実際の商品が明らかに異なる場合、梱包の不備により配送時に商品が破損したなどの場合は出品者が責任を負うものとし、出品者の責任及び費用により、返金、商品の引取、修理又は交換等の対応を行うものとします。
6.支払手続
支払又は決済が本サービスに関して必要となる場合、本サービスのオンラインシステムを通じて行われるものとし、その詳細は本サービス中のガイドで定められるところに従うものとします。なお、本サービス利用に関し、ユーザーによって支払われた代金決済についての領収書等は発行されないものとします。また、支払いに必要な振込手数料その他の費用についてのユーザーの負担は、本サービス中のガイドで定められるところに従うものとします。
出品者は、弊社に対して、購入者から支払われる商品代金(決済事業者または収納代行業者から支払われる商品代金に相当する金員を含みます。)を代理受領する権限を付与するものとします。出品者は、弊社が決済事業者および収納代行業者を指定した場合には、当該決済事業者および収納代行業者に対して、商品代金を代理受領する権限を付与するものとします。また、弊社は、地域を限定して決済事業者および収納代行業者を指定することができるものとします。さらに、出品者は、弊社が決済事業者又は収納代行業者との間で締結する決済サービスに関する加盟店契約により必要となる場合には、商品代金債権を弊社に譲渡することに同意します。
弊社は、弊社所定の審査を通過したユーザーが、商品購入に際して希望する場合において、出品者に対して立替払いを行い、商品代金の決済を行うことがあります(以下「立替払決済」という。)。この場合、当該購入者は、購入手続きが完了した日の属する月の翌月末日(以下「支払期日」という。)までにガイドに定められた方法で商品代金及び手数料(以下「支払債務」という。)を弊社に対して支払うものとします。
7.不払・支払遅延等
ユーザーが本規約に従って必要な支払いを行わない場合もしくは遅延した場合又は本サービスに入力したクレジットカードもしくは金融機関の口座の利用が停止された場合には、弊社は、当該ユーザーに通知することなく、当該ユーザーによる本サービスの利用を停止することができるほか、第5条に定める措置をとることができるものとします。
弊社所定の審査を通過した購入者が、前項第3号に規定する支払期日までに支払債務を弁済することができなかった場合、弊社は当該ユーザーに対する立替払決済の提供を停止することができるものとします。
未払いの支払債務が存在している場合、弊社は、未払いの支払債務の回収を第三者に委託することができるものとします。
支払期日までに購入者が支払債務を支払わなかった場合、弊社は、当該購入者に対し、年率14.6%の遅延損害金を請求することができるものとします。
8.売買契約の取消
売買契約が成立した場合においても、購入者が商品代金及び手数料の合計額を支払わない場合もしくは支払いを遅延した場合、出品者が商品を発送しない場合、その他弊社が必要と認める場合には、弊社は、当該売買契約を取り消すことができるものとします。かかる売買契約の取消しその他の事由により弊社が必要と認める場合には、ユーザーは、弊社の指示に従い、商品の所有権を無償で弊社に譲渡するものとします。
9.弊社の免責
ユーザーが本サービスに入力した決済手段又は金融機関の情報が第三者に利用されたこともしくは入力情報の内容が不正確であったこと又は弊社が本条に基づく措置を行ったこともくしは行わなかったことによってユーザーに生じた損害に関して、弊社は一切責任を負わないものとします。

評価してくださいね、という文。短い。

第12条 ユーザーの評価
1.出品者の評価
購入者は、届いた商品をすみやかに確認し、弊社所定の方式に従い出品者を評価するものとします。
2.購入者の評価
購入者が出品者の評価した後、弊社所定の方式に従い出品者は購入者を評価するものとします。


商品売上は1年以上メルカリに預けていると召し上げられるということです。「支払請求権を放棄したとみなすことができるものとします」

第13条 利用料等及び売上申請
1.利用料等
出品者は、弊社に対し、出品した商品の売買契約が成立した場合、本サービスの利用料として、売買契約が成立した商品の販売価格に弊社が別途ガイドにおいて定める料率を乗じた金額を支払うものとします。商品ごとの利用料は、出品者が商品代金を設定する際に表示されます。
本サービスの利用料は、商品代金から差し引く方法により徴収されるものとし、出品者は、弊社が商品代金から本サービスの利用料を差し引く方法により徴収することにつき、予め同意するものとします。また、出品者は、弊社が別途ガイドにおいて定める配送方法を自らが選択した場合には、当該配送に係る配送業者への支払いを弊社に委託し、弊社がその支払額と同額を商品代金から差し引く形で徴収することにつき、予め同意するものとします。
2.引出申請・他の商品への支払充当申請
出品者は、出品した商品の売買契約が成立し、当該売買契約に関する支払及び商品の発送ならびに出品者及び購入者による相互の評価が行われ取引が完了した場合、当該取引完了時から1年以内に当該商品の商品代金の引出申請又は他の商品代金への支払充当申請を行うものとします。なお、商品代金の引出申請又は他の商品代金への支払充当申請に当たっては、弊社所定の本人確認を求めることがあり、確認が終了するまでは、引出し及び支払充当を留保させていただくことがあります。弊社は、当該ユーザーの負う他の商品に係る売主に対する代金支払債務を併存的に引き受け、当該売主に商品代金を支払うものとし、これにより当該ユーザーが弊社に対して負う当該債務引受と同額の対価支払債務と、弊社が当該ユーザーに対して負う商品代金支払債務は、対当額で自動相殺により精算されるものとします。弊社が商品代金の引出申請又は他の商品への支払充当申請を通知したにもかかわらず、出品者が当該取引完了時から1年間以上、当該商品の商品代金の引出申請又は他の商品代金への支払充当申請を行わなかった場合には、弊社は、当該出品者が当該商品代金の支払請求権を放棄したとみなすことができるものとします。
弊社所定の審査を通過した購入者が、弊社の立替払決済を利用して商品を購入し、支払期日までに支払いがなされなかった場合で、かつ、購入者が過去に出品した商品について、商品代金引出申請及び他の商品代金への支払充当申請のいずれもなされていない商品代金が存在する場合、当該商品代金は、支払期日の翌日をもって、支払債務(手数料及び遅延損害金を含む。以下同じ。)と対当額で自動相殺により精算されるものとします。また、支払期日以降に支払債務が残っている場合には、購入者が過去に出品した商品又は将来出品する商品の取引が支払期日以降に成立し購入者が商品代金を得たときも、同様に、当該商品代金は直ちに支払債務と対当額で自動相殺により精算されるものとします。
弊社所定の審査を通過した購入者が、弊社の立替払決済を利用して商品を購入し、支払期日までに支払いがなされず(銀行口座振替以外を支払い方法として選択していた場合に限る)、銀行口座振替を支払い方法の一つとして登録している場合であって、かつ、当該銀行口座に預金残高が存在する場合には、弊社は、支払期日の翌日以降、支払方法を当該銀行口座からの銀行口座振替の方法に自動的に変更することにより、未払いの支払債務の弁済を受けることができるものとします。また、支払期日以降に支払債務が残っている場合には、当該銀行口座に新たに入金がなされたときも、同様に、弊社は当該預金残高について、銀行口座振替の方法により、直ちに未払いの支払債務の弁済を受けることができるものとします。

ポイントについて。180日間が有効期限ですよと。これはまぁ納得できますが。

第14条 ポイントの取扱い
1.ポイントの取得
ユーザーは、本サービスにおける各種キャンペーン参加、その他弊社が本サービスにおいて指定する方法により、ポイントを取得することができます。ポイントの取得単位、その他のポイントの取得条件は、弊社が定め本サービスにおいて表示するところに従うものとします。
2.ポイントの利用
ユーザーは自らが保有しているポイントを本サービスにおいて1ポイント=1円相当額として商品購入に利用できるものとします。ただし、弊社が別途本サービスにおいて利用条件を表示した場合には、当該表示に従うものとします。
3.ポイントの交換等
ユーザーは、ポイントを弊社が指定する本サービスにおける商品購入以外の、現金、財物その他の経済的利益と交換することはできません。また、弊社は、理由のいかんを問わず、一切ポイントの払い戻しをいたしません。ただし、法令上必要な場合はこの限りではありません。この場合、ポイントの払い戻し方法は、法令に従って弊社が定め、弊社のウェブサイト等に表示するところに従うものとします。
4.ポイントの有効期限
ユーザーは、ポイントを獲得した日から180日間もしくは付与前に別途弊社が定めた日数の期間中にのみ利用することができます。有効期限を過ぎた未使用のポイントは消滅し、その後利用することはできません。
また、ポイントの有効期限の起算点は、キャンセル等によりポイントが返還された場合等を含めて、いずれの場合も当該ポイントを当初取得した日とします。
5.ユーザーの退会・会員資格消滅の場合
理由のいかんを問わず、ユーザーが退会した場合又はユーザーの会員資格が消滅した場合には、当該ユーザーが保有するポイントは全て失効し、以後利用することはできないものとします。

外部サービスへの遷移を許可しますよと。

第15条 他のサービスへの遷移
1.外部サービスへの遷移
ユーザーが本サービスを利用するにあたり、本サービスから、弊社グループ又は第三者が運営する他のサービス(以下「外部サービス」といいます)に遷移する場合があります。ユーザーは、予めこれに同意するものとし、本規約及び外部サービスの利用規約等を遵守して、本サービス及び外部サービスを利用するものとします。
2.外部サービスの利用規約等
外部サービスへの遷移後に本サービスの利用を継続したユーザーは、外部サービスの利用規約等に同意したものとみなします。弊社は、外部サービスについて何等の保証を行わないものとし、ユーザー及び第三者が外部サービスを利用することにより生じる損害について、一切責任を負わないものとします。

サービスが提供できなくなったらサービスを終了してユーザーが損害を負っても責任はとりません、と読めますが・・・。

第16条 本サービスの中断・終了及び変更
1.本サービスの中断
弊社は、以下の各号のいずれかに該当する場合には、ユーザーに事前に通知することなく一時的に本サービスの全部又は一部を中断する事ができるものとします。その際、ユーザーに損害が発生した場合であっても、弊社は一切の責任を負わないものとします。
サーバー、通信回線、その他の設備の故障、障害の発生又はその他の理由により本サービスの提供ができなくなった場合
システム(サーバー、通信回線や電源、それらを収容する建築物などを含む)の保守、点検、修理、変更を定期的に又は緊急に行う場合
火災、停電等により本サービスの提供ができなくなった場合
地震、噴火、洪水、津波等の天災により本サービスの提供ができなくなった場合
戦争、変乱、暴動、騒乱、労働争議等その他不可抗力により本サービスの提供ができなくなった場合
法令又はこれに基づく措置により本サービスの提供ができなくなった場合
その他、運用上又は技術上弊社が本サービスの一時的な中断を必要と判断した場合
2.本サービスの終了及び変更
弊社は、任意の理由により、ユーザーへの事前通知をすることなく、いつでも本サービスの全部又は一部を終了及び変更できるものとします。
弊社は、前項の本サービスの終了及び変更による損害について、ユーザー及び第三者に対して一切責任を負わないものとします。

ユーザーは知的財産権がないという文面になっていますが、持っている場合もあるのでは・・・。

第17条 知的財産権及びコンテンツ
1.知的財産権等の帰属
本サービスを構成するすべての素材に関する権利は、弊社又は当該権利を有する第三者に帰属しています。ユーザーは、本サービスのすべての素材に関して、一切の権利を取得することはないものとし、権利者の許可なく、所有権、著作権を含む一切の知的財産権、肖像権、パブリシティー権等、コンテンツ素材に関する権利を侵害する一切の行為をしてはならないものとします。本規約に基づく本サービスの利用の許諾は、本サービスに関する弊社又は当該権利を有する第三者の権利の使用許諾を意味するものではありません。
2.弊社による利用
出品者により投稿された出品物の写真・情報等に関しては、本サービスの宣伝、運営等を目的として、弊社が自由に利用できるものとします。
3.コンテンツに関する責任
ユーザー等がサービスに関連して発信又は掲載したコンテンツに関する一切の責任は、当該ユーザー等が負うものとし、弊社は、その内容、品質、正確性、信憑性、適法性、最新性、有用性等について、確認いたしません。また、弊社は、それらに関して、一切保証せず、一切責任を負わないものとします。
4.コンテンツの内容等
ユーザー等は、他のユーザー等が発信又は掲載するコンテンツに対して、その内容、品質、正確性、信憑性、適法性、最新性、有用性等を、ユーザー等ご自身で判断する必要があります。弊社は、ユーザー等及び第三者が弊社のコンテンツを利用することにより生じる損害について、一切責任を負わないものとします。
5.バックアップ
弊社はコンテンツのバックアップを行う義務を負わないものとします。ユーザーは、コンテンツのバックアップが必要な場合には、自己の費用と責任でこれを行うものとします。
6.コンテンツの変更及び削除
弊社は、ユーザーが本規約に違反又は本規約の精神に照らして不適切な行為を行ったと弊社が判断した場合、当該ユーザーが掲載したあらゆるコンテンツを、事前の通知なしに変更及び削除できるものとします。

パソコンとかネットワークとか準備してね。さすがに自分でやってね。ということですね。第三者と揉めても自分で解決してね。

第18条 ユーザーの責任及び接続環境等
1. 必要な機器の準備等
本サービスの提供を受けるために必要な、コンピューター、スマートフォンその他の機器、ソフトウェア、通信回線その他の通信環境等は、ユーザーの費用と責任において準備し維持するものとします。また、その機器・ソフトウェア・通信環境等の設置や操作についても、ユーザーの費用と責任で行って頂く必要があります。弊社は、本サービスがあらゆる機器等に適合することを保証するものではなく、機器等の準備、設置、操作に関し、一切関与せず、ユーザーに対するサポートも行いません。
2.ネットワークの経由等
ユーザーは、本サービスを利用する際に、種々のネットワークを経由する場合があることを理解し、接続しているネットワークや機器等によっては、それらに接続したり、それらを通過するために、データや信号等の内容が変更される可能性があることを理解したうえで、本サービスを利用するものとし、かかる変更について弊社は一切責任を負わないものとします。
3.手続の成立
ユーザーがインターネット回線を通じて行う本サービスへの入力、出品、購入、退会、その他の手続は、弊社のサーバーに当該手続に関するデータが送信され、弊社のシステムに当該手続の内容が反映された時点をもって有効に成立するものとします。
4.トラブルの解決
本サービスに関連してユーザー間又はユーザーと第三者間で発生したトラブル(本サービスを将来利用するという前提の下で起こったトラブルを含む。)に関して、ユーザーは各自の費用及び責任で解決するものとし、弊社は一切の責任を負わないものとします。トラブルが生じた際には、当事者間で解決するものとし、当該トラブルにより弊社が損害を被った場合は、当事者は連帯して当該損害を賠償するものとします。
5.第三者との紛争解決
ユーザーと第三者との間で、本サービスに関連して、裁判やクレーム、請求等あらゆるトラブルを含む紛争が生じた場合、ユーザー各自の責任や費用で解決するものとし、弊社は、当該紛争に関し、一切関与しません。ユーザーは、当該紛争の対応のために弊社に生じた弁護士費用を含むあらゆる費用及び賠償金等を、連帯して賠償するものとします。
6.費用の負担
弊社とユーザー間で紛争が生じた場合、当該紛争に関連して弊社に発生した弁護士費用を含むあらゆる費用を、当該ユーザーは連帯して負担することに同意するものとします。

非保証という話。強気に書いていますね。一切保証しません。

第19条 非保証及び免責
1.内容等に関する非保証
弊社は、本サービスの内容・品質・水準、本サービスの安定的な提供、本サービスの利用に伴う結果等については、一切保証しません。
損失について一切責任を負わないものとします。

2.弊社の免責
本サービス提供における、不正確、不適切、不明瞭な内容、表現、行為等により、ユーザー及び第三者に対して損害が生じた場合、故意・過失の有無にかかわらず、弊社は、当該損害について一切責任を負わないものとします。
3.アドバイス等の非保証
弊社は、ユーザー等に対して、適宜情報提供やアドバイスを行うことがありますが、それらに対して責任を負うものではありません。また、そのアドバイスや情報提供の正確性や有用性を保証しません。
4.コンピュータウィルス等に関する非保証
本サービスに関連するコンテンツの中に、コンピュータウィルス等有害なものが含まれていないことに関しまして、一切保証しません。本サービスに関連するコンテンツの中に、コンピュータウィルス等有害なものが含まれていたことにより生じた損害について、ユーザー及び第三者に対して弊社は一切責任を負わないものとします。
5.機器等に関する免責
ユーザーが利用した機器・通信回線・ソフトウェア等によりユーザー又は第三者に生じた損害に関しまして、弊社は一切責任を負わないものとします。
6.通信障害等に関する免責
本サービスへのアクセス不能、ユーザーのコンピュータにおける障害、エラー、バグの発生等、及び、本サービスに関連するコンピュータ、システム、通信回線等の障害に関しまして、弊社は一切責任を負わないものとします。
7.他のウェブサイトに関する免責
ユーザーが書き込んだ他のウェブサイト等へのURLにより、そのリンク先で生じた損害に関して、弊社は一切責任を負わないものとします。
ユーザーは損害賠償責任がありますが、メルカリには一切ありません。


第20条 損害賠償
1.ユーザーの責任及び弊社の免責
ユーザーが本規約に違反した場合、故意過失を問わず、当該ユーザーが、当該違反により損害を受けたユーザー及び第三者に対する損害賠償責任を含む、一切の責任を負うものとします。ユーザーがかかる違反行為を行ったことにより、弊社が損害を被った場合は、当事者は連帯して当該損害を賠償するものとします。
2.弊社の損害賠償責任
弊社は、弊社による本サービスの提供の停止、終了又は変更、ユーザー登録の取消、コンテンツの削除又は消失、本サービスの利用によるデータの消失又は機器の故障等、その他本サービスに関連してユーザーが被った損害につき、賠償する責任を一切負わないものとします。なお、消費者契約法の適用その他の理由により、本項その他弊社の損害賠償責任を免責する規定にかかわらず弊社がユーザーに対して損害賠償責任を負う場合においても、弊社の責任は、弊社の過失(重過失を除きます。)による債務不履行又は不法行為によりユーザーに生じた損害のうち現実に発生した直接かつ通常の損害に限り、かつ、当該ユーザーから受領した代金の累積総額を上限とします。

メルカリへの連絡はお問い合わせフォームで。

第21条 一般条項
1.通知
本サービスに関する弊社からユーザーへの通知・連絡は、弊社が運営するウェブサイト又はアプリケーション内の適宜の場所への掲示その他、弊社が適当と判断する方法により行なうものとします。弊社は、個々のユーザーに通知及び連絡をする必要があると判断した際、ユーザー情報の電子メールアドレス、住所又は電話番号に対し、メッセージング機能、電子メール、郵便又は電話等を用いて通知及び連絡を行うことがあります。
弊社からの通知及び連絡が不着であったり遅延したりといったことによって生じる損害について、弊社は一切の責任を負いません。
ユーザーが弊社に通知、連絡又は問い合わせをする必要が生じた場合、本サービスのお問い合わせフォームを利用するものとし、電話や来訪を行うことはできないものとします。弊社は、かかる連絡又は問い合わせがあった場合、弊社が定める方法により、ユーザーの本人確認を行うことができるものとします。また、問合せに対する回答方法に関しては、弊社が適切と考える回答方法を利用することができるものとし、その回答方法をユーザーが決めることはできないものとします。
2.譲渡禁止
ユーザーは、弊社の書面による事前の承諾なく、本規約に基づく契約上の地位又は本規約に基づく権利もしくは義務につき、第三者に対し、譲渡、移転、担保設定、貸与、その他の処分をすることはできません。
事業を売却したらユーザー情報ごと売ります。

3.事業譲渡
弊社が本サービスに係る事業を第三者に譲渡する場合(事業譲渡、会社分割その他本サービスが移転する一切の場合を含む。)には、当該事業の譲渡に伴い、ユーザーの本規約に基づく契約上の地位、本規約に基づく権利・義務及びユーザー登録に伴い登録された情報その他の情報を、弊社は当該事業の譲受人に譲渡することができるものとし、ユーザーは、かかる譲渡につき予め承諾するものとします。
4.分離可能性
本規約のいずれかの条項又はその一部が、消費者契約法その他の法令等により無効と判断された場合であっても、本規約の残りの規定及び一部が無効と判断された規定の残りの部分は、継続して有効に存続し、当該無効とされた条項又はその一部を、有効とするために必要な範囲で修正し、最大限、当該無効とされた条項又はその一部の趣旨及び法律的経済的に同等の効果が確保されるよう解釈されるものとします。
規約にないことはメルカリが後出しで決めます、とも読める。

5.定めのない事項等
本規約に定めのない事項又は本規約の解釈に疑義が生じた場合には、ユーザーは、弊社の定めるところに従うものとします。これにより解決しない場合には、弊社及びユーザーは、信義誠実の原則に従って協議の上速やかに解決を図るものとします。
6.言語
本規約は、日本語を正文とします。本規約につき、参考のために英語による翻訳文が作成された場合でも、日本語の正文のみが契約としての効力を有するものとし、英訳はいかなる効力も有しないものとします。

紛争が起きたら裁判します。

7.準拠法及び裁判管轄
本規約は、日本法に基づき解釈されるものとし、ユーザーと弊社の間で生じた紛争については、その内容に応じて東京簡易裁判所又は東京地方裁判所を第一審の専属的合意管轄裁判所とします。

2017年6月5日改訂
2017年4月12日改訂
2017年3月2日改訂
2016年11月15日改訂
2015年3月16日改訂
2015年2月3日改訂
2015年1月26日改訂
2014年9月16日改訂
2014年6月18日改訂
2014年4月23日改訂
2013年11月1日改訂
2013年10月16日改訂
2013年9月20日改訂
2013年7月30日改訂
2013年6月25日制定



2017年6月28日水曜日

ニューラルネットワークにおけるバッチ処理の高速化測定メモ

オライリー本で、ニューラルネットワークがバッチ処理で高速になる、という話があり(ディープラーニング/斎藤, 3.6.3章 バッチ処理)、どれほど速くなるのかを見てみました。

ソースコードはそのまま流用していますが、line_profilerでの測定用に関数にしています。
x, t = get_data()
network = init_network()
def get_accuracy_with_batch(x, t, network):

    batch_size = 100 #
    accuracy_cnt = 0
    for i in range(0, len(x), batch_size):
        x_batch = x[i:i+batch_size]
        y_batch = predict(network, x_batch)
        p = np.argmax(y_batch, axis=1)
        accuracy_cnt += np.sum(p== t[i:i+batch_size])
    print("Accuracy:" + str(float(accuracy_cnt) / len(x)))

    accuracy_cnt = 0
    for i in range(len(x)):
        y = predict(network, x[i])
        p = np.argmax(y)
        if p == t[i]:
            accuracy_cnt += 1
    print("Accuracy:" + str(float(accuracy_cnt) / len(x)))
という関数にしておいて、バッチにしているものと、そのままのものを連続して動かします。


%lprun -f get_accuracy_with_batch get_accuracy_with_batch(x, t, network)

で測定してみると。確かに高速になっています(1/6くらい)。
Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     3                                           def get_accuracy_with_batch(x, t, network):
     4                                             
     5         1            2      2.0      0.0      batch_size = 100 #
     6         1            1      1.0      0.0      accuracy_cnt = 0
     7                                         
     8       101          115      1.1      0.0      for i in range(0, len(x), batch_size):
     9       100          176      1.8      0.0          x_batch = x[i:i+batch_size]
    10       100        58223    582.2     12.4          y_batch = predict(network, x_batch)
    11       100         1111     11.1      0.2          p = np.argmax(y_batch, axis=1)
    12       100         2029     20.3      0.4          accuracy_cnt += np.sum(p== t[i:i+batch_size])
    13                                         
    14         1          116    116.0      0.0      print("Accuracy:" + str(float(accuracy_cnt) / len(x)))
    15                                             
    16         1            1      1.0      0.0      accuracy_cnt = 0
    17     10001         4512      0.5      1.0      for i in range(len(x)):
    18     10000       366764     36.7     77.8          y = predict(network, x[i])
    19     10000        23556      2.4      5.0          p = np.argmax(y)
    20                                         
    21     10000         9054      0.9      1.9          if p == t[i]:
    22      9352         5339      0.6      1.1              accuracy_cnt += 1
    23                                         
    24         1          171    171.0      0.0      print("Accuracy:" + str(float(accuracy_cnt) / len(x))

2017年6月21日水曜日

jupyter + lprun の設定メモ

line profilerを使って行ごとの処理時間を測ります。自分メモ。Python3, ubuntu16.04LTS

line profilerモジュールをインストール、設定

 condaでするなら。
conda install -c anaconda line_profiler   
でインストール。下記の設定をします。隠しフォルダ.ipythonの中のファイルに設定を書き込みます。ちなみに、ubuntu+jupyterではこれをしなくても動作しました。

 ~/.ipython/extensions/line_profiler_ext.py

を開きます。(なければ作成します)
import line_profiler
def load_ipython_extension(ip):
    ip.define_magic('lprun', line_profiler.magic_lprun)
と書いて保存し、マジックワードを設定。

~/.ipython/profile_default/ipython_config.py

を開いて、どこでも良いのでこれを追記します。
c.TerminalIPythonApp.extensions = [
  'line_profiler_ext',
]

lprunの使い方

1.

jupyterで使うときは、この一行を入れます。
%load_ext line_profiler
2.

測定したい部分を関数にします。
 def foo():
    list_test = []
    for i in range(1000):
        list_test.append(i)
3.

# %lprun  -f  関数名 関数(引数あれば)
を入力することで、関数の行ごとの時間を測ります。
%lprun -f foo foo()
結果はこのように出力されます。 これを見ると、どこに時間がかかっているかが分かります。

Hit: その行を通った回数
Time:その行にかかった時間(単位は上部のTimer unit: 1e-06 s→今はマイクロ秒)
Per Hit: その行を1回通るのにかかった時間
%Time: 全体の中でその行が占める時間割合




例えば今のforループをリスト内包表記に書き換えると。
def bar():
    lsit_test = [i for i in range(1000)]
速くなっているのが分かります。


Timer unit を設定するとき

デフォルトでは1e-06 s(マイクロ秒)ですが、環境によっては設定が変わって適当な値になることがあります。自分で明示的に設定するときは
# %lprun  -f  関数名 -u 0.000001 関数(引数あれば)
というように-u オプションを使います。

あるいは、このように設定します。
profiler = LineProfiler()
profiler.print_stats(output_unit=0.000001)

関数名を変数にしたいときは$を使う

func = 'some_function'
のとき、この変数funcをプロファイルするには$funcとしてlprunに渡します。
%lprun  -f  $func  関数(引数あれば)

lprunの結果をテキストに出力する

-T <filename>コマンドを使います。ファイル名はそのまま打てばよく、文字列にする必要はありません。
%lprun  -f  main -T test.txt main()
***Profile printout saved to text file 'test.txt'

と出力されます(これはソースをいじらないと消せない)。ディレクトリで指定したいときは
-T dir\test.txt
でOKです。

ファイル名を変数として渡すときは$filename のように$をつけます。

filename = 'test_var_name.txt'
%lprun  -f  main -T $filename main()

2017年6月18日日曜日

Webアプリエンジニア養成読本 PHPメモ 主に失敗箇所、本の誤字脱字

つらつらとメモ。自分の間違いもあるが、本の間違いが非常に多い・・・。


■失敗

<?php



<? php
と書いていた(スペース不要)

その他、
templates, settings のs 抜け
sqlightと書いていた
など、スペルミス多発・・・

--
サーバのターミナルに

127.0.0.1:39330 Invalid request (Unexpected EOF)

というエラーが出るが、これはPHPのビルトインサーバの意味なしエラーで対処しようがないらしい。
http://stackoverflow.com/questions/29141240/php-local-server-invalid-request-unexpected-eof

--

$ sudo add-apt-repository ppa:ondrej/php5

という部分、p34) php5と書くとエラー。phpのみで通る。

なんやかんで、PHP5.6をいれる場合はこうしたらOK。
$ apt-get install php5.6-xml
https://github.com/oerdnj/deb.sury.org/issues/472

だめだったので、php7.1を入れました。

--

p40 がおかしい
リスト5は不要
autoloadの部分はリスト1で既に記述してあるのに追記という表現になっている。

--

■失敗

'Slim\Slim' not found in /dir/XXX/

というエラーでハマる

autoloadが正常に機能していない?

require '../vendor/autoload.php';

を消してしまっていたのが問題だった。
「修正し」という表現がどうにも誤解してしまったようだ。反省。

--

~/Tinitter/lib$ atom /Base/DB.php

こういう感じでフォルダを指定してphpファイルを作ったら、保存できなかった。Baseのpermissionがないという警告。

~/Tinitter/lib/Base$ atom DB2.php

であれば問題なかった。

リネーム。名前の違うファイルに移動する。
~/Tinitter/lib/Base$ mv DB2.php DB.php

--

p47
リスト22では → リスト6 ではの間違い。(別の章から通しで番号をつけていた名残の直し忘れ?)

--

$ sudo apt install composer
でインストールした
$ composer require respect/validation
でrespect/validationを入れた

--

class Post extends \Respect\Validation\Validator

というクラス継承で正常に動いている。

php ~/composer.phar update


--

■PDO driver が入っていないエラー

リスト15

Slim Application Error
The application could not run because of the following error:

Details

Type: PDOException
Message: could not find driver
File: /home/shimo/Tinitter/vendor/illuminate/database/Illuminate/Database/Connectors/Connector.php
Line: 47

というエラーが出て沈没

// githubの最終には以下が入っていない・・が関係なさそう
// $app->post('/post/commit', '\Tinitter\Controller\Post:commit');

[Wed May 17 20:33:10 2017] Tinitter\Model\Post Object
(
    [connection:protected] =>
    [table:protected] =>
    [primaryKey:protected] => id
    [perPage:protected] => 15
    [incrementing] => 1
    [timestamps] => 1
    [attributes:protected] => Array
        (
        )

    [original:protected] => Array


protectedなのが問題?

と思ったが、

$post->save();
の後が現れなかったので、ここが問題であるようだ

結局、ドライバが入っていないのはそもそもインストールされていないということだった
$ sudo apt-get install php7.0-sqlite3

http://stackoverflow.com/questions/30009618/why-cant-create-the-sqlite-db-with-pdo
http://stackoverflow.com/questions/37894766/how-to-solve-php-7-not-found-sqlite3
http://stackoverflow.com/questions/35240414/laravel-5-pdoexception-could-not-find-driver

これで解決。

///別PCでは、上記では解決せず。--> phpのバージョンが違ったので、変えればOK

--

本文が現れない・・・
sqlite.dbには格納されているので表示の問題

show.twigの
<div class="body">{{ post.body|nl2br }}</div>
は|(パイプ)を読み間違えていました。


--

■失敗
page2以降が表示されない・・・
show.twigのあたりがおかしかった模様
{% if page_num == 1 %}

--

既にインストールしてあるものを再度書いてある
CSRFは slim/Extraに・・・


Exception: Sessions are required to use the CSRF Guard middleware. in /home/shimo/Tinitter/vendor/slim/extras/Slim/Extras/Middleware/CsrfGuard.php:63

となっているので、インストールしなおし?

$ php composer.phar update

でやり直してみたが、特に変更なし
CSRFのプラグイン有効化の場所が違う?

https://github.com/uzulla/Tinitter

これでphpサーバ立ち上げ
~/Tinitter/htdocs$ php -S 127.0.0.1:8080

--

二周目。新PCでやってみる

Type: Twig_Error_Loader
Message: The "./templates" directory does not exist
というエラーが出て、図6のようにならない。
templatesのディレクトリの設定が間違っている?
ディレクトリのpathの受け渡しがおかしいようだ。が、なんともならず。最初からやり直すことにする。

templates -> template スペルミスだった s抜け
autoescape -> o が抜けるスペルミスだった