shonen.hateblo.jp

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

htmlの要素の変化を検知する

jQuery中.

個人的な事情で必要になったので,簡単に調べた.

やりたいこと

javascriptによって,htmlのdomの構造が書き換えられたとき,それを検知したい.

結論

MutationObserverというものがあるので,これを使う.

developer.mozilla.org

(new MutationObserver(()=>{ console.log("detected!"); }))
    .observe(document.documentElement, { childList: true, attributes: true, subtree: true });

document.documentElement の子要素に変化があったとき,{ console.log("detected!"); } を実行する. documentElementとは,documentのルート要素

上のコードを実行した後,コンソールに下のコードを打ち込んでみると,detected!と表示されるはず.

document.documentElement.append(document.createElement("span"));
続きを読む

標準入力からスペース区切りで値を拾うEnumerableな何か

競技プログラミングで与えられる入力は半角スペース・改行の両方で区切られることが多い.

そこで,半角スペース・改行で区切って値を拾ってくるEnumerableなクラスを書いた.

class In
    include Enumerable
    def initialize(io)
        @io = io
        @buff = []
        self
    end
    def shift
        return @buff.shift unless @buff.empty?
        return nil         unless l = @io.take(1).first
        return (@buff = l.chomp.split).shift
    end
    def line
        b = @buff; @buff = []; b
    end
    def each
        r = shift
        while r
            yield r
            r = shift
        end
    end
end
Cin = In.new(STDIN)


@n,@m = Cin.take(2)
@w = Cin.take(@n.to_i)
@e = @m.to_i.times.map{Cin.take(2)}


instance_variables.each do |v|
    puts "#{v} => "
    p instance_variable_get v
end

動いている. IOクラスのwrapperっぽい実装になっているのは,なんとなく.

エンジニア・プログラミング本まとめ

個人メモです.あまり読めてない本があるので,その反省として.

index

センス

  • 技術者のためのテクニカルライティング
  • ノンデザイナーズ・デザインブック
  • リーダブル・コード
  • プリンシプル・プログラミング

言語

技術

続きを読む