shonen.hateblo.jp

やったこと,しらべたことを書く.

Rubyで構造体のようなクラスを生成するメソッドを作成したら既にStructという名前で存在していた件

タイトルの通りです

Rubyで構造体のようなクラスを生成するメソッドを作ったのですが、 実は既にStructクラスというものがあり、作ったメソッドがほぼ無意味になってしまいました。

せっかくなので、供養。

def create_struct(props_name)
  k = Class.new()
  props = props_name.clone
  k.class_eval do
    define_method(:initialize) do |**args|
      props.each do |pr|
        instance_variable_set '@' + pr, args[pr.to_sym]
      end
    end
    attr_accessor *props
  end
  k
end
続きを読む

html5のtemplateタグは、ただ非表示にする普通のタグでは無い

最近記事を書いていなかったので、書き殴った。

templateタグ

HTML のコンテンツテンプレート (<template>) 要素 は、すなわちページの読み込み時にすぐには描画されないものの、後で JavaScript を使用してインスタンスを生成できる HTML を保持するメカニズムです。

developer.mozilla.org

続きを読む

Android Emulator のコーデックがオーディオコーデックしか無い

無いのかな。

概要

Android API16 以降には android.media.MediaCodec というクラスが居る。
ローレベルなコーデックにアクセスするためのインターフェースで、 ffmpegとかの特別なライブラリを必要とせず動画を展開・圧縮できる。

使い方は書かない。というか、勉強中なので書けない。

問題

以下のコードで、コーデック一覧を取得できる。

    private void hoge() {
        MediaCodecList mcl = new MediaCodecList(MediaCodecList.ALL_CODECS);

        for (MediaCodecInfo mci : mcl.getCodecInfos()) {
            Log.d(TAG, mci.getName());
            for (String type : mci.getSupportedTypes()) {
                Log.d(TAG, mci.getName() + " supports " + type);
            }
        }

    }
続きを読む

Siv3D で自動操縦AIを作成してみた

はじめに

本記事は、Siv3D Advent Calendar 2019 の 15 日目です。

Siv3D を触ってみたので、感想とか、こう実装してみた、という話を書きます。

本当は機械学習導入したかったんですけどね…

もの

ソースはここ

github.com

面倒くさくなって実装も全部ヘッダに書いてます

TL;DR

ゲームよりもゲームの仕組みを作って遊びたいC++17使いにとって Siv3D は超強力

続きを読む

RaspberryPi zero のMACアドレスがランダムになっていたので戻した

現象

リブートする度に、MACアドレスが変わってしまう。

これでは、ラズパイ先生に固定IPを供給出来ない。

原因

network-manager をインストールした。(元からインストールされていたかもしれないけれど。)

NetworkManager には MAC アドレスのランダム化の設定項目があり、デフォルトで有効になっている。

解決策

アンインストールすれば解決できるかもしれないけれど、まあまあ便利なツールなので、妥当な解決策では無い。

以下を /etc/NetworkManager/NetworkManager.conf に追記することで、MAC アドレスのランダム化を無効化できる。

[device]
wifi.scan-rand-mac-address=no

参考

archlinuxのサイトだけれど、NetworkManagerの設定はこちらを参照した。

wiki.archlinux.jp


ここに至るまでに参照したサイトとか。

ランダム化とは関係無かった。固有のMACアドレスの割り振られ方。

boysenberrypi.hatenadiary.jp

g_ether も g_cdc も関係無かった。ドライバかな。

www.raspberrypi.org

matoken.org

MAC アドレス偽装。色々な方法があるんですね。

wiki.archlinux.jp