HOME | TOP ■ 連結 ▼ 文字列連結演算子 $s = $head . $tail; // 連結した値を代入 $t = $head; $t .= $tail; // 末尾に付加 ▼ 変数の展開 $s = "$head$tail"; $t = "A{$head}B{$tail}C"; // 変数名の境目が曖昧になる場合にはカッコでくくる スカラー変数の場合と同様に、連想配列でも"A{$hash['head']}B{$hash['tail']}C"のような書き方で変数展開できる。 配列の値を連結する場合はimplode($array)とする。 ■ 部分抜き出し ▼ substr(); 文字列の部分抜き出し $s = 'abcdef'; $t = substr($s, 2); // "cdef" 0から数えて2番目以降 $t = substr($s, 0, 2); // "ab" 0から
はじめに Webアプリケーションを構築する際のアーキテクチャとして、「MVC」が広く用いられています。PHPにおいても、「mojavi」や「Phrame」など、いくつかのフレームワークが実装されています。ググってみると、日本語の解説ページなどを見つけることもできます。 最も有名なMVCフレームワークは、Javaで使える「Struts」でしょう。多くのMVCフレームワークがStrutsの影響を受けています。Strutsは非常に強力なフレームワークですが、その分、お手軽感に欠けるきらいがあります。特に、お手軽感を求めてPHPを使われている諸氏には、馴染みにくいのではないかと思います。 本稿では、手軽に使える、軽量なMVCフレームワークの雛型として、拙作の「nagaMVC」を紹介します。nagaMVCの基本的な構成について解説します。 対象読者 主に、LAMP構成(Linux+Apache+My
ユーザーインタフェースをもつアプリケーションソフトウェアの多くは、「MVC」モデルに基づいて設計されています。 MVCでは、プログラムを、Model(モデル)、View(ビュー)、Controller(コントローラ)という3つの要素に分割し、お互いに呼び出し合って処理が実行されていきます。 この概念を漫画で表現したら分かりやすのではないかと思い、トライしてみます。 設定 MVCモデルで設計された「なにかの申し込みシステム」があるとします。 処理の内容は、なにかの申し込みをしたユーザ情報をデータベースに格納する、だけです。 なにかの申し込みシステムの構成員 第1話 – なにかの申し込みシステムの日常 なにかの申し込みシステムの処理の流れを覗いてみましょう。 おや?ユーザが申し込みにやってきましたよ… このように、モデル、ビュー、コントローラは、お互いに協力し合いながら処理を行っています。 誰
PHPのフレームワーク(CakePHP等)は、元からMVCモデルとなっているわけですが、機能も多く重量級です。 軽量のMVCフレームワークもあるのかもしれませんが、ほんとに小規模なPHPアプリケーションとかだと、案外自作にした方が効率がよいのかもしれません。 5年度前に、以前の勤務先で自作MVCモデルを使ってたんですが、しばらくPHP触らない間にすっかり忘れていました。 ということで、PHPのオブジェクト指向入門 | オブジェクト指向PHP.NETを参考に、軽量なMVCフレームワークを作ってみました。 MVCの概念は多くのサイトで解説されているので省略します。 今回作成するのは、大まかに下記のような構造になります。 リクエス振り分け まずは、リクエスト振り分けの部分です。 たいていは、全アクセスを index.php に集中させ、そこからURLの内容に基づきどのコントローラのどのアクション
このサイトは、只今WEB業界で活躍中のデザイナー、プログラマーの方々の情報を集めたweb統合情報サイトです。 web帳 どもです。 今回は気分を変えて会員制のサイト制作方法を。 と言っても基礎的な部分となりますが。 ゴリゴリ書いているエンジニアさんならあれですが、やっぱ書いていないと忘れるのが人間だったりもするので、思い出すのも含めて書いていきます。 では、まず制作のフローから。 制作フロー まず行いたいのは、 ユーザーのメールアドレス登録 ↓ 仮 id発行 メール送信 ↓ 本登録ページ表示 ↓ ユーザーid、名前、パスワード、登録メールアドレス入力 ↓ 本登録完了 ↓ ログインページで登録内容入力 ↓ 会員制のページ表示 という流れを行いたいかと思います。 では早速。データベース、テーブルの作成を行なっていきましょう。 mysqlに関してはこちらの記事を参照よろしくお願い致します。 ht
こんにちは、王です。 【PHPで学ぶデザインパターン】第6回はObserverパターンのご紹介です。 有名なのでご存知の方も多いと思いますが、「IFTTT」というサービスがあります。 このサービスはIf This Then Thatの頭文字を取ったもので、例えば「私が帰宅したら、彼女に、SMSで知らせるようにする」みたいなことができます。このように、あるイベントが発生したときに特定の行動をするものです。 「Observerパターン」とは 「私が帰宅したら、彼女に、SMSで知らせるようにする」の例で言うと、イベントは「私が帰宅したら」、行動は「彼女にSMSで知らせるようにする」、そしてSMS通知を受け取るのは「彼女」。さらに、通知を受け取る人は彼女に限定する必要はなく、たくさんの人に送ることもできますよね。 これが立派な「Observerパターン」です。 「Observerパターン」は以下の
デザインパターン?なにそれ?美味しいの?って感じでしたが、プログラミングを勉強する上では避けて通れないようです。低レイヤーの組み込みCをやってるとなかなか触れる機会も少ない、というかほぼないですが、覚えておくことで色々応用が効きそうです。 デザインパターン - wikipedia "ソフトウェア開発におけるデザインパターン(型紙(かたがみ)または設計パターン、英: design pattern)とは、過去のソフトウェア設計者が発見し編み出した設計ノウハウを蓄積し、名前をつけ、再利用しやすいように特定の規約に従ってカタログ化したものである。" Ruby rubyでデザインパターン入門 | ランサーズ(Lancers)開発ブログ Amazon.co.jp: Rubyによるデザインパターン: Russ Olsen, ラス・オルセン, 小林 健一, 菅野 裕, 吉野 雅人, 山岸 夢人, 小島 努
「SQL勉強しといてー!」 といきなり言われて、なんのこっちゃ分からなかった時代 環境構築も意味が分からず、 プログラムのプの字も知らなかったので途方にくれていた頃 むちゃくちゃ勉強になるサイトを見つけた。 ここでSQLの概念をある程度知り、 そしてクエリを叩けるようになった。 SQL攻略 - 実行すれば理解できる! ちょっと叩けるようになったら もう見なくなってしまっていたし、 環境があったから自分の環境で試したりしたもんだから すっかり見失ってた最高のサイト。 やっとみつけた! 新人学習だとか、環境を用意できない人にとって このサイトはピカイチにおすすめだと思う。 サイト上でSQL叩けるし、実行結果も見れる。 よくもまあこんなサイトを作ったもんだと感嘆の声も出そうだ。 とにかくお世話になったサイトさんです。 同じような海外もののサイトがこちら。 SQLzoo.net 上記サイトでSQL
このエントリは、Do You PHP?(www.doyouphp.jp)で公開していたコンテンツを移行/加筆/修正したものです。公開の経緯はこちらをどうぞ。 2006/11/23に株式会社秀和システムさんから発売された「PHPによるデザインパターン入門」(ISBN4-7980-1516-4)を執筆しました。 また、2009/09/14付けの絶版に伴い、Do You PHP?にて校正前の原稿テキストを公開していました。が、この度、Do You PHP?の閉鎖に伴い、はてダに移行しました。今回の移行で、校正完了間際の原稿に差し替えましたが、まだ誤字/脱字、説明不足の箇所もあるかも知れません。ご了承ください。 1章 デザインパターンの世界へようこそ デザインパターンって何? デザインパターンとは? オブジェクト指向 GoFパターン デザインパターンのメリット・デメリット デザインパターンを使うメ
Adapterパターンのクラス図 Adapterパターンには以下の2通りが存在する。 クラスによるAdapterパターン:「継承」を利用 インスタンスによるAdapterパターン:「委譲」を利用 ※ 上図において、extendsはimplementsでもOK まとめ インターフェースが異なる2つの間に入って、そのずれを埋める(組み合わせる)ことができるのがAdapterパターン 既存で用意されているクラスを包み込んでいる様子から、Wrapperパターンと呼ばれることも。 もとから用意されているクラス【Adaptee】とClientが要求しているメソッドを定義した【Target】の間にあるずれを埋めるために、Adapterパターンを利用することで、以下のことが実現可能に。 1.既存のクラスを変にいじることなどをせず、再利用ができる ー 必要とするクラスがすぐ作れる&保守がしやすい 2.Cli
はじめに アクセスが急増すると、応答時間が著しく悪化するサイトはありませんか? 普段は200ミリ秒以内で安定してアクセスをさばいているのに、イベントやらキャンペーンやらを開始した瞬間から、普段の2倍や3倍のアクセスが殺到し、その結果、レスポンスタイムが3秒とか9秒とかかかるようになってしまうことってありますよね。 あるサイトの実状 つい先日まで、そんなサイトが私の目の前にもありました。自社で運営している某ソーシャル系のサイトなんですが、イベント開始時刻と同時にアクセス数が急増するのです。とはいえ、所詮は普段の2倍とか3倍程度の数なのだから、少なくとも1秒以内にレスポンスを返せるくらいの性能は維持したいものです。 しかし実際は困ったことに、応答に3秒以上もかかってしまう処理が大量に発生してしまう状況に陥ってしまっていました。これはきっと、どこかにボトルネックがあるに違いありません。 仮説を立
LVM 操作の備忘録です。(たまにしか行わないから忘れちゃうんだよネー) 例では古い PC を使っているのでデバイスが /dev/hdn になっているけれど最近の SATA ならば /dev/sdn に読みかえてください。 このページの先頭へ 概要 主なコマンド 物理ボリューム作成 物理ボリュームを追加 ボリュームグループ作成 物理ボリューム削除 ボリュームグループ削除 ボリュームグループ名変更 論理ボリューム作成 論理ボリューム名変更 論理ボリューム拡張 論理ボリューム縮小 スナップ作成 概要 LVM とはパーティションを仮想化して管理するものです。 1 複数のハードデイスクを連結して一個の大容量とすることが可能。 2 論理ボリュームサイズを変更できる。 3 スナップを作成できる。 4 ストライピングやミラーもできるらしい。 LVM のミラーリングは管理(障害通知、復旧)がわからないので
自分自身の好みに合うLinuxを作ることは,決して難しくない。フリーソフトを手順よく組み合わせていくことで,ごく普通のユーザーであっても自分だけのLinuxを作成できる。本講座を読みながら,Linuxの仕組みを理解して『自分Linux』を完成させよう。 今回は,前回までに作成した各種ライブラリやコマンド群,カーネルを用いて,自分Linuxの起動開始部分までを組み立てる(図1)。この組み立て作業で重要なのは,PCの電源を投入してLinuxシステムが起動するまでの仕組み作りである。この仕組み作りは少々複雑だが,手順だけでなく,作業内容を理解しながら行えば,決して難しくはない。 それではまず,仕組み作りの予備知識として,Linuxシステムが起動するまでの流れを解説していこう。 電源オンから Linuxが起動するまで 最初にPCのハードウエアが起動するまでの流れを考えてみよう。PCの起動プロセスを
1.1 パーティション管理の悩み Linuxユーザーなら誰でも、パーティション管理に悩まされたことあるかと思います。 「/とswapだけにしようか、/varは2GBほしいかな。いやいやswapは実メモリの2倍必要だ…。」 いくら悩んでパーティション設計を行ったとしても、リミットは忘れた頃に訪れます。デスクトップやワークステーションとして利用していた場合、作成したデータを蓄積する「/home」が、サーバーとして運用していた場合には「/var」や「/tmp」が溢れることが多いと思います。 そんなとき、「パーティションが再起動なしで広げれればいいのになぁ」と思ったことありませんか?この悩みを解決する方法、それがLVM(Logical Volume Manager, 論理ボリュームマネージャー)です。 1章ではLVMの用語を含む入門編、2章では基本操作、3章では応用操作をご紹介します。 1
2002/05/04 目次 序説 パーティションテーブル パーティションの種類 パーティションタイプ パーティションの位置情報 アクティブパーティション パーティションを切る ドライブレター 誤解と落とし穴 パーティション編集ツールとパーティショニングツール パーティション編集ツールとデータ破壊 パーティション編集ツールとパーティションタイプ パーティション編集ツールの使い方 パーティショニングツールとファイルシステム パーティショニングツールの使い方 序説 ハードディスクは他の多くのディスクシステムと違い、一つの物理ドライブを、複数の領域(パーティション)に分けて使うという機能が用意されている。この機能は、複数のOSを一つにハードディスクにインストールしたり、分割管理を可能にするなど、様々なメリットを提供してくれる。 [パーティション分割例] 上記例のようにハードディスクをパーティショ
片側1車線の道路より、2車線の道路の方が2台の車が同時に通行できるため、多くの車が通行できますが、ネットワークでも同様です。 本項では、帯域について説明します。 片側1車線の道路より、2車線の道路の方がスムーズに車が流れると思います。ネットワークの世界では、この道幅を帯域と言います。 帯域はbps(bit per second)で表されます。bpsは、豆電球で通信で示したとおり1秒間にどれだけ多くのビットを送信できるかを表します。10Mbps、100Mbps、1Gbps、10Gbpsでは、それぞれ10倍のビットを1秒間に流すことができます。 帯域は100Mbpsの速度などと記述されますが、速度というと車のスピードのようなイメージで相手まで速く到着すると考えがちですが、これは誤解しやすい点です。 例えば、4bpsと40bpsの違いは以下のような違いです。 このように、1秒間にどれだけビットを
Red Hat系のLinuxディストリビューションでは、RPMパッケージという形式でソフトウェアが配布されており、yumコマンドを利用してパッケージをインストールしたり、アップデートを行うことができる。今回は既存のRPMパッケージをカスタマイズして独自のパッケージを作成したり、独自のyumリポジトリを作成してパッケージ管理を行う方法を紹介しよう。 プライベートyumリポジトリを活用してサーバーをデプロイする Ret Hat Enterprise LinuxやCentOSといったRed Hat系のLinuxディストリビューションでは、RPMパッケージ(ファイルの拡張子は.rpm)を使ってソフトウェアをインストールするのが一般的だ。 RPMは「RPM Package Manager」の略で、Red Hatが開発したことから当初は「Red Hat Package Manager」と呼ばれていた。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く