[PHP] 全角カナ+全角濁点の文字を、濁点付きの全角カナに変換する。

よくゆうちょ銀行の明細で出くわすんですが、「ニシフナバシ」ではなく「ニシフナハ゛シ」みたいな、濁点を1文字としてカウントして表記されている文字がありますよね。本当地味ですが、アレが結構うざくてどうしようかと考えてたんですよね……

んで、ウンウン唸って考えても出てこず、ふとトイレに踏ん張りに行ったらポンッと産まれたのが以下のコード。

なんという力技・・・(´・ω・`;) ちなみにカタカナ+濁点をpreg_replaceで一つ一つ潰していくというのも考えたんですが、超必殺クラスの力技なので最後にとっておきます。最後が来ないことを祈るばかりだぜ><

 

[PHP] 動的に生成したファイルを任意の名前で保存させたい。

PHPの処理結果を普通のHTML形式ではなく、JPEGやらCSVと言った形式で組み立ててダウンロードさせるようにした場合、ファイル名がスクリプトの名前そのまんまになってしまったり、名前がつかずに保存されるのが困りモノ……(´・ω・`)

でも、「Content-Disposition」ヘッダーフィールドを設定すると、保存名をこちらの好きなものに変えられるみたい。

PHPで書くならこんな感じ。↓

ちなみにこのディレクティブでは、ファイルをダウンロードさせるか(attachment)、そのまま画面に表示するか(inline)ということも設定できます。

「今まで使ってなかったのかよー」というツッコミはご勘弁ください……orz

パズドラのダメージ計算の流れを詳しく解説してみる。

最近のうちのブログのアクセス数を見ると、トップになっているのがダントツでパズドラ記事なんですよね。ひとつしか記事を書いてないのに、2位以下の記事5つ分のアクセス数を足した数より多いとか……
さすが国民的コンテンツ、適当な与太話でもこんなに伸びるとは!! というわけで微妙に波に乗ってもう一個、それっぽい記事でも書いてみます。
ちなみに前回の記事はこちら→「パズドラのダメージ計算式をまとめてみる。

前回の記事は数式しか載せてなかったので、補足として解説を書いてみようと思います。

パズドラのダメージ計算ですが、モンスターにダメージが入るまでに、簡単に以下の流れの計算が行われています。

モンスターへのダメージ = 基本属性攻撃力 × 各種ダメージ倍率 × 弱点属性補正 – モンスターの防御力

以上の計算が行われています。ざっくり表すと1行に収まるんですが、実際の処理はもっと複雑なのでひとつづつ解説していきます。

基本

ダメージ計算の一番の基本は、モンスターの攻撃力を、一体づつ、属性別に、算出することです。
モンスターの素の攻撃力を、ここでは基本属性攻撃力と呼びます。この攻撃力にはプラス補正や覚醒スキル補正の攻撃力を含みます。
この基本属性攻撃力に、ドロップ倍率やリーダースキル倍率など各種ダメージ倍率を乗算します。この値を、属性攻撃力と呼びます。
属性攻撃力に弱点属性倍率を乗算した後、モンスターの防御力を減算した値がモンスターに与えるダメージとなります。

このダメージは、各種モンスターの属性攻撃力ごとに算出されます。合算はされません。
よって、例えば闇属性モンスター2体の属性攻撃力がそれぞれ35000であっても防御力の減算はそれぞれの計算となるため、キングメタルドラゴン(防御力60000)に与えるダメージは全て1となってしまいます。キンメタを抜くには単体の属性攻撃力が60000を超えなければなりません。

副属性

副属性の攻撃力ですが、主属性と同じ場合は1割主・副が違う属性の場合は3割の属性攻撃力として計算されます。

副属性が主属性と同じ場合でも、ダメージの計算は主・副別々に行われます。合算はされません。

ダメージ倍率

基本属性攻撃力に乗算される倍率は以下のとおりです。

  • ドロップ同時消し倍率(+ドロップ強化)
  • コンボ倍率
  • 属性強化覚醒スキル倍率(サタンの闇属性強化など)
  • 4個消し覚醒スキル倍率
  • リーダースキル倍率
  • エンハンス倍率

これらの倍率は、それぞれが基本属性攻撃力に乗算されます。五右衛門のドロップ強化花火が恐ろしいダメージになるのはそのためです。(詳しくは五右衛門パの解説をしているブログの記事あたりで見てください><)

上記の倍率の計算式は前記事「パズドラのダメージ計算式をまとめてみる。」を参照してください。

小数点以下の扱いについて

小数点以下の扱いについてですが、いろいろ試してみた結果、副属性の攻撃力だけは切り上げします。それ以外のダメージなどは四捨五入しています。一応実アプリのダメージと比較した結果なのですが、この辺は間違っているかもしれないので、分かる方がいらっしゃれば教えていただけたらと思います。
====================

 

以上となります。他の記事だと画像を織り交ぜて丁寧に解説してくれていますが、そういうものはうちでは行いません。大変だしな(;´・ω・)

ここに書かれたダメージ計算法が実装されているのがこちらの計算機になります。→ http://appeal1113.blogspot.jp/p/dameken.html
使い方はこちら→ http://appeal1113.blogspot.jp/2014/02/2nd-vol49_4.html

俺が作ってるわけじゃないから苦情などはリンク先のブログで言ってくださいねっ!

nginxでFuelPHPを使うためのrewrite設定方法

nginxよくわかんないよ(´;ω;`)

最近ちょこちょこいじっているのですが、設定周りでapacheと勝手が違う部分が多々あり苦労してます。

特にrewriteモジュールの記述の仕方があまりよく分かりません。FuelPHPを使いたいのでどうしても必要なのですが、肝心のところで結構ハマってました。

一度コツを掴むとapacheよりだいぶシンプルで書きやすいのですが、一応忘れてしまった時のためにメモメモ……

rewriteに至る基本的な流れは、

指定のURIに一致するファイルがあるか調べる → なかったらディレクトリがあるか調べる → それもなかったらrewriteする

と言った感じです。この部分はnginxのtry_files構文で簡単に書けます。

「location @rewrite…」から始まるlocationディレクティブは、「名前付きロケーション」と言うみたいです。内部リダイレクト処理を行う際に、アットマークから始まる名前を指定すると、その名前がついたブロック内の処理を行います。詳しくはnginxのドキュメントを参照してください。→http://wiki.nginx.org/HttpCoreModuleJa#location

ちなみに、try_filesを使わなくてもif文を利用すれば前述の流れは実現できますが、やたら長くなるし、nginx的には非推奨らしくいいとこなしなので、素直にtry_filesを利用するほうがいいと思います。
参考リンク: nginxのifに要注意 TECHSCORE BLOG

そして、ファイル・ディレクトリが存在しなかった場合のリライト処理ですが、俺は以下のように書きました。

このあたりの書き方は個人差・環境差があるので一概には言えませんが、自分の手元の環境ではこれで動作しました。

書き方はリファレンスを参照!!→http://wiki.nginx.org/HttpRewriteModuleJa#rewrite

ここに書いてあることを更に凝縮して、しかも分かりやすい記事があるので、そちらを読んだほうが幸せになれるかもしれません……
参考リンク: nginx連載5回目: nginxの設定、その3 – locationディレクティブ – インフラエンジニアway – Powered by HEARTBEATS 

 

Raspbian(RaspberryPi)でnginx+php-fpmを動かしてみる。

完全に自分用ですが。

nginxとphp-fpmを動かしてみたかったので、部屋に転がってたRaspberryPiにインストールしてみました。

とりあえず必要なパッケージをインストール。

依存パッケージはaptitudeの方で全部拾ってきてくれるはず。

ちなみにバージョンはnginxが1.2.1 php5-fpmは5.4.4です。

 

次にnginxの設定。デフォルトの設定ファイルの中から特に書き換えた部分だけ抜き出してます。

 

nginx, php-fpmの起動。

最後に起動設定の変更。

 

これでサイトルートの中にphpinfo();でも書いたphpファイルを投げ込んでアクセスできるかどうか試したらいいと思います。

 

一番ハマったポイントはfastcgi_passの値です。いろいろなブログの記事を読んでみても、設定値は「127.0.0.1:9000」にしろ~って書いてあるのですが、残念ながら俺のオツムではよく分からず……。でもnginxのデフォルト設定ファイルにはもう一つ、sockファイルを入力する方法も併記されておりまして、そちらのパスを通してみたらうまく動きました。とりあえず動いたのでこれでよしということで(´・ω・`)