ウェブ公開する為の最適化、FuelPHPのURLからpublicを消す方法

FuelPHPはデフォルトではプロジェクト名/public/という階層になります。

そのためローカルで起動すると、

http://localhost/hoge/public/welcome/

とかになるわけです。このpublicが余計なパスですしカッコよくないので消したいですよね。

当然、ウェブ公開するときには消してから公開もしたい。ではこのpublicを削除した状態で表示できるようにします。

成功すると、http://localhost/hoge/welcome/

というURLでページが閲覧できるようなります。

 

■参考イメージ

  • プロジェクト名:hoge
  • hoge/public/welcome/

①hogeフォルダの中に以下の.htaccessを作成して配置します。

1
2
3
4
5
6
7
<IfModule mod_rewrite.c>
  RewriteEngine on
    RewriteRule ^(/)?$ /hoge/public/index.php/$1 [L]
    RewriteCond ${REQUEST_FILENAME} !-f
    RewriteCond ${REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /hoge/public/index.php/$1 [L]
</IfModule>

Windows で .htaccess ファイルを作る

【問題点】
Windows で .htaccess という名前のファイルを作成しようとしても、うまくできないことがあります。

メモ帳の [名前をつけて保存] から .htaccess で保存しても、.htaccess.txt になってしまう。
エクスプローラで名前を変更しようとしても、「ファイル名を入力してください。」のエラーになる。
【解決方法】
次のような方法があります。

メモ帳で保存する際に、ファイル名を “.htaccess” のようにダブルクォーテーション付きのファイル名で保存する。
htaccess.txt というファイル名で作成しておき、MS-DOSプロンプト([スタート]→[プログラム]→[MS-DOSプロンプト])からファイル名変更する。例えば、htaccess.txt が C:\HomePage にあるとすれば、以下のようにする。
C:\<cd \HomePage
C:\HomePage>ren htaccess.txt .htaccess
Windows で作成することをあきらめて、FTP ソフトでサーバーに htaccess.txt を転送した後、FTP ソフトの機能でサーバー側の htaccess.txt ファイルを .htaccess にファイル名変更する。

(引用:http://www.tohoho-web.com/ex/draft/makehtaccess.htm

②config/config.php を編集

コメントアウトされているはずなので、コメントを外して’/hoge/’を指定する。

1
'base_url' => '/hoge/',

③cssが読めなくなるので core/config/assets.php を編集

.’public/’を足すようにします。

1
2
//'url' => Config::get('base_url')
'url' => Config::get('base_url').'public/',

これでpublicなしのURLで表示ができるようになります。

【Linux】アカウントのパスワード間違えていた!remote: Invalid username or password. If you log in via a third party service you must ensure you have an account password set in your account profile.

remote: Invalid username or password. If you log in via a third party service you must ensure you have an account password set in your account profile.

remote:ユーザー名またはパスワードが無効です。 サードパーティのサービスを使用してログインする場合は、アカウントプロファイルにアカウントパスワードが設定されていることを確認する必要があります。

Githubまたはbitbucketでソース管理しているのですが、gitコマンドなどを打ってファイルを更新しようとしたら、上記のエラーがでて焦る事がありました。自分の経験ではパスワードを打ち間違えていることが原因だったので打ち直したら無事に解決。参考にしてみてください。

 

 

 

curlコマンドでapiを叩く

curlコマンドを使ってapiを叩いたりするのですが、curlコマンドってただapiを叩くためのコマンドなの?みたいなレベル感でした。
業務で使ったコマンドを簡略化すると下記になるのですが、オプションの意味とかよくわからなかったので勉強がてらまとめてメモしました。

(引用:https://qiita.com/bunty/items/758425773b2239feb9a7)

 

【超便利!】昔のファミコンはすべてこうだ、MySQL ビット演算で複数フラグ管理する方法

データベース(MySQL)

■演算子
& :論理積 (例:$x & $y )
|  :論理和 (例:$x | $y、-$z)
^ :排他的論理和(例:$x ^ $y)
<<  :$x を $y ビット左にシフト(例:$x << $y)
>>  :$x を $y ビット右にシフト(例:$x >> $y)
~  : $x のビットを反転(例:~$x)

 

状態異常表

# 状態異常名 状態異常物理名 2 進数 10 進数
1 通常 NORMAL 000000 0
2 死亡 DEATH 000001 1
3 POISON 000010 2
4 睡眠 SLEEP 000100 4
5 石化 PETRIFIED 001000 8
6 混乱 CONFUSION 010000 16
7 麻痺 PARALYSIS 100000 32

道具表

# 道具名 道具物理名 2 進数 説明
1 不死鳥の尾 FUSHICHONOO 000001 死亡状態を回復
2 毒消し DOKUKESHI 000010 毒状態を回復
3 眠眠打破 MINMINDAHA 000100 睡眠状態を回復
4 万能薬 BANNOUYAKU 111110 死亡以外の状態異常を回復

(引用:http://tetsuwo.tumblr.com/post/133001449227/php-bitmask-flags-control

 

■フラグ管理用のテーブルを作成する

CREATE TABLE user_statuses (
  user_id INT UNSIGNED,
  status TINYINT UNSIGNED DEFAULT 0
);

TINYINT(UNSIGNED) は 0 ~ 255(8bit)までなので 8 つのフラグを管理できる。

もちろん、データの型を多くすれば管理できるフラグも増えます

■ユーザー追加
INSERT INTO user_statuses VALUES(1, 0);

 

■毒を追加
UPDATE user_statuses SET status = status | 0b000010 WHERE user_id = 1;

■毒追加を確認する
SELECT user_id, status, CONV(status, 10, 2) FROM user_statuses;

 

■麻痺を追加
UPDATE user_statuses SET status = status | 0b100000 WHERE user_id = 1;

■麻痺を確認する
SELECT user_id, status, CONV(status, 10, 2) FROM user_statuses;

 

■毒消しを使う
UPDATE user_statuses SET status = status & ~0b000010 WHERE user_id = 1;

■毒消し効果を確認する
SELECT user_id, status, CONV(status, 10, 2) FROM user_statuses;

 

■万能薬を使う
UPDATE user_statuses SET status = status & ~0b111110 WHERE user_id = 1;

■万農薬の効果を確認する
SELECT user_id, status, CONV(status, 10, 2) FROM user_statuses;

 

豆情報:PHP関数

bindec() – 2 進数 を 10 進数に変換する

よく使うよね!という基本的なエクセルの関数一覧(更新中)

■英数字

11種類の集計を行う SUBTOTAL

19種類の集計を行う AGGREGATE

2値判定を行う DPRODUCT

2つのデータを比較する EXACT / DELTA

3-D参照で集計する SUM /COUNTA

AND条件に一致するセルの個数を求める DCOUNTA

OR条件に一致する合計を求める DSUM

 

■あ行

営業日後の日付を求める WORKDAY / WORKDAY.INTL

営業日数を求める NETWORKDAY.INTL / NETWORKDAYS

英数字を揃える UPPER / LOWER /PROPER

エラー表示を回避する IFERROR / IFNA

エラーを判定する ISERROR

エラーを無視して集計値を求める AGGREGATE

 

■か行

概算金額を求める ROUND / ROUNDUP

貸付金の定期回収額を求める PMT

仮入可能金額を求める PV

借入金を完済するまでに要す期間を求める NPER

借入の毎月返済額を求める PMT

関数を組み合わせる

期限までの残日数を求める TODAY

給料を求める DAY / HOUR / MINUTE

極端な値を除いて平均値を求める AVERAGEIF

切のよい時間を求める CEILNG / FLOOR / CEILING.MATH / FLOOR.MATH

金種計算を行う QUOTIENT / MODINT / TRUNC

金額価値

空白処理した範囲のデータの個数を求める COUNTBLANK

空白で無い事を条件に最大値と最小値を求める DMAX / DMIN

空白に見えるセルを見分ける

串刺し集計を行う SUM / COUNTA

繰上げ返済を行う CUMIPMT / CUMPRINC

桁を揃える RIGHT

月末日を求める EOMONTH

減価償却費を求める VDB

現在価値を求める PV

【JQuery】判定するときに時に紛れ込む空白!「 jQuery.trim(str)」ゴリっ空白文字を削除する方法

■jQuery.trim(str)

あれ、何か上手く動いてないぞ。という場合にその原因として、引数に空白文字が入っていることがあります。なので、便利な関数としてトリムを使いましょう。

$(“button”).click(function () {
var str = ” \n lots of spaces before and after   “;
alert(“‘” + str + “‘”);

str = jQuery.trim(str);
alert(“‘” + str + “‘ – no longer”);
});

(引用:http://semooh.jp/jquery/api/utilities/jQuery.trim/str/)

文字列の先頭と末尾から、空白を除去します。渡された文字列から、正規表現で空白と見做されるものを除去します。そのため、改行コードや全角のブランクであっても、空白として処理されます。

これだけでOK。ちゃんと意図した文字が取得できますね。

【本番はSSL】だからXamppでローカル環境をSSLでも動くようにする!その方法

Xamppローカル環境にSSLを有効にする設定手順まとめ

もはやXamppを利用したWebサイト制作は、プログラマーだけでなくWebデザイナーやコーダーでも常識です。静的なサイトであれば流れに沿ってインストールすれば十分なのですが、SSLをローカルでも利用できるようにするとなるとハードルがグンっと上がります。

(引用:http://affiliate.ks-product.com/xampp-ssl/

 

そうなんですよね、本番はSSLなのは当たり前なので、ローカルで非SSLで作ってたりすると、本番環境にてajax通信時などにエラーで動かないんですよね。それでチームメンバーに迷惑かけてしまうことにもなりかねません。「おい、なんで動かないの?F12でチェックしたらエラーはいているぞ!」と、なので、ローカルでもSSL通信しながら開発できると凄く安心です。というかそうしないと、とてもテストできず開発していられない。

■手順1

1. php.iniファイルを書き換える

php.iniファイルとはPHPの設定ファイルで、通常は以下のディレクトリに配置されてます。

C:\xampp\php\php.ini

テキストエディタで開き、「extension=php_openssl.dll」で検索。

該当行を見つけたら先頭の「;」を削除。

;extension=php_openssl.dll

extension=php_openssl.dll

上書き保存。

 

■手順2

2. httpd-vhosts.confファイルを書き換える

ローカルIPアドレスでアクセス出来るように設定。以下のファイルを開きます。

C:\xampp\apache\conf\extra\httpd-vhosts.conf

ファイルの一番下に次の記述を追加。

<VirtualHost 127.0.0.99>
DocumentRoot “C:/xampp/htdocs/”
ServerName test.local
</VirtualHost>

上書き保存

XamppのコンパネでApacheを再起動すれば、「http://127.0.0.20/」でサイトを表示可能です。

 

■手順3

httpd-ssl.confファイルを書き換える

「https://~」の形式でもサイトを見られるように以下のファイルを開きます。

C:\xampp\apache\conf\extra\httpd-ssl.conf

ファイルの一番下に次の記述を追加。

<VirtualHost 127.0.0.99:443>
DocumentRoot “C:/xampp/htdocs/”
ServerName localhost:443

SSLEngine on
SSLCertificateFile “conf/ssl.crt/server.crt”
SSLCertificateKeyFile “conf/ssl.key/server.key”
</VirtualHost>

上書き保存。Apacheを再起動すれば「https://127.0.0.99/~」と、「https」形式でもアクセスできるようになります。クロームで試すと危険ですけどOK?と警告でますけど、ひとまず開発はできるようようになりますよ!

【JSプラグイン】tablesorterで単位付数値、漢字を含む列を正しくソートする方法

■tablesorterで単位付数値、漢字を含む列を正しくソートする方法

ablesorterを使用するとテーブルを簡単にソートできる。しかし、デフォルトのままだと単位が付いた数値とか漢字が含まれる列が思うようにソートできないが、ソートのオプションsorterを指定することで解決できる。

・単位が付いた数値は文字列としてソートされるので意図した順に並ばないが、sorterオプションでdigitを指定することで解消する。
・漢字を含む文字列が混在するとソート機能自体が効かなくなるがsortオプションtextでを指定することで解消する。

(引用:http://happyhiro.com/wp4dev/tips/num-kannji-sort-by-tablesorter.html

ソートしたいテーブルIDを設定することでヘッダーがソートできるようになりますが、数字でソートしたい。文字でソートしたい。という切り分けはどうやるのでしょうか?以下の引数を持たせることで対応してくれます。便利ですね。

 

■指定イメージ

$(function(){
$(“#sampleTable”).tablesorter({
headers: {

0: { sorter:”digit”}, //数値ソート
1: { sorter:”digit”}, //数値ソート
2: { sorter:”digit”},  //数値ソート
3: { sorter:”text”},  //文字ソート
4: { sorter:”text”}   //文字ソート
}
});
});

もっといい名前あった!と気付いた時、MySQLでテーブル名を変更するSQL文とは

仕様が追加されたり、もっと良い設計に気付いてしまうとき、前にあったテーブル名を変えたくなる瞬間がやってくると思います。PHPなどの処理も変えなきゃとか頭を過ぎるわけですが、それでも保守性や拡張性を考えたら、修正しておくべき。となります。それで実際どう変えるかというと非常に簡単。

■変更例

alter table `古いテーブル名` rename  to `新しいテーブル名`;

※toは無くても動きます。

以上です。