2016年2月11日木曜日

PHP・Javascriptのデバッグ

PHPとJavascriptのデバッグで戸惑ったのでメモ。

PHP:最初エラーが何も出なくて戸惑った。全部echoとかなの?って焦ったが、そんなはずはなく。よかった。設定をいじるとエラーがブラウザで表示されるらしい。
設定ファイルをいじることもできるようだが、ファイルごとに設定する方向で対応。
このへんを参考に。
// エラー出力しない場合
ini_set( 'display_errors', 0 );
// エラー出力する場合
ini_set( 'display_errors', 1 );

http://www.24w.jp/study_contents.php?bid=php&iid=php&sid=setting&cid=001
http://qiita.com/yukke0310/items/600ba1b33f0073c97a51


Javascript: こっちも最初エラーが出ずで焦る。こっちはブラウザから見るらしい。Google Chromeなら表示→開発/管理→JavaScript コンソールで見れる。よかった。他ブラウザは申し訳ないのですがわかりません。

2016年2月6日土曜日

vimでPHP開発環境を整える

そういえば、

AWSのOSがLinuxでGPUが使えない(?)のでvimに挑戦!
とりあえずPHP開発環境を整えたいと思います。

とりあえずプラグインの入れ方
http://qiita.com/kamina91/items/4d2f2f12df8512fac889
.vimrcって何?ってところから。
とりあえずホームディレクトリに何か書いて入れとけばいいと。
gitのやり方とかも書いてあってありがたいです。

このへんから適当に選んで入れてみよう。そうしよう。
http://qiita.com/okamos/items/caf5a0b19ce893a75363
http://tti.matrix.jp/blog/2015-05-19/vim%E3%81%A7%E3%81%AEphp%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/
http://qiita.com/tekkoc/items/8897cdf378305c4e547d
http://qiita.com/shima_529/items/bf647b9764136c1ac7f7

とりあえず構文補完をしてくれるらしいneocomplete.vimというものを入れてみよう。
と思ったけど、Luaを入れてないとダメなのね(で入ったけどvimで使えない)。
Luaの入れ方
http://saihoooooooo.hatenablog.com/entry/2013/11/29/152525

一応入ったが、途中で.vimrc内の記述がおかしいとのエラーが出て使えなかった。が、いじってたら直った(原因不明)。

Luaが有効なvimを入れ直したら、色分けとか自動インデントとかなくなってたので、これらを参考に修正。なるほど、便利かもvim。
http://51flya.com/linux/581.html
http://www.garunimo.com/program/linux/corumn-linux22.xhtml
http://vimblog.hatenablog.com/entry/vimrc_set_tab_indent_options

以上

MySQLのお勉強

まずこの部分から作成。

MySQLについてお勉強。何せ使ったことがないので。
今までは大体csvファイルとかでデータ管理してました。
何が違うのかいいのか(検索とかか?)ということも含めお勉強。

大体の使い方はここでお勉強。
http://se-java-school.com/itstudy/database/intro_db_jdbc/intro.php
なるほど便利そう。



他さらに調べたこと

属性について
書く変数に対していろんな制約が付けられる。
使ったのを並べておきます。

UNSIGNED...符号をつけない(負の値を扱わない)。
ZEROFILL...桁数が足りない場合、上位の桁を0で埋める。
NOT NULL...NULLにしてはいけない(データの中身が空ではいけない)。
AUTO_INCREMENT...自動的に連番を入力する。

NOT NULL以外はid以外で使わないかも。

あとTABLE作成のときは
PRIMARY KEYやFOREIGN KEYにを付ければいいのか?

括弧の意味
なんか データ型によって意味合い違うみたい。
整数型は表示桁数だが、浮動小数型や文字列型は最大データ長を指定しているらしい。
ややこしい。

位置情報の扱いかた
単に緯度経度を数値型で保存しとけばいいのかと思っていたが、GEOMETRY型というのを使うと何かと便利らしい。
使ってみる。ENGINE(後述)はInnoDBでも扱えるが、実際はMyISAMでしか使えないらしい。


DATETIMEとTIMESTAMP
TIMESTAMPは自動更新されるのか?
データはほぼ同じみたいだが、2つ以上置くと扱い面倒かもだし、おとなしくDATETIMEにしといた方がいいのか?

BLOBとTEXT
大きなデータを乗せるときに使うらしい(データ長に制限がない、その代わり処理の負担が大きくなる?)。
画像とかはBLOBらしいが、TEXTにするにはどのくらいからが目安なのだろうか。
それほど、長いのは扱わないということでVARCHARにしときます。

ENGINE
何か色々あってよくわからないが、InnoDBとMyISAMってのが主流らしい、詳細は全然わからんがとりあえずそれで。

認証
どんな情報がいるのかみたら、大体の場合は文字列らしい。
とりあえずVARCHAR(256)くらいで用意しとけばいいのかな。

2016年1月25日月曜日

作戦変更 -自分で作る-

s2Memberの支払いで無料版だとpaypalに登録していないといけないことが判明したので作戦変更。(テストするのが面倒)

やっぱりwordpress経由じゃなくて一から作ってみますか。
そんなに難しそうじゃないし。

データベースはWordPressが使ってたって理由でMySQLで。
MySQLはちゃんと扱ったことなかったのでお勉強。
http://se-java-school.com/itstudy/database/intro_db_jdbc/intro.php
ふむふむ。画像の扱いは?
http://hijiriworld.com/web/mysql-img-binary/
ふむふむ。元dataの他にmineタイプを記録していた方がbetterと。
blobでなく、binaryとかでもいいのかな。

設計はどうするか。
https://thinkit.co.jp/article/1210/1
ふむふむ。http通信でやれば良いと。
get, postでリクエストして、xmlで返す。
(iPhoneでなくてもこの設計で応用できるな)

xmlで画像データ送りたいんだけど。
http://astel-labs.net/blog/diary/2010/07/100721-1.html
ふむふむ。Base64を使ってできると。

というわけで基本設計はこうします。


システムの中心はデータベースですね。
EC2のボリューム内にMySQL作ってしまうか、AWS RDS使うか迷ったけど、
とりあえずお試しだし、サーバープログラムのデータベース接続先いじればいいし、WordPressインストールしたときに既にMySQLインストールしてあるので、RDSは使わない方向で。

なんかできそうな気がスル!
PHPからMySQLにアクセスする方法と、UI(クライアントプログラム)ですかね。
あとwebpayでの支払い処理。
PHPは慣れてない。お勉強はつづく。

2016/3/28追記
このサイトにこんな記述が!
これまでのWebサービスでは、サーバ側で画面(HTML/DOM)を生成していたのに対し、最近のWebサービスでは、サーバ側はDB操作のみを処理し、クライアント-サーバ間をAjaxでJSON交換し、画面(HTML/DOM)はクライアント側で生成する方式が増えてきました。AngularJSは、クライアント側 JavaScript のコントローラでデータモデルを管理し、画面(ビュー)とリアルタイムにデータを交換するのに適したフレームワークです。
自分の設計は間違っていなかった!(笑) 

s2Memberの使い方

WordPressを会員制にする+BuddyPressとの相性がいいプラグインs2Memberの使い方がよくわからなかった(日本語解説がほぼなかった)ので備忘録。
これだけでも十分なのですが、さらに機能(支払いが主?)が充実したPro版もあるです。

最初にやること
Login Welcome PageとMembership Option Page(ブランクの固定ページ)を作って、s2Member > General Optionsで関連付けする。


s2Memberは基本的にLoginの前にPayPalでの支払い設定を求めるらしいのでその設定。

PayPalでの操作
PayPalアカウントの作成、ビジネスアカウントへのアップグレード、API証明書の請求
この辺は他で手順解説サイトがあると思うので割愛。
ビジネスアカウントへのアップグレードは郵送手続きとかも噛むので結構時間かかります。

支払い管理
上記で登録した内容をs2Member → PayPal options → PayPal Account Detailsに記入。
s2Member → PayPal ButtonsでSubscribers Levelを選んでShortcodeを作成。それをMembership Options Pageに設定した固定ページ(テキスト部分)に貼り付け。

誰でも登録できるようにする
Open Registrationを設定するとPaypal支払い設定をしなくても、無料ユーザー(Subscribers Level #0)として登録可能になる。
s2Member > General Options > Open Registrationで設定可能。

2016年1月14日木曜日

便利そうなBuddyPressのプラグイン

便利そうなBuddyPressの色々プラグイン調べました。
とりあえず作っているサイトで採用するかどうかで分類しました。
参考までに。

採用
s2member
WordPressを会員制にするプラグイン。
アクセス管理とか色々機能が付いているようだ。
Paypal使って支払いまで管理できるようなので、ひとまずはこれだけでいいかも。

Buddypress Activity Plus
BuddyPressアクティビティに画像とか動画とかリンクとか貼れるようにするプラグイン(デフォルトではテキストのみ)。
EWWW Image Optimizer
上とセットで。
投稿される画像のサイズを最適化するプラグイン。
とんでもないサイズの画像対策。

BP Profile Search
プロフィール検索の拡張。サイドバーに付けられる。

Invite anyone
招待機能。ユーザーを増やそう。

Events Manager
イベント管理機能を付与するプラグイン。
出欠の管理とかもできるらしい。
入れたらすんなり入ったようなので採用。


未定
SiteGuard WP Plugin
不正アクセス対策で有名らしい。
なぜかonすると出たあとは入れなくなるので(s2membersとの相性?)、今のところ外しています。

Social Login
ソーシャルサイトのアカウントを認証に使うためのログイン。まだ試してない。

Never Let Me Go
大会ページを作成。まだ試してない。

Buddypress Message Attachment
BuddyPressメッセージ機能拡張。Debugのエラーメッセージが出るので取り合えず切っている。

BuddyPress Auto Group Join
新規ユーザーを自動的に特定のグループに加入させるプラグイン。
先々使うかもしれないので。


不採用
simple membership
s2Memberと同様にWordPressを会員制にするプラグインとして有名らしい。
s2membersの方がBuddyPressとの相性がいいみたいなのでそっちを採用。

Welcome Pack
Theme My Login
Member Only
Absolute Privacy
アクセス制限とログイン関連。
s2Memberで代用できそうなのでパス。

Advanced Custom Fields
プロフィール欄の拡張。BuddyPressのデフォルト機能で十分だったのでパス。

RS Buddypress Activity Refresh
アクティビティ自動更新用プラグイン。デバックエラー出てるし、必須ではないのでパス。



大まかにはこれで事足りそう。
しばらくはこれをいじって使えるようにするのが目標。
後は、

  1. 課金方法
  2. アバター作れない問題
  3. プロフィールのタイプごとに分岐

が解決すれば形にはなるかな。

課金はとりあえずs2MemberのPaypal機能を試して見る。
でも月で自動払込とかにしたいんだよな。
プロフィールタイプで課金方法も分けたい。

アバターが表示されない問題が発生していて、さすがにそれは解決しなければ。
BuddyPress Activity Plusは動くし、写真はアップロードは出来ているみたいなんだけど。
jQueryとか書いてあるサイトあるけど今のところ原因不明。

プロフィールタイプ(フィールド値?)ごとに閲覧制限はどうしようか。
1. そんなプラグインを探す。
または作る(どれくらい手間なんだろう?)。
2. bg_register_member_type()を使う。
3. グループに強制参加させてグループごとに閲覧制限。
とか??
とりあえず全部一緒でいいか。

2016年1月1日金曜日

BuddyPressを動かす

WordPressがうごいたのとりあえずBuddyPressをインストール
これを参考にしました。
http://ryus.co.jp/blog/bpinstall/
http://ryus.co.jp/blog/bpuser/
http://ryus.co.jp/blog/bpgroup/

問題1
そもそもインストールできない。
どうやらapacheにファイルを弄る権限を握らせなければならなかったようだ。
下記のサイトの一つ目の対策で解決した。
chown -R apache:apache (WordPressを設置したディレクトリの名称)
http://www.sandalot.com/wordpress%E6%9B%B4%E6%96%B0%E3%81%A7ftp%E5%85%A5%E5%8A%9B%E7%94%BB%E9%9D%A2%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AE%E5%AF%BE%E5%87%A6%E6%B3%95/

問題2
日本語化はまだ対応してない(?)ようなのでパス。(後日やるはず)
最悪欧米対象で作ります。
俺、英語できるし(高笑)

問題3
早速 新しいユーザーを登録しようとしたら、登録画面がでない!
これはapacheのhttpd.confをいじったら直った。
最下行に追加(パスは適宜変更)↓
<Directory "C:/pg/Apache/Apache2.2/htdocs/wordpress">
    AllowOverride All
</Directory>
http://www.adminweb.jp/wordpress/permalink/index2.html
http://qiita.com/s2maeda/items/21d9458e44f86597d1ae
あと大事なのはapacheを再起動しないといけない。

.htaccessファイルがおかしいのかもと疑ったが違った。でもまあ備忘録
http://itstudio.co/2014/10/21/3146/
http://www.cherrypieweb.com/weblog/technical/20131017121752.php

問題4
Activity, Member, Groupはまだでない。
パーマリンクになぜかindex.phpが入るようになっていたのでそれを消したら直った。
http://liginc.co.jp/web/wp/customize/148458

あー疲れた。でも楽しい。
これで一通り動くことを確認。

これでなんとかSNSっぽいのが作れた!