月別アーカイブ: 2020年6月

ビックカメラ 会員登録 できない

ビックカメラで久々にデカい買い物。
あら、今って一割分のポイントサービスがあるんだね。
ネットで買うよりお得かも。
仮カードを貰って家でスマホアプリのダウンロード。

えっと「ご入会のご案内」によると。
BIC CAMERA JMB WAON カード(仮カード含む)を選択
とあるけど、WAON カードと仮カードが別々になってるんですけど。
とりあえず WAON カードのほうを選択して Step2 へ。

一番上に登録コードの入力があるヤン。
「ご案内」に書いとけよ、見逃すところだったじゃんかよ。

個人情報とパスワード登録と JMB 番号を入力。
PIN コードは次のページかな、次へ。

エラー、赤くなっている所ってパスワード登録の所なんだけど。
半角英数字混合で 7 文字以上、ってそうしているのに何故?
何かと被っているかもと色々なものを打ち込むが駄目。
頭にきて PC サイトから Chrome ブラウザでやってみても同じ。

アプリやサイトのバグかもと思いググるも何も出てこない。
しかたがない、ポイントサービスセンターに電話だ。
「ブラウザを変えてみてください、IE とか」って何だよソレ。
Microsoft が「もう IE は使わないで」って言っているだろ!
てゆーか Windows マシンなんてもっていないよ。

あぁもうワカンネ、郵送しか手段が無いかもな。

いやまて、最初のカード選択を「仮カード」に変更しららどうなる?
最初からやり直し、普通に PIN コード入力が出てきた。
ボタンを押すと次の Step へ進んだ、バカヤロウ!

赤くなっている所を確認、って何故パスワードの所が赤くなるんじゃい。
そんなカードはありません、とかの解りやすいメッセージにしろっての。
ポイントサービスセンターの人は無知なので電話しても無駄です。
一時間以上損したけどやっと登録できました。

この「ご案内」では同じ間違いをする人がいるかもな。
ググっても何もでてこないので筆者が書いておきました。

Swift…

筆者は macOS に Command Line Tools を入れているんだし。
せっかくなので Swift もちょっぴりやっておこうかなって。

調べてみると CLang ではなく swiftc コマンドを使うようだ。
ソースの拡張子は swift とそのまんまにする。
gcc や CLang 同様に -o オプションで名前を付けられる。
Foundation の println を使わず print で stdout に出力可能。

// swiftc -o hoge src.swift
print("TEST")

うん、Xcode が無くてもビルドできるね。
さて Foundation を使ってみよう。

import Foundation
println("TEST")
exit(0)

というネットで見つけた最小限コードに書き換えてみたけど。
ビルドできない、いくら探してもオプション無しでビルドできると出るのに。
Objective-c と同じ -framework オプションを指定しても結果は同じ。

swiftc

手段はあると思うけど見つからない、別のビルドを試そう。
公式をよく見るとパッケージの作り方が書いてあった。

Swift.org – Getting Started

swift package init
swift build

xctest

xctest が無いんだって、xc*** ってつまり Xcode のツールだよね。
もしかして Xcode を入れたら上の swiftc コマンドも上手くいくのかも。
Swift って完全に Xcode とセットなのか???

もう嫌だ、言語を試す前になんでこんなに苦労しなきゃいけないんだよ!
Xcode を入れたって今度は Xcode の使い方に苦労するだけジャン。
Swift ヤメ、やっぱり Swift はスズキだけでいいよ。

Objective-c は言語もビルド方法も簡単だったのにな。
それより昔書いた C や JXA のコードがサンドボックスに引っかかるのをなんとかしてくれよ、SELinux みたくできないのか?
プログラミングするなら mac、という時代はもう終わっている。

GNU readline

前回 jxa で readline を使ったけどさ。
やっぱり C でも使いたいヤン。

GNU readline | Apribase

タブキー保管ができたり上矢印キーで履歴が辿れたり、まさに端末って感じ。
gets や scanf は非推奨なんだし、端末入力はコレに統一でいいじゃん。

Fedora では libreadline.so は最初から入っている。
でも C のヘッダは無いので以下のコマンドでヘッダを追加する必要がある。

# ncurses ヘッダも依存関係で入るけど気にしない。
sudo dnf install readline-devel

macOS では Command Line Tools の導入で readline.h も入ってくる。
GNU のものではなく互換品だったりするけど。
なので検索すると editline/readline.h と指定、なんて出てくると思う。
現在は以下にシンボリックリンクがあるので readline/readline.h のままでいい。

/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/readline/readline.h

ビルドするにはどちらも -l リンカオプションは必要。

#include <stdio.h>
#include <stdlib.h> /* free() */
#include <string.h> /* strcmp() */
#include <readline/readline.h>
#include <readline/history.h>

/*
    Fedora: gcc -lreadline src.c
    macOS:  clang -lreadline src.c
*/

int main(void) {
    char *s;
    printf("usage: exit 又は Ctrl+D で終了\n");
    while (1) {
        s = readline(">> ");
        if (s == NULL) { /* Ctrl+D */
            printf("\n");
            break;
        } else if (strcmp(s, "exit") == 0) {
            free(s);
            break;
        } else if (*s == '\0')
            printf("なんか打ち込めよ!\n");
        else
            printf("%s はカッコイイ!!!\n", s);
        add_history(s);
        free(s);
    }
    return 0;
}

で。

clang_readline

Fedora, macOS 共に上矢印キーで履歴が辿れるし control+D も使える。
macOS の history.h って実は readline.h へのリンクなので不要だけど互換のために。
string.h 等の指定も省略可能だけど警告がウザいので入れたほうがいい。

JXA readline

現在本サイトの JXA Tips を書き換えしている。
以下の Objective-C Bridge の所を見ていたんだけーが。

OS?X 10.10 Release Notes

あれ、readline が import できるみたい。

GNU Readline – Wikipedia

stdio や unistd のように C と同じように使えるのかな。

#!/usr/bin/osascript

ObjC.import('readline');

console.log('May I ask your name?');
let s = $.readline('>> ');
console.log(`Hello ${s} san`);

jxa_readline

JXA の stdin ってこんなに簡単だったんだ!
世界中探しても見つからなかったのにこんちくしょう。