銀河の歴史がまた1ページ(日記)

Last Update (2019/01/17 23:45:13)
1997.09.06から数えて counter 番目のアクセスです。

ミラーサイト [www.ceres.dti.ne.jp] [yk.rim.or.jp]

[ホームページ] [日記] [日記ファイル一覧] [読んでいる日記] [FreeBSD] [FreeBSD LINK] [検索]

ページ内目次


■ 宇宙暦 2019.01.17

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190117

2019.01.17(木) markdownからスライドが作れるWebサービスがGitHub,GitLab,BitBucketにあった

markdownからスライドが作れるWebサービスがGitHub,GitLab,BitBucketにあった

tag: github, gitpitch, gitlab

おおまかな使い方は以下とのこと。まだ試してないけど。

  1. GitHubに新規リポジトリを作成。
  2. PITCHME.mdファイルを作成してコミット。
  3. https://gitpitch.com/GitHubのユーザー名/リポジトリ名 にブラウザでアクセスする。
  4. スライドのページ区切りは 「----」

これ便利かもしんない。

2019.01.17(木) バーチャルさんはみている

バーチャルさんはみている

tag: anime

普段からバーチャルユーチューバーをよく見ている人ならいつものキャラが登場して動いてるのでちょっと笑えるけど アニメ番組としては別に面白くない...

ソロで単独番組持ってるようなごっつい連中なので、フリートークで暴れさせた方が面白いんだよな

それはともかく、モーションキャプチャーと音声録音どうなってんのか不思議。 立ち位置移動あるからOpenBroadCastを使ってDiscord経由ってわけでもなさそうだし 集合して録音&集合してモーションキャプチャーしてんのかな。


■ 宇宙暦 2019.01.14

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190114

2019.01.14(月) きどうようそのひみつ

2行軌道要素の読み方の解説がああったのでこちらでも紹介。

ISS (ZARYA)
1 25544U 98067A   13158.50723059  .00016717  00000-0  10270-3 0  9040
2 25544  51.6453 156.3482 0010707  41.5842 318.6122 15.50690189 33209

昔のコンピュータシミュレーションプログラムが入出力しそうな書式で興奮する(ぉぃ

2019.01.14(月) YouTube ウェザーニュース チャンネル 平常時はゆるかった

YouTube ウェザーニュース チャンネル 平常時はゆるかった

台風の時しか見ないYouTubeちゃんねるだったけど...

今日見てたらお天気お姉さん(?)が成人の日のエピソードをほのぼの紹介して 視聴者とゆるいやりとりしつつ、時々天気実況、ごくまれに天気予報する番組になっていた。

平常時はこんな感じなのかな。

ネット通信容量の無駄だけど、流しっぱなしにしててもそう悪くない環境動画になってる気がする。


■ 宇宙暦 2019.01.07

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190107

2019.01.07(月) ハイパーバイザの作り方(FreeBSDのBHyVeの解説)

普段何気なく使っている(?)仮想マシンの内側の話。メモメモ。

こーゆーおもちゃがあると大容量メモリを積んだFreeBSDマシンが欲しくなるなぁ

2019.01.07(月) Ubuntuでお馴染みのCanonicalがMicroK8sを出したらしい

シングルノード用で軽量、開発&テスト向けとのこと。

snap ( A universal app store for Linux ) パッケージを使ってインストールする模様。( Ubuntu 18.04 LTS なら snapd は既に入っている。)

snapはソフトを docker/LXDコンテナ コンテナ技術を応用したコンテナのようなものとして配備する。この点が apt/dpkg とか yum,dnf/rpm との違い。

どのくらい軽量なのかは、あとでvagrantマシンに入れて試してみるか。 さすがにAmazon VPSで借りてるメモリ1GBマシンじゃ動かないだろうけどww

p.s.

snapはコンテナ技術を応用したコンテナのようなもの、で、dockerコンテナでは無いらしい。

Canonicalお得意の独自仕様ってヤツかな


■ 宇宙暦 2019.01.03

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190103

2019.01.03(木) 箱根駅伝の日本テレビ公式HP

箱根駅伝の日本テレビ公式HP

位置情報をリアルタイムで地図プロットしてるし動画LIVE配信もやってるし、テレビ中継よりわかりやすい。

アメリカじゃアメフト中継はテレビ見ながらタブレットでこの手の情報見てるっていう話だったけど、日本もテレビの横にタブレットがあると便利な時代来たかも。

jdiaryB90101_image.png 2,441,777bytes

p.s.

今思えば、地震とか水害の際に避難所や給水所の地名をテレビで読み上げたりしてるけど、ラジオ的な表現方法だよな。 地図と相性が良い情報ならズバリ地図にアイコンをプロットしちゃうのが良いと思った。


■ 宇宙暦 2019.01.02

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190102

2019.01.02(水) 今期のアニメ追加

今期のアニメ追加

tag: anime

ヒマなので動画を見てる冬休み

もうシーズン終わってるけど今期アニメに↑追加。 物理ネタこまめにはさんで、戦闘シーンなしの日常風景(ちょっと非日常あり)で謎とサスペンス風の緊張感を保って13話突っ走ってて良い感じだった。

タイトルが意味不明なのでラノベにしては損してるかも(電気羊のオマージュなんだろうけど)。

p.s.

Amazon Prime Video でパシフィックリム見たけど、コレはさすがにどうかと思った。バトルシップの方が名作だろぉぉ?!

(補足:バトルシップ、パシフィックリムと並び称されることの多いこの2作なのだが、何か奇妙に王道を外れたアホっぽいハリウッド映画で....。バトルシップは最高に好きなんだけどなぁ...。人それぞれで許せるファウルラインが違うって話だね。)


■ 宇宙暦 2019.01.01

http://www.ceres.dti.ne.jp/~george/jdiaryB90101.html#20190101

2019.01.01(火) あけましておめでとうございます

本年もよろしくお願いいたします。 data/rei.png 335bytes


■ 宇宙暦 2018.12.31

http://www.ceres.dti.ne.jp/~george/jdiaryB81201.html#20181231

2018.12.31(月) みなさま良いお年を

早いもので今日は大晦日ですよ

去年の年末はIntel CPUのSMT関連脆弱性で盛り上がっていたけど、今年は何もなしかな

2018.12.31(月) 108の煩悩

108の煩悩

某アリスギアアイギスというスマホゲームにて、ガチで108個のHEXマスをタップさせてて鐘の音を鳴らし、108個の煩悩を全部ゲーム登場キャラで補足解説/煩悩実演/時にはダジャレしつつ煩悩を払うという大晦日イベントやってて笑ったww

煩悩の内容にはよく似た内容のものも多くて本当に108種類あったかどうかは定かではないけど、ゲームキャラによる解説/煩悩実演は確かに108種類あったwww(←そっちしか覚えていない)

108種類ガン見したのはこれが初めてかもしれん

歴史とか古典とかもそうだけど、エンタメストーリー仕立てにしてあると頭に入ってきすぎて困るww

p.s.

108個というのは数字のごろが良いから採用されているようで、沢山という意味らしい。 108個の内容は宗派によって色々で特に決まっているわけではない模様。


■ 宇宙暦 2018.12.22

http://www.ceres.dti.ne.jp/~george/jdiaryB81201.html#20181222

2018.12.22(土) HP ENVY 4520 Series (HPF475F9) (プリンタ/スキャナ) Windows 10 ver 1809/1803 からカラー印刷ができない / プリンタの印刷設定で一般保護例外が出る

HP ENVY 4520 Series (HPF475F9) (プリンタ/スキャナ) Windows 10 ver 1809/1803 からカラー印刷ができない / プリンタの印刷設定で一般保護例外が出る

Windows Update で Windows 10 ver 1803/1809 に最新化してるとNGっぽい。強制的に白黒印刷になる。

Windows 10 ver 1703 までのPCからだとカラー印刷できるし、プリンタの印刷設定画面も開く。

うーん。購入は2017/12/03だったけど、1年もたないプリンタってどうよ・・・。本体価格 4,888円だからこんなモン?

ドライバ供給がタコなのでHP製品はダメぽ

2018.12.22(土) FreeBSD 12.0 RELEASE 出た / アップグレード時は共有ライブラリが変更になっているので注意

FreeBSD 12.0 RELEASE 出た

tag: freebsd, freebsd12

アップグレード中に不気味なエラーが出たけど、これ大丈夫か?w

root@n3050 ~ $ freebsd-update install
Installing updates...install: chown 0:0 ///proc: Operation not supported
install: chmod 555 ///proc: Operation not supported
root@n3050 ~ $ freebsd-update install
Installing updates...rmdir: ///var/db/etcupdate/current/usr/share/openssl/man/en.ISO8859-1: Directory not empty
rmdir: ///var/db/etcupdate/current/usr/share/openssl/man: Directory not empty
rmdir: ///var/db/etcupdate/current/usr/share/openssl: Directory not empty
rmdir: ///var/db/etcupdate/current/usr/share/man/en.UTF-8: Directory not empty
rmdir: ///var/db/etcupdate/current/usr/share/man/en.ISO8859-1: Directory not empty
rmdir: ///var/db/etcupdate/current/usr/share/man: Directory not empty
 done.
root@n3050 ~ $

再起動後、pkgインストールしようとすると、以下のエラーがww

ssh george@n3050 ~ $ pkg
ld-elf.so.1: Shared object "libssl.so.8" not found, required by "pkg"
ssh george@n3050 ~ $

華麗に以下の記述に引っかかったのね;;

At this point, users of systems being upgraded from earlier FreeBSD releases will be prompted by freebsd-update(8) to rebuild all third-party applications (e.g., ports installed from the ports tree) due to updates in system libraries.

After updating installed third-party applications (and again, only if freebsd-update(8) printed a message indicating that this was necessary), run freebsd-update(8) again so that it can delete the old (no longer used) system libraries:

pkgコマンドまでやられるとは予想してなかったけども・・。

仕方がないので、VirtualBox + vagrant で起動する FreeBSD 11 RELEASE バックアップマシンからpkg(8)コマンドに必要な3個の共有ライブラリをscpでコピーして持ってくるという顛末にww

pkgの実行に必要な共有ライブラリファイルは以下の3個。

ssh george@n3050 ~ $ tar tvzf hoge.tar.gz
-r--r--r--  0 root   wheel  470352  6月 22  2018 usr/lib/libssl.so.8
-r--r--r--  0 root   wheel 2542360  6月 22  2018 lib/libcrypto.so.8
-r--r--r--  0 root   wheel  788968  6月 22  2018 usr/lib/libarchive.so.6
ssh george@n3050 ~ $

このまま cd / ; tar xvzf ~george/hoge.tar.gz すれば pkg コマンドだけは動くようになる。

そしたら全部のパッケージを再インストール。

pkg update
pkg upgrade

ひとまずこれでFreeBSD 12.0 RELEASE への移行ができた。

2018.12.22(土) Oracle VM VirtualBox 6.0 出た

Oracle VM VirtualBox 6.0 出た

tag: virtualbox, virtualbox6

実行パフォーマンスは悪くなるけど、Hyper-V上でのVM実行をフォールバックとしてサポートしたらしい

早速、Hyper-Vを有効にしたマシンで、vagrant 2.2.2経由でvirtualboxを使って起動してみる。

フォールバック実行できないっぽい。 Hyper-Vが有効でダメな時と同じエラーを出している。 これはVBoxManagerとvagrantの対応待ちかな。

==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["startvm", "f0e9d6e2-85e2-415d-844a-9cee5a7fdd7b", "--type", "headless"]

Stderr: VBoxManage.exe: error:  (VERR_NEM_MISSING_KERNEL_API).
VBoxManage.exe: error: VT-x is not available (VERR_VMX_NO_VMX)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component ConsoleWrap, interface IConsole

今度はOracle VirtualBox を直接使用してみる。

Windows 10 Pro ver 1809 Hyper-V 有効 (Docker for Windows 2.0.0起動中) のメインマシンで VirtualBox 6.0.0を起動して、FreeBSD 12.0 RELEASE の DVD-ISOイメージを使用してみた。

起動はするんだけど、FreeBSD インストール中に src.txzのチェックサムが違うとか言われてインストールはできず。

何度か試しているうちに、VMの起動もVT-xが無いと言われてできなくなってカオス。

うーん。謎。


■ 宇宙暦 2018.12.16

http://www.ceres.dti.ne.jp/~george/jdiaryB81201.html#20181216

2018.12.16(日) テキストエリア(textarea)のv-modelのデータ初期化 from HTMLデータ (vue.js, axios)

テキストエリア(textarea)のv-modelのデータ初期化 from HTMLデータ (vue.js, axios)

tag: vue2, axios, wiki

■概要

俺のwikiにもクリップボードに画像がある状態でテキストエリアでCtrl-Vすると画像を自動でアップロードして、 その画像へのリンクテキストをテキストエリアに挿入する機能が欲しかったので実装してみた。

その際、HTMLから文字列データ(Mustache形式を含む)を得てtextareaのv-modelを初期化するのが大変だったのでメモ。

■背景

貼り付けイベントを拾って、クリップボード内に画像があればaxiosで画像をアップロードする話は↑に書いてあるのだけど、テキストエリアの初期データ投入に困った。

元々俺のwikiはpure JSP/Servletなので、編集前wikiテキストデータが<textarea>〜データ〜</textarea>という形でJSPにてHTML形成されてくる。

Vueの場合、テンプレートを用意せずに DOM の Element をマウントすると、元々あったHTML構造をテンプレートとして採用してくれる(推奨はされていない)のだが、 その中に {{ Mustache }} 形式の文字列があるとテンプレート展開しようとする。

Mustacheが変数として未定義ならWarningが出るし、 {{ Mustache(hoge) }} みたいな関数呼び出し形式が存在すると、関数定義が存在しないとErrorになって画面が出ない。 つか関数が実在してもここで呼び出しされては困る。 元々Vueの関数を呼び出すつもりなどない <textarea> の中で、俺のwikiのpluginを呼び出す書式として書いているだけなのだ...。

■対策

textareaのv-modelの初期化の話はGoogle先生に聞いてもでてこないので、適当にでっちあげてみる。

考え方としては以下。

  1. DOMからtextarea.valueの値を変数に保存。
  2. new Vueする。el指定はナシ。
  3. DOMのtextarea.innerHtmlの値を空にする。これで、未定義の Mustache 表記にヒットしてエラー落ちしなくなる。
  4. vm.$mount(el)でマウント。マウントした時点でDOMからテンプレートの作成処理が走る。が、内容は空なのでエラーにはならない。
  5. 初期化関数経由で、前に保存したtextareaのvalueの値を設定する。関数からv-modelを初期化した場合は、 {{ Mustache }} 表記は展開されない。
  <!-- vue.jsのロード -->
  <script type="text/javascript" src="/kjwikig/js/vue.js"></script>
  <script>
    Vue.prototype.$appName = 'MemoDir/ClipboardImageUpload'
    Vue.prototype.$appContextPath = '/kjwikig';
  </script>
  <!-- axiosのロード -->
  <script type="text/javascript" src="/kjwikig/js/axios.js"></script>

(中略)

    <!-- vueにマウントするターゲットのdiv。子要素は一つだけになるように無駄なdivを入れている。目印の class も指定。 -->
    <div id="app_form_editsub_0" class="div_app_vue_ctrl_v_img">
      <div>
        <form class="forminput" name="regist" method="post" action="/kjwikig/kjwikiedt">

          <!-- 問題のテキストエリア。初期データが既に mustache 形式を含んでいる。目印の class も指定。 -->
          <textarea name="page" wrap="soft" rows="20" v-model="textareavalue" v-on:paste="handlePaste"  class="textarea_app_vue_ctrl_v_img">

テキストエリアの中身。
{{uploadfileref(image.png)}}
みたいな、Mustache形式なんだけどwikiのplugin表記が入ってくる。

</textarea><br>
          <input type="submit" value="保存する">
        </form>
        <div v-show="vue_message">{{ vue_message }}</div>
      </div>
    </div>

(中略)

  <!-- 自作のJavaScriptロード -->
  <script type="text/javascript" src="/kjwikig/js/imagePaste.js"></script>

//
// テキストエリアに対して画像をペーストすると、自動的にアップロードした上で、画像へのリンクを貼る
//
// 参照  https://imatomix.com/imatomix/notes/1509535920 マークダウンエリアへの画像の直接入力 by Keita Imatomi
//
//  実行前に以下のデータを設定しておくこと
//  * Vue.prototype.$appName ... WikiName を設定しておく
//  * Vue.prototype.$appContextPath  ... アップロード先のベースURL
//
//  textareaの中に {{ Mustache }} があると発狂するので、マウント前に innerHtml の内容を空にする。マウント後に初期化関数経由でデータを投入する。
//
// 2018.12.15
//


var el_app_vue_upload = document.querySelector(".div_app_vue_ctrl_v_img");
var el_app_vue_upload_textarea = document.querySelector(".textarea_app_vue_ctrl_v_img");
if (el_app_vue_upload != null && el_app_vue_upload_textarea != null) {
    var vm_form_upload_0 = new Vue({
        data: {
            vue_message: 'from vue: Vue version ' + Vue.version,
            textareavalue: ''
        },
        methods: {

            // textareaデータを初期化する
            initTextData: function (value) {
                console.log("enter initTextarea.")
                var textarea = document.querySelector('.textarea_app_vue_ctrl_v_img')
                var pos = textarea.selectionStart
                pos = 0
                // update v-model
                this.textareavalue = value
                // update DOM
                textarea.value = value
                textarea.selectionStart = pos
                textarea.selectionEnd = pos
            },

            // imageデータをpostする
            postImage: function (formData) {
                console.log("form post path is " + Vue.prototype.$appContextPath + "/kjwikiuploadapi")
                axios
                    .post(Vue.prototype.$appContextPath + "/kjwikiuploadapi", formData)
                    .then(function (response) {
                        var textarea = document.querySelector('.textarea_app_vue_ctrl_v_img')
                        var sentence = textarea.value
                        var len = sentence.length
                        var pos = textarea.selectionStart
                        var before = sentence.substr(0, pos)
                        var after = sentence.substr(pos, len)
                        for (var image of response.data.images) {
                            // var word = '![image](' + image + ')' // for markdown
                            var word = '{{uploadfileref(' + image + ')}}' + "\n"
                            sentence = before + word + after
                            // update v-model
                            this.textareavalue = sentence
                            // update DOM
                            textarea.value = sentence
                            textarea.selectionStart = pos + word.length
                            textarea.selectionEnd = pos + word.length
                            this.vue_message = "from Vue : uploaded " + image + " and link is pasted"
                            console.log("from Vue : uploaded " + image + " and link is pasted")
                        }
                    })
                    .catch(function (error) {
                        console.log(error)
                        this.vue_message = "axios post error."
                    })
                    .then(function (response) {
                        // always done
                    })
            },

            // pasteされた際のフック
            handlePaste: function (e) {
                var items = e.clipboardData.items
                var formData = new FormData()
                this.vue_message = 'from vue: pasted.'
                formData.append('name', Vue.prototype.$appName)
                for (var item of items) {
                    if (item.type.match('image.*')) {
                        this.vue_message = 'from vue: image data pasted.'
                        formData.append('note', item.getAsFile())
                    }
                }
                if (formData.has('note')) {
                    this.postImage(formData)
                }
            }
        }
    })
    // マウント前にテキストエリアの内容を保存
    var tmp_form_upload_0_textvalue = el_app_vue_upload_textarea.value
    // テキストの中に {{ Mustache }} があると異常動作するので、テキストは消しておく
    el_app_vue_upload_textarea.value = ''
    el_app_vue_upload_textarea.innerHTML = ''
    el_app_vue_upload_textarea.pos = 0
    // マウント実行
    vm_form_upload_0.$mount(el_app_vue_upload)
    // vmの中のv-modelのデータに値をコピーする初期化関数呼び出し
    vm_form_upload_0.initTextData(tmp_form_upload_0_textvalue)
}

Vue.jsのtwo way データバインディングって、 HTML側の指定をガン無視(checkbox, radio)したり、 テキストエリアの初期化がHTMLからできなかったり、 なんか足りない感じ。

まっさらのformから編集開始するなら良いんだけど、登録済みの情報の編集画面とかどうすんのかな。 axios APIで既存データを個別に取得してモデルデータに展開すんのかな。

■参考文献 Vue.js

この規模の翻訳やってるって凄いなこれ...

■参考文献 Vueで使われているテンプレートエンジン Mustache 記法について

Vueで使われているのは本家Mustacheとは違うみたいで、単体のMustacheテンプレートエンジンがある模様。

今回は {{ Mustache }} 記法の誤爆発動で苦しんだけど、記述方法自体は色々できるっぽい。

Mustacheはロジックレスなテンプレートエンジンと言うことで、ループ展開も {{ #items}} 〜 {{ /items }} みたいな記法で済ませる根性は割と好きw


■ 宇宙暦 2018.12.09

http://www.ceres.dti.ne.jp/~george/jdiaryB81201.html#20181209

2018.12.09(日) Docker for Windows (CE) stable版 新しいのでた (Docker Community Edition 2.0.0.0-win78 2018-11-19)

Docker for Windows (CE) stable版 新しいのでた (Docker Community Edition 2.0.0.0-win78 2018-11-19)

tag: docker-for-windows

今回からバージョンの付け方が変わるらしい。 Docker 18.09相当のようだ。

今回のリリースでは大きな変更はなくマイナーチェンジ版とのこと。

2018.12.09(日) ssh経由でrsyncする際に、向こう側のホストでsudoする

ssh経由でrsyncする際に、向こう側のホストでsudoする方法

tag: rsync,sudo,rsync-path

ssh経由のrsyncで外部ホストのバックアップを取る場合、sshで入れるユーザーはrootではなくてubuntuとかになっている。

ubuntuユーザーのままだとパーミッションの関係でバックアップできないファイルが結構でてくるので、ubuntuユーザーでsshしてroot権限でrsyncバックアップする時の小技。

相手側のホストでsudo rsyncはパスワードなしでできるようにあらかじめ設定しておいて、 --rsync-path="sudo rsync" と指定する。

以下実例。

export LANG=ja_JP.UTF-8
rsync --progress -av -e "ssh " --rsync-path="sudo rsync" --delete --exclude .ssh/  george@${FROMHOST}:/home/george/    /newdisk/rsync/home/george/

old day diaries...


日記ファイルリスト最新100件


Copyright(c) 1996-2019 George(小濱 純). All rights reserved.
私の作成したページへのリンクはご自由にどうぞ。
このページに間違いや要望などがありましたら george@yk.rim.or.jp まで御連絡ください。
メール本文に 6020-5440-3372 と書いて頂くと、ウチのSPAMフィルタを通過できます(2009-06-14から2019-12-31まで)。

[ホームページ] [日記] [日記ファイル一覧] [読んでいる日記] [FreeBSD] [FreeBSD LINK] [検索]

home: <george@yk.rim.or.jp> or <george@ceres.dti.ne.jp>
(I am using white list SPAM filter. To avoid it, please write 6020-5440-3372 in mail body. This key word is valid since 2009-06-14 until 2015-12-31.)