PHPに関するEggnogのブックマーク (16)

  • CakePHPとキャッシュのいろいろについて | 東北ギーク

    はじめまして。リスペクトの山内です。 昨年度プログラマとして新卒で入社し、ようやくプログラマ歴二年目に突入したところです。 さて、今回ブログを初めて書くにあたり、キャッシュについて取り上げてみようと思います。 データベースに無駄なリクエストを送らないようにしたりして処理を高速化する便利機能ですが、プログラミング初心者だと、なかなか処理速度にまで目が行かず、キャッシュにじっくり触る機会も少ないのではないでしょうか。 かくいう自分もそんなプログラミング初心者の一人なので、初心者脱却を目指してキャッシュについて調べてみました。 以下、概要です。 記事は CakePHPでのCacheクラスの使い方 CakePHPで使用できるキャッシュシステムの導入方法 について取り上げます。 今回の環境 CentOS 6.7 Apache 2.2.15 PHP 5.5.28 CakePHP 2.8.3 Cake

    CakePHPとキャッシュのいろいろについて | 東北ギーク
  • なぜmt_rand()の誤った実装をサクッと修正できないのか - Qiita

    @scaled_wurm さんのPHP の mt_rand() は一貫して壊れている(consistently broken)らしいに便乗してみる。 擬似乱数の特性は「周期性があること」です。周期性とはつまり再現性で、ほとんどの擬似乱数は長い周期性をもち次に出力される数を予測することが困難である一方、初期状態を固定する事で決まったパターンで値を返します。これは完全な乱数にはないもので、用途によっては完全な乱数より擬似乱数を使う方が好ましいこともあります。 例えば単体テストで乱数を扱う場合のことを考えてみましょう。 class RandomTest extends TestCase { public function testInitialValue() { mt_srand(0); $this->assertEquals(963932192, mt_rand()); } } mt_rand

    なぜmt_rand()の誤った実装をサクッと修正できないのか - Qiita
    Eggnog
    Eggnog 2016/02/23
    creat(2)
  • CakePHP1.3→2.6のアップグレード時に発生した作業や注意点について | 東北ギーク

    こんにちは。リスペクトの木村です。 CakePHPで運用しているサイトがいくつかあるのですが、その一部について1.3から2.6へアップグレードする機会がありました。 フレームワークのコア部分のアップグレードというと何かしらのトラブルが発生する印象があります(メジャーバージョンアップなら尚更)が、例に漏れずすんなりと終わる事はありませんでした・・・。 そこで、今回はアップグレードの中で行った作業やすんなり行かなかったポイントについて、解決策と合わせてご紹介したいと思います。 アップグレードに踏み切った理由 そもそも、何故アップグレードに踏み切ったか、という所を簡単にご紹介します。 諸事情ありますが・・・ オンプレミスから、クラウド(AWS)へ移行する事になった ApacheやPHPといったミドルウェアのバージョンが上がったり、サーバ構成が変更されるため、プログラムをある程度整理したい リファ

  • fuelphpでPresenterから、ベースとなるテンプレートの変数を代入する的なお話

    fuelphpでheaderやfooterが記載されたbase-template.phpをテンプレートとしたbase.phpというController_Templateを用意し、 それを継承したcontrollerで$this->template->contents = Presenter("index")みたいな感じでやって、 なんか面倒な処理をPresenter内でやるみたいな事はすごく便利ではあったりする。 けどこれってbase-template.phpのheader部分やfooter部分の変数を代入する事が出来ないっていう問題が発生する。 その場合base.phpのafterなりでごにょごにょするっていう方法もあるけど、動的なサイトの場合titleとかがんがん変わるわけで。 その度modelからControllerなりPresenterなりで処理したものをもう一度やるってなると無駄

    fuelphpでPresenterから、ベースとなるテンプレートの変数を代入する的なお話
  • PHP による hello world 入門 | 東北ギーク

    知る者は言わず、言う者は知らず — 老子 世界で最も有名なプログラムの 1 つに、 hello world というものがあります。 <?php echo 'hello, world'; 出力先に対して「hello, world」という 12 字を書き込むだけの単純なプログラムで、プログラミング言語やライブラリの利用例を最小限の形で示すものです。 この記事ではメジャーな Web プログラミング言語の 1 つである PHP 処理系が、hello world をどのように実行するのかについて、簡単に解説します。 以下の 4 節で構成されています。 「PHP スクリプト実行の大体の流れ」は実行時の概略を箇条書きでまとめたものです。 「SAPI」では、PHP 処理系の起動のされ方についての基礎知識を解説します。 「Zend Engine とオペコード」は PHP 公式処理系の仮想マシンの命令と、PH

    PHP による hello world 入門 | 東北ギーク
    Eggnog
    Eggnog 2015/06/21
    hello worldによるZend Engine&SAPI入門
  • PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita

    (2015/07/02追記:PHP 7.0.0alpha2に合わせて修正しました) PHPのエラーは、エラー文言を表示するだけの警告・注意と、その場で処理を終了してしまう致命的エラー(fatal error)の2種類に大別できます。 ところで、PHP5の致命的エラーには不便な点があります。それは、set_error_handler()やその他の方法でエラーハンドリングできず、必ず終了してしまう点です。これでは致命的エラーをユニットテストするのも不便ですし、ReactPHPのようにサーバ動作させるようなプログラムも安心して使えません。 PHP7では致命的エラーが例外として実現されるようになり、エラーハンドリングの自由度が格段に上がりました。この変更の概要を紹介します。 例外のクラス階層の変更 まず、PHP7で例外クラスの階層がどう変わるかを説明します。PHP5までの例外のクラス階層は次のよう

    PHP7調査(23)致命的エラーが例外としてキャッチできるようになった - Qiita
    Eggnog
    Eggnog 2015/05/19
    PHPでデーモン書く際に1つのリクエストのfatalで全リクエストの処理が即死したら困るとか、ユニットテストで1つfatalでもとりあえず全テスト通して実行したいとかがユースケース
  • PHP 7 at a Glance.

    PHP7 is on it’s way! This is the largest shift in the PHP landscape since the upgrade to PHP 5.3. Most of us survived that and I’m sure we will survive this one as well. To help you see the forrest for the trees, I’ve put together a list of all the RFCs that are marked as “Implemented” on the PHP wiki. Some of them have not yet been updated to “Implemented” status and there are still others in the

    PHP 7 at a Glance.
    Eggnog
    Eggnog 2015/04/13
    個人的にはuniform variable syntaxは大きい。思わぬとこでBC breakに引っかかるケースもありえる
  • PHP 7のパフォーマンスが高い理由

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    PHP 7のパフォーマンスが高い理由
  • 【導入決定!】PHP7で実装されるスカラー型宣言とは? | 東北ギーク

    * NaN でなく PHP_INT_MIN から PHP_INT_MAX までの範囲内の値に限る ** 数値形の文字列のみ。数値形の文字列に他の文字が続く場合も使えるが、 Notice が出る *** __toString メソッドを持つもののみ 弱い型検査モードで行われる暗黙の型変換は、PHP が従来他の構文(算術演算子や条件式、組み込み関数の呼び出しなど)で行ってきたのと同等のものです。 厳密モード 一方、厳密な型検査のモードを使う場合は、関数は宣言されたのと正確に一致する型のみを受け付けるようになります(int → float の拡大変換をのぞく)。 ファイルの先頭に declare(strict_types=1); と書くことで、そのファイル内での関数呼び出しの際に厳密モードでの型検査が行われるようになります*1。 以下のように使います。 <?php declare(strict_

    【導入決定!】PHP7で実装されるスカラー型宣言とは? | 東北ギーク
  • PHP: rfc:scalar_type_hints_v5

    Author: Anthony Ferrara ircmaxell@php.net (original Andrea Faulds, ajf@ajf.me) This RFC proposes the addition of four new type declarations for scalar types: int, float, string and bool. These type declarations would behave identically to the existing mechanisms that built-in PHP functions use. This RFC further proposes the addition of a new optional per-file directive, declare(strict_types=1);, w

  • PHP 7 Feature Freeze

    Today was the feature freeze for PHP 7. That means no new votes can be started for a feature that is aimed at PHP 7.0, and would instead have to go into PHP 7.1. Instead of heading out to St Patrick's Day with a bunch of New Yorkers making dubious claims about their tenuous connection to Irish ancestry as an excuse to drink, I thought it would be a good time to review some of the more recent RFCs

  • PHP の GC の話 (勉強会発表資料) - y_uti のブログ

    昨日、第87回 PHP勉強会@東京 で PHP の GC について発表しました。発表資料を公開します。 PHP の GC の話 from y-uti PHP の処理系に実装されている、参照カウント方式の GC と循環参照によるごみの回収について、比較的平易に説明したつもりです。 GC について (お金を使わずに) 勉強してみたい方は、英語の情報ですが以下のページが参考になります。このページに Surveys として紹介されている 3 の論文で基的な内容は理解できると思います*1。 Richard Jones' Garbage Collection Page 最初の "Uniprocessor Garbage Collection Techniques" は GC のさまざまなアルゴリズムについて説明したもの、次の "Survey of Distributed Garbage Colle

    PHP の GC の話 (勉強会発表資料) - y_uti のブログ
    Eggnog
    Eggnog 2015/03/16
    いけめん
  • FuelPHPのOrmとキャッシュについてのTips | 東北ギーク

    こんにちは、元気よく挨拶しようとすると「挨拶だけテンション高いのやめろ」と上司から言われるリスペクトのプログラマー、@sji_chです! FuelPHPOrmはデフォルトでオブジェクトキャッシュが有効となっていますが、イマイチいつどこで役立っているかはっきりしない部分があったり、キャッシュが有効なせいで思わぬ不具合を引き起こす場合があったりします。 この記事ではキャッシュが自動的に使われる場合と使われない場合について、キャッシュを破棄する方法、キャッシュをデータの取得時に無視する方法、そしてOrmを拡張してselectの条件を考慮したものにする方法について述べます。 Fuel v2では新たなOrmが開発されているところですが、今回取り上げるのはv1(1.7.2)のOrmです。 対象読者は以下のような人です。 PHPの基的な構文を把握している人 FuelPHPOrmについて、「もっとう

    FuelPHPのOrmとキャッシュについてのTips | 東北ギーク
  • FuelPHPで最初にやることあれこれ - Qiita

    /composer.lock /composer.phar *~ *.bak Thumbs.db desktop.ini .DS_Store .buildpath .project .settings *.tmproj build .idea /docs /fuel/vendor /fuel/packages /fuel/core /fuel/app/logs/*/*/* /fuel/app/cache/*/* /fuel/app/tmp/* /fuel/app/config/development/* /fuel/app/config/production/* /fuel/app/config/stage/* /fuel/app/config/test/* /fuel/app/config/crypt.php nbproject/

    FuelPHPで最初にやることあれこれ - Qiita
  • fuelphpでmysqlのレプリケーションに対応する方法 - とりあえずphpとか

    やりたいこと 少しアクセスの多いサイトなどではありがちなmysqlのレプリケーションを使うことがあると思います。 fuelphpでそれに対応するときの作業をメモしておきます。 いちおう今回想定する環境はマスタdb1台、スレーブdb2台構成のものとします。 db定義を設定 とりあえず今回は開発環境(development)での作業を扱います。 まずは、fuel/app/config/development/db.phpを編集 <?php return array( // マスタdb 'default' => array( 'connection' => array( 'dsn' => 'mysql:host=master_hostname;dbname=dbname', 'username' => 'master_userame', 'password' => 'master_passwor

    fuelphpでmysqlのレプリケーションに対応する方法 - とりあえずphpとか
  • fuelphpで必ずやってる設定などまとめ - とりあえずphpとか

    完全に自分仕様になっているが毎回同じ設定を過去のプロジェクトのをみながら都度やっていて時間も無駄なのでまとめておく fulephpで準備されている機能の準備 日語を使う準備 fuel/app/config/config.phpを編集 //81行目くらい 'language' => 'ja', // Default language 'language_fallback' => 'en', // Fallback language when file isn't available for default language 'locale' => 'ja_JP.UTF-8', // PHP set_locale() setting, null to not set //88行目くらい 'encoding' => 'UTF-8', validation回りの準備 validationで使うメ

    fuelphpで必ずやってる設定などまとめ - とりあえずphpとか
  • 1