airflowでchromeが動かないとき

エラーログ "DevToolsActivePort file doesn't exist” 解決策 options.addArguments("--no-sandbox"); stackoverflow.com

ubuntu18でpipが使えなかった。

解決策 dhonuk.com

Seleniumでウィンドウの端までスクロールする

seleniumでページ全体のスクリーンショットを撮る場合はこっちのほうがいいです。 nonenull.hatenablog.com PhantomJSが現役だった頃は簡単に全画面スクリーンショットが撮れたんですが、FirefoxやChromeだと難しい。 そこで、全画面スクリーンショットの代…

amazonのアフィリエイトコードからasinコードを抜き出す

text = """ """ hoge = text.split("asins=")[-1] asin_code = hoge.split("&bc1=")[0] print(asin_code)

UbuntuのGUI環境が壊れた

目次 症状 直し方 症状 UbuntuのGUI環境が壊れました。 具体的に言うと、起動直後にマウスカーソルは動くんですが、他がフリーズする状態です。 幸いキーボード・ショートカットは効いたので、シェルを立ち上げて作業しました。 直し方 sudo dpkg-reconfigur…

Android StudioのADB IDEAがかなり便利なのでご紹介

簡単に言うと、データを消したり再起動したりが便利にできるプラグインです。 詳細は以下に詳しいです。 AndroidStudio からアプリを停止したりデータを消したりアンインストールできるプラグイン「ADB Idea」

Seleniumでボタンをクリックするときは、ボタンの文字列を取得するのがいい

Seleniumでボタンやチェックボックスをクリックしたい時ですが、CSSセレクター等で指定してやるよりも、ボタンの文字列を指定してやるほうがいいです。 理由 動的にHTMLが生成される場合など、セレクターは構造の変化に弱い うまく動かなかった時に文字列の…

seleniumでselectボックスじゃないけどリスト形式になっていて、タイトルで選択状態を変えたいとき

みたいなややこしい場合があります。 セレクトボックスなら、Selectクラスを使うのが楽です。 そうじゃない場合、親の要素を取ってきて、子要素をリスト化するのがいいです。 ざっくりこんな感じ parent = driver.find_element("element") elements_list = p…

seleniumでselectボックスじゃないけどリスト形式になっていて、タイトルで選択状態を変えたいとき

みたいなややこしい場合があります。 セレクトボックスなら、Selectクラスを使うのが楽です。 そうじゃない場合、親の要素を取ってきて、子要素をリスト化するのがいいです。 ざっくりこんな感じ parent = driver.find_element("element") elements_list = p…

音声ファイルを再生する

MediaPlayerを使うとうまくいった。 1. res配下にrawファイルを作る 2. mediaplayerを使う 繰り返し再生する場合はsetOnCompletionListener を使う必要がありそう。 setOnCompletionListenerと、setOnErrorListenerの実装の仕方。java、android用 ( パソコン…

seleniumで要素までスクロールする処理

qiita.com こちらがとても使い勝手が良かったのでおすすめです。

pythonでディレクトリが無ければつくる

import os if not os.path.exists(path_to_dir): os.mkdirs(path_to_dir) os._exists というメソッドもあって、少し詰まっていた。

SharedPreferencesにSetを保存する処理で詰まった

解決策 https://qiita.com/yasumodev/items/016b40b3c817cfec75a4 Kotprefという便利なSharedPreferencesのライブラリがあったんですが、StringSetに値を入れて、Killすると入れた値が保存されない現象に遭遇した。 これは自分の使い方が悪かったのかもしれ…

Activityがバックグラウンドに入るタイミングでonDestoryが呼ばれる

nonenull.hatenablog.com という現象があった。 1つのActivityだけがある画面ではActivityとApplicationの生存期間が等しいんだと思っていたけど、どうやら違うみたい。 バックグラウンドに入るときに、バックキーを押したらonDestroyが呼ばれる。 ホームボ…

RxJava2のCompositeDisposableのdisposeとclearの使い分け

背景 ViewModelをDaggerでInjectしたときに、ActivityのonDestoryでCompositeDisposableをdispose()していたら不具合が出た。 というのも、ActivityがonDestoryされてもViewModelのインスタンスはAppilcationのライフサイクルで生成と破棄されるので、ViewMo…

Androidアプリ公開用のリソース作成サービス

いぜんはInkscapeで作っていたけど、Webサービスを使ったほうが簡単だった。 用意するリソース アプリアイコン ストア用ヘッダー画像 スクリーンショット アプリアイコン Android Asset Studio - Launcher icon generator ヘッダー画像 Android Feature Grap…

Admobが表示されない場合

Admobのテストバナーは表示されるが、実際のバナーが表示されない 1. 支払い設定を済ませていない 2. テストデバイスの設定をしていない 支払い設定を済ませていない stackoverflow.com テストデバイスの設定をしていない android-note.open-memo.net

droidkaigi2018公式アプリをビルドする

cloneしてbuildしようとしてもうまくいかなくて詰まってたので。 settings.gradleのrepositoriesに↓を追加する。 rootProject.buildFileName = 'build.gradle.kts' qiita.com

TextViewのDatabindingでStringリソースを使う

// String <string name="name">My Name is %s</string> // レイアウト xml android:text="@{String.format(@string/name, viewModel.name.value)}"

Androidのサポートライブラリバージョンを一括で管理する

// build.gradle(Project) buildscript { ext.kotlin_version = '1.2.41' ext.supportLibVersion = '27.1.1' } // build.gradle(Module) implementation "com.android.support:appcompat-v7:$supportLibVersion" implementation "com.android.support:design…

Androidのパッケージ名を変更する方法

1. パッケージをリネームする 2. app の gradle の applicationId を変更する 参考: dev.classmethod.jp

Threeten ABP で

LocalDateをString型で永続化した場合などにLocalDate型にパースするときに val dateString = LocalDate.now() val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd") LocalDate.parse(dateString, formatter)

Threeten ABP で2つの日付の差を出す

ChronoUnit.DAYS.between(fromDate, toDate)