投稿

最近の HTML 事情

イメージ
今年に入り HTML に変化 最近知ったことですが HTML5 が廃止となりHTML Living Standard というものが標準となったようです。 参考: https://future-architect.github.io/articles/20210621a/ HTML Living Standard こちらのサイトが HTML Living Standard の公式サイトのようです。 参考: https://html.spec.whatwg.org/ 早速ですが、日本語約も存在するようで大変助かりますね。 参考: https://momdo.github.io/html/ 早くオライリーから解説書がでないかな? はじまりは HTML 自分がプログラミングをするきっかけになったのもかっこいいホームページを作りたい!そういうところからだったんですが、その時は HTML4.01 の時代で、同時に XHTML という規格もありなんで規格が複数あるんだろうとか、web ブラウザによって若干挙動が違ったりなど、「うむむ...」 となることが多く、HTML5 が出た時はこれで決定か! と思っていましたが実際は HTML Living Standard という規格がすすんでいたようです。 これからの標準が Living Standard になるとはいえ、いままでの書き方が全部使えなくなるということはなさそうですが、あいかわらず HTML まわりはモヤっとするなと思ったりします。HTML5 の時はロゴ見たいのがあったですが、 Living Standard のロゴはまだみあたらないですね。

債務超過の意味について

イメージ
最近は勉強できるコンテンツが豊富になりました 最近、高橋洋一さんという方がYouTubeチャンネルを解説されており、その内容が非常に参考になるためよく拝見しています。 先日、京都の財政破綻についてのコメントがありその中で貸借対照表の見方について解説をされておりました。 詳細は高橋洋一チャンネルをみるとして、あらためて自分の会社の貸借対照表をながめるとなるほどと思うところがたくさんありました。 商売をする「いろは」といえば複式簿記 債務超過という言葉を端的に説明すると、「会社が抱えている負債の総額が、資産の総額を超えている」ということになりますが、こういう状況になると何が問題なのかというと、銀行のような金融機関が融資をしたがらなくなります。 なぜ融資をしたくないのか? その理由も高橋洋一チャンネルを拝見する方が良いでしょう。 自分は15年ほどまえに会計について興味を持っていた時期があり大原簿記専門学校の夜学に通って複式簿記の学習をしていたことがあるので高橋洋一さんの貸借対照表の説明に対してすぐにピンとくるのですが、複式簿記自体がわからない人は帳簿をつけたり、読んだりする大事さがわからないのかもしれません。 ぜひとも簿記を一度学習することをおすすめします。 やる気だけで金を貸してくれるわけではない 自分は法人を設立した年に銀行に300万の融資を申し込みにいきました。 設立した歳というのは最初の決算書も出来上がっていないので途中経過の決算状況の資料をみせることになります。 私は個人事業の時代もあったので個人事業時代の決算書も提出しました。 私の法人の資本金は100万でしたので、こういう場合たいてい融資しても100万くらいがいいところなのですが、300万の希望を通してもらいました。 どういう基準で銀行は判断しているのか詳細はわかりませんが、おそらくに個人事業時代の決算状態が良好とおもわれたのは違いないと思います。 金を出してもらう時に将来のビジョンややる気を声高々にアピールするのも良いとは思いますが、自分の過去の実績を言葉だけでなくエビデンスとして提出する方が融資をする側も良好な判断がしやすいと思います。 まとめ 帳簿をつける(目を通す)習慣をつける

Perl (Mojolicious) を使って web アプリ開発に挑戦 (第9回その3)

イメージ
第9章 新しい機能を追加する(その3) 前回はORMの拡張について紹介しました。 web アプリの開発に必要な機能の全てを紹介してゆくととても膨大な 量になっていきますので今回はよくありがちな機能について紹介してゆきたいと思います。 9.3 よくありがちな機能について考察 今回、web アプリ開発に挑戦するにあたり Mojolicious というフレームワークを 活用しました。 考えようによってはこの Mojolicious 自体も web アプリだということもいえます。 9.3.1 Mojolicious を参考にする Mojolicious がどれだけのモジュールで構成されているのか下記のリンクをみてみてください。 https://metacpan.org/release/Mojolicious 新しく機能を追加したいときはフレームワークがその機能をすでに提供していることが ありますから、上手に活用するようにするとよいです。 9.3.2 よくありがちな機能を紹介 util - 補助コマンド Mojolicious: https://metacpan.org/pod/Mojo::Util 時間情報を取得やアプリ特有の込み入ったテキスト処理パターンなど log - ロギングの追加 Mojolicious: https://metacpan.org/pod/Mojo::Log システムの挙動を掴むためにログを出力させる箇所を追加したい場合 command - コマンドラインから実行するスクリプト Mojolicious: https://metacpan.org/pod/Mojolicious::Commands アプリケーションを通じてコマンドラインから実行したい場合 Mojo にはマイグレーションの仕組みはないので、そういったものを拡張するなど server command - 本番用のアプリ起動コマンド Mojolicious: https://metacpan.org/pod/Mojo::Server::Hypn

Perl (Mojolicious) を使って web アプリ開発に挑戦 (第9回その2)

イメージ
第9章 新しい機能を追加する(その2) 前回は設定ファイルを用意して実行環境ごとに実行条件を切り替える方法を紹介しました。 今回はオブジェクトリレーショナルマッピング(ORM)を拡張する方法やってみたいと思います。 ORMとはなんであるのかの詳細な説明はここではしませんが、 具体的にwebアプリケーションのフレームワークのなかからどのようにして ORMを拡張するのかを事例を紹介します。 9.2 データベースロジック(ORM 拡張ロジック) 今回は teng モジュールでロジックを拡張するやり方を紹介します。 9.2.1 ファイル構成 例として今回は下記のようなファイル構成としたい beginning_mojo # Application directory ... |- lib # 読み込みファイル各種 | |- BeginningMojo # アプリケーションファイル各種 | | +- Controller # アプリケーションコントローラー | | +- DB # データベースオブジェクトロジック各種 | | | +- Teng # Teng 拡張ロジック | | | | +- Row # Row オブジェクト拡張ロジック | | | | +- Bulletin.pm # 各ロジック | | | +- Base.pm # Teng 共通ロジック | | +- Model # コントローラーロジック | | +- DB.pm # データベースオブジェクトロジック呼び出し | | +- Model.pm # コントローラーロジック呼び出し ... 9.2.2 追加のファイルを作成 作業を開始するまえにテストコードが確実に実行できるか確認しておきましょう (テストコード実行、アプリケーションが実行されている状態で別のウインドウから) % docker-compose exec --env MOJ

Perl (Mojolicious) を使って web アプリ開発に挑戦 (第9回その1)

イメージ
 第9章 新しい機能を追加する(その1) 前回までで一通りの機能の切り離しはおわりました。 実際にアプリを運用段階になると本番公開環境と開発環境と、のように 実行環境を分けたいことがあります。 そういう時のためにアプリケーション用の設定ファイルを用意しておくと便利です。 9.1 設定ファイルを導入 今回は公開環境、開発環境、テストコード環境の3つということにします。 9.1.1 設定ファイルの種類を考える 設定について 下記のような名前で環境ごとの条件を設定 公開環境 -> `production` 開発環境 -> `development` テストコード環境 -> `testing` 例として今回は下記のようなファイル構成としたい beginning_mojo # Application directory ... |- etc # 設定ファイル | +- beginning_mojo.common.conf # 共通設定ファイル | +- beginning_mojo.development.conf # 開発環境の設定ファイル | +- beginning_mojo.production.conf # 公開環境の設定ファイル | +- beginning_mojo.testing.conf # テストコード環境の設定ファイル ... 9.1.2 設定ファイルを用意する 下記のような内容のファイルを作成 % touch etc/beginning_mojo.common.conf % touch etc/beginning_mojo.development.conf % touch etc/beginning_mojo.production.conf % touch etc/beginning_mojo.testing.conf 設定ファイルは Perl のハッシュ形式で記述 etc/beginning_mojo.common.conf +{ schema_file => app->home->child

Perl (Mojolicious) を使って web アプリ開発に挑戦 (第8回 その4)

イメージ
 第8章 Mojolicious ベースにリファクタリングをする(その4) 前回でコントローラーの切り離しまですすみました。 今回は細かい全体の調整をしてみたいと思います。 8.4 全体の調整 8.4.1 コントローラーの調整 モデル同様共通化用のメソッド記述用のファイルを用意 % touch lib/BeginningMojo/Controller/Base.pm lib/BeginningMojo/Controller/Base.pm package BeginningMojo::Controller::Base; use Mojo::Base 'Mojolicious::Controller'; 1; 継承関係をととのえる lib/BeginningMojo/Controller/Bulletin.pm package BeginningMojo::Controller::Bulletin; use Mojo::Base 'BeginningMojo::Controller::Base'; use Mojo::Util qw(trim); # ...省略 1; テストコードを実行確認 % docker-compose exec web carton exec -- prove 8.4.2 モジュールの調整 モジュール読み込みのパスを整える script/beginning_mojo #!/usr/bin/env perl use strict; use warnings; use Mojo::File 'curfile'; use lib curfile->dirname->sibling('lib')->to_string; use Mojolicious::Commands; Mojolicious::Commands->start_app('BeginningMojo'); テストコードの記述を統一 t/bulletin.t t/remove.t use Mojo::Base -strict; use Test::More; use Test::Mojo; us

Perl (Mojolicious) を使って web アプリ開発に挑戦 (第8回 その3)

イメージ
 第8章 Mojolicious ベースにリファクタリングをする(その3) 前回はテンプレートの切り離しまですすみました。 テンプレートは切り離す仕組みが最初から Mojo にありましたので簡単でしたが コントローラーについてはすこし考えなければいけないところもあります。 コントローラーを作る前にアプリケーションが最初に読み込みを行なっているファイルが bulletin.pl であり、今まではその中に全てを書いていたのですが bulletin.pl を読み込むだけのファイルとして変更しなくてはいけないことと Perl の場合は cpan 形式という言葉があって特別な理由がない場合は cpan 形式で 作っておくと間違いはないです。 最終的には bulletin.pl は script/beginning_mojo となります。 順番にみてゆきましょう。 8.3 コントローラー アプリケーション内容の記述部分のためのファイル作成からはじめてみます。 8.3.1 アプリケーションファイル % touch lib/BeginningMojo.pm lib/BeginningMojo.pm アプリケーション内容の記述部分を再定義 package BeginningMojo; use Mojo::Base 'Mojolicious'; use Mojo::Util qw(trim); use BeginningMojo::Model; sub startup { my $self = shift; $self->helper( model => sub { BeginningMojo::Model->new(); } ); $self->helper( teng => sub { BeginningMojo::Model->new()->teng; } ); my $r = $self->routes; $r->get( '/' => sub { my $c = shift; $c->