ほぼ雑記的メモ
Windows8初体験(正確にはプレリリース以来というべきか?)
タッチパネルは結構気に入ったけど、結局タッチパネルだけで完結してないから、あんまり意味ないよーな。普通にデスクトップに入ると細かすぎて誤爆するし。
で、予想以上に設定とかやり方が分からないという。ググりながら悪戦苦闘中。
基本はMac使ってるんですが、やはりたまに使わざるを得ないんですよねぇ。 で、買うとなると英語配列にしたいので自ずと選択肢はしぼられるというか・・・まぁ悩まなくてよいのは楽ですが。 今会社で使ってるやつは2006年に購入したもののようなので、7年間使ったことになるようです。
折角なんでOffice2013も買いました。極稀に必要なんですねぇ・・さすがにOffice2000では辛いというか。極稀のために数万出すのもなんだかなぁという感じですけど。
最近さくらのVPSとか安価でFreeBSDを使えるサイトが出てきました。 こういったサービスでもjailを使いたいのですが、 悩ましいのが安いサービスはIPアドレスが1つしかもらえないこと。 もちろん適当なプライベートなIPアドレスをIFにaliasで振ってjailを作っちゃえばいいんですが、これだとjail内部から外部へ通信ができないという問題があります。
そこでpfを使ってNATを構築してみました。jailをプライベートIPで外へ出ていくパケットをNATでグローバルIPに変換してやろうという考え方です。
いろいろ試行錯誤してみましたが、結論からいうともう1つIFを作るのが手っ取り早いようです。とりあえずlo1を作ります。
# ifconfig lo1 create # ifconfig lo1 up
で、アドレスを振る。ここでは 10.0.0.1にしてみました。
# ifconfig lo1 10.0.0.1 netmask 255.255.255.255
/etc/pf.confに次のように書きます。
ext_if="em0" int_if="lo1" table <private> const {10.0.0/24} nat on $ext_if inet from ($int_if) to ! <private> -> ($ext_if)
これで jailを10.0.0.1で起動すれば、lo1(すなわちjail)から外に出るパケットはpfでext_ifのアドレスに書き換えられます。 (em0は適当に環境に合わせて書き換えてください)
/etc/rc.confで起動時に自動的に実行させるには以下の行を追加します。
ifconfig_lo1="inet 10.2.2.1 netmask 255.255.255.255" cloned_interfaces="lo1" pf_enable="YES" pf_rules="/etc/pf.conf"
いずれもFreeBSD-9.1で確認しました。
セキュアにアクセスとかドヤ顔で言われても、"J"一文字抜かしてるだけで、胡散臭くてインストールを躊躇するというか。いやこれが本当にマルウェアだったら笑うしかないところですが。
具体的にどうやって設置するのかを調査を兼ねて設置してみました。
各社ともHTMLコード生成のページとか用意しているから、導入は簡単か?と思ってたんですが、これが細かいことにこだわると結構面倒だということが判明。例えばFacebookのイイネボタンを押した回数は消せない等々・・・
こんなん超人気サイトでも無い、こんなゴミみたいなブログじゃ限り限りなく0じゃん。とか思いつつ、ああこれはブログは書かないでFacebookのほうに全部書けよという作戦なんだな!と思ったところで納得しました。
そのあたりも含めて、好き放題やるなら、ちゃんとAPIとやりとりしてやらんといかんのだろうなぁ。で肝心の設置方法ですが、FacebookはこちらのURLからポチポチと情報を打ち込んでいけばOKです。
https://developers.facebook.com/docs/plugins/
mixiはこちらあたりから、
http://developer.mixi.co.jp/connect/mixi_plugin/
Facebookはアプリを登録しておかないといけません。 mixiは開発者登録が必須。 この辺が面倒なところなんですよね。
4/5くらいにAAAAレコード書いてみたけど、まだ4件くらいしかアクセスないという。 ま、IPv6でつないでも何もいいことないですけどね。
それにつけても、Google等のクローラーボットのアクセスの多いことよ。
config.paths['log'] = ["/var/log/rails/production.log"]
config.logger = Logger.new(/"/var/log/rails/production.log")
config.logger = Logger.new("/var/log/rails/production.log") config.logger.level = Logger::INFO
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(3000, '127.0.0.1');
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(80, '127.0.0.1');
node.js:201 throw e; // process.nextTick error, or 'error' event on first tick ^ Error: listen EACCES at errnoException (net.js:640:11) at Array.0 (net.js:726:28) at EventEmitter._tickCallback (node.js:192:40)
var http = require('http'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World\n'); }).listen(80, '0.0.0.0', function(){process.setuid(80)});