かざいむ日誌

IT関係で知ったことなどを記事としてあげていきます。内容に不備や質問などあればぜひコメントをよせてください。

Python __init__ __enter__ __exit__

Pythonのコードを読んでハテナとなったのでググりました。

以下の3つの特別なメソッドがあるらしい。

__init__
Pythonのクラスのコンストラクタ。

__enter__

__exit__

この2つはセットで用意するもので、C#でusing句を使う感じだろうか、、、。Pythonでwith句内でオブジェクトが利用される。その際に__enter__メソッドが呼ばれ、with句を抜けるときに__exit__メソッドが呼ばれる。なので、リソースの確保、解放を行うとよさそう。

dackdive.hateblo.jp

勉強になりました。ありがとうございます。

Linux 権限入門(メモ)

Linux今までほとんど触ったことなくて、権限についてもあまり意識していなかったけど、他のブログでさらっと紹介されていて、分かってなかったなぁと思ったので、ちょっとググった。

理解した範囲で簡単にまとめますが、多分下に紹介する記事やブログの方が分かりやすいです。

Linuxでは所有者、グループ、その他のユーザーの3種類のユーザーがいる。
それぞれのユーザータイプに読み取り、書き込み、実行の3種類の権限がある。

それらが、ls -l でファイル一覧出したときの、-rwxとかの文字列になる。

これを数字で表すと、1:実行、2:書き込み、4:読み取りに対応している。

これは数字を足して表すことも出来るので、chmod 777 target_file というコマンドを実行することも出来る。所有者、グループ、その他のユーザー全てが読み取り、書き込み、実行が出来るというもの。

qiita.com

Linuxコマンド集 - 【 chmod 】 ファイルやディレクトリのアクセス権を変更する:ITpro

 

勉強になりました。ありがとうございました。

IoT LinkIt ONEを使う。Lチカ。

IoTの機器をオススメされたので、ちょっと試してみた。最終的にはお天気の情報をサーバーに上げてほこほこするつもり。

進められたのが、LinkIt ONEというIoT機器。Raspberry PiArduinoで比べるとArduinoに近い感じ。エディタもArduinoだし。この機器の特徴は通信が強いんじゃないかと。Wi-Fiアンテナ、GPSGSMアンテナがついてて、SIMカードを入れれば通信ができる。

導入手順はこのサイトに従ってやるとほぼうまく行く。

Get Started on Windows - LinkIt ONE Resources

途中アップデートがうまく行かなかったので、Aruduinoエディタを再起動するとうまく行った。

で、サイトに従ってLチカを試す。失敗。

BUILTIN_LEDが定義されていないというエラーが出る。

→他のサンプルを見てみると、書き方はpinModeという関数の引数として、数値型の値:光らせたいLEDの番号を渡すようになっているらしい。

コードをちょっと直して、

/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino model, check
the Technical Specs of your board at https://www.arduino.cc/en/Main/Products

This example code is in the public domain.

modified 8 May 2014
by Scott Fitzgerald

modified 2 Sep 2016
by Arturo Guadalupi

modified 8 Sep 2016
by Colby Newman
*/

int LED_BUILTIN = 0; // the PWM pin the LED is attached to

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
  delay(1000); // wait for a second
  digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
  delay(1000); // wait for a second
}

 

 これでLチカできた!

今日のコード(2017/01/29) Linuxシェル。

Raspberry Piをセンサーとして使うおもちゃを作ってるのだが、23時間たつとサービスが止まっている。再起動がかかっているのか、なにか別のことが起きてるのか不明、、、。
参考にしたコード一式を確認すると、やはりこれに対する考慮がされている。Raspberry Piのサービスは定期的に再起動して、init.dで起動時にサービスを再度実行している。

というわけで、シェルもちゃんと書けるようになりたい。今日は、ループで10回echoをするコードを書いた。コピペ。

linuxcommand.org

で、Shellの1行目はおまじないと思ってたら、ちゃんと役割があると知ってびつくり。

d.hatena.ne.jp

sechiro.hatenablog.com

このサイトが一番イメージとして分かりやすかった。

www.infraeye.com

OpenShift mongodb ちょっと覚書(MongoDBカートリッジとか)

OpenShiftにNodeJSとMongoDBを入れて動かしている。で、直接DBにデータをつっこみたいけどうまく行かない。puttyで繋いでmongoと打っているけど、それで見えるdbとNodeJSから見えるdbが違うっぽい。

OpenshiftでMongoDBへの接続を行う場合はこういう宣言でOK。

mongo_url = process.env.OPENSHIFT_MONGODB_DB_URL;

stackoverflow.com

Mongoは検索条件の指定とかもJSONだから、とったデータをそのまま検索条件にも出来る。SQLの組み立てがいらないのはなんか楽。

qiita.com

qiita.com

取得件数はこうやって数える。

Model.find().exec(function (err, results) {
var count = results.length

});

stackoverflow.com

 

OpenShiftで1つのログだけ見たいときはこのコマンド。

rhc tail -f app-root/logs/nodejs.log -a myAppName

stackoverflow.com

 

Mongoose全般についてはこのサイトで勉強しました。

albatrosary.hateblo.jp

 

WebHookの穴のふさぎ方。

Securing your webhooks | GitHub Developer Guide

日本に戻ったらどうしよう。 読書メモ。

日本に戻ってからの生活をどうするか妻と話をした。子どもが2人いて、私の収入が多くないので共働き、妻と子供は妻の実家に暮らして、単身赴任という形もやむなし、と考えていた。なんか追い詰められているような気持ちになりながら本を読んでいたら、考えるきっかけになる文章があったので、これを糧になんとか新しい生活を構想していきたい。

 

ニーズとは、欠乏やという意味からきている。私の現在の状態を、こうあってほしい状態に対する不足ととらえて、そうではない新しい現実をつくりだそうとする構想力を持ったときに、はじめて自分のニーズとは何かがわかり、人は当事者になる。ニーズはあるのではなく、つくられる。ニーズをつくるというのは、もうひとつの社会を構想することである。

『当事者主権』中西正司、上野千鶴子著、岩波新書

 

僕が思う「哲学」というものは、この隅田公園と隅田川河川敷が実は違う管轄で、それによって警察の動き方や行政の動き方が変わることを理解し、自分のくらす場所を獲得するという行為そのものである。彼は匿名していた「土地」を名のある大地として再認識した。つまり、レイヤー間をジャンプし、サバイブすることに成功したのだ。

その「考える」行為。匿名化した社会システムレイヤーの裂け目、空間のほつれを認識し、そこにたそうなレイヤーが存在していることを知覚し、ジャンプし、独自のレイヤーを作成する行為。

これが 「生きる」である。

 『独立国家のつくりかた』坂口恭平著、講談社現代新書

 

なんか本を読んでて繋がった気がしたのでメモ。

テロリストと人権活動家の共通点

先日ちょっと縁があって、人権活動のNGOについての話を聞かせてもらった。するとテロリストと似ているところがあるなと思ったのでその顛末を書く。

最近IS関連のニュースで取り上げられるのはその通信手段。以前は世界の各地から中東のIS支配地域に渡航し、トレーニングを受けて、各国に戻る。そして、テロを実行する。それが最近は、それぞれの国にいたままIS構成員の指導を受けて、テロを実行するとか。その際にIS構成員とのやり取りは盗聴されないようにしているとか。

一方で人権活動家は各国政府から監視されることが多く、盗聴などの対策を取っている。2段階認証のメールを使ったり、もろもろ対策を講じるとのこと。

と考えると、通信の面ではテロリストと人権活動家は似ていると言える。それもそのはず、どちらも反体制という意味では一緒だからだ。そう考えるとテロリストの手口に人権活動の進め方や他の活動の進め方のヒントが得られるかもしれない。

 

例えば、遠隔でトレーニングを施すとか、NGOや国際協力でももっと活用出来るはず。インターネットはどんどん普及しているので、各国語で学ぶ環境、英語を学ぶ環境を整えれば変化を生み出せるかも。