2019年8月28日水曜日

Facebookのいいねボタンを設置する方法

こんばんは、こうちゃんです。

おそらくサイト作りをする方には大切な情報、
サイト上にFacebookのいいねボタンを設置する方法、です。

昨今SNSメディアの流行はすごいものがあり、個人のサイト・ブログを駆逐せんばかりの勢いです。
となると、必然的に個人のサイトなども生き残りをかけて、ある程度SNSなどとからめて流行らせていく必要もありまして、そんな技術のひとつに、サイトの中に、そのサイトへのSNSでの投票を意味する、いいねを送れるようにする、というものです。
その代表例が近年大流行のFacebookのいいねでして、ここではそれを可能にする、
ボタンの設置の技術的な解説を行います。

Facebookイイねボタン作成方法

必要なもの
facebookアカウント
facebookデベロッパーアカウント
facebookアプリID
(古いサイトだと誰でも作れるように書いてあるが、最近のバージョンは不特定多数が使えないように登録時にfacebookアプリIDが必要なように)

1.facebookにログイン

2.
https://developers.facebook.com/docs/plugins/like-button/?locale=ja_JP
にアクセス、まず右上メニュー、マイアプリから、新しいアプリを作成、を選択

3.この時点でデベロッパーアカウントを持ってないと、登録画面に、
facebookを持ってて、あとはいくつか規約に同意するだけでデベロッパーアカウント登録はすぐにできる

4.その後、新しいアプリ作成続行、
アプリ名を適当に、イイネAPP、とかつけて登録する

5.画面中央の、いいねボタン構成ツールで必要情報、対象URLや、幅、タイプなどを選択してコードを取得ボタン押下
ボタンのタイプは、
standard ボタンが表示され、横に文字で〇人がいいねしました の文字
box_count いいねボタンの上にいいねされた数表示
button_count いいねボタンの右にいいねされた数表示
button シンプルにいいねボタンだけ表示

6.画面に、プログラム用コードと、iframe用があるので、iframe用タブを押して、アプリIDを選択、のところで先ほど登録したアプリIDを選択して、下のコードをコピーして使う

7.コードでは対象URLが固定で決まってしまうのでサイトの中で使う際には、サイトのURLなどに合わせて変わるように変数等で動的に割り当て

これで、自身のサイトなどのページ中にいいねボタンを埋め込むことが可能になります。
よろしければ参考にしてぜひ埋め込みチャレンジしてみてください。


こうちゃん

2019年8月20日火曜日

Eclipseで色々な拡張子のファイルをPHPとして扱う

こんばんは、こうちゃんです。

自分で一時期ハマった部分ですので、復習も兼ねて備忘録を。

今回実行したいテーマは、
「Eclipseで色々な拡張子のファイルをPHPとして扱う」

システム開発にはとっても役立つ統合開発環境のひとつ、若干重いものの、
優秀な機能揃いの不朽の名作、Eclipseを使っていてちょっと生じた悩みの解決法です。

Eclipseは開発時に、.phpのファイルですと、デフォルトでPHPファイルとして認識して、
各種スクリプトの補完やエラーチェックをしてくれますが、
これが独自定義のファイル(仮に拡張子.abc)や、htmlファイルはPHPとしては扱ってくれません。
これを自分の開発しているシステムで、どうしてもhtmlファイル内でPHPを扱う必要性や、独自定義の拡張子でファイルを作る必要があり、.phpのファイル以外にも、PHPエディターで編集する必要が出てきました。

そんな時に役立つのが、Eclipseの多彩な設定機能です。

・ウィンドウ → 設定 → 一般 → エディター → ファイルの関連付け
 を開く

・ファイル・タイプ欄の右側から「追加」をクリックして、ファイル・タイプに、追加したいアスタリスク付き拡張子(*.abcなど)を入力して「OK」をクリック

・ファイル・タイプの一覧に追加した*.abcが表示されるようになっていますので、クリックして選択、ウインドウ下部の欄「関連付けられたエディター」の「追加」をクリック

・「エディターの選択」画面で、「内部エディター」を選択して、このファイルタイプで使いたいエディター(PHPとして扱いたいならPHPエディター)を選択、「OK」をクリック

・「関連付けられたエディター」欄に今追加したPHPエディターを含め複数のエディターが表示されるので、PHPエディターを選択、右側の「デフォルト」をクリック

・ウィンドウ → 設定 → 一般 → コンテンツ・タイプ を開く

・コンテンツ・タイプ → テキスト → PHPコンテンツ・タイプ にて、「ファイルの関連付け」欄右側、「追加」をクリック

・「コンテンツ・タイプ」入力欄に今回PHPとして扱いたいファイルを入力(*.abc)

・適用して閉じるを選択

・Eclipseを再起動
※バージョンによっては開いていたファイルにはキャッシュがきいて適用されない場合があるので、開いていたファイルは閉じて再度開く

これで、希望の *.abc のファイルもPHPエディターで開くことができ、無事にPHPの補完機能、カラーリング等を使用することができるようになります。

このひと手間を加えるだけで、ファイルの編集が大変に便利になりますので、
新しい拡張子を扱いたい場合などは最初にこの手順をやりましょう。

こうちゃん

2019年8月10日土曜日

MAX_QUERIES_PER_HOURでデータベース繋がらない

こんばんは、こうちゃんです。

先日開発中のサイトで突如データベースに繋がらなくなり困ってしまう事態が起きまして、
未来のために原因や解決方法等を備忘録代わりに残しておきますー。

まず、プログラム整備中のサイトにある時アクセスしたら、

has exceeded the 'max_connections_per_hour' resource (current value: 〇〇) i
n

みたいなエラーが出てデータベースに接続するプログラムがエラーで通らなくなってしまいました。
困ったことにこれ、エラー発生原因部分のプログラム消しても何しても一定時間アクセスできなくなってしまうんですね。
何もできないので、その間に、このエラーの原因や対処方法を確認しまして、一応の解決をしましたのでそのあたりのご説明を。

まずエラーに関しては、単純にエラーの英語文通りで、
プログラムで、一時間以内に、
MySQLの、max_connections_per_hour、という設定値以上のセッションを張ってしまったことが原因です。
この値はMySQLユーザーごとの設定ではありますが、
だいたいサイト開いた時に実行プログラム内で、どのユーザーで繋ぐかは決まっているのがほとんどですので、例えば、データを引き出すのに10クエリ発する画面があったとして、その画面を1時間以内に100回開かれれば、1000セッションを張ったことになり、設定値が1000であれば、これでもうエラーに引っ掛かります。

説明でも、
時間単位の接続数: 1時間で新しく開ける接続
これ、私のレンタルサーバーでは1500になっていたのですが、
1時間に新しく開ける接続、てことは、シンプルにサイトを見たら、トップページでSQL使っていたらどんなに工夫してあっても、1接続は発生しますよね、てことは1時間以内にちょっとアクセスが集中しただけでもうお陀仏なんじゃ・・・
なんて設定でしょうねえ。

公式にも
サーバーが実行されると、各アカウントがリソースを使用する回数がカウントされます。過去 1 時間以内にアカウントが接続数に対する制限に達した場合は、その時間が経過するまで、そのアカウントによる以降の接続が拒否されます。
てなってますし。

さすがにこれじゃ使い物にならないので、
解決するためには、まずはプログラムの方は最適化して、むやみにデータベースに対してコネクションを張らないように(必要最低限)するのはもちろんとして、
その上で、この設定値をかなり引き上げておくか、それでもいつかオーバーすることを予期して、規制を停止するかのいずれかがよいかと。

既定数を変更する場合、

GRANT USAGE ON *.* TO 'ユーザー名'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 数字;

とSQL発行して、数字で最大数を決めればその数値になります。
また、そもそも最大数を制御したくない(規制しない)場合はこの数値を0にします。

GRANT USAGE ON *.* TO 'ユーザー名'@'localhost' WITH MAX_CONNECTIONS_PER_HOUR 0

これで今後この制御は外れます。
といっても、むやみにコネクションを増やさないようなシステム作りも心がけた方がよいのも言うまでもないですが。

こうちゃん