HTMLもろくに書けないのに、無謀にもいろいろしてみたいと思ってまして、ノート代わりに書く個人的メモですんません。

2008年10月30日木曜日

Modxのチャンクもどき

昨日、急に先輩から課題が出された。

index.php
の中に
[[*hogehoge*]]
と書かれていたら
hogehoge.php
の内容に置き換えて表示されるようにphpを書きなさい的な感じ。

ぇ~。丸一日悩んだ結果、無理でした・・・。

んでヒントもらう。

バッファリングを開始してhtmlを書き始める。
んでその中に[[*hogehoge*]]も書いておく。
バッファリングした文字列を変数に格納。
hogehoge.phpを読み込んで変数に入れる。
[[*hogehoge*]]をhogehoge.phpの内容に変換。
バッファをフラッシュ。

ほぼこんな感じのメールが帰ってきた。

さて。
したこと。

index.php

<?php
ob_start();
?>
<html>
省略
[[*hogehoge*]]
省略
</html>
<php
$hoge = ob_get_contents();
ob_end_clean();
include("hogehoge.php");
$hogeho = str_replace("[[*hogehoge*]], $hogehoge, $hoge);
echo $hogeho;
?>


んで、hogehoge.php

<?php
$hogehoge = "<p>なんたらかんたら</p>";
?>


こんな感じで無事終了。

はぁ。。提出期限に間に合ってよかった。。。

2008年10月27日月曜日

MODxのテンプレート変数

MODxを使うにあたって、資料とかを読んでも、どうもテンプレート変数というものが
理解できていなかったんだけど、今日先輩の説明を聞いてやっと半分くらい理解した。

要は

リソースの管理の「テンプレート変数」で、変数を作っておいて、
それをテンプレートの中に[*templete*]と書いておけば
それぞれのページの編集画面で、その場所に入れるものを書けたり
選べたりする、と。


例えば、それぞれのフォルダごとに異なるスタイルシートを反映させたい時は

doc_cssとか名前をつけてテンプレート変数を作っておく。

テンプレートの中で
<link href="[*doc_css*]" ~>
と書いておけば、ページの編集画面で、どのcssをそこに入れるか入力したり
プルダウンで選んだりできるわけですよ。

やべ、すんげぇ便利そ。

でもしらなかったから、今まですんげ~無駄なことしてた・・・。

んで、本読むとウイジェットとか@バインディングとか書いてあって
混乱中。

むぅ。

2008年10月8日水曜日

あ、

ネタが前の投稿とかぶってた・・。

混乱っぷりがよくわかるのぅ。

まぁ、archive.phpだけじゃなく、他のindex.phpやらsingle.phpでも使えるということで。

wordpressでカテゴリ毎に表示を変えたい場合

管理画面の

デザイン>テーマエディタ

ここで変えたいデザインのファイルのデザインが影響するタグに

class="<?php $cat = get_the_category(); $cat = $cat[0];{echo $cat->category_nicename;} ?>"

これを入れる。

例えば、カテゴリのアーカイブでそれぞれデザイン変えたかったら、
archive.php
の中の最初の方で

<div id="ほにゃらら" class="category_nicename;} ?>">

ってやればいい。

あとはCSSを工夫する。

文中の<>は半角に変えるのだ。

2008年10月3日金曜日

カテゴリごとの表示を分ける方法

これは簡単みたい。

http://akaandmore.com/blog/archives/12

ここを参考にしてみたら、classを分けることができました。
あとはcssいじくりまわすだけだ~。

がんばるぞ~。

pieXとDNS設定

wordpressIntegratorを入れてしたかったこと。

1,トップページにWordPressのタイトル一覧を作る
2,新着情報と日記のカテゴリで記事を投稿し、それぞれを別のページのごとく振る舞わせる。

1,に関して。
WordPressIntegratorのスニペットコールで表示させようかと思ったら、
タイトルだけ!とか、続きを読む、とか件数の設定とかができない模様。

さてどうしよう。。。と悩んだ結果、RSSのフィードを読み込んで
表示させればいいじゃん、と思いつく。(思いついただけ。仕組みはまだよくわからない)

早速、RSSをうまく表示してくれるスニペットを探すと、
pieXというよさげなもの発見!

http://www.petit-power.com/permalink/piex-v06.html
これのv.0.7を使用することに。

やり方は↑のページと
http://www.liolion.info/modx/resource/piex.html

こちらという、バリバリ公式フォーラムなんかでもご活躍のお二人のページを参考にする。
変数やらパラメータやら、相変わらず慣れない言葉にギクシャクしながらも
なんとか設置。

試してみると~。

feedが見つからないってさ・・・。

んで、エラーメッセージに書いてあるRSSフィードのURLをコピペして
ブラウザで見てみると・・・ん?普通に表示されるじゃん。

なぜだ?

試しに違うサイトのRSSを試してみる。

うぉ~!表示されるじゃん!すごいじゃん!

んで、も一回自分のでtry!

feedが見つからないってさ。。。

何故じゃ。どうしてじゃ。

散々悩みに悩んだ結果、ある一つの仮説が浮かぶ。

今、windowsは先輩の用意したDNSを読みに行っている。
しかし!果たしてfedoraさんはどのDNSを読みに行っているのだ?
もしかして、プロバイダのDNSを読みに行っているのではないのか?

これが仮説。

んで、fedoraさんにターミナルからアクセス。

いろいろ調べた結果、
/etc/resolv.conf

ここにDNSの設定が書かれているらしい。

よしよし見てみよう。

・・・やっぱそうか!
はっきりくっきりとプロバイダのDNSのIPが書かれていた。

これはいかん。すぐ書き直す。

そして再try!


表示された!!やった~!


というのが昨日までの出来事。


今日、続きをしようとしたら、

・・・。またfeedが見つからないってさ。

念のためfedoraのDNS設定を確認。

ぁ、元に戻ってる。。。

何故じゃ。どうしてじゃ。

早速修正。念のためrebootしてみる。

やっぱり元に戻ってる。。。


さて、調査隊はかくしてGoogle先生にいろんな質問をぶつけることになるわけです。

結局見つけたのは

cd /etc/sysconfig/network-scripts/ifcfg-eth0

ここにDNSが書かれていて、しかもこれはrc.localで起動時に読み込まれるように自分で設定したファイルだったからでした。。。

んでもって、ここのDNSも先輩DNSに変更。そしてreboot。

ぉ~!ちゃんと反映されている!!

ちゅうわけで、1,はクリア。


次にカテゴリ毎のページ。
これは非常に簡単でした。
カテゴリクリックすりゃ、そのカテゴリだけのページが出てくる。

んで、気に食わない表示は、
wp-content/themes/default

この中のarchive.phpを見て、よく変数の意味を考えて
ちょこちょこ変えればいいだけ。

良かった良かった。

んだけど、別のページ扱いってことは、それぞれにテンプレートを
あてがわないといけないってことよね?

・・・どうすりゃいいの?

というわけで、これから調べながら、なんとかしてみます。

2008年10月1日水曜日

確認

どうせ個人メモ。いろいろ確認しておこう。


現状
web制作見習い
・xhtml+cssでなんとか自分の思い描いた形のページは作れる。
・ネットに蔓延しているSEOの知識はなんとか仕入れている。
・illustratorやphotoshopでwebデザインや画像修整はなんとかしているがセンスがない。
・flashは紙芝居的な初歩的な何かは作れる。Actionscriptはまだいじれない。

これから
目指すものは、ちゃんと自分でも制作ができるwebディレクター(ジェネラリスト的な何か)
・まずfedoraを構築してlinuxやらwebサーバやら何やら組めるようになり、トラブルにも対応できるようになる
・PHP+MySqlで考えたことは組めるようになる
・PHP+postgreSqlで考えたことは組めるようになる
・FlashはActionScriptも含めできるようになる
・Javascriptを使えるようになる。
・Ajaxに結び付ける
・CMSとか使いこなせるようになる。
・Ruby on railsでいろいろできるようになる。
その他
・英語聞ける、話せるようになる
・リードギター弾けるようになる
・MacかPCでDTM
・ラッピング検定

webは仕事も絡んでいるのでとびとびだけど
ここにメモして、後から思い出せるようにするのが
このblogの目的。

役立たずのジャンクなblogですんません。。。

WordpressIntegrator

今回もはまりまくり・・・。

まずwordpress日本語版の2.6.2をインストール。
これは驚くほど簡単。

今度個人的なサイト構築にも使ってみようかな・・・。

そんなことを考えながら、
http://nanabit.net/modx/wordpress-integrator.html

ここでWordpressIntegrator1.2をDLして、
指示に従ってプラグインだの、スニペットだのを作っていく。

さぁアクセス!


ふむ。MODx Parse Errorなんぞ出て怒られる。
どうやら、サーバにアクセスしたけどタイムアウトだよ。ば~か!

って言われてる。

馬鹿って言う方が馬鹿なんじゃぃ!
と、誰もバカって言ってないのに泣き怒りしながら原因追究。

どうやらWordpress側のファイルに問題がある模様。

wp-includesの中のcron.phpに

$argyle = @fsockopen('ssl://' . $parts['host'], $port, $errno, $errstr, 0.01);
だの
$argyle = @ fsockopen( $parts['host'], $port, $errno, $errstr, 0.01 );
だの書いてあって、これの最後に記述してあるタイムアウトへの時間が短すぎる模様。

0.01 → 0.1に修正

するとまた違うMODx Parse Error。。。

バカって言うh(以下略)

対処の仕方は
http://tkfm.net/log/eid334.html

ここに書いてあった。
この情報はとても自分の状況にぴったりフィット!

結局、なんとか表示されるところまでこぎつけました。

ふぅ。。。

さて、テンプレート作って装飾すっかなぁ。

2008年9月30日火曜日

modxの移行とかPHPの再コンパイルとか

先日作ったバーチャルホストの一つはお客様が使っているmodxの環境を再現して
それにいろいろつけたり外したり、いじったりいじられたりをしていかないといかんので、
まずは、それをすることにする。

で、何を思ったのか、ふとpostgresqlを入れたくなってインストール。

でもそういやPHPインストールするときにpostgresqlのオプション付けてない・・・。

というわけでPHPを再度./configureすることになる。

make disclean
して

んで
./configure
オプションは、上書きなのかどうかよくわからんかったので、必要なものは改めて全部書いてスタート。

んで順調に
make
make install
と相成りましたとさ。

さて、modxさね。


まずは、客先のmodxのmanager画面でキャッシュをクリア。

すかさず、sshで全ファイルをローカルにダウンロード。
さらにwebminを使ってsqlのdumpファイルをゲット。

そいでもってfedoraに・・・fedoraに・・・。

ん?どうやってアップするんだ?

というわけでOpenSSLをインストール。
これはそんなに難しくなかったので割愛。
たぶん、もう一回やる時もネット見ながらやればなんとかなりそうな感じ。

んで。

/usr/local/mysql/bin/mysql -u xxx -p

これでmysqlの操作に入って
CREATE DATABASE xxx
で、xxxというデータベース作る。

ぁ、もちろん、mysqlインストールした後に、
ユーザーとパスワードは作っているのですよ。

今回は、お客様のmodxとユーザー名もパスワードも同じにしたので
modxの設定ファイルはいじる必要なし。

ssh使ってそのままアップ。

んで、Mysqlにdumpファイルをインポートせねば。

せねば・・・。


せねば・・・・・・・・・。


ん?

どうやって?


というわけで、PHPmyAdminなるものをfedoraへインストール。

これもまぁ、ネットとか見ながらやれば、また入れれるでしょう。
特にトラブルなし。

そして、インポートへ。



・・・できない。

どうしても固まってしまう。

なぜだ。。。

調べても出てこない。
なぜだgoogle先生よ!

サイズも2MB以内だし。

よくわからないので、ここはコマンドでインポートすることに。

まずは、sshでわかりやすい場所にdumpファイルをクライアントからアップ。

んで、

/usr/local/mysql/bin/mysql -u xxx -p yyy < ファイルの場所

って感じでなんとかインポート。

そして、記念すべき初linuxで初modxにアクセス!!


ログイン画面出た!

ログイン!

でも、文字化けしまくり・・・。

文字化けに関しては、なんかいろいろややこしいみたいで。
いろんな情報みながらやってみたけど、どうにもならず。

こればっかりは、手作業で直すしかないのだろうか。

とりあえず保留。


んで、とりあえず1個ファイル作ってみる。


cannot openなんたらかんたら・・・。

反映はするけど、キャッシュファイルがどうにも開けないらしい。

というわけでパーミッションやらファイル所有者やら、いろいろ見てみたものの
できない。

おかしい。

ふと思いついてapacheの設定ファイルを見る。

ん?

Allowoverride None

これって.htaccessを無効にしてるんじゃ?


試しに
AllowOverride FileInfo Options
にしてみる。

うまくいった!!

そして現在に至るのだ。

次はwordpressとmodxの連携をしなければ。
がんばってみよ~。


ふぅ・・・。

2008年9月29日月曜日

バーチャルホスト他

いかん。気を抜いているとここに書くのを忘れてしまう。

メモする癖をつけねば。


○バーチャルホスト。
今回はテスト環境を作っている。

簡単に書くと、同僚であり先輩であり師匠のfedoraをDNSサーバにして
クライアント(windowsVISTA)のネットワーク設定でDNSをいじることにより
本番サーバとテストサーバを切り替えている。

というわけで、詳しいことはまだわかんないが
IPベースでバーチャルホストを設定するのが良いということになった。

で、IPベースでのバーチャルホストの設定。

/usr/local/httpd/config/httpd.conf

こいつの中の最初の方に
Listen
というの書くところがあるので、そこに
Listen 192.168.x.xxx
Listen 192.168.x.yyy
という風に二つIPを書く。

もちろん他のPCと重複しないように。

んで、95行目くらいに
VirtualHostがどーのこーのと書いてあるので
その下あたりに

<VirtualHost 192.168.x.xxx>
ServerAdmin xxxxx@example.com
DocumentRoot /home/xxx/htdocs
ServerName www.example.com
ErrorLog /home/xxx/etc/error_log
CustomLog /home/xxx/etc/access_log combined
<Directory "/home/xxx/htdocs">
Options FollowSymLinks
AllowOverride None
Order deny,allow
Allow from all
</Directory\>
</VirtualHost>
<VirtualHost 192.168.y.yyy>
ServerAdmin yyyyy@example2.com
DocumentRoot /home/yyy/htdocs
ServerName www.example2.com
ErrorLog /home/yyy/etc/error_log
CustomLog /home/yyy/etc/access_log combined
<Directory "/home/yyy/htdocs">
Options FollowSymLinks
AllowOverride FileInfo Options
Order deny,allow
Allow from all
</Directory>
</VirtualHost>



このように書く。(<>の記号は全角にしているので使うときは半角に直す)

AllowOverrideは必要に応じて値変えます。(また書くかも)

んでapacheを再起動
/etc/rc.d/init.d/httpd restart

それぞれのDocumentRootの場所にわかりやすいindex.htmlでも作って
まずIPでアクセス。

・・・OK。

んでクライアントの設定変えて、今度はURLでアクセス。
(DNSの設定は師匠がしてくれた)

・・・OK。

ふぅ。

まずはここまでが数日前に終えたこと。

2008年9月24日水曜日

IPアドレスを複数割り当てる

今回作っているのはテスト環境なので、
1台でいろんなサイトが構築できるようにバーチャルホストを設定する必要がある。

というわけでfedoraにIPを複数割り当てる方法を模索。

はじめ
/etc/sysconfig/network-scripts/ifcfg-eth0
これに
/etc/sysconfig/network-scripts/ifcfg-eth0:1
を加えて、そこに2つ目のIPアドレスを書いていた。

・・・が

eth0:1だけ反映されて、再起動なんぞしようものなら
windowsのターミナルからアクセスできなくなってしまう事も。

むぅむぅうなりながら試行錯誤しつつ、最終的に学んだものは

fedoraが最初に読み込む
/etc/rc.d/rc.local
こいつに
ifconfig eth0:1 192.168.xxx.xxx netmask 255.255.255.0

こいつを書き込むことだった・・・。

なんて単純な荒業に思えるが、どうやらこれでいいらしい。

rebootしてifconfig

できている。。。

俺の3時間を返せ~!

といいたくなる出来事でした。


さて、次はapacheのバーチャルホストの設定か・・・。

apacheが2つ!?

どうやらapacheが2つ入ってた模様。

/etc/httpd/conf/httpd.conf
/usr/local/http/conf/httpd.conf

いろんなサイトを見ながら設定していたら、↑の2つの設定ファイルを
な~んも知らずに設定していた模様。

/etc~に入っているのはyumで入れたものが多く、通常、ソースから
インストールすると
/usr/localに入るものらしい。

つまりyumでapacheも全部入っていたのか?

rpm -qa | grep httpd
で、パッケージの有無を確認。
rpmで確認できるのはyumでインストールされたパッケージらしい。
んで、存在していた、と。

man yum
で、yumのマニュアル確認。

どうやらパッケージの削除は
yum remove
らしいので

yum remove httpd
と入力。

消えたみたい。

んでソースからインストールしたapacheが起動しているかどうか確認

ps aux | grep httpd

どうやら動いていないらしい。

/usr/local/httpd/bin/apachectl start
で起動させる。

ブラウザでチェック。

起動していた。


さて、apacheの設定やり直し・・・。

2008年9月11日木曜日

前の続き

何のことはない

<meta equiv="Content-Type" content="text/html; charset=UTF-8">

これを忘れてただけだった。

さて次はPHPだね。

fedora9にてapache設定中

apacheの設定は、いろんなサイト見てやった。

んでも、ページ見れない。

なぜか。

答え:なんだかわかんないけどファイヤーウォール的なものが起動してた。

iptableとかいうの。

# /etc/rc.d/init.d/iptables stop
# /sbin/chkconfig iptables off

この2つやった。

ひとまずページは見れた・・・のか?
ソース表示するとちゃんとしてるのに、画面まっ白。

さてgoogle先生に聞いてみよう。

2008年1月5日土曜日

知恵熱出そう

まずは言葉から

パラメータ=引数「ひきすう」

関数(引数1, 引数2,)みたいな感じ。

関数は命令みたいな感じかな。

変数は$がついてて、いろんな値を入れることができる箱みたいなもん。

◎覚えたこと

isset(変数)

変数が定義されてるかどうか調べる。
定義されてる=値が何かしら入ってたらTRUE、なけりゃFALSEってことらしい。
TRUEとかFALSEは条件分岐で便利っぽいよ。


A != B
AがBじゃない

htmlspecialcharas(言葉)
HTMLに影響を及ぼしそうな文字を&とかに変えてくれる便利な方。

setlocale(LCTIME, "ja")
時間の場所設定
strtime("%x")
%xにはいろいろ決められた値があるみたい。
日時や曜日を文字であらわしてくれるのだ。


$file = fopen("ファイル名を相対パスで") or die("ほにゃらら");
flock($file, LOCK_EX);
fputs($file, $naiyou);
flock($file, LOCK_UN);
fclose($file);

これらはセットでおぼえなきゃ。
ファイルを開いて、
他の人がいじれないようにロックして、
ファイルに中身を書き込んで、
ロックを解除して
ファイルを閉じる
って流れ。

一行目は$fileって変数を定義。
fopenはファイルを開くんだけど、なかったら作ってくれるらしい。こりゃすげ~。
or dieのほにゃららはファイルがなんかの理由で開けなかった時のエラーメッセージ。
んで二行目でロック。ロックしてんのに、なんで自分はいじれんのかはよくわからんけど自分はきっと中にいるのでしょう。
んでfputs。$naiyouってのは、なんか文字列を定義してると思ってくれ。
その文字列をファイルの中に書き込む作業。
んで4行目でロックを解除。
んで5行目で閉じると。

解除すんのも、閉じんのも、忘れたら大変なことになるってばっちゃが言ってた。

is_dir(ディレクトリ名)
ディレクトリ名がほんまにディレクトリか確認。
ちなみに
!is_dir(ディレクトリ名)
ってやると、ディレクトリじゃない確認。

opendir(ディレクトリ名)
ディレクトリを開くのだ。

readdir(開いてるディレクトリ名)
ディレクトリの中のファイル名一覧を呼び出すっぽい。

fread("ファイル名", バイト数)
ファイルに書かれてるものをバイト数だけ呼び出すらしい。

closedir(ディレクトリ名)
ディレクトリを閉じる。

$変数["キー"]
連想配列っていうらしくて、
$変数 = array(キー => 内容, キー => 内容)
って並べていけば、同じ変数名でもキーによっていろんな値が入るみたい。
表というか簡単なデータベースみたいに使えるっぽいよ。

ksort(変数名)
ってやれば、連想配列の並べ替えが昇順でできるみたい。

foreach (変数名 as $key => $value){
 作業
}

配列のキー($key)と内容($value)がある限り作業を繰り返すんだね。

キーと内容を羅列したいときに便利
たとえば作業のとこに
echo "キー: $key 内容: $value ";
って書いとけば、キーと内容を羅列してくれる。

すごいすごい。

あと、
$_POST["postされる時の名前"]
ってのがあって、

HTMLのフォームタグでinputのnameに名前いれとけばinputの値が勝手に、変数になってるらしい。

これは便利かも。

あれ?これって連想配列の一つなんかも。

いや~、今日はいっぱい勉強しました。

疲れた。

2008年1月4日金曜日

言葉

変数、関数、パラメータ・・・。

使ったことない言葉がいっぱい。

こいつぁ困った。

でも今日は時間切れ。

また明日がんばりましょう。

条件分岐switch

switch (変数) {
case 値1:
echo "結果1";
break;

case 値2:
echo "結果2";
break;

default:
echo "結果3";
}

変数の値が値1なら結果1を表示、値2なら結果2を表示、どれでもなければ結果3を表示。

caseは何個でも作れるみたい。

乱数の生成がいまいちまだ理解できてないけど、乱数使えばおみくじとかもできるかも?

TRUEとFALSE

変数を定義するとき(定義って言葉は合ってんのかわからんけど)、
変数の値がゼロや空文字列か、nullであれば、FALSE、ほかはどんな文字でも(たとえばFALSEという文字が入っていたとしても)TRUEらしい。

なんにこれらが役に立つかはまた今度かなと。

条件分岐

if (条件式) {
 実行すること
}
elseif (さらに条件) {
 実行すること2
}
else {
 実行すること3
}

もし条件式がただしかったら「実行すること」を実行。
違くて、さらに条件に合ってれば「実行すること2」を実行。
それも違かったら「実行すること3」を実行する。

ん。これはEXCELの=if(条件,A,B)ってやつと似てるから覚えられるかも。

でも省略されると、途端に頭がビックバン。
if ($hoge) {
 実行すること
}
ってなってると、$hogeがTRUEなら「実行すること」を実行。

TRUEってなんじゃ?藤井フミヤか?

我ながら寒いな。

んでもEXCELの関数もTRUEだのFALSEだの出てきて、よくわからんくなった。

if (!$hoge) {
 実行すること
}

ってなってると、もし$hogeがFALSEなら「実行すること」を実行。
つまり、変数の頭に!がきたら「FALSEの場合は」になるわけだ。

$hoge = (条件) ?" "A" : "B";

ってなってたら、if使わなくても条件分岐可能らしい。

ようは、変数$hogeが「条件」通りなら変数はAになって、違かったらBになると。

んでたとえば

echo "これは $hoge なのです";


こうやると、条件にあわせて、「$hoge」部分が表示されるっちゅうわけやね。

「条件」なん ? こう : ちゃうならああ

って感じの日本語に直せば覚えられるかなぁ。

whileとfor

while (条件) {
 実行すること
}

条件が合うまで、実行することを繰り返すのです。


for (条件とそれに合うまですること) {
 それに合わせて表示とか
}

whileは条件に合うまで繰り返す。
forは条件に合うまで何か繰り返すってことを書いて、それに合わせて何をするか書くっぽい。

いまいちわかってないのがよくわかる文だ。

echoとprintって

echoとprintってどう違って、どんな時にどっちをつかえばええんじゃろ?

echo print

文字列を表示するのは

echo "ほにゃらら";

もしくは

print "ほにゃらら";

""で囲んだら変数が変数の値として表示される。
''で囲んだら、変数は変数の値じゃなくて、変数名で表示される。