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 前回の記事で正…

正規表現のおさらい

正規表現のおさらいシリーズ その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://developer.venture-net.co.jp/entry/2018/07/13/185653 テキスト処理を…

PHP でグラフ画像を作成する

Web アプリケーションなら、JavaScript でも高品質なグラフを描画することができますし、画像として保存することができるものもあります。 ただ今回、 サーバサイドでレポートを生成する レポートは PDF ファイル レポートにグラフを埋め込む という要件があ…

docforce2でSalesforceのオブジェクト設計書を自動生成する

データベーススキーマを設計する場合は、ER図を書いたり何らかの設計書を書くというのが普通かと思いますが、Salesforce では簡単にオブジェクトの構造を構築することができるため、良し悪しは別にして設計書の類は作成せずに開発を進めることも多いかと思い…

SQLite で CSV データをインポートする

SQLite で CSV データをインポートする方法をご紹介します。 CUI と GUI 、どちらもとても簡単にできます。 コマンドライン 対象のテーブルは以下で、データベースファイルは user.sqlite とします。 CREATE TABLE user (user_id, user_name, user_age); イ…

SQLite のクライアントツール

SQLite については何度か記事にしていますが、SQLite はちょっと使いにとても便利な軽量データベースです。 コマンドラインツールもありますが、ちょちょいと使う分には GUI があると便利です。 今回はよく使っている SQLiteStudio をご紹介したいと思います…

PhantomJS でWebサイトの画面キャプチャをとる

PHP で単にスクレイピングをするだけなら、file_get_contents して解析したり、 curl を使ったり、Simple HTML DOM Parser(http://simplehtmldom.sourceforge.net/) を使ったり、 DOMDocument を使ったり、様々が方法があります。 しかしサイトの画像キャプ…

C# で SQLite を使う (Windows)

前回はPHP で SQLite を扱う方法をご紹介しました。今回は、 C# で SQLite を扱う方法をご紹介したいと思います。 Visual Studio 2017 を使用します。 Visual Studio での依存ライブラリの管理は NuGet が便利です。NuGet を使って、SQLite に必要なパッケー…

PHP で SQLite を使う

CSVなどのデータでも強力な検索機能を使用したいことがあります。 データ量が少ない場合は、Excel を使って VLOOKUP 関数や INDEX 関数、MATCH 関数を駆使することで乗り切れる場合もありますが、 万~数十万オーダのデータになるとなかなか厳しくなってくる…

FUTOKAサーバでWordpressログイン不可

Wordpressのログイン画面で403エラーになったら、IP制限などのセキュリティ設定を見直してみましょう。

Wordpress の API で BASIC 認証を使う

Wordpress の API を使用するにあたり、いくつかの機能では認証が必要になります。 認証の方法にはいくつかありますが、高いセキュリティが求められていない場合は簡単な方法にしたいところです。 サポートされている認証の1つに BASIC認証(Basic Authentica…