jQueryを使って今見ているページのテーブルの特定の列を消す

管理画面なんかのHTMLを見ていると、テーブルで書かれたデータの特定の行を消して見たいことがある(そもそもUI的にイケてないってことなんだけど...)。 テーブルに限らないけど、特定のDOMを消したい場合どうするか。

最近なら document.querySelector() 使えば簡単にできるのかな?最近のJavaScript詳しくなくて分からないが、ひとまずjQueryで解決する。

まずjQueryをページに動的にロードする。

var script = document.createElement("script");
script.src = "https://code.jquery.com/jquery-latest.min.js";
document.body.appendChild(script);

あとはjQueryセレクタ使って検索して remove()を呼ぶ。

2個めのテーブルの7列目を消す

$("table:eq(1) tr").find("th:eq(6), td:eq(6)").remove();

2個めのテーブルの7列目から13列目までを消す

$("table:eq(1) tr").find("th:gt(6):lt(13), td:gt(6):lt(13)").remove();

参考

Load javascript via Firebug console - Stack Overflow

jQuery remove table column (by column number) — SitePoint

【jQuery】要素を指定するセレクタの使い方 まとめ | Web制作会社スタイル

ZonedDateTimeから日付の文字列を取り出す

よく使うのでメモ。

@ val d = ZonedDateTime.now(ZoneId.of("UTC"))
d: ZonedDateTime = 2018-02-09T06:36:14.410Z[UTC]

"UTC"の部分には"Asia/Tokyo"などタイムゾーンの文字列を入れられる。

minusDays plusHoursなどで演算ができる。

@ d.minusDays(1)
res5: ZonedDateTime = 2018-02-08T06:36:14.410Z[UTC]

フォーマッターを定義する。

@ val f = DateTimeFormatter.ofPattern("yyyy-MM-dd")
f: DateTimeFormatter = Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)

yyyy/MM/dd HH:mm:ss が年月日時分秒に対応する。

あとはZonedDateTimeのインスタンスにフォーマッターを渡せばOK

@ d.format(f)
res8: String = "2018-02-09"

参考

qiita.com

CircleCI 2.0 ミニマムスタート

2.0 Docs - CircleCI

version: 2
jobs:
  build:
    docker:
      - image: circleci/openjdk:8-jdk

    steps:
      - checkout
      - run: sbt test

最低限のコンポーネントはこれだけ。

キャッシュを使うときは save_cacherestore_cacheをstepsに追加する。

- save_cache:
  paths:
    - ~/.m2
    - ~/.sbt
  key: v1-dependencies-{{ checksum "build.sbt" }}
- restore_cache:
  keys:
    - v1-dependencies-{{ checksum "build.sbt" }}

ジョブの名前は buildがデフォルト。Workflowがない場合はこの名前のジョブが必須。それ以外のジョブ名をつけた場合はAPIからキックできる。

Running Jobs With the API - CircleCI

curl -u ${CIRCLE_API_TOKEN}: \
     -d build_parameters[CIRCLE_JOB]=deploy_production \
     https://circleci.com/api/v1.1/project/<vcs-type>/<org>/<repo>/tree/master
  • vcs-typeはgithub
  • CIRCLE_API_TOKENはProject Settingsの Permissions -> API Permissions からCreate Tokenして入手できる。

外部URLのレイテンシを計測するhttping

d.hatena.ne.jp

macでもbrewで入れられる。

brew install httping

今回はcircleci.comのレイテンシが知りたかった。日本のGCPにあるサーバーに対してGatlingを実行したらレイテンシがすごく高くなってしまったので。

ᐅ httping circleci.com 
PING circleci.com:80 (/):
connected to 35.170.12.60:80 (385 bytes), seq=0 time=496.61 ms
connected to 52.0.187.225:80 (385 bytes), seq=1 time=376.41 ms
connected to 52.45.126.22:80 (385 bytes), seq=2 time=456.91 ms
connected to 34.196.235.151:80 (385 bytes), seq=3 time=355.94 ms
connected to 35.170.12.60:80 (385 bytes), seq=4 time=406.11 ms
^CGot signal 2
--- http://circleci.com/ ping statistics ---
5 connects, 5 ok, 0.00% failed, time 6674ms
round-trip min/avg/max = 355.9/418.4/496.6 ms

けっこうレイテンシ高い。

Shallow cloneを使うと素早くcloneできる

circleci 2.0を使おうとしている。

engineer.crowdworks.jp

デフォルトのcheckoutステップは、clone & fetchでチェックアウトするようになっています。そして、clone済みのリポジトリをキャッシュしておき、2回目以降はそれを用いるようにします。3 しかし、リポジトリが巨大だとキャッシュのリストアに時間が掛かってしまいます。 そこでshallow cloneで取得するようにしたところ、キャッシュが不要なほどに速くなりました。

shallow cloneというのがあるのを知った。

kakakakakku.hatenablog.com

qiita.com

koduki.hatenablog.com

場合によってはキャッシュ使うよりshallow cloneするほうが速いケースもありそう(併用できる?)

サブカテゴリ内でトップNでフィルタする

Tableauを使っていて、あるカテゴリのサブカテゴリの中でトップNでフィルタしたい、というケースがある。 例えば広告配信でいうとアドグループxメディアのImp数、Click数などの指標をみるときに、「アドグループ単位でのメディア配信実績トップ10」とかを見たいことがある。

カテゴリ内のトップ N を探す | Tableau Software

index() を使う。

  • 計算フィールドを新しく作って、それを index()とし、サブカテゴリのカラムの前に置く。
  • そのフィールドをいったん「不連続」に変更する。(なぜなのかは不明)
  • 表計算の編集」を選択し、任意の並び替えを設定する。
    • 再開間隔、では大カテゴリのほうを選ぶ。これによって大カテゴリごとにインデックスが1からスタートするようになる。
  • フィールドを「連続」に戻し、フィルタへドラッグする。
  • 任意のデータ個数で絞る。

GUIでクエリするとき、StandardSQLとして実行する

BigQueryでクエリを打つとき、まずはGUIから試すことが多いけどGUIだとデフォルトはLegacySQLとなっていて、StandardSQLに切り替えるにはOptionsのUse Legacy SQLチェックボックスをオフにしないといけない。

それは面倒なので、SQL文の冒頭に #standardSQL とつければStandardSQL文として解釈してくれる。

標準 SQL を有効にする  |  BigQuery  |  Google Cloud Platform

#standardSQL
SELECT  jsonPayload.message FROM foo.bar LIMIT 1000