mawatari.jp
ウェブエンジニアのメモ帳
  • ブログ
  • ブックマーク
  • 本棚
  • GitHub
  • プロファイル
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby
RSS
2013年1月30日

FulePHPでUploadクラスを利用するためにFileinfoをインストールする

mawatari 日記 FuelPHP, PHP 0 Comments

FuelPHPでUploadクラスを利用する場合、PHP拡張機能のFileinfoが必要となります。PECLまたはYumでインストールする例をメモしておきます。
参考:Requirements – FuelPHP Documentation

PECLでPHP拡張機能のFileinfoをインストールする

PECLでFileinfoをインストールする場合
Shell
1
pecl install fileinfo

YumでPHP拡張機能のFileinfoをインストールする

yumでFileinfoをインストールする場合(外部リポジトリの追加が必要)
Shell
1
yum --enablerepo=remi,epel,rpmforge install php-pecl-fileinfo

Yumリポジトリの追加は、以下を参照してください。
CentOS開発環境の構築(Apache, MySQL, PHP)

2013年1月28日

WordPressの一覧表示をトップページとそれ以外で変更する

mawatari 日記 WordPress 0 Comments

WordPressの一覧表示をトップページとそれ以外で変更する方法をメモしておきます。利用しているWordPressのバージョン、および、テンプレートによって違ってくる部分も大いにあるかと思います。環境と変更内容、方針は以下の通りです。

環境

環境は以下の通りです。

ソフトウェアバージョン
WordPress3.5.1
Themify (WordPress テーマ)1.2.9
Themify Basic1.1.0

変更内容

対象表示内容
トップページ(ホームページ)、検索結果記事タイトルと概要を5件表示
その他のページ(カテゴリ・タグ・日付別)記事タイトルを20件表示

変更方針

  • トップページ以外は表示設定で制御する
  • トップページの件数表示はテンプレートに手を加えて制御する

続きを読む

2013年1月24日

Crayon Syntax Highlighterでページ読み込み速度が遅くなる現象を改善する

mawatari 日記 Crayon Syntax Highlighter, WordPress 7 Comments

WordPressには、ソースコードを整形表示してくれるシンタックスハイライトのプラグインがいくつかあります。有名どころだと、Syntax Highlighter for WordPressや、SyntaxHighlighter Evolved、WP-Syntaxと言ったところでしょうか。このブログを運営するにあたり、当然ながら、プラグインの選定を行った訳ですが、デザイン面で好みであったことと、更新頻度が多かったことから、Crayon Syntax Highlighterというプラグインを選び、現在も使い続けています。

こまごまとした設定ができるCrayon Syntax Highlighterを、大変気に入ってはいるのですが、最近、ページの表示速度が遅くなる現象に悩まされています。

例えば、空行を含めて900行くらいある記事(Searchプラグインを使ってCakePHPに検索を実装する)の場合、レイテンシが9秒前後とかなり大きく、結果、ページの表示が遅い状況です。Crayon Syntax Highlighterをプラグイン設定画面でオフにすると、レイテンシが1秒程度になることから、Crayonがページの表示に影響していることは間違いなさそうです。

プラグインを変更することも検討したのですが、まずは現状でできることはないかを調査しました。その結果、それなりの速度改善が見られたので、その方法をメモしておきます。

Crayon Syntax Highlighterの速度改善

Crayon Syntax Highlighterで、ソースコードをハイライトさせるには、ショートコードや、<pre>タグ、<code>タグを用いる等、様々な手段が用意されています。このブログではミニタグを用いています。
他のプラグインからの移行等も考慮して、様々なパターンが用意されているのでしょうが、ふと、これが仇となって、遅くなっているのではないかと思い、プラグインの設定画面のタグの項目(以下のキャプチャを参考)で、ミニタグ以外を全てオフにしてみました。

crayon-syntax-highlighter-performance-improvement-01

ソースコードのハイライト記法を統一し、使っていないタグをオフにする

その結果、レイテンシが4秒程度になりました。完璧とは言えませんが、それなりの効果も見られたので、ひとまずこれで様子を見てみようと思います。

参考サイト

  • Mini Tags And Plain Tags In Crayon
  • Crayon Syntax Highlighter – Crayon Performance Issue
2013年1月23日

CakePHPでファイルをダウンロードする

mawatari 日記 CakePHP, PHP 0 Comments

CakePHPのコアライブラリの使い方の勉強として、ファイルをダウンロード(ストリームでファイルを保存)するアプリケーションを作ってみたときのメモです。今回使ったコアライブラリは、HttpSocket, Folder, Fileの3つです。
今回の記事は、CakePHPで作ったアプリケーションで何かしらのファイルをダウンロードさせるのではなく、どこかしらから取ってくる話です。ご注意ください。

Cookbook 2.x

  • HttpSocket – Cookbook 2.x 英語版
  • 2.0 – HttpSocket – CakePHP2.0 ドキュメント和訳
  • Folder & File – Cookbook 2.x 英語版
  • Folder & File – Cookbook 2.x 日本語版

開発環境

開発環境は以下の通りです。MAMP 2.0.5を使って開発を行いました。また、XAMPP 1.8.1でも動作確認を行いました。

Mac 開発環境
ソフトウェアバージョン
MAMP2.0.5
PHP5.3.6
CakePHP2.2.5
Windows 動作確認環境
ソフトウェアバージョン
XAMPP1.8.1
PHP5.4.7
CakePHP2.2.5

GitHubからCakePHPのZipballをダウンロードしてみる

CakePHPでファイルをダウンロードするアプリケーションの例として、GitHubからCakePHPのZipballをダウンロードしてみたいと思います。
基本的には、CookbookのDownloading the resultsにあるサンプル通りで良いのですが、せっかくなので、FolderクラスとFileクラスも使ってみたいと思います。(サンプルはfopen, fcloseを利用している)
ソースコードは以下の通りです。パスの指定や、例外処理等は省略しています。

app/Model/Github.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
App::uses('AppModel', 'Model');
App::uses('HttpSocket', 'Network/Http');
App::uses('Folder', 'Utility');
App::uses('File', 'Utility');
 
class Github extends AppModel {
public function download() {
$http = new HttpSocket();
$dir  = new Folder(WWW_ROOT . 'files' . DS . 'cakephp', true, 0755);
$file = new File($dir->path . DS . 'cakephp.zip', true, 0644);
$file->open('wb');
$http->setContentResource($file->handle);
$http->get('https://github.com/cakephp/cakephp/archive/master.zip', null, array('redirect' => true));
$file->close();
}
}

10行目で、Folderクラスのインスタンスの生成と同時に、フォルダの作成を行っています。素のPHPで同様の処理を行う場合は、以下のように書くと思いますが、Folderクラスを使えば、もろもろの処理を任せることができるので、記述量も減って、お手軽ですね。

ディレクトリの有無を調べ、なければ作る処理を素のPHPで行う例
PHP
10
if (!file_exists(WWW_ROOT . 'files' . DS . 'cakephp')) mkdir(WWW_ROOT . 'files' . DS . 'cakephp', 0755);

13行目、 HttpSocket::setContentResource()メソッドで、ストリームを使って結果を取得するようにし、14行目の HttpSocket::get()メソッドで、取得したいファイルに対してGETリクエストしています。GitHubでは、サイト上に提示されているURLから転送がかかってファイルがダウンロードされるようになっていますので、HttpSocket::get()メソッドの第3引数で、リダイレクトを許可しています。以下のように、転送先のURLを指定してもよいです。

転送先のURLを指定してファイルを取得する
PHP
14
$http->get('https://nodeload.github.com/cakephp/cakephp/zip/master');

以上です。

今回のサンプルのファイルパスは固定でしたが、実際には、スクレイピングをして得たバイナリデータを保存するツールを作ってみました。それについては、またどこかの機会で。

2013年1月21日

XAMPPのPHPの時刻合わせ

mawatari 日記 PHP, Tips, XAMPP 2 Comments

XAMPPインストール直後のPHPは、タイムゾーンがEurope/Berlinで登録されているため、日本時間からマイナス8時間ずれた状態になっています。php.iniのdate.timezoneを編集し、時刻合わせを行いましょう。

環境

環境は以下の通りです。

ソフトウェアバージョン
XAMPP1.8.1
PHP5.4.7
MySQL5.5.27
OSWindows7 32bit

修正手順

C直下にXAMPPをインストールしている場合のphp.iniのパスは、 C:¥xampp¥php¥php.iniです。バージョンや環境によって違いはありますが、1044行目あたりにある date.timezoneを以下の通りに修正しましょう。

C:¥xampp¥php¥php.ini 修正前
1041
1042
1043
1044
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Europe/Berlin

C:¥xampp¥php¥php.ini 修正後
1041
1042
1043
1044
[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Tokyo

«‹ 13 14 15 16›»

フォロー

follow us in feedly
人購読中

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた
  • rbenvでRubyの最新安定版をインストールするワンライナー
  • Ansibleの実行結果を通知する
  • MacにComposerをインストールする

Twitter

@mawatarinさんのツイート

カテゴリー

  • 勉強会・交流会 (56)
  • 日記 (104)

タグクラウド

Ansible Apache AWS Backbone.js baserCMS Bootstrap CakePHP CentOS CSS EC-CUBE facebookアプリ開発 fancyBox FuelPHP Fukuoka.php Git GitHub Homebrew HTML5 iOS JavaScript Jenkins Jenkins実践入門 jQuery Mac MAMP MySQL Node.js OSC PHP PHPMatsuri PhpStorm PHPUnit Rails rbenv Ruby RubyMine SwimmyStudy Tips Twitter Vagrant VMware WordPress Xdebug アジャイル 福岡インフラ勉強会
mawatari.jpのはてなブックマーク数
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた

フォロー

follow us in feedly
人購読中
mawatari.jpのはてなブックマーク数

新着はてなブックマーク

  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

↑

© mawatari.jp 2025
Powered by WordPress • Themify WordPress Themes