HTML中のa要素をすべて取得する

PythonでHTML中のa要素を取得する処理を作成。 動かすためには、lxmlとcssselectライブラリが必要です。 以下のコマンドを実行し、インストールしてください。

lxmlのインストール

pip install lxml

cssselectのインストール

pip install cssselect

ソース

#!/usr/bin/python
# coding: utf-8

# HTML内のa要素をすべて取得する

import lxml.html

# HTMLファイルを読み込み、getRoot()メソッドでHtmlElementオブジェクトを得る
tree = lxml.html.parse('test.html')
html = tree.getroot()

# cssselect()メソッドでa要素のリストを取得して、個々のa要素に対して処理を行う
for a in html.cssselect('a'):
    # href属性とリンクのテキストを取得して表示する
    print(a.get('href'), a.text)

お天気情報をアプリに組み込む

お天気の情報をアプリに組み込みたい場合、 Livedoorが提供するお天気Webサービスが便利だ。

ユーザ登録や認証が不要で、HTTPリクエストのみでデータが取得できる。

weather.livedoor.com

福岡県の天気情報を取得するURL http://weather.livedoor.com/forecast/rss/area/400010.xml

ビルドが終わったらLINE通知してくれるシェルを数分で作った

開発しているアプリのビルドが2分くらいかかる。。。 そのようなときは、終わるまでディスプレイ見て待ちます? やっぱ、別の作業をやりたいですよねー。

でも、別の作業をやっていると、 ビルドの結果が気になって。。。。そわそわ。

ウインドウを切り替えて、 ああ。。。まだ終わってなかったなんて。。。 そんな無駄な時間を過ごすのやだなーと思って

通知してくれるスクリプトの作り方を調べました。

簡単なのはLINE Notifyを使ったシェルスクリプトですね。 数分でできました。

シェルは以下の方を参考に。。。 qiita.com

LINE Notifyのページはこちら、入ってトークン発行するだけでした。

notify-bot.line.me

いろいろ使えそうです。

VirtualBox Guest Additions

Vagrantで開発環境をつくるときに、 共有フォルダが見れないとか、仮想マシンから共有フォルダが見れないときは、 VirtualBox Guest Additionsのバージョンに原因があったりする。

VirtualBox Guest Additions とは、VirtualBox 上に作成したゲストマシンにインストールするソフトウェア。 ホストマシンとゲストマシンとの間での操作を便利にしてくれる機能を持っている VirtualBox Guest Additions をゲスト OS にインストールすると、次のような事が可能になる。

  • クリップボードの共有
  • フォルダの共有
  • 自動ログイン
  • ホストマシンとの時刻同期

VagrantにはVirtual Guest Addistionを調整してくれる便利なプラグインがあり、 以下のコマンドでインストールできる。

vagrant plugin install vagrant-vbguest

vagrant up時に自動で起動してくれるので非常に楽チンだ。

Vagrant was unable to mount VirtualBox shared folders. This is usually because the filesystem "vboxsf" is not available.

VagrantでOSをcentos/7にすると以下のエラーが出た。

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

ホスト⇔ゲスト間のフォルダ共有機能はGuest Additionsが提供しているが ホスト(VirtualBox)とゲスト(Guest Additions)でバージョン不一致があるとマウントエラーが起きる。

vagrant up時に自動的に新しいバージョンのGuest Additionsに更新してくれる 「vagrant-vbguest」というプラグインがあるので、こちらをインストールしておくと良い。

vagrant plugin install vagrant-vbguest

Vagrant ポートフォワードでCentOS7.2-Docker上のMySQLサーバに接続できない

VagrantからCentOSを起動し、プロビジョンでansibleを実行し、 Docker-ComposeでMySQLサーバを起動するVagrantファイル一式を作った。

が、ホストOS(MacまたはWindows)から MySQLサーバにmysqlコマンドを使って接続しようと試みたが 以下のエラーが出てアクセスできない。

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0

結局分からず。。。。 (1日潰しました。。。。同じ事象に遭遇した方は、調査するとハマり続ける恐れがあるため、 SSHトンネル経由で接続をお勧めします。)

CentOS上のFirewalld, iptables, Tcp Wrapperの設定 ・MySQL上のmy.confのbind-address ・MySQLユーザの外部接続設定をSQLで実行

をしたけど、ダメでしたー!

SSHトンネルで接続するようにします。 毎回SSHトンネルを起動する必要があるから、やりたくなかったが、、、 仕方なし。

Package-lock.json

このファイルについて理解できてなかったので、調べた。

以下のサイトにまとめがわかりやすかった。

qiita.com

依存パッケージが依存するパッケージ(ネストした依存状態)のバージョン情報が変わる場合がある
package.jsonだけでは、node_modulesを完璧に再現できるとは限らない(勝手に違うバージョンのライブラリがインストールされてしまう可能性)
package-lock.jsonはバージョン情報をすべて正確に記録する
package-lock.json に書き込まれたバージョンのパッケージがインストールされる