ツール

Rlogin入門

  • POST
Rloginとは Windows用のターミナルソフト。 タブ単位で操作でき、様々なショートカットキーを登録できることが特色。 タブで操作するターミナルソフトはPoderosaもあるが、開発が止まっているらしく、 Rloginを採用するケースが多いようだ。 (http://cmf.ohtanz.com/blog/archives/1058) 基本設定 導入から基本設定までの手順について説明。 インストールするタイプではなく、公式からファイルをダウンロードして、解凍するタイプのもの。 従って、USBやDropboxなどのオンラインストレージに解凍して、複数のPCで使い回すのが一般的。 ※Dropboxについての説明は割愛。導入から起動までの手順 ここから最新のrlogin.zipをダウンロード rlogin.zipを解凍 Rlogin.exeをダブルクリック 起動後の基本設定 sshでログインできるところまでを説明。 Sever Select画面 起動すると、下記のようにSever Selecet画面が表示されているはず。 “新規ボタン"を押すと、“エントリ"の設定に移る。 Rloginの特徴として、ログイン先のサーバをエントリーという単位で管理している。 エントリーごとにフォントやショートカットキーなどの設定を行う。 サーバの設定 ログイン先のサーバの設定を行う画面。詳細は公式に書いてあるが、最低限必要な内容は下記の赤枠の箇所。 “entry"の箇所にはログイン先のサーバ名を設定するのが一般的。 また、Rloginではエントリーを検証環境グループ、商用環境グループなどのグループごとに分けることができる。 上図で設定しているタブは、エントリーのグループ名のようなもので、“tab"の箇所にタブ名を指定するとSever Select画面にタブが表示され、タブごとにエントリーを管理することができる。 ※2つ以上の異なるタブを作成した場合のみ。 ログイン “OK"を押して設定を保存する。 先ほどのServer Select画面で、対象のエントリを選択し、“OK"を押すと、 ログインできる。 ここまで、ログインするところまでは完了だが、デフォルトのままだと使いづらいので、その他の箇所についても基本的な設定を記載する。 スクリーン 画面表示などに関する設定。 下記の設定をしておくと、フォントサイズがコロコロ変わらなくなる。 拡張機能 文字通り色々な機能の拡張設定。 下記の3点を設定しておくのがおすすめ。 “右クリックでペースト” と “範囲指定を解除しない” を設定しておくと他のターミナルソフトを同様の使い方ができる。 “ゴースト表示をしない"にするとタブにカーソルを合わせた時に、ウィンドウが透過するようなエフェクトが消える。 複数のサーバの間で何らかのコマンドを実行し、差異がないか確認する機能らしい。 ヒストリー ログなど記録に関する設定。 上図のログ出力先は下記のように設定している。 C:log\%E_%S_%D_%t.log 意味については下記参照↓ 送信文字列の特殊文字 意味 %E サーバーエントリーのServer Entryに置き換え %U サーバーエントリーのUser Nameに置き換え %P サーバーエントリーのPasswordに置き換え %T サーバーエントリーのTerminalに置き換え %S 接続したサーバーアドレスに置き換え %p 接続したポート番号に置き換え %D 現在年月日に置き換え %t 現在時分秒に置き換え %I 文字入力ダイアログを表示し文字入力を待ちます クリップボード クリップボードの扱いについての設定。

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サイトの見た目を定義する要素。

Google Chromeおすすめ拡張機能

  • POST
Google Chromeおすすめ拡張機能 はじめに Chrome Web StoreからダウンロードできるChrome拡張機能のうち、おすすめのものを記載する。 Q Accelerator プログラマのための技術情報共有サービス「Qiita」に機能を追加して、 より便利に利用できるようにするChrome拡張機能。 以下のような機能を提供する。 ソースコードの行番号を表示 ソースコードのコピーアイコンを表示 新規投稿時のテンプレート 閲覧履歴の検索 etc… 詳細は以下のリンクを参照。 Chrome Web Store : Qitta Accelator Qittaでの機能解説記事 Wappalyzer 「Wappalyzer」は、ブラウジングしたWEBサイトで利用されているミドルウェアなどを表示するChrome拡張機能。 詳細は以下のリンクを参照。 Chrome Web Store : Wappalyzer Wappalyzerの解説記事 その本、図書館にあります。 「その本、図書館にあります。」は、Amazonで表示した本が図書館に貯蔵されているか確認することができるChrome拡張機能。 Amazonで購入する前に事前に登録した図書館に本があるかどうか確認が可能。 Chrome Web Store : その本、図書館にあります。 Google翻訳 右クリックのコンテキストメニューからWEBページの翻訳を行うことができる拡張機能。 Google翻訳 関連記事 Windowsランチャー「Flow Lanucher」入門

カスタマイズ制の高いWEBブラウザ「Vivaldi」の紹介

  • POST
カスタマイズ制の高いWEBブラウザ「Vivaldi」の紹介 Vivaldiとは Vivaldiは、Vivaldi Technologies社が開発したChromiumベースのWEBブラウザ。 Opera Sofwareの元CEOが開発に携わっており、Operaのコンセプトを引き継いでいる。 また、開発には共同創設者としての日本人の冨田龍起氏も関わっている。 まだシェアは少ないが、利用者数は少しづつ増加しており、 2019年9月にはスマートフォン版のβ版が公開され、近年、注目を浴びているブラウザの一つである。 https://news.mynavi.jp/article/20181102-717456/ Vivaldiの特徴 以下の点が特徴である。 動作が軽快 宇宙一高速なWEBブラウザを目指すというスローガンを掲げており、動作が軽快。 多機能 Operaで好評だったスピードダイヤルなどの多様な機能がデフォルトで備わっている カスタマイズ性が高い ボタンやタブなどの位置変更が行えるなどカスタマイズ性が高い また、Chromiumベースなので、 Google Chromeと同様にChrome拡張機能の利用が可能 開発のコンセプト 以下に窓の杜の冨田龍起氏へのインタビュー動画があるので、視聴を推奨。 https://forest.watch.impress.co.jp/docs/special/1038849.html 所感 近年の主要なブラウザでは不要な機能を削ぎ落とされ、誰にでも仕えるGUIや軽量化という点に力がそそがれ、サードパーティ製のアドオンにより、機能拡張する形式を提供する形式を取るケースが多く、差異がなくなって来ている。 対して、Vivaldiはデフォルトでも様久な機能を有しており、ボタンやタブの位置の変更が行えるなどカスタマイズ製が高い。 Vivalidのように多機能なツールは一見、使いどころがないように思える機能でも、人によっては重宝するものであったり、新しい使い方が発見をユーザに提供している。 こうした設計指針は主要な流れとは異なるのかもしれないが、コモディティ化を避けるための教訓として知っておいたほうがいいと思った。

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.

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/

ルーティングテーブルをMarkdown形式で表示するスクリプトを作成

  • POST
ルーティングテーブルをMarkdown形式で表示するスクリプトを作成 ipコマンドのrouteオプション表示されるルーティングテーブルをMarkdown形式で表示するスクリプトを作成したので、下記に記載する。 ファイル内容 シェルスクリプトとawkの2ファイルで構成される。 make_markdown_route.sh #!/bin/bash # # ipコマンドで表示したルーティングテーブル情報をMarkdown形式に変換して表示するスクリプト #--------------------------------------------------------------------------------------- current_directory_path="$( dirname "$(readlink -f $0)" )" ip route show table all | awk -f "${current_directory_path}/make_markdown_route.awk" make_markdown_route.awk #!/usr/bin/awk # # ipコマンドで表示したルーティングテーブル情報をMarkdown形式に変換して表示するスクリプト # # Note: # * Destination : 宛先アドレス # * Scope : 送信先 # - scope link: 直接unicast/broadcastにて通信する経路。自身が属するネットワーク等が該当。 # - scope host: 自分自身への経路 # - scope global: (他ネットワークへの)ゲートウェイを経由したunicast通信による経路。 # * Protocol : # - proto kernel:カーネルが自動生成した経路。 #----------------------------------------------------------------------- #----------------------------------------------------------------------- # 事前処理 #----------------------------------------------------------------------- BEGIN { # ヘッダー部分の出力 printf("| %-17s | ", "Destination"); printf("%-15s | ", "Gateway"); printf("%-15s | ", "Source"); printf("%-8s | ", "Protocol"); printf("%-8s | ", "Scope"); printf("%-6s | ", "Metric"); printf("%-4s | ", "Dev"); printf("%-9s | ", "Table"); printf("\n"); printf("| %-17s | ", "---"); printf("%-15s | ", "---"); printf("%-15s | ", "---"); printf("%-8s | ", "---"); printf("%-8s | ", "---"); printf("%-6s | ", "---"); printf("%-4s | ", "---"); printf("%-9s | ", "---"); printf("\n"); } #----------------------------------------------------------------------- # 配下を初期化する関数 #----------------------------------------------------------------------- function initialize_array(array){ array["route"] = ""; array["dest"] = ""; array["mask"] = ""; array["via"] = ""; array["dev"] = ""; array["proto"] = ""; array["scope"] = ""; array["src"] = ""; array["metric"] = ""; return 0; } #----------------------------------------------------------------------- # 配列の内容を出力 #----------------------------------------------------------------------- function print_array(array){ printf("| %-17s | ", array["dest"]); printf("%-15s | ", array["via"]); printf("%-15s | ", array["src"]); printf("%-8s | ", array["proto"]); printf("%-8s | ", array["scope"]); printf("%-6s | ", array["metric"]); printf("%-4s | ", array["dev"]); printf("%-9s | ", array["table"]); printf("\n"); return 0; } #----------------------------------------------------------------------- # メイン処理 #----------------------------------------------------------------------- { initialize_array(array) begin_number=2 # テーブル情報が含まれる場合 = 項目数が偶数の場合 # Exsample: # broadcast 127.