2011年12月16日

FirefoxのSyncが便利

ブラウザは、Firefox → Google Chrome → Safari → Firefox と変遷して結局、今は、Firefoxにもどってきました。
はじめは、firebugが便利で、Firefox使ってましたが、その後、Chromeのフルスクリーンに魅力を感じてのりかえて、Lionになってから、Safariでフルスクリーン出来るので、やっぱり、Macユーザとしては、ネイティブなSafariが良いかと思い、そして今は、FirefoxのSyncが便利なので、Firefoxにもどってきたとさ。

Syncの便利なところを上げると、、
  • ID/Passwordやブクマや履歴など共有出来るので、会社もしくは、自宅で閲覧していたものを、後で会社で開き直すとか、すぐに出来る
  • iPhoneにFirefox Homeってアプリもあるので、移動中とかに閲覧し直すとかも出来る
  • ロケーションバーから表示しているタブやブクマの検索が出来る

ソーシャルブックマークのサービスとか便利だけど、個人的には、ブラウザ内で検索出来るというのが気軽で便利だと思う。まぁ、Firefoxならプラグイン入れれば、ソーシャルブックマークサービスを検索出来ると思うが、プラグインは最低限のものだけしか入れたくないので、、、。

環境の差異が埋められるので、ずっと、一つのブラウザを使い続けている感覚になれて非常に便利なのでオススメです。

2011年12月14日

Windowsでアップロードが遅い問題について

アップロードが遅い問題について通常は、利用しているインターネット環境の問題がほとんどではあると思うのですが。Windows自体にも問題があるようです...
おもな原因として、Microsoftサポートに既知の問題として記載されていたので、こちらにリンクしておきます。

Internet Explorer 6 で Web ページへのファイルのアップロードにタイムアウト可能性がありますまたは Windows XP Service Pack 2 で完了する予想よりも長い時間がかかる

HTTP ファイルのアップロードの操作が完了するまでに時間がかかる

Internet Explorer 6 で Web ページを長い時間をアップロードします。

Windows Internet Explorer 7 でファイルのアップロードが高速化されている

どの問題においても、WindowsInternet Explorerを最新版にしておけば問題は無さそうです。
ちなみに、Windows XP向けにInternet Explorer 8も配布されております。

2011年6月20日

tornadoで複数リクエストを非同期で行うとか

仕組みは簡単に、
build_url, parse_response, build_page の3つのメソッド実装で、後は勝手に build_urlreturn した、URLへアクセスして、応答が返ってきたら、parse_response 内で、dictionary型の変数を、return すると、build_page で、self.context で値を取り出して、create した結果ページを return すれば良い。

ここには記載していないですが、build_url の return で、複数URLを返すと、順番にアクセスして、全部の応答が返ってきた時に、all_complete が呼ばれるので、そこで、すべてが返って来たときの処理とかも入れる。

class ExampleSingleProxyHandler(BaseHandler):
    def build_url(self):
        querys = set()

        return exampleUrl + '?' + '&'.join([ k + '=' + str(v) for k, v in querys ])

    def parse_response(self, response):
        j = json.load(response['body'])

        # return dictionary
        return parsed_context

    def build_page(self):
        # self.context .. parsed_context

        return response_page

動かないけどww ソース置いておきます。何かの参考になれば。。。
git: https://github.com/iwai/tornado_multiple_request/blob/master/web.py

かなり適当に置いたので、後で、少し整理します&このブログも、もっと、ちゃんと書き直しますwww

2010年2月5日

.emacs.el を一部サラスてみる

ずいぶん前にさらすのが流行ってたけど、いまさら、さらすwww
SnowLeopard なんだが、未だにCabonEmacs。CocoaEmacsにいずれ移る予定だけど、Caobonもまだ更新されている事です。

ただ、最近、困る事が1点ある。入力ソースの切り替えする時に、稀にEmacsがフリーズする事....。

やっぱり、Cabonだからなのか?それとも、前に入れたGoogle日本語入力のせいなのか、、、。ことえりに戻したんだけどね。。
Cabonだとインライン入力というか補完候補が、プルダウンで出なかったから。。

あまり時間も無いし頻発するわけでは無いので、、未だ放置。。。。
(add-to-list 'load-path "~/.emacs.d/elisp")

; バーは隠す
(menu-bar-mode -1)
(tool-bar-mode -1)

; モードライン
(column-number-mode t)
(line-number-mode t)

; recentf-mode
(recentf-mode t)

; 色
(global-font-lock-mode t)
(setq-default transient-mark-mode t)
(require 'font-lock)
;(set-face-foreground 'font-lock-comment-face "red")
(if window-system (progn
  ;; 文字の色を設定します。
  (add-to-list 'default-frame-alist '(foreground-color . "snow"))
  ;; 背景色を設定します。
  (add-to-list 'default-frame-alist '(background-color . "black"))
  ;; カーソルの色を設定します。
  (add-to-list 'default-frame-alist '(cursor-color . "yellow"))
  ;; モードラインの文字の色を設定します。
  (set-face-foreground 'modeline "black")
  ;; モードラインの背景色を設定します。
  (set-face-background 'modeline "yellow")

  (set-frame-parameter nil 'fullscreen 'fullboth)
))

; utf-8! utf-8!
(prefer-coding-system 'utf-8)

; dabbrev
(setq dabbrev-case-fold-search nil)

; kill tab
(setq-default indent-level 4)
(setq-default tab-width 4)
(setq-default indent-tabs-mode t)

; no backup!
(setq make-backup-files nil)

; 一行ずつスクロール
(setq scroll-step 1)

; 対応括弧ハイライト
(show-paren-mode t)

; iswitchb & uniquify
(iswitchb-mode 1)
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)

; 日本語の特殊記号の幅がおかしいのをなおすtweak
; http://www.pqrs.org/~tekezo/emacs/doc/wide-character/index.html
(utf-translate-cjk-set-unicode-range
 '((#x00a2 . #x00a3)
   (#x00a7 . #x00a8)
   (#x00ac . #x00ac)
   (#x00b0 . #x00b1)
   (#x00b4 . #x00b4)
   (#x00b6 . #x00b6)
   (#x00d7 . #x00d7)
   (#X00f7 . #x00f7)
   (#x0370 . #x03ff)
   (#x0400 . #x04FF)
   (#x2000 . #x206F)
   (#x2100 . #x214F)
   (#x2190 . #x21FF)
   (#x2200 . #x22FF)
   (#x2300 . #x23FF)
   (#x2500 . #x257F)
   (#x25A0 . #x25FF)
   (#x2600 . #x26FF)
   (#x2e80 . #xd7a3) (#xff00 . #xffef)))

;; *scratch* バッファのモード指定
(setq initial-major-mode 'text-mode)
そのうち、.emacs系のファイルは、gitHUBあたりにでも移そう。。。

2009年6月18日

EC-CUBEでPHPとSmartyと戯れた

EC-CUBEな案件で拡張的な話しがあったので、初めてPHPを触る事に。

1日2日触っていると、だいぶ要領が分かって来たのか、自分でクラスを作成できるようになった。

でも、ライブラリ関連の挙動が怪しく、、思うように動いてくれない....

EC-CUBEのソースは微妙だと思う....どうやら、PHP界隈では、CakePHPが良さそう、、、。
PerlではCatalyst, RubyではRails, PHPならCakePHPといった感じなのだろうか。

今度、少しCakePHPについて学習してみようかな

そうそう、PHPで驚いたのが、error_log って関数があって、そいつに文字列渡すと、ApacheとかのWebサーバのエラーログに出力される。

これって、言語レベルで実装されている事に驚く....。

2009年5月14日

Out Of Memory Killerと戦う

某クライアントさんからメモリ不足時のプログラムの挙動についてテストしろって内容があって、どのようにしてメモリ不足を起こすかと思って、以下のようにしてメモリを大量消費してみた。
perl -e 'my @Array; $#Array = 1000000000; sleep;'
しばらくすると、"Terminated!!" とか出て突然、落ちたから何事かと思って、隣の人に聞いたら、OOM Killerなる奴がいるらしく、そいつの仕業って事を知った。

ってか、Linuxにこんな機能があったなんて初めて知った。

なんどもやってたら、memcachedとかMySQLとか容赦なく殺されて逝ったwww
なぜか、apacheは死ななかったけど、、、たまたまかな??

MySQLが、必至に restart している挙動に、健気だなぁとか思った。

あと、top で、perlのプロセス見てたら、メモリ消費が "1.0g" とか出てて、ちゃんと1ギガ消費してたら、その通りに出るんだなぁとか、、、。。ってか、1.0gとかって初めて見たwww

OOM Killer:ITpro

2009年4月3日

ハッシュの値へのリファレンスを取得しました

my $hash_ref = { hogehoge => 1 };
my $scalar_ref = ¥($hash_ref->{hogehoge});
$hash_ref->{hogehoge} = 2;
print $$scalar_ref, "¥n";
初めは取れるのか?と思ってたのだが、意外とあっさり。

本当は、、
my $object = Class->new;
my $scalar_ref = ¥($object->hogehoge);
$object->hogehoge(2);
print $$scalar_ref, "¥n";
みたいに、アクセサーから取得したかったのだけど、どうやら、returnの時に値のコピーが発生しているようで、取得できなかった。。。

まぁ、なんで、こんな事がやりたかったかと言うと、DB上にファイルを保存する事になって、そのファイルの内容を取り出す関係で、極力、変数のコピーは避けたかったので、、、という説明じゃわからないね。まぁ、そんな感じの時に必要だったのよ。

簡単に説明すれば、DBIx::Class::InflateColumn::Fileしたかったの。

IO::Fileに、変数の参照渡して、スカラー変数をファイルみたいに、open したかった。