作成者別アーカイブ: admin

WebP対応

WebPに変換するコマンド

■cwebp
・インストール
yum install libwebp-tools

通常変換
cwebp sample.jpg -o sample.webp

可逆圧縮
cwebp -lossless sample.jpg -o sample.webp

圧縮率指定(デフォルトは75?)
cwebp -q 85 sample.jpg -o sample.webp

■ImageMagick
・使えるか確認
convert -list format | grep WebP

↓こんな感じで返ってきたらOK
WEBP* WEBP rw- WebP Image Format (libwebp 0.4.3 [0203])

使えなかったら、アンインストールして新しいバージョンをインストール

・インストール
yum install epel-release
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6.rpm

yum install –enablerepo=remi ImageMagick7 ImageMagick7-devel

・再度使えるか確認
convert rose: rose.webp
identify rose.webp

↓こんな感じで返ってきたらOK
rose.webp WEBP 70×46 70×46+0+0 8-bit sRGB 906B 0.000u 0:00.000

・可逆圧縮で圧縮率を指定
convert image.jpg -quality 85 -define webp:lossless=true image.webp

Apache2でやったら、
Content-Type: audio/unknown
になった、、、

とりあえず、これを設定したら認識してくれた。

AddType image/webp .webp

・参考URL
https://github.com/vincentorback/WebP-images-with-htaccess

Facebookで無期限のPage Access Tokenを取得する

tokenの期限が2か月とかだと
使いづらいので、やっぱり無期限がよい!

簡単なのは、FacebookアプリのApp ID と App Secret を | でつないだものを
App Access Token として使用すること

でも、これだとルート制限に引っかかることがあった。。。まぁしょうがないけど

こちらを参考に試してみる
https://gist.github.com/xl1/fe779a817a9d4938193d

・ユーザーアクセストークンを取得
いろいろ方法はあるけど、とりあえず簡単そうなやつをチョイス
↓こちらにアクセス
https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Faccounts
右上のプルダウンで該当のアプリを選択して、
[トークンを取得]から[ユーザーアクセストークンを取得]をクリックすると
アクセストークンのところに、ユーザーアクセストークンが表示される。

こちらのトークンの有効期限は1時間

・次に長い期限のユーザーアクセストークンを取得する
先ほど取得した短いトークンとapp_id、app_secretをセットして下記URLをたたく
https://graph.facebook.com/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={token}

app_idやapp_secretは、下記URLから該当のアプリを開いて
[設定] > [ベーシック]から確認できる
https://developers.facebook.com/

・最後に無期限のページアクセストークンの取得
再びこいつにアクセスして、アクセストークンに長いユーザーアクセストークンをセットして
[送信]をクリック!!
https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Faccounts

そうすると無事に無期限のアクセストークンの取得完了!!

※ページを作成していないと、返ってくる値が空なので
 ↓こちらからなんでもよいので作成しておく
 https://www.facebook.com/pages/create.php

最後にちゃんとできているかを
アクセストークンデバッガーで確認!
https://developers.facebook.com/tools/debug/accesstoken/

有効期限が「受け取らない」になってたら
たぶん大丈夫でしょう!!

Google Apps Scriptのバージョン管理

Google Apps Scriptは、なかなかいいんだけど
バージョン管理があんまりうまくできなくて

なので、ローカルに落として
Gitで管理する手順をメモメモ

まずは、node-google-apps-script をインストール!

Google Developer Console のプロジェクトで Drive API を有効にし、
OAuth client ID と secret(json)を取得

下記のコマンドを実行して、返ってきたURLにブラウザでアクセス

ファイルを落としたいフォルダに移動して
下記のコマンドを実行!

キーには、ScriptのファイルID、またはスクリプト IDを設定

以上!

gitで競合が起きたとき

とりあえずdiffで差分を確認してみる

その後、checkoutコマンド実行!

そしてpull

競合こわいっす、、、

facebookのアクセストークン取得

■アプリの認証を行う

ブラウザで上記URLにアクセスして、リダイレクトされたURLの
パラメータにセットされてるcodeの値をメモメモ

■アクセストークンの取得

これをブラウザでアクセスすると
access_tokenを取得できる。ただ有効期限が2時間

下記URLより2か月に延長できる
アクセストークンデバッガー
https://developers.facebook.com/tools/debug/accesstoken/

【JSP】小数点以下を省いて切り上げ

JSPで、小数点以下を省いて、切り上げたいと
思ったんだけど、あんまり検索で
ひっかからなかったのでメモメモ

ちなみにformatNumberには、他にも
こんな属性があるらしいっス!

value:フォーマット変換する数値データっス!
var:フォーマット変換した数値データを格納する変数っス!
type:数値データの種別を「NUMBER」「CURRENCY」「PERCENT」から指定っス!。デフォルトは「NUMBER」っス!
pattern:出力するフォーマットを直接指定するっス!
currencyCode:通貨コードを指定っス!「JPY」とかっス!
currencySymbol:通貨記号を指定っス!「\」とかっス!
groupingUsed:カンマ「,」を使用して、桁区切りするかどうか(true/false)っス!。デフォルトはtrueっス!
maxIntegerDigits:整数部分の最大桁数っス!
minIntegerDigits:整数部分の最小桁数っス!
maxFractionDigits:少数部分の最大桁数っス!
minFractionDigits:少数部分の最小桁数っス!
scope:varで指定した変数を格納するスコープ「page、request、session、application」を指定するっス!デフォルトはpageスコープっス!

【JSP】文字列を含むかをチェック

JSP内で、文字列が含まれるかを
チェックしたかったんだけど、

なんかJSPってあんまり
検索しても出てこないのでメモメモ

あるオブジェクトの中に、
別のオブジェクトが含まれているかどうかをテストするっス!
第一引数に指定可能なオブジェクトと、
オブジェクトの型によりテスト方法が変わるっス!

java.util.Collection
 コレクションの要素に第2引数が含まれているかどうかをテストするっス!
java.util.Map
 マップの値に第2引数が含まれているかどうかをテストするっス!
その他のオブジェクト
 文字列表現としての第1引数に部分文字列第2引数が含まれているかどうかをテストするっス!

【JavaScript】 数字をカウントダウン

ある数字からある数字まで
カウントダウンしながら表示するやつ

Google API を使うときのリフレッシュトークン取得方法

なにかと便利なGoogle API

さくっとリフレッシュトークンが取得したい!
といったときは、こちらの2つの手順をするだけー

でも、覚えられないのでメモメモ

手順1.まずはリフレッシュトークンを取得するために
 認証コードというものを取得。ややこしい

こちらのURLにブラウザからアクセス!

※redirect_uriは、もし存在するならそちらのURLを設定

手順2.いよいよリフレッシュトークン取得

curlコマンドを叩ける環境から、以下を投入っ!

成功すると、下記のような感じで
アクセストークンとリフレッシュトークンが取得できるよー

アクセストークンの期限が、1時間なので
期限きれたら、再取得しよー!

【Google Apps Script】5分の壁の向こう側

Google Apps Scriptで処理を実行していて
[起動時間の最大値を超えました]
なんてメッセージが出たので対応方法をメモメモ

どうやら5分以上かかる処理をやっちゃダメよ!
ってことらしいのだ。。。
まぁ無限ループとかされてもねってことで
しょうがないのかな

5分(この例だと正確には4分48秒)以上かかってたら
自分の関数を、1分間隔のトリガーにセットしてから処理終了。

で、再度始まったときにそのトリガーを削除するようにすればOK!

途中までの結果を残しておきたい場合は、
シートとかユーザプロパティやらになんか書き残しておこう!