XMLでエレメントと属性のどっちに持たせるか問題

XMLスキーマを設計しているといつも悩む。

<person>
  <id>1</id>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>
<person id="1">
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

データ項目をエレメントと属性のどちらに持たせるか。StackOverflowにこの件に関して記事があった。

stackoverflow.com

まとめると次の通り。

  • 木構造にできるし、複数繰り返せるのでエレメントの方が優位
  • 属性は将来的な拡張性が無い
  • データはエレメント。データのメタデータは属性

githubで「error: The requested URL returned error: 403 Forbidden」

github.comにgit pushしようとすると以下のエラーが出る。

$ git push origin master
error: The requested URL returned error: 403 Forbidden while accessing https://github.com/user_name/repo_name.git/info/refs

fatal: HTTP request failed

やり方は複数あるようだが、一番簡単なのは、httpsで接続し、githubのユーザーIDとパスワードで認証する方法みたい。

やり方だが、.git/configを次のように修正する。ユーザー名とリポジトリ名は適宜読み替えてください。

[remote "origin"]
        url = https://ユーザー名@github.com/ユーザー名/リポジトリ名.git

修正が完了したら、git push時にパスワードを入力して完了。

生産性向上

Jason Lengstorf氏は、自身の仕事の方法が原因で体を壊したことをきっかけに、コンピュータの使用時間を週40時間に制限することを決め、90分のブロックを単位とした、集中度の高い作業ポケットを設定した。労働時間を少なくすれば、過労や集中力の欠如を防止することができる。労働時間と同じようなケアレベルで休息時間を扱うこと、創造的なつながりを作り、元気を取り戻し、作業の目的を思い出すために休憩を利用することが必要だ。

www.infoq.com

個人レベルで可能な生産性向上の一番の方法は、睡眠の確保だと思う。 ずっと集中することは難しいので、最低限ではあるが昼間に眠くならないようにしたほうが良い。 昼間に眠くなると数時間から半日単位で仕事ができなくなる。 会社の業務中に寝るなんてあり得ないという人がいるが、そういう人でも昼間に眠そうにアクビしているケースがある。 そうはならないためにも、十分な睡眠を確保することだと思う。

DomDocumentでXMLを出力したら<head/>タグが出る

simplexml_load_file()XMLが読み込めないため調べてみると、XMLファイルの中に<head/>タグが含まれていていて、パースエラー起こしてた。 var_dump()すると出てないんだけど、printやechoすると表示される。 HTTPヘッダのContent-Typeをtext/xmlにしたら出なくなった。

<?php
$dom = new DomDocument('1.0', 'UTF-8');
$conditions = $dom->appendChild($dom->createElement('items'));
$condition = $conditions->appendChild($dom->createElement('item'));
$condition->appendChild($dom->createElement('name', 'りんご'));

$dom->formatOutput = true;
header("Content-Type: text/xml");
echo $dom->saveXML();
?>

なんだこれ。

iframeを枠を見せずに綺麗に埋め込みたい。

iframeを使っているのを悟られたくない。document.write()したかのように見せたい!!

<iframe src="https://xxxxxxxxxx" scrolling="no" frameborder="0" style="width:100%;max-width:100%;min-height:500px;overflow-y:visible;"></iframe>