2011/12/28

OpenOfficeに見るオープンソースソフトの実態と課題

OpenOfficeに見るオープンソースソフトの実態と課題

プロプタイエタリに誘導してる感はありますが、だいたいの主張は感覚的にあいます。Linuxの開発にアクティブに関わっているのがたったの160人っていう数字には驚きましたが。

総務省の見解が良いですね。「オープンな標準は、国際規格 (ISO) や日本工業規格 (JIS) だけではなく、その他の公的規格や業界団体による規格も含まれる概念であるため、国際規格 (ISO) や日本工業規格 (JIS) に該当していない製品等がただちに排除されるという理解は誤りである」

2011/11/01

Draw Top

Draw Top

きちんと保護シートを貼る人には向かない話ですが、案外楽しい利用方法な気がします。

2011/09/15

ミクさんが立体っぽくなって踊ってくれました。

愛の力でしょうか....。

2011/07/24

Flash11をDebian Lenny上のchromeで利用する

Debianの中でも既に時代遅れなので、情報がねーw
つーことで簡単だけどメモ。
ここから自分の環境にあった(32bit/64bit)tar.gzを拾ってきて解凍します。解凍されたlibflashplayer.soを/usr/lib/mozilla/pluginsにコピーするだけで、chrome君は盗み読みして動いてくれます。インストールされたか確認したい場合は、ロケーションバーにabout:pluginsと入力しましょう。

今使ってますが、64bit版凄く安定した気がします。

2011/07/16

ostreamの無効化

cppllを眺めていると、デバッグ出力用のコードを無効化にする話が議論されていました。[cppll:13624]
コード自体はいろいろあったのですが、その中の一つが次のコード。

#ifdef DEBUG
#define DOUT std::cout
#else
#define DOUT 0 && std::cout
#endif

DOUT <<  "debug"  << std::endl;
このコードのうまいところは、0 &&の残りが評価されないところらしい[cppll:13648]。dead-code eliminationというらしい。

何が凄いって、次のコードがgcc 4.4.5で-pedantic-errors -O0オプション付きでコンパイルできた。

bool f(); // 宣言だけ

int main() {
  if (false && f()) {
  } else {
    std::cout << "きえたよ" << std::endl;
  }
}
皆いろんなノウハウ持ってるなぁ...。

2011/07/13

1つのGmailアカウントでたくさんのメールアドレスを作る方法

1つのGmailアカウントでたくさんのメールアドレスを作る方法

2011/07/04

YouTubeの歴史

YouTubeの歴史
最初の2年の急成長が凄かったということでしょうか。よくインフラ構築追いついたなぁ…。

2011/06/20

【ニコニコ動画】iPhoneゲームを20分間で作る【メダルプッシャー編】


よく見るブログの人がひたすらUnityを褒めているので気になってはいたんですが、凄いなぁ…。

2011/06/16

【ニコニコ動画】ドリームキャストにCore2Quad 2.8Ghz・フルセグ・Windows7を搭載してみた-前編


バカがいる(褒め言葉)

2011/06/10

Excel 2010でグラフの描画が遅くなる問題について

Excel 2010の描画や再計算の動作が重いというのはよく言われる話のようですが、
特定のケースで非常に描画が重くなることがあるようです。

●グラフ中での破線の使用に注意
例えば散布図で破線のグラフを書いた際に、
グラフ外にはみ出た部分までどうも破線の描画処理をやっているようで、

1) 破線のグラフを書く
2) 軸の範囲をその一部の狭い領域だけにする

と、描画処理を行う線分の数が激増するため、描画処理が滅茶苦茶重くなって
PCがフリーズしたように感じられるケースがあります。

なかなか原因に気づきづらいので破線の使用は要注意です。

2011/06/09

GPL、シェア減少の傾向

GPL、シェア減少の傾向
ソフトウェア開発を仕事にしてると、GPLが時に神に見えたり、悪魔に見えたりしますよね。

2011/06/14 追記
知り合いをミスリーディングしてしまったので補足。
オープンソースの中で、GPLという公開を義務付けるライセンスが減っているという話です。オープンソースの減少に直結しません。

2011/06/05

Rubyカテゴリを分離

最近プライベートではRubyばかりいじってるので、別ページにしました。新しいソフトウェアとかも試さにゃなぁ…。

2011/05/20

Net Tab Redirect

chromeで新規tabを開いたとき、「よくアクセスするページ」を表示するのではなく、好きなページを開いてくれます。満足満足。

2011/05/19

Cinder

Cinder
Cinder is a community-developed, free and open source library for professional-quality creative coding in C++.

2011/05/15

肉体言語Tython

肉体言語Tython
Hello World!で吹いたw プログラマーと言えば貧弱だったりデブだったりするイメージが強いですが、これで変わります!

2011/04/28

Rubyでダブルディスパッチ的eql?の再定義

ダブルディスパッチについて調べていて、rubyの例にヒット。うならされたのでリンク。
eql?の再定義に関する質問に対してのまつもとゆきひろさんの実装が秀逸。すばらしかー。

2011/03/29

KDW

追記 KDWのサポートが終わったようです。拡張カーネルや拡張コアを使いましょう。
https://www7.atwiki.jp/win2000/pages/16.html

>KDWのWindows 2000 API サポートは 2012年12月までの予定です。
>それ以降は fcwinのみのサポートになります。
>Windows 2000ユーザーには、より互換性が高い、拡張カーネル や ドライバの互換性向上に特化した、拡張コアの利用をお勧めします。




以下は備忘録です。
 --------------

Windows2000でXPをエミュしてるバカ,もとい天才がいると聞いて

http://slashdot.jp/~BlackWingCat/journal/444434



Wikiを読んでいたのが 中身がおかしい。

http://www7.atwiki.jp/win2000/pages/16.html


昔フックを掛けるとかラッパ-通すとかあったなぁみたいなデジャブにかられたのだが

ブログをみつけた。

http://blog.livedoor.jp/blackwingcat/



いや マジおかしくない?この人(ホメ言葉

2011/03/25

Make Link

知人とはIRCや各種メッセンジャーソフトでウェブページに関する情報交換をよくしています。そのときURLを貼るのですが、URLだけだと既知のものであったり、見直したときにわけがわからないんですよね。そこでFireFoxアドオンのMake Linkを導入。下の画像のようなインタフェースで、クリップボードにリンク文字列とURLを放り込んでくれます。

2011/03/17

[24時間365日] サーバ/インフラを支える技術 スケーラビリティ、ハイパフォーマンス、省力運用

[24時間365日] サーバ/インフラを支える技術 ‾スケーラビリティ、ハイパフォーマンス、省力運用 (WEB+DB PRESS plusシリーズ)

hatenaの中の人が執筆した本。具体的アプリケーション名をあげながら、止めることができないサーバまわりをどう構築するか書いている。ネットワークやサーバの教科書的な用語や概念は知っていないと、理解するのは少し難しいかもしれない。改訂されない限り、時間がたつと内容が一部古くなってしまうことが予想される。早めに読んだほうがいい(もっと早く読めば良かった…)。

個人的に面白かったなぁと思う点は2点。1. linux系OSでの負荷の調べ方(なんとなくしか理解できていなかった)。2. サーバ機を汎用的に運用する方法(サーバ機をネットワークブートにして、アプリケーションサーバ、リバースプロキシー、ロードバランサーなどに起動時に自由に変更できるようにする。また、そういう運用が可能なネットワークを組む。そうすることによって、それぞれの用途毎に予備機を用意する必要がない)。

貴重な運用ノウハウがこの値段で提供されているのは素晴らしい。全然触れたことがない世界なので、刺激的だった。いいなぁ、こういう仕事してみたい。

2011/02/24

Rubyの面白いところ Part 12 「標準ライブラリにバックトレース機能がある」

LLな言語を使う開発者は、どうにもIDEを使わないイメージがあるのですが、標準ライブラリにトレースバック機能 があるんですねぇ…。

#!/usr/bin/ruby

def foo
  p caller(0) # ["caller.rb:4:in `foo'", "caller.rb:11:in `bar'", "caller.rb:14"]
  p caller(1) # ["caller.rb:11:in `bar'", "caller.rb:14"]
  p caller(2) # ["caller.rb:14"]
  p caller(3) # []
end

def bar
  foo
end

bar
ファイル名、行番号、メソッド名を出力しています(参考)。

2011/02/17

Rubyの面白いところ Part 11 「caseとbreakは他言語と動作が異なる」

breakはもっとも内側のループを脱出します。ループとは

  • while
  • until
  • for
  • イテレータ
のいずれかを指します。 C言語とは異なり、breakはループを脱出する作用だけを持ち、caseを抜ける作用は持ちません。(参考)

ほっほー。試しに下記を実行するとfirstが出力された。つまり、2つ目からのwhenはifではなくelse ifなんですね。

a = 1
case a
when 1
  p "first"
when 1
  p "second" # never come here
else
  p "else" # never come here
end

2011/05/11 追記:
動物本を見るとelse ifという表現はあまりよろしくない気がしました。

プログラミング言語 Rubyより

他の言語のswitch文は、単純に適切なcaseラベルの先頭に制御を移すだけである。そこから制御は継続され、他のcaseラベルに「落下」することもある。この落下の動作により、複数のcase節が同じコードブロックを参照できるのである。Rubyでは、個々のwhen節にカンマ区切りの複数の指揮を並べられるようにして、同じ目的を達している。Rubyのcase文は落下しない。

プログラミング言語 Ruby 第2版 131ページ caseとswitch
def hasValue?(x)      # hasValue?という名前のメソッドを定義する
  case x              # xの値に基づく多方向条件分岐
  when nil, [], "", 0 # nil===x || []===x || ""===x || 0===xなら
    false             # メソッドの戻り値はfalse
  else                # そうでなければ
    true              # メソッドの戻り値はtrue
  end
end

2011/02/16

Rubyの面白いところ Part 10 「多重代入における*の取り扱い」

多重代入は複数の式または配列から同時に代入を行う。左辺の最後の式の直前に*がついていると、対応する左辺のない余った要素が配列として代入される。余った要素が無い時には空の配列が代入される。

foo, bar = [1, 2] # foo = 1; bar = 2
*foo = 1, 2, 3 # foo = [1, 2, 3]

ここまでは便利だなぁーと思うのですが、次の仕様がどう有効活用するのかよくわからない...

特に最後の単体の*はメソッド呼び出しにおいて引数を完全に無視したいときに使用できます。

def foo(*)
end
foo(1,2,3) # ok

def bar()
end
bar(1,2,3) # in `bar': wrong number of arguments (3 for 0) (ArgumentError)

何か有効活用する意味があると思うんですが、思いつきません...

参考: Rubyリファレンスマニュアル

2011/02/15

Rubyの面白いところ Part 9 「ローカル変数の宣言と寿命」

ローカル変数のスコープは、宣言した位置からその変数が宣言されたブロック、メソッド定義、またはクラス/モジュール定義の終りまでです(参考)。

2.times {
  p defined?(v) # 2回ともnilなことに注意
  v = 1
  p defined?(v) # "local-variable"
}

参考: Rubyの面白いところ Part 7 「NameErrorが起こらないとき」

2011/01/08

[小ネタ]特定の文字の文字数を数えるSQL

本年もよろしくお願いします。

DBのちょっとした小ネタ。

テーブルからある文字の文字数を数えるSQL。

例えば文字"a"をhogeテーブルのcolカラムに出現する回数を数えるとする。

select sum(length(col)-length(replace(col, 'a',''))) from hoge;


のようにかける。こうすればcolカラムに文字"a"が2つあった場合でも2とカウントされる。

あんまり用途はないだろうけど、たまたま上記のようなSQLを書くことがあったのでメモ。

2011/01/01

2010年 アクセス状況

2010/01/01〜2010/12/31までのアクセス状況を振り返ってみました。
総セッション数13,886でした。

2010年の人気のあるコンテンツは以下の順位でした。
1. C#のコードを高速化するための方法
2. EnterキーでTabキーのようにフォーカスを移動させるJavaScript(prototype.js使用)
3. Mabinogi on Wine
4. CentOS 4.7のネットワーク設定をDHCPクライアントにする方法
5. MRTGでYAMAHA RT57i/RT58iの転送量を監視
6. C#って遅いのか
7. Windowsタスクマネージャとパフォーマンスモニタの見方
8. VMWare guest OS(CentOS 5)の解像度変更
9. KAKASI - 漢字→かな(ローマ字)変換プログラム
10. 64bit対応Adobe Flash PlayerをIceweaselにインストール
オリジナリティがある程度あるトップ3がぶっちぎりで、そのうち2つが2009年のコンテンツでした。ロングテールと言えば響きはいいが、そういえば今年はあんまり家で生産的なことしてなかったなぁと反省です。来年はもう少し更新しようと思います。

Webページ右に用意しているラベルのクリック率を見ると、Windowsなどが全くクリックされないのに対して、ブラウザ(4.0%)、仮想化(2.2%)でした。旬が何かわかりやすいと共に、Windowsはもう浸透してしまって調べる対象じゃないんでしょうねぇ。

閲覧してくれた方のOSはまだまだぶっちぎりでWindowsが多いです。仕事でMacユーザをメインターゲットにしてる私としては少し複雑な気分です。iPodやスマートフォンも現れ始めました。

検索キーワードは下のようになり、ついに日めくり美人がトップの座を明け渡しました。そろそろ技術系ブログを名乗れそうですwクリックしてもらうとわかりますが、いろんなキーワードでグーグルの上位にサクッと表示されて結構びびります。
1. C# 高速化
2. centos dhcp
3. 日めくり美人
4. javascript enter フォーカス移動
5. vmware 時計が狂う
6. c# 遅い
7. ubuntu マビノギ
8. centos dhcp クライアント
9. c# 共有メモリ イベント
10. ruby nameerror

それでは今年もよろしくお願い致します。