久しぶりのコントリビュート

コロナ騷ぎの中、久しぶりにプルリクエスト作った。

3つ!

簡単な修正ばかりだけど、わかってもらえるような英語を書けているかが不安。。 うけとってくれるといいな。

virtualboxでclipboardが共有されない問題

久しぶりにvirtualboxで環境作ったらclipboard共有が簡単に出来なかったのでメモ。

結果だけいうと xubuntu19.10をゲストosにしてvirtualbox-guest-x11というパッケージをゲストosでインストールするとclipbard共有が可能になります。

順序だてると以下の通り

  1. virtualboxのメニューから Device - Insert Guest Additions CD Image.. を利用して通常の方法でGuest Addition toolをインストール
  2. guest osを電源off
  3. virtualboxの設定から クリップボード共有双方向 にする
  4. guest osを起動
  5. virtualbox-guest-x11をインストール

この状態でクリップボードの共有が可能になってます。

気になったところ

clipboard共有は結構ハマりやすい?

Investigating shared clipboard problems on X11 guests or hosts というリンクがvirtualboxのトップあたりにあったので、ハマる人多いのかな。

virtualbox-guest-x11のインストールが正解なのかがわかってない

インストール中にこんなメッセージが出てきてた。

設定ファイル '/etc/X11/Xsession.d/98vboxadd-xclient'
 ==> あなたかスクリプトによって設定ファイルが作成されています。
 ==> パッケージメンテナが提供するパッケージにもこのファイルが存在します。
   どうしますか? 以下の選択肢があります:
    Y か I  : パッケージメンテナのバージョンをインストールする
    N か O  : 現在インストールされている自分のバージョンを残す
      D     : 両バージョンの差異を表示する
      Z     : 状況を調査するためにシェルを開始する

通常の方法でインストールしたGuestAddtionの一部を書きかえているような気がするんだけど、virtualboxのアップデートの時に何か良くないことがおこる気がする。。。

なので、おすすめしません。

やった環境

アニメ番組表の取得について調べた

アニメ番組表が欲くって、調べてみた。

テレビとかで表示されるやつってapiで公開されてないんですね。くっそー。

スクレイピングするなら テレビ番組をキーワード検索してSlack通知するならYahoo!テレビが最強(golang+goquery) 。 ただ、今はapiが公開されてた。Annict Developers ありがたやー。

2020-01-31 日報

今日はいろいろやったので箇条書きで。

ruby2.7にするとbyebugってインストールできない?

bundle install 中にエラーでてたなぁ。pryの依存なので、はまってる人多そうだけど、今のところはクリティカルに困ってないので放置。

puppeteerのwaitむずい

Page#waiteForNavigation の記述にwaitとページ遷移させるclickをPromise.allでまとめてねって記述がこんなコードとともにあるので、waitfor全般でこういうことやらなきゃいけないのかと思ってたら、ちがったんですね。

const [response] = await Promise.all([
  page.waitForNavigation(), // The promise resolves after navigation has finished
  page.click('a.my-link'), // Clicking the link will indirectly cause a navigation
]);

ささった言葉

puppeteerのもろもろを調べている時になるほどと思ったのは PuppeteerメモPuppeteerの使いどころ ってところ

コード内では ブラウザの UI 操作 を Puppeteer API に実行させ、 DOM の読み取りや加工は page.evaluate() に流す。

なんとなくこんな風に使ってる時はひどくうまくいく気がする。

各種gitホスティングサービスのissueをどっかにまとめたい(気がした)

過去からの経緯でgithub、bitbucket、gitlabを使っていて、作った当時の流れでそれぞれそれなりにリポジトリがあるんです。それぞれのサービスでissueの機能があるので、ダメなところの備忘録としてissueを使ってるんです。

ただ、各プロジェクトのページを見にいかないと思いだせない。。そして見るのは書いてから数ヶ月後。 まぁわすれるくらいの重要性なのでいいんだけど。

どっかにまとめるとそこ見にいくのになぁ。と一瞬思ったら直後に見るんだろうかと思いかえした。だって見る契機が数ヶ月に1回なんだからねぇ。 重要だったらバラけてても見にいくし、ソース読むからissue見なくてもそこそこ対処しちゃうんですよね。 とこのブログを書きながら思いました。

emacsどれつかえばいいのか問題

emacsを26にするにあたって何をつかっていいのか迷走中です。 brewではbrew caskを使うのがおすすめらしいんだけど、Catalinaにすると ~/Downloads とかが読めないんです。 rubyに許可与えるってような 解決案もでてるんだけど、どのrubyだよって思う。rbenvに入れてるやつは少なくとも効果なし。

そもそもcaskで入れるemacsってどんなconfigureオプションでビルドされたものなんだろ? とかとか半端に知ってるものだら変になやんでしまってます。 比較してくれてるqiitaの記事もみたんだけど、やっぱ迷走。。。

DDSKKのお勉強

今さらなんですが、IMEをDDSKKに変えました。

理由はubuntuemacsIMEをmozcにしてたんだけど、頻繁にon/offをくりかえすとmozc-serverが死んじゃうんです。 後、macだとemacsime-patchを探すのが結構面倒でemacsのアップデートのモチベーションを下げてたような気がするんです。

DDSKKは数年前まで使ってたんで、だいたいはわかるんだけど、細かいところでわかんなくなるのでinfoを読みながらお勉強。

Q で後から変換モードになれるのと、変換候補を表示中に候補を送りすぎちゃった時 x で戻せるのを今日知った。 細かいけど、知らないとイラっとするので、明日から心安らかに仕事が出来るかな。

WordPressをさわってみた

簡単なホームページを作って欲しいと声をかけていただいたので、WordPressをさわってみました。

環境自体はDockerですぐ出来たのでちょー簡単。 DockerHubのWordPressのページ にあるdocker-compose.ymlをファイルをそのまま使うと、localhost:8080でwordpressのページにアクセスできちゃう。いい世の中になりました。

テーマのカスタマイズ方法を理解できれば、それっぽいホームページは本当に10分くらいで出来るんですね。 でも、デザイナーさんは一旦htmlとcssでサイトを作りこんで、それをWordPressのテンプレートに落しこむようなことがデザイナーさんのブログに書いてあった。 やっぱり本職は違うのだなぁ。

ホスティングとなると無料でやるには一手間かけないとだめそう。 WordPress.org で紹介しているのは3つ

でいずれも、無料枠はない。 あと、WordPress.com ってWordPressホスティングサービスがある。まぎわらしい。 WordPress.comは無料枠では独自ドメインが使えないみたい。 今のところhtmlとかを作ってfirebaseにあげる方法が一番有力。

このあたりを参考にやってみようと思います。

最後にこれから試そうとしているテーマはこんなのです。

  • Make
    • drag and drop page builder???高機能そう
  • Responsive
    • 色あいがなんとなく気にいった
  • WP Bootstrap
    • いちばんなれてるから一回はためそう

factory_botの続き

昨日の日記 でfactory_botの文句を言ったんだけど、心を入れかえて、ドキュメントを読んでみました。

callbackという機能があってそれを使うとやりたいことが出来た。(ヤッター)

FactoryBot.define do
  factory :poduct, class: 'Product' do
    after(:build) do |product|
      product.items = [FactoryBot.build(:low_item), FactoryBot.build(:high_item)]
  end
  
  factory :low_item, class: 'Item'
  factory :high_item, class: 'Item'
end