blog.monophile.net

コンピュータのこととかのメモ。

Takaaki Yamamoto

東京工業大学において計算機科学と応用数学を学び、 情報科学芸術大学院大学[IAMAS] においてメディア表現を専攻し修了。 現在は digitiminimi Inc. において、インフラエンジニアとして生計をたててている。

work

各種システム構築と管理を承ります。

Cloud PlatformOpenstack, GCP, AWS, Azure, ...
Openstackkeystone, glance, cinder, swift, neutron, nova, ...
VirtualizationQEMU+KVM, LXD/LXC, Docker, ...
OSDebian GNU/Linux, Ubuntu, CentOS, ...
NetworksIPSec, L2TP, VXLAN, WirelessAP, ...
WebAppsWordPress, GitLab, Redmine, ...
Configuration ManagementAnsible, Terraform, ...
MonitoringNagios, Munin, ...

posts

リフレクションを使う

リフレクションを使ってDartのオブジェクトをhtmlのtable形式でdocumen.bodyに追加します。 使い方はdumpobjにインスタンスを入れるだけです。

code

@MirrorsUsed(override: '*')
import 'dart:mirrors';
import 'dart:html';

Map<Symbol, String> o2m(Object obj) {
  InstanceMirror ins = reflect(obj);
  ClassMirror cls = ins.type;
  Map<Symbol, String> ret = new Map<Symbol, String>();
  for (var m in cls.declarations.keys) {
    try {
      ret[m] = ins.getField(m).toString();
    } catch (e) {
      ret[m] = e.toString();
    }
  }
  return ret;
}

TableElement m2t(Map m) {
  TableElement table = new TableElement();
  for (var k in m.keys) {
    table.append((new TableRowElement())
        ..append(new TableCellElement()..text = k.toString())
        ..append(new TableCellElement()..text = m[k].toString()));
  }
  return table;
}

TableElement dumpobj(Object obj) => m2t(o2m(obj));

void main() {
  DateTime now = new DateTime.now();
  document.body.append(dumpobj(now))
}