サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
hylom.net
‐ programming, open source, os, and a handful of tips 仕事でWebブラウザのHistory APIに関する質問を受けたのですが、意外と分かりにくいのでここでまとめておきます。 なお、History APIに関する大体のことはMDNのHistory API を取り扱うというドキュメントにまとめられていますので、こちらも参照しましょう。 履歴とは Webブラウザ上では、閲覧履歴はスタック(本記事では「履歴スタック」と呼ぶ)として管理されます。履歴スタックはWebブラウザのウィンドウやタブごとに用意されています。ページの進む/戻る操作ではこの履歴スタック自体は変更されず、履歴スタック上の現在位置のみが変更されます。 Aタグなどであるページから別のページに遷移した場合、履歴スタック上の現在位置よりも先にある履歴項目が削除され、続いて履歴スタック
‐ programming, open source, os, and a handful of tips Emacs for Mac OS Xで配布されているEmacsのMac OS X向けビルドでは、Emacs 24.4移行は標準でインラインでの日本語変換が可能になっている。これはEmacs 25.1でも同じだが、日本語入力時にカーソルがちらつく(1文字入力したり、変換するたびにカーソルが変換位置の先頭に一瞬移動してその後変換位置の最後に移動する)という現象が発生する。この問題はEmacs 24.5では発生していなかったので、24.5から25.1の間のどこかで混入したと思われる。そこで、EmacsのGitリポジトリをたどってこの問題がどこで発生するようになったのかを検証してみた。 結論から言うと、9e77c1b7bcfd0807be7fe67daf73c2320e864309のコミット
‐ programming, open source, os, and a handful of tips CentOS 7のfirewalldで特定のネットワークインターフェイスを特定のゾーンに関連付けるには、「firewall-cmd –zone=<ゾーン> –change-interface=<インターフェイス>」コマンドを使えとmanページに書いてある。このコマンド自体は正常に働くのだが、設定を永続的に保存するための「–permanent」オプションがうまく動かない。具体的には、firewalldを再起動すると設定が消えてしまう。 実は、CentOSの元になっているRed Hatの「Bug Fix Advisory firewalld bug fix and enhancement update(2015年3月5日付け)を見ると、「The “–permanent –add-inte
先日、新しいiMacが発売されましたがそこからさかのぼること約2週間前、実は自分はiMacを購入していたのでした。新iMacはフルモデルチェンジに近いアップデートだったのでそこそこ残念な気分ではあったんだけど、実は整備済み製品を購入したためにかなりお得だったので、そこまでのショックはなかったり。 整備済み製品というのはオンラインのApple Storeで販売されているもので、初期不良などで返品されてきたMacやiPodをAppleが修理・点検、「新品水準並の品質」を確認したうえで販売するというもの。パッケージが開封済みだったり、品質には問題ないレベルの傷があったりする場合があるんだけど、基本的には新品同様の品。ただ、完全な新品ではないのでその分定価より1〜2万円程度安いのが特徴です。さらに、BTOでカスタマイズされていたものも混ざっている(しかも価格はそのまま)ので、運が良ければ通常よりも
‐ programming, open source, os, and a handful of tips 昨年、『米Red Hat、RHELの開発環境をアップデートする「Developer Toolset 2.0」および「Software Collections 1.0」をリリース』という話題がありました。 Red Hat Enterprise Linux(RHEL)は安定性を重視し、かつ長期にわたって利用されることを想定しているため、ディストリビューションに含まれているソフトウェアは比較的古めのものになっています。そのため、RHELに標準で含まれていない最新のソフトウェアを利用したい場合、自分でソースコードからビルドするか、サードパーティのリポジトリを利用する必要がありました。 この「Software Collections」(以下SCL)は、そういった背景の下、RHELに含まれていな
‐ programming, open source, os, and a handful of tips hylom.netではNode.jsベースのCMS(nodeweblog)で運用されているが、以前はWordPressを使用して運用していた。このようなCMSの切り替えの際、過去コンテンツへのアクセスをどう処理するか、ということを考えなければならない。本来ならば旧システムでデータをエクスポートした上で適切に新システムにインポートするべきだが、今回はテスト的な運用と言うことで、別ポートでApache+WordPressを起動し、nodeweblog内に存在しないURLに対するリクエストはリバースプロクシを使ってWordPressに転送するという方法で旧コンテンツへのアクセスを可能にしている。 Node.jsを使ってリバースプロクシを構築する場合、node-http-proxyといったモ
‐ programming, open source, os, and a handful of tips ※元ネタは「PerlでWebAppの開発に必要なN個のこと」 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずNode.jsについて知っていることを書いた。 パッケージマネージャ ライブラリの管理には、Node.jsに同梱されているnpmを利用する。Node.js向けに公開されているパッケージのほぼすべてはnpm経由で入手が可能だ。 npmでは通常アプリケーション個別のディレクトリにパッケージがインストールされ、システム全体でのパッケージの共有は行わないため、バージョン管理は容易である(オプションでシステム全体で共有するようにパッケージをインストー
‐ programming, open source, os, and a handful of tips Expressでは、Connectミドルウェア「logger」を使うことで詳細なアクセスログやエラーログを記録することができる。Expressコマンドで生成したスケルトンコードでは、以下のようにloggerミドルウェアを利用するように設定されている。 app.configure(function(){ : : app.use(express.logger('dev')); : : } このように第一引数に'dev'引数を与えて生成されたloggerミドルウェアを使用すると、標準出力にカラー付きでアクセスログが出力される。これは開発用という目的なので、実サービスの運用には適していない。そこで、Apacheのデフォルト設定で使われる形式のアクセスログおよびエラーログをファイルに出力するよ
‐ programming, open source, os, and a handful of tips MongoDBにデータを格納する場合、格納するデータをプロパティとして持つオブジェクトを引数にコレクションのinsertメソッドを実行する。もしバイナリデータをデータベースに格納したい場合、バイナリデータをBuffer型のオブジェクトとして与えればよい。ただし、MongoDBに格納するドキュメント(データを格納する単位。SQLデータベースの1行に相当する)には最大4MBというサイズ制限がある。そのため、格納できるバイナリデータの上限は4MBだ。 次のサンプルコードは、引数で指定したファイルを読み込んでデータベースに格納するものだ。 データベースに格納するオブジェクトを用意しているのが42行〜45行の部分だ。ここでdataオブジェクトは読み出したデータを格納しているBuffer型のオブ
Node.jsのhttpモジュールには、HTTPクライアント機能も実装されている。http.request関数およびhttp.get関数がそれだ。詳細はドキュメントを確認していただきたいが、http.requestは任意のリクエストメソッドを使ってリクエストを送信できるものだ。また、http.getはGETリクエストに限定されるものの、URLを与えるだけで簡単にリクエストを送信できる。 たとえば以下のコード(http-request.js)は、引数で指定したURLに対しGETリクエストを送信し、取得したコンテンツを表示するものだ。 http-request.js #!/usr/local/bin/node var http = require('http'); // check arguments if (process.argv.length < 3) { process.exit(-1
‐ programming, open source, os, and a handful of tips 時間ができたのでHandBrake 0.9.5の日本語化に着手しているのだが、うっかり0.9.4のブランチで作業してしまったあげく、SourceForge.JP上のリポジトリにpushしてしまい途方に暮れる。 まあこういうミスをやる人は少ないだろうが、何かのヒントになるかもしれないので対処法をメモしておく。まず、「git log」コマンドで巻き戻したいcommitのハッシュを調べる。 $ git log : : commit 1485a5a2bbbb43eedbe131c919b7d604bcbd506d Author: unknown <hirom@.(none)> Date: Tue Jan 5 19:19:44 2010 +0900 update Installer, chan
‐ programming, open source, os, and a handful of tips ネットワークのスループットを測るツールには色々ある。SourceForge.JP Magazineの翻訳記事(ネットワークのベンチマーク・ツールを試す – nepim、LMbench、nuttcp)でいくつか紹介されているのだが、その中でも自分が比較的よく使っているのがnuttcpだ。ということで簡易的な使い方メモ。 インストール ソースコードからビルドしても良いが、nuttcpのダウンロードサイトにはRPMパッケージもあるので、こちらを利用するのが楽である。 ベンチマークの実行 nuttcpはクライアント/サーバー型のベンチマークツールである。つまり、帯域測定をしたいネットワークの片側でサーバーを動かし、もう片側でクライアントを実行してベンチマークを行う。 サーバー側では「-S」オ
‐ programming, open source, os, and a handful of tips 今までWindows環境での物書きにはNTEmacs JPプロジェクトがリリースしている<a href=https://sourceforge.jp/projects/ntemacsjp/releases/“>Emacs 22ベースのWindows向けバイナリを使っていたわけですが、最新安定版であるEmacs 23系ではマルチバイト文字の扱いを含めた色々な改善が加わっているとのことで、移行してみることに。 NTEmacs JPプロジェクトではEmacs 23ベースのWindows向けバイナリをリリースしていないのですが、Gnupackというプロジェクトで日本語関連(というかIME)のパッチが適用されたEmacs 23.2のバイナリが公開されているので、そちらを利用。プロジェクトページ
‐ programming, open source, os, and a handful of tips Pythonのwith構文がいまいち掴めなかったので、ざっとまとめてみた(いまさらながら)。ドキュメントはPython リファレンスマニュアルの7.5 with 文にある。 withを使ったコード例は、下記のような感じ。 c = ClassHogeHoge() with c: c.foobar() 上記のコードは、下記と等価となる。 c = ClassHogeHoge() c.__enter__() c.foobar() c.__exit__() つまり、withに続くインデントブロックを実行する前に指定したオブジェクトの「__enter__()」メソッドを呼び出し、実行後に「__exit__()」メソッドが暗に呼び出される、という仕組み。 __enter__()と__exit__(
‐ programming, open source, os, and a handful of tips x86_64版CentOS 5.5のFirefoxでのJavaプラグイン導入に軽くハマったのでメモ。 x86_64版のCentOS 5でFirefoxにJavaプラグインを導入したい場合、ググると「32ビット版Firefox+32ビット版Javaランタイムを使え」という話がぼちぼちとヒットするわけですが、とりあえずJavaプラグインだけを使いたい場合は64ビット版でも可能なようです。ていうか自分の場合、32ビット版を導入しようとしたらうまくいきませんでした……。 ということで、手順。まず64ビット版Firefoxをインストール。 $ sudo yum install firefox # 64ビット版Firefoxをインストール 続いてjava.comのダウンロードページから「Linu
‐ programming, open source, os, and a handful of tips ログインが必要なWebサイトに対してスクリプトでページを取得/送信したい場合、まずログイン用のURLに対しログイン情報をPOSTしてCookieを取得する、という作業を行うのが一般的だ。しかし、Pythonのurllib2を利用すると簡単にPOSTは行えるのだが、なぜかCookieを取得できない、という問題が発生することがある。 これはurllib2のurlopen()でURLを開き、帰ってきたオブジェクトのinfo()メソッド経由でSet-Cookieヘッダを取得しようとする場合に発生する。たとえばCMSを使用しているWebサイトで、管理用ページ以外に(正当な)Cookieを持たずにアクセスするとCookieなしでアクセスできるトップページ等にリダイレクトされる、というケース。多く
‐ programming, open source, os, and a handful of tips OpenSSH 5.6/5.6p1リリースの記事をチェックしているとき、リリースノートの「多重(multiplex)接続」ってなんじゃこれ、と思い調べてみたんですが、なかなかに有用なのでちょいとまとめてみました。というか、元ネタはこちらのSSH: Tips And Tricks You Needという記事です。 多重接続というのは、1本のSSHコネクションで複数のセッションを同時に張るという感じのもの。たとえば、OS Xでターミナルを複数開き、それぞれのターミナルウィンドウで1つのサーバーに対しsshコマンドで接続を行った場合、通常はサーバー側では複数のsshdが起動し、それぞれのsshクライアントと通信を行います。いっぽう、多重接続を利用すると1つのsshdが複数のsshと通信する
gitを使ってコードの管理をしている場合において、実験的なコードを書く場合はソースコードを編集する前にブランチを作成しておくのが基本だ。しかし、ついブランチを作成し忘れたままでコードを変更してしまった、というパターンがある。 この場合、下記のようにgit stashでいったん変更点を保存した上で直前のcommitに戻し、新たなブランチを作成してそこでgit stash applyを行えばよい。 $ git stash $ git checkout hogehoge -b $ git stash apply $ git add hogehoge foobar $ git commit git stash、便利だ。
‐ programming, open source, os, and a handful of tips やや旧聞となるが、PhoronixがLinuxとFreeBSDのベンチマーク比較を行っている(Debian Linux Benchmarked Against Debian GNU/kFreeBSD � FreeBSD)。比較対象はDebian kFreeBSD 7.3、Debian kFreeBSD 8.0、Debian GNU/Linux(カーネル2.6.32)、FreeBSD 7.3、FreeBSD 8.0。 「Debian kFreeBSD」はカーネルとしてFreeBSD、ユーザーランドとしてDebianを採用したものだ。Debian GNU/LinuxとDebian kFreeBSDはカーネルだけが異なり、またDebian kFreeBSDとFreeBSDはユーザーランドだ
‐ programming, open source, os, and a handful of tips 先日、私の手元にもiPhone 4が到着。ということで、一部から要望を受けていたHandBrakeのiPhone 4用プロファイルをちょっと調査・研究してみた。 iPhone 4の動画再生機能については、Webサイトにその仕様が掲載されている(日本語のiPhoneページ)。ただし、日本語ページには一部誤訳というか不明瞭な表記があるたので、英語版iPhoneページを確認するほうが確実。これによると、iPhone 4の動画再生仕様は下記の通り。 H.264:最大720p、30fps。Main Profile(レベル3.1まで、音声はAAC-LCで最大160kbs、48kHz、ステレオ)対応。ファイルフォーマットは.m4v、.mp4、.mov MPEG-4:最大2.5Mbps、640×48
‐ programming, open source, os, and a handful of tips keyboardyによると、HTML5にはlink prefetching機能があり、指定したコンテンツをあらかじめfetchしておく機能があるそうだ。 fetchするコンテンツはLINKタグで指定する。たとえば、次のようなLINK要素をHTML内に記述しておくと、ロード時に「page2.html」がfetchされる。 <link rel="next" href="page2.html"> また、次のように明示的にprefetchを指定することもできる。 <link rel="prefetch" href="/img/img.jpg"> この機能はすでにFirefoxでは実装済みで、OperaやChrome、Safariでもすぐにサポートされるのでは、とのこと。Internet Ex
最近、Visual C++をいじっているのでメモ。昔はVisual StudioでGUIでビルド設定してましたが、最近はもうmakeを使う方になれちゃったんだよね……。 <th> 意味 </th> </tr> <tr> <th colspan="2"> 最適化 </th> </tr> <tr> <td> /O1 </td> <td> コードを最小化 </td> </tr> <tr> <td> /O2 </td> <td> コードを最速化 </td> </tr> <tr> <td> /Ob{0|1|2} </td> <td> インライン展開方法を指定 </td> </tr> <tr> <td> /Od </td> <td> 最適化を禁止 </td> </tr> <tr> <td> /Oi </td> <td> 組み込み関数を使用 </td> </tr> <tr> <td> /Ox </td>
‐ programming, open source, os, and a handful of tips Python標準のユニットテスト機能、「unittest」の使い方メモ。 目的 unittestはPythonで作成したクラスの特定の関数や、機能の動作確認に利用できる機能だ。詳しくは ドキュメントを読めばすぐに分かる が、unittestクラスの派生クラスを作り、そのクラスの関数としてテストコードを記述してやると、簡単にユニットテストができる、というもの。 メインの実装コードにprint文などを挿入したり、テストコードを挿入しても良いのだが、それだとテストコードの再利用が難しかったり、いったんバグ修正を行ってテストコードを削除した後に再度バグが発生したりした場合に二度手間になったりする。そのため、テストコードはなるべくunittestにまとめて記述しておくとデバッグや実装、テストが
‐ programming, open source, os, and a handful of tips Pythonでは、HTTPやFTPなどでファイルの送受信をするモジュールとして「urllib」と「urllib2」が用意されている。使い方も似ていて、どちらも引数としてURLを与えてurlopen()関数を呼び出すと自動的に対応したプロトコルでURLにアクセスしてデータを読み出せる、というものである。しかし、似たような名前で似たような機能を持つこの2つ、何が違うのかが明確にはドキュメントに記述されていない。そのためどちらを使うべきか迷って、そのたびにGoogleのお世話になるという状況だったのでざっとまとめてみよう。 外から見える違いとしては、urlopen()の引数としてurllibはURL文字列のみを受け付けるのに対し、urllib2ではurllib2.Requestクラスを受け
‐ programming, open source, os, and a handful of tips Microsoftが、Windows 7の90日期間限定評価版がインストールされた仮想ハードディスクイメージ(Windows 7 90-Day Eval VHD)を無償公開している。窓の杜の記事などでも紹介されているが、これは同じくMicrosoftがWindows環境向けに無償提供しているVirtual PC上で利用できるもので、(期間限定、評価目的限定ではあるものの)ライセンスの問題なしにWindowsの仮想環境を構築できる。多くのソフトウェアのインストール/アンインストールを繰り返すライターや、クリーンな環境で動作確認を行いたいようなソフト開発者にとって非常に便利なソリューションだ。 ただし、注意しなければ行けないのが、現状公開されているのは英語版のEnterprise Edi
‐ programming, open source, os, and a handful of tips Launchpadがオープンソース化されたそうでちょっと調べたところ、個人用のリポジトリが利用できるらしいと知ったので使ってみるテスト。ちなみに「 OSSホスティングサービスの比較 」によるとLaunchpadはCVS/Subversionに対応となっているが、これはLaunchpadが採用しているバージョン管理システム「Bazaar」がCVSやSubversionと互換性があるという話のようなので、まずはBazaarを使ってLaunchpadを使ってみる。 Bazaarについては Bazaarのチュートリアル も参照。 必要なものは下記のとおり。 Bazaar アクセスに使用するSSH公開鍵 メールアドレス バージョン管理システムで管理したいファイル一式 Bazaar のインストー
このページを最初にブックマークしてみませんか?
『hylom's - programming, open source, os, and a handful of tips』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く