YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処

October 12,2021 11:55 PM
Category:[Perl]
Tag:[YAML]
Permalink

PerlのYAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処方法を紹介します。

1.問題点

YAML::Tinyを使って下記のYAMLを読み込ませました。

test:
    type: text
    order: 1
    value: |
hello

が、読み込ませたところ、「YAML::Tiny found bad indenting in line 'hello' at」というエラーが発生しました。

エラーの内容的にインデントが間違っているようですが、YAMLのお作法的には間違っていないと思われます。

ということで、YAML::Tinyで「YAML::Tiny found bad indenting in line~」というエラーになる場合の対処方法を紹介します。

2.対処方法

YAML::Tinyで複数行を記述する場合、インデントをつけて、

test:
    type: text
    order: 1
    value: |
        hello

とする必要があります。

複数行も場合も、

test:
    type: text
    order: 1
    value: |
        hello1
        hello2
        hello3

とする必要があるようです。

Comments [0] | Trackbacks [0]

bashでMySQLのselect結果を出力する方法

September 28,2021 11:55 PM
Category:[bash]
Tag:[bash, MySQL]
Permalink

bashでMySQLのselect結果を出力する方法を紹介します。

1.問題点

MySQLで次のようなデータベース・テーブルを作成し、3件のデータをinsertしました。

$ psql -q -U postgres
postgres=# create database testdb;
postgres=# \q
$ psql -q -U postgres -d testdb
testdb=# create table sample (data1 text, data2 text);
testdb=# insert into sample values ('aaa', 'xxx');
testdb=# insert into sample values ('bbb', 'yyy');
testdb=# insert into sample values ('ccc', 'zzz');
testdb=# select * from sample;
 data1 | data2
-------+-------
 aaa   | xxx
 bbb   | yyy
 ccc   | zzz
(3 行)

が、このデータをbashで出力する方法が分かりません。

ということで、bashでMySQLのselect結果を出力する方法を紹介します。

2.bashでMySQLのselect結果を出力する

bashでMySQLのselect結果を出力するには次のようにします。

#!/bin/bash
 
psql="psql -q -U postgres -d testdb --no-align -t --field-separator"
sql="select data1, data2 from sample"
 
while IFS='|' read data1 data2 ; do
    echo $data1 $data2
done < <(echo ${sql} | ${psql} '|' -q 2>/dev/null)

実行結果

# ./test.sh
aaa xxx
bbb yyy
ccc zzz
Comments [0] | Trackbacks [0]

Movable TypeのDataAPIで記事を投稿するサンプル

September 8,2021 11:55 PM
Category:[DataAPI]
Tag:[DataAPI, MovableType]
Permalink

DataAPIで記事を投稿するサンプルを紹介します。

1.はじめに

ネットにDataAPIで記事を投稿するサンプルがないのと、サンプルがあってもログイン・ログアウトといった処理が盛り込まれていて、コードが複雑になって理解が難しいので、シンプルなものを自作してみました。

2.サンプル

下記にサンプル(ほぼほぼそのまま利用可能)を示します。ご利用前に3項と4項には必ず目を通してください。

また、コードにコメントを記載しているので、解説は省略します。

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="<$mt:StaticWebPath$>data-api/v4/js/mt-data-api.min.js"></script>
<script type="text/javascript">
function post() {
 
    // DataAPIオブジェクト生成
    var api = new MT.DataAPI({
        baseUrl: '<$mt:CGIPath$>mt-data-api.cgi',
        clientId: 'post-entry',
        sessionPath: '/',
    });
 
    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };
 
    // 認証
    api.authenticate(credential, function(response) {
        if (!response.error) {
 
            // 記事データ
            var entry = {};
            entry['title']  = $('#title').val();
            entry['body']   = $('#text_body').val();
            entry['status'] = 'Publish';
 
            // 記事投稿
            api.createEntry(<$mt:BlogID$>, entry, function(response) {
                if (response.error) {
                    alert("Error:" + response.error.code + ':' + response.error.message);
                    return;
                }
                alert("Success:" + response.title);
            });
        }
    });
}
</script>
 
<div id="entry-post">
    <form name="CreateEntry" id="CreateEntry" method="post">
        <p><input type="text" name="title" id="title" placeholder="タイトル"></p>
        <p><textarea name="text_body" id="text_body" placeholder="本文"></textarea></p>
        <p><input type="submit" onclick="post(); return false;" value="投稿"></p>
    </form>
</div>

3.使い方

上記のコードをインデックステンプレートにペーストして、下記の赤色部分について、任意のユーザー・パスワードに書き換えてください。

    // ユーザー情報
    var credential = {
        username: "ユーザー名",
        password: "パスワード",
        remember: true
    };

テンプレートを再構築してページにアクセスすればフォームが表示されるので、タイトルと本文を入力して「投稿」をクリックすれば投稿できます。

投稿結果はJavaScriptのalertで表示します。

4.注意事項

パスワードは、ウェブサービスのパスワードを設定してください。ユーザー編集画面の「Webサービスパスワード」が該当します。

また、DataAPIを有効にするには、サイトの「設定」→「Webサービス」→「Data API」を有効にしてください。無効のまま投稿すると403エラーが発生します。

ただいシステム管理者はこの設定と無関係に投稿できるようです。

Comments [0] | Trackbacks [0]
 1  |  2  |  3  |  4  |  5  | All pages