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年年始にかけても医療体制がひっ迫しているとの報道が出ており、なかなか外に出歩けない年末年始です。家でインターネットをして過ごす感じの寝正月になりそうです。
第192回東京エリア・関西合同Debian勉強会 がありましたので参加しました、というか主催しました。2020年最後のDebian勉強会ということで参加者数は多めでした。日曜日にずらしたから参加者が多いのか、セミナーの発表内容が気になって参加した人が多いのか、どちらなのでしょうか(おそらくセミナー内容でしょう)。
毎月やっているDebian勉強会もオンラインが定着しつつあります(このご時世で公民館を借りれないです)。オンラインで開催するようになって参加者数がすこし増えました。東京エリアと関西エリアが一緒に勉強会するようになり、距離的に現地開催では参加できない人も参加できるようになったことが参加者数が増えた理由であり、場所の制約を飛び越えられるインターネットの強みなのだろうと思います。また、Debian勉強会はなにか資料を残そうということで昔の原稿資料が多く残っており現代から見れば過去と対話することができます。時間を乗り越えるには資料づくりは大切なのだろうと思います。
場所と時を越えてDebian勉強会はあり続けてほしいと思います。来年もDebian勉強会をよろしくお願いいたします。
Open Developers Conference 2020 Online に参加しました。OSCはオンラインになってから出展側で参加するのは久しぶりです。Cross Distro Developers Camp(略称XDDC)という団体名で出展して スピーカーをしました 。XDDCはOSSのOSについて開発やメンテナンス、翻訳や普及を行っている人たちが集まる横断グループです。
ソフトウェアというとミドルウェアは商業的なものが多いのですが、OSは商業となるとメーカーが限られます。クラウドで大量にサーバを並べる使い方をするとOSのライセンス料も数で費用総額も高くなってきますので、クラウドの仮想サーバのOSではよLinuxディストリビューションが多い採用されていると思います。OSSで無料で使えるとはいえ、誰かがその開発やメンテナンスをやっているわけで、OSSのプロジェクトは利用者も参加する相互互助会のようなものなのかなと思っています。
OSは慣れている物を採用する場合が多く切り替えは容易ではないですが、CentOS-8終了の衝撃もありイベントではその話題も出ました。Debian、Ubuntu、openSUSE、SolusなどいろいろなOSもありますのでいろいろ試してみていただき、OSSのエコシステムを理解してみるよい機会なのだろうと思います。
旅程4日目11/3(火)と5日目最終日11/4(水)です。大阪の天気は晴れ良い天気です。
11/3(火)は友人の結婚式と披露宴が行われました。自分が大阪に住んでいたときからの友人で、数年前の関西に出張したときに一緒に飲んだ以来の再会ですから久しぶりです。新郎としてばっちり決まっていました。新婦の方も綺麗でした。二人ほど昔の知り合いも参列しており、元気そうで何よりでした。結局3次会まで参加することになり零時を回ってホテルに帰る感じで、どんちゃん騒ぎは久しぶりです。
11/4(水)は結婚式をしたホテルに泊まっており新郎新婦も泊まっているため朝食をご一緒しました。久々の再会を喜び、いろいろお話をしながら有意義な時間を過ごし、ホテルのチェックアウトで解散となりました。その後大阪駅周りのグランフロントやグランフロントに入っているACTIVE Lab.を体験して少し見て回っていました。その後東京に戻る時間ですので新大阪から新幹線に乗って東京に戻りました。
10/31から11/4の5日間の旅程を終えて、今年初めての遠方旅行となりました。疲れはしますが旅行はいいですね。久々に友人に会えて有意義だった旅であったと思います。
旅程3日目の11/2(月)です。今日は会社は有休にしています。ただし、今日は朝から一日あいにくの雨模様です。
今日は特に予定がない中、京都から大阪への移動日です。京都は昨日回ったため、朝から大阪に移動です。電車は泊まったホテルの最寄り駅が阪急でしたので、阪急電鉄に乗って大阪梅田へ向かいました。40分で着く上に400円とJRより安いです。阪急は神戸線で仕事場に通ったのを思い出します。
大阪に着いてから予定がないので昔住んでいたときによく寄ったところをうろうろしていました。スナックパークでたこ焼きを食べ(阪神デパートの地下ですがなんか奥まったところに移動していた)、丸ビル(スタバはまだあった)、ソニーストア(銀座と変わらない雰囲気)、日本橋(ワンズ、BestDoと大阪の地元のお店は引き続き営業中)、難波及びグリコを巡ってきました。なかなか歩き疲れました。夜になり梅田に戻ってホテルに入りました。明日の友人の結婚式場でもあるホテルなので大きなホテルです。泊まっている部屋はビジネス用なので安めですがツインです。
さて明日は今回の旅のメインである大阪時代の友人の結婚式です!お祝いしてあげたいと思います。
京都・大阪への来訪の2日目が終わりました。
11/1(日)は京都観光ということで、行ったことがない宇治の平等院・鳳凰堂へ行ってきました。宇治は京都から25分くらい電車で南に行くため京都観光でいろいろ回ろうとすると時間的にうまくはまりにくい気がします。そのため今回は一人旅ですし、時間もあるため宇治へ行ってみました。平等院は10時前に到着したのですが、鳳凰堂の中に入るのは3時間待ちということで断念。周りをみたり展示を見たりしていました。やはり池に映った景色は風情があってよいです。その後は、宇治のお茶を楽しみました。
宇治はそのほか宇治上神社もあるそうで少しだけ寄ってみました。その後源氏物語ミュージアムというものがあるそうなので少し寄りました。源氏物語は自分はなじみがないため雰囲気を味わっていましたが、源氏物語自体は架空の物語なのにミュージアムつくっちゃうのはなかなか宇治市すごいと思いました。
その後京都へ戻り清水寺に行ってお参りしてきました。お客さんは若い人が多い感じがしますが、全盛期の6割くらいに人手でしょうか。そのため、若干少ないです。お土産やさんはなかなか苦戦している感じでした。
夜は、DebianJPのメンバで京都に在住の方々と食事をしてみました。当日に連絡をもらい急なセッティングをしていただきありがとうございました。皆様がんばっておられるようです。
そんな感じで京都観光は終わりとなりました。あまり詰めた日程にしてないためゆっくり回れてよかったです。
今日10/31から11/4の予定で京都・大阪に行ってくる予定です。友人の結婚式が大阪であるため、それに参列するためで、11/2を休みにすれば連休になるので年始の北海道帰省以来の旅行です。本当にコロナ禍でどこにも行ってないですからかなり久しぶりの遠出です。
政府の旅行業界支援策のGo to トラベル事業でかなり旅費が安くなっています。この値段で新幹線往復でホテル宿泊費も入っていてここからさらに補助金で減額なるのか、という驚きの金額です。これだけ減額になると高いホテルに泊まってみたくなるにもわかります。ただ自分は最近出費が多いためお値段重視で選んでいます(大阪は高いホテルですし)。
新幹線を運営しているJR東海の利益がかなり赤字なそうですが、乗った新幹線を見ると自分の列は5列全部埋まっていたのでこの連休の人手は若い人を中心に徐々に戻っている感じなのかなと思います。
今日は京都への移動日で数年ぶりにやってきました。この時期の京都は若干寒い感じがしていましたが、やはり上着をもう少し厚めにしておいたほうがよかった気がします。京都はやはり外国人の方はほとんどいません。若い人がGo toトラベルを利用して結構来ているように思います。夜、ホテルの近くを晩御飯で歩いていると結構うろうろしている若い人たちを見かけました。
明日は1日京都観光の予定です。宇治にある平等院鳳凰堂には行ったことがないように思いますので行ってみようと思います。この旅行、コロナや病気など何もないように気を付けて楽しみたいと思います。
秋葉原で電気街を散策するのは久しぶりでした。仕事場から秋葉原は近いのですが、残業で19時を過ぎてしまい秋葉原のお店が軒並み閉まってしまい最近は行けてなかったです。
秋葉原も休日の人出は戻りつつある感じですが海外の方が多かった昨年からすると海外の方はちらほらという感じです。それよりメイドさんの客引きが多かった気がします。
中古品で目を付けた Moto G6 も買えたのでよかったです(FullHDなスマホが欲しかった)。あとは2.5inch SSDの1TBがついに1万円を切ったのが特価で出ていました。PCショップアークではSO-DIMM 16GBx2枚セットが1万切りが出ていたようですが売り切れで非常に残念です。
旅行のお供な小型PCとしてSurface Go 2を買おうとしているわけですが秋葉原で代わりになる中古PCがないか探してみました。Let's note RZ4の中古はどんな感じか触ってみましたがキーボードが小さすぎて打てないですので候補から外します。それ以外はピンとくる機種はなくあまりないようです。Surface Go 2はキーボード込みで10万くらいするので性能の割には結構高めです。VAIO Pもさすがにバッテリーがへたっていますのでそろそろ買わないとダメそうです。
そんなこんなで秋葉原を散策して、軽めの運動もできたので良いリフレッシュになりました。とはいえ、あと2日ある連休では久しぶりに大きいお風呂に浸かりたいですね。
8/15から8/16はお盆で土日です。お盆は実家の北海道へはあまり帰らないです(大体の年は6月のOSC北海道で帰省しているから)。今年はOSC北海道はオンラインに代わってしまい、結局北海道へ行ってないのですが、コロナ禍のため両親も年寄りのため帰省はしていません。
そんな中、久しぶりのDjangoの勉強、JavaScriptの勉強をしていました。Djangoは使い始めたdjango-1.3やdjango-1.4のあたりから何となく書き方をアップデートしていないため、心機一転して勉強し直しています。またajaxは普通に使う世の中ですがあまりJavaScriptわからんのでいい感じのサイトにするべく勉強中です。webの世界はドッグイヤーで時間の進みが早いですね。
東京都は気温が39度を超える地点も出ているようでとても暑かったです。肌がちりちり焼ける感じを体験しましたし、少し出歩くだけで汗が噴き出てきます。地球の温暖化現象のせいやヒートアイランド現象というのもあると思います。個人でできるのは省エネしましょう、くらいしかやることなさそうですけど。
そんなこんなでお盆も終わってしまいました。さて、これからお仕事が忙しい感じになるので大変そうです。
最近の東京は梅雨明けで暑い日々が続いています。連日35度超えで参ってきます。部屋の中は扇風機で頑張っても30度までしか下がらないためエアコンを使う頻度が増えています。仕事も在宅勤務はちょこちょこ入るため自宅にいることが多く、ずっとエアコンをつけていると電気代が気になります。
さて、お盆間近なのですが北海道へ帰省する予定はありません。北海道も近年の8月は東京並みに暑いのでお盆は帰らないことが多いです。逆に冬に帰ることはあります(2019~2020年年末年始は帰省した)。GOTOキャンペーンもありますが、東京発着は除外になっていますので、おとなしくしていることにします。
7/23から7/26まで4連休なわけです。元々はオリンピックの予定で連休を動かしたのですが、その肝心のオリンピックがCOVID-19のせいで来年になってしまいました。東京はまたCOVID-19が流行してきており、都知事からはなるべく外出しないようにしてほしいとお願いをテレビでしていました。しかし4日ともあいにくの雨という天候で全然出かけないで家に引きこもっていた感じでした。
久々にPS4をしながらまったりしていた日々でした。しかし、そろそろどこか出かけたいですね。。。
このWebサイトは勉強を兼ねているため長らく運用しています。見た目はそのままで裏側が全部変わったこともあります。今までCSSフレームワークは bootstrap-4 を使っていたのですが飽きてきたこともあり、別のCSSフレームワークに変えることにしました。採用したのは Fomantic-UI というものです。
候補に挙げたのは、Pure.css と Semantic UI です。Pure.css は前から少し調べていて軽量なCSSフレームワークということでした。Pureを使ってみて bootstrap-4 から移行するには機能不足なところがあり置き換えるのは難しいように思いました。Semantic UI は機能は豊富で bootstrap-4 に引けを取らない感じです。ただ開発が止まっているとの情報があり、コミュニティfork版として Fomantic-UI に名前を変えて開発を継続しているとのことでした。
bootstrap4 から Fomantic-UI へ移行を試してみて、とりあえずこのwebサイトのCSSを置き換える作業を行ってみて一通り完了したため公開しました。あまりbootstrapを使っていたバージョンと見た目はそこまで変わらない感じではありますが、新しい技術に触れるのは気分展開にもなりますし、いろいろな思想に触れることができるためよいと思います。
Fomantic-UI にはこれからお世話になろうと思います。
東京は新型コロナウイルス(COVID-19)の対応をステップ3へ移行し、対策を各人で気を付けながら通常の生活に戻りつつあります。
6/20の土曜日は東京エリア・関西Debian勉強会を合同で行いました。2020年3月からオンライン開催を続けているのですが、いつまでオンライン開催を続けるか、という悩みどころがあります。とはいいつつ、公民館で開催してもオンラインで流してほしいという要望もあるためいろいろやるなら準備が必要そうです。
土日はまだ出かける感じにはなっていませんが、そろそろ温泉にでも浸かりたい気分です。毎年のパターなら3月から4月にかけて鎌倉・湘南・江の島、6月は箱根を散策しているのですが、今年は行けてないです。そろそろ熱海も含めていつものパターンですが、気軽に慣らしの意味も込めて出かけてみたい感じです。昨年買ったα5100は今年の正月の帰省でペンギンを撮影してからお休み中ですし。
なかなか仕事も忙しくなりつつあり、これから夏はどうなることやら。
FreeBSDは昔使っていたのですが、他のBSDを試せていなかったです。前々から使おうと思っていたNetBSDを初めてインストールしてみました。インストールしたバージョンはNetBSD-9 amd64です。インストール先はHyper-Vの仮想マシンでMBRブートな状況でインストールしてみました。とりあえず起動したので、build.shを練習してみようと思います。
なぜNetBSDかというと、32bitコンピュータで起こる2038年問題を解決したOSであるいうことです。NetBSDはNetBSD-6のリリース(2012年なのでだいぶ前)からtime_t型=long long に変更をしています。Linuxディストリビューションはバイナリでパッケージを配布しているためABIを壊すわけにはいかない事情があります。kernelなどにtime_t型をlong longできるようなコードは入っていますが、また32bit CPUではtime_t = 32bitなものがほとんどと思います。
手持ちに古いRaspberry Pi 2 Bが2台あるのですが、raspbianも飽きたので別のOSを試してみようというわけです。Raspberry Pi 2 Bは初代Raspberry Piからクアッドコアになって大幅にCPU性能がアップしたのですが32bit CPUです(debianでいうアーキテクチャのarmelやarmhfで動く)。OSを変えるなら2038年問題を解決したものがよい、と思いNetBSDを試してみようとなったわけです。
NetBSDのRaspberry Pi 向けの情報のURLと @ebijun さんが作ってくれているイメージのURLを貼っておきます。これをまずは試してみようと思っています。