備忘録。らしい。

⋯⋯らしい。

わー、なん年ぶりよ。
CSSのメモ。
BOX要素を左右に振り分けレイアウトするとき、親BOXに{overflow:hidden;}をかけて、ついつい左は{float:left;}、右はサイズや内容によって{float:left;}や{float:right;}を使っていたけど、エヘンエヘン!
たとえば、{float:right;}したものが、計算結果の親BOXのheightを突き抜けていると、当然ですが描画されませんぜ。
なんつーか、ほら、HTML5でいうBODY要素直下のHEADER要素とか、とくにメディアクエリーによっては縦ピクセル限定したいときあるでそ?
描画しないからこその{float:[どっちか]}と{overflow:hidden;}なわけですよ。
ここ、基本原則です。
なので、突き抜けても描画させたいなら、以下でチェック:

  1. 親BOXは{position:relative;}必須よ
  2. 先輩要素(おそらくロゴマークとかでそ)は{float:left;}していていいよ
  3. 突き抜けさせたい俺要素は、まあ{display:block;position:relative;}で、好きな位置を{x:*px;y:*px;}してやるといいよ

まあ、親BOX要素内に[突き抜けないー突き抜けるー突き抜けない]みたいに要素並べるときもこんな感じで現物合わせするしかないぽ。
それにしても!
CSS」の「C」が『カスケーディング』であることをすっかりサッパリ忘れて、偉そうにBEM・BEM言ってる自称プロ「デザイナー」のなんとまあ掃いて捨てても腐臭を漂わせていることよ。
「!important」とか書いてるのは、結局あんたらの無策の結果なんだってばよ。
ヲイラはそんなん、借り物CSSいじったときくらいしか書いたことないわ。らしい。

翔泳●社の一歩先にいくなんちゃら本のとおりにカスタム投稿タイプをfunctions.phpから追加すると、同本でもおすすめなプラグインWP SiteManagerを使ったときに、カスタム投稿タイプのアーカイブページでSEO関連のdescriptionが空っぽになる。
そんなときはfunctions.phpで投稿タイプを追加する記述の中に

'description' => "ほげほげ",

とキチンと記述しておくこと。
つうか、いい加減な本だなああれ。らしい。
それにしても、WP SiteManagerは配布元の専用説明サイト( http://www.wp-sitemanager.com/ )がドロンしたまんまだし、WordPress界隈ってなんかよくわかんないよ。

WinDOZEのバージョンが上がろうが、IEが11になったりEdgeがドヤ顔でしゃしゃり出ようが、M$のソフトウエア造りの精神は絶対に不滅だ!

重要事項

  • CSSのtransitionで、サイズ類などをcalcで与えてはいけない!
  • transitionするべきが全然できず、スカッと遷移するだけ!
  • durationとか全部無視しやがんの!
  • 解決方法は簡単。calc()をやめるの。
  • calc(100% / 3)だったら 33.333%って書くの。

こんなクソ挙動で平気でいるのなんてM$だけだぞ(´;ω;`)

いまだにこんなことなんでやってられるんだよ! こんないい加減なブラウザをなぜ配布する!? 世界を終了させたいのか!

何日徹夜しようが、問題の大元さえ見つけられれば疲れなんか吹っ飛ぶのさ。でもできればM$は消えて無くなって欲しいよね、キミもそうだろ。うんうん。らしい。

ちな↓これな。
もうちっと検索ワード工夫すれば近道できたんかのう。
IE11のバグまとめ - Qiita

うへえい。ワン・イヤー・オーヴァー。
OSX El Capitanさんで最新版XAMPPさんにしごとしてもらおうとやってたんだけど、もうずーっと403地獄。
うわーん。でもvirtualhost使えないとしごとんなんないしー。
どうもどうやら仕組みが変わったらしい。
XAMPPは5.6-23。Apacheさんは2.4.18。
いきなり /Applications/XAMPP/xamppfiles/etc/httpd.conf にずーっと使ってたvirtual.confを読み込ませたのがいけなかったみたい。
初心に帰ろう!

448行目辺りにあるバーチャルホストの部分のコメントを外します。

# Virtual hosts
#Include etc/extra/httpd-vhosts.conf
↓
# Virtual hosts
Include etc/extra/httpd-vhosts.conf

バーチャルホストを設定するファイルを開きます。

vi /Applications/XAMPP/xamppfiles/etc/extra/httpd-vhosts.conf

バーチャルホストの設定を適当に。

<VirtualHost *:80>
    ServerAdmin  user@example.com
    DocumentRoot "/Users/user/localhost/test/www"
    ServerName test.local
    ErrorLog "logs/test.local-error_log"
    CustomLog "logs/test.local-access_log" common
        # Order Deny,Allow
        # Deny from ALL
        # Allow from test.local 127.0.0.1
    <Directory "/Users/user/localhost/test/www">
        Options Indexes MultiViews
        AllowOverride All
        Require local
    </Directory>
</VirtualHost>

Apacheを再起動したら普通に使えるようになる筈です。

Macでxamppを使う

言われたとおりにhttpd-vhosts.confを書き換えます。初心たいせつ!
だがしかし、うちの環境のテスト用にごにょっと。臨機応変たいせつ!
事前にSitesフォルダにtestappleディレクトリを作って、中に適当な寝言を書いただけのindex.htmlをほりこんどきます。

Listen 8080
#NameVirtualHost *:8080
<VirtualHost *:8080>
	DocumentRoot "/Users/sinbad/Sites/testapple"
#	ServerName localhost
	<Directory "/Users/sinbad/Sites/testapple">
		Options Indexes MultiViews
		AllowOverride All
		Require local
	</Directory>
</VirtualHost>

これで、新しくなってかわいげのなくなったXAMPPコンパネからApacheさんをリスタート。
ブラウザから http://localhost:8080/ を開くと…
川‘ヮ‘) 動いたわあ!
ここまで確認できたので、httpd-vhosts.confにはご退場いただいて、自前のvirtual.confを一旦別名で逃がして、動く設定から徐々に追加していくことに。
以下、自分メモ:

  • どうやら、NameVirtualHostの宣言はいらないみたい。
  • 同じく、ServerNameはなくてもいいみたい。
  • 肝心なのは新2.4系Apacheさんに必須な Require ディレクティブみたい。Order deny,allow じゃねえだろってことらしい。ここいらへんをあとで読むよ!↓

人間とウェブの未来 - Apache 2.4系でのモダンなアクセス制御の書き方

のちのち気づいたら追記する。らしい。

たとえばお手軽にbootstrap3でこんなかんじのをOLリスト表示させるの。

<ol class="list-group">
<?php
$familynames=array(
	'一橋',
	'二階堂',
	'三枝',
	'四谷',
	'五十嵐',
	'六角',
	'七尾',
	'八子',
	'九重',
	'十和田',
);
shuffle($familynames);
foreach($familynames as $FN){
	echo '<li class="list-group-item">'.$FN."</li>\n";
}
?>
</ol>

するとこんなかんじ。

どうもOLにしたところでbootstrap3のli.list-group-itemはインデクス数字つけてくれないらしい。角丸ボーダーでグループ表示になってるのいいから使いたいんだけどなー。
しーかたがないのでクラスを追加してCSSを書き足すの。

<ol class="list-group numbered">
.numbered li {display:list-item;list-style-position:inside;padding-left:1em;}
.numbered li::before {content:' ';}

すると、なんとか出てくるの。

でもちゃちいよね。そもそもOLで付く数字って左寄せなんで、1桁と2桁以降だとピリオド以降の位置が違うし、あんまりきれいじゃないと思うの。
なので、ブラウザ機能で単純に表示させるんじゃなくて、自前でやってみる方向で。
こことか参考にしたよ↓
Styling ordered list numbers | 456 Berea Street
CSSを大幅に書きなおしやす。本来短いのなら一行でサクっとやるのがスタイルなんだけど、あとで泣きながら参考にする自分に向けてインデント書きしやす。

.numbered {
	counter-reset:li;/* これはリストを入れ子にするときに必須みたい */
}
.numbered>li {
	padding-left:2.5em;
}
.numbered>li::before {
	content:counter(li)'.';/* いきなり連結! */
	counter-increment:li;
	position:absolute;
	top:.4em;
	left:.2em;
	-moz-box-sizing:border-box;
	-webkit-box-sizing:border-box;
	box-sizing:border-box;
	width:2em;
	margin-right:8px;
	padding:4px;
	font-weight:bold;
	text-align:right;
}


できーた!

beforeの擬似要素で使うcontentなんだけど、PHPの . とかjavascriptの + みたいな連結文字文字列の結合演算子を使わずに、直接続けて書いちゃえば連結できちゃうのは発見だったっす。

むひひ。らしい。

PEARのMail_mimeDecodeのテストのためのメモ。

<?php
require_once 'Mail/mimeDecode.php';
//↑ここまでできていること前提で

$mail = file_get_contents('../tmp/mail.eml');
//↑適当なディレクトリにOSXのMailなら「別名で保存→フォーマットはメッセージソースを選択」で書き出しておく

$params=array();
$params['include_bodies'] = true;
$params['decode_bodies'] = true;
$params['decode_headers'] = true; 
$decoder = new Mail_mimeDecode($mail);
$structure = $decoder->decode($params);
var_dump($structure); 

あっちこっちのサイトを見ると「標準入力でー」の方法ばかりでエグエグしたけど、file_get_contents()なんだからこれで動いた。らしい。

深夜の底から未明にかけて、明るくなりつつある空を眺めながらエージェント活動さ、散歩をしつつハタと気付く。で帰宅早々直しますた。じゃーん。

<?php
class panSendMail {
	//
	public $recipient;
	public $subject;
	public $body;
	public $from;
	public $head;
	public $language;
	public $textencode;
	
	public function __construct($language='ja',$textencode='UTF-8'){
		$this->language=$language;
		$this->textencode=$textencode;
		mb_language($this->language);
		mb_internal_encoding($this->textencode);
	}
	
	public function Send($recipient,$subject,$body,$from,$who=''){
		$this->recipient=$recipient;
		$this->subject=$subject;
		$this->body=$body;
		$this->from=$from;
		if(!$who) $who=$from;
		$this->head='From: '.mb_encode_mimeheader($who).' <'.$this->from.'>';
		
		$result=mb_send_mail($this->recipient,$this->subject,$this->body,$this->head);
		return $result;	
	}
	
}//class

送信者名が化けないのは「化けようがない=1バイトの送信者名」での送信を2度繰り返して3度目に2バイトの送信者名をメソッドの引数にあてがったときだったわけよね。
んじゃあメソッドの中のmb_language()やmb_internal_encoding()を早めにやってみたらどうかしらと思いついてやってみたのが上記。各環境mb_関数をコンストラクタに移動してみたら、これが当たり。
mb_encode_mimeheader3連続での送信でうまくいっちゃってたのは、1回目に送信者名を用意する段階では環境mb_関数が効いていなかったのに、1バイトだったから気づかなかったってこと。同じオブジェクトで2度目の送信をする段階では、前回の名残で環境mb_関数は効いていたからうまくいっていたってわけね。
サイトによっては、mb_encode_mimeheader()を2つの環境mb_関数の前にやれ、みたいなところがあって、ついうっかりそれを盲信しちゃったのがまずかったよねー。
PHPでメール差出人の文字化けを解消する | m630.net
馬上、枕上、厠上(=三上)とはよく言ったものだけど、朝っぱらからオラオラで壊したり線引いたり囲みながら歩き回るのも、けっこうメリットがあったりする。らしい。