2017-10-01から1ヶ月間の記事一覧
https://t.co/xgYQnFY6hO.presence || 'none'でいけそうです— Pocke(ぽっけ) (@p_ck_) 2017年10月27日 Object#present メソッドが『present? が true なら self を、そうでないなら nil を返す』という挙動になっているので、こんな感じにかけるぽい。 めち…
やりたかったので覚書。 #remove メソッドで自身を削除することが出来ます。 コード require "nokogiri" html = <<EOS <body> <div> <a></a> </div> <br> <a> <br> </a> <br> <div></div> <br> </body> EOS doc = Nokogiri::HTML.parse(html).at(:body) # 最初に見つかった <div> を消す doc.at(:div).remove puts doc puts "-" * 20 # 全</div>…
以下のような Object が保持してる配列をいい感じに展開したかった。 元データ const obj = [ { name: "name1", children: [ { name: "name2" }, { name: "name3", children: [ { name: "name4" }, { name: "name5" }, ] }, ], }, { name: "name6" } ] 結果 …
JavaScript 界隈では常識だと思うんですが、知らなかったので覚書。 配列のソート行う Array.prototype.sort() 関数は、 compareFunction (比較関数) が与えられなかった場合、要素はそれぞれの文字列に変換したものを比較して辞書 (あるいは電話帳。数的で…
C++11 では __func__ という識別子が追加され、関数名が文字列で取得する事が出来ます。 #include <iostream> namespace my{ template<typename T, typename U> auto plus(T a, U b){ // 現在の関数の名前を取得できる std::cout << __func__ << std::endl; return a + b; } } int main(){ std:</typename></iostream>…
例えば、JavaScript で minify されているコードは1行が途轍もなく長いです。 こういうコードを Vim で開く場合、シンタックスハイライト回りが非常に遅く、Vim 自体が重くなってしまう事があります。 'synmaxcol' を設定する そのような場合に 'synmaxcol' …
第33回 PORTもくもく会に行ってもくもくするついでに LT してきました!! もくもく もくもく会っていうことで一応 Ruby のコードを書く予定だったんですが、結局午後からはほとんど LT のスライドを書いてました…。 いや、スライド自体は事前に用意していた…
Ruby 2.5 では Object#yield_self というメソッドが追加される予定です。 これは以下のような実装になっています。 class Object def yield_self yield(self) end end 平たく言うと『ブロックの戻り値を返す #tap』って感じですね。 何が嬉しいのか この手の…
node.js の Path の mkdirSync でディレクトリを作成する場合、階層のディレクトリが存在しない場合は新しいディレクトリはつくってくれません。 const FS = require("fs-extra"); // hoge, foo, bar というディレクトリは存在しない場合 FS.mkdirSync("./ho…
C++17 で std::apply という関数が新しく追加されます。 これは『タプル型を展開して関数の引数として渡す』という関数になります。 #include <tuple> #include <iostream> int main(){ auto print = [](auto id, auto name, auto age){ std::cout << "id:" << id << " name:" </iostream></tuple>…
昨日書いたオブジェクトのコピーですが、lodashというユーティリティライブラリを使うのが手っ取り早そう // npm install lodash -g const _ = require("lodash"); const obj = { // Object のプロパティ name: { sei: "yamada", mei: "tarou" }, age: 24 };…
さて、JavaScript ではオブジェクトの値を代入した場合に参照としてコピーされます。 const obj = { name: "tarou", age: 24 } // obj を代入する const other = obj; // コピーした値を変えると other.name = "hanako"; other.age = 17; // コピー元のオブ…
JavaScript でセミコロンを付けるべきか否かっていうは割と宗教的な違いがあると思います。 じゃあ、実際セミコロンをつけなかった場合にどういう弊害があるのか、というのを簡単に調べてみました。 その中で気になった記述をいくつかピックアップしてみます…
コンストラクタで引数を受け取ってメンバ変数を初期化する場合、 struct X{ X(int _value) : value(_value){} int value; }; みたいに引数名に _ prefix/suffix をつけているコードをたまに見かけます。 しかし、実は引数名はメンバ変数名と同じでも問題なく…
発表から一週間以上経ってしまっているんですが、発表中の発言に一部誤りがあったので訂正と補足。 pattern-match を使っているコードを説明する時に 「pattern-match は using PatternMatch をすることで match と with が使えるようになり〜」 と発言して…
C++17 では構造化束縛という言語機能が追加されました。 これは std::tie のように std::tuple などを個別に変数で受け取る事が出来る機能です。 auto homu = std::make_tuple(1, "homu", 14); // std::tuple の要素を個別に受け取る auto [id, name, age] =…
npm install で github のリポジトリを指定してインストールする方法の覚書。 $ npm install osyo-manga/thomash-node-audio-metadata また #{branch 名} を付けることで任意のブランチからインストールすることも出来ます。 $ npm install osyo-manga/thoma…
覚書っていうか情報共有というか。 Vim の syntax が突然オフになる現象にお困りの方へ* パッチ 8.0.0647~8.0.1132 の方 → 8.0.1133 以降にアップデート* 8.0.1133 以降の方 → redrawtime の値をデフォルト値に戻してみて下さい— mattn (@mattn_jp) 2017年9…
かなりマイナーなネタですが、element-ui の tree コンポーネントで表示されるノードをカスタマイズしてみたいと思います。 環境 Vue.js : v2.4.4 element-ui : v1.4.6 コード HTML <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="https://unpkg.com/element-ui@1.4.6/lib/theme-default/index.css"> </head> <body> </body></html>
次のように JavaScript でオブジェクトのキーに変数を使おうとしても当然ですが変数は展開はされません。 const key = "age"; const value = 14; const obj = { key : value }; console.log(obj); // => { key: 14 } 通常このような場合は obj[key] = value …
Ruby の #class_eval はクラスオブジェクト専用、#module_eval はモジュールオブジェクト専用のメソッドだと思っていたのですが、実は名前が違うだけで同等のメソッドだったみたい。 検証コード class C end C.class_eval { def homu end } # クラスオブジェ…
表参道勢でもないし、RubyKaigi にも参加していませんが、タダ飯に惹かれていろいろと思うところがあり参加&発表してきました。 発表内容は以下のような感じ。 表参道.Rb #27 pattern-match の一部を読む from pink_bangbi 内容はやきとりいさんが RubyKaig…
今までライブリロードといえば gulp を使っていたんですが、 『動作確認用のサンプルコードとかでいちいち gulpfile.js を用意するのめんどいなー』 と思い、もっとお手軽にライブリロード出来ないか探していたんですが Browsersync というのがよさそうでし…
Vue.js + UIkit でアイコンを表示させようとしたら2つ表示される事があったので対処方法を覚書。 再現する環境 Vue : 2.4.4 UIkit : 3.0.0 beta 30 jQuery : 3.2.1 再現コード <html> <head> <title>Welcome to Vue</title> </head></html>