デルタ猛威とEvernote Python SDKセットアップ 2021年07月27日

Python

うーん、ちょっと気を抜くとすぐに更新が滞るなあ。27日何してたっけ?タイでは連休中の合間の営業日。この日も客先に出て納品の作業。しかしタイではどんどんどんどんCOVIDの感染者が増えていってて、ツイッターなどでは路上でコロナ死した死体の写真なんかがあがっていてどんどんヤヴァイ雰囲気が高まってきている。

そして夕方、Evernoteのメモデータ一括ダウンロードを実現させようと思って、PythonのEvernote SDKをダウンロードしてインストールを試みる。結局、新しいプランだか新しいバージョンのクライアントアプリだかで一括ダウンロードの機能がサポートされると通知されてたが、いろいろ触ってみるものの自分の環境ではどうやったら一括ダウンロードが可能なのかわからず、やっぱりスクリプト組むか。。。という方向に。

ダウンロードして圧縮ファイルを展開した後に中の setup.py を実行すりゃいいと公式のドキュメントにも書かれていたので実行してみるもののエラーが出て動かない。よく見てみると書式がPythonの2.x。うーん、もうPythonの2.xなんて使わないかなと思って3.9を入れていた。めんどくせー。また久しぶりにpyenvのインストール方法をググってインストール。pyenvで使用するpythonのバージョンを2.7台に合わせて実行。またエラー。。。

これもまた調べていくとどうも2.xの中でRepeated keyword argumentへの取り扱いが二転三転してた模様で2.7では以下のエラー出て進まない。。。というわけで下記のサイトに書かれているようにPython側で無視してくれるバージョン2.5にpyenvを変更。しかし、これでないと動かないというのはこのSDKは2.5のときに書かれてアップデートはされてないということか?

It turns out that repeated keyword arguments (kwargs) were illegal in python 2.4, ignored in python 2.5 and illegal again in python 2.6. This means that if some have crept into your codebase, you’ve now got a handful of syntax errors!
SyntaxError: keyword argument repeated

改めてpython 2.5にして実行!”ImportError: No module named setuptools”まだエラーでるか。。あかん、今日は時間切れ!

Windows 10 PCのセットアップ備忘録 2020年12月07日

My Workspace

自作でゲーム用のデスクトップPCを組んでからアップル解毒が始まり、今ではほとんどの作業をWindowsでやってます。(今年買ったIntel Macbook ProもParallels DesktopでWindows10を入れて今は100%そちらで作業。Parallelsの動作がかなり軽く、仮想環境で動かしているという自覚がまったくないほどWindowsの作業が快適。)

で、そうは言ってもさすがWindows、使えば使うほどCドライブが膨れ上がっていく。昔のようにHDDならCドライブに1TBとか当てれるけど、SSD環境だとポンと1TBのドライブを買うのはなかなか厳しい。なので256GBとかの環境で使っていると空きスペースが心許なくなってくるので定期的に初期化が必要。

で、定期的な初期化のために自分の最低限の環境を復元するための条件を覚え書きとして書いておく。

Windows OSインストール:
設定メニューの復元から初期を実施。ローカルデータから初期化を実施のほうが早く初期化できるのかな?
 
必要なドライバのインストール:
最近のWindowsは結構Microsoft標準のドライバで動いてしまうけど、GPUやマザーボードのドライバなどはやっぱりメーカーからダウンロードしてちゃんと入れておいたほうがいい。メーカーのサイトから最新版をDLしてインストール。

プログラミングフォントのインストール:
Windowsはフォント汚いし、テキストエディタでスクリプトの内容を見るときに見やすいようにプログラミング用のフォントをインストールする。

https://pouhon.net/post-217/217/

テキストエディタのインストール:
テキストエディタは最近はMicrosoftのVisual Studio Codeを使うことが多くなった。秀丸はもう卒業か?!でもvscodeと秀丸と2つ入れてたりもする。そしてSyncのアカウントでログインしておいて複数マシンで設定同期。
https://code.visualstudio.com/

IMEのインストール:
WindowsではATOKは優秀だと思う。AndroidもMacOSでもATOK試してみたがどちらも使う気にはならずWindowsマシンでのみATOK使用。ATOK Sync使えばWindowsマシン間で辞書データや設定を同期できて便利。ATOK Passportであれば10台までインストールできる。
https://www.justsystems.com/jp/products/atok/

LINEのインストール:
やっぱりメインのメッセンジャはこれ。仕事に私用に。毎回立ち上げ時にQRコードのスキャンがめんどくさいが。
https://line.me/en/

MS Officeのインストール:
なんだかんだ言ってこれが必要。仕事に私用に。とりあえず仕事のアカウントで office.com にログインしたらWebAppでとりあえずの仕事が出来てしまうのも便利。小規模のオフィス環境なら、インターネット回線とPCとOffice365があれば他は何も要らない説。
https://www.microsoft.com/en-us/microsoft-365/

Teratermのインストール:
SSHクライアント。Linuxサーバーに接続するために必要。Puttyよりもやっぱりteraterm。ログの保存設定がputtyよりも全然使いやすい。
https://ttssh2.osdn.jp/index.html.en

Winshotのインストール:
スクリーンショット取得ツール。これも絶対必要。仕事に私用に。
http://www.woodybells.com/winshot.html

Cliborインストール:
クリップボード履歴管理ツール。これも使い始めると手放せなくなる。Ctrl二回連打で呼び出せて過去にクリップボードに読み込んだデータを再度読み込み直せる。UIがシンプルで非常に使い勝手よい。Macでも同様のツールは入れてた。Windows起動の際に起動するよう設定。
https://chigusa-web.com/clibor/dnt/

Firefoxインストール:
メインブラウザはFirefox。Firefox Syncにログインして複数端末でブックマークや設定を同期。以下のアドオンをインストール。
https://www.mozilla.org/en-US/firefox/new/

Mouse Dictionaryのインストール:
マウスオーバーだけで英和辞書が引けるツール。動作も速くて快適。
https://addons.mozilla.org/en-US/firefox/addon/mousedictionary/

FoxyProxyのインストール:
事前登録したプロキシを1クリックで切り替えることが可能。
https://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/

TreeStyleTabのインストール:
タブを開きまくったときに、タブ表示幅が狭くなり、タブのタイトルが読み取れなくなる問題を解決。タブを左のサイドバーにツリー上に表示させることによりどのタブかを判断しやすくする。
https://addons.mozilla.org/en-US/firefox/addon/tree-style-tab/

そのほか、私用PCならSteam入れてゲームできるようにしたりとか、Amplitude入れてエレキのアンプ代わりにしたりとか、でも大体上記のアプリ入れればとりあえず作業開始できる環境にはなるかなあ。

うーん、ひさしぶりにデスクトップ+Windows10環境いいっす。Windows10がなかなかいいよね。Windows8の自分の悪夢からだいぶ使いやすくなっていいOSになったと思います。ハゲのおっさんが社長してた頃よりも今のインド人社長、ナデラさんになってからMicrosoftの製品が全体的によくなっていってる感があります。

いずれ消え行くPebble Timeを入手 2017年06月18日

image

バンコクのCentral Worldで売れ残っていたPebble Timeを見つけた。Pebbleという会社は元祖スマートウォッチメーカーで、初代は電子ペーパー採用でスマホと連動するスマートウォッチをクラウドファンディング経由で製造して大成功した会社だったが、最終的にスマートウォッチ群雄割拠状態に揉まれて昨年11月にFitbitに買収されていたようだ。

さらにはFitbitの方もどうやら既存のPebble製品を継続する意思が無いようで、これらの製品は終焉に向かうとの事。(ただ、「後はご勝手に、という感じで向こう側のサーバーやアプリを経由しなくても一応使えるようにする配慮はあるらしい)

初代Pebbleの頃から電子ペーパーのギザギザのビットマップ調のグラフィックが大好きで、いろいろApple Watchなどに浮気したりもしましたが何気にファンでした。もう手に入らなくなるかもと思ってPebble Timeを購入。3,990バーツ。他のスマートウォッチと比べると安くていい。

image

image

Heart RateモニタもGPSも付いてるわけではないけれど、本体がプラスチックで軽いし、30気圧防水、ウォッチフェイスはネットからダウンロードして好きなものをチョイスできる(自作することも出来る)。

ウォッチのアプリは正直大したものはない。

このPebble Timeの何がいいって公称7日間持つと言われるバッテリーです。ディスプレイが電子ペーパーだからこれだけ持つのだと思います。また、カラー画面になったPalmマシン(と言って分かる人がどれぐらい居るか?)みたいな感じの古臭い画面デザインも好き。後から自分でインストールしないといけないけれど日本語化すれば初代の時と同様日本語表示も出来ます。フォントサイズを一つ下げるとちょうどいい見栄えになる。

各アプリからの通知を読む機能に関してはApple Watchと比べてなんら遜色なし。誰から来たメール・メッセージか?冒頭の数十文字ぐらいは確認できるのでバイク乗ってる時なんかにすぐに返信が必要なものか、後に回していいものかの判断がつく。

というわけで久しぶりのPebble生活再開です。

ちなみに日本語化は以下のサイトの日本語化ファイルをiOSならsafariでダウンロードしてPebbleアプリから開けば「インポートしますか?」と聞いてくるのでインポートしてやると日本語化されます。これで□□□、という豆腐表示がなくなります。

また、僕が今回買った時にはなぜかウォッチフェイスやアプリをPebbleアプリからインストールしようとしても、リンクが切れてるのか各アプリのインストール画面に移動すると「読み込めません」エラーが表示されてインストールできなかった。これは一時的なものなのかもしくはディスコンに向けて機能が打ち切られたのかよくわかんない感じだが、こちらも

Pebble Watchのアプリストアapps.getpebble.comからパッケージファイルPBWをダウンロードする方法

このサイトにあるように、safariでapps.getpebble.comのサイトをブラウズしてインストールしたいアプリやフェイスの画面まで来たところで、URL末尾に “&dev_settings=true” を追加して再度開いてやるとスクロールした一番下にpbw(インストール用ファイル)をダウンロードと出るのでそこをクリック、ダウンロードしたらそのファイルをPebbleアプリで開いてやると日本語化ファイルと同じようにインストールできる。

※ こちらはPebble TimeのリセットとiPhoneにインストールしたPebbleアプリの再インストールを行うことで問題解決しました。どうもインターネット接続の安定したところ初期設定をやらないと問題が出ることがあるみたい。僕は夕方にトゥクトゥクに乗りながらセットアップしてたのでネットへの接続が不安定だったのかもしれない。

image

なんかすでに機能が停止しかけてる感のあるPebbleですがバッテリ持ちのいいかわいい時計なんでしばらく愛でてやりたいと思います。

socksサーバーをConohaのVPSにインストールする その2 2015年11月27日

google-mini-server-porn_22aug2008_7324

さてsocksサーバー構築の続きです。

しかしまた、socks5のセットアップ情報も日本語では少ない。当然使ってる人が少ないからだろう。とりあえずsocks5のサーバーとしてはdanteというパッケージが有名らしく、それを入れることにする。

Dante – A free SOCKS server
↑ Danteの本家サイト

通常CentOS6でバイナリをインストールする際に使うyumにもdanteは用意されていない。調べてみるとrpmでならバイナリが用意されているようでrpmforgeというrpmのレポジトリをyumに追加してそこからインストール。

[root@localhost ~]# wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
[root@localhost ~]# rpm -ivh rpmforge-release-*.rpm
[root@localhost ~]# yum -y update

% vi /etc/yum.repos.d/rpmforge.repo
### Name: RPMforge RPM Repository for RHEL 6 – dag
### URL: http://rpmforge.net/
[rpmforge]
name = RHEL $releasever – RPMforge.net – dag
baseurl = http://apt.sw.be/redhat/el6/en/$basearch/rpmforge
mirrorlist = http://mirrorlist.repoforge.org/el6/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1

yum -enablerepo=rpmforge info dante*
yum -enablerepo=rpmforge install dante*

これでとりあえずdanteのパッケージはインストール完了。

あとは設定ですが、設定ファイルの構成はシンプル。基本的には/etcの下のsockd.conf と socks.confの2つのファイルをviなどで編集するだけ。さらに今回みたいにインターネット上にサーバーを配置するならユーザー認証で認証されないと接続できないようにすると思うが、基本的にsquidのbasic認証のようにユーザー名とパスワードをsocks用に別途用意するのではなく、ホストに登録されているユーザー名とパスワードを利用するのでsocksを利用するユーザーを新たに用意して、ログインシェルをnullか/sbin/nologinを割り当てておく。

基本的にsocks.confでは

route {
from: 0.0.0.0/0 to: 0.0.0.0/0 via: direct
proxyprotocol: socks_v5 # server supports socks v5.
}

このように from: x.x.x.x/x to: x.x.x.x/x でACL指定(このサーバーはインターネット上にあり、アクセス元もGlobal IPがDHCPで変更されるので特に制限はしない記述)とサーバーでサポートするプロトコルの指定。基本的にこれだけで記載した。

sockd.confは

logoutput: /var/log/sockd.log

ログの出力をファイルに指定して、

internal: x.x.x.x port = 1080
external: x.x.x.x

でPCから接続を受け付けるIP→internal、socksサーバーから出て行く通信の送信元IPアドレス→ externalで指定する。今回はinternal = external というように同じIPになった。仮想IPを割り振ってサーバーを運用してる場合でもこのinternalとexternalに同じようにどんどん併記していけばちゃんと1のアドレスから入った通信は1から出ていき、2のアドレスから入った通信は2から出て行くように動作していた。

# methods for socks-rules.
socksmethod: username none #rfc931

# methods for client-rules.
clientmethod: none

ここに後述する詳細ポリシー設定の際に使用するアクセス方法を記載しておく。ここに書いていないと後のポリシーの記述内で指定しても有効化されない。ちなみにclientmethodの記載はPCからsocksサーバまでの通信、socksmethodに関してはsocksサーバーから外部の宛先までの通信に適用される。

user.privileged: root
user.unprivileged: nobody

これらはsocksのサービスが稼働する際のユーザー権限の設定。でいいはず。

client pass {
from: 0.0.0.0/0 port 1-65535 to: 0.0.0.0/0
log: connect disconnect error
}

socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
protocol: tcp udp
user: AAAA
log: connect disconnect error
}

後はこれらのポリシーの設定をしてあげる。先も言ったようにclient passがPCからsocksサーバーまでの通信のポリシー、socks passがsocksサーバーからアクセス先サーバーまでの通信のポリシーとなる。上記ではclient passではすべてのアドレスからすべてのアドレスへすべてのポート番号で許可して、通信のログをちゃんとファイルに出力しますという指定だけしている。

socks passも同じく通信の制限はほとんど課さず。サポートするプロトコルをtcp、udpと指定して同じくログ出力の記述。登録されたユーザーだけが使えるようにsocks pass内にmethod: username を追記して終わりかと思ってたが、なんでかうまく動作しない。数時間トライしたが、最終的にmethod: usernameではなく、user: <ユーザー名> というふうに記載したらとりあえずユーザー認証が正常に動作してくれた。

ffftpでsocksの指定をしてユーザー名、パスワードを設定してちゃんとftpサーバーに接続出来た。socksサーバーのユーザー名、パスワードを削除して接続しようとしても接続失敗するのも確認してとりあえず設定完了。

多分こんな感じでいいはずだ。。。

で、結局テストのみで最終的に使うことなく終わる。勉強する機会を与えて頂いてありがとうございました。。。これがなければ触る機会はなかったな。。。

以下参考にさせてもらいました。

danteでSocks Proxy — command not found:
SOCKSサーバ Dante インストール – moremagicの日記
↑ インストールに関して。日本語サイト。

sockd.conf(5): Dante server config file syntax – Linux man page
↑ 英語サイトだけどconfファイルのオプションの説明詳細が豊富。本家サイトのドキュメントより役に立つ。

socksサーバーをConohaのVPSにインストールする その1 2015年11月26日

server room

今月は自分でやってるVPN・プロキシ関連でインターネット経由での問い合わせがバンバン来た月だった。その中でとある方からのリクエストでクラウドのサーバーにsocks5のプロキシを立てれないか?というご要望。

「socks5?socks5?。。。そういえばブラウザのプロキシ設定の中でそのような言葉を見かけたような。。。」

SOCKS – Wikipedia

そう、個人的な記憶ではWindows / Internet Explorerのプロキシ設定や古くはNetscape、今はMozilla Firefoxなどのブラウザのプロキシ設定の項目で90年代からsocksはすでにあったように思う。20年弱インターネットに触れてきて始めてsocks5の単語を人が話しているのを聞いた(見た)。「こんなもの、誰が使ってんだ??」と思ってたがやっぱり少なからず使ってる人は居るのね。

で、ものの試しにセットアップ。Conohaというこれまた格安でVPSのインスタンスを貸し出してくれるサービスで手馴れているCentOS6.6のVPSを1つ借りてセットアップスタート。

ConoHa

しかし問題は、socks5、自分は今まで使ったことがないだけでなく、全く使い方がわからない、一般的にもどう使われてるのかわからない、という問題が。つまりどのような機能が実現されればOKなのかすら分からなかった。。。

んで、それもまたいろいろ調べて行ったらどうもsquidのようにHTTP/HTTPSのみではなくいろんなプロトコルをこのサーバーが中継してくれる。

[ PC ] <- 1 -> [ SOCKS ] <- 2 -> [ アクセス先サーバー ]

このように1と2の通信は別セッションになってて1はPCとSOCKSサーバー間、2はSOCKSサーバーとアクセス先サーバーの通信となってるところを見ると動作はsquidみたいな感じだが、役割的にはこのSOCKSサーバーを企業LANとインターネットの境界においてFirewallのような役割を持たせるようだ。昔の「アプリケーションゲートウェイ型のFirewall」のイメージか?SOCKS自体は中継のプロトコルとして定義されていてレイヤー5で動作するみたい。通信を行うクライアントのプログラムはSOCKSのプロトコルを実装している必要があるとのこと。

ファイアウォール(パケットフィルタリングとアプリケーションゲートウェイ)、DMZの仕組みや特徴について

んで調べてみるとどうやらWindowsのFTPクライアントであるffftpはFirewall経由でのFTPをサポートしていてそのFirewallにsocks5サーバーを指定できる。なのでとりあえずffftpでこのsocks5サーバーを経由して問題なくFTPでputやgetができればとりあえず動作確認完了ということにしてセットアップを試みるのであります。

長くなったんで ~その2~ へ続く。