PHP

サイト整理はひとまず一段落。
内容の書き換えだけでなく久々に PHP をやったので少し覚書。

今まで sakura サーバーに上げた奴と local で動作が違う場合があったが

<?
    // sakura はコレで PHP 処理をする設定になっている
?>
<?php
    // local で動かしている httpd は PHP 宣言必須な設定
?>

こんな単純なことだった、<?php としたら当然のように同じ動作に。
何故今まで気が付かなかったのだろう、私ってほんとバカ。

AdSense を localhost で表示させない手段も変更。
表示確認で幾度もリロードするし誤クリックしてしまうのも防ぎたいので。

google.txt みたいなファイルを用意し AdSense スクリプトを書き込む。
ソレを Web に上げ local ファイルは違う内容にして都度読み込みコードに。
というかなり苦しい手段をずっと使っていたけど

<?php
$sitename = "L'Isola di Niente";
$hostname = $_SERVER['SERVER_NAME'];
$foottext = "Copyright(C) sasakima-nao All rights reserved 2002 --- 2014.";

if ($hostname == "localhost") {
    $google = <<< __EOF__
    // local 用 HTML
__EOF__;
} else {
    $google = <<< __EOF__
    // AdSense 表示スクリプト
__EOF__;
}
?>

http://localhost かどうかで振り分けすればいいジャン!
これで Web 上と local の構成をまったく同じにしても問題なくなった。

そんなわけで今までヘッダ部分はこんな感じにしていたけど

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width" />
<title><?php print($title); ?> - L'Isola di Niente</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div align="center">
<img alt="L'Isola di Niente" src="../img/banner1.gif" /><br />
<?php print(file_get_contents("../google.txt")); ?>
<div class="mainBlock">
<div class="entry"><a href="/">L'Isola di Niente</a> &raquo; <?php print($title); ?></div>

ヒアドキュメントというものがあったのさ。

<?php
require_once("../theme/vars.php");
echo <<< __EOF__
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width" />
<title>$title - $sitename</title>
<link href="../style.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div align="center">
<img alt="$sitename" src="../img/banner1.gif" /><br />
$google
<div class="mainBlock">
<div class="entry"><a href="/">$sitename</a> &raquo; $title</div>
__EOF__;
?>

Gedit のかなり優秀な色分け表示が台無しになってしまうのが難点。
しかし変数を自由に直書きできる魅力は捨て難い。

んでカテゴリ毎に点在させていたヘッダは共通ファイルを読み込むように。
サイト名を変更する場合も変数一つ変更すれば全ページに適用される。
SyntaxHighlighter 部分だけはカテゴリ別読み込みにしているけど。

ウチは三階層あるので三つ用意したが一つにまとめたいな…
CMS ツールなら単層にできるけど自力でやりたい。

こんなことイイな、できたらイイな。
を実現するのがプログラミングの楽しみですから。
PHP も自力で色々やってみると面白い、今年は Web メインかな。

GNOME Developer Platform Demos

GNOME Developer Platform Demos

ナイスなページ発見。
GNOME プロジェクトは何時の間かにこんなのを作っていた。

JavaScript はもう Gjs にしなさいみたい。
C, C++, Vala は Anjuta を使うのを前提にしているんだなぁ。

しかし Python だけ妙に詳しくて笑う。

インストールはこんな方法があるのか、autoreconf なんて知らなかった。
しかし print に括弧が無い、Python2 でまだいいよってことですか。
試したら本当にインストールできたけど…
先頭に #!/usr/bin/env python が無いので動かないwwwww
わざと?

Tutorial for beginners (Python)

アプリケーションメニュー(GMenu)はこうやればよかったのか。
GtkSwitch の notify::active なんて devhelp に載っていないんですけど…
とにかく参考になるわ、筆者はビギナー達の一人だったのか。

Python3 urllib

今日 Python3 で URI デコードをやろうとした。

Python 3 Porting Guide ? Porting to Python 3 v1 documentation
Python2 との違い一覧を作ってくれている人がいる、アリガトメルシー。
urllib.unquote は urllib.parse.unquote なのね。

#!/usr/bin/env python3

import urllib
print(dir(urllib))

''' output
['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '__path__']
'''

import urllib.parse
print(dir(urllib))

''' output
['__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '__path__', 'parse']
'''

なんだこりゃ…

quote

当然そうなるよな、何故だ?
/usr/lib64/python3.3/urllib
を覗いてみると

urllib_zerobyte

__init__.py が 0 byte だとこういう動作になるってことなのか。
なるほど、多分どこかでこの知識が役に立つだろう。

#!/usr/bin/env python3

import urllib.parse
from gi.repository import GLib

uri = "file:///path/to/My%20Waifu.jpg"

path = urllib.parse.unquote(uri)
print(path) #=> file:///path/to/My Waifu.jpg

path, host = GLib.filename_from_uri(uri)
print(path) #=> /path/to/My Waifu.jpg

ただ unquote だと file:/// とかは普通に残るんだよな。
ホスト名があった場合(LAN 上ファイル等)も面倒だし。
Linux なら GLib を使ったほうがいいや。
こんな楽な手段を知っているので Python モジュールの知識が全然無いというのも考え物だな。

dual-boot Windows 7 and Fedora 20

正月のヒマな時間を有効にと Windows7 ミニノートの SSD 化。
そんなネタはネット上にゴロゴロ転がっているのでデュアルブートに。

Windows 7 とのデュアルブート – L’Isola di Niente

この手のネタは普段コッチに書くのだけど。
このページに張っていた下記古い記事へのリンク経由の人が多く申し訳ないので直書きに。
インストーラが新しくなって以降デュアルブートを試していなかった事も気になったので。

Celeron su2300 mini Note @ Fedora Dual Boot | PaePoi

結果、普通にインストールすれば全自動でデュアルブートになりました。
Windows を優先でブートする方法は知らない、必要無いw

しかし Windows7 再インストール後のアップデートには本当にゲンナリ。
.NET のアップデートは何故ウン時間も掛かるのやら。
SSD 化で期待した PowerShell や IronPython の初期化速度もガッカリ。
むしろ倍以上時間差があった Fedora の起動速度との差がなくなる事態に。

これなら持ち歩きも Fedora でいいな、年に数回しか持ち歩かないけど。

ついでにに本サイト全ページの HTML5 化とスマートフォン対応化。
スマホ対応は下記をヘッダに入れるだけで基本終わりなんだけど。

<meta name="viewport" content="width=device-width" />

CSS も幅指定している部分があったので JavaScript で切り替え等をするはめに。
それと画像がはみ出すので変更していたら内容やスクショの古さが気になって…
全然整理が終わらない、物凄く忙しい正月になってしまった。

PowerShell tr command

こんなページを見つけた
エクスプローラからコマンドプロンプトやPowerShellを開いたり, その逆をする方法のまとめ – Qiita [キータ]

うおぉ!アドレスバーから起動すれば cmd.exe のカレントディレクトリにできるのか。
minipoli 必要無いジャン…

ついでに Shift を押しながら右クリックすると

path_copy

知らなかった。
マジで minipoli 必要無いジャン orz…

いや、URI 変換コピーとかがあるからまだ戦える、かも。
なんか小物フリーソフトって本格的に終わってしまったよね。

ついでに。

#nautilus `pwd`
nautilus .

GNOME の Nautilus もドットでカレントディレクトリを開くことができた。
そりゃそうか、今まで上のコマンドを打っていた筆者はアホだったのか。

**********

ということで。
久々に Windows を起動したので PowerShell ネタを。

以前エイリアスで grep コマンドを利用できるようにしたので今回は tr でも。
完全に再現する必要は無いと思うけど正規表現くらいは使えるようにしたいな。

$input に Pipe から送られてくるデータが入っているらしい。
-replace ではなく -creplace なら大文字小文字を区別するようだ。
正規表現については勝手にやってくれる、と思う。

function global:Tr {
    Param([string]$s1, [string]$s2)
    $input -creplace $s1, $s2
}

profile

%USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
に追記、なんかアッサリ作れてしまったけど本当にコレでいいのかな?

command

正規表現も使える、筆者が使う範囲ならこれで十分だ。
sed は別の人がやってくれるだろう。

問題はリダイレクトすると文字列が BOM 付き UTF-16LE になってしまうこと…
せっかく高機能なのに普通に使おうとすると中途半端なんだよなぁ。

追記

UNIXの部屋 コマンド検索:tr (*BSD/Linux)

ちょっと勘違いしていたな…

まあいいか、sed の代わりにも使えるし。