gaggitのブログ

コーディング、ガジェット、TIPS関連、FX

Perl Google::API::Client 使い方

8/4(金)にGoogle::API::Clientがインストールできた。が、どのようなメソッドがあるかはよく分からないので、まずは、cpansearch.perl.orgのサイトからGoogle::API::Clientのソースを見てみる。23行目あたりに

...'https://www.googleapis.com/discovery/v1/apis/{api}/{apiVersion}/rest'

とあるので、ブラウザで
https://www.googleapis.com/discovery/v1/apis/calendar/v3/rest
と入力してみると、Calendar APIの仕様がJSONで返ってきた。
methodsで検索してみると、中段あたりに以下の様に表示されている。

f:id:gaggit:20170805001909p:plain

ということは、
うえちぇこさんのブログで$service->calendarList->list->exectuteの
部分は、このmethodsの上下の部分に該当。これでなんとか、メソッドが分かったので、他のAPIでも応用がききそうです。
次回は、FusionTablesでこの方法でメソッドを利用できるか、やってみます。





 

 

参照サイト:

http://cpansearch.perl.org/src/SHIGETA/Google-API-Client-0.14/lib/Google/API/Client.pm

[perl]Google::API::Clientを使ってみた | うえちょこ@ぼろぐ

Perl module インストール 3つの解決方法

PerlでなかなかインストールがOKにならない人のために、メモ書きです。Perlのモジュールをインストールが成功するのに、とりあえず3つほど方法があります。

1つ目には、cpanmをインストールして、cpanの代わりにcpanm(cpanminus)でインストールをしてみる。(前回、記事にしたdmake.exeはcpanmに入っていたもよう)以下は、cpanmのインストール方法。

cpan App::cpanminus

 

2つ目は、search.cpan.orgのサイトから、前のバージョンのモジュールをダウンロードし、解凍後、「INSTALL」ファイルに従って、手動でインストールしてみる。

 

3つ目は、cpanmに-Fまたは--forceオプションを使用して、無理やりインストールです。

cpanm --force モジュール名

 

p.s.

cpanmを導入後、--forceオプションを使用して、ようやくGoogle::API::Clientモジュールのインストールに成功。

 

dmake インストール 解決

Perlで、モジュールをインストールしようとすると、dmakeがなく、エラーとなります。ネットで検索すると、windowsではMicrosoftから提供されているnmake.exeを使用することまでわかりましたが、すでにダウンロード先のリンクがなくなっています。

次に試したのが、cpanでのdmakeのインストー

コマンドプロンプトから、cpan install dmakeを実行したところ、なにやら成功している模様。

しかし、C:\Perl64\binとC:\Perl64\site\bin配下には、作成されず。。。

夜になって、C:\Perl64\cpan\build配下にdmake-(6文字の英数字)のディレクトリがあるのを発見。その配下にdmake.exeがありました。。。

 

p.s.

開発も2歩進んで、3歩下がっているようイメージです。進んで、下がっていというよりも、丘の先にさらに高い山がそびえたっていて、その前に深い谷があるような感じです。。。

暑い、暑い上に、今年はエアコンがないので、ことさら開発が進まねー。

Perlでの文字列の置換 暫定対処

正規表現と言ったら、いまだにsedだったりしますが、Perl正規表現で文字列の置換(抽出)がうまく行かなったので、その例と対処方法を記しておきます。

文字列:2017-07-28T12:00:00Z

置換(抽出)したい文字列:2017-07-28

$data="2017-07-28T12:00:00

×

my $date=~ ($data =~ /([0-9]{4}-[0-9]{2}-[0-9]{2})T.*/);

(my $date, my $temp)=~ ($data =~ /([0-9]{4}-[0-9]{2}-[0-9]{2})T(.*)/);

上記で、とりあえず日付だけ抽出することが、できました。

固定文字列なので、substr関数のほうが、記述も簡単で処理も速いのは十分、承知していますが、ここではあくまで例として。。。

my $date = substr($data,0,10);

 

EditTextで文字の行間を変更

文字の行間の変更とアンダーラインの削除が一度にできます。と言うよりも、デフォルトで設定されているものをクリアするイメージかも。この設定により、文字の行間が縮まります。

active_main.xmlのEditViewタグ内に以下を追記します。

android:background="@null"

もちろん、styles.xmlにも以下のようにして、記述できます。
<style name="Style1" >
<!-- Customize your theme here. -->
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:ems">4</item>
<item name="android:background">@null</item>
<item name="android:inputType">number</item>
<item name="android:padding">0sp</item>
<item name="android:textSize">16sp</item>
</style>

styles.xmlに記述する場合には、active_main.xmlのEditViewタグ内で以下のように関連付けます。
style="@style/Style1"



スマホ フリック入力でコーディング(ATOK編)

スマホで暇つぶしに普段はカレンダ、ToDoListの更新、メール、ゲーム、ブラウジングをしていますが、非効率でもなんだか無性にコーディングをしたくなる時があります。そんな時に限って、ノートPCは自宅に置いてたりします。

コーディングのためにスマホに接続可能なBluetoothのキーボードを買うのも、なんだかなー。ということで、たとえ数行でもスマホで入力しようと思いソフトキーボードを表示させて、英字キーボードで入力するも記号入力にひと手間かかり、面倒くさい。

幸い、ATOKフリック入力設定で、1から6キーと8キーの合計7つの右キーの記号割り当ての設定変更が可能なので、以下のように右キーの割り当てを変更してみました。(7キーはs、9キーはzに割り当てなので変更不可)

1キー {(左中かっこ)

2キー [(左大かっこ)

3キー "(ダブルクォーテーション)

4キー }(右中かっこ)

5キー ](右大かっこ)

6キー =(イコール、デフォルトのまま)

8キー ;(セミコロン)

f:id:gaggit:20170630163332p:plain

変更方法は、「設定」「言語と入力」「ATOK...」「テンキー」「フリック入力の設定」の「英字キーフリック」です。割り当てられるのは、記号のみで、リストから選択となります。

 ちなみにデフォルト設定は、

1キー :(コロン)

2キー #(シャープ)

3キー _(アンダースコア)

4キー %(パーセント)

5キー &(アンパサンド)

6キー =(イコール)

8キー ~(チルダ)

 

p.s.

7か月ぶりにブログを更新しました。7か月の間、会社の倒産、パワハラなどで転職を3回しています。なんだかモチベーションが湧かなく、白猫ばかりやってましたが、最近、少し気持ちが復活。。。

開発メモ(Socket通信)

 前々回、開発メモで書き残したSocket通信での試行、正確にはSSLSocketを使用しての通信ですが、コードをHttpURLConnectionから書き直してみました。結果は、FusionTables接続には至りませんでしたが、今までInputStreamがnullだったのが、レスポンスが返ってきました。変更前のコードは、AsyncTask+HttpURLConnectionでしたが、変更後のコードは、IntentService+SSLScoketの組み合わせです。AsyncTaskで出来なかったと言うわけではなく、単純に試していないだけです。もう少し試行したのち、本命のJavaScriptでの記述に変更してみたいと思います。

レスポンス結果は簡略して、「400 Bad Request」です。

あと、言語がenとなっているので、こちらもヘッダを追記して、対応しないといけないですね。。。

400. That's an error.

Your client has issued a malformed or illegal request.That's all we know.

 

参照サイト:

MSC00-J. セキュアなデータ交換には Socket クラスではなく SSLSocket クラスを使用する