Selenium WebDriver を使う (C#) (2)

前回 は WebDriver を使ってブラウザを起動する方法を確認しました。 今回は HTML 要素の取得について確認します。 WebDriver で行えることは、「Web ページの操作」です。Web ページの操作の大部分は HTML の要素を操作することです。 つまり HTML の要素を…

Cloudflare で SSL

某違法サイトも利用していたという CDN のサービスが Cloudflare です。 CDN はコンテンツ配信のためのサーバネットワークで、閲覧者に近いサーバからコンテンツを配信することにより、読み込み速度向上や通信リソース節約などを目的とするものです。 この仕…

Selenium WebDriver を使う (C#) (1)

WebDriver を使って、ブラウザ(Chrome)の起動と簡単な操作を行ってみます。 環境は Windows Visual Studio 2017 です。 WebDriver は NuGet で入れられます。Selenium.WebDriver と Selenium.Chrome.WebDriver を入れます。 Selenium.WebDriver が主なライブ…

Selenium WebDriver を使う

めっきり冷え込んできた今日このごろです。 年末年始は強い寒波に見舞われるということで、防寒や交通などには注意する必要がありそうです。 さて、最近では Selenium という名前はだいぶ世間に浸透しているのではないかと思いますし、実際にご利用になられ…

今更ながら JSON のおさらい

一昔前(もっと前かもしれませんが..)には、データ交換のフォーマットといえば XML 、という時期がありました。 その流れで SOAP や WSDL 、BPEL 、ESB などが生まれましたが、複雑すぎたのか、堅すぎたのか、最近ではあまり見ることがありません。(大規模な…

WebSocket を試す

最近のブラウザではだいたい WebSocket が使用できますので、この機能を試してみたいと思います。 データの取得先は、リアルタイムといえば取引ということで、仮想通貨取引所 Bitmex の WebSocketAPI を使ってみます。

コマンドラインで Route53

EC2 のサーバで Web サイトを運用する場合、DNS には Route53 を利用される方もいらっしゃるかと思います。 Route53 は「可用性が高くスケーラブルなクラウドドメインネームシステム (DNS) ウェブサービス」(本家サイトより) です。 いくつかのドメインの We…

C# でチャットワークの API を使ってメッセージを投稿する

タイトルの通りです。 チャットワークには Web ベースの API が用意されており、それを使用することでプログラムからメッセージを投稿することができます。 今のところ認証は単一の API トークンによるもののみで、とてもシンプルです。 APIトークンはこちら…

C# で Worpdress の API を使って記事を投稿する

Wordpress に API が備わっていることはこれまでも記事で紹介していますが、今回は具体的に使う場合のコードのメモになります。 API では JSON でデータをやり取りしますので、DynamicJson を使用することにします。NuGet でインストールするかソースコード…

Redirect ディレクティブによるリダイレクト

ある URL にアクセスされた場合、それを別の URL に飛ばしたい場合があります。 それは内部的なものと外部的なものに分けられます。 内部的なものは、ある URL にアクセスされたときに、その URL を処理する機能を別の機能にまかせたいケースです。 Wordpres…

certbot-auto で ImportError: No module named cryptography.hazmat.bindings.openssl.binding エラー

AWS の EC2 で運用しているWebサイトがあり、そのサーバでは certbot-auto を使用してサイトのSSL化を行っていました。 先日、certbot-auto を使用してSSL証明書の作成を行おうとしたところ、以下のエラーが発生しました。 Upgrading certbot-auto 0.27.1 to…

XPath 基礎 (4)

XPath の基礎 (4) です。 XPath では、CSS ではできないような強力な選択を行うことができます。 これはテキストノードを使用できることがその主な要因であると感じます。 個人的によく使用するのが、「ある文字列が要素に含まれているか」という判断です。 …

XPath 基礎 (3)

XPath の基礎 (3) です。 //div[@name='hoge'] 上記のように書けば、name 属性が "hoge" であるすべての div タグを選択できます。 実は XPath には様々な省略記法があり、実は上記もその省略記法で書かれていて、省略しないで書くと以下のようになります。 …

XPath 基礎 (2) 属性値での指定

HTMLタグの属性値の値によって、何らかの要素を指定したい場合があります。 <div class="foo bar"> </div> <div id="hoge"> </div> <div name="hoge"> </div> CSS の場合、上記であれば、 以下のようなセレクタで指定できます。 .foo { ... } #hoge { ... } [name="hoge"] { ... } XPath の場合は、以下のようになります。 //div[cont…

XPath 基礎 (1)

みなさんもご存知の通り、Web ページは HTML で書かれています。 ですので、スクレイピングしたりクライアントサイドで動的なページを作ったりするときには、自分が処理したいその部分を何らかの方法で指定する必要があります。 jQuery 使いの方に馴染みが深…

Salesforce で You have uncommitted work pending エラー

Salesforce の Apex コードでは、外部のWebサービスを利用することができます。つまり HTTP リクエストを送信することができます。 これを Salesforce ではコールアウトと呼んでいます。 通常の Apex コードではコールアウトを行うことはできず、callout=tru…

MySQL をコマンドラインで使う

自動化するならコマンドラインですね。ということで、最近使った MySQL のコマンドラインを記録しておきます。 データベースを作成する mysql -u<ユーザID> -p<パスワード> -e "CREATE DATABASE <データベース名> CHARACTER SET utf8mb4" ※ -u と -p の後ろ…

Tooling API を使ってログを設定する

Salesforce には Tooling API という非常に強力な API があります。 どのようなことができるかというと... Apex クラスおよびトリガと Visualforce ページおよびコンポーネントの作業コピーを管理する。 静的リソースファイルの作業コピーを管理する。 Apex …

Salesforce のデバッグログ

Salesforce の開発にあたっては、デバッグログ というログ機能が備わっておりこれがデバッグの助けになってくれます。 このデバッグログについて、最近、知らなかったことや勘違いしていたこと、新たに学んだことがあったので備忘録として残します。 正確な…

Salesforce の自動更新系の順序

Salesforce では、自動化の一環として以下のようなものが使用できます。 フロー ワークフロールール プロセスビルダー 項目自動更新 トリガ これらは便利なものですが、何も考えずに使用するとDLLヘルよろしくの地獄を見るかもしれません。 これらの実行順序…

Wordpress の API でカスタムフィールドにアクセスする

Wordpress を利用するにあたっては、何らかのプラグインを導入することが常ではないでしょうか。 プラグインでは、そのプラグインで利用する独自のデータをカスタムフィールドで持つことが多いかと思います。 あるいはまた、標準で用意した項目では足りず、…

MariaDB(MySQL) の不思議な挙動

DBMS は MariaDB 5.5.52。 最近、不思議な挙動に遭遇しました。 「データベースに登録されている企業の一覧を表示し、その企業の大分類を表示する」という機能の実装を行いました。 この企業データは以下のようなものです。 company テーブル id name f1 f2 …

正規表現のおさらい (5)

正規表現のおさらいシリーズ その1:http://developer.venture-net.co.jp/entry/2018/06/22/174206 その2:http://developer.venture-net.co.jp/entry/2018/06/29/192116 その3:http://developer.venture-net.co.jp/entry/2018/07/06/185719 その4:http://…

商談のコピーでは見えていない項目はコピーされない

最近知ったので備忘録。 Salesforce の商談にはコピー機能があります。 これをコピーすると、 こうなって、確度や売上月01、数量などの項目がコピーされていることがわかります。 商談のコピーについては、商談をコピーする場合の考慮事項 にて、以下のよう…

Salesforce メモ (ID関連)

Salesforce 使いには常識のことかもしれませんが、ときどき Salesforce に触るくらいのエンジニアには未知の機能や仕様があるため備忘録として残します。 項目のIDを調べる Web-to-リードなどでname属性に指定するアレです。 SOQLで取得できます。リードの場…

Apache のリライトまとめ (2)

備忘録その2。 (.htaccess に書く場合) 内容が間違っている可能性もありますので、ご参考まで。 RewriteBase はリライト後のベースを指定する 昔は RewriteBase が何なのかよくわからず、おまじない的につけていたこともありました。 RewriteBase は、リライ…

Apache のリライトまとめ

いつも、「これはどうするんだっけ?」「これは何が来るんだっけ?」と忘れてしまうため、備忘録として残します。 (.htaccess に書く場合) 内容が間違っている可能性もありますので、ご参考まで。 .htaccess に書かれたリライトは、深い階層のものが優先的に…

正規表現のおさらい (4)

正規表現のおさらいシリーズ その1:http://developer.venture-net.co.jp/entry/2018/06/22/174206 その2:http://developer.venture-net.co.jp/entry/2018/06/29/192116 その3:http://developer.venture-net.co.jp/entry/2018/07/06/185719 今回は第4弾で…

正規表現のおさらい (3)

正規表現のおさらいシリーズ その1:http://developer.venture-net.co.jp/entry/2018/06/22/174206 その2:http://developer.venture-net.co.jp/entry/2018/06/29/192116 その4:http://developer.venture-net.co.jp/entry/2018/07/13/185653 前々回、前回 …

正規表現のおさらい (2)

正規表現のおさらいシリーズ その1:http://developer.venture-net.co.jp/entry/2018/06/22/174206 その3:http://developer.venture-net.co.jp/entry/2018/07/06/185719 その4:http://developer.venture-net.co.jp/entry/2018/07/13/185653 前回の記事で正…