![Mozilla Mozilla](https://srad.jp/static/topics/mozilla_64.png)
東大電子情報工学科の実験課題としてFirefoxへのコミットが行われる 39
ストーリー by hylom
よい授業である 部門より
よい授業である 部門より
東京大学工学部電子情報工学科の実験の授業では、オープンソースソフトウェアのソースコードを分析したりコードへの変更を行う「大規模ソフトウェアを手探る」というテーマがあるそうだ。この授業でFirefoxのJavaScriptエンジンであるSpiderMonkeyをテーマに選び、実際にパッチを作成してプロジェクトに送りソースツリーに取り込んでもらう、という流れを行った学生がその詳細をブログで実験レポート代わりに公開している(siquare weblog)。
詳しくはこのブログを見て欲しいが、実験の内容はECMAScriptで提案されている「Pipeline Operator」をSpiderMonkeyに実装する、というもの。授業のTAにSpiderMonkeyのコミッターがいたことや、提案されているものにすでに仕様が付いていたことからこのテーマを選んだとのこと。また、作成したパッチは無事SpiderMonkeyのソースコードにマージされている。
英語のフォローはどうなんでしょう (スコア:2, 興味深い)
199x年代ころ、ハ〇〇大が作っているGPLソフトウェアにたぶんにお世話になっておりました。
2000年代ころ、そのソフトにバグを発見しました。
もっとも、誰もほとんど使ってないオプションでしたが、わたしは頻繁に使っていたので
一生懸命バグの原因を探しました。見つけました!MLに投稿しました。
「変なエラー見つけた!ここをこう変えれば、意図した動作ができるわ!」
一連の報告、一生けんめい自分で和英・英和辞典引いて投稿しました「いつも使ってるよ、ありがとう」のメッセージ付きで!
無視されました・・・・
まあ、私の辞典翻訳の英語が変だったのかもしれませんがおすし
数カ月後、非英語圏(だがヨーロッパ)から「このオプションおかしいよ」と投稿がありました。
「それ、もう俺が指摘したオプションなんだけど」ってするーしていたら、開発者が
「やばい、このオプション無視して。やばいやばいやばい」ってMLに投稿してきたので
「あの、おれその半年前くらいに、問題解決のぱっち送ったんやけど」って、MLの投稿番号付きで。
無視されました・・・・
数カ月後、「メジャーアップデートしたよ、お前の指摘入れたからな!(なんかAAっぽい。意図不明」って私的メールが開発者から届きました。
リンクも引用もなしです。パッケージのUpdate(ReadMEその他)には私の寄与はまったく記載されていませんでした。
え、そのソフトは今でも使ってますけど、もう二度とコード修正をしたいとは思いません。
コードエラーを見つけても二度と献上しませんね。
もっとも、最初の私の英語がまずくなかったら違かったのかもしれませんが・
教訓として、みんな、ちょこっと変な日本語みてもまあ寛大に読んであげなってことだ。
すらどの記事読んでいる忍耐強い人には言うまでもないかもしれんが
Re:英語のフォローはどうなんでしょう (スコア:2, すばらしい洞察)
パッチを投げたらあとは知らんふりぐらいでいいと思うよ。
バグ潰すとか便利なオプションをつけるのは第一に自分のためだからね。
誰も使っていないオプションという話だけど、誰も困っていないバグが無視されるのは、そりゃ当然の話。
中小のプロジェクトだと管理者も第一に自分の為に作ってるわけだから。
英語圏の人間と付き合いはそれなりにあるけど、英語喋る人は、ほぼ全員がブロークンな英語に寛容だと思うけどね。
日本語と違って、英語が母国語じゃない人の方が多い言語だから。
あっちじゃ変な日本語喋るガイジンみたいな存在は英語圏じゃありふれた存在すぎて、とてもテレビ番組にはならんと思う。
英語が変だから無視されたとか、へそ曲がりな態度は君の世界を狭めると思うよ。
他のプロジェクトにどんどん変な英語でパッチ投げつけてやりゃいい。
# このバグを消したければ、俺の変な英語を頑張って解読してみろ!ワハハハ!
Re: (スコア:0)
スラングやミーム的な語を使っていい場とそうでない場の見極めをちゃんとつけることが出来ていれば多少のBrokenは「sorry my bad english ...」でたいてい許してもらえるはず。
Re:英語のフォローはどうなんでしょう (スコア:1)
いくつかのOSSに、バグ修正などのパッチを送ったことがありますが、「どういう問題が起きているのか」「それをどう修正したのか」についてを、とにかく簡潔に書けば、だいたいいけると思ってます。変に難しく書かないほうがいいんじゃないかなぁ。
私がパッチを送る最大の目的は「バージョンアップするたびに自分でパッチを当てるのが面倒」だからですね。だから、パッチが採用されないなら、自前で毎回パッチを当てるだけのことですし、問題が解消するなら、別の人のパッチが採用されても、全然気になりません。いつもパッチに関しては著作権の一切を放棄してますし、謝辞も要らないです。
とはいえ、nvi-m17nに、16年前に混入したバグについて、13年前にitojunさんに報告したら、私の送ったパッチは採用されず、itojunさん自身の方法で修正された、ということがあったのですが、じつはその修正では問題が完全に解消されない中途半端な状態になっちゃってて、今年になってその問題を修正するパッチがFreeBSDのportsに投げられた [srad.jp]なんてことになると、ちょっともの悲しいですね。しかも、そのパッチ内容は、itojunさんが採用しなかった(私が送ったのと同じ)方法の修正だったし…
Re: (スコア:0)
あなたは問題を解決したかったの?
それとも自分を認めてほしかったの?
Re: (スコア:0)
どっちの欲求もあって然るべき
じゃない?
Re: (スコア:0)
こりゃあよっぽど、寛大で済むレベルを超えるとても酷い英語だったんだろう…という感想しかない
Re: (スコア:0)
開発者の輪の中に食い込むのは結構難しい、というより運にも左右されるようですな。
GNUの開発に関わるようになったきっかけ
http://www.intellilink.co.jp/article/column/oss-gnu01.html [intellilink.co.jp]
その結果、マルチバイト環境においてのみ行われるキャッシュ処理において、その後に使用されない無駄なキャッシュが多数生成されることがあることを突き止めました。そこで、早速パッチ(修正コード)を作成してGNU grepプ
Re: (スコア:0)
僕は昔、とあるソフトに"please support XXXX"と一行だけ書いてパッチを送ったことがあります。
ちゃんと取り込まれたし、当時の僕のメールアドレスとかも今も記載されています。
special thanks xxxxみたいな感じで。
今でもギリギリ使えるソフトです。
# 相手は超名門大学のメアドでドキドキしました。
非同期なんですね (スコア:2)
コードを観たら、pipeline というだけあって非同期なところが普通の関数呼び出しと違うんですね。
calleeで実装しているようですが、これ自体を操作できる構文があると楽しげ(Promiseパターンって事になるのか)。
情報とつく学科はいくつくらいあるんですかね。 (スコア:0)
情報とつく学科はいくつくらいあるんですかね。
Re: (スコア:0)
180位? [wikipedia.org]でしょうか?
羨ましい (スコア:0)
素晴らしいな……俺も受けたいわ、その授業。
コミッタが側に居てわからんところ教えてくれるとか、もう最高じゃないか。
こういう授業が当たり前になったら、日本のITはもっと元気になる気がする。
Re: (スコア:0)
セキュリティキャンプにでも応募してみては?
Re: (スコア:0)
Re: (スコア:0)
PHPが好きならEtsy目指したらどうだ
「一人目の開発者」が教えてくれるぞ
# と煽ってみる。
PHPの生みの親,ラスマス・ラードフ氏インタビュー
http://gihyo.jp/news/report/2015/12/1401 [gihyo.jp]
ラスマス:そうですね。あと,私がいつもその辺にいて相談に乗るというだけでも開発者たちの支えにはなりますし。それ自体がね――特に若い開発者たちにとっては,PHPについて分からないことがあったら,すぐにIRCで私に聞けるという,その事実自体が楽しいみたいなんですよ。
現役コーダーに質問。 (スコア:0)
1 |> print
print(1)
「|>」なんて今まで書いたり見たりしたコードにないんですが、使うんですか?
使うなら何言語ですか?
class::expressionのように::はありますが。
あとprint(1)ではなくてprint('1');では?
Re: (スコア:0)
F#に始まり、Haskellなどでも採用されていますね。
記号は | だけになりますが方向性が似ているパイプ(ライン)は今も多数のOSのシェルスクリプト上で現役だと思いますし。
1 と '1' についてはそれを質問するほど基礎的な素養がない人に説明するには長くなりますし、
その目的でこの場所を使うことは不適切だと思いますので、ご自分でECMAScriptの入門書なりを買って勉強してください。
Re: (スコア:0)
ふ〜ん ocamlじゃないんだ
Re: (スコア:0)
In F# (|>) is important because of the left-to-right typechecking. For example:
List.map (fun x -> x.Value) xs
generally won't typecheck, because even if the type of xs is known, the type of the argument x to the lambda isn't known at the time the typechecker sees it, so it doesn't know how to resolve x.Value.
Re: (スコア:0)
パイプライン演算子は、F#, Elixir, Rなどにあります。
言語によるとしか言えませんが、概ね、print(1)とprint('1')はどちらもありえて、意味が異なるというのが多いのではないかと思います。
JavaScript例でいえば、
print('1')に等価なのは '1' |> print になるでしょう。
Re: (スコア:0)
あー、やっぱり「F#, Elixir, R」系なのですね。普段のC業務では使わないや。
あと1は数字で、'1'は文字列だと個人的に思ってます。
Re: (スコア:0)
C言語だと、'1'だと文字列ではなく、文字では?
文字列は"1"。
わりかしシングルとダブルで意味合いが違ったような。
もう10年近く前の知識で言ってますが。
Re: (スコア:0)
print(1+1)とprint("1+1")の説明はちょっとね…
JavaScript例でいえば、printを自分で定義しないで実行すると多くのブラウザでwindow.printが呼び出されます。ちなみにこの関数は引数を無視します。なんでJavaScriptの場合print(1+1)とprint("1+1")は等価っつーかprint()ととうk…
#言語によるとしか言えませんが"1"と'1'はどちらもありえて、意味が異なるというのが少なくないのではないかと思います。しかし意味が同じという場合も少なくないので注意が必要であると。
Re: (スコア:0)
まぁ言語によりますが、JSなら自分だとこう書きますね。JSにprint関数があることを知らなかった。C系でprint/printfを使うけど。
document.write('1');
Re: (スコア:0)
JSにはたいていあるけどECMAScriptの規格上存在しないのでそんな関数はねぇとかいわれるかもしれない。あとブラウザというかエンジンによって挙動が違うかもしれない。大抵はウェブページをプリントするプロンプトを表示する関数になっているようだ。ということはウェブブラウザ以外だと意味がない……?
print(1+1),print("1+1"),print()を、俺は見下さん!
すべて平等に価値がない!
Re:現役コーダーに質問。 (スコア:2)
オフトピ気味なので突っ込むのも野暮なのでしょうが、
これはDOMの実装で、Javascriptの実装ではないです。
これもDOMの実装で、Javascriptの実装ではないです。
Javascriptがブラウザ上で実行される際、グローバル変数/関数をwindowクラスのメンバとして実行する、という仕様があります。そのせいで混乱を招いているのだと思います。
リンク先のブログのprint()は、window.print()のことではないです。コンソール系だと標準出力を吐く実装として、print()そのものがあるんです。
Re: (スコア:0)
> JavaScriptの場合print(1+1)とprint("1+1")は等価
ちょっとFirefoxのDeveloperTools開いて試してみたけど・・・
print('1+1')
"1+1"
print(1+1)
"2"
になったよ
Re: (スコア:0)
ちなみに Google Chromeだと印刷プレビューになる
これがWikipediaだと (スコア:0)
たまにどっかの学校がみんなで修正しましょうみたいなのやって、
著作権侵害の山だくそったれ!広域ブロックと削除手伝ってくれ!
みたいな悲鳴が井戸端に上がってたりするのに、分野が変われば上手く回るのだな。
Re:これがWikipediaだと (スコア:2, すばらしい洞察)
分野の問題では無く、適切な指導をできる存在がいるかどうかでは無いですかね。
Re: (スコア:0)
13万行パッチの件 [linux.srad.jp]とかありましたもんねぇ。
Re: (スコア:0)
みんなで、じゃないから上手くいったんじゃないかな。
授業に最適 (スコア:0, 参考になる)
学業では最先端ではなく枯れたものを扱うので
敢て死に逝くFirefoxを選んだのは慧眼です
研究と割り切った授業なら
デファクトスタンダードであっても
学生が学び終わった時点で役に立たない知識になるくらい
変化が早いGoogle Chromeは適切な選択ではないですからね
そういうのは学業とは別に行わないと
# その無駄を無駄と理解し歩み始めることが卒業
Re: (スコア:0)
Firefox だろうが Chrome だろうが,授業での経験は無駄にはならない.
簡単に無駄だと決めつけて,自分のためになることを見つける努力を行えない人物は成長が遅い.
Re:授業に最適 (スコア:1)
ok
君は卒業だ
Re: (スコア:0)
マジかよApple最低だな
Safari使うのやめます
Re: (スコア:0)
というか、Googleが仕切ってるオープンソースプロジェクトって実際の所、(外部からの参加が)オープンなんですかね?
Androidが閉鎖的なのは有名ですけど。