Programming」カテゴリーアーカイブ

Graphics

18 日に上げた PyObjC Tips の日付が 2018 年になってた!
よしさっさと更新してごまかしてまえwwwww

PyObjC Tips – L’Isola di Niente

てか、AppKit に関しては comipoli で必要な API しか調べていないんで。
全部調べて作ってだとスゲェ時間が掛かるので細切れで出すことにした。
ゴールデンウイークは 10 連休なのでもちっと進めたい。

あっちにも書いたけど。
Cocoa Dev Central: Cocoa Graphics with Quartz
Cocoa Dev Central: Cocoa Graphics with Quartz II
すごく解りやすいよね。
今後のページ作りの参考にしよう。

cairo だとココとか。
Cairo samples

日本語でこの手を探すとスクショだらけな Xcode の使い方解説ばかりで困る。
Visual Studio もそうだったね、Mac も Windows も本当に何も変わらないなと。
インストールのスキルしか上がらない Node.js よりマシ程度。
日本人はコードを書くのが嫌いなんだろうか?

import objc

今頃気が付いた。
PyObjC の AppKit に objc は含まれていた。

#!/usr/bin/env python3

#import objc
from AppKit import *

いらなかったんや!!!

PyObjC Tips ページを作っていて気がつく、書いていないのに動いたって。
作っているうちに又気がついたことがあったらコッチに書くわ、ネタがないし。
しかしゼロから作るのはどう書くか迷って中々進まない。

JavaScript Date

JavaScript 覚書で jjs を削除し他を今風に書き換え。
だけじゃつまらないから何か追記したい。

日付けと時刻の取得はまだ Gjs でしかやっていなかった。
よしこれを JXA, Node.js で行う手段を探し、、、、、いやまて。
よく考えたら JavaScript には Date オブジェクトがあった。

/**
 * Gjs, JXA, Node.js 共通
 */

const WEEKS = ['日','月','火','水','木','金','土'];

let now = new Date();

let year  = now.getYear() + 1900;
let month = now.getMonth() + 1;
let day   = now.getDate();
let week  = WEEKS[now.getDay()];
let hour  = now.getHours();
let minut = now.getMinutes();
let sec   = now.getSeconds();

if (month < 10) month = '0' + month;
if (day   < 10) day = '0' + day;
if (hour  < 10) hour = '0' + hour;
if (minut < 10) minut = '0' + minut;
if (sec   < 10) sec = '0' + sec;

if (typeof print === 'undefined') print = console.log;
print(`${year}年${month}月${day}日(${week}) ${hour}:${minut}:${sec}`);

で。

ウエブブラウザでも使える、JavScriptCore 単体でも動く。
.bashrc にエイリアスを作って試してみよう。

# Fedora alias
alias jsc=/usr/libexec/webkit2gtk-4.0/jsc

# macOS alias
alias jsc=/System/Library/Frameworks/JavaScriptCore.framework/Versions/A/Resources/jsc

あ、仕事は遅番出勤ですので。

ところで、以下で検索するとやはりというかなんというか。
‘node.js 日付と時刻’

strftime 形式で日時取得ごときにインストール…
何故いつもいつもインストールばかりやっているのだ?
その程度を自分で作れない輩にいったい何が作れるのだ?

%H,%M,%S だけの実装例を書いてみる。
datetime.now なのはもちろん Python に合わせた。

const datetime = {
    now(fmt) {
        let now = new Date();
        let kwd = false;
        let res = [];
        for (let s of fmt) {
            if (kwd) {
                switch (s) {
                case 'H':
                    s = now.getHours();
                    if (s < 10) s = '0' + s;
                    break;
                case 'M':
                    s = now.getMinutes();
                    if (s < 10) s = '0' + s;
                    break;
                case 'S':
                    s = now.getSeconds();
                    if (s < 10) s = '0' + s;
                    break;
                default:
                    throw 'undefined format';
                }
                kwd = false;
            } else {
                if (s === '%') {
                    kwd = true;
                    continue;
                }
            }
            res.push(s);
        }
        return res.join('');
    }
}
if (typeof print === "undefined") print = console.log;
print(datetime.now('%H:%M:%S'))

15 分で作れた。

Google さん、もっとまともなサイトを上位に表示してよ。

GraalVM macOS awt

GraalVM の macOS 版って全然ダメだ。

awt を使おうとしたら、ビルドはできるけど JVM で弾かれる。
/opt/X11/lib/libfreetype.6.dylib
が無いって言われましても。。。。。

/opt すら無いよ、筆者の 2018 Air には。
てゆーか X11 だったのカヨ!

Java Client Roadmap Updateによせて (前編) – AOEの日記

JavaFX 以外は使うなになったのかな?と思ったけど違うんだな。
Java8 とはいえ、いつの mac で JVM を開発しているんだろう?
Java11 なら問題ないかどうかは知らない。

それと js で TimerTask を使おうと思ったけど。
継承が使えるとは思っていなかったけど、Nashorn と同じ表記もできない。
いくら探しても手段が見つからない、何を試しても動かない。
そういう使い方をするためのものではない、って感じ。
そういう使い方をするために入れたのに。。。。。

もう GraalVM はヤメ!
同梱の Node.js はありがたく使わせてもらいます。

Shell: Get Distribution Name

Linuxのバージョンの確認方法 – Qiita
Linux OSの種類とバージョンの調べ方 – Qiita

あれ? /etc/os-release ならばどのディストリビューションにもあるのか。
ということはドットコマンドで取り込んで。

#!/bin/sh

# ディストリビューション名
. /etc/os-release; echo $PRETTY_NAME
#cat /etc/system-release では Fedora 等一部

$NAME なら簡易。

これでどのディストリビューションでもイケるはず。
でもドットコマンドってどのシェルでも使えるかどうかは知らない。
ダメだったら source に書き換えしてちょ。
ちなみに macOS には /etc/os-release は無いです。

覚書ページの作り替え作業が終わらないので小ネタでした。