Ubuntu18.04LTSにVNC リモートデスクトップを導入
DellのWindows環境から自作機のUnbuntu18.04LTSに移行するにあたり、VNC Viewerを導入してみた。
Windows環境に既にVNC Server(by RealVNC)を導入しているので、Linux側にViewerをインストール。
上記のリンクからデフォルトで設定されている「DEB x64」のままで「Download VNC Viewer」ボタンを押下し、ダウンロードして、インストールへ。
インストール後、VNC Viewerを立ち上げて、VNC Server側のIPアドレスを入力したところ、あっさり接続確認ができた。
今度は、逆にLinux側にVNC Server(6.4.1)を導入してみた。
VNC Server起動後、右上の設定ボタンの「Licensing...」をe-mailを登録する。
「Choose subscription」画面では、「Home subscription」を選択。
次の「Specify VNC password」画面でパスワードを入力するのですが、先ほどLicensing時にe-mailと一緒に登録したパスワードは、RealVNC account用でVNC Server用に別のパスワードを入力する必要があります。
VNC Server画面で、右上のステータスが緑色のチェックに変わったらOKです。
現在、インストールされているViewerのバージョン4.1.2k4では相当に古く、接続できなかったので、現時点の最新版であるバージョン6.19.107をインストール。
(後から、Serverダウンロードサイトの「Importatnt information」「Instllation instructions」を読むと、アップグレードするように記述されていました)
Viewer画面の右上にある「Sign in...」をクリックして、VNCサイトに登録したe-mailアドレスとパスワードを入力して、e-mailで送られてきた「CONTINUE SIGN IN」ボタンをクリックすると、Viewer画面の「Sign in...」がユーザ名で表示され、左側に緑のチェックが付きます。
「Enter a VNC Server address or search」には、ホスト名やIPアドレスではなく、チーム名を入力します。(Server側の左「Connectivity」に表示されてます)
パスワードをきいてくるので、Server側のパスワードを入力、これで接続できます。
(ファイヤウォールの設定が表示されます)
p.s.
最初のWindows:Server Ubuntu:Viewerのパターンでは、Windows側のVNC Serverのバージョンが古い為にカクカクと動作していましたが、Ubuntu:Server Windows:Viewerの逆のパターンでは、どちらも新しいバージョンの為、スムーズに動作します。
後で、Windows側のServerも新しくしてみたいと思います。
Athlon PRO 200GE このマザーボードではディスプレイ制限は解除
一昨日、自作機を組み上げました。現在、使用しているデスクトップPCがそろそろ9年弱しているのと、ノートPCの電源ボタンが壊れ、マザーボードの突起状のボタンをボールペンで押して起動しているという、末期症状からやむを得なくという感じです。
マザーボードは、ASRock > AB350M-HDVを使用、amazonで1000円のクーポン券を使用して、パソコン工房から購入しました。
下記のサイトの説明では、もともと、200GEとこのマザーボーのBIOSのバージョン(P4.80)の組み合わせでは、DVI映像出力端子に制限があり、この端子を使用したマルチディスプレが不可能となっていました。
AMD Athlon 200GEプロセッサ搭載時におけるマザーボードの映像出力端子について | 株式会社アスク
購入時のBIOSバージョンは5.10で、マザーボードのサポートサイトで確認したところ、5.10のバージョンの2番目にディスプレイ制限が変更されている旨の記述がありました。
ちなみにOSは、このマザーボードでは未サポートのUbuntu18.04TLSですが、問題なく作動してます。また、DVI端子を使用した、VGA端子とのマルチディスプレイも無事表示されました。
今回、コストを抑えるということが第一優先事項で、Windows10のUpdateが嫌いだったってこともあり、Ubuntuを導入することにしました。
1000円のAmazonのクーポン券と内蔵ケーブルはヨドバシのポイントを利用したので、トータルで3万円半ばで済みました。メモリを8GBに抑えれば3万ぐらい作成可能です。
当初は、DellのInspironのCore i3-8100/4GB/1TBモデルかHPのRyzen3/8GB/2TBを購入するつもりだった(どちらも配達料込みで4万2千円ぐらい)のですが、先週末、Dellのサイトでクーポンコードを入力する箇所を探している内に日付変更線が変わってしまいました。
p.s.
久々の自作機の組み上げだったので手間取りましたが、キモだった部分を列挙しておきたいと思います。
○ATX12Vケーブルがソケットまでとどかない→ヨドバシカメラで延長ケーブルを購入。ただし、最安値の260円のケーブルは売切れのため、366円の物を購入。
○Ubuntuインストール時に1920x1080のディスプレイで左右に分かれて、表示される。→Tabキーを利用して、フォーカスを移動させて、強引にインストール。
(USBディスク内のコンフィグファイルで解像度を変更するパラメータを追加してみたが、だめだった)
○1回目のインストールで成功していたが、画面が真っ黒→席を離れていたり、ディスプレイを繋ぎ変えたりしていたので、原因が分からなかったのですが、2回目のインストール後で原因が分かった(^^;ブランクスクリーンの設定がデフォルトが5分の為、ディスプレイオフとなっていました。
○ブランクスクリーンからの復帰→ディスプレイの電源のオフ/オンで復旧。(意外な盲点でした)
法人インフォ エンドポイントが変更されていた
昨日、法人インフォのAPIがリニュアルされていました。
検索が高速化されているとのことですが、まずは、エンドポイントが変わっていることを伝えて欲しいです。
変更前
https://api.hojin-info.go.jp/sparql?default-graph-uri=&query=
変更後
https://api.hojin-info.go.jp/sparql?query=
あと、レスポンスフォーマット(format)がjsonのみとなっています。
修正変更の詳細は、サイトにあるAPI.pdfを参照してください。
上記の変更を行ったうえで、実行したところ、以前は、さくさく動作していたのにレスポンスが成功していたり、タイムアウトしていたりと、改悪されてます。orz
SPARQL LIKE演算子や列名の全出力のやり方
会社情報を調査するバイトをしているのだが、当然、会社が倒産や破産をしていたらバイト代はでない。そこで、法人インフォのサイトで会社が閉鎖されていないか、あらかじめチェックを行っている。毎回、手動でチェックをするのも面倒くさいので3ヶ月ほど前にバッチ処理で洗い出している。
最近、気が付いたのだが、ごくたまに資本金や設立日が出力されるのに気が付いた。で、ちょっと検索方法がカスタマイズできないか、調査してみた。
まずは、簡単にSPARQL(スパークル)言語を説明すると、RDFクエリ言語の1つで、SQLのSELECT演算子みたいなものだと認識している。
SPARQLは、SELECT~FROM~WHEREと構文的にはSQLと一緒だが、変数の頭に?をつけるのとWHERE句の行の連結には末尾にピリオドをつけるような感じ。
試したいのは、SQLでよくあるSELECT *、つまり列名の全項目ができるかとLIKE演算子相当なものがあるかということ。
LIKE演算子はそのまま使用できず、
FILTER regex(変数名,"抽出したい文字列")
と記述する。
一般的な正規表現と同様に検索したい文字列の文頭に'^'を付加すれば前方一致検索、末尾に'$'を付加すれば後方検索。
上記の画像は、法人インフォのサイトで、一度検索した後、最下段の「SPARQLクエリ」ボタンを押した画像で、クエリを編集できるようになっており、実行ボタンを押すと、クエリに従って再抽出できる。
また、検索したい文字列の囲みは、シングルクォートでもダブルクォートでも使用可能。
列名の全出力は、SELECT *~のままだが、WHERE句で定義されている全変数という意味合いなので、定義されていない項目は残念ながら出力されない。
下記は、件名を神奈川県で絞ったうえで、SELECT *~。
定義するのが、面倒くさいのでアスタリスクを使用したかったのですが、少し残念な結果でした。
調査にあたり、以下の「RDF用クエリ言語SPQRQL」の和訳サイトを参照しました。
参考リンク
Selenium で最近ハマった3つのエラー
Seleniumを使用して、Webを3階層、再帰的にクローリングするプログラムを書いたのですが、3つぐらいハマった個所があったので、ブログに書きとめておきます。
現象1:ページを戻るとfind_elementしたelementがもうないよと言われる
エラーメッセージ:The element is no longer attached to the DOM.
原因:ページを戻ると、html内のinputタグのクラス名が動的に変わっていた。
対応方法:戻ったのち、変わったクラス名で新たにfind_element()を行う。
$driver->go->back()で戻ると、DOMが壊れるので新たに$driver->get_page_sourceから。。。
現象2:ページを戻って、send_keys()で文字を送信しても、inputタグのvalueの値が変更されない。
エラーメッセージ:なし
対応方法:$element->send_keys(文字列)で送信する前に該当のelementを
$element->clear()であらかじめ、クリアしておく。
現象3:3つの数字をsend_keys()で送信すると、2つの数字しか表示されず、ログに出力したget_value()では3つの数字が入っている
エラーメッセージ:入力できない文字があります。
原因:ブラウザー内で入力した文字列のバリデーションチェックで数字3桁であるかどうかチェックしています。で、エラーとなっているのですが、原因は保存したキャラクター形式が間違っていました。
対応方法:正しいフォーマットで入力ファイルを修正した
正しいデータのフォーマットはUTF(BOMなし)形式
間違ってたデータのフォーマットはUTF(BOMあり)形式
最初は、タイミングかなと思っていたのですが、set_implicit_wait_timeoutを使用しているし、成功している入力ファイルがあるので、タイミングでないことに気が付きました。
idは変わらないので、idでfindしてみましたが、取得できませんでした。
言い訳になるかもしれないですが、クラス名が似たような文字列で50文字ぐらいあるんです。
Selenium 使い方 ヒント集
Selenium::Remote::Driverを使って、週末の土日にコーディング&デバッグをしていて、あるエラーで躓いたときに見つけたサイトです。
Sumasriさんというシニアテストエンジニアを職業とする人が記述したサイトです。
www.softwaretestingmaterial.com
Seleniumのメソッドの使い方やそれぞれのメソッドの違い、コードのサンプル等だけではなく、エラーの対処方法やXPathとは何?といったことまで、書いてあります。
現時点で、114個のQ&Aが英語で書かれています。英語と言っても、それほど難しい単語や文法で書かれていないので、すんなり読んでいけると思います。
また、リンクを追えば、かなり詳しい情報も記載されていて、大変便利なサイトです。
これから、Seleniumを使いたい方は、のぞいてみる価値があるサイトです。
p.s.
冒頭で述べていたエラーは、なんとか自力でクリアできました。
エラーは「The element is no longer attached to the DOM.」なんですが、tableタグを1つ見落としていました。普通、tableタグ内で、テーブルヘッダ(th)タグとテーブルデータ(dt)タグが書かれていると思うのですが、
それぞれ個々にtableタグで書かれていたため、elementがないよと、エラーになっていました。orz
参照サイト:
Selenium WebDriverServerを立ち上げてみた
Selenium WebDriverは、クローリングも含めていろいろブラウザからWebの操作ができるテストツールです。WebDriverのクライアント側で対応する言語もJava,C#,Ruby,Python,Java Scriptが公式サイトから、PerlもSelenium::Remote::Driverとして、有志から発表されています。
対応するブラウザも、Firefox,Chrome,Edge,Opera,Safari,PhantomJSなどい様々なブラウザに対応しています。
今回、Selenium WebDriverを使用するのに先立ち、WebDriverServerを立ち上げてみた。
Selenium WebDriverServerのインストール&実行手順
1.Selenium Standalone Serverのダウンロード
参照サイト のSelenium Stadalone Serverのこうもくからdownload versionのVer.3.13.0(リンク)をクリックしてjarファイルをダウンロードする。
2.GeckoDriverのダウンロード
Firefox用のドライバであるGeckoDriverを参照サイトからダウンロードし、解凍する。
次に、解凍したgeckodriver.exeを実行できるパスにコピーする。
3.ファイアウォールの設定
Seleniumは、ServerとWebDriver間ではデフォルトでTCPポート:4444番号を使用するので、あらかじめ穴をあけておきます。
4.Selenium Standalone Serverの起動方法
1.のダウンロードしたjarファイルをどこかにコピーします。
2.コマンドプロンプトから、以下のコマンドを実行して、まずはハブ機能として起動します。
java -jar c:\temp\selenium-server-standalone-3.13.0.jar -role hub &
3.もう一つコマンドプロンプトを開き、以下のコマンドを実行して、ノード機能を実行します。
java -jar c:\temp\selenium-server-standalone-3.13.0.jar -role node -hub http://localhost:4444/grid/register &
実行すると、ハブ側の出力にRegistered a nodeと表示されます。
PerlでSelenium::Remote::Driverモジュールを使用したプログラムを実行したところ、簡単にServerとやりとりができました。
自動的にFirefoxが立ち上げってきました。でも、起動が10秒ぐらいかかりました。
今回のServerの立ち上げにはあまり関係ありませんが、今、読んでいる本が、「実践 Selenium WebDriver」です。
技術的にはライトな部分が多く、とっつきやすい本だと思います。ページ数は少ないですが、知っておかないと、結構、罠に引っ掛かりそうです。
参照サイト:
https://www.seleniumhq.org/download/
Releases · mozilla/geckodriver · GitHub
参考文献:
r