ときどきの雑記帖 めぐりあい電脳空間編

最新ページへのリンク
目次ページへのリンク

一つ前へ 2010年5月(上旬)
一つ後へ 2010年5月(下旬)

ホームへ

2010年05月20日

■_

時間がないというか。

・「演算子」がわからない
C に代表されるような条件演算子 condition ? expr1 : expr2 のようなものとして、Python には condtional expression つーものがあるわけですが これって「演算子」ではないですよね? したがって、「Pythonには三項演算子は(少なくとも現時点においては)存在しない」 といえると思うんですが (9.9. operator — Standard operators as functions — Python v2.6.5 documentation)、 じゃあ「演算子」とそうでないものの分岐点というのはどこにあるんでしょうか? if とか else みたいに記号でないものを使っているから。 というのがあるのかもしれませんけど、Perl だとたとえば perlop に

 Terms and List Operators (Leftward)
   A TERM has the highest precedence in Perl. They include variables, quote
   and quote-like operators, any expression in parentheses, and any
   function whose arguments are parenthesized. Actually, there aren't
   really functions in this sense, just list operators and unary operators
   behaving as functions because you put parentheses around the arguments.
   These are all documented in perlfunc.

   If any list operator (print(), etc.) or any unary operator (chdir(),
   etc.) is followed by a left parenthesis as the next token, the operator
   and arguments within parentheses are taken to be of highest precedence,
   just like a normal function call.
  

とかいう記述があったりするんですよね。 ああ、そうだ。FORTRAN の .GE. やらを除いても、Pascal には div とかあるものなあ。 演算子。

What is operator? - A Word Definition From the Webopedia Computer Dictionary

operator

(1) A symbol that represents a specific action. For example, a plus sign (+) is an 
operator that represents addition. The basic mathematic operators are + addition, - 
subtraction,* multiplication,/ division.

In addition to these operators, many programs and programming languages recognize 
other operators that allow you to manipulate numbers and text in more sophisticated 
ways. For example, Boolean operators enable you to test the truth or falsity of 
conditions, and relational operators let you compare one value to another.

(2) A computer operator is an individual who is responsible for mounting tapes and 
disks, making backups, and generally ensuring that a computer runs properly. 

わけわからん(AA 略)

誰かこのもやもやをすっきり晴らしてください ○| ̄|_

■_ PowerShell

まだ入れてなかったり。 つか、いっぺん入れようとしたんだけどインストーラーがうまく動いてくれなかったんだよなあ。 なぜ!?

ファイル/レジストリの操作 - @IT
ファイルおよびフォルダの情報取得

 WSHではFileSystemObjectオブジェクトというCOMオブジェクトを使用し、そのメソッドを呼び
出すことでファイル操作を行っていたが、PowerShellでは多くの操作がPSドライブを扱うコマン
ドレットによって簡便に行える。

 フォルダ内のファイルやフォルダの一覧は、これまでにも示したようにGet-ChildItemコマン
ドレットで容易に取得できる。WSHではFileSystemObjectオブジェクトのGetFolderメソッドで
Folderオブジェクトを取得したうえで、そのFolderオブジェクトのFiles/SubFoldersプロパテ
ィを呼び出し、列挙する必要があった。
ファイル/レジストリの操作 - @IT
3.テキスト・ファイルの読み書き

 PowerShellではテキスト・ファイルの読み書きをPSドライブのコマンドレット(*-Content)
で簡便に行える。WSHではFileSystemObjectオブジェクトに含まれるTextStreamオブジェクトを
利用してテキスト・ファイルをストリームとして開く必要があった。

そうそう。wsh でごにょごにょしようとしたときに、 やたらとオブジェクトを作って、ってやらなければいけないのが面倒だった。 書式もアレだったのも大きかったような気もするけど(笑)

■_ 表紙が似ている


O'Reilly Japan - デコンパイリングJava
デコンパイリングJava――逆解析技術とコードの難読化

    * Godfrey Nolan 著、松田 晃一、小沼 千絵、湯浅 龍太 訳
    * 2010年06月02日 発売予定
    * 312ページ
    * 定価3,570円
    * ISBN978-4-87311-449-1
    * 原書: Decompiling Java

の表紙絵が Amazon.co.jp: リバースエンジニアリング ―Pythonによるバイナリ解析技法 と一瞬区別がつかなかった。 ってまあ別々に見たからなんだけど。 並べてみれば…

■_ 大型?


エキスパートPythonプログラミング
エキスパートPythonプログラミング 	
	Tarek Ziade 著、 稲田直哉、 渋川よしき、 清水川貴之、森本哲也 訳 	
	定価:3,780円 (本体3,600円) 	
	発売日:2010/05/31 	
	形態:B5変 (416ページ) 	
	ISBN:978-4-04-868629-7

これ、Amazonさんでは「大型本」になってるんだけど、 B5変形で「大型」ってどんな世界だよ ○| ̄|_

"大型化"が原因? | 株式会社きじねこ 少し前からアマゾンではなぜか"大型本"と記載されています。以前は"単行本(ソフトカバー)"だったのですが... と同じことなんでしょうか。

■_


Encodings, Unabridged « Katz Got Your Tongue?

Encodings, Unabridged

May 17th, 2010

I wrote somewhat extensively about the problem of encodings in Ruby 1.9 in general 
last week.

For those who didn't read that post, let me start with a quick refresher.

What's an Encoding?

An encoding specifies how to take a list of characters (such as “hello”) and persist 
them onto disk as a sequence of bytes. You're probably familiar with the ASCII 
encoding, which specifies how to store English characters in a single byte each 
(taking up the space in 0-127, leaving 128-255 empty).

(以下略)

訳すのはちとめんどいのー。

■_ 本日の巡回から

このへんサクサク読めるようになりたいなあ。 って闇雲に量をこなすだけじゃダメ(効率悪い)なんだろうなあ。

2010年05月19日

■_

http://www.aoky.net/articles/james_iry/brief-incomplete-and-mostly-wrong.htm このネタ、見覚えがあるなあと思いつつ、やっぱ日本語にしとかんとだめなんだろねなどど。

さて。

Amazon.co.jp: エキスパートPythonプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4048686291/
# 大型本: 416ページ
# 出版社: アスキー・メディアワークス (2010/5/28)
# 言語 日本語
# ISBN-10: 4048686291
# ISBN-13: 978-4048686297
# 発売日: 2010/5/28"
価格: 	¥ 3,780

んー「大型本」かあ。ページ数も結構あるし ちょっと様子見かな。 大型本はキューからなにか追い出してから買わないと最早以下略

Amazon.co.jp: リバースエンジニアリング ―Pythonによるバイナリ解析技法
http://www.amazon.co.jp/exec/obidos/ASIN/4873114489/
# 単行本(ソフトカバー): 272ページ
# 出版社: オライリージャパン (2010/5/22)
# 言語 日本語
# ISBN-10: 4873114489
# ISBN-13: 978-4873114484
# 発売日: 2010/5/22
価格: 	¥ 3,360

こっちもどうしようか。 イベントの出張販売狙いでいいかなあ。 ノベルティ目当て(笑)

ノベルティといえば、新宿の紀伊国屋書店にいってガチャガチャをやらねば。

ほかにも5月下旬から6月にかけていろいろ予定があったような気がするけど、 タイトルが思い出せない。

■_ parrot

月例リリースは淡々と進むのね。

Parrot 2.4.0 "Sulfur Crest" - nntp.perl.org

Parrot 2.4.0 "Sulfur Crest"

(略)


Parrot 2.4.0 News:
- Core
 + Various long-standing bugs in IMCC were fixed
 + STRINGs are now immutable.
 + use STRINGNULL instead of NULL when working with strings
 + Fixed storage of methods in the NameSpace PMC
 + Added :nsentry flag to force method to be stored in the NameSpace
 + Added StringBuilder and PackfileDebug PMCs
 + Added experimental opcodes find_codepoint and unroll
- Compilers
 + Fixed reporting of line numbers in IMCC
 + Removed deprecated NQP compiler, replaced with new NQP-RX
 + Removed NCIGen compiler
- Deprecations
 + Tools to distribute on CPAN were removed
 + Deprecated dynpmcs have been removed to external repositories
 + Removed RetContinuation PMC
 + Removed CGoto, CGP, and Switch runcores
- Tests
 + Many tests for the extend/embed interface were added
 + done_testing() is now implemented in Test::More
- Tools
 + The fakexecutable tapir is renamed parrot-prove
 + Performance fixes to the pbc_to_exe tool
 + Fix data_json to work outside of trunk
 + The dynpmc GzipHandle (zlib wrapper) was added
 + The library Archive/Tar.pir was added.
 + The library Archive/Zip.pir was added.
 + The libraries LWP.pir, HTTP/Message.pir & URI.pir were added.
- Miscellaneous
 + Six Parrot-related projects accepted to GSoC
 + Improve use of const and other compiler hints

STRINGs are now immutable. 今までそうでなかったってことなんでしょか。 ミーティングの内容もぜんぜん覚えてない(苦笑)

■_ Perl 5.12.1

こっちも定期リリース。だっけ。

use Perl | Perl 5.12.1 now available

(略)

It gives me great pleasure to announce Perl 5.12.1, the second stable release of Perl 
5.12.

You can download Perl 5.12.1 from your favorite CPAN mirror or from: 
http://search.cpan.org/~jesse/perl-5.12.1/

SHA1 digests for this release are:
75a8a17cec15d68c6bb959b0aa9879d2ded6f90d perl-5.12.1.tar.bz2
83b99f08379782dc06594a85eeb279edc5b0ca44 perl-5.12.1.tar.gz

This release contains minor bug fixes and updates of several core modules, as well as 
minor documentation updates. It should be fully backward compatible with Perl 5.12.0.

Perl 5.12.1 is a recommended upgrade for all users of Perl 5.12.

You can find a full list of changes in the file "perl5121delta.pod" located 
in the "pod" directory inside the release and on the web at: 
http://search.cpan.org/~jesse/perl-5.12.1/pod/perl5121delta.pod

Perl 5.12.1 represents approximately four weeks of development since Perl 5.12.0 and 
contains approximately 4,000 lines of changes across 142 files from 28 authors.

Perl continues to flourish into its third decade thanks to a vibrant community of 
users and developers. The following people are known to have contributed the 
improvements that became Perl 5.12.1:

Ævar Arnfjörð Bjarmason, Chris Williams, chromatic, Craig A. Berry, David Golden, 
Father Chrysostomos, Florian Ragwitz, Frank Wiegand, Gene Sullivan, Goro Fuji, 
H.Merijn Brand, James E Keenan, Jan Dubois, Jesse Vincent, Josh ben Jore, Karl 
Williamson, Leon Brocard, Michael Schwern, Nga Tang Chan, Nicholas Clark, Niko Tyni, 
Philippe Bruhat, Rafael Garcia-Suarez, Ricardo Signes, Steffen Mueller, Todd Rinaldo, 
Vincent Pit and Zefram.

We expect to release Perl 5.12.2 in mid-August 2010, followed by Perl 5.12.3 in 
mid-November. The next major release of Perl 5, 5.14.0 should appear in spring 2011.

次は三ヶ月後と。

■_ C++を

「マスターしたい」とはありませんが、二週間で~ とかいうご希望。

C++ - Need to learn some basics in a short while - Stack Overflow

For reasons I will spare you, I have two weeks to learn some C++.

I can learn alone just fine, but I need a good source. I don't think I have time to go 
through an entire book, and so I need some cliff notes, or possibly specific 
chapters/specialized resources I need to look up.

I know my Asm/C/C# well, and so anything inherited from C, or any OOP is not needed.

What I do need is some sources on the following subjects(I have a page that specifies 
what is needed, this is basically it, but I trimmed what I know):

   1. new/delete in C++ (as opposed to C#).
   2. Overloading cin/cout.
   3. Constructor, Destructor and MIL.
   4. Embedded Objects.
   5. References.
   6. Templates.

If you feel some basic C++ concept that is not shared with C/C# is not included on 
this list, feel free to enter those as well. But the above subjects are the ones I'm 
supposed to roughly know in two week's time.

Any help would be appreciated, thanks.

Edit:
I want to clarify - I don't expect to study for two weeks and then go and write Quake.
I need to get to a level where given some code and a while to think about it, I can 
understand it. nuances like ++X vs X++ don't matter as much as knowing what the main 
keywords are, etc.
stackoverflow.com/questions/388242/… and from that list "Accelerated C++"
You can't learn C++ in two weeks. It takes years. All you'll learn in two weeks is, at 
best, syntax.
You know, TWO WEEKS is more than enough time to get through one of bjarne stroustroup's
books about C++ few times. Still, you won't learn everything in 2 weeks (you'll get syntax,
but that is all). You need a year, at least.

I will be honest with you. In 2 weeks, you won't be able to learn the whole C++.

Let me rephrase that, because no one will ever know everything about C++ (it is very huge
and yet it's still growing), you won't be able to learn everything you need to become an
expert C++ programmer.

However, if you do have some good programming background, many concepts in C++ will sound
familiar to you. This will help you learn complex concepts quicker than novice programmers.

I would suggest you to go to C++ FAQ Lite because it is the site that lists all the main
concepts of C++.

Don't expect to program something enterprisy after going through the site, because 
that ability comes after you have coded some extensive systems in C++. However, the 
site will definitely help you to understand what C++ looks like and other people deal 
with in C++.

GOOD LUCK :)

I know you said you didn't want to read a book but "Accelerated C++" is 
probably what you want. It was actually was used in like a 2 week crash course at 
Stanford from what I remember to get people up to speed on C++.


If you do not have time to go through an entire book, you may try an online tutorial 
such as the one at http://www.cplusplus.com/doc/tutorial/.

However, it will be useful to go into more depth about common pitfalls and good 
practice in C++. A good online resource for this is the C++ FAQ lite, at 
http://www.parashift.com/c++-faq-lite/ .

If you decide to buy or borrow a book, "Effective C++" by Scott Meyers would 
be a good choice. You do not need to read it front to back, as each chapter is 
dedicated to a specific problem you are likely to encounter when writing C++ code, and 
can be read separately.

Accelerated C++ を複数の人が挙げてます。

■_ 瞬殺

本当に開始後数秒レベルだったらしい(キャンセル分らしいのが後で出たらしいけど)。

かみちゅ!~かみさまでちゅうがくせい~ 90柱目 
820 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 08:22:57 ID:a4aJIKaI Be:
    今日も一日、ゆりえ様の御加護がありますよーに 

821 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 10:08:55 ID:GlL0nTH+ Be:
    あ、ちょっと目を離したらすでに6/1のチケット完売してた。 

822 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 10:10:31 ID:tLkFrHWN Be:
    同窓会ナイト
    余裕で瞬殺でした
    行きたかったな 

823 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 10:17:01 ID:cYLvcZ2k Be:
    時報と同時にポチって完売って、どういうことよ! 

824 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 10:20:22 ID:4fmBuyXy Be:
    この瞬殺っぷりはヒドい 

825 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:02:14 ID:xMlPLVii Be:
    終わった事を悔やんでも仕方ないし
    気を取り直して祀ちゃんのエロさについて語ろうぜ 

826 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:02:59 ID:85mioIhB Be:
    やっぱ尻だと思う 

827 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:18:01 ID:915cgh1C Be:
    ロッピーで余裕で取れた 

828 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:35:26 ID:h7Ws++wW Be:
    いいなぁ、かみちゅイベントは瞬殺で。

    トップをねらえのE列オフなんて・・・ガラガラでさ。

829 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:50:58 ID:VZ5aTvug Be:
    どうやったらこんなにとれるんだ

    http://openuser.auctions.yahoo.co.jp/jp/user/*************

830 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 11:52:45 ID:69jQPPlh Be:
    転売厨縁石に頭ぶつけて死ねや! 

831 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 12:02:36 ID:/rUSGNYX Be:
    某ベースボールガールアニメのイベントは余裕だったのに…
    まぁあれは声優をシークレットゲストとして伏せていたからもあるのだろうけど
    かみちゅもそうすればひょっとすると 

832 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 12:11:35 ID:E5J795o7 Be:
    >>829
    どうすればたくさん取れるかは知らんが
    評価を見る限り、原価割れでもこんなヤツとは取引できねぇ
    イベントも間近だし 

840 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 16:52:33 ID:4575MCOY Be:
    5秒後には完売でした。
    転売厨は苦しみ抜いた挙句に慎で欲しい。 

842 名無しさん@お腹いっぱい。 [sage] 2010/05/19(水) 19:55:52 ID:1vcpohyF Be:
    Twitter見るとキャンセル分が昼でも買えたようだけどな 

■_ C++er こわい

ついったー上で、「C++を勉強したいけどどんな本がいいんだろう」 という問いかけに対して。


Effective C++は初心者向きだよ。あれに書かれてること知らないプログラマとC++で共同開発とか
考えるとゾッとする 

http://twitter.com/uskz/status/14213439884

@kimuraya http://www.sgi.com/tech/stl/ とISO/IEC 14882:2003とあとEffective STL 

http://twitter.com/uskz/status/14214117272

@kimuraya JISのは誤訳,部分的な抜けなどが結構あるので出来れば原文を参照されるほうが

http://twitter.com/uskz/status/14217520894

@kimuraya 最初のサイトの内容は訳(http://www.amazon.co.jp/dp/4756134416/)されて
本になっているのですが現在絶版なんですよね. STLをconceptという抽象的要求の集合を
用いたジェネリックプログラミングの観点から解説している(続く
http://twitter.com/uskz/status/14218518014

@kimuraya 続き)貴重な情報源なので,ぜひ一度目を通していただきたいのですが.あとその延長で
http://www.amazon.co.jp/dp/032163537X なんかも.ジェネリックプログラミングの簡潔な解説だと
http://bit.ly/d1Z4g とか.

http://twitter.com/uskz/status/14218697484
@kimuraya 紹介したのはあくまでジェネリックプログラミングの本で,テンプレートの
勉強するならやっと邦訳の出た
http://www.amazon.co.jp/dp/4798119229 と http://www.amazon.co.jp/dp/4798120391
(続く 
http://twitter.com/uskz/status/14219800086

@kimuraya 続き)辺り,さらに余裕があれば http://www.amazon.co.jp/dp/4894714353
辺りを読まれると良いかと思います.前2冊に関しては日本語版を読んだことが無いので
訳の質は分かりませんが.
http://twitter.com/uskz/status/14219861696

Effective C++ 原著第3版 (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) Generic programming―STLによる汎用プログラミング (アスキーアジソンウェスレイシリーズ―Ascii Addison Wesley programming series) Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library (Addison-Wesley Professional Computing Series) Elements of Programming C++ テンプレート完全ガイド (Programmer’s SELECTION) C++テンプレートメタプログラミング (Programmer’s SELECTION) Modern C++ Design―ジェネリック・プログラミングおよびデザイン・パターンを利用するための究極のテンプレート活用術 (C++ In‐Depth Series)

どれだけ読まなければならないのかという。

そいやー、Elements of Programming もちょっとだけ読んだあと放置しているなあ。 読書会メソッドでも発動させるべきだろうか。

■_ 本日の巡回から

2010年05月18日

■_

100枚限定とか無理。 それに会社休まないといかんしなあ。えぐ。

■_ Scala

みずしまさんの添削前のと後のを見比べてみる。 マージソート - うっかりプログラミング日誌 gist: 402873 - GitHub


def sort(list:List[Int]):List[Int] = {
  if (list.size == 1) { return list }
  val mid = list.size / 2
  val left = sort(list.take(mid))
  val right = sort(list.drop(mid))
  merge(left, right)
}

def merge(left:List[Int], right:List[Int]):List[Int]= {
  if (left.isEmpty || right.isEmpty) {
    left:::right
  } else if (left.head < right.head) {
    List(left.head):::merge(left.tail, right)
  } else {
    List(right.head):::merge(left, right.tail)
  }
}

val list = List(8,4,3,7,6,5,2,1)
println(sort(list))



def sort(src: List[Int]): List[Int] = src match {
  case (Nil|_::Nil) => src
  case _ =>
    def merge(l: List[Int], r: List[Int]): List[Int] = (l, r) match {
      case (Nil, ys) => ys
      case (xs, Nil) => xs
      case (x::xs, y::ys) => if(x < y) x::merge(xs, r) else y::merge(l, ys)
    }
    val (l, r) = src.splitAt(src.length / 2)
    merge(sort(l), sort(r))
}
val list = List(8,4,3,7,6,5,2,1)
println(sort(list))

これが、あると嬉しいぱたーんまっちというやつですな。

■_ 学習用C言語開発環境(仮)

数日前に見かけて、ちょっと気になってたんだけど見失ってた(笑) んで、記憶をたどって再発見。


学習用C言語開発環境(仮) Ver 0.0.0.7
(略)
    [  これまでで最もシンプルなC言語開発環境  ]
    高性能でありながら無料のC言語コンパイラは数多く存在しますが、
    簡単にインストールでき、一切の設定なしに、すぐにプログラミングが始められる、
    そんな開発環境はこれまで存在しませんでした。

    「学習用C言語開発環境」は、そんな状況を一変させます。
    コンパイラと開発環境がワンパッケージ。非管理者権限でも一発インストール。
    インストール後は全く設定なしにすぐにプログラミングを開始できます。
    もう開発環境の設定でつまづいてしまうことはありません。

    [  充実の日本語対応  ]
    コンパイラといえば、英語動作前提なのが普通です。
    プログラム中で日本語メッセージは扱えず、日本語のファイル名など問題外。
    特にパス名の日本語問題は、開発環境の設定の定番トラブルでした。

    しかし、「学習用C言語開発環境」は、完全日本語対応。
    日本語を含むパス名、日本語ファイル名、日本語メッセージの表示、すべてに対応します。
    また、今後はエラーメッセージの完全日本語翻訳も予定しております。

    [  複数ソースファイル対応  ]
    入門用のC言語開発環境といえば、複数ソースファイルには対応しないもの。
    対応出来ても、ユーザーがメイクファイルやビルドオプションを設定する必要が。
    1ソースファイルでのプログラミングを余儀なくされてきたのではないでしょうか?

    「学習用C言語開発環境」は、複数ソースファイル対応です。
    しかも、一切の設定不要。ソースファイルを追加するだけで開発環境が自動認識します。
    設定が複雑なために複数ソースファイルの利用をためらうことはもはやありません。

    [  入門者に嬉しい機能を続々追加予定  ]
    今後は従来の開発環境にはありえなかった入門者特化機能を続々追加予定です。
    今後の開発を楽しみにしていてください。
    C言語の入門者のだれもが「学習用C言語開発環境」を利用する日を目指しています。
    ※追加予定機能。あくまでも予定です。
    開発環境全般の完成度向上
    コンパイルエラーの完全日本語表示
    関数リストウィンドウ
    キーワードリストウィンドウ
    テキストエディタカスタマイズ
    ウィザードによるひな形生成
    バックグラウンドコンパイルによるリアルタイムエラー表示
    IntelliSense
    プログラミングすることでゲーム機のような実績解除
    C言語意外の他言語対応
    開発環境のオープンソース化

(略)

    [  利用ライブラリなど  ]
    「学習用C言語開発環境」では次の外部ソフトウェアを利用しております。
    これらのソフトウェアなしには「学習用C言語開発環境」は成り立ちませんでした。

    コンパイラには Tiny C Compiler を利用。
    日本語対応MinGWを使用して日本語対応になるように再コンパイルしております。
    ネイティブコードを吐き出すコンパイラであり、本物のC言語プログラミングが可能です。
    http://bellard.org/tcc/

    また、テキストエディタ部分に Azuki を利用しています。
    プログラミングに大変便利な機能をデフォルトで多数内蔵しております。
    http://azuki.sourceforge.jp/

    また、間違いプログラム報告機能に TKMP.DLL を利用しています。
    メール機能を簡単に追加できる大変優秀なライブラリです。
    http://uwa.potetihouse.com/library/tkmpdll.html

    開発費の補充と利用状況調査のために SoftAD による広告配信を行っております。
    同様のサービスの中で、SoftAD は広告配信画面が最小限であり、
    ユーザー様に与える負担が低い点を評価し、採用しております。
    http://www.tamasoft.co.jp/ad/index.html

    ※なお、SoftAD はユーザーに悪影響を与えるものではありませんが、
    ※組織ポリシーなどの理由で SoftAD を無効化して運用したい場合は、
    ※インストールフォルダに含まれる SoftAd.dll を削除してご利用ください。

あー、コンパイラーそのものは tcc がベースなのね。 完全に自作するのは面倒だろうと思ってたんでその辺気になってた。

■_


The Universe of Discourse : Monads are like burritos

Tue, 15 Dec 2009

Monads are like burritos (モナドはブリトーに似ている)


A few months ago Brent Yorgey complained about a certain class of tutorials which 
present monads by explaining how monads are like burritos.

二三ヶ月前、Brent Yougey はモナドがいかにブリトー (burritos) に似ているかを説明するこ
とで モナドを present するいくつかのチュートリアルのクラスについて苦言を呈しました


At first I thought the choice of burritos was only a facetious reference to the 
peculiar and sometimes strained analogies these tutorials make. But then I realized 
that monads are like burritos.

当初わたしはこう考えました。ブリトーを選択したのは、単なる peculiar に対する冗談半分の 
(facetious) な参照であって、こういったチュートリアルをときに strained analogies にする
ためなのだと。けれども後になって、わたしはモナドはブリトーに似ていると認識(realize) し
たのです。

#わかんねー

I will explain.

では説明しましょう。

A monad is a special kind of a functor. A functor F takes each type T and maps it to a 
new type FT. A burrito is like a functor: it takes a type, like meat or beans, and 
turns it into a new type, like beef burrito or bean burrito.

モナドとは関手 (functor) の特殊なものです。ある関手 F は引数にとった型 Tのそれぞれを新
しい型 FT に写像します。ブリトーは関手に似ています。肉や豆のように型を受け取って、それ
をビーフブリトーやビーンブリトーのように新しい型へと変化させます。

A functor must also be equipped with a map function that lifts functions over the 
original type into functions over the new type. For example, you can add chopped 
jalapenos or shredded cheese to any type, like meat or beans; the lifted version of 
this function adds chopped jalapenos or shredded cheese to the corresponding burrito.

関手はまた、lifts functions over the original type into functions over the new typeな 
マップ関数で equipped されていなければなりません。たとえばあなたは肉や豆のように、任意
の型に対して chopped jalapenos か shredded cheese を加えられますし、この関数の lifted
version は対応するブリトーに chopped jalapenos か shredded cheese を加えます。


A monad must also possess a unit function that takes a regular value, such as a 
particular batch of meat, and turns it into a burrito. The unit function for burritos 
is obviously a tortilla.

モナドはまた、particular batch of meat のような通常の値を引数にとってそれをブリトーに
変換する unit 関数を処理 (processes) しなければなりません。このブリトー用のユニット関
数は明らかにトルティーヤ (tortillas) です。


Finally, a monad must possess a join function that takes a ridiculous burrito of 
burritos and turns them into a regular burrito. Here the obvious join function is to 
remove the outer tortilla, then unwrap the inner burritos and transfer their fillings 
into the outer tortilla, and throw away the inner wrappings.

最後に、モナドはブリトーの ridiculous なブリトーを受け取ってそれを通常のブリトーへと変
換する join 関数を処理しなければなりません。ここで、join 関数は外側のトルティーヤを取
り除く (remove) ためのものだということは明らかで、それから内側のトルティーヤを unwrap
してその中にあった fillings を外側のトルティーヤに移して(transfer)、inner wrappings
を thow away します。

#ridiculous おかしな?

The map, join, and unit functions must satisfy certain laws. For example, if B is 
already a burrito, and not merely a filling for a burrito, then join(unit(B)) must be 
the same as B. This means says that if you have a burrito, and you wrap it in a second 
tortilla, and then unwrap the contents into the outer tortilla, the result is the same 
as what you started with.

この map, join, それに unit の関数群は幾つかの規則 (laws)を satisfy しなければなりませ
ん。たとえば  がもし既にブリトーであり、かつ、merely a filling for a burrito でなかっ
たとすると、join(unit(B)) は B と同一でなければなりません。これはあなたがブリトーを持
っていたとして、二番目のトルティーヤでそれでラップしてから、さらに持っていたブリトーの
中身 (contents) のラップをはがして (unwrap) 外側のトルティーヤへ移したその結果が最初の
ものと同じだということを意味しています。


This is true because tortillas are indistinguishable.

トルティーヤは indistinguishable なのでこれは真です。


I know you are going to point out that some tortillas have the face of Jesus. But 
those have been toasted, and so are unsuitable for burrito-making, and do not concern 
us here.

一部のトルティーヤは face of Jesus を持っていることをあなたが指摘しようとしているのを
わたしは知っていますが、しかしそれらはすでに toast されているのでブリトーを作るのには 
unsuitable であるのでここでは考慮しません。


So monads are indeed like burritos.

ですからモナドはブリトーにとても似ているのです。


I asked Brent if this was actually what he had in mind when he first suggested the 
idea of tutorials explaining monads in terms of burritos, and if everyone else had 
understood this right away.

わたしは Brent に、これが彼が最初にterms of burritos をつかってモナドを説明するチュー
トリアルというアイデアをサジェストしたときに実際に彼が考えていたことかどうかを訊ねまし
た。


But he said no, I was the lone genius.

けれども彼は no と言ったので、
わたしは the lone genius だったのです。

わけわからんちん ○| ̄|_

■_ 本日の巡回kら

2010年05月17日

■_

・転ぶ
naoya_t on TwitterWolfram|Alpha をいじくってるところを見せ付けられたら iPhone を買う気になってしまうかもしれない

■_ データ形式


BDF形式の差分を扱えるソフトで、WindowsXP(x64)環境でも | OKWave

BDF形式の差分を扱えるソフトで、WindowsXP(x64)環境でも動作可能なソフトを知りませんか?

x86系OSであれば、下のアドレスのものが使えると思いますが、x64では動作不可でした。
http://www.vector.co.jp/soft/dl/dos/util/se002664.html

試した事1
xxx.datファイルに対し、xxxbdfの差分を適用するため、DOS窓(コマンドプロンプト)から 
Bupdate.exe xxx.bdf と入力。

1結果 「イメージ ファイル BUPDATE.EXE は有効ですが、このコンピュータでは扱えないファ
イル形式です。」とエラーメッセージ

試した事2
BUPDATE.EXEを右クリックし、互換モードで「Windows95」を選択してから、試した事1を実行。
2結果 試した事1の結果と同じ。

試した事3
Windows Virtual PC 上にWindowsXP professional(x86) をインストールし、試した事1を実行。
3結果 試した事1の結果と同じ。


同じような環境で、同様の問題を解決された方からのアドバイスをお待ちしております。
宜しくお願いいたします。

それほど複雑な形式ではなかったと思うけど、 フォーマットやらは一切公開されてないんじゃなかったっけ? 256バイトごとだかで差分をとっていくとか何かで目にしたような気がするけど、 別のツールかもしれない。 してみると、フォーマットをオープンにしてもらっていれば 互換ツール作るのもそれほど苦労しないですむような話じゃないのかなあ。

バイナリの差分作るツールってどのくらいあるんだろう?

■_ gawk 3.1.8

3.1.7 から 3.1.8 で修正されたところに自分の名前を見つけてしまって ちょっと照れる。

3.1.7 → 3.1.8 での変更点はそれほど大きくないっぽいのを再度確認。

 
Changes from 3.1.7 to 3.1.8
---------------------------
1. The zero flag no longer applies to %c and %s; apparently the standards
   changed at some point.

2. Updated to latest infrastructure: Autoconf 2.65, Automake 1.11.1,
   libtool 2.2.6b, Bison 2.4.2.

3. Failure to open a socket is no longer a fatal error.

4. dfa.h and dfa.c are now more-or-less in sync with GNU grep, for the first
   time in many years.

5. Gawk no longer includes its own copy of libsigsegv but it will use it if
   installed on the build system. The --disable-libsigsegv configure option
   is now gone.

6. The ' flag (%'d) is now just ignored on systems that can't support it.

7. Lots of bug fixes, see the ChangeLog.

ということで、3.1.7 のオリジナルと自分が修正したものとで作ったパッチを そのまま 3.1.8 に適用してみる。

>patch -p1 < ..\towin.diff
patching file awk.h
Hunk #2 succeeded at 120 with fuzz 2.
Hunk #3 succeeded at 465 (offset -32 lines).
Hunk #4 succeeded at 710 (offset -32 lines).
Hunk #5 FAILED at 769.
Hunk #6 succeeded at 1082 (offset -31 lines).
Hunk #7 succeeded at 1308 with fuzz 2 (offset -2 lines).
1 out of 7 hunks FAILED -- saving rejects to file awk.h.rej
patching file builtin.c
Hunk #1 succeeded at 36 (offset 1 line).
Hunk #2 succeeded at 507 (offset 32 lines).
Hunk #3 succeeded at 1430 (offset 72 lines).
Hunk #4 succeeded at 1547 (offset 72 lines).
Hunk #5 succeeded at 1959 (offset 88 lines).
Hunk #6 succeeded at 2628 (offset 92 lines).
Hunk #7 succeeded at 2662 (offset 92 lines).
Hunk #8 succeeded at 2864 (offset 94 lines).
patching file dfa.c
Hunk #1 FAILED at 50.
1 out of 1 hunk FAILED -- saving rejects to file dfa.c.rej
patching file eval.c
Hunk #1 FAILED at 2146.
Hunk #2 FAILED at 2155.
Hunk #3 succeeded at 2544 (offset 141 lines).
2 out of 3 hunks FAILED -- saving rejects to file eval.c.rej
patching file io.c
Hunk #1 FAILED at 3.
Hunk #9 succeeded at 332 (offset 2 lines).
Hunk #10 FAILED at 372.
Hunk #11 succeeded at 421 (offset 7 lines).
Hunk #12 FAILED at 628.
Hunk #13 FAILED at 779.
Hunk #14 FAILED at 974.
Hunk #15 succeeded at 1036 (offset 25 lines).
Hunk #16 succeeded at 1282 (offset 24 lines).
Hunk #17 succeeded at 1299 (offset 24 lines).
Hunk #18 succeeded at 1318 (offset 24 lines).
Hunk #19 FAILED at 1327.
Hunk #20 succeeded at 1337 (offset 24 lines).
Hunk #21 succeeded at 1357 (offset 24 lines).
Hunk #22 succeeded at 1442 (offset 24 lines).
Hunk #23 FAILED at 1566.
Hunk #24 succeeded at 1631 (offset 63 lines).
Hunk #25 succeeded at 1662 (offset 63 lines).
Hunk #26 succeeded at 1683 (offset 63 lines).
Hunk #27 succeeded at 1692 (offset 63 lines).
Hunk #28 succeeded at 1699 (offset 63 lines).
Hunk #29 succeeded at 1716 (offset 63 lines).
Hunk #30 succeeded at 1724 (offset 63 lines).
Hunk #31 succeeded at 1738 (offset 63 lines).
Hunk #32 succeeded at 1779 (offset 63 lines).
Hunk #33 FAILED at 1800.
Hunk #34 succeeded at 1816 (offset 65 lines).
Hunk #35 succeeded at 2105 (offset 74 lines).
Hunk #36 succeeded at 2120 (offset 74 lines).
Hunk #37 succeeded at 2178 (offset 74 lines).
Hunk #38 succeeded at 2358 (offset 74 lines).
Hunk #39 succeeded at 2379 (offset 74 lines).
Hunk #40 succeeded at 2413 (offset 74 lines).
Hunk #41 succeeded at 2445 (offset 74 lines).
Hunk #42 succeeded at 2459 (offset 74 lines).
Hunk #43 succeeded at 2473 (offset 74 lines).
Hunk #44 succeeded at 2485 (offset 74 lines).
Hunk #45 succeeded at 2524 (offset 74 lines).
Hunk #46 succeeded at 2878 (offset 74 lines).
Hunk #47 succeeded at 2892 (offset 74 lines).
Hunk #48 succeeded at 2901 (offset 74 lines).
Hunk #49 succeeded at 3284 (offset 74 lines).
Hunk #50 succeeded at 3304 (offset 74 lines).
Hunk #51 succeeded at 3322 (offset 74 lines).
Hunk #52 succeeded at 3351 (offset 74 lines).
Hunk #53 succeeded at 3371 (offset 74 lines).
Hunk #54 succeeded at 3494 (offset 74 lines).
Hunk #55 succeeded at 3583 with fuzz 2 (offset 83 lines).
8 out of 55 hunks FAILED -- saving rejects to file io.c.rej
patching file main.c
Hunk #1 succeeded at 22 with fuzz 1.
Hunk #2 succeeded at 49 with fuzz 1 (offset 8 lines).
Hunk #3 succeeded at 81 (offset 12 lines).
Hunk #4 succeeded at 95 (offset 12 lines).
Hunk #5 succeeded at 175 (offset 14 lines).
Hunk #6 succeeded at 201 (offset 14 lines).
Hunk #7 succeeded at 233 (offset 15 lines).
Hunk #8 succeeded at 245 (offset 15 lines).
Hunk #9 succeeded at 267 with fuzz 2 (offset 16 lines).
Hunk #10 FAILED at 329.
Hunk #11 succeeded at 530 (offset 27 lines).
Hunk #12 succeeded at 618 (offset 29 lines).
Hunk #13 succeeded at 814 (offset 31 lines).
Hunk #14 succeeded at 856 (offset 32 lines).
Hunk #15 FAILED at 1017.
Hunk #16 succeeded at 1349 (offset 88 lines).
Hunk #17 FAILED at 1415.
3 out of 17 hunks FAILED -- saving rejects to file main.c.rej
patching file mbsupport.h
patching file missing_d/getaddrinfo.c
patching file missing_d/getaddrinfo.h
patching file missing_d/snprintf.c
patching file pc/gawkmisc.pc
patching file re.c
Hunk #1 FAILED at 232.
1 out of 1 hunk FAILED -- saving rejects to file re.c.rej
patching file regcomp.c
Hunk #1 succeeded at 3521 (offset 45 lines).
Hunk #2 succeeded at 3614 (offset 45 lines).
patching file regex.c
Hunk #2 succeeded at 67 with fuzz 1.
patching file regex_internal.c
Hunk #1 succeeded at 272 (offset 16 lines).
patching file regexec.c
Hunk #1 succeeded at 730 (offset 17 lines).
patching file replace.c
Hunk #1 succeeded at 27 (offset 25 lines).
Hunk #2 FAILED at 109.
1 out of 2 hunks FAILED -- saving rejects to file replace.c.rej

当然のようにいくつかリジェクトされたので、それを確認。 とはいえ、パッチがあたったように見えて実はおかしくなっているというものの方が 後々面倒を起こすんですけどね。

つづく。

■_ 本日の巡回から

■_

今日も翻訳は不調であった。

2010年05月16日

■_

・デジカメ
FX-66 が現金払いで24000円弱というところが。ううむ。 贔屓にしている某電器店だと29000円くらいだったんだよなあ。 こっちはGW中の値段なんで変わっている可能性はあるけど、うーーん。


想定していなかった使い方をされて、 なおかつそれでも十二分に役割を果たしているからといって、 最初からそれを想定して作っていたという主張を第三者がするのはどうなんですかね。

■_ ネタ

送料を考えると一つ二つでは注文しづらいし、といってたくさん頼んでもそんなに 頻繁に食べるわけでもないしなあということでちょっと悩んでいるわたしがここにいたり。


Rubyについて Part 40 
192 デフォルトの名無しさん [sage] 2010/05/16(日) 03:54:42 ID: Be:
    PHPerだけどRubyラーメン食べてみた - あっきぃ日誌
    http://d.hatena.ne.jp/Akkiesoft/20100514/1273844892

    http://f.hatena.ne.jp/images/fotolife/A/Akkiesoft/20100514/20100514215327.jpg
    http://f.hatena.ne.jp/images/fotolife/A/Akkiesoft/20100514/20100514220924.jpg
    http://f.hatena.ne.jp/images/fotolife/A/Akkiesoft/20100514/20100514220944.jpg
    http://f.hatena.ne.jp/images/fotolife/A/Akkiesoft/20100514/20100514221028.jpg
    http://f.hatena.ne.jp/images/fotolife/A/Akkiesoft/20100514/20100514221054.jpg

    Rubyラーメンうまそーだな、おい・・・
    画像見てたら腹減ってきた 

193 デフォルトの名無しさん [sage] 2010/05/16(日) 04:15:06 ID: Be:
    Rubyとの関係が解らん
    初音以外 

194 デフォルトの名無しさん [sage] 2010/05/16(日) 10:43:45 ID: Be:
    Ruby.開発者.出身地.ご当地ラーメン
    => 松江ラーメン 

195 デフォルトの名無しさん [sage] 2010/05/16(日) 11:14:53 ID: Be:
    開封すればするほどRubyと関係無くなっていく 

196 デフォルトの名無しさん [sage] 2010/05/16(日) 11:18:38 ID: Be:
    Rubyロゴの海苔くらいは同封すべきだな 

197 デフォルトの名無しさん [sage] 2010/05/16(日) 11:35:16 ID: Be:
    そうだねえ、プリント海苔の出番のはずなんだが 

198 デフォルトの名無しさん [sage] 2010/05/16(日) 11:56:13 ID: Be:
    野球カードみたいなの入れるとか
    ライブラリには載せてない隠しクラスをこっそり書いておくとか
    そのぐらいの商魂は見せてほしいね 

199 デフォルトの名無しさん [sage] 2010/05/16(日) 12:08:13 ID: Be:

     ・ Rubyロゴの印刷された海苔を2枚入れとく
     ・ 標準/添付クラスのチートシートカード(全10枚、2枚ランダム封入)
     ・ Rubyコア開発者ブロマイド(裏には自己紹介兼ねた短いRubyスクリプトつき)
     ・ コンピュータ完動祈願の松江の神社のお守りが入ってる(サーバに貼れるシール1枚同封)

200 デフォルトの名無しさん [sage] 2010/05/16(日) 12:08:57 ID: Be:
    Rubyチョコ新発売!
    組込、添付クラスライブラリのAPIカード付き。
    APIカードを集めてRubyウィザードになろう!

    どうよ。企画→俺。駄菓子メーカー→やおきん 

201 デフォルトの名無しさん [sage] 2010/05/16(日) 12:12:21 ID: Be:
    萌えRuby

    各種クラスライブラリを擬人化
    Stringたん
    Arrayたん 

202 デフォルトの名無しさん [sage] 2010/05/16(日) 12:16:07 ID: Be:
    カードくらいは入れるべきだったな。
    そもそもターゲットがいわゆるマニアなんだから、
    カードをコンプリートするまで買うやつ多いだろ。 

203 デフォルトの名無しさん [sage] 2010/05/16(日) 12:24:50 ID: Be:
    Matzのターン!中田さんを召還!とか出来るのなら箱買いしてもいい 

204 デフォルトの名無しさん [sage] 2010/05/16(日) 17:37:59  ID: Be:
    >>199
    出雲大社のなら欲しい 

■_ infix → prefix

postfix への変換はスタック一個あればできるんですが、 prefix への変換は再帰をせずにできたかなあ? 複数回走査してもいいという条件ならできる?


C言語で、再帰呼び出しを使用せずに、文字列"(12 + 3) * | OKWave

C言語で、再帰呼び出しを使用せずに、文字列"(12 + 3) * ( 3 * (4 + 5 ))"を、優
先順位が低い順に二分木に入れる関数を作成したいのですが・・・。

char str[15] = ""(12 + 3) * ( 3 * (4 + 5 ))";なら
char n[100];に
n[0] = '*'
n[1] = '+'
n[2] = '*'
n[3] = 12

n[4] = 3
n[5] = 3
n[6] = '+'
n[7] = \0

n[8] = \0

n[9] = \0

n[10] = \0
n[11] = \0
n[12] = \0
n[13] = 4

n[14] = 5

(n[15] 以降は\0が格納されています。)

というように入れたいのですが関数からその関数を呼び出す再帰を使わずに作成する方法がわか
りません。

再帰を使用しなければかなり処理が複雑になるような気がしますがどなたか詳しい方よろしくお
願いします。

言語はC言語です。
ANo.1

念のためにお聞きします。
仮に、当該の数式が
(12345 + 3) * ( 3 * (4 + 5 ))
であるとすると、どういう結果をお望みですか?

補足

n[0] = '*'
n[1] = '+'
n[2] = '*'
n[3] = 12345
n[4] = 3
n[5] = 3
n[6] = '+'
n[7] = \0
n[8] = \0
n[9] = \0
n[10] = \0
n[11] = \0
n[12] = \0
n[13] = 4
n[14] = 5
です。

ANo.2


>n[3] = 12345

再帰呼び出し以前の話として、
char型に12345を入れようとすると
オーバーフローすることに気づいてください。

補足

255以上ですのでたしかにオーバーフローしますね。それでは255までの範囲内でよろしいので、
二分木にいれる方法をおしえていただけますか?

微妙にかみ合わないこのやりとりは脇によけておいて、 再帰を行わずに中値記法の式を前置記法に変換できるか。 というあたりで。

■_ OpenBSD

OpenBSDユーザーコーナー Part6 [chaika]
950 名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 06:53:32 ID: Be:
    テオ様にあこがれて OpenBSD をサーバで使い始めたら気に入ったんで、
    クライアントも OpenBSD にして 「X 使わずに」 blog 書いたり IRC したりしたいんだけど、
    日本語はあきらめないと無理ですよね?心もカナダ人になればいいのか? 

951 名無しさん@お腹いっぱい。 [sage] 2010/05/14(金) 20:29:45 ID: Be:
    つncursesw 

952 名無しさん@お腹いっぱい。 [] 2010/05/15(土) 05:10:04 ID: Be:
    Theoはオランダ系南アフリカ人の生まれだからアフリカーンス語が母語じゃないかな。 

953 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 08:56:30 ID: Be:
    Xなしでも日本語できそうだな
    でもX入れとかないと
    portsからpythonとかいろいろはいらん 

954 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 11:44:25 ID: Be:
    >950
    jfbtermとかはだめでしょうか? 

955 名無しさん@お腹いっぱい。 [] 2010/05/15(土) 12:06:36 ID: Be:
    南アフリカ出身のTheoさんがセキュリティにこだわるのは南アフリカの治安が関係しているのでしょうか? 

956 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 13:08:29 ID: Be:
    速度にこだわってもLinuxには勝てないし、移植性にこだわってもNetBSDに勝てないし
    万能っぽさを目指してもFreeBSDに勝てないのでセキュリティにこだわってるだけです。 

957 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 17:02:46 ID: Be:
    NetBSDからけんか別れしたときに、とりあえずセキュリティっていってみただけだしな。 

958 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 17:54:54 ID: Be:
    移植性ではNetBSDと張り合えるだろ
    ただ、リソース足りないから実際に移植できるMPUが少ないってだけで 

959 名無しさん@お腹いっぱい。 [sage] 2010/05/15(土) 18:03:21 ID: Be:
    逆にi386とamd64だけでいいだろと思う 

960 名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 21:53:49 ID: Be:
    でも、お前らもLinusよりTheo様の方が好きだろ?

961 名無しさん@お腹いっぱい。 [sage] 2010/05/16(日) 23:14:25 ID: Be:
    ストールマンよりTheoが好き
    ゲイツよりTheoが好き
    ジョブズよりTheoが好き
    タネンバウムよりTheoが好き 


956 の意見はきついけど正鵠を射ている?

■_ 本日の巡回から

■_ むー

翻訳がすすまねー。

2010年05月15日

■_

・読んだ
特務艦「宗谷」の昭和史
久しぶりに船の科学館に行って、宗谷を見てこようかと思いましたマル 正直、何書いても陳腐な文章にしかならんので書くに書けんのですわ○| ̄|_ 宗谷 / 施設案内 / ホーム - :: 船の科学館 -Museum of Maritime Science- :: 宗谷 (船) - Wikipedia :: 船の科学館 -Museum of Maritime Science- ::

・読んでる
関ヶ原 島津退き口 を買いにいったのですが、やはりまだ出ていなかった(18日発売)ので
フランス革命の肖像 (集英社新書ヴィジュアル版) (集英社新書 ビジュアル版 18)
を買ったり。ロベスピエールのところはなんともいえないなあ。

■_ メタプログラミングとは

結構長いんですが、印象に残ったところを切り取って。

元ネタは誰ぞの twitter での発言のようなんですが "Metaprogramming is the language feature that helps you write code that you won't be able to understand once the cocaine wears off."


"Metaprogramming is the language feature that helps you write code that you won't be able to understand once the cocaine wears off." : programming


Actually their use makes the code readable when you know what they mean. Operators are 
really nice for any binary operations and combinators.

Furthermore operators are just functions, so there is no added complexity in using 
them. Metaprogramming on the other hand is an advanced CS subject so I don't think it 
is fair to compare both.



infix operators have added complexity: fixity declarations.


ok but that nowhere near the complexity of what's referred as Metaprogramming.



Don't tell me you avoided learning Haskell because it allows users to define names 
that are built of characters, and not just the core language...


I have previously not learned haskell because, well, why bother. Now I have a new reason.

Readability counts.


Readability counts for a lot. That's a reason to learn Haskell, it facilitates more 
readable code by allowing to use operators as names, when that's appropriate (That's 
of course one of the least important things, it just happens to be the topic).

A bad name is bad if it is composed of letters or if it is composed of symbols.

Would you consider a language more readable if it banned all operators, and required 
you use "plus" instead of "+"?


SUBTRACT OPERATORS FROM LANGUAGE GIVING COBOL


There's a zillion languages to learn. That sounds like a good reason to avoid Haskell. 
I avoided perl because of the line noise too. If I want functional programming, I'll 
probably go with Ocaml or Clojure.


I really like Ocaml, but many times throughout using Ocaml I think to myself "ohh 
I wish I had this haskell feature right now" (mostly in terms of lazyness).

■_ ICU

ついったで、MacRuby では正規表現エンジンを鬼車からICUのそれに切り替えた というのを見かけたのでちょっと調べてみた。


MacRuby ≫ MacRuby 0.6

The String class has also been changed. It is now a fresh new implementation that can 
handle both character and byte strings. It also uses the ICU framework to perform 
encoding conversions on the fly. This new class inherits from NSMutableString. Symbol 
was also rewritten to handle multibyte (Unicode) characters.

Finally, the Regexp class has been totally rewritten in this release. It is now using 
the ICU framework instead of Oniguruma for regular expression compilation and pattern 
matching. Since ICU is thread-safe, MacRuby 0.6 allows multiple threads to utilize 
regular expressions in a very efficient way, which was not possible previously.

All these changes were designed and implemented to honor compatibility with previous 
releases of MacRuby. They should not be directly visible.

ふむ。 でもそーすっと akr スペシャルとかはどーなるの?

■_ そんな名前がついていたのか

納得して大笑い。


New programming jargon you coined? - Stack Overflow

You know the style of brackets where the opening brace goes on the end of the current line, e.g. this?

if (a == b) {
    printf("hello");
}

We used to refer to this style of brackets as "Egyptian brackets".
Why? Compare the position of the brackets with the hands in this picture: 

http://www.muppin.com/quilts/egyptian.jpg

reddit と stack overflow に寄せられたの全部チェックしてくの面倒だ~

■_ Apache and the future of open-source licensing

最後息切れした ○| ̄|_

Apache and the future of open-source licensing | The Open Road - CNET News

Apache and the future of open-source licensing
(Apache とオープンソースのライセンシングの将来)

by Matt Asay

If most developers contribute to open-source projects because they want to, rather 
than because they're forced to, why do we have the GNU General Public License?

もしほとんどの開発者が、強制されているからではなく自分たちがそう望んでいるからオープン
ソースプロジェクトに貢献しているのだとしたら、なぜわたしたちには GNU General Public 
License があるのでしょうか?


Free Software Foundation

That's the question that hit me last night as I tried to sleep in the shadow of 
Richard Stallman's MIT. Stallman, of course, originated the GPL, a brilliant way to 
turn copyright on its head in order to force software to remain open.

That's the question that hit me last night as I tried to sleep in the shadow of
Richard Stallman's MIT.
GPL を originate した Stallman は brilliant なやり方でもってソフトウェアを open の
ままにさせつづけるのを強制させるために著作権 (copyright) の矛先を変えました。
#イマイチ
# of course がここに入ってくるのが良くわからない

But in the process, did Stallman simply create an alternative way to release 
proprietary software?

しかしそのプロセスの中で Stallman は、ただ単に proprietary なソフトウェアをリリース
するための alternative なやり方を作っただけではないでしょうか?


I'm not trying to be cute here. Think about it. If you you want to maximize adoption 
and reuse of your software, why wouldn't you use Apache? Perhaps because you don't 
like the thought of someone using your free software in a proprietary product?

わたしはここで cute (抜け目ない?) であろうとはしませんが、考えてみましょう。もしあなた
があなたのソフトウェアの採用や再利用 (adoption and reuse) を最大化させたいのなら、なぜ 
Apache (ライセンス) を使わないのでしょうか?


Perhaps because you don't like the thought of someone using your free software 
in a proprietary product?

おそらくそれは、あなたのフリーソフトウェアを誰かが proprietary な product で使うのを
あなたが好まないからでしょう。


"I would actually rather nobody use my software than be in a situation where 
everyone is using my gear, and nobody is admitting it," wrote Zed Shaw, creator 
of a popular library and Web server for Rails called Mongrel.


ポピュラーなライブラリやRails向けの Mongrelと呼ばれるWeb serverを作成した Zed Shaw
はこう書いています
"I would actually rather nobody use my software than be in a situation where everyone 
is using my gear, and nobody is admitting it,"
(誰もが自分の作った gear を使っているのに、それを認める(admit)する人が一人もいない
のならわたしのソフトウェアを誰も使わない方がよっぽど良い)

Shaw, and perhaps other coders, have turned to the GPL as a way to protect their 
software from use they deem objectionable. But isn't this precisely what the 
proprietary software licenses do? The only difference is that the GPL forces code to 
be open, rather than closed.

Shaw と、おそらくはその他の coder たちも自分たちのソフトウェアを不快な使い方 (use they 
deem objectionable)から護るために GPL を採用したのでしょう。しかしこれは、proprietary 
なソフトウェアのライセンスが行っていることと全く変わりがないのではないでしょうか?
両者で異なっているのは、GPL は code が close なことを強制するのではなくて open である
ことを強制しているという点だけです。


Are the two approaches so very different? The effect--blocking undesirable use of 
one's software--is largely the same.

これら二つのアプローチはそれほど異なったものなのでしょうか? ソフトウェアの望まぬ使
用 (undesirable use) のブロックというその効果は大体において同じものです。


After 10 years in open source, I'm increasingly of the Apache-licensing persuasion 
because I'm starting to concur with open-source luminary Eric Raymond that "the 
GPL is unnecessary...(and) is also a confession of fear and weakness."

オープンソースの十年間の後、わたしは Apache ライセンスを使うことが増えてきました。

because I'm starting to concur with open-source luminary Eric Raymond that
それは、オープンソースの luminary (権威) である Eric Raymond の
"the GPL is unnecessary...(and) is also a confession of fear and weakness."
(GPL は不要であり、また恐れと弱さの告白である(?))
という意見とと同意見になってきたからです。


If I'm mostly concerned about adoption, Apache promises to be better than the GPL for 
all the reasons stated by Daniel Jalkut in his excellent ode to Apache.

もしわたしがソフトウェアの adoption (採用) に最も関心を持っているのなら、Apache ライセ
ンスは Daniel Jalkut が 彼の excellent な ode において Apache に対して宣言 (state) する
すべての理由に対してGPL よりも良いものを約束しています


And if I'm concerned about protection, then why not simply use a proprietary 
license--one that doesn't scare opposing legal counsel?

そしてもし、わたしの関心事が保護 (protection) にあったのなら、なぜ単純に proproetary
なライセンスを使わないのでしょうか?
--one that doesn't scare opposing legal counsel?


With the Web making open-source licensing largely irrelevant, anyway, it's a good time 
to evaluate the merits of the two dominant open-source-licensing approaches. For this 
moment in time, they're essentially equivalent, at least to end users and Web 
developers, neither of which is required to contribute back derivative works.


Web がオープンソースライセンスの意義の大部分を失わせてしまったということから、いずれに
しても、二つの支配的なオープンソースライセンシングアプローチのメリットを評価するのによ
いタイミングでしょう。
For this moment in time,
それらは本質的には等価なものです。少なくともエンドユーザーや Web デベロッパーはどちら
も派生物 (derivative works) のcontribute back が必須なものになっていません。


Indeed, I believe that one of the primary reasons that Linux, MySQL, Lucene, Hadoop, 
and other Web-oriented technologies have thrived in the past few years is that they 
have basically come legal-encumbrance-free.

はっきり言ってしまうと、わたしはあるひとつの primary reasons を信じているのです。
それは、Linux や MySQL、Lucece、Hadoop、その他の Web-oriented なテクノロジーが
過去数年顕著に成長してきたのは、基本的にそれらが legal-encumbrance-free (経済的な
厄介者に煩わされなかった) であったからというものです。



Would Google have built its server infrastructure with Linux if it had been required 
to contribute all its software back? Almost certainly not. Yes, it has elected to 
contribute back to MySQL and others when it was advantageous to do so, but I think 
that Affero GPL, which translates the GPL's provisions to network-hosted software, 
would have effectively killed the utility of MySQL, Linux, and other open-source 
technologies for Web titans like Google, Facebook, and others.

仮に、Linux がソフトウェアに対する contribute を返すことを必須のものとしていたら、
Google はそのサーバーインフラストラクチャーをLinux で構築したでしょうか?その答えは、ほ
ぼ確実に「ノー」です。確かに、Gppgle はcontribute back することが有利であった(都合が良
かった)ときに、MySQLなどに対してそれを行いました。しかし GPL の provisions to 
network-hosted software 向けの変種であるAffero GPL についてわたしが考えるのは、それ 
(Affero GPL) が MySQL や Linux、 その他 Google や Facebook などの Web 界の巨人向けの
オープンソーステクノロジーのユーティリティを効率的に殺してしまうということなのです。


In short, perhaps the best thing that could have happened to open source in the past 
few years is the increasing relevance of its code due to the decreasing relevance of 
its licensing. More adoption due to fewer controls.

まとめると、過去数年のオープンソースで起こった可能性のある best thing とはおそらく
そのライセンシングの価値の現象に伴うコードの relevance (実際の価値) の増加です。
より多く採用されるようになったのは制御が少なかったからです。


Developers don't contribute to open-source projects out of force. They do so out of 
interest, desire for recognition, and other reasons. Once you take force out of the 
equation, the GPL loses its relevance except as a tool to protect against 
competition...which proprietary licensing perfected long ago.

(contirbuite することを) 強制されていては、開発者は オープンソースプロジェクトに
contribute しません。彼らが contribute するのは、面白さだとか、承認欲求だとかそのほか
の理由があるからです。一度 equation (同一化) を強制してしまえば、GPL は競争相手に対す
る防衛のための道具としてのものを除いてその価値を失ってしまいます。そして防衛ののため
の道具としては proprietray なライセンスが長い間 perfected であるのです。


For those who worry about the world being closed off behind proprietary licenses, it's 
not going to happen. The software world has been opening up, though not always at the 
pace some open-source advocates would prefer. On this point Tim O'Reilly has correctly 
argued:

世界が proprietary なライセンスで孤立させられて(close off) しまうのではないかというこ
とを心配している人たちに対しては、そんなことは起こらないと申し上げておきましょう。一部
のオープンソースを advocate する人たちの望むようなペースであることが常ではないのしても。
ソフトウェア世界はオープンになってきているのです。
この点で Tim O'Reilly は正しい主張を行っています:


    If you close things off, eventually, you lose. This is why one of my slogans is, 
    "Create more value than you capture." As long as people are doing that, I 
    don't care whether they're trying to capture some value (through proprietary licensing).

    あなたがもしものごとを独り占めしてしまったら、あなたは負けてしまう。
    これはわたしのスローガンが "Create more value than you capture."
    (得た以上の価値を作り出しなさい) であることの理由の一つです。人々がそのようにすれ
    ばするほど、わたしは彼らが何がしかの価値を (proprietary なライセンスを行使すること
    によって) capture しようとするかなどといったことを気にしなくなるでしょう。

In other words, people don't have to be forced into openness. It happens out of 
natural, selfish desires. Given the history of humanity, that's probably a more 
dependable basis for business strategy than an expectation of charitable donations 
through code contributions.

言い換えれば、ユーザーは openness を強制されてはいけないということです。
openess とは、自然に selfish な欲望から生じるものです。
Given the history of humanity,
that's probably a more dependable basis for business strategy
than an expectation of charitable donations through code contributions.



So, wither the GPL? I'm asking a sincere question to which I have hunches but no 
definitive answers. I'd love to hear your thoughts.

では、GPL は wither (衰える) したのでしょうか?
I'm asking a sincere question to which I have hunches
しかし決定的な回答は得られていません。
是非あなたの考えを聞いてみたいと思っています。

Disclosure: my company licenses its software under the GPL. This post reflects my 
personal (evolving) opinion and should not be construed as representative of the 
intentions of my employer.

This post reflects my personal (evolving) opinion and
should not be construed as representative of the intentions of my employer.

■_ 本日の巡回から

2010年05月14日

■_

・見本日?
歴史群像には5/11発売となっていて探してたりしてたんですが 偶然著者さんのページを見つけまして

新刊/関ヶ原 島津退き口 | 膏肓記
http://dangodazo.blog83.fc2.com/blog-entry-828.html

表題の拙著が近日中(18日)に発売になります。

副題:敵中突破三〇〇里
版元:学研新書
頁数:288頁
定価:790円(税込:830円)

(略)

なお、この記事の末尾に拙著の広告が掲載されております。
そのなかで、発売日の誤植があります。

5月11日発売となっておりますが、これは見本日でして、

5月18日(火)発売

が正しいです。
お間違えなきようにお願いします。
すでに「まだ書店に並んでいない、どうなってるんだ」というお叱りの問い合わせもいただきました。
申しわけありません。

  

そういうことだったのか○| ̄|_ (って「見本日」ってよくわからんけど)

■_ ヨーロッパ方面ではPascalが根強い人気を保っている

というのをずいぶん昔に聞いた覚えはあるけれども。


【CodeGear】Embarcaderoオッチャ その22【Delphi】 
488 デフォルトの名無しさん [sage] 2010/05/14(金) 18:08:06 ID: Be:
    http://slashdot.jp/submission/38693/CPHP

    英国の試験委員会の一つであるAQAは A-level(英国の高等教育における資格試験)のための
    コンピュータサイエンス科目(COMP1)からCとC#、そしてPHPを除外することを決定した.

    CやC#、PHPはより実践的な言語であるというのが除外理由だそうだ。

    講座に適していると「特に推奨」されている言語は、プログラミングおよび問題解決を学ぶために
    設計されており、かつ安定性もある Pascal/Delphiだそうだ。

    ... 誉められてんだか貶されてんだかわからねぇな 

489 デフォルトの名無しさん [sage] 2010/05/14(金) 18:18:51 ID: Be:
    VB.NETがよくてC#が駄目な理由がわからん 


【超高速】C/C++に代わる低級言語を開発したい 5 

729 デフォルトの名無しさん [sage] 2010/05/14(金) 09:02:18 ID: Be:
    低級言語かどうかはわからないが、
    マルチスレッドプログラムが安全効率的に書けるシンプル軽快な言語は欲しい 

730 デフォルトの名無しさん [sage] 2010/05/14(金) 09:07:35 ID: Be:
    >>729
    Erlang, Go-lang 

731 デフォルトの名無しさん [sage] 2010/05/14(金) 17:07:21 ID: Be:
    マルチスレッドいいねえ 

732 デフォルトの名無しさん [sage] 2010/05/14(金) 17:11:55 ID: Be:
    >>729
    ここで言ってる低級よりは上の話だろうな
    言語組込のメッセージパッシングやアクタとかだべ? 

733 デフォルトの名無しさん [sage] 2010/05/14(金) 18:49:02 ID: Be:
    良いねぇそういうのが良い。 

735 デフォルトの名無しさん [sage] 2010/05/14(金) 21:47:51 ID: Be:
    >>732
    でもそういう理論だけでは効率的な実装ができないのは歴史が実証済み。 

736 デフォルトの名無しさん [] 2010/05/14(金) 22:14:42 ID: Be:
    てかスレッドスケジュールはOSの仕事だと思うので、
    OSに仕事を任せられる言語仕様が必要だと思う。
    スレッドは頭痛いよね。ライブラリ対応しちゃうと
    言語と離れすぎるし、言語対応するとランタイムの
    問題が発生するし。 

737 デフォルトの名無しさん [sage] 2010/05/14(金) 22:27:10 ID: Be:
    実行時のスレッド管理などそもそも言語仕様に含まれるようなもんじゃない。
    言語仕様には「コンパイラへの指示(あるいはヒント)」を含めるんだよ。
    「ここは(可能であれば)別スレッドにしてね」というだけ。
    あとは環境ごとにコンパイラが合わせて最適なバイナリを吐く。
    判断するのはコンパイラの仕事。それで十分。 

738 デフォルトの名無しさん [] 2010/05/14(金) 22:32:34 ID: Be:
    >>737
    スレッドモデルによって、何をヒントとして出さなければ
    いかんのかが少し変わってくるし、シングルCPU上でスレッド
    命令の取り扱いを決めなきゃ駄目だし。
    そしてそれを検証できないと駄目。 

739 デフォルトの名無しさん [sage] 2010/05/14(金) 22:36:46 ID: Be:
    ttp://www.lesson-abc.net/products/detail.php?product_id=2587&category_id=70
    レビューに書いてあったけど ほんとに寿甘みたいだった

    ttp://www.lesson-abc.net/upload/save_image/00004396/sub5_500.jpg 

740 デフォルトの名無しさん [sage] 2010/05/14(金) 22:37:32 ID: Be:
    誤爆した



    だめだ今日はもう寝る 

741 デフォルトの名無しさん [] 2010/05/14(金) 22:47:44 ID: Be:
    マルチスレッドの扱いも新言語のスコープだよ。 

742 デフォルトの名無しさん [sage] 2010/05/14(金) 23:07:19 ID: Be:
    >>739 >>740
    スレッドの切り替えに失敗したんですねw  

743 デフォルトの名無しさん [sage] 2010/05/14(金) 23:14:18 ID: Be:
    メッセージの送信先が間違ってたんだろw 

744 デフォルトの名無しさん [sage] 2010/05/14(金) 23:17:34 ID: Be:
    標準ライブラリで用意する関数郡は全てスレッドセーフにするべきだ
    strtok()とかロクに使わない上にスレッドセーフでもない完全にいらない子
    自分が過去のしがらみと言ってるのはこういう部分だ 

■_ 本日の巡回から

■_ Contributing to Open Source (Why? and How?)

もうちょっと時間かけたいけどいいや。


Contributing to Open Source (Why? and How?) | Syntax and Semantic

Tuesday, May 4, 2010 Posted by Ahmed Saeed

Contributing to Open Source (Why? and How?)
オープンソースに貢献する(なぜ? そしてどうやって?)

Open Source products are everywhere now, probably now you're using some of them. And I 
am sure that a lot of people are appreciating the role of open source. This post is 
about giving back to the community, helping others and moving forward one of the 
applications/tools you're using as a part of your everyday life.

今、オープンソースのプロダクトは至るところにあります。おそらくあなたも今、そういったオ
ープンソースプロダクトのうちのなにかを使っていることでしょう。そして多くの人がオープン
ソースの役割を正しく理解している (appreciating)とわたしは確信しています。このポストは、
コミュニティに対して還元 (giving back) し、他人を助け、そしてあなたが  part of your 
everyday lifeとして使っているアプリケーションやツールの一つを前進させる (moving 
forward)ということについてのものです。


Why Contribute to Open Source?? (なぜオープンソースに貢献するのか?)

Sun Microsystems had a slogan "Change (Y)our world". And that summarizes 
what contributing to open source is all about. It's about making You better and making 
The World better. Let's make it clearer.

Sun Microsystems にはかつて "Change (Y)our world" というスローガンがありまし
た。そしてそれは、オープンソースに cotribuite することの summarizes になっていたのです。
つまり、自分をより良くする (making You better) と同時に世界をより良く (making The
World better)するということです。Let's make it clearer.


When you contribute to open source it helps you in some many ways, it gets you to code 
and practice and enhance your programming skills. Then gets your code reviewed, 
reviewed and then reviewed once more before it becomes a part of an official release. 
And finally it gets you to document your code.

あなたがオープンソースに contirbute するときそれはなんらかの方法であなたを助けていて、
コーディングを実践させてあなたのプログラミング技術を enhance します。
それからレビューを何度となく繰り返し受けてオフィシャルリリースの一部となり、
そうしてようやく it gets you to document your code.


Of course how much a project adds to your skills depends on the scale of the project 
and the importance of the feature you're implementing.

もちろんプロジェクトがどのくらいあなたのスキルを向上させるかは、プロジェクトの規模やあ
なたが実装しようとしている機能の重要性といったものに依存します。


On the other hand, when you contribute to open source you're giving back to the 
community, helping improve the project you're contributing to and hence making 
someone's life easier by introducing a feature or fixing a bug and your code is out 
there for people to learn for it.

その一方で、あなたが オープンソースに contribute したときにあなたはコミュニティに
還元していて、あなたが貢献しようとしているそのプロジェクトが improve するのを助け
ています。そして当然のことですが、機能を itroducing したりバグを修正したりして
あなたのコードが out there for people to learn for it となることによって
誰かの生活 (life)をより easier なものもしているのです。


How to Contribute to Open Source?? (オープンソースに貢献するには?)

First, you'll have to choose a project.
まず初めに、プロジェクトを選ぶ必要があります。

    * Start small, choose small project with a small code base that you can get familiar
      with easily and you can get the people who wrote the code easily too.

      小さいところから始めましょう。プロジェクトを把握するのが容易であり、コードを書いて
      いる人たちを把握するのも容易なコードベースが小さく小規模なプロジェクトを選びましょう。

    * Choose a project you use, so you can be able to know what it needs and have clear
      vision of what's used for, what type of users you're targeting and what's missing
      that you once needed.

      あなたが使っているもののプロジェクトを選びましょう。そうすれば何が必要であるかとか、
      何に使われているか、あなたがターゲットとしているユーザーのタイプ、何が欠けているの
      かということを知るのが可能になります。

    * Choose a project you like, and that way you'll be able to give it the time and get
      to have a reason to commit some time for developing, testing and documenting.

      あなたがそれを好きで、それに時間をかけられて開発やテストドキュメントの記述に時間を
      かけてコミットする理由があるプロジェクトを選びましょう


You can start by scanning active projects on sourceforge or github where you can find 
active small scale projects.

アクティブで小規模なプロジェクトを見つけられる場所である sourceforge や github でアクテ
ィブなプロジェクトを探すことで始められます。


Second, start communicating with the development community.

次に、開発コミュニティに対するコミュニケートを始めましょう。

    * Join the project's development mailing lists and start scanning the e-mails to 
      sense the trends and topics of interest to the community currently.

      プロジェクトのメーリングリストに参加して、コミュニティが現在注目しているトピックや
      トレンドがどういったものかメールをざっと眺めてみましょう。

    * Join the project's IRC channel and start asking the questions you have (search for
      answers on the mailing lists, wiki and blog posts before going to IRC so you get an
      answer).

      プロジェクトのIRCチャネルに参加して、あなたが抱えている疑問について質問してみましょう
      (IRC で訊ねる前にメーリングリストや wiki、blogに回答がないか探しましょう)。

    * Chekout the code and compile it.
      コードをチェックアウトしてコンパイルする。

    * Check the project's bug tracker and try fixing a bug or two before working on a 
      feature.

      プロジェクトのバグトラッカーをチェックして、何かの機能を追加したりしようとする前に
      バグを一、二個修正することを試みてください。


Finally if you find that you can work on the project CHECK FEATURES LIST START CODING.
ここまできてそのプロジェクトであなたができることを見つけ出したら、
CHECK FEATURES LIST START CODING。

All Rights Reserved. Syntax and Semantic

Designed by webdesignlessons Converted to Blogger by BloggerThemes.Net

2010年05月13日

■_

97 Things Every Programmer Should Know: Collective Wisdom from the Experts
これをちまちま読んでたりするんですが(一件2ページだから区切りがいい)、面白いです。 たぶん日本語版も出ると思うんで、出たらオススメ。

■_ 10の

解説文はまあ余裕があったら訳すということで。


10 Ways To Suck At Programming | Finalint

10 Ways To Suck At Programming

I recently inherited a web app from a dirty, nasty, stinking contractor that claimed 
to be a competent enough programmer to be left alone to get things done. Unfortunately, 
we took him at his word. Functionally, most of the web app seemed to work at first 
glance. However, once the client took over the reigns and actually started using it 
things went downhill fast. The contractor disappeared after payment (die reputation 
DIE!) and I was left to try and get things working properly and performing up to snuff 
while the client limped along with what they had been given.

I decided to document a few of the things that I found wrong along the way.  These are 
really just things that every good programmer should already know to avoid… but 
obviously some people need to be reminded (or taught).

ということであげられた十個。

#10 – Don't store settings in a configuration file

#9 – Don't store variables in [any] memory scope

#8 – Use arcane plugins

#7 – Never, ever remove functionality

#6 – Screw performance

#5 – Nest major logic/functionality in loops

#4 – Document NOTHING

#3 – Use and reuse illogical variable names

#2 – Catch all errors — and do nothing with them

#1 – Duplicate functionality

#2の、エラーを捕捉するけど何もしないで~というのはねえ。


This is by no means a comprehensive list.  On this project alone I could name 10 more 
things that could make you suck.  But I'll leave it at 10 for now.  Anyone have more 
to add?

■_ しらなかった

X はちょっとやっただけだからなあ。


めもがき:2010年5月13日分
○[i18n] なぜ X では client 同士で文字化けずに入力やコピペができるのか

X Windows(釣り針) System とはすなわち無法地帯なので、クライアント同士がどうやって通信するかは

    * クライアントはサーバにリクエストを投げる
    * サーバは配下のクライアントにブロードキャストする
    * クライアントはリプライを返す

という非常に原始的な仕組みしか決まっとりやせん。

まぁだいたいは ICCCMというものに基づいて通信しようと努力しているらしいですよ?
こいつらは Xlib の Selection APIというものをどう使うかの規約なんですが、この API 自体は

    * 送信側と受信側は、前提としてどちらも同じ文字列ベースの識別子を知っている
    * ↑の文字列を元に XInternAtom(3) でサーバで一意になる Atom*1とゆー資源(スカラ値)を作成する
    * 送信側は ↑の Atom の所有権を XSetSelectionOwner(3) で自分自身に設定し
      所有権の変更イベントを通知する
    * 被通知者はハンドラで XGetSelectionOwner(3)により ↑の Atom の所有権者を確認
      自分じゃなければ(あるいはNoneじゃなければ)自分は受信側と判断する。
    * 欲しいデータを XConvertSelection(3) で以下略

という仕組みですかね。

ぶっちゃけもっと上位のX Toolkitの XtOwnSelection(3) なんか使う方が楽です。
今時だと Xlib/Xt 使うのもめんどくさいので → Motif 使うのもめんどくさいので → 以下略

Selection API ではデータのやりとりをする場合、事前にネゴシエーションが必要です。
行儀悪いアプリも多いのでアレですが、真面目にやると

    * 送信側は受信側がどんな encoding を欲しがってるか訊ねる(XA_TARGETS)
    * 受信側は XA_TARGETS に対して、自分がサポートする encoding の一覧を優先順位つけて返す
      (XA_ATOM)
    * 送信側は XA_ATOM で返された一覧と自分自身がサポートするものをつきあわせ、最もふさわしい
      encoding を選択する
    * 選ばれし encoding の形式にデータを変換し その encoding 情報とともに変換済データを返す
    * 受信側は encoding 情報を元に送られてきたデータを煮るなり焼くなりする(文字列なら現在の
      locale の文字コードに変換とか)

という感じですかね。

(略)

そいや、Mac OSのコピペの処理はぜんぜん知らんな(classic のも OS X のも)。

■_ new jargon

みずしまさんが Twitter / Kota Mizushima: "Stringly Typed"って言い回しがうまい ... こうコメントした "Stringly Typed" 含め、いろいろ挙げられています。 んで、 New programming jargon you coined? - Stack Overflow New programming jargon : programming どちらもいいペースで伸びてます。 で、元?ページから。

New Programming Jargon — Global Nerdy

Global Nerdy

Tech Evangelist Joey deVilla on software development, tech news and other nerdy stuff

New Programming Jargon

by Joey deVilla on May 9, 2010

Every field comes up with its own jargon, and oftentimes subgroups within a field come 
up with their own specific words or phrases (those of you familiar with Microsoft 
Canada's Developer and Platform Evangelism Team know that we have our own term for
“broken”, named after one of our teammates who is notorious for killing all sorts of 
tech gear).

A question recently posted on Stack Overflow asked for people to submit programming 
terms that they or their team have coined and have come into regular use in their own 
circles. I took a number of the submissions and compiled them into the alphabetically 
ordered list below for your education and entertainment.

I took a number of the submissions and compiled them into the alphabetically ordered list
below for your education and entertainment.

Have you come up with your own jargon? Tell us in the comments!

全部はちょっと間に合わなかったので、適当にいくつか。


Bicrement (バイクリメント)

Adding 2 to a variable.
変数に2を加えること。


Bloombug (ブルームバグ)

A bug that accidentally generates money.
[Joey's note: I have never written one of these.]

たまたま金を生み出すバグのこと。



Bugfoot (バグフット)

A bug that isn't reproducible and has been sighted by only one person.
See Loch Ness onster Bug.

再現不能で、ただ一人の人物によって観測されたバグのこと。
Loch Ness onster Bug を参照せよ。


Configuration Programming / Programmer

Someone that says they are a programmer but only knows how to hack at configuration 
files of some other pieces of software configuration to make them do what they want.

プログラマーであると自称しているが、他人の作ったソフトウェアに自分が望むような動作をさ
せるのにコンフィグレーションファイルをハックする方法しか知らない人物。


Counterbug (カウンターバグ)

A defensive move useful for code reviews. If someone reviewing your code presents you 
with a bug that's your fault, you counter with a counterbug: a bug caused by the 
reviewer.

コードレビューに対して有用な防衛行動 (defensive move)。誰かがあなたのコードをレビュー
してあなたのミス (fault) によるバグを指摘したときにそのお返しにあなたがカウンターバグ
をつき返す。レビュアーによって引き起こされたバグ。


Fear-Driven Development (恐怖駆動開発)

When project management adds more pressure, such as by firing a member of the team.

プロジェクトマネージメントで、チームのメンバーに対してクビにするぞといったように
より重圧をかけるときのこと。



Hindenbug (ヒンデンバグ)

A catastrophic data-destroying bug. Oh, the humanity!

壊滅的なデータ破壊を起こすバグ。Oh, the humanity!


Hocus Focus Problem (Hocus Focus 問題)

Unexpected behavior caused by changes in focus, or incorrect setting of focus. Could 
also be used to describe an app stealing your focus.

フォーカスの変更、もしくは正しくないフォーカスの設定によって引き起こされる予期していな
かった振る舞い。ユーザーのフォーカスを盗み取るアプリケーションの説明のためにも使われる。


Hot Potato / Hot Potatoes

A fun way to pronounce http:// and https://.


IRQed

Annoyed by interruptions. Pronounced like and has a similar meaning to “irked”.

割り込みによる無視。


Jimmy

"Opie" from "Family Guy"

A generalized name for the clueless/new developer. The submitter at Stack Overflow writes:

clueless だったり新顔であるような開発者の一般化された名前。
Stack Overflow の submitter 曰く:


    We found as we were developing a framework component that required minimal 
    knowledge of how it worked for the other developers. We would always phrase our 
    questions as: "What if Jimmy forgets to update the attribute?"

    わたしたちは、ほかの開発者たちに使ってもらうときに最小限の知識しか要求されない
    ようなフレームワークのコンポーネントを開発しているときに、いつでも
    "もし Jimmy がこのアトリビュートの更新を忘れてしまったら?"
    のようなフレーズで質問していることに気がつきました。

    This led to the term "Jimmy-proof" when referring to well designed 
    framework code.

    この言葉は well desinged なフレームワークのコードを参照するときの  "Jimmy-proof"
    という用語に関係しています。


It's probably best not to use this term around IronRuby developer Jimmy Schementi.

この用語を、IronRuby の開発者である Jimmy Schementi のいるところでは使わない方が良いでしょう。



Loch Ness Monster Bug (ネッシーバグ)

A bug that isn't reproducible and has been sighted by only one person. See Bugfoot.

再現不能で、ただ一人の人物によって観測されたバグのこと。Bugfoot を参照せよ。


Megamoth

MEGA MOnolithic meTHod. Usually stretches over two screens in height and often 
contained inside a God Object (an object that knows or does too much).

MEGA MOnolithic meTHod の頭字語。
Usually stretches over two screens in height
and often contained inside a God Object (an object that knows or does too much).



.NET Sandwich (.NETサンドイッチ)

When .NET code called native code which calls other .NET code and makes the poorly 
designed application crash.

.NET コードから、別の.NET コードを呼び出すネイティブコードを呼び出すと、
お粗末な設計のアプリケーションをクラッシュさせてしまう。


n-gleton (n-グルトン)

A class that only allows a fixed number of instances of itself.

それ自身のインスタンスの生成をある固定された数だけしか許さないクラス。


NOPping

Not napping, but simply zoning out. Comes from the assembly language instruction NOP, 
for No OPeration, which does nothing.

napping (昼寝) ではなく、単なる zoning out(集中力の欠如)。
アセンブリ言語の何もしない命令 (No OPeration) である NOP 命令に由来する。



Pokemon Exception Handling (ポケモン式例外処理)

For when you just gotta catch 'em all!



Refuctoring (リファクタリング)

The process of taking a well-designed piece of code and, through a series of small, 
reversible changes, making it completely unmaintainable by anyone except yourself. 
It's job security!

コードの well-designed な部分を取り出してそれを一連の小さなものにし、reversible な変更
を加えていくことで完全にあなた以外には誰もメンテナンスできないようにするプロセスのこと。
つまりジョブセキュリティだ!


The Sheath

The isolating interface between your team's (good) code, and the brain-dead code 
contributed by some other group. The sheath prevents horrible things (badly named 
constants, incorrect types, etc.) in their code from infecting your code.

あなたの所属しているチームの (good な)コードと、
別のグループによって contribute  された
brain-dead なコードとの間のインターフェースの isolating。


[Joey's note: I've heard the term “shim” used for this sort of construct. I've used 
the term “transmogrifier” for this sort of thing.]


Shrug Report (Shrug レポート)

A bug report with no error message or “how to reproduce” steps and only a vague 
description of the problem. Usually contains the phrase "doesn't work."

エラーメッセージも再現手順もなく、ただ問題についての冗長な説明があるだけのバグレポート。
通常、"doesn't work." (うまく動かない)というフレーズが含まれる。


Smug Report (Smug レポート)

A bug report submitted by a user who thinks he knows a lot more about the system's 
design than he really does. Filled with irrelevant technical details and one or more 
suggestions (always wrong) about what he thinks is causing the problem and how we 
should fix it.

現実よりも自分はそのシステムの設計についてもっとよく熟知していると思い込んでいるユーザ
ーによって submit されたバグレポート。一つ又は複数の、彼の考える原因とその修正方法につ
いての(常に間違っている)提案で埋め尽くされている。


Stringly-Typed (文字列的型付け)

i can has string

A riff on strongly-typed. Used to describe an implementation that needlessly relies on 
strings when programmer- and refactor-friendly options are available.

強い型付けの riff。プログラマーやリファクターにフレンドリーなオプションが利用可能なと
きに必要もないのに文字列に依存している実装の説明に使われる。

Examples:
例:

    * Method parameters that take strings when other more appropriate types should be used
      他の、もっと appropriate な型を使うべきときに文字列を受け取るメソッドパラメーター

    * On the occasion that a string is required in a method call (e.g. network service), the
      string is then passed and used throughout the rest of the call graph without first
      converting it to a more suitable internal representation (e.g. parse it and create an
      enum, then you have strong typing throughout the rest of your codebase)

      メソッド呼び出し時に文字列が必要な状況 (たとえばネットワークサービス) で文字列が
      渡されたあと、残りのコールグラフを通じて使うために最初に もっと suitable な内部
      表現に変換するということをしない (たとえば文字列を解析して enum を生成し、より
      強い型付けをコードベースの残りで行う)。

    * Message passing without using typed messages etc.
      型付けされたメッセージなどを使わないメッセージパッシング

Excessively stringly typed code is usually a pain to understand and detonates at 
runtime with errors that the compiler would normally find.

過度に文字列的型付けをしているコードは通常、理解するのが苦痛であり、普通なら(文字列的
型付けをしていなければ)コンパイラーが見つけられるであろうエラーを伴って実行時に爆発す
る。


Yoda Conditions (ヨーダコンディション)

Yoda: "if (5 == count)"

The act of using

if (constant == variable)

instead of

if (variable == constant)

It's like saying “If blue is the sky”.

This article also appears in Canadian Developer Connection.

■_本日の巡回から

2010年05月12日

■_

もうなにがなにやら。

■_ 本日の巡回kら

■_ 68000 かあ

いろいろ使いづらいところもあるけど好きな石なんだよなあ。


Who misses 68000? : programming

Anyone out there with fond memories of the Motorola 68000? :-)


68K had a very clean architecture. Perhaps too many addressing modes, but 32 bit 
registers and 16 of them to boot. WAY ahead of its time. But as often happens, better 
doesn't imply dominance. Which brings me to evolution... JK


see also: sparc


The problem with Sparc is Sun created an x86 to compete with the PC and it turned out 
to be faster than their Sparcs. If you are going to make a high end chip you 
absolutely must make it faster than the budget range.


I'm not much of a programmer, but I taught myself to program in 68000 assembly in the 
mid 90s. And honest to god I enjoy it more than any other language.

It's been a looong time since I really programmed, so five days ago I thought I'd try 
to get back into programming and gave X86 assembly a go.

Oh my god. Were they purposefully trying to design the x86 to be horrible to programme?! 
It's horrendous. How did this processor ever catch on?!

Sorry to slip into x86 bashing. But yeah, I love the 68000. I had a great time writing 
for it on my Atari ST in the 90s. I've probably got a few disks worth of stuff I wrote 
for it buried somewhere.


the last of the processors made for humans not compilers


Intel caught on because it was easier to improve it's efficiency and performance than 
the 68000 (on a hardware level). The 68000 was slow to advance, probably due to its 
complex instruction set making it difficult to pipeline instructions.


I think the probable reason the x86 caught on, is for historic reasons much more than 
any performance reason.

It was used in PCs, PCs became popular and took the x86 with it.

The 68000 wasn't too bad, but a later version (68020?) added memory to memory 
instructions. That is a real pain.

Also, Motorola wasn't really dedicated to maintaining backwards compatibility. They 
put a lot of resources into the 88k (a RISC machine), then jumped onto the PowerPC 
bandwagon.


Heh, I am still using M68k architecture, it is not dead.


I was not old enough to remember the 68K at the time, but I've heard much about it, 
but what is it being used for now?


Loved it on the Amiga!!!!

For me, the Motorola 68000 is the best ever CPU:

    * it powered the best arcade machines and computers.
    * it was very nice to program in assembly.
    * it has the coolest CPU name.

Most super arcade games from the 80s and 90s were done on the Motorola 68000: Outrun, 
R-Type, Powerdrift, Space Harrier, Galaxy Force, etc.

The best computers of the 80s (in the West) used the Motorola 68000: the Mac and the 
Amiga.

During the late 80s and early 90s, we drooled over the 68000-based computers used by 
the Japanese. I desperately wanted to get my hands on a Sharp X68000 which had the 
best coin-op conversions, but it was available only in Japan.
Good to see some nice responses....

The Amiga was my first exposure to 68000. I remember it once being described as a 68k 
and 3 lovely ladies, Denise (Copper, Sprites, Bitmaps), Paula (Audio) and Fat Agnus 
(Blitter).

なんか68000だけじゃなくて、68020やらの後継も含めて話している人がいるなあ (削っちゃったけど、6809に言及している人も)。 68020とか68030だと、アドレッシングモードが増えたりしたんだけど それがかえってクロック向上の足かせになっちゃったんだよねえ。 486 あたりからガンガンクロックが速くなっていったのに、 68040 とか 68050 とか(これは世に出なかった)は…

the last of the processors made for humans not compilers なるほどねえw

88000 はあれもなかなか「面白い」MPU だったなあ。 全然流行らなかったけど。

■_


関数型プログラミング言語Haskell Part12 
108 デフォルトの名無しさん [sage] 2010/05/11(火) 16:42:40 ID: Be:
    関数プログラミングの楽しみ|Ohmsha
    http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?&ISBN=978-4-274-06805-8

    7年前の本か
    使い物になんのかな? 

109 デフォルトの名無しさん [sage] 2010/05/11(火) 19:20:39 ID: Be:
    >>108
    目次に見覚えがあると思ったら、これの和訳か。
    「the fun of programming」

    いろんな事に関心を持って何とか応用できないかと常に考えてる人にとっては、
    7年前のものとか関係なくしっかり使い物になる本だよ。
    「Real World Haskell」よりももう少し抽象度の高い実践という感じ。
    各章でひとつの応用トピックを取り上げ、その中で色々なテクニックや方法論を学べる。
    トピックの幅がかなり広いから、章のタイトルだけ見て
    興味あるトピックだけを拾い読みするような人は、読める所が少ないかも。

    また、「Real World Haskell」以上に入門書から遠い本だとは思った。
    中置データ構築子などを含む基本文法は当然として、
    式の置き換えによる評価の追跡とか、構造的帰納法による解析(証明)とか、
    その手の基本テクニックも慣れてること前提っぽい。 

110 デフォルトの名無しさん [sage] 2010/05/11(火) 21:37:28 ID: Be:
    Real World Haskell買って読んでるけど、いちいち話が長い。

    そう思っていた時にふと本屋で「プログラミングHaskell」を手にしてあっさりしている事が新鮮だったよ。
    実用(利用)例は文字通りRWHがいろいろあるので、両者を手にして往復しながら理解を進めていくのが正解かもね 

原著を買ってたような(そして放置しっぱなしな)気がする…

■_

ダメだ挫けた。寝る。

2010年05月11日

■_

通勤途中にある、ちょっと大きめ(床面積でいうとどれくらいなんだろ) の書店で「実用 Common Lisp」が平積みになってたのを見つけてちとびっくり(三冊くらいだけど)。 オライリーのは置かれないけど、意外にいいところが入ってくるんだよなあと感心。

■_ GNU grep

コードのほうはぜんぜん見ていないという(苦笑)

Re: [PATCH 1/2] dfa: convert to wide character line-by-line

Re: [PATCH 1/2] dfa: convert to wide character line-by-line
From: 	Jim Meyering
Subject: 	Re: [PATCH 1/2] dfa: convert to wide character line-by-line
Date: 	Wed, 05 May 2010 09:56:34 +0200

Paolo Bonzini wrote:
> This provides a nice speedup for -m in general, but especially
> it avoids quadratic complexity in case we have to go to glibc.
>
> * NEWS: Document change.
> * src/dfa.c (prepare_wc_buf): Extract out of dfaexec.  Convert
> only up to the next newline.
> (dfaexec): Exit multibyte processing loop if past buf_end.
> Call prepare_wc_buf again after processing a newline.

Nice indeed, but it induces an abort from glibc with some inputs:
This is on F13:

    $ export LC_ALL=fr_FR.UTF-8
    $ printf '\xc3\n' > in; src/grep '[Ã]' in
    *** buffer overflow detected ***: src/grep terminated
    ======= Backtrace: =======
    /lib64/libc.so.6(__fortify_fail+0x37)[0x33920fedb7]
    /lib64/libc.so.6[0x33920fcd30]
    /lib64/libc.so.6(__strncpy_chk+0x17b)[0x33920fbfeb]
    ...
    zsh: abort (core dumped)  src/grep '[Ã]' in

> +/* Initialize mblen_buf and inputwcs with data from the next line.  */
> +
> +static void
> +prepare_wc_buf (const char *begin, const char *end)
> +{
> +  unsigned char eol = eolbyte;
> +  size_t remain_bytes, i;

Here's the quick summary:

  "remain_bytes" must not be of type "size_t".
  Please leave it as "int", like it was in the code you moved.

That solves the problem.  Details, as I debugged it...

> +  buf_begin = (unsigned char *) begin;
> +
> +  remain_bytes = 0;
> +  for (i = 0; i < end - begin + 1; i++)
> +    {
> +      if (remain_bytes == 0)
> +        {
> +          remain_bytes
> +            = mbrtowc(inputwcs + i, begin + i, end - begin - i + 1, &mbs);

The trouble is here, in this moved code.

Here's what happens: with invalid-multibyte input, mbrtowc returns
(size_t)-1 or (size_t)-2, which makes us take the inner "else" branch,
and that code fails to define inputwcs[i].  Later, that undefined byte,
inputwcs[0], is referenced by this code,

#define SKIP_REMAINS_MB_IF_INITIAL_STATE(s, p)          \
  if (s == 0)                                           \
    {                                                   \
      while (inputwcs[p - buf_begin] == 0               \
            && mblen_buf[p - buf_begin] > 0             \
            && (unsigned char const *) p < buf_end)     \
        ++p;                                            \

But that's only a relatively harmless read-uninitialized.

> +          if (remain_bytes < 1
> +              || (remain_bytes == 1 && inputwcs[i] == (wchar_t)begin[i]))
> +            {
> +              remain_bytes = 0;
> +              inputwcs[i] = (wchar_t)begin[i];
> +              mblen_buf[i] = 0;
> +              if (begin[i] == eol)
> +                break;
> +            }
> +          else
> +            {
> +              mblen_buf[i] = remain_bytes;
> +              remain_bytes--;
> +            }
> +        }
> +      else
> +        {
> +          mblen_buf[i] = remain_bytes;
> +          inputwcs[i] = 0;
> +          remain_bytes--;
> +        }

Later the real problem arises because we've stored that huge unsigned
value, (size_t)-1, into mblen_buf[0].

In match_mb_charset, this happens:

    match_len = (mblen_buf[idx] == 0)? 1 : mblen_buf[idx];
    ...
    strncpy(buffer, (char const *) buf_begin + idx, match_len);
    buffer[match_len] = '\0';

with idx==0, which leads to match_len = -858993460.
That triggers an abort in the fortify-augmented strncpy,
or sometimes a segfault on the next line.

----------------------------------------------------------

The real problem is that in moving that block of code,
you also changed it:

  > -  int remain_bytes, i;
  > +  size_t remain_bytes, i;

While it's nice to make "i" be unsigned, remain_bytes
must remain signed.

The moral of the story:

  When moving code, minimize ancillary/cleanup changes as much as possible.
  Put them in separate patches where it's much easier to see what's changing.

Another bit of advice that might have helped avoid this:

  Do not group multiple variable declarations on the same line.


あれ~? なんか見覚えのあるコードが(^^;

スピードの計測も含めて調べたいとこだけどねえ。

■_ 今日のネタ書き込み


C++相談室 part81 
22 デフォルトの名無しさん [sage] 2010/05/09(日) 23:13:14 ID: Be:
    ideoneっての、見るたびに登場人物の死にまくるアニメが思い浮かぶんだ 

23 デフォルトの名無しさん [sage] 2010/05/10(月) 00:08:14 ID: Be:
    イデオンのことかあああ 

24 デフォルトの名無しさん [sage] 2010/05/10(月) 00:17:41 ID: Be:
    トラウマものの名作だったな 

ほかで見たような覚えもあるけど。,

■_ 本日の巡回から

■_ 新語辞典

New Programming Jargon — Global Nerdy

Global Nerdy

Tech Evangelist Joey deVilla on software development, tech news and other nerdy stuff

New Programming Jargon

by Joey deVilla on May 9, 2010

Every field comes up with its own jargon, and oftentimes subgroups within a field come 
up with their own specific words or phrases (those of you familiar with Microsoft 
Canada's Developer and Platform Evangelism Team know that we have our own term for
“broken”, named after one of our teammates who is notorious for killing all sorts of 
tech gear).

A question recently posted on Stack Overflow asked for people to submit programming 
terms that they or their team have coined and have come into regular use in their own 
circles. I took a number of the submissions and compiled them into the alphabetically 
ordered list below for your education and entertainment.

Have you come up with your own jargon? Tell us in the comments!

このページにあるものはあまり数はありませんが、 結構面白いものもあります。 reddit や Stack overflow でも結構盛り上がったようで。 New programming jargon you coined? - Stack Overflow New programming jargon : programming

■_

gawk 3.1.8 がリリースされたけど余裕ナッシング

Gawk 3.1.8 released
http://lists.nongnu.org/archive/html/bug-gnu-utils/2010-05/msg00012.html

Changes from 3.1.7 to 3.1.8
---------------------------
1. The zero flag no longer applies to %c and %s; apparently the standards
   changed at some point.

2. Updated to latest infrastructure: Autoconf 2.65, Automake 1.11.1,
   libtool 2.2.6b, Bison 2.4.2.

3. Failure to open a socket is no longer a fatal error.

4. dfa.h and dfa.c are now more-or-less in sync with GNU grep, for the first
   time in many years.

5. Gawk no longer includes its own copy of libsigsegv but it will use it if
   installed on the build system. The --disable-libsigsegv configure option
   is now gone.

6. The ' flag (%'d) is now just ignored on systems that can't support it.

7. Lots of bug fixes, see the ChangeLog.
  

一つ前へ 2010年5月(上旬)
一つ後へ 2010年5月(下旬)

ホームへ


Copyright (C) 2010 KIMURA Koichi (木村浩一)
この文書の無断転載はご遠慮ください(リンクはご自由にどうぞ)。

メールの宛先はこちらkbk AT kt DOT rim DOT or DOT jp