2017/11/16

Firefox 57 Quantum アップデート開始

新Firefox Quantum 登場



  • 旧形式のアドオンは利用不能(代替えを探す機能あり)
  • メモリ使用量は、そんなに減ってない(と思う)
  • 進む・戻る がもたつく
  • スクリーンショット機能を標準で搭載
  • Firefox Sync は継続利用可能
  • Shockwave Flash はプラグインに残っている

先日、久々にOpera(blink)を試してみましたが、昔のサクサク感がまったくなくて非常に残念だったので、Quantumには頑張って欲しいところです
レンダリング速度と体感速度は違うって事を Operaは知っていたはずだけど...

2017/11/14

Python ディクショナリの keys や values の順序

Python のディクショナリを keys() や values() で独立して読み取った場合、取得される順序が同じかどうか

「python keys values same order」というキーワードで質問が散見され、各バージョン(2系, 3系)共にその間ディクショナリに手が加えられなければ、オーダーが保持されるだそうです

SQL の INSERT 文なんかに便利に使えたりする
ちなみに、配列をカンマ区切りの文字列で返すには下記のようにすると簡単です

s = ', '.join(data.keys())

2017/11/13

Python コメント coding:utf-8 の記述位置

Python + apache で UTF8の情報を扱っていたら SyntaxError: Non-ASCII character のエラーが多発、どうも

# -*- coding: utf-8 -*-

の記述位置が悪かったようで
途中に記述していたコメントを移動させて

#!~/python
# -*- coding: utf-8 -*-

pythonのパスが先頭、次の行にcodingを記述したら動作するようになった
マジックコメントって必要な場所より上にあればいいと思っていた・・・

Python + MySql で execute paramでテーブル名は渡せない

Python + MySql で execute paramでテーブル名は渡せないそうです

cur.execute("DELETE FROM %s WHERE (%s = %s);", ("myTable", "myKey", 10)) # NG cur.execute("DELETE FROM %s WHERE (%s = %s);" % ("myTable", "myKey", 10)) # OK


Firefox アドオンの Stylish がついにアップデートされて Chromeと同じ仕様に

Firefox アドオンの Stylish がついにアップデートされて Chromeと同じ仕様になった
閲覧サイトの送信問題とかいろいろあるわけですが

少し前から、Firefox版も URL同期が使えなくなり不便になっていましたが、結局 Chromeと不完全にもjson形式のエクスポートファイルが共通になりました

で、不完全なのは Chromeでエクスポートしたファイルに ANSI以外を含む場合、Firefox側でインポートすると文字化けします
また、Firefoxでエクスポートした際にファイル名が謎なのと、改行が殆ど無いエクスポートファイルになり、まだまだ不完全な感じが強いです

2017/11/10

Python で可変長引数を関数の戻り値で返す

Python で可変長引数を関数の戻り値で返す

def db_connect_config():     return {'user':'root', 'password':'passwd', 'host':'localhost', 'database':'myDB'} # ::: conn = mysql.connector.connect(**db_connect_config())

利用側で **

Python で日本語を含む MySQL の select 結果を json で出力

Python で日本語を含む MySQL の select 結果を json で出力する最小限のコードをメモ

Python2.7系
#!~\python2.7 # -*- coding: utf-8 -*- # utf8 output import sys import codecs sys.stdout = codecs.getwriter('utf_8')(sys.stdout) # header print("Content-type: text/plain; charset=utf-8") print("") # mysql import mysql.connector import json conn = mysql.connector.connect(user='root', password='passwd', host='localhost', database='myDB') cur = conn.cursor(dictionary=True) try:     cur.execute("select * from myTable;")     rows = cur.fetchall()     print(json.dumps(rows, ensure_ascii=False)) finally:     cur.close()     conn.close()

  • sys.stdout = codecs.getwriter('utf_8')(sys.stdout) で出力を UTF8に
  • cursor で dictionary=True を指定することで、fetch内容に列名が入ってくるので jsonで利用しやすくなります
    MySQLdb を利用している場合は、cursor(MySQLdb.cursors.DictCursor)
  • json.dumps で ensure_ascii=False を入れないと、"\u4e0d\u660e" みたいに ASCII以外を Unicodeエスケープされてしまいます
Python3系
#!~\python3 # -*- coding: utf-8 -*- # utf8 output import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') # header print("Content-type: text/plain; charset=utf-8") print("") # mysql import mysql.connector import json conn = mysql.connector.connect(user='root', password='passwd', host='localhost', database='myDB') cur = conn.cursor(dictionary=True) try:     cur.execute("select * from myTable;")     rows = cur.fetchall()     print(json.dumps(rows, ensure_ascii=False)) finally:     cur.close()     conn.close()


2017/11/09

Python の mysql.connector.connect でカラム名を取得

Python の mysql.connector.connect でカラム名を取得

cursor の引き数に dictionary=True を入れる
cur = conn.cursor(dictionary=True)
が、カラムの並びが???→宿題

Visutl Studio Code で Python だけタブを4スペースにする

Visutl Studio Code のタブ動作をデフォルトのスペースからタブに変更しているが、Pythonは4スペースにしたい
  1. Ctrl + Shift + P → Preferences: Configure language specific settings
  2. Python(下の方)を選択するか入力
  3. 表示されるpython設定に "editor.insertSpaces": true と "editor.tabSize": 4 を追加
{     "workbench.welcome.enabled": false,     "files.autoSave": "off",     "editor.insertSpaces": false,     "typescript.check.npmIsInstalled": false,     "python.linting.enabledWithoutWorkspace": false,     "editor.renderWhitespace": "boundary",     "[python]": {         "editor.insertSpaces": true,         "editor.tabSize": 4     } }

UniServer(Uniform Server) Zero で Python を動かす

簡単に Apache + PHP + MySQL の環境が作れる UniServer Zero で Python を動かしたメモ

  1. Pythonをダウンロード + インストール
    必要によって python.exe ディレクトリへパスを通す(cgiとしては通す必要ないです)
    インストールディレクトリ\PythonXX\ やら \PythonXX\Scripts に通しておくと便利です
  2. UniServerZ\core\apache2\conf\httpd.conf を開く
  3. py拡張子でスクリプト動作させる場合 httpd.conf の
    AddHandler cgi-script .cgi

    AddHandler cgi-script .cgi .py
  4. wwwフォルダでも cgi を動作させる場合 httpd.conf の
    <Directory "${US_ROOTF_WWW}"> を探して
    Options Indexes Includes
    の下に
    Options +ExecCGI
    を書き加える

test.py なんかを作って置いてみる※pythonのパスはそれぞれで
#!C:\Python27\python.exe
print("Content-type: text/plain")
print("")
print("Hello Python World!")

2017/11/08

Amazon Echo 日本発売(米国での発売時期)

Amazon Echo が日本国内でも発売されたが、本国での発売時期は歴史が古いだけあってかなり前だったりする
まぁ、ハードウェアよりソフトウェアが要なので、それほど気にしなくていいのかもしれないけど、サポート終了の時期が気になりますな

国内で発売された Amazon Echo は、デザインから米国の Echo 2 と思われるが、色の数などが本国と違っている

Amazon Echo 米国発売時期
タイプ米国発売
Echo Dot2015/06/23
Echo (2nd gen)2017/10/31
Echo Plus2017/10/31

ちなみに後発の Google Home は
タイプ米国発売
Google Home2016/11/04
Google Home Mini2017/10/19

2017/11/07

Raspberry Pi OS書き込みメモ(SD初期化, SSH有効化, ログイン, ホスト名)

Raspberry Pi の SDを初期化して、再セットアップした時のメモ

Raspberry Pi で使用していた SD の初期化 → Raspberry Pi 用のSDカードを初期化する方法
Raspbian OS イメージ ダウンロード
OSイメージの書き込み → Win32 Disk Imager

初期でSSH有効のための空ファイル設置場所( /boot/ssh )


ログイン情報

-->
ホストraspberrypi.local
ユーザーpi
パスワードraspberry

コンフィグ
$ sudo raspi-config