アプリケーションのアドレス管理
アプリケーションのアドレス管理ファイルを作る
プロジェクトルートのプロジェクトと同名DIRにあるアドレス管理ファイル(今の例で言えばdjango_app/urls.py
)に、helloアプリのアドレス管理をさせたが、このファイルは複数のアプリケーションを含んだプロジェクト全体のURL管理をするものらしい。実際にはアプリケーションごとにurls.py
を置いたほうが、各アプリケーションのURL管理はやりやすい。そこでデフォルトでは用意されていないがhello/urls.py
を作る。
Djangoでhelloアプリケーションを作る
アプリケーションを作る
プロジェクト名をdjango_app
とした前提で進める。プロジェクトルートがdjango_app
というDIR名。
プロジェクトルートにてpython manage.py startapp アプリケーション名
でアプリケーションを作る。
$ cd ~/MyProject/django_app/ $ python manage.py startapp hello $ ls db.sqlite3 django_app/ hello/ manage.py*
hello
アプリケーションのDIRが作られている。
はてなブログでソースコードにタイトルを付ける
はてなブログに載せたプログラムのソースコードにタイトルとか付けたい時ってありますよね。 Hugo とかの静的サイト・ジェネレータでテンプレートとか SCSS とか載せたいけど、コードを書いたファイルの置き場所は仕様で決まっているので、そのファイルのパスも明示してコードファイル名をキャプションにしたい。そういう需要はけっこうあります。
検索するといろんな方がいろんな方法でやっていて、中には JavaScript まで使っている方も居たりとか。私も Jekyll や Hugo の記事に使うのにフィルターやらショートコードやら自作してやっていたんですが、そういうの連発すると、もとの Markdown の可読性が低くなって読みづらいです。ソースコードにタイトルを付ける程度のことに、JavaScript 使ってサイトを重くしたりしたくないし、何か簡易な方法は無いものかと。
続きを読むHugo のレイアウトの仕組み
テーマの無いテスト用サイトを作る
普通はthemes
DIRに任意のテーマをインストールすることで、サイトの基礎になる最低限の見た目が表示されるのだが、Hugo のレイアウトの仕組みを理解するためにわざと既存のテーマをインストールせずに進めてみる。
新しい Hugo のテスト用サイトを作りサーバーを起ち上げる.
続きを読むHugoの設定ファイル
設定ファイルのデータ
config.toml
にはデフォルトでbaseURL
(サイトのURL)、languageCode
(使用する言語)、title
(サイトのタイトル)の3つが定義されている.
他に使用するテーマをtheme
で指定する.他の項目はテーマによっても違うのでテーマのドキュメントを読む必要がある.
Hugo で記事を作成する
記事の作成
hugo new 記事へのパス
でcontent
DIR配下に新しい記事が作成される.「記事へのパス」は直接ファイル名のみならcontent
直下に、フォルダ名/ファイル名
などとするとcontent/フォルダ名/ファイル名
の形で作成される.content
内にフォルダ名のDIRが無い場合は自動的に新しく作られる.
いまさらの Hugo
Hugoを試してみた感想
Jekyll はもう古くなってきていると一部では言われている。ただ静的サイトジェネレータとして老舗なのでユーザもまだ多く、使いやすい仕組みが沢山盛り込まれている。問題は記事レンダリングのスピードが遅くなってきていること。Ruby の問題も大きいかもしれないが、その点は Python製のサイトジェネレータでも同じなので、それらがいまひとつ流行らない一因かもしれない。
何に乗り換えようかと Gatsby、Hugo, Gridsome などいろいろ試している。Gridsome が一番気に入っているが、まだまだ日本語ドキュメントが少なく、自分で記事を書くにはまだ早い。もう少し試しながら待ちたいところ。
それで今は、割と古くからある Hugoを試している。
続きを読む数学系ファイルの表示テスト(Markdown版)
テスト結果
- 図がSVGファイルの場合は表示されない。画像としてアップロードされた図は表示できる(PNG,JPEG)
- 数式ブロックで行揃えのための
&
を使っているとエラーになる。おそらく他にもエラーになる構文はあるだろう。
除算アルゴリズム
◎ 任意の整数 $a$ と自然数 $b$ $(b>0)$に対して、
$$ a=qb+r ~~~~(0\leqq r<b) $$
となる整数 $q,r$ が一意的に(ただ一組だけ)存在する。
【証明】
この $a=qb+r \ (0\leqq r<b)$ を除算アルゴリズムの式と呼ぶ。
例えばある2つの実数 $A$ と $B$ があるとして、 $A<B$ のとき、 $A$ 以上 $B$ 未満の区間を $[A,B)$ と表すことにする。
続きを読む数学系ファイルの表示テスト
テスト結果
- こちらはVSCodeでMarkdownで書き、マークダウン拡張(Markdown Preview Enhanced)でプレビュー確認したものを、CDNでMathJaxを読み込むように設定したHTMLで書き出し(プレビュー画面から右クリックメニューでできる)、そのBODYタグの内部のみをはてなブログの記事投稿画面に貼り付けたもの。
- SVGファイルの図は、どうやら埋め込まれているようで、綺麗に表示される。これなら画像変換してアップロードとかも不要。
- 元の.mdファイルでは、SVGファイルはマークダウン記法ではなく、HTMLのimgタグで書いている。多少面倒だが、パターンは同じなのでコピペでOK。このほうがサイズや位置の調整、CSS用のクラス名など付けれて融通がきく。以下は一例。
<div align="center" class="math-fig"> <img src=fig/2020-11-14-15-58-46.svg width="480" height="auto" alt=""> </div>
除算アルゴリズム
任意の整数 $a$ と自然数 $b$ $(b>0)$に対して、
となる整数 $q,r$ が一意的に(ただ一組だけ)存在する。
【証明】
この $a=qb+r \ (0\leqq r<b)$ を除算アルゴリズムの式と呼ぶ。
続きを読むnpm アプリインストール時の通信エラー
最近 npmで何らかのアプリをインストールする時に通信エラーというか、ダウンロード先のアドレスが認識できないエラーが発生する.
例えば、Nuxtプロジェクトのインストール時
$ npx create-nuxt-app プロジェクト名
のコマンドで以下のエラー
エラー:getaddrinfo ENOTFOUND registry.npmjs.org
エラー出力はもっと長いけど、getaddrinfo
とあるので registry.npmjs.org のアドレスが認識できないらしい.
基礎からメモ: Vue.js CH9-p302 ネストされた複雑なページ
ネストされたルート定義をすると、より複雑な画面遷移をすることができる。
これまでの「Product」のコンポーネントは、商品詳細と商品レヴューを表示させるためのベースとし、その中に3つのコンポーネントを定義する。
フォルダ構成としては、views
の中にHome.vue
,ProductList.vue
,Product.vue
を置き、Product
サブディレクトリを作って、その中に次の3つのコンポーネントファイルを置く。
src/views/Product
以下に
Home.vue
: 商品詳細(コード内ではProductHome
という名前で扱う)Review.vue
: 商品レヴュー一覧(コード内ではProductReview
という名前で扱う)ReviewDetail.vue
: 個別の商品レヴュー詳細(コード内ではProductReviewDetail
という名前で扱う)
アプリ全体のベースコンポーネントもHome
という名前だが、商品詳細はそれぞれサブディレクトリ名のProduct
を頭に付けた名前でコード上は扱うという形。
はてぶで数式を書くためのテスト(2) MathJaxを使う
フッターにMathJaxを読み込む設定をして使う
フッターに次のコードを埋め込んでMathJaxを使えるようにしてみた。
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3.0.1/es5/tex-mml-chtml.js"></script> <script> MathJax = { tex: { inlineMath: [['$', '$'], ['\\(', '\\)']], displayMath: [['$$','$$'], ["\\[","\\]"]] } }; </script>
以前は MathJax を使うと表示が遅かった。しかし、ネット環境やPCのスペックにもよるだろうが、今はローディング時に一瞬元のTeXが見える程度ですぐにレンダリングされる。
Markdownを使っている場合は、書かれたLaTeXテキストを<p>
や<span>
や<div>
といったHTMLタグで囲んでやる必要がある。MarkdownではHTMLはそのまま表示されるので、その方法を活かす。