javascript で特定の範囲だけ印刷
印刷したい部分をIDで指定して、その部分のHTMLを取得、印刷用のページを作って、印刷ダイアログを表示、その後HTMLテキストを元に戻す
function araeprint(area){
var areatext = document.getElementById(area);
var htmldoc = document.body.innerHTML;
window.document.body.innerHTML = areatext.innerHTML;
window.print();
document.body.innerHTML = htmldoc;
}
web-modeで、タグのオートクローズが効かない場合
ターミナル上のemacsではタグがオートクローズされないのが標準の動作
Autopairing, tag autoclosing does not trigger
This is the normal behavior when you run emacs in a terminal (tty). That’s because in text mode, pasting a long text is like inserting it one character at a time. Thus, the consequences can be bad e.g. many auto closing/pairing instead of one. If you wan’t to force autoclosing, autopairing even in a terminal, add (setq web-mode-enable-auto-closing t) and (setq web-mode-enable-auto-pairing t) in your .emacs
init.elに(setq web-mode-enable-auto-closing t) を追加する (setq web-mode-enable-auto-pairing t)
オートクローズの振る舞いの設定
;; auto tag closing
;0=no auto-closing
;1=auto-close with </
;2=auto-close with > and </
(setq web-mode-auto-close-style 2)
(setq web-mode-tag-auto-close-style 2)
tcpdf + PDFI + PHP によるPDFの出力
PDFで請求書を出力したかったのでやってみた
** Illsutratorを使用してPDFのテンプレートを作成する
Illustratorを使用して帳票のテンプレートを作成する。
保存するときに保存のオプションで、「互換性のある形式」を「Acrobat 5(PDF1.4)」にして保存する。
** tcpdf のインストール
https://github.com/tecnickcom/tcpdf
から zip をダウンロードするか clone して展開する。
** フォントのインストール
http://coliss.com/articles/freebies/best-of-free-japanese-fonts-for-2016.html
好きなフォントをダウンロードしてきて、.tff のフォントファイルを、tcpdf を展開したところに出来る fonts フォルダにコピーする。
fonts フォルダにフォントキャッシュが書き込まれるので、ウェブサーバプログラムのアカウントで読み書きできるようにする。
** FPDI のインストール
https://www.setasign.com/products/fpdi/downloads/
から FPDI のパッケージをダウンロードして、tcpdf とおなじところに展開しておく
** ライブラリの使用
>|
<?php
include 'tcpdf.php';
include 'fpdi.php';
$pdf = new FPDI(); // FPDI の呼出
$pdf->SetMargins(0,0,0); // 上左右マージンの設定
$pdf->SetCellPadding(0); // セルパディングの設定
$pdf->SetAutoPageBreak(false); // 自動改ページを無効
$pdf->setPrintHeader(false); // ページヘッダ無効
$pdf->setPrintFooter(false); // ページフッタ無効
$font_m = new TCPDF_FONTS(); // フォントクラスの呼出
$fontPathMintyo = './fonts/mintyo.ttf'; // 明朝フォントの設定
$MintyoFont = $font_m->addTTFfont($fontPathMintyo, '', '', 32);
$font_g = new TCPDF_FONTS(); // フォントクラスの呼出
$fontPathGothic = './fonts/gothic.ttf'; // ゴシックフォントの設定
$GothicFont = $font_g->addTTFfont($fontPathGothic, '', '', 32);
$pdf->AddPage(); // ページを追加
$pdf->setSourceFile('./template.pdf'); // テンプレートを読み込み
$tplIdx = $pdf->importPage(1); // 読み込んだPDFの1ページ目のインデックスを取得
$pdf->useTemplate($tplIdx, null, null, null, null, true); // 読み込んだPDFの1ページ目をテンプレートとして使用
$pdf->SetFont($MintyoFont, '', 12); // 書き込む文字列のフォント,サイズを指定
$pdf->SetTextColor(0, 0, 0); // 書き込む文字列の文字色をRGB指定
$pdf->SetXY(150, 20); // 左上から150mm右、20mm下の位置に
$pdf->Write(0, "ほげほげ" ); // 文字列を書き込む
$pdf->Output('testt.pdf', 'I'); // PDFとして表示
|<
自分の ipfw.rule
なんだかんだで長年使い続けてる ipfw.rule
#!/bin/sh
fw_cmd="/sbin/ipfw -q"
fw_add="${fw_cmd} add"
IIF="re0"
OIF="ng0"
my_net="192.168.0.0/24"
# flush old rules
${fw_cmd} -f flush
# Established、フラグメント化パケットは通過
${fw_add} 100 check-state
${fw_add} 110 allow tcp from any to any established
${fw_add} 120 allow all from any to any frag
# lo0用の設定
${fw_add} 200 allow all from any to any via lo0
${fw_add} 210 deny all from any to 127.0.0.0/8 via ${OIF}
${fw_add} 220 deny all from 127.0.0.0/8 to any via ${OIF}
${fw_add} 230 allow all from any to any via ${IIF}
# 外部からのPIP宛を拒否
${fw_add} 300 deny all from any to 10.0.0.0/8 via ${OIF}
${fw_add} 310 deny log all from any to 172.16.0/12 via ${OIF}
${fw_add} 320 deny log all from any to 192.168.0.0/16 via ${OIF}
# RESERVED-1, DHCP auto-config, NET-TEST, MULTICAST(Class D), Class E アドレスへのアクセス拒否
${fw_add} 330 deny all from any to 0.0.0.0/8 via ${OIF}
${fw_add} 340 deny all from any to 169.254.0.0/16 via ${OIF}
${fw_add} 350 deny all from any to 192.0.2.0/24 via ${OIF}
${fw_add} 360 deny all from any to 240.0.0.0/4 via ${OIF}
# deny rules
${fw_add} deny log tcp from any 137-139,445 to any via ${OIF}
${fw_add} deny log tcp from any to any 137-139,445 via ${OIF}
${fw_add} deny log udp from any 137-139,445 to any via ${OIF}
${fw_add} deny log udp from any to any 137-139,445 via ${OIF}
# my network
${fw_add} allow udp from ${my_net} to me 53 keep-state
${fw_add} allow udp from ${my_net} to me 123 keep-state
${fw_add} allow tcp from ${my_net} to me 137-139,445 keep-state
${fw_add} allow tcp from ${my_net} to me via setup
${fw_add} allow all from ${my_net} to me keep-state
${fw_add} allow all from me to ${my_net} keep-state
# outer network
${fw_add} allow tcp from any to me 20 keep-state
${fw_add} allow tcp from any to me 21 keep-state
${fw_add} allow tcp from any to me 22 keep-state
${fw_add} allow tcp from any to me 25 keep-state
${fw_add} allow tcp from any to me 53 keep-state
${fw_add} allow udp from any to me 53 keep-state
${fw_add} allow udp from me to any 53 keep-state
${fw_add} allow tcp from any to me 80 keep-state
${fw_add} allow tcp from any to me 110 keep-state
${fw_add} allow tcp from any to me 443 keep-state
${fw_add} allow tcp from any to me 587 keep-state
${fw_add} allow tcp from any to me 6667 keep-state
# icmp from/to outer network
${fw_add} allow icmp from any to any in icmptypes 0,3,4,8,11,12
${fw_add} allow icmp from any to any out icmptypes 0,3,4,8,11,12
# ntp
${fw_add} allow udp from ${my_net} to any 123 keep-state
${fw_add} allow tcp from ${my_net} to any 123 keep-state
# steam
${fw_add} allow tcp from ${my_net} to any 27015-27030 setup
${fw_add} allow udp from ${my_net} to any 27000-27037 keep-state
${fw_add} allow udp from ${my_net} to any 27014-27050 keep-state
${fw_add} allow udp from ${my_net} to any 4380 keep-state
# 許可されている以外の外部からの接続はログ撮って拒否
${fw_add} deny log all from any to any in via ${OIF} setup
# 上記以外の内部から外部へのTCPアクセスの許可
${fw_add} allow tcp from any to any out via ${OIF}
# それ以外は拒否
${fw_add} deny log udp from any to any
生き物を飼うということ
クラゲをポリプからストロビレーションさせて、エフィラにしたが、自分のミスなどから10月と11月の2回エフィラを全滅させてしまった。
3回目の挑戦になるが、やり直すたびにエフィラの数が増えて、1回目は20匹程度だったのが、2回目は50匹前後、3回目はおそらく150から200近くのエフィラを発生させて、飼育していたのだが、10cm前後の小さい瓶で飼っているとクラゲが大きくなるに伴って徐々に過密になってきて、水が汚れやすくなるようになってきた。
水替えの時にクラゲを移すのも手間と時間がかかるようになってきたことも有り、ざっくりと100匹ほど処分した。
ミズクラゲは最終的には15cmから30cmほどになるし、現状それほど大きくなるのであれば、2,3匹を飼う水槽を置くのが精一杯なので、どこかの時点で処分しなければならないことは覚悟していたが、やはりいろいろと思ってしまう。
生き物を飼う上で、その生き物の生死に対する責任を持つというのは飼い主の義務だというが、たかがクラゲでも結構しんどい物だな。
PHPでメールのテンプレートを読み込んで送信
smartyとか使うといいらしいが、それほどじゃないときに。
mb_language("ja"); mb_internal_encoding("UTF-8"); $toaddr = "$email"; // 宛先 $fromaddr = "From: " . mb_encode_mimeheader ('"送信者の名前"') . ""; $subject = "メールの件名"; // テンプレートからメール本文の読み込み ob_start(); require_once 'mailbody.tpl'; $mailbody = ob_get_contents(); ob_end_clean(); // 本文の文字列置き換え $mailbody = str_replace ("%name%", $name, $mailbody); $mailbody = str_replace ("%email%", $email, $mailbody); $mailbody = mb_convert_encoding ($mailbody, "iso-2022-jp", "UTF-8"); mb_send_mail ($toaddr, $subject, $mailbody, $fromaddr);
メールの本文(mailbody.tpl)
%name% さま %email% へ返信を送ります。
str_replace は array でもいいので、
$target = array("%name%", "%email%" ); $replace = array($name, $email); $mailbody = str_replace ( $target, $replace, $mailbody );
も可。