主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

なんとなく。

                
tags:
DSCN0450.jpg
 
 ここしばらくガンプラ作りに没頭していて、ブログ更新を滞らせていた。そんなもんでそろそろいい加減にとなんか書こうかと考えてみた。そういや会社でWebアプリのテストにSeleniumを導入したからそれ書こう・・・といきたいところだけど、導入方法をSphinxでまとめたものが会社のPCに入っているので、家で一から調べなおして書いていく気が起きない。
 
 技術的な遊び道具としては、RaspberryPiの3が出たり、Xamarinがタダになったりと、自分用ガジェットを作るのに役立ちそうなものがある。どっかからメールで、コンテナをデプロイできるサービス開始したぞというのも来ていた。そろそろガンプラ作りから帰ってくる頃合だろう。

 ただPCが古くて不調なので、まずはそこからどうにかせねば。
スポンサーサイト

ブログ移転計画

                
 しばらく更新できてなかったが、自分でブログエンジンを書いて移行しようかと考えている。以前にそういうものはPython+GAEで作ったが、もうGAEからはおさらばしたい。新しい環境はASP.NET MVC + MongoDB on Linux。Dockerも利用を考えている。

 とりあえずDockerでNginX、ASP.NET MVC、MongoDBをsupervisordで管理するものを用意した。あとはコードを書いていくだけだ。

1604090026063.jpg

Dockerfile
FROM matoba/aspmvc

RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 && \
echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.2 main" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list && \
apt-get update && \
apt-get install -y mongodb-org && \
apt-get -y install nginx && \
apt-get install -y supervisor

RUN echo "daemon off;" >> /etc/nginx/nginx.conf
RUN rm /etc/nginx/sites-enabled/default
ADD nginx.conf /etc/nginx/conf.d/
RUN /etc/init.d/nginx reload
RUN mkdir -p /data/db

COPY . /app
WORKDIR /app
COPY mongod.conf /etc/mongod.conf

EXPOSE 80
ENTRYPOINT /usr/bin/supervisord -c supervisord.conf


nginx.conf
server {
listen 80 default;
server_name example.org;
access_log /var/log/nginx/example.log;

location / {
proxy_pass http://127.0.0.1:5004;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


mongod.conf
processManagement:
fork: false
net:
bindIp: 127.0.0.1
port: 27017
storage:
dbPath: /data/db
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
journal:
enabled: true


supervisord.conf
[supervisord]
nodaemon = true

[program:nginx]
command = nginx

[program:mongodb]
command = mongod --config /etc/mongod.conf
user = root
autostart = true
autorestart = true

[program:aspmvc]
command = dnx -p project.json web

今年やろうかなと思うこととか

                
tags:
 大きく分けて二つ。JavaScriptでいろいろやるのとASP.NET MVC。

 JavaScriptではNode.jsに注目している。ドキュメントの最初のサンプルがたしかNode.jsだけで、ApacheなどいらずにWebサーバーになっている。思いついたプロトタイプを手早く作るのがだいぶ楽かも。Python + GAEでやっていたところはNode.js + Herokuでいける。IoTもやりやすそう。
 今年はRaspberry Pi2を買ってIoTをつついてみたいと考えている。WebサーバーがNode.js単独でいける上、Windows 10にて導入されたUWPアプリのAPIに、Node.jsからフルに触れるようだ。
https://blogs.windows.com/buildingapps/2015/05/12/bringing-node-js-to-windows-10-iot-core
 Webサーバーいける、IoTもいける、となると個人的な工作をするにはいろいろと楽しめそう。いざとなればECMAScriptルーツのC#への書き換えも他言語よりは楽だろう。蛇には冬眠に入ってもらうか……。
 Node.jsの欠点としてはCPUにヘヴィーな処理をやっていくのには向かないというところ。
 今のところNode.jsのドキュメントは全然読んでいないが、Node.jsで使えるライブラリをなぜか一本公開してある。テストも書いてあって数人ばかりフォークしているような状態。しかしとりあえず基礎からやってHerokuに一本行ってみる……ことからだろうか。


 もうひとつはASP.NET MVC。それなりの規模のWebアプリの開発にMVCフレームワークをおさえておきたいという考えがあったので、好きなC#でなおかつクロスプラットフォームでいけるASP.NET MVCを選択した。.NETなら互換性を破壊するような言語使用の変更は巷で話題のスクリプト言語より少ないようにも思うし、セキュリティアップデートも言語仕様の変更とは別れて配布なはず。アップデートをあてたら動かなくなったとかはほぼない、あっても軽微な修正で済む……はず。
 ASP.NET MVCはLinux対応のベータやらなんやらの段階ですでに動くものは出てきている。二つ持っているブログのうちどちらかをASP.NET MVCに移植し、適当なLinuxサーバあたりを借りつつのっけたい。ちなみにDockerに構築してサーバにDockerイメージを丸投げで動かすのもありかと考えている。


 今のところやりたいと考えているものは大別して二つ。だけど必要性、興味、さまざまなソフトウェアの更新や新規リリースを見ながらいくつか増えていくとも思う。


 ……あとは欲しいPCが出てきた。HPのSpectre Limited EditionとVaio Pro mk2。とりあえずどっちも堅牢。
 Spectreは、個人的にイマイチなデザインが多いHPにあって抜群のデザイン。金属が表出している部分に銅色を持ってくるとか渋い。重さ1.5kg程度でイマドキのモバイルと比べると重いがまあ許容範囲だろう。
 mk2は軽いし、ハードの内部アクセスが可能になっているのでSSDやメモリの換装ができそう。こっちは天板デザイン以外ほぼ文句がない。天板のVaioロゴがもっと控えめだったら完璧好みだった。

Githubノススメ

                
tags:
 少し前にGithubから「クーポン送ったけどあなた使ってないよね。よかったらなんでか教えて」という内容の調査メールが来ていた。メールボックスをひっくり返してもそのようなメールが出てこなかったので、調査に回答しつつサポートに「もう一回送ってもらえんかー」と伝えておいた。そのあとで冷静に考えてみてスパムかとか疑ってみたが、公開していないアドレスだし調査メールも個人情報を入力する欄はなかったので本物かーと考え直したりしていた。
 ついさっきGithubのサポートから「あなたのクーポンコードはこれ」というメールが来た。どうやら本物だったらしい。おかげで月額サービスであるプライベートリポジトリを5つまで、永年無料で使えるようになった。
1509231341144.jpg
 ありがたい恩恵を受けたので個人的にGithubをどういう目的でどう使っているかを書いておく。


 個人的にGithubをどういう目的で使っているかというと、バージョン管理、コードやそれを含むプロジェクトのバックアップ、あとはオープンソースとしてソフトウェアを公開してフィードバックを受けつつ改良するため、という三点。ちなみにGithubはWindows向けにもデスクトップアプリを用意している。

 バージョン管理について。ぼくはいくつか自分のためだけに作ったアプリケーションを使っている。とりあえず完成はしているのでそれなりの動作はしてくれるが、たまに改良とか機能追加を考え付くのでコードの書き換えなどが必要になってくる。書き換えをしていると問題が出てきてコードを書き換え前の状態に戻したいとかってなるのでバージョン管理が欲しくなってくる。そういうわけでGithubを使う。
 コミットという名称で復元ポイントを作成して進めていくという感じだろうか。Githubアプリを開けばプロジェクト下にあるファイルの変更を自動で調べてくれる。調べてくれた変更点を復元ポイントとしてコミットしたければ、コミットに名称と概要をわかりやすいように与えてポチッとボタンをクリックするだけである。
1509231709030.jpg

 バックアップについて。Githubでは個々のプロジェクトをパブリックリポジトリとして公開設定にすることにより、Webでホスティングすることができる。不慮のHDDやSSDの事故が起きたとしてもバックアップは手元ではなくWeb上にあるので消失はしない。そんなわけでバックアップ手段の一つとして。ただ公開設定にしておくと無料、非公開なら有料になるというのは留意。ぼくは隠さねばならないようなコードは書いてないので公開設定で無料で使っている。重要な情報を書いたファイルは絶対にコミットしないようにもしている。

 オープンソースのソフトウェアとしての公開について。プログラミングを趣味でやっているとそのうち、困ってる人の手助けになるようなソフトウェアとしてコードを書いたり、自分の名前を売るためにコードを書いたりしたくなると思う。そうすると書いたコードを公開する場が欲しくなる。Githubはまさしくそういう場だろう。自分で書いたコードに権利を主張するライセンス文を追加して公開しておく。そのコードが有用なら誰かが使うし、それでバグが見つかれば自分のところに報告してくれるだろう。
 JPEGのメタ情報が記録されているExifをPythonでいじるライブラリが欲しくて自作した。せっかくだからとGithubで公開したところ、バグを報告してくれたり、ドキュメントの不備を訂正してくれる人が出てきた。ライブラリを有名なWebサイトで運営しているサービスで使ってくれる人も現れた。自分以外の人にも使ってもらえれば、バグなどの心配も減っていくだろう。
https://github.com/hMatoba/Piexif


 というわけで自分のためにでもなんでもコードを書いている人は、目的が合えばGithubを使ってみるといいと思う。もし公開が嫌ならば、ローカルのみで使って公開設定にしなければ公開せずにバージョン管理は行える。
プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。