AngularJS 1.x のデバッグ
Developer ToolsのコンソールでDIされるオブジェクトを確認したいとき:
> angular.element(document.body).injector().get('...')
sheepfilms
Claire Keane
Aqua Utopia|海の底で記憶を紡ぐ
almost home

blake kathryn

Discoholic 🪩
Cosmic Funnies
Cosimo Galluzzi

ellievsbear
$LAYYYTER
No title available

Product Placement
Alisa U Zemlji Chuda

roma★
Mike Driver

@theartofmadeline
Game of Thrones Daily
Keni
Lint Roller? I Barely Know Her

祝日 / Permanent Vacation
seen from United Kingdom
seen from Germany
seen from United States
seen from United States
seen from Malaysia
seen from United States

seen from Germany

seen from Indonesia
seen from United States
seen from United States

seen from United States
seen from Poland

seen from United States
seen from Germany

seen from United States

seen from United States
seen from Italy
seen from Sweden

seen from United Kingdom

seen from Malaysia
@tadayosi
AngularJS 1.x のデバッグ
Developer ToolsのコンソールでDIされるオブジェクトを確認したいとき:
> angular.element(document.body).injector().get('...')
Dockerで `x509: certificate signed by unknown authority` と出た場合の対処法
たとえばリモートレジストリからイメージをpullしようとしたときに、こんなエラーが出た場合:
$ docker pull <image-url> Error response from daemon: Get <registry-url>: x509: certificate signed by unknown authority
リモートレジストリのCA証明書がDockerに設定されていないことが原因。以下のようにしてCA証明書をDockerに登録する:
$ sudo mkdir -p /etc/docker/certs.d/<registry-url> $ sudo cp <cacert-file> /etc/docker/certs.d/<registry-url>/ca.crt
Operator SDK生成プロジェクトのディレクトリ構成
Operator SDKが生成するプロジェクト雛型のディレクトリ構成についてのメモ。 https://sdk.operatorframework.io/docs/golang/references/project-layout/
ファイル/ ディレクトリ 説明 build/ OperatorをビルドするためのDockerfileとスクリプト。 cmd/ Operatorのメインプログラムmanager/main.goがある場所。マネージャを生成して、pkg/apis以下にあるCRDを全て読み込み、pkg/controller以下にあるコントローラを全て起動する。 deploy/ CRD、RBAC、OperatorデプロイメントのためのYAMLマニフェストファイル。 pkg/apis/ CRDに関するAPIを定義する場所。pkg/apis/<group>/<version>/<kind>_types.goを編集してリソースタイプ毎のAPIを定義し、コントローラからはこのパッケージをインポートしてそれらのリソースタイプを監視する。 pkg/controller/ コントローラの実装。pkg/controller/<kind>/<kind>_controller.goを編集して、そのkindのリソースタイプを処理するための調停(reconcile)ロジックを定義する。 vendor/ Go importで使われる外部依存モジュールのコピーが置かれる場所。Go Modulesが管理する。プロジェクトを--vendorを付けて初期化したか、go mod vendorを実行しない限り、存在しない。 go.mod go.sum Go Modulesマニフェストファイル。
ちなみに、Operatorプロジェクトを生成するのは以下の通り。
$ operator-sdk new <operator-name>
ターミナルからCaps Lockを入力する
xdotoolを使う。
$ sudo dnf install xdotool $ xdotool key Caps_Lock
ActiveMQ Artemisのセキュリティをオフにする
備忘録。
broker.xmlで<security-enabled>をfalseにする
<mybroker>/etc/broker.xml:
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xi="http://www.w3.org/2001/XInclude" xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd"> <core xmlns="urn:activemq:core" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:activemq:core "> <name>mybroker</name> <security-enabled>false</security-enabled>
JAVA_ARGSに-Dhawtio.authenticationEnabled=falseを追加する
<mybroker>/etc/artemis.profile:
# Java Opts JAVA_ARGS=" -XX:+PrintClassHistogram \ -XX:+UseG1GC \ -Xms512M \ -Xmx2G \ -Dhawtio.authenticationEnabled=false \ -Dhawtio.realm=activemq \ -Dhawtio.offline="true" \ -Dhawtio.role=amq \ -Dhawtio.rolePrincipalClasses=org.apache.activemq.artemis.spi.core.security.jaas.RolePrincipal \ -Djolokia.policyLocation=${ARTEMIS_INSTANCE_ETC_URI}jolokia-access.xml \ -Djon.id=amq"
CentOS でデフォルトのカーネルを切り替える
備忘録。
まず現在のデフォルトの確認。
$ sudo grub2-editenv list saved_entry=CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core)
カーネルの一覧を調べて、デフォルトにしたい番号を指定する。
$ sudo grep ^menu /boot/efi/EFI/centos/grub.cfg | awk -F\' '{ print i++ " - " $2 }' 0 - CentOS Linux (3.10.0-957.21.3.el7.x86_64) 7 (Core) 1 - CentOS Linux (3.10.0-957.21.2.el7.x86_64) 7 (Core) ...
$ sudo grub2-set-default 1
コマンドラインでRESTを呼び出す
ちょっとしたRESTサービスのテストをしたいときに、いちいちPostmanを立ち上げるのも面倒。そんなときは、コマンドラインでREST呼び出しができるrestyが便利。 https://github.com/micha/resty
インストール
$ curl -L https://raw.githubusercontent.com/micha/resty/master/resty > resty $ source resty
使い方
$ resty https://reqres.in/api
$ GET /users/1 {"data":{"id":1,"first_name":"George","last_name":"Bluth","avatar":"https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg"}}
$ POST /users '{ "name": "Taro Yamada", "job": "Software Engineer" }' {"{ \"name\": \"Taro Yamada\", \"job\": \"Software Engineer\" }":"","id":"125","createdAt":"2019-03-25T04:00:07.643Z"}
$ PUT /users '{ "name": "Taro Yamada", "job": "Engineering Manager" }' {"{ \"name\": \"Taro Yamada\", \"job\": \"Engineering Manager\" }":"","updatedAt":"2019-03-25T04:08:11.311Z"}
$ DELETE /users/1
jqコマンドと組み合わせるともっと便利。
$ GET /users/1 | jq { "data": { "id": 1, "first_name": "George", "last_name": "Bluth", "avatar": "https://s3.amazonaws.com/uifaces/faces/twitter/calebogden/128.jpg" } }
minishiftにエイリアスを割り当てる
minishiftを使って開発をしていると、minishiftコマンドを打つ回数が多くなる。kubectlに短いエイリアスkを割り当てるテクニックはよく使われるので、同様にminishiftにもmを割り当ててみる。
alias m=minishift source <(minishift completion bash | sed -e 's/minishift/m/g')
minishiftライフがかなり快適になる。macOSでm-cliをすでに導入している人は、m以外のエイリアスを考えないといけない。
Gitのコミット数カウント
git shortlog -sne --no-merges --since='2018-03-01' --before='2019-03-01'
または:
git log --author='Tadayoshi Sato' --since='2018-03-01' --before='2019-03-01' --oneline | wc -l
Steam on Linuxで日本語ゲームを遊ぶ
Steamでは最近Steam Playというのがリリースされて、まだベータ版だがWindowsでしか遊べないゲームもLinuxで遊べるようになった。Steam Playの中はWineが使われている。普段Linuxを使うゲーマーには嬉しい機能だ。
Steamが本気で開発しているだけあって、意外にもかなりのWindowsゲームが普通に動く。しかし日本のゲームの場合の最大の問題は文字化けだった。自分のマシンが英語をデフォルトのロケールにしているからかもしれないが、日本語がすべて文字化けてプレイできなかった。
そのSteam Playの文字化けを直す方法をついに見つけた。 https://github.com/ValveSoftware/Proton/issues/768#issuecomment-432615006
やり方は以下の通り。まず、Steamクライアントからライブラリ(Library)を開き、左サイドのゲームリストから日本語ゲームのプロパティ(Properties)を右クリックで開く。その後、「一般(GENERAL)」タブの「起動オプションを設定...(SET LAUNCH OPTIONS...)」から以下を入力すればOK。
LC_ALL=ja_JP.UTF-8 %command%
これでWindowsにしか対応してない多くの日本ゲームをLinuxで遊べる。日本ゲームのためにわざわざWindowsを用意しなくていいのが嬉しい。
外資系企業の買収
先日、自分が所属する企業が他社に買収される発表があったが、買収される経験は今回が初めてである。しかし、同僚には買収を経験している人たちが普通にいて、中にはここに来るまで買収され続けて来て今回で4度目(IONA → Progress → Red Hat → IBM)なんて猛者もいる。
自分も前職はドイツの会社だったが、自分が入社するちょっと前に米国の会社を買ったばかりで、日本支社は半分以上がそちらの人たちだった。その後も、2年弱の短い在籍期間にも関わらず、もう1社大きな買収をして日本支社もその人たちと合流することになった。
言えることは、外資系企業は買収が日常茶飯事だということだ。翻って、日系企業は食うか食われるかの戦略的な企業買収はそれほど頻繁ではない。伝統的な日系企業に勤めている方で、まわりに何度も企業買収を経験してきた、という人がいったい何人いるだろうか。あったとしても、後ろ向きな経営再建のための合併などの方が多いのではないだろうか。
この違いは深刻だと思う。なぜかというと、戦略的な企業買収の多さは会社のトップの経営層がどれだけ真面目に全力で仕事をしているかをそのまま表しているからだ。
投資の基本だが、リスクを取らなければ大きなリターンを得ることはできない。安全圏からちょっと遅れて投資をしてみたって、利益の出るおいしい部分は既にリスクを取って先に動いた人に占められているからだ。企業買収も同じだ。企業のポジションを良くする最良の買収は、誰よりも先んじて行わなければいけない。そのためには、経営層が常に市場のトレンドを研究して、最良の買収先を常に探していなければいけない。
今回買われる側になった自分の会社も、これまで何度も戦略的な買収を手掛けてきた。自分の会社のCEOが、ワーカホリックに寝る間も惜しんで働いている姿を想像するのは非常に容易だ。いくら何百万ドルという莫大な報酬を貰えるからといって、自分は彼のように働きたいとは思わない(し、彼のように働けるほど自分が優秀だとはとても思えない)。一方、自分が在籍した数少ない日系企業での経験から言って、多くの日系企業のトップがモルモットのように寝る間も惜しんで走り続けているとは到底思えない(孫正義のように一部のカリスマ的な経営者を除いて)。
外資系企業の経営層は報酬を貰い過ぎだ、なんて批判もあるが、日系企業の経営層は逆にそれなりの報酬を受けている割に仕事をしなさすぎだと思う。社内政治、調整に汲々として、万一があったときの頭下げ要員でしかない。日系企業のトップはすごろくのアガリの意識が強いのだろう。昭和はそれで良かったかもしれないが、21世紀には通用しない。
今は明治維新に匹敵するくらいの日本の転換期だと思う。このままトップが変われなければ、これからの日本の経済に繁栄はないだろう。
CentOS 7 でバッテリの残りパーセントを表示する
$ gsettings set org.gnome.desktop.interface show-battery-percentage true
CentOS 7 で natural scrolling が効かない場合
とくに USB マウスなどを使っていて、natural scrolling が効かないことがある。
その場合は、デフォルトで入っている xorg-x11-drv-synaptics をアンインストールして、xorg-x11-drv-libinput をインストールすると上手くいくことがある。
# yum remove xorg-x11-drv-synaptics # yum install xorg-x11-drv-libinput
このあと再起動。
OpenShift on CentOS で registry.access.redhat.com を使う
備忘録。自前の CentOS で oc cluster up などで OpenShift を立ち上げている場合に、registry.access.redhat.com から Docker イメージを取ってこれるようにする方法。
以下のようにして、/etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt をインストールする。
$ sudo yum install python-rhsm-certificates
OpenJDK on Mac
Mac ユーザで Oracle JDK でなく OpenJDK を使いたくなったとき、Google で "openjdk mac" などと検索してもあんまり良い情報が出てこない。とくに Oracle は JDK 7 の提供を止めてしまい、そのせいで Homebrew Cask から java7 が消えてしまったので、Java 7 がいまだに必要で Homebrew からインストールしていた人はかなり困っていると思う。
しかし、実は Azul Systems 社(独自の Java ランタイムを提供している会社)から、Zulu Mac という Mac 向けの OpenJDK ビルドが提供されている。ググラビリティが低いので検索に引っ掛かってこないが、要はこれを使えば簡単にインストールできる。 https://www.azul.com/downloads/zulu/zulu-mac/
Zulu Mac は Homebrew Cask からもインストールできる。
$ brew cask install zulu
OpenJDK 7 も提供されているので、互換性のためにいまだに Java 7 が必要な人でも困らない。
$ brew cask install zulu7
これからは Mac で Java を使いたい場合は、 brew cask install java でなく brew cask install zulu を積極的に使っていった方がいいと思う。唯一の問題は、zulu というキーワードが一見まったく Java と無関係で、知ってる人しかこれが OpenJDK だと気づかないことだ…
Markdown を epub / mobi に変換する
たまに GitHub 上にある *.md ファイルを Kindle で読みたくなることがあるので、その方法をメモ。
ツールとしては pandoc と kindlegen を使う。試しにこの記事を mobi 化してみよう。
https://github.com/toddmotto/angularjs-styleguide/blob/master/typescript/README.md
まず pandoc と kindlegen をインストール。
$ brew install pandoc $ brew cask install kindlegen
次に、ダウンロードした .md ファイルを編集して、eBook 用のメタ情報を追記。これは pandoc 固有の Markdown 拡張表記で、これを元に pandoc がタイトル・著者・日付の情報を eBook に付加してくれる。
% Angular 1.x styleguide (TypeScript) % Todd Motto % 19 November 2016 # Angular 1.x styleguide (TypeScript) ...
pandoc を使って .epub に変換、その .epub を kindlegen を使って最後に .mobi にする。
$ pandoc README.md -o toddmotto-angularjs-styleguide-typescript.epub $ kindlegen toddmotto-angularjs-styleguide-typescript.epub
出来上がった .mobi をメールなどで Kindle に転送すれば、後は読むだけ。
npm link を使った hawtio v2 開発
hawtio v2 はコンポーネントが bower コンポーネントとして複数プロジェクトに散らばっているので、クロス開発が微妙に面倒くさい。そんな場合は、npm link を使うと便利。
hawtio-node-backend$ npm link /usr/local/lib/node_modules/hawtio-node-backend -> /Users/tadayosi/projects/github/hawtio2/hawtio-node-backend hawtio-integration$ npm link hawtio-node-backend /Users/tadayosi/projects/github/hawtio2/hawtio-integration/node_modules/hawtio-node-backend -> /usr/local/lib/node_modules/hawtio-node-backend -> /Users/tadayosi/projects/github/hawtio2/hawtio-node-backend
リンクが張られているかを確認するには、こうする。
hawtio-integration$ npm ls hawtio-node-backend [email protected] /Users/tadayosi/projects/github/hawtio2/hawtio-integration └── [email protected] -> /Users/tasato/projects/github/hawtio2/hawtio-node-backend
UPDATE: この方法は、どうやら npm ベースのコンポーネントには有効だが、bower ベースの hawtio-* コンポーネントには有効でないようだ。要追加調査。