OSS

PythonのWEBアプリケーションフレームワーク「Django」入門

  • POST
Djangoとは Python製のWEBアプリケーションフレームワーク。 WEBアプリケーションフレームワークとは、WEBアプリケーションを効率的に開発するための機能をまとめたもの。 Python系のWEBアプリケーションフレームワークには、他にも FlaskやBottle、Pyramidなど軽量なWEBアプリケーションもある。 Djangoは、機能が多様で、WEBアプリケーション開発に必要な機能が一通り揃っていることが好まれ、Python系のWEBアプリケーションフレームワークの中でも利用者が多い。 Djaongは以下の要素で構成されている。 URLルーティング DjaognにおいてURLと、そのURLにアクセスした際の対する処理を定義する仕組み。 ルーティングは、下記の例にあるように、urls.pyで定義する。 path関数は、第一引数に指定したURLのパスに対応する処理を、第二引数に指定する。 下記の例では、“http://example.com/admin"にアクセスした際に、admin.site.urlsを呼び出すようになっている。 また、“http://example.com/app_ur/admin"にアクセスした際に、アプリケーションの urls.py を呼び出すようになる。 ※ includeメソッドを使用すると、アプリケーションのurls.pyを呼び出すことができる。 プロジェクト/urls.py from django.contrib import admin from django.urls import path, include from .views import hello_fuction_view from .views import HelloClassView urlpatterns = [ path('admin/', admin.site.urls), path('app_url/', include('application_name.urls')), ] アプリケーション/urls.py from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ] ビュー DjangoにおいてWEBサイトの見た目を定義する要素。 ルーティングから受けっとたリクエスト情報を元に、レスポンスを返す。 ビューによりリクエストの内容に応じた、WEBページが表示できる。 ビューはviews.pyに定義する。 ビューには関数ベースビューと、クラスベースビューがある。。 関数ベースビュー HTTPリクエストを引数に、それに対するレスポンスを返す関数

HUGOでURLを相対パスから絶対パスにする

  • POST
はじめに HUGOでWEBサイトを作成した場合に、各ページのURLは、config.tomlのbaseurlからの相対パスで設定される模様。 相対パスでWEBサイトを作成していたところ、config.tomlのbaseurlにhttps://example.com/blogという設定をすると、 NextやPrevのアンカーの参照先のURLが、本来であれば、 http://localhost:1313/blog/page/2/としたいのに、http://localhost:1313/blog/blog/page/2/のようになってしまう事象が発生した。 本記事では、HUGOでURLを相対パスから絶対パスに変更する手順を記載する。 実行環境 下記のテーマを利用。 https://github.com/dim0627/hugo_theme_robust URLの正規化オプションを設定 下記のようにconfig.tomlにcanonifyurls = trueを設定すると、 baseURLを起点とした相対パスから、絶対パスになる模様。 ※ canonifyは正規化という意味の英単語。 https://gohugo.io/content-management/urls/ baseurl = "https://example.com/blog" title = "SiteTitle" theme = "hugo_theme_robust" canonifyurls = true googleAnalytics = "UA-XXXXXXXX-XX" # Optional disqusShortname = "XYW" [params] description = "This is site description" dateformat = "Jan 2, 2006" # Optional # Fonts settings. googlefonts = "https://fonts.googleapis.com/css?family=Lobster|Lato:400,700" # Optional, Include google fonts. fontfamily = "Lato,YuGothic,'Hiragino Kaku Gothic Pro',Meiryo,sans-serif" # Optional, Override body font family.

pgpool-Ⅱ入門

  • POST
pgpool-Ⅱ入門 pgpool-Ⅱとは アプリケーションと複数のPostgreSQLの間に介在し、 負荷分散や冗長化の機能を提供するOSSのプロキシソフトウェア。 複数のPostgreSQLノードに対して、参照クエリを振り分けなどが可能。 下記の機能を提供する。 コネクションプール 参照負荷分散 オンメモリクエリキャッシュ 自動フェイルオーバー オンラインリカバリ レプリケーション レプリケーション レプリケーションには、PostgreSQLがもともと提供しているレプリケーション機能と、 pgpoolが提供しているレプリケーションの2種類がある。 PostgreSQLのレプリケーション ストリーミングレプリケーション プライマリノードのWALを、リアルタイムでスタンバイノードに転送することで、 プライマリとスタンバイのDBの同期を取ることができる。 WAFの転送と、WAFからの複製処理に時間がかかると同期が遅延する https://www.fujitsu.com/jp/products/software/resources/feature-stories/streaming-replication1/?postgresql-inside pgpool-Ⅱのレプリケーション ネイティブレプリケーション 更新クエリを全てのサーバに送信してレプリケーションを行う。 同期遅延なし 更新性能が50%に落ちる フェイルオーバー pgpool-ⅡがPostgreSQLを定期的に監視し、ダウンしたノードは自動的に切り離される ノードがダウンした場合の処理はshell script形式で記述する。 オンラインリカバリ サービスを止めずに停止したノードを復帰させる機能。 マスタのバックアップから、リカバリする。 https://www.pgpool.net/docs/latest/ja/html/example-cluster.html https://www.sraoss.co.jp/prod_serv/support/cluster_option.php https://www.obci.jp/wp-content/uploads/2016/08/TIS_PostgreSQL.pdf 用語 データベースクラスタ DBサーバ内のにあるDBの集合体、およびDBのディスク上の保存領域を示す。 データベースクラスタのスナップショットは「ベースバックアップ」と言われる。 WAL(Write Ahead Log) DBに対して更新を実施する前に、作成される更新内容を記録したトランザクションログ。 WALのログを利用することで、DBの複製が可能。 WALログは、postgresのデータディレクトリ以下のpg_xlogディレクトリに、000000010000000000000000から始まるファイルとして配置される。 https://www.postgresql.jp/document/9.4/html/continuous-archiving.html アーカイブログ WALのバックアップファイルを示す。 PostgreSQLの設定ファイルで指定した特定の条件を満たすと、WALファイルはログの切り替え(ログローテーション)を行う。 切り替え後の古いログはアーカイブログとして別ファイルに保存される。 アーカイブログの保存先は設定パラメータarchive_commandに指定する。 PITR(Point In Time Recovery) 特定の時点のDBをリストアする機能。

atom-sourcetrailでソース解析

  • POST
atom-sourcetrailでソース解析 はじめに Sourcetrailとは オーストラリアのCoati Software社が開発したOSSのコード可視化ツール。 ソースコードを解析し、コード間の依存関係をグラフィックに表示する。 対応言語は、Java、Python、C等。 https://www.sourcetrail.com/documentation/#Installation Atomとは アメリカのGithub社が開発したOSSのテキストエディタ。 様々なプラグインが開発されており、プラグインのインストールにより、拡張が可能なことが特色。 https://atom.io atom-sourcetrailとは Atomで開いたソースコードをSourcetrailで表示したり、 Sourcetrailで開いたソースコードをAtomで編集したりすることができるAtom用のプラグイン。 https://atom.io/packages/atom-sourcetrail インストール Atomのインストール https://atom.io からインストーラーをDLして起動すると、インストールされる。 atom-sourcetrail 下記のように「Settings」→ 「Install」からatom-sourcetrailを選択し、インストールする。 Sourcetrailのインストール 下記のリポジトリから自分のPC環境に合ったZipファイブをDLして、解凍する。 https://github.com/CoatiSoftware/Sourcetrail/releases Sourcetrailを起動 Zipを解凍したフォルダ配下の「Sourcetrail.exe」を実行すると、Sourcetrailが起動するので下記の手順でプロジェクトを作成する。 atom-sourcetrailによるAtomとSourcetrailの連携 SourcetrailからAtomへの切り替え Sourcetrail上で、右クリックして、「Show in IDE」を選択すると、 Atom上に該当のソースコードが表示される。 AtomからSourcetrailの切り替え Atomで「Package」 → 「Coati」 → 「Start server」を実行する Atomでソースコード上で、右クリックして、[Send location to Coati] を実行 参考サイト http://www.cloudsquare.jp/kumonosu/program/java/post-2253/

静的サイトジェネレータ「HUGO」でのWEBサイト作成入門

  • POST
はじめに 静的サイトとは 静的サイトとは、クライアントがWEBサーバにアクセスした際に、 HTMLとCSS・JavaScriptからなる予め用意されたコンテンツを表示するWEBサイト。 対して、動的サイトは、クライアントからアクセスがある度に、 WEBサーバでコンテンツを生成して、動的に生成されたコンテンツを表示するWEBサイト。 WordPressではPHPプログラムを使用して、WEBページを動的に生成するため、WordPressを使用して作成したサイトは動的サイトに該当する。 静的サイトジェネレーターとは 静的サイトジェネレーターは、Markdownや、AsciiDocなどの所定の形式のファイルから、HTML/CSS/JSを生成することができるソフトウェア。 ※ AsciiDocを使用する場合は、htmlへ変換するためのAsciidoctorかAsciiDocのパスを通しておく必要がある。 代表的なものとして、以下のソフトウェアがある。 HUGO Jekyll GatsbyJS Hexo React Static Googleトレンドで比較したところ、HUGOの検索頻度が高いため、本記事では、 HUGOについて記載する。 HUGOとは GO言語で実装されたOSSの静的サイトジェネレーター。 公式サイト HUGOでWEBサイト作成手順 HUGOをインストール 以下のWEBサイトから、それぞれのプラットフォームに合わせたファイルをDLする。 https://github.com/gohugoio/hugo/releases 以下は、Windowsの場合の手順。 Windows用のファイルをDL DLしたファイルをC:\hugoに解凍する C:\hugoにパスを通すため、環境変数を設定する WEBサイトの雛形を作成 コマンドプロンプトを起動して、以下のコマンドを実行。 # 任意のWEBサイトを作成するフォルダに移動 $ cd c:\work # WEBサイトの雛形を作成 # ※ site_nameに作成するWEBサイトの名称を指定する # ※ 実行するとsite_nameというフォルダが表示される $ hugo new site site_name # 作成されたフォルダに移動 $ cd site_name # WEBサイトを作成 $ hugo 作成されたフォルダの確認 先の手順で作成されたフォルダの配下に、下記のフォルダ、ファイルが作成される