HRR Co., Ltd.

技術的な記録を残していくことを目的としています。1次情報を大事にしています。

TeraTermマクロ実行時に「無効なホスト」と表示される

はじめに

小ネタです。
何がきっかけかわかりませんが、自宅PCでTeraTermマクロファイル(*.ttl)を実行したときに、下記のエラーが起きるようになりました。

f:id:hrroct:20200303153529p:plain

その解決方法のご紹介です。

結論

ttpmacro.exe(マクロを実行するexe)ではなくて、
ttermpro.exeTeraTerm本体のexe)で開く設定になっている可能性があります。

TeraTermマクロファイル(*.ttl)を右クリックして、「プログラムから開く(H)」から使用するアプリケーションを変更してみてください。

TeraTermの場所ですが、特に変更していない限りは下記にあるはずです(Windows 10)。
C:\Program Files (x86)\teraterm

おわりに

気づけば大したことのない話なのですが、ハマることもあろうかと思います。
どなたかの一助となれば、これ幸いです。
以上でした!

お名前.comで取得した独自ドメイン(Primary)をNetlifyに設定

はじめに

Netlifyは無料のホスティングサービスです。
ここにお名前.comで取得したドメインを設定します。
そして今回は「○○○○.com」「www.○○○○.com」のドメインを対象とします。

前提

すでにNetlifyで発行されたURLがあることを前提とします。
そして、お名前.comで取得済みのドメインがあることも前提です。

Netlify側の設定

  1. 「Domain Management」を開く
    https://app.netlify.com/sites/********/settings/domain
    Netlifyの設定画面から、「Domain Management」をクリックします。

  2. 「Add domain alias」をクリック&入力
    「Add domain alias」をクリックして、独自ドメイン(Primary、サブドメインではなくメインのドメイン)を入力します。
    「alias」とは別名のこと。Netlifyの既定のドメインの別名を登録するということです。
    f:id:hrroct:20200223201653p:plain
    入力が終わったら、「Save」します。

  3. 追加されたドメインの「Set up Netlify DNS」をクリック f:id:hrroct:20200301202702p:plain ドメインの横の「...」をクリックすると、メニューが出てきます。
    「Set up Netlify DNS」をクリックして先に進みます。

  4. Netlify DNSの設定を行う
    お名前.comで取得した場合、DNS(Domain Name Server、ドメインの問い合わせ先)はお名前.comのDNSになっているはずです。
    これをNetlify DNSに担当を移します。 f:id:hrroct:20200301202706p:plain 「Velify」をクリックします。

  5. このドメインはあなたがオーナーですか?と聞かれる
    f:id:hrroct:20200301202710p:plain
    問題なければ、「Yes, add domain」をクリックします。

  6. DNSレコードの追加についてはオプションです f:id:hrroct:20200301202714p:plain
    ここは今回設定しないので、「Continue」で先に行きます。

  7. ネームサーバーが提示される
    f:id:hrroct:20200301202718p:plain
    これを、ドメインを取得したプロバイダ(今回はお名前.com)側に設定することになります。

お名前.com側の設定

  1. 「ネームサーバーの設定」画面へ f:id:hrroct:20200301202723p:plain
    ここに、先程表示された4つのネームサーバーを入れて、登録を行います。

  2. 問題なければ「設定する」
    f:id:hrroct:20200301202727p:plain

  3. お待ちください
    時間がかかりますので、そのまま待ちます。
    f:id:hrroct:20200301202730p:plain

  4. お申し込み完了
    f:id:hrroct:20200301202734p:plain
    ここに書かれている通り、「お手続きを受付」した状態です。
    このあと飛んでくるメールにも書かれている通り、環境によっては24~72時間かかる場合があります。

設定が終わったら

登録したドメインでアクセスして、無事Netlifyのサイトに飛べば、無事作業完了です。
Let's Encrypt によるhttps化もされています。便利!

終わりに

画像を貼るとステップが多そうですが、やることは多くありません。
問い合わせ先のネームサーバーを指定してあげることで、あとはNetlifyがうまくやってくれます。
便利ですね。
静的なページならNetlifyを使わない手はありませんので、ぜひご利用してはいかがでしょうか。

以上でした!

Chatwork APIを使ってみる (2)

はじめに

前回の続きです。

hrroct.hatenablog.com

今回はより実践的、具体的な使い方を紹介します。

developer.chatwork.com

ドキュメントはこちらです。

タスク管理の補助に使ってみる

Chatworkにはタスク機能がついているのですが、タスク管理をしようとすると、なかなかに大変です。
タスク管理はタスク管理専用のアプリケーションを使うべきであることは承知の上ですが…。
会社の縛りでうまく行かないこともあるのが、残念なところです ;(

さて。
個人的には、他人のタスクが見えづらいのが困ります。
もちろん見ること自体はできますが、人数やタスクが増えると「□自分のタスクのみ表示」にチェックを入れてる人が多いのではないでしょうか。

そこで、

  • 特定の人間と自分のタスクをみたい。
  • かつ、本日が期限のタスクだけでいい。
  • 複数のグループチャットから探したい。

という要望に対応してみます。

コードはこんな感じ

<?php

$targetAccounts = array(MEMBER_IDS);
$targetRoomIds = array(ROOM_IDS);

$message = '';
// 部屋とアカウントでループして、タスクを探します。
foreach ($targetRoomIds as $targetRoomId) {
    foreach ($targetAccounts as $accountId) {

        // タスク検索APIを使います。部屋とアカウントを指定します。
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/".$targetRoomId."/tasks?account_id=".$accountId."&status=open");
        curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-ChatWorkToken: TOKEN_CODE"));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $return = curl_exec($ch);
        curl_close($ch);
        $taskList = json_decode($return, true);

        // 「今日」の日時の開始と終了を割り出す
        $now = time();
        $year  = date('Y', $now);
        $month = date('m', $now);
        $day   = date('d', $now);
        $todayStart = mktime(0,0,0,$month,$day,$year);
        $todayEnd   = mktime(23,59,59,$month,$day,$year);

        // 取得したタスクをループ
        if (!empty($taskList)) {
            foreach ($taskList as $eachTask) {
                // 実行した日のタスクだけ出力
                if ($todayStart < $eachTask['limit_time'] && $todayEnd > $eachTask['limit_time']) {
                    // 出力の方法は、工夫してみてください
                    $message .= 'https://www.chatwork.com/#!rid'.$targetRoomId.'-'.$eachTask['message_id'].PHP_EOL;
                    $message .= '■担当者: '.$eachTask['account']['name'].PHP_EOL;
                    $message .= '[info]'.$eachTask['body'].'[/info]'.PHP_EOL;
                }
            }
        }
    }
}
$message = '[info][title]■■■本日のタスク■■■[/title]'.$message .'[/info]';
  • MEMBER_IDSROOM_IDSTOKEN_CODEにご自分の環境に合うものをセットしてください。
  • 最終的に、$messageを前回の記事のように投稿してあげれば完成です。
  • これをcronに設定して毎朝動くするようにすると便利です。

Chatworkは装飾に[info][/info]とか[info][title][/title][/info]が使えるので、活用すると見やすくなります。

終わりに

上記コードだと、タスクがない場合に微妙な表示になったりします。
それぞれのニーズや使い方によって、調整をして使ってください。

以上でした!

Chatwork APIを使ってみる (1)

はじめに

SlackやらChatworkやら、業務でチャットツールを使っているところは多いと思います。
今回はChatwork APIを使った例を共有します。

ちなみに、curlPHPで実行してみます。

公式ドキュメント

developer.chatwork.com

こちらにあります。
注意事項もあるので、上記ページは読んでおくことをオススメします。

API実行にはTokenが必要になりますが、組織管理者への申請が必要な場合があります。
権限的に使えるようであれば、

Chatwork画面右上の「利用者名」をクリックして表示されるメニューの「API設定」から

APIのTokenを取得できます。

例1: マイチャットにメッセージを投稿してみる (curl編)

固定のメッセージをPOSTするだけなら、プログラムを組まずとも、curlコマンドでできます。

curl -X POST -H "X-ChatWorkToken:TOKEN_CODE" -d "body=test message&self_unread=1" "https://api.chatwork.com/v2/rooms/ROOM_ID/messages"

TOKEN_CODEROOM_IDを、ご自分の環境に合わせてから実行してみてください。
ROOM_IDは、グループチャットを選択したときの、URLを見るとわかります。

https://www.chatwork.com/#!rid********

********のところがROOM_IDです。

実行すると、コマンドの返り値として

{"message_id":"MESSAGE_ID"}

が返却されます。MESSAGE_IDにはその名の通り、メッセージごとの固有のIDが入ります。
そして、指定のグループチャットに「test message」と未読の投稿がされると思います。

例2: マイチャットにメッセージを投稿してみる (PHP編)

次はPHPで書いてみます。結局PHPでもcurlを使うんですが…。

<?php

$ch = curl_init();
$postRoomId = "ROOM_ID";
$message = "test message";

curl_setopt($ch, CURLOPT_URL, "https://api.chatwork.com/v2/rooms/".$postRoomId."/messages");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-ChatWorkToken: TOKEN_CODE"));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, array('body' => $message, 'self_unread' => 1));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$messageId = curl_exec($ch);
curl_close($ch);

echo $messageId;

こちらも、コマンドの返り値として

{"message_id":"MESSAGE_ID"}

が返却されます。そして、指定のグループチャットに「test message」という未読の投稿がされると思います。

最後に

第2弾を用意する予定ですので、第1弾はここまで。
今回のメッセージ投稿が、API活用の基本になるのではないかと思います。

次回はもう少し実践的な例を投稿予定です。
以上でした!

Hugoで記事にタグをつける

はじめに

Quick Startをみると、記事の縦方向の分類であるSection(セクション)については書かれていますが、横方向の分類であるタグについては書かれていませんでした。

gohugo.io

そこでタグの付け方を調べてみました。
Hugoのバージョンは下記のとおりです。

$ hugo version
Hugo Static Site Generator v0.59.0-1DD0C69C windows/amd64 BuildDate: 2019-10-21T09:40:37Z

前提条件

hrroct.hatenablog.com

こちらにある通り、Quick Startを済ませた状態を前提とて、説明します。
記事を書き始めている人でも、全然問題ないと思いますが。

やり方

Hugoのドキュメントを探したのですが、記述方法については見つからず…
一次情報ではありませんが、記事ファイルを開いて、追加するだけでOKです。

$ vim content/posts/my-first-post.md
---
title: "My First Post"
date: 2019-09-11T11:13:32+09:00
draft: true
tags: ["test", "test2"] 
---
てすと

tags: ["test", "test2"]のように、配列で定義してあげるだけです。
一つの場合も配列で、ない場合は空配列でOKのようです。
tags: []こんな感じで。

また、下記のような書き方でもOKです。

tags: 
  - "test"
  - "test2"

確認してみる

その後、ビルトインサーバーを立ち上げて、確認してみます。

hugo server -D

その後、http://localhost:1313/posts/my-first-post/ を見てみると…

タグを付与した記事ページ

タグが表示されているのがわかります。
(表示はテーマによって変わると思います。)
クリックすると、そのタグがついか記事の一覧も表示されます。

最後に

テーマによって見た目も表示方法も変わってくると思います。
適切に表示してくれるものを選ぶか、カスタマイズする必要が出てくるかもしれません。

以上、タグの付与のやり方でした。