カテゴリ: program

訳あってTerraform CloudのAPI経由でOracle Cloud Infrastructureを構成できるようにならねばならぬ。
いや私自身がパチパチやる訳ではないがやろうと思えば出来る位でないと打ち合わせとかに支障が出るので…。
だが、テラフォームとか火星ゴキブリの漫画でしか知らないのでまずはチュートリアルをやった。
TerraformのOCIプラグインでAvaliable Domainの一覧を取得するサンプルはできた。
https://docs.oracle.com/ja-jp/iaas/developer-tutorials/tutorials/tf-provider/01-summary.htm 
terraformコマンドからTerraform Cloudにログインしてプロジェクトというかオーガニゼーションなる作業単位を作る所もできた。
が、分からん…。
多分LinuxからterraformでOCIのリソースを作る事は先ほどのサンプルの先か、あるいはhttps://community.oracle.com/tech/welcome/discussion/4474281/terraform%E3%81%A7oci%E3%81%AE%E6%A7%8B%E7%AF%89%E3%82%92%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%99%E3%82%8B-oracle-cloud-infrastructure%E3%82%A2%E3%83%89%E3%83%90%E3%83%B3%E3%82%B9%E3%83%89 をやればできると思うのだけれど、同じ事をTerraform CloudのGUI、ひいてはAPIからやるにはどうすれば…。
多分、何とかして.tfファイルやPEMファイルをTerraform Cloudのリポジトリとかに作ってそれを参照して実行する感じなのではないかと想像しているんだけどそこへのギャップがな。

話は変わるがOCIを始め各種プラグインのインストール先ディレクトリは https://qiita.com/ryysud/items/a38bcc856069801878e9 に記載されているパスらしい。


このエントリーをはてなブックマークに追加 mixiチェック

いや前から我がアフィサイト自動更新バッチ群のプログラムは、Eclipse内のプロジェクトの名前もいい加減だし依存関係がスパゲティ状態でいずれ何とかしないといかんとは思っていたが、今回MS932→UTF-8の変更とEclipseの再インストールで結構苦労したので、これはいかん、と覚えているうちに手を付けた。
今まではプロセス毎にプロジェクト作ってたからな…。パッケージやクラス名も雑だからたまに衝突するし。
まずは複数PJから参照されているクラスを共通参照PJに抜き出して依存関係をすっきりさせてビルドが通るようにした後に、JMSサーバ、RESTサーバ、TwitterBot、データ更新バッチ処理、サイトのヘルスチェック、データソートユーティリティにまとめた。どこまでまとめるかはイマイチ方針が無いな。
Eclipseが手助けしてくれるので色々助かるんだが、Eclipseでプロジェクト名を変更したらディレクトリ名も一緒に変更してくれると色々捗るんだけど…なんかそういうオプションは無いのかいな…。
リファクタリング 既存のコードを安全に改善する(第2版)
MartinFowler
オーム社
2019-12-06


このエントリーをはてなブックマークに追加 mixiチェック

日次処理は全部終わったとみてよいだろう…。
それにしても我ながらEclipseのプロジェクト構成が酷いのでいつか整理してまとめねばならぬよな…。
あと、ボットがサーチバン喰らってる隙に、色々改良したい。

このエントリーをはてなブックマークに追加 mixiチェック

やっとこUTF-8化まであと一歩。もう、データ以外はUTF-8化を済ませてあるので( https://nekora.main.jp/comic/thumb_utf8/Ranking/all/ )、後はなにもバグが無ければ来週末に最新データを同期させて環境変数を一つ変更すればOKの筈。
→いやいや。まだハードコーディングされているかもしれない個所を全部チェックが先。
つかこのアフィサイト更新プログラム、長らく開発環境と本番環境の乖離が続いていたが、やっと同期が取れてこれで安心して改良できる。最近矢鱈増えてる「みんなで翻訳」対策とか色々やりたい事が多い。


このエントリーをはてなブックマークに追加 mixiチェック

備忘録。私以外が読んでも何の役にも立たないが、ブログは検索が出来て便利なのよね。
zzzはUTF-8で正しく書きだされている zzz2はSJISで正しく書きだされている(いやここはUTF-8になっていて欲しかった…) zzz3は自称SJISで化けらった。UTF-8で読み直すと化けっぷりが多少マシになる。 zzz4はUTF-8で正しく書きだされている
…とここまで書いて気付いたが、今の設定だとUTF-8になっては不味くてMS932になる筈では…。

このエントリーをはてなブックマークに追加 mixiチェック

PhantomJSがseleniumから消えていたので仕方なくChromeドライバで実装。Chromeは勝手にアップデートするから嫌なんだが致し方ない。
Twitterにログインせず from:@ボットのID で検索して何も引っかからなかったらサーチBANされているので、ファイルにフラグを書き込み、別プロセスはそのファイルを見てサーチBAN中は呟きを自粛、という単純なもの。
TwitterはJavaScriptを駆使していてcurlなどではアクセスできないが、seleniumをPythonから使うと
pagestr=driver.page_source
でブラウザに表示中の文字列は取得できた。
ちなみにタグはclassに意味不明のランダムなものがしばしば入るのであてにならない。

実践 Selenium WebDriver
Satya Avasarala
オライリージャパン
2014-09-18

このエントリーをはてなブックマークに追加 mixiチェック

ブラウザの最新版に追随しているのはChromeのドライバのみ。PhantomJSに至っては消えている。Firefoxは古いバージョンのサポートを続けているのだそうな。
FKU_Gw5UYAMf-pM

とりあえずTwitterにアクセスまではできたが、TwitterのページはJavaScriptでしかもタグが入り組んでいて分析が中々難しい…。表示中のページをセーブすると新たにダウンロードするようでTwitterに弾かれるし。タグとか完全に無視して「〇〇という文字列を含んでいるか?」のチェックが出来ると良いのだけれど。

メモ。以下のclassが、サーチバンされている時にのみ登場するが、間に挟まる謎めいた文字列はアクセスの度に変わる…何なんだ。r-fdjqy7で特定可能?かも?
---
<div dir="auto" class="css-901oao r-14j79pv r-1tl8opc r-a023e6 r-16dba41 r-rjixqe r-1nxhmzv r-bcqeeo r-fdjqy7 r-qvutc0" data-testid="empty_state_body_text">入力した単語の検索結果はありません。単語の入力を間違えたか、センシティブと思われる内容が表示されない
---





このエントリーをはてなブックマークに追加 mixiチェック

Twitter社は「シャドウバンなんてありません」と堂々と言っているが、その意味は単に「その事象をTwitter社員はシャドウバンと呼ばない」というだけで「あるアカウントからの投稿をあらゆる検索結果から除外する」仕組みは実在する。
んで、シャドウバンの解除にはしばらく邪悪な投稿をしなければ良いと言う事が経験則として分かっている。
最近作った悪のボットはシャドウバンクラッシュを喰らいがちなので自動的にシャドウバン状態を検知し喪が明けるまで投稿を自粛、あるいは良い子な投稿のみ行う動作にしたい。
BANと違って投稿自体には成功するので見分けるには一工夫が要るようだ。
ブラウザから検索で「@from:TwitterのID」を行うと、通常のIDとシャドウバン喰らってる最中のIDで挙動が異なるとのこと

■品行方正な模範的市民のIDを使った検索例。プロフィールを先頭に過去の投稿が出る。
0119

■悪行三昧のスパマーBotのIDを使った検索例。彼奴については検索結果が無い事にされる。
0119b

なるほど。
恐らくTwitter APIで検索しても同じ結果が返ってくるのではなかろうか。
自動自粛機能実装はここに鍵があると思われる。


やってみた。
API経由で邪悪なIDからの投稿をサーチしてみたら普通に取得できてしまう…ぐぬぬ。となると例のチェックページをブラウザを自動操作して使うしか…。
$ python3 id_search.py
200
{
    "data": [
        {
            "id": "1483821836626722817",
            "text": "\u662d\u548c\u7279\u64ae\u306b\u3066\u5192\u982d\u306e\u30cf\u30a4\u30ab\u30fc\u306f\u8b66\u5099\u54e1\u3068\u4e26\u3073\u6b7b\u4ea1\u7387\u304c\u9ad8\u3044\u3002\n#\u30b8\u30e3\u30c3\u30ab\u30fc\u96fb\u6483\u968a"
        },
(略)
ちなみに凍結されたIDの投稿は流石に見えない模様
$ python3 id_search.py
200
{
    "meta": {
        "result_count": 0
    }
}



このエントリーをはてなブックマークに追加 mixiチェック

昨年11月にTwitter API v2が正式に始まり、"「Essential」アクセスはサインアップするだけで「API v2」を利用できるようになっており、煩雑な申請手続きは不要"とのこと。
残念ながら今まで使っていたTwitter4Jはv2未対応。JavaでTwitter API v2が利用できる主要ライブラリは4つある。自動呟き処理を作りたい私の場合は実質twittered一択。
・twittered:後述の罠を抜ければちゃんと動作する。
・twitter4j-v2:名前は非常に良いんだが、Kotlin製。私にはKotlinのビルドの知識も環境も無くトラブルシュートは無理。
・twitter-compliance:GlassFishとPostgreSQLを使うJ2EE改めJavaEE改めJakartaEEの重量級の凄い奴だ。だが今回求めるTwitter4Jの後釜とは毛色が違う。
・JTW:殆どのメソッドが開発中。これはTwitterの公式ドキュメントからリンクして良い完成度ではないのでは…。

■twitteredの罠とは
GitHub にあるソースと Maven Repositoryにあるjarのバージョンがかなり異なっており、Twitter API v2に対応しているのはGitHubの最新版(2.x)の方のみ。
twittered 1.xでも2.xでも呟くには同じTwitterClientクラスの同じpostTweetメソッドを呼ぶが、1.xではTwitterAPI v1.1のURLをコールするので、Essentialでは403で拒絶される
このためv2 APIを使って呟きたい場合はGitHubから最新版のソースを得て自分でビルドしたものを使う必要がある。
■ビルドのコツ
元の作者はIntelliJ IDEAを使ってるっぽいけれど、意識低い私はEclipse。Mavenのプロジェクトとしてインポートすると、以下のエラーが。うーむ普段はMavenを全然使わないからな…。
FIlils8aMAUdrVN

Mavenプロジェクトのトラブルシュートは手に余るので、Eclipseで普通のJavaプロジェクトを作成し、ライブラリの依存関係はIvyで行う事にした。
自分の新プロジェクトのソースディレクトリに元のMavenプロジェクトのioディレクトリ配下を全部コピーして、Ivy.xmlに元のpom.xmlで指定されているライブラリを記述すると概ねビルドは通るが、一つハマリ所があり、ソース中のあちこちで使われている「LOGGER.error」や「LOGGER.info」が全部エラーになる。
それらはLombokが密かに作るクラスなのでソースをいくら探しても見つからない筈。
EclipseにLombokを設定しIvy.xmlにLombokを加えた上で、プロジェクト直下に元のプロジェクトの「lombok.config」ファイルをコピーしてリビルドするとOKだ。
かくしてJavaアプリケーションからv2 APIによる自動呟きは成功する。

ちなみにPython3ではtweepyで何の苦労もなく成功したのだった…。

Twitter API プログラミング
辻村 浩
ワークスコーポレーション
2010-04-21


このエントリーをはてなブックマークに追加 mixiチェック

ふと思ったんだけど、プレイステーション4はゲームのスクリーンショットなどを#ps4shareで自分のTwitterアカウントから投稿出来る。だが別にPS4にAPIの秘密鍵を入れている訳でも無い。よくあるアンケートサイトと同じく連携の許可をしただけ。
そういえばSPAMが酷くて何年か前からはAPIの暗号鍵の発行をTwitter社が渋ってると聞くし、ブラウザを模して行うあの方法が主流なのかしら。
とか言ってたら、去年の暮れに https://gigazine.net/news/20211116-twitter-api-v2-developer-policy-changes/ またもや新APIになっていたのか。こっちは開発アカウント取りやすいとか。本当かいな。Twitter社員は怪しいからな。まぁTwitter4Jが吸収してくれることを祈るしか→どうもアドオンを入れると使える模様 https://github.com/takke/twitter4j-v2 …ってコトリンか…。
と言う訳でAPIの変更についていくのは辛いのでブラウザを模す方が楽な気がしないでもない。

Twitter API プログラミング
辻村 浩
ワークスコーポレーション
2010-04-21

このエントリーをはてなブックマークに追加 mixiチェック

↑このページのトップヘ