Franzを使ってみた

作業を効率良く進めるためにツールは必要不可欠なものだと思います。
しかし多くのツールを立ち上げると配置に困ることもしばしば・・・

そこで今回は60種類以上のツールを一元管理できるFranzを紹介したいと思います。
FranzはSlack、Skype、GmailやGoogle Calendarなどのサービスを
クリック1つで切り替えることのできるすごいツールです。

インストールは
https://meetfranz.com/
から。

起動

無料アカウントを作成を選択します。

名・姓・メールアドレス・パスワードを入力します。

今回は無料プランを選択します。

招待したい人がいる場合はここで招待しましょう。

ぼっちなので後でを選択します。

あっという間に登録完了です。はじめる、または左下の+ボタンを選択します。

使いたいサービスを選択します。日本ではメジャーなものやマイナーなものまで揃っています。今回はGmailを選択してみます。

設定画面に遷移します。サービス名は好きな名前をつけることができます。

Gmailも複数アカウント登録できますので、アカウント名にするとわかりやすいかもしれません。

今回はそのままの設定でいきます!

Gmailを選択しました。右上のXボタンを押しましょう。

Gmailのログイン画面が表示されます。

あとはいつものようにログインするだけで、FranzでGmailが使えます。

サービスを増やしたい場合は、左下の+ボタンでどんどん増やせます。

  • 使ってみて

SkypeやGmailが1つのウィンドウで使用できるのは非常に便利です。

Webサービスを統合している感じなので、Web版とアプリ版を提供しているサービスが使えるのではないかと思っています。

Gmailはブラウザで使用している感じと同じなので全く違和感はありません。

未読の通知もわかりやすいですし、タスクバーにも未読数が表示されます。

SkypeはSkype for Web版になるため、アプリ版と設定画面も異なります。

改行はアプリ版がShiftとCtrlどちらも可能に対して、FranzではShiftのみのため、慣れるまでに時間がかかるかもしれません。

また、残念ながらYahooMailはありませんでしたが、今後に期待です。

メリット・デメリットはありますが、動作も軽く使いやすいツールだと思います。

今後もオススメのツールがあれば書いていこうと思います。

 

おじさんがソロキャンプツーリング行ってきた~長瀞オートキャンプ場~

2018年3月31日

前回のキャンプから二週間後、二回目のソロキャンプを敢行!

毎年この時期になると桜が見たくなるので開花状況をチェックし

それほど遠くなく見どころになりそうなところを探した結果ここ↓に行くことに。

長瀞オートキャンプ場

 

今回もキャンプ場までは約90Km。

目的地までの道のり

今のままだと積載がかなり不安定だったのでサイドバッグを購入・装着しいざ出発!

当然下道でね。

はじめては怖いからね。

 

今回は目的である桜を見ること、後はご当地のご飯も食べたいなーという思いを胸に

キャンプ地へ到着。

 

今回のキャンプ地

↑またすぐ近くに川があるとこにキャンプへ来てますが

海も川もない場所に住んでいると水のある場所に惹かれるのです

このキャンプ場はファミリー・初心者に人気で気温も暖かくなってきたこともあり

ほぼ満員状態でした。

(自分が泊まった区画の前後でファミリーキャンプをしていて少し肩身が狭かった。。)

テントも張ったので今回のメインイベントである桜を見に出発!

 

満開の桜、そして…

キャンプ場を出て小さい橋を渡るとすぐに北桜通りという場所に出ます。

そこでは…

満開の桜が出迎えてくれました。

駅のほうまで散歩がてら散策します。

駅まではおよそ1.5Km、その区間全て満開の桜が両脇に咲き誇っていました。

 

駅前に到着し、少し近辺を散策していたら気づけば15時少し前。

時間としては中途半端だけどものすごいおなか減っているし

今回の目的の一つであるご当地のご飯食べたい、というのも達成したいしで

何かないかなーと探していると一件のそば屋が。

少しいやな予感はしましたがそばならそこまでおなか膨れないし外れもないだろ、

と思い意を決して中へ。

いやな予感というのは的中するもので。

メニュー見てみたら全部1000円越え。

自分が食べたかった舞茸の天ぷらそばはなんと1500円!

ツーリングなどでこのようなお店に寄ったら注文しないで出ちゃいますが、

キャンプで変なテンションだったんでしょうね。

これが1500円(税抜)の舞茸の天ぷらそばだ!!!

くそ、やられた!

どう見ても相場は800円であろう食事を流し込みお会計を済ませ(税込み1620円)

いそいそと店を後にしました。

 

気分なおし

ぼちぼち戻らないと遅くなってしまう(というかこの土地にいたくなかったというのが正解)

のでキャンプ地へ戻ります。

↑長瀞といえばライン下りが有名。さすがに一人で乗る勇気はなし!

↑こちらは法善寺のしだれ桜。

翌日ここに寄り道して帰ろうと思いましたが、気分がすぐれなかったので

予定を前倒しして見に行きました。

 

キャンプ地へ戻り薪を購入し、そういえばここにきてから休んでいなかったことに気づいて

遅めのコーヒーブレイク。

焚火の準備をしつつ18時を過ぎるころには日が落ち始めたので

晩御飯と焚火を楽しみます。

(晩御飯のカップ麺のほうが1500円の食事より満足感は上でした。。)

綺麗な景色と焚火を見て心を浄化し、焚火終了後22時には就寝。

 

撤収

翌日5時ごろ早めに起きだし、コーヒーを飲みながら朝の澄んだ空気を味わいます。

少しずつ撤収の準備を始めて6時ごろに朝ご飯。

全然インスタ映えしない汚い画ですが、奥のこげてるほうはツナマヨ、手前はハムチーズ。

これがめちゃくちゃうまかった!

おなかも膨れたので本格的に撤収作業開始し、9時にはキャンプ地を後にしました。

 

感想

本当なら4月上旬に満開になる桜が今年は開花が早まったため

このタイミングで満開になってくれたことはうれしい誤算でした。

積載も増えてより多く道具を持っていけたのも満足度の底上げに貢献してくれました。

反省点としてはちゃんと調べなさい、流されないようにしなさい、ということですね。

時には流されちゃったほうがいいときもありますが今回は完全に

悪い方向に振り切ってしまいました。。

そろそろ富士山を見ながらのキャンプをしたいなーと考えているので

その時には今回の反省点を活かせるようにしようと決意するのでした。

httpd 2.4.33のmod_sslでLibreSSL 2.7以上を使うときのパッチ

httpdのバージョンが上がったらそのうち対応されて直ると思いますが
それまでは使えると思うのでメモっておきます。

具体的には次のようなエラーがでた場合の対処です。

LibreSSLのopenssl/dh.hでDH_set0_pqgが宣言されているのに
mod_sslのssl_engine_init.cでDH_set0_pqgがstaticで実装されていて合っていないというエラーです。

このDH_set0_pqgという関数はOpenSSL1.1未満では実装されていないため、
mod_sslはOpenSSLが1.1未満の場合に自前の実装を使うようになっています。

プリプロセッサ的にはMODSSL_USE_OPENSSL_PRE_1_1_APIがONになっていれば
mod_ssl側でDH_set0_pqgを実装する形です。

このMODSSL_USE_OPENSSL_PRE_1_1_APIはLibreSSLを使うとONになるようになっているため
DH_set0_pqgが実装されたLibreSSL 2.7以降と合わせると不整合という状態になってしまいます。
(LibreSSLは基本的にOpenSSL 1.0.1ベースだが、LibreSSL 2.7でOpenSSL 1.0.2や1.1.0の機能がいくらか追加された)

対処としてはmod_ssl側の実装を削除してしまうだけです。

mod_sslとLibreSSLでは微妙に実装内容が違うのですが、きっとLibreSSL側の実装の方が信用できる。
mod_sslの方が信用できるよ派の人はssl_engine_init.c内のDH_set0_pqgを適当にリネームでもすればよいと思います。

あと私はApacheよりNginx派です。

[PHP]Seleniumを使ってみよう(2)

福岡拠点の野田です。
前回「Seleniumを使ってみよう(1)」では、Selenium サーバーを立ち上げるところまで実施しました。
https://blog-s.xchange.jp/?p=418

今回はその続きです。
弊社では、PHPを使うことが多いので、その例を紹介します。
PHPがローカル環境にない方は、さくっとインストールしてください(環境変数にパスを通すのも忘れずお願いします)。
http://www.php.net/downloads.php

composerが入っていなかったら、インストールします。
https://getcomposer.org/doc/00-intro.md#installation-windows

任意のフォルダにcomposer.jsonを配置します。

facebook/webdriverは、curl関数を使うため、php_curlのエクステンションを有効にします。ほかにスクリーンショットの編集等でgdライブラリを使う場合がありますので、php_gd2のエクステンションを有効にします。

ちなみに php.ini のある場所は、php -i で表示することができます。

cmd でDOSのターミナルを開いてcomposer.jsonを配置したフォルダでcomposer update を実行してください。必要なライブラリをインストールします。これでSeleniumを使ってテストを実行する準備が整いました。

サンプルコードを以下にアップしています。

https://github.com/nodat/php-selenium-tools

processor.php と scenario.yaml を composer.json のフォルダに配置してください。

以下のようなバッチを作成して実行することで動きます。

まだまだ粗削りですが、scenario.yaml を作りこんでいくことで E2E のテストを実現することができます(適宜、バージョンアップしていきます)。
細かい処理については、ソースコードを解析して見てください。

[PHP]Seleniumを使ってみよう(1)

福岡拠点の野田です。今回は、Seleniumを使った自動テストをやろうということでSeleniumの環境構築まで紹介しようと思います。

SeleniumはJavaで動かすことができます。Javaがインストールされていない環境では、JRE(ランタイム、単体実行向け)もしくはJDK(開発者向け)をインストールする必要があります。

Java SE Runtime Environment 8 Downloads
http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

各環境にあったファイルをダウンロードしてインストールしてください。

続いてSeleniumサーバーをダウンロードします。

https://www.seleniumhq.org/download/

Seleniumはサーバーとブラウザを操作するWEBドライバーの組み合わせ動きます。

まずは、Selenium Standalone Serverをダウンロードします。ダウンロードしたファイルを任意のフォルダに配置します。

あとは以下のドライバーをダウンロードして、上記と同じフォルダに放り込みます。

The Internet Explorer Driver Server (IEを操作。IEDriverServer.exe)
※SeleniumのサイトよりDL

Mozilla GeckoDriver (Firefox を操作。geckodriver.exe)
https://github.com/mozilla/geckodriver/releases

Google Chrome Driver (Chromeを操作。chromedriver.exe)
https://sites.google.com/a/chromium.org/chromedriver/

起動するには、仮に server.bat として以下のような内容でバッチを作成します。

※上記は、IE + Chrome を指定する例

server.bat をダブルクリックするとSeleniumサーバーを起動することができます。

続き:https://blog-s.xchange.jp/?p=424

FlashプレイヤーインストールでIPが変わった話

開発環境のサイトにアクセスができなくなり、解決した方法です。

皆さんももしかしたら同じ現象に陥るかもしれませんので、ご参考まで。

 

昨日までアクセスできていたのに、本日開発環境にアクセスできなくなりました。

URLをたたくとぐるぐる回り、どのページにアクセスしても同じ状態です。

他の人に聞いてみると、アクセスできるとの事。

何かネットワーク設定が変わってしまったのではと思い、PCのグローバルIPを確認してみると、見たことのないIPが表示されています。

結果として、

Flashプレイヤーインストール時に同時に知らぬ間にインストールされていたMcAfeeが原因でした。

McAfeeの関連アプリをアンインストールしたところグローバルIPが元に戻り、開発環境にアクセスできるようになりました。

【Python】pandasを利用した文字検索の方法と性能比較

東京拠点 本橋です

私の行っているプロジェクトでは開発言語の一部にPythonを使用しています。
csvなどの表形式データを処理するのにpandasライブラリはとても便利ですね。
そしてpandasを使ってSQLと同じように検索をする事が多いと思います。

「pandasで使って文字データに対する曖昧検索の処理をしたい。
けど、どうすればいいの?」

という事があったので検証してみました。

 

pandasにも曖昧検索用に以下の関数が用意されています。
 ①・match(正規表現)
 ②・contains(正規表現)
 ③・contains(検索文字)

どれを選べば良いのでしょうか・・・
技術検証を兼ねて調査してみました。

①match関数を使って正規表現で検索
 pettern = ‘.*’ + 【検索したい文字列】 + ‘.*’
 df_1[df_1[‘文字データ項目’].str.match(pettern)]

②contains関数を使って正規表現で検索
 pettern = u'(^(?=.*’ + 【検索したい文字列】 + ‘))’
 df_1[df_1[‘文字データ項目’].str.contains(pettern)]

③contains関数を使って検索文字のみで検索
 df_1[df_1[‘文字データ項目’].str.contains(【検索したい文字列】)]

・性能比較

 データ量:50項目20万行の中から80行のデータ抽出に対して実施

・結果

 ①・match(正規表現) ・・・・ 133ms
 ②・contains(正規表現)・・・・ 156ms
 ③・contains(検索文字)・・・・  96ms

containsは曖昧検索にも対応している関数なので
わざわざ正規表現にすることでかなり遅くなるようです
今回は正規表現で難しい事をしたいわけでもないので、
contains(検索文字)を採用!