東京は相変わらず緊急事態宣言の最中です。暑い日が続きます。
家で作業しようとしてもエアコンの効きが悪く、室温がいまいち下がりません。暑いと集中力が失われるらしいですが、考える気力がなくなります。サーキュレーターも併用していますが気休めで、結局日が落ちてから少し集中力が回復する感じでいまいち進捗が遅いです。
ようやく8月も下旬に差し掛かり、夜は少しずつ涼しくなってきました。いろいろコンピュータについても、社会についても勉強しないとならんですが、骨休めに温泉入りたいですねぇ。ワクチンは2回打ったので抗体が増えるまで大人しくしていることにします。
ついに東京オリンピックが始まりました。今日は開会式です。
よく世界的にCOVID-19とその変異株が蔓延する中、よく開催にこぎつけたものです。G7の国の中では最も感染している人が統計でわかる限りにおいて最も少ない国である日本なので、開催できたといっても過言でないかもしれません(他の国だと選手団が嫌がるそうな気もします)。
日本国内の政治状況、デモなどではオリンピックの開催には反対の声はいまだあります。COVID-19がさらに蔓延してしまうのでないか、他のお金の使い道があるのではないか、という話です。そういう考え方もあると思います。ただ、国策として日本が招致に応募し開催することにしたのですから、やらないというわけにもいかないでしょう(1年延期になってはいますが)。
ひとまず開会式ができたところはまずは対外的にもメンツは保った形でしょう。ただ、これから選手にも選手団の関係者にも、日本国内の市民にも感染は広がってのではないかと思います(4連休なので出かける人が多数)。そのあたりは心配ですが、こればかりは国民一人一人が善良な意識を持つしかないのしょう。
暑くなってきていますがCOVID-19の猛威は止まりません。ワクチンの接種がある程度終わるまで、引きこもる生活は続きそうです。
2021年7月 東京エリア・関西合同Debian勉強会 を開催しました。セミナーは林さんのOSS Gateオンボーディングのという新しい施策の話、自分のpiuparts話でした。
林さんは若手のDebian Developerで新しい取り組みをして積極的に活動する方ですごいなと思います。
自分のpiupartsの発表はツールを試してみた系の記事ですが、なかなか時間が取れない中で資料を作成をするのはなかなかしんどいです。とりあえず発表が無事に終わってよかったです。
さて、もう少しでDebian 11 bullseyeはFull Freezeの日は決まったのですがいつリリースされるのでしょうか。Debianのリリース日はリリースの準備が整ったとき、というタイムベースドリリースではないです。リリース前の準備は少しずつ進めていきましょうか。
緊急事態宣言が5/31で終わりかと思いきや、6/20まで延長になりました。ただ、自宅近くの通っているジムは6/1から時短で営業再開をしました。土曜日に久しぶりにジムへ行ってランニングして筋トレをしてきました。
ジムは1か月と少しぶりの再開ということで、受付の流れが変わっていたり、トレーニング機器の細かい修繕がされていました。長期の休みでないとなかなかできないものですからね。マシーンルームに入るとあまり人はいません(緊急事態宣言でなくてもあんまりいませんけど)。いつものとおりランニングマシーンで走っているとやはり運動を1か月していなかったせいか、心拍数の上りが負荷の割に大きいです。体がついていけていないですね、地道にトレーニングに励みましょう。
これからは暑くなり、梅雨時ということで外でランニングがしにくい季節です(おい)。温室なジムでトレーニングしていきましょう。
2021年のゴールデンウイークはCOVID-19(新型コロナウィルス)蔓延のせいで、東京の緊急事態宣言が発令されて自宅に引きこもって終わってしまいました。仕事が多忙なこともありゴールデンウイークは暦通りに仕事をしていました(ゴールデンウイークが仕事にならなくてよかった・・・)。
このゴールデンウイークは自宅でDjangoのプログラムやテストを書いていたり、統計学の入門書を読んだりしていたら終わってしまいました。ゲームをもっとできるかと思っていましたが全然やる暇はなかったです(閃の軌跡4はクリアしてないし、創の軌跡はまだやれてない。今年は黎の軌跡がリリースされるというのに!)。とりあえず開発するものは一区切りしたのでゴールデンウイークのノルマは達成してよかったです。
あと数か月でDebian 11 bullseyeがリリースになるでしょう。ゴールデンウイークに翻訳作業を進めたので、残るはリリースノートの翻訳が大きな仕事です。今まで翻訳はあんまりかかわっていませんでしたが、手薄ですのでとりあえずやれるところからやりますかね。。。
そんなこんなの引きこもっていた生活でゴールデンウイークが終わってしまいました(2年連続)。まあ毎年ゴールデンウイークは混むので家にいるかちょっと都内の近場に出かけるくらいでしたので、ちょっと出かけることもなったという以外は例年通りです。さて、問題はこれから東京オリンピックはやり方を縮小してでもやれるのか?というところと、ワクチン接種がいつ回ってくるかです。早く温泉に行きたいです。
先日のブログに書いた通り、工数登録アプリ「active-task-summary」を改修していました。ようやく念願のver 1.0.0をリリースし、同時で2.0.0をリリースしました(?!)。
同時リリースになった背景には以下のメンテナンス状況がありました。
依頼が来ていた機能追加は前々から1.0をリリースするには必要な機能だった。
従来から0.8系(python-3.5+)と0.6系(python-2.7)の両方のラインをメンテナンスしていた(実際の運用環境がまだpython2.7だったりする)。
0.8系と0.6系は実行環境が違うだけで機能は同じになるようバックポートしていた。
こういう背景がありバージョンの整理をするため、0.6系を1.0系に改定してpython-2.7系のラインとして残し、0.8系をmainlineとして2.0系に改定しました。これで、1.0系はstableリリース版で、2.0系は最新版かつ今後の正当な開発版にする形にしました。
とりあえず一区切りをしたのですが、Django-3.2 LTSがリリースされており、Django-2.2から新機能も入っています。Django-3.2 LTSで動くバージョンはどうしたものかなという感じです。Django-1.11とDjango-2.2はviews.pyは同じで動くように維持していたのですが、models.pyとurls.pyは無理な感じです。Django-3.2系の開発ラインは3.0系に上げる前提で開発を進めるのがいいのかもしれません。そうなるとリリースしたver 2.0系は速攻でサポートが終わりそうな雰囲気がします。
とりあえずver1.0.0リリース、お疲れさまでした。予定通り開発が進んでよかったです。
久しぶりにgithubに公開している工数登録アプリをメンテしています。機能追加の依頼が来ているためです。
アプリの開発に着手したときはDjango-1.6ベースで作りはじめておりそれをベースに改修を続けてきたため最近のDjangoの流儀になっていないところが数多く見受けられます。今日はDjango-1.6ベースのファイルやディレクトリの配置構造、当時はなかった機能を自力でなんとかしてきた実装を一掃し、なるべく今のDjangoの流儀に合わせる改修をまずは行いました。これでだいぶすっきりしたと思います。
土日から始まるGWでは、追加機能の実装をしていこうかなと思います。ただ今年もGWはコロナ蔓延でどこにも行けないのは残念です。ワクチン接種を待ちましょう。
自分はwebアプリケーションの練習として1つはwebフレームワークを日常的に使うようにしています。 あまたのwebフレームワークの中でdjangoは付き合いが長いです。最近はCI/CDなんていうようになっていますが、自分が書いたdjangoなwebアプリケーションをansibleでデプロイする設定(playbook)は昔に作って放置気味でした。最近のOSに対応したものにアップデートするべく土日にがんばってplaybookを書いてみました。以下URLのgithubにアップロードしています。このページを見て参考にしてみようと思う方は無保証ですのであしからず。
なかなかansibleというか自動デプロイする手順を作るのは難しいですね。Dockerfileもそうですが、自動デプロイする手順ではviやsedでファイルを書き換える手順があるとすごい自動化が難しいです。そのため、ディレクトリを作る、ファイルを置く、シンボリックを張る、systemctlでデーモンを再起動する、という内容に絞ってplaybookを作成してみました。世間の人たちに比べてまあまあうまくできているものなんだろうか。
だいぶ陽気が出てくる春ですが、相変わらずCOVID-19の変異株で市中の感染者が減らない今日この頃です。4/1から新年度が始まり、今年度はいいことがあるといいですね。旅行にも行きたいものですが、なかなか無理かなという感じはします。
がんばっていきましょう。
COVID-19対策を目的とした2度目の緊急事態宣言が解除されました。とはいえ、みなさん好き勝手にするものだから最後は延長して解除ぎりぎりで増え始める事態になってしまいました。政府は何をやっているんだ、という声はあるものの憲法や法律をかざして自由にやったらそりゃ蔓延してしまうのは仕方ないかな。政府も難しい舵取りです。
こと日本人は3.11のときに忍耐がある、悲しみの中でもきびきび動くなどいろいろ世界から褒められることもありましたが、ことCOVID-19については一部の人は好き勝手気ままにやり放題でした。昔読んだ本「モチベーション3.0」のモチベーション2.0を指すアメとムチで人は動くという考え方を地でいった感じに思えました。アメ(=お酒飲みたい、交流したい)がないなかムチは打てずという状況でアメにひたすら向かっていった、という感じです。
さて、COVID-19の蔓延でリモートワークが浸透してきて会社も寛容になってきました。とはいえ、今度はリモートでどう生産性を上げるか、どう測るかという段階に入ってくると思います。開発者だとコミット数で測ることもできるのですが、事務職の人などはどうするのかなと思います。アフターコロナの社会、日本社会において生産性をプレゼンスする、という宿題を労働者は持たされたのだろうと思います。
今日はなぜか気温が20度を超える陽気な一日でした。窓を全開にして換気しつつ、部屋の掃除をしていました。部屋の床の掃除機をかけるのは埃がたまってくる2週間に1度のペースが多いのですが掃除機はすごい古いのでコードレスに買い替えて掃除の頻度を上げた方がいいのでしょうかね。(床にはいろいろ物が置いてあるのでルンバ買えない)
その後、日向ぼっこをしてジムでランニングと筋トレとして1日が終了です。なんだかあんまり生産的または知的な感じの1日ではありませんが太陽を浴びる&運動するは必要なのでそちらを優先です。
今週は火曜日が天皇誕生日で祝日です。仕事日が1日少ないのでよい1週間になるとよいなと思います。
毎月恒例のDebian勉強会がありましたので、参加しました。いつものとおり、司会進行係です。今回のセミナー発表はModSecurityの話と自分が発表したetherpad liteの話です。
ModSecurityは使ったことがないのでいろいろ勉強になりました。OSWASPって名前は聞いたことあるのですが、Open Web Application Security Projectの略なんだと初めて知りました。なんだかOWASPが出しているセキュリティのルールフィルタを取り込んで動作するソフトウェアは「すごい!」」扱いみたいなんだなと感じました。セキュリティの業界はなじみがないのですが、そういうものなんですね。今回はnginxに組み込んでみるというお話ですが、ModSecurityのver 2系ならapache2.4の拡張モジュールmod_securityがあるようです。今度試してみましょう。
etherpad liteの話は、急に決まったので1週間で調査と原稿資料の作成はなかなかギリギリでした。ストックがあるネタだったから間に合った感じです。調べるとetherpadは昔お世話になったTitanPadとも関係ありそうな感じでした。質問コーナーではCodiMDもあるけどetherpad liteのほうが何かいい点ありますかと質問があり、CodiMDのはるかに高機能と思います。ただ、CodiMDはmarkdownで書きますのでmarkdownの構文を暗記しているエンジニアでないときつい、というところでしょうか。(所詮はメモツールなのでmarkdownを超えること求めてないとも思います)。
なんとか2月の勉強会も無事終わってよかったです。
昨日2021年2月13日23時8分頃、東北で震度6強の大きな地震がありました。東京も結構揺れて焦りました。久しぶりの大きめの地震です。若干油断していました。今年で3.11から10年になりますが、地球規模では10年なんてまだ少ししか経っていないということなのでしょうね。
自分が住んでいる東京の身近なところではこれと言って制約は今のところなく普通の生活ができています。コロナの中、外出は近所に身の回り品を買うのと食事とコーヒーを飲むくらいの生活が続いています。2021年ももう2月ですが、なかなか元の生活には戻れない感じです。温泉に行ってまったりしたいです。
2021年1月7日に緊急事態宣言が発出されておよそ1か月経ちました。12月後半から自宅での仕事が続き、2/5までの間で会社に出社したのは1回だけです。緊急事態宣言は延長するということでまだまだCOVID-19との闘いは続きます。
ワクチンはそろそろ医療関係者から打ち始めるようですが、自分のような30~40代の人が打つまでにはまだ時間がかかるようです。夏の終わり位までには打てるのでしょうか。ここ1年旅行は大阪に一度用事で行ったくらいでそれ以外は全然外出していません。だいたい1年に2~3回は日帰り含めて温泉に行っているのですが最近はいけていないため、非常に残念な感じです。
自宅にこもることが非常に多いため、PCでソフトウェアのメンテナンスを進めています。最近はjenkinsとdockerを組み合わせたunittest環境をメインに構築しており、だいたい感覚はつかめてきました。とりあえずCIはクリアした感じですので、次はCDを進める感じかなと思います。
CDは自動デプロイになるので、ansibleみたいな感じがいいのか、コンテナを構築して入れ替える形がいいのかいろいろありそうな気がします。2021年は自動デプロイを物にする感じで学習していくことになると思います。
まだ2021年は2月が始まったところです。2021年もひきこもりな1年になりそうです。
今日は第193回東京エリア・関西Debian勉強会がオンラインで開催されました。自分はいつものとおり主催者ですのでお膳立てをしています。ただ、仕事が立て込んでいることもあり早めに仕事を切り上げようとしても他の人の仕事や締め切りに巻き込まれることが最近多く勉強会開催の準備が滞ってしまい申し訳ありません。
勉強会では「DebianでのNode.js」というお話でした。Node.jsはアプリはあまり一から書いていないので今回は勉強になりました。勉強会で話が出たライブラリのバージョンを固定で動かすことを常套とするNode.jsアプリケーションのパッケージの仕組みですとDebianのようにあるライブラリはバージョン違いをメンテナンスしないようにしたい(=ライブラリは共有化し、ライブラリのバージョンを上げても利用するアプリケーションは壊れないことを保証する)というのは相性が悪いのというのはたしかにそうです。Node.js以外にもライブラリをアプリケーション単位で個別に抱えるプログラム言語はあるわけで、そういったプログラム言語はDebianに限らずOSのパッケージを安定版としてメンテナンスするのはなかなか難しそうです。
勉強会の後半では2021年になり参加者の方がこんなの知りたいというネタを出し合いました。今年の勉強会で話をしていくネタはだいだい上がったかなと思いますので、手分けしてお話していただける方を探していきたいと思います。
2021年もDebian勉強会はオンラインでの開催が多くなると思います。今年もよろしくお願いいたします。
再度の緊急事態宣言が発出されてました。東京に住んでいるわけですが全然外に出ない生活も板についてきています。実際、2021年の年が明けてから1度も出社せずにリモートで勤務しています。そういうところはソフトウェア開発者はどこでも仕事ができることが着々と世間にわかってもらえたのかなと思います。ただ、一緒に仕事をしている人に聞くことや聞かれることはチャットが多いわけですが、言語化するコストはかなりかかります。政府などの公官庁や大企業は文書によるコミュニケーションが多いわけですが、たしかに文字のみでコミュニケーションしろと言われると時間もかかりますし、そもそも文字かする能力が若干低い人は余計に時間を取られているように思います。
さて、緊急事態宣言は2/7までということになっていますが、COVID-19の感染者数はなかなか減らない状況です。自分も自衛した生活をしつつ、がんばっていきたいと思います。
2021年あけましておめでとうございます。
2020年はCOVID-19(新型コロナウィルス)に悩まされましたが、まだワクチンが日本で投与が始まっていないため2021年前半はまだまだひきこもり生活を強いられそうです。昨年の旅行は11月に友人の結婚式に行ったくらいでたいしてどこもいけませんでした。温泉入りたいです。
さて2021年ですが、お仕事では昨年暮れに発表されたCentOS-8の余波のあおりを受けて今後のバージョンアップするOSの選定とサーバ構築手順に追われそうな気がします。個人的にはDebianユーザなのに仕事では巻き込まれた形で悲しいです。個人的には旅行に行って温泉に入りたいものですが、年の後半になりそうです。コンピュータ関連としてはCI/CD関係のJenkinsやGitlab Runner、ansible、Dockerを少し覚えつつ、アプリケーションのsyslog化を覚えていく感じと思います。そのほかずっとやっていないAndroidアプリでもちょっとやってみようかなと思います。
2021年もよろしくお願いいたします。
昨日の記事 でDjangoアプリのunittestをがんばって実装しました。となると次はCIです(CDはまた今後の機会に)。
CIの草の根といえばJenkinsが始まりなのかもしれません(Jenkinsがはやり始めた後にクラウドでCI/CDのサービスを見かけるようになった気がします)。自宅のPCサーバで動くOSSなものといえば、JenkinsとGitlabがあるのかなと思いますがGitlabは大きなソフトですし、自宅wiki兼gitサーバはいまだにtracなのでJenkinsをとりあえず使ってみています。
今までJenkinsではShiningPanda Pluginというのを使ってvirtualenvな環境でpythonアプリをunittestをしていました。この場合、Jenkinsサーバ自体にアプリが必要とするOSのパッケージを入れる必要があり、Jenkinsサーバの移行が結構大変だった記憶があります。できればnittestの環境はdockerコンテナ内で完結するようにしてJenkinsサーバ(=ホストサーバ)を汚さないようにしたいです。
JenkinsでDockerを使ってCIするにはDocker PluginやDocker Slaves Pluginというプラグインがあるようなのですが、webを調べてみても結構複雑な使い方をしている人が多いように思いました。あまり複雑なことはしたくないため、webの断片的な情報を集めて原始的な使い方をしてみました。
以下の雰囲気の流れでJenkinsのプロジェクトからdockerコンテナを呼び出してunittestをする環境を構築するようにしてみました。
仮想サーバにDebian 10をインストール
Jenkins Coberturaプラグインをインストール(coverage.xmlというレポートファイルを読み込みプラグイン)
webアプリケーションで必要とするOSのパッケージをインストールしておく
Djangoのデータベースはmariadbを使っているため、mariadb-serverをインストールしておく
build時にCREATE DATABASE、mariadbのユーザ追加(GRANT)を実行しておく
pipによるpythonライブラリのインストールはbuild時にはせず、jenkinsの実行時に行う
FROM debian:10
RUN apt-get update
RUN apt-get install -y locales git
RUN apt-get clean
RUN echo "ja_JP.UTF-8 UTF-8" > /etc/locale.gen
RUN locale-gen
# for web application.
RUN apt-get install -y python3 python3-dev python3-setuptools python3-pip default-libmysqlclient-dev gcc make
RUN apt-get clean
RUN apt-get install -y mariadb-server
RUN apt-get clean
# setup user account for unittest.
RUN /usr/bin/mysql_install_db
RUN (/usr/bin/mysqld_safe &) && sleep 5s && \
mysql --execute='CREATE DATABASE ★database名★ DEFAULT CHARACTER SET utf8mb4' && \
mysql --execute='GRANT ALL ON *.* TO ★DBユーザ名★@localhost IDENTIFIED BY "★DBパスワード★"'
docker buildして、webアプリケーションのunittest用のdockerコンテナを生成
Jenkinsのプロジェクトを作成
プロジェクト設定にあるgitリポジトリの設定には何も設定しない
ワンライナーでmariadb-serverの起動、git clone、unittestの実行、coverage.xmlをJenkinsホストへ渡すようコピー、と処理しています
docker run -v ${JENKINS_HOME}/workspace/${JOB_NAME}:/mnt ★dockerコンテナのタグ名★ \
sh -c "(/usr/bin/mysqld_safe &) && \
git clone git://192.168.xxx.xxx/★gitリポジトリ名★.git && \
cd ★gitリポジトリ名★ && \
sh unittest.sh jenkins-docker && \
cp -fv coverage.xml /mnt/"
Cobertura XMLレポート パターンに"coverage.xml"と入力
unittestが完了すると、カバレッジのレポートのメニューが表示されます。
みなさまもCIライフをお楽しみください。
このサイトはwebアプリの勉強の一環として自作しています。今はpython3+Djangoを使っています。Djangoは2年ごとにLTSリリースがあります 。次のLTSは2021/4にリリース予定のDjango-3.2 LTSですが、そろそろDjango-3系へアプリを移行する開発を進めないといけない時期がやって来ました。
ということで、さくっと開発環境をDjango-3.1へアップグレードし、アプリの動作確認をしたところ、ほぼそのまま動いた感じでした(そんなに複雑な機能を使っていないためだろうと思います)。unittestがほとんどないのでがんばってたくさん書き、views.pyのカバレッジが90%になりました!これでCIができれば、Django-3.2がリリースした場合もさくっと退行テストができるのかなと思います。
このサイト以外にもDjangoのアプリがいくつかあり、それもアップグレードしないといけないのですよね。web系フレームワークは寿命が3年のものが多いためセキュリティ修正と移行開発でなかなか苦労させられるところです。
2020年の仕事がなんとか納まりました。
2020年はなんだか仕事が忙しい感じでした。ソフトウェア開発は大変です。特にwebサイト開発はサーバ設定、ミドルウェア設定、デザイン、アプリケーション開発、プロマネなど。かなりおなか一杯な1年でした。
また、2020年はCOVID-19(新型コロナウィルス)により外出できない状況になり、在宅勤務も少しは進んだ一年でした。2年前にフレッツがVDSLの部屋(=100Mbpsフレッツ)から光コンセントの部屋(=1Gbpsフレッツ)へ引っ越したのが功を奏しました。ここまで蔓延するとは思っていなかったのは各国の政府も国民もでしょう。政府はいろいろ責められて大変だと思いますが、国民もいろいろ理解して協力してあげる必要があるのだろうと思います。
2020年年末から2021年年始にかけても医療体制がひっ迫しているとの報道が出ており、なかなか外に出歩けない年末年始です。家でインターネットをして過ごす感じの寝正月になりそうです。