はてなキーワード: HELLO WORLDとは
つらいので愚痴らせて欲しい。
愚痴ればたぶん元気になるらさ。。。
毎日毎日残業。この半年間、
平日は1日に5時間も寝れない生活をしている。
自分は毎日定時に帰るくせに。
残業しましたが、何か???
ぼくは技術とか物作りとかをほざく、大手IT企業に入社して1年になる。
ものづくりねえ、でも実際はこの現状。プロジェクトマネジメントと
称して下請けをいじめるだけ。自分のミスを、下請けに無理言ってやらせるだけ。
ねえ、会社の先輩さ。普段偉そうにして下請けに威張っているけどさ、
あなた、自分一人じゃHello worldも作れないよね?
今日も下請けからJUnitも知らないって小馬鹿にされていたけど、
会社をなくして、あなた一人だけになったとき何が出来るのさ?
よくわからない数式とか振り回して、
もっともらしいこと言って「分析」とか称したってさ、
それが技術なの???
本当にそれが技術なの?
もしプログラムを絵に例えるなら、道具があっても描けない、じゃないと思うんだ。
デッサン力なんかでもない。
共通点として言えるなら、絵は自由な表現の芸術だって事。
「木をかいてください」
といわれて、
・水墨画で松の木を描く人。ついでに山まで見えるよ。亀もいるよ。
赤い○なのにりんごに見えつけちゃったり。
・墨汁で「木」と漢字かいちゃう人。あらま達筆
プログラミングって言っても、様々な表現方法がある。
道具だって有料から無料まで、使いたいものを使えば良い。
できあがった木が良いか悪いか、唸らせるかがっかりさせるか。
それは使い手や見る人にゆだねられるから、完全、完璧な物なんてないし、正解だって。ない。
やたらこなれたから良いかと言えば、そうじゃない。
道具の使い方が下手だって、発想と機能がちゃんとしていれば
実は見た目ではなかなか気付かないのも似てる。
「は?木なんか描いて何の意味があるの。
って事だってあろう。
だから、HELLO WORLD!も近道や解決策とも言い切れないと思うんだ。
同じ物を同じ品質で、道具をコテコテに指定して、作り続ける(コーディング)のだったら元増田の絵の例えは分かる。
でも「プログラミング」といわれると、どうにも納得がいかない。
ちなみに「夢は」を尋ねた増田です。
ばかやろう、才能なんて言葉で片付けたらお前の可能性はそこで限界だ。
小説にもプログラムにも才能はいらない、必要なのはたったひとつ「理解しようとする心」だ。
それと、日本には「下手の横好き」という言葉があってだな、70過ぎたクソジジイが将棋で孫をボコるくらいは法律で許されている。
自分の好きなキャラが、物語で描かれていない部分ではこんな日常を描いている……、そういうことを想像してみろ。
いつも使ってるあのシステム、あの使いづらい部分をこう変えてみれば使いやすいんだけどなぁ……、そういうことくらい思っているだろう。
さあ、原稿用紙に、テキストエディタに、"Hello World!"と書き込むことからお前の可能性は始まる!
何を勉強していいのかわからない。
各言語でHello Worldぐらいは書ける。erlangでハノイの塔を解いた時はこんなに短く書けるのかと感動した。でもいずれの言語もちょっとずつしかかじって無くて、自分がこれから何を勉強していいのかわからない。
Java, C++, Ruby, Python, JavaScript, PHP, erlang, 最初は練習用の問題みたいなのを解いているのが楽しくて、ブログとかで目につく言語で気になったものを選びながら各言語でやってみた。でもこのあと何をしたらいいんだろう?
オブジェクト指向?クラスと違うの?プロトタイプベース?何ソレおいしいの?
こんな僕は何を読んで、何を学べばいいのでしょう。
なんでもいいから、今恋人が興味を持ってたり得意としてたりする言語を習ってみる。
そうすると、たいていの場合はまず最初は”Hello World”の表示のさせ方を教えようとする。
最近はRubyとか流行なので、put とか教えてくれるんじゃないかな。
そこで教わった通りに、ただし”Hello World”のかわりに"I love U"とでも表示させてみよう。
顔を赤くしてくれたりするから、萌えるよ!
メイドカフェに倣うと言っても、メイドの格好をする必要はない。一ネタのために買うには他の用途のない服装であるからだ。
貴女の恋人がメイド好きなら、一度くらいは我慢して着てみてもいいかもしれない。
まあとにかく、服装はなんでもいい。いつも通りのシャツとスカートとかそんなんでいい。
それから恋人がやってきたらすかさず「おかえりなさいませ、ご主人様」と言う。
これには真剣に自分はメイドだと思い込むくらいの演技力が要求される。心しておいた方がいい。
試しに言うと分かるが、これはかなりバカバカしい台詞である。吹き出さずにいるのは至難の業だ。
そしてオムライスでもお好み焼きでもいいので、とにかくそういった調味料を上にかける料理を用意する。
作れない時は出来合いのものでも買ってきたらいい。
ちなみに自分はオムライスは作れないので、ピカタを五枚焼いて「あ」「い」「し」「て」「る」と一枚ずつ書いた(不器用なのだ)
見た瞬間は脱力されるが、そのうち耳が赤くなる。やっぱり萌える。
まず、恋文を用意する。貴女の愛すべきギークでオタクなバカ野郎への愛を綴ったラブレターである。
便箋や封筒には凝りたいところだが(最近は林檎のマークとかウケるかもしれない)、凝ったところで気遣いに気づかない可能性があるのは承知しておくべきである。
ギークのオタクというのはそういうところに気が回らないか、気づいてもそれを不合理だと捉えて気遣いだとは思わない習性を持つものが多くいるものだからだ。
そして用意した封筒を、部屋の窓に貼付ける。
この場合に利用するのはメンディングテープや弱粘着の両面テープなど、はがしやすいものにしておくことに注意すること。
そうして恋人がやってきたら、恐怖にうち震える表情を作り、か弱い風情で外を指差して「窓に!窓に!」と叫ぶ。
最初は不審な顔をされるが、中身を読めばやっぱり赤くなる。萌える。
以上が自分が実践済みの愛を告げる方法である。
是非とも諸姉には、できれば諸兄にも「これはウケるぜ」という方法をご教授願いたい。最近ネタが切れてきて、なかなかサプライズが用意出来ないのである。
そうです、私がグヌウの信者です。
今日の話題はAutomakeです。
Automakeを使うと、何がうれしいのか。
それは、Makefileを書くのが楽になるからです。
Makefile.amにファイル名を追加するだけでよくなります。
Automakeを使うのに最低限必要なファイルは「configure.ac」と「Makefile.am」の二つだけです。
あとは、「autoreconf -i」とかしておけば、必要なファイルは全て自動で揃いますので心配ありません。
# プログラム名とそのインストール先ディレクトリ(ここではbin)の指定 bin_PROGRAMS = helloworld # プログラムhelloworldを作るのに必要なファイルの指定 helloworld_SOURCES = helloworld.c
# Autoconf初期化([パッケージ名]、 [バージョン]) AC_INIT([hoge], [1]) # Automake初期化([オプション]) # ( foreignオプションをつけると、NEWSとかREADMEとかを作る必要が無くなる ) AM_INIT_AUTOMAKE([foreign]) # 作成するファイル名 # ここでは、Makefile.in から、Makefileを生成することを指定 AC_CONFIG_FILES([Makefile]) # C言語のファイルをサポートするように設定 # (具体的にどんな意味があるのか分かってない(汗) AC_PROG_CC # config.statusや、Makefileを作成する(らしい) AC_OUTPUT()
/* これは単なるサンプルプログラム */ #include <stdio.h> int main() { printf("Hello World!"); }
手順2: autoreconf -iを実行します
手順3: ./configureを実行します
手順4: makeを実行すると、helloworldがコンパイルされます。
ワンポイントメモ: 「ターゲットがありません」系のエラーが出たら、Makefile.amの記述ミスが考えられます。見直しをしてから、./configureからやり直すと、幸せになれるかもしれません。
何をしたいのか初めからわかってたら、こんな所で質問なんかしないよなー。
と、最近思うようになった。
これに対する適切な答えは、具体的な言語なりツールなりを紹介して、
「Hello World!」を書かせることだと思う。
(もし紹介する言語が手続き型プログラミングに適していない場合は、この限りではない。)
それで、もし質問者が「何か、これは思ってたのとは違う」と言うのであれば、
別の言語を紹介する。
最初から適切な質問と回答がとりおこなえるほど、わたしたちは賢くない。
具体的な実践を通してしか、プログラミングは理解できないと思う。
低級言語で頑張って"Hello World"作ってた自分から見ると、Java/PHP/Perl/Rubyのような超高級言語でさくさく高度なWEBアプリケーションを作ってる人がとても羨ましく見えると同時に、「大した苦労もしないで、俺はやったぞみたいな顔するんじゃねえよ。」とついつい思ってしまうことがある。アセンブリ言語ときたら比較命令を発行するたびに分岐先ラベルをいくつも定義しないといけないような面倒臭さがあった。それでも、それ以前のハンドアセンブル組や、機械後を生で見たり、パンチカード使ってたような人達から見れば甘いと思うだろう。
と、俺のひがみを書いてみるテスト。
でもね、今さらアセンブリ言語やC/C++を勉強するのは時代遅れだと思う。もちろん、携帯電話などの組み込み産業ではそういった言語はまだまだ健在だし、パソコンで何かを制御したりするようなニッチ産業でも生き続ける、「使える言語」であることに違いない。でも入門者にお薦めするような言語ではない。昔ならBasicじゃ遅いからCかアセンブリ言語で書くという動機があったが、今じゃPerl/PHPでも十分に動作は速い。ちょっとしたGUIを作りたいならTcl/tkか、Javaを使うべきだ。VBもいい。C++&DirectXはよっぽどプログラミングに熱中できる人が使えばいい。あくまでパソコンに限定した話だけどね。
プログラミングするのは何もパソコンだけじゃないんで。マイコンとか一杯あるから。線と線をつないで、発行ダイオードとかをピコピコ光らせるの。完成すると楽しいよ。よく、はんだごてあてすぎて、部品こわしちゃうけど(汗)。
もし、私が「アイツ、○○なんて言語使ってらー」なんて言って来たらぜひ、「○○言語を使うと、○○が簡単に記述できて便利だよ。」と、そのとき使ってる言語の利点を教えてください。私も所詮、いま使ってる言語のことしか知らないんで、ついつい、違う言語には拒否反応を起こしてしまうんです。
ごめんね、結論意見、実はたぶんあまり似てないんだ。
ええと、あなたの意見の否定と捉えないでね、単に、前書いた文の補足と捉えてね。
人工無能って書いたから誤解を招いちゃったみたいだけど、人工無能じゃなくても、例えばHello Worldって表示するプログラムでも、Windowsでも良かったんだ。でも、Hello Worldって表示された結果が重要なんじゃなくて、その働きが重要だと思う。だから、物語の登場人物は、それがどんなにリアルでも、心と言い換えるつもりにはなれない。私的に、「心=脳の働き」であって、「脳≒機械」「脳の働き≒プログラム」ってことを書いたつもりだったんだ。物語の登場人物には、思うに、この働きが無くて、ただ「心の結果」みたいなものや、その時々の状態のようなものが記されているだけに思える。働くのは作者の脳と読者の脳で、登場人物は単にそれらを働かせる情報でしかないと思うんだ。或いは、読者の心の中に登場人物の心があるというか……。
Pythonではなぜ string.len() でなく len() なのか?
string = MyString("Hello world")
class String def len self.length end end print "Ruby on Rails".len #=> 13
http://anond.hatelabo.jp/20071021143442
その理由は知らないが、なければ作ればいいじゃないか。
class MyString(str): def length(self): return len(self)
というクラスを作って
string = MyString("Hello world") print string.count("o"), string.length()
とRubyライクにやれば
2 11
とでるよ。え、リストもlist.length()が使いたいって?それも簡単。
class MyList(list): def length(self): return len(self) l = MyList([1, 2, 3, 4, 5, 6]) l.length()
6
きちんと他のメソッドも使えるよ。
l[1:]
[2, 3, 4, 5, 6]
l.reverse() l
[6, 5, 4, 3, 2, 1]
ね。簡単でしょ。
Pythonは仕組みが統一されているものが多いので、いじりやすいのですよ。上の例のやつは組み込みのクラスオブジェクトとユーザー定義のクラスオブジェクトがおおむね統一されているからこそ簡単にできる。他にも関数なんかもほかのオブジェクトと同じオブジェクトなので、高階関数なんてもの簡単に作ることができて関数プログラミングぽくできる。例えば今はなきapply関数なんかは
def myApply(func, *args): return func.__call__(*args)
と定義できる。実際に
def sumUpThree(num1, num2, num3): return num1 + num2 + num3
でためしてみる。
myApply(sumUpThree, 1, 2, 3)
結果はちゃんと
6
とでる。将来廃止されそうなmap関数も簡単に定義できる。他にも複数の引数をもつ関数の部分適用のようなことを行う関数も次のように簡単に定義できる。
def partial(func, *oldArgs): def wrapper(*newArgs): return func.__call__(*(oldArgs + newArgs)) return wrapper
sum_1 = partial(sumUpThree, 1) sum_1(2, 3)
6
sum_1_5 = partial(sum_1, 5) sum_1_5(9)
15
sum_10_20 = partial(sumUpThree, 10, 20) sum_10_20(30)
60
こういう風に高階関数が簡単にできるのは関数がオブジェクトで関数の実行とはメソッドの呼び出しにすぎないからだ。以上のように組み込みオブジェクトとユーザー定義オブジェクトの差があまりないことや関数もオブジェクトであることに見られるようにPythonは仕組みが統一されていてシンプルだ。そのためひとつのことがわかれば他のこともわかることが多いし、簡単にいじることもできる。
だからなければpythonをいじればいいと思うよ。
最後にラムダ式信者のためにpartialをラムダ式を使って書いておく。
def partial(func, *oldArgs): return lambda *newArgs:func.__call__(*(oldArgs + newArgs))
TWTR: Summary for Twitter, Inc. Common Stock- Yahoo! Finance
Twitterの株式公開初日。株価は74%上昇して45.10ドル。時価総額は318億ドル | TechCrunch Japan
Twitter、今年6月にユーザー5億人超か―ブラジル急成長、ツイート数では日本語が依然英語に次いで2位 | TechCrunch Japan
GOOG: Summary for Alphabet Inc.- Yahoo! Finance
Railsにある20%のソリューションで問題の80%を解決できるようにしています。
http://www.atmarkit.co.jp/news/200711/16/twitter.html
ウィリアム氏がOdeo内で始めた小さなプロジェクトが「Twitter」だ。
Ruby on Railsを使って2週間で最初の動くバージョンを 作り上げた
はてなブックマーク - Route 477 - Ruby基礎文法最速マスター&Ruby書籍紹介
Ruby on Railsで10分で作るTwitterもどき
Ruby on Railsをすぐ使う - Ruby on Rails 2.0アプリを1分で作る:ITpro
Ruby on Rails 2.0アプリを10秒で作る2.0
katoy: cocolog: Rails 2.0.2 は 5 行でアプリ雛形作成/起動ができる!
Ruby on Rails チュートリアル:実例を使ってRailsを学ぼう - Michael Hartl (マイケル・ハートル)
クックパッド株式会社 に行ってきた! - 941::blog
Ruby on Railsで1億PVのサイトの開発が出来て、エンジニアは5人しかいない
クックパッド(株)【2193】:株式/株価 - Yahoo!ファイナンス
ウォンテッドリー株式会社 に行ってきた! - 941::blog
ココロオドル仕事を見つける方法 | 仲 暁子 | 本 | Amazon.co.jp
Wantedly 航海日誌 — 私のようなの素人のためのHacker Way
はてなブックマーク - アイディアに価値はない by 仲 暁子
http://anond.hatelabo.jp/20130101082333
Focus on Technology:Ruby on Railsとエンタープライズを結び付ける「Merb」 (1/2) - ITmedia エンタープライズ
「Rubyに恋をし、Rubyが長きにわたって存在すると感じた人はたくさんいる。そして彼らはもっと強力なものを求めたのだ」
Merb 1.0 リリース記念に、Merb がどんだけすごいのかを紹介した海外の記事を翻訳してみた
速報: Merb と Rails が統合 - kwatchの日記
http://www.google.com/webhp?hl=en
http://www.google.com/search?hl=en&q=ruby&btnG=Google+Search
ブラウザで Ruby on Rails 開発! Heroku を使ってみよう - WebOS Goodies
ブラウザでRails開発が完了する衝撃の簡単さ - builder by ZDNet Japan
CやPerl、Python、Rubyをブラウザ上で実行できる「codepad」:phpspot開発日誌
C言語をブラウザで実行、Ruby/Python/Perlも然り | マイナビニュース
Odeo内で始めた小さなプロジェクトが「Twitter」だ。Ruby on Railsを使って2週間で最初の動くバージョンを作り上げたという。
Ruby on Railsで1億PVのサイトの開発が出来て、エンジニアは5人しかいない
http://blog.kushii.net/archives/1350951.html
http://d.hatena.ne.jp/gamella/20081027/1225119262
3ヶ月、わずか3名程度のエンジニアチームで、彼らはPHPで実装が完了していたレベルに追いつきました。またコード量はPHPの1/5以下にまで削減されており、よりシンプルな構成も実現できました。
Gregg PollackとScaling Railsのハウツー
1つには、Railsアプリケーションをうまくスケーリングするために必要なすべての情報をRails開発者に与えること。
しかし、できれば、開発者がビデオを見て、何百万人の同時ユーザーを扱うRailsアプリケーションを
作成できます、とクライアントに言える自信を持ってもらいたいのです。
2番目に、Railsアプリケーションをスケーリングすることがどれほど簡単かを、他の言語の開発者に示すこと。
http://www.infoq.com/jp/articles/gregg-pollack-scaling-rails
Ruby on Railsで10分で作るTwitterもどき - ZDNet Japan
http://japan.zdnet.com/video/screencast/story/0,3800079413,20354695,00.htm
Rails 2.0.2 は 5 行でアプリ雛形作成/起動ができる!: katoy: cocolog
http://youichi-kato.cocolog-nifty.com/blog/2008/01/rails_202_5_9198.html
Ruby on Rails 2.0アプリを1分で作る - Ruby on Railsをすぐ使う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20080606/306873/
30分で Rails youtubeアプリ - 脱・下流エンジニア (仮)
hp12c - Railsでブログを作ろう!(Creating a Weblog in 15 minutes)
Ruby on Railsで10分で作るTwitterもどき - ZDNet Japan
Rails Pocket Reference (Pocket Reference (O'Reilly)): Eric Berry: 0636920520702: Amazon.com: Books
http://127.0.0.1/phpmyadmin/ http://127.0.0.1/mysql/
http://127.0.0.1:3000 http://localhost:3000/entries/
http://127.0.0.1/cgi-bin/c.cgi
C:\InstantRails\cgi-bin\c.cgi
キーワード「ruby」を含む新着エントリー Ruby Inside: The Ruby Blog
Ruby関連MLの自動翻訳サイトが公開 - JRubyのNutter氏に触発 | マイナビニュース
Rails Forum - the ultimate Ruby on Rails community
gem install hpricot
gem install mechanize
Eclipse経由を諦めてAptana IDEをそのまま使うようにした。
なんかこれは、まんまEclioseなのかもしれない。同じコードから作られてるのかな?
使いやすいよ。
昨日の続きでこれをやった。
Windowsで簡単にRuby on Rails:Instant Rails+Aptana
http://japan.zdnet.com/sp/report/story/0,2000056431,20352478-3,00.htm
まずは、図11のようにテーブル名の単数形である「category」、「recipe」でそれぞれモデルを作成する。「GO」ボタンをクリックするだけだ。
まったくもって何を言っているのかわからない。
そして図11なる画面をどこで呼び出すのかもわからない。
「みちこさん?パソコンを立ち上げるっていうのは縦に置けばいいのかいのぉ・・・?」
つまりはそういう感じだ。
うりうり探してたら、初期表示画面の画面下部のタグにGenerators画面があった。
scaffoldって絞首とか処刑とかそういう意味じゃなかったっけ?
で、なんなんだ!?
なんだかよくわからないまま連載終了。・・・くっ。
Aptana Eclipseプラグインで始めるRuby on Rails
http://blog.codezine.jp/editor/2007/06/aptana_eclipseruby_on_rails_1.php
前にも見たことがあるこれにもどってきた。
現段階の環境構成でAptana IDE経由でRubyのHello Worldを試す。さくさく。
おー。
この一連のコラムが、いままでの中で一番わかりやすかった。(目次はわかり難い)
http://blog.codezine.jp/editor/2007/08/ruby_on_railsscaffold_1.php
Aptana IDEのブラウザ内臓ってどこから呼び出すんだろ?
→下部WindowにあるServerタグのところにアイコンでLunchBrowserというのがあった。
設定ついでにワークスペースにエンコードの設定の欄を発見。utf-8に変換した。
(エンコードの状態をステータスバーなどに表示させておく方法はないのだろうか?探したが見つけられなかった。)
Generatorsタグが消えてしまった。
→パースペクティブがRubyになってた。これをRuby on Railsに。
Rake tasksを実行したりするとGeneratorsのプルダウンが出なくなる。なんでだろう?
なんとかならないものか。
http://blog.codezine.jp/editor/2007/06/ruby_on_rails_migration1.php
RailsではmodelファイルはDBのテーブルと対になります。
いわゆるO/Rマッピングというやつです。
へーーー!!そういう意味だったのか。
IDE系統でメモリ食ってるのかな?落とすと300MB近くあく…。
1Gまでもっていかれちゃうと終了もままならなくなるので注意が必要そう。
Hello worldレベルでこんなんなってちゃ世話ない。
複数を組込むにはどうしたらいいのだろうか。
さすがにheader/detailでDB参照したい。
追記:なんか少し調べたけどもしかしてRuby on RailsってO/Rマッピングオンリー…?
そんなまさか…。いや、いくらなんでも…。
http://www.web-career.com/seminar/ruby_on_rails.html
作る内容をもっとシンプルなアイディア勝負なヤツに変えようとおもう。
<html><head><title>Hello JavaScript World!</title><style type="text/css"> <!-- .select { margin-left: 30px; padding: 0 2px; width: 6em; border: dotted 1px; } .select p { margin: 2px; } --> </style></head><body><script type="text/javascript"> <!-- // step 1 : output text document.write("Hello world!"); // step 2 : output html document.write("<br/><b>Hello javascript world!</b>"); // step 3 : manipulate DOM var p1 = document.createElement("p"); p1.appendChild(document.createTextNode("Hello DOM world!")); document.body.appendChild(p1); // step 3 : interactive, using function, event handler function solid() { this.style.borderStyle="solid"; } var p2 = document.createElement("p"); p2.appendChild(document.createTextNode("Hello interactive world!")); document.body.appendChild(p2); p2.addEventListener("click", solid, false); // not solid() // step 4 : using object, prototype, closure function P(str) { this.str = str; } P.prototype.regist = function(parent){ this.elem = document.createElement("p"); this.elem.appendChild(document.createTextNode(this.str)); parent.appendChild(this.elem); var self = this; this.elem.addEventListener("click", function(){self.act()}, false); // otherwise // this.elem.helloworld = this; // this.elem.addEventListener("click", function(){this.helloworld.act()}, false); // bad way // this.elem.addEventListener("click", this.act, false); // this.elem.addEventListener("click", function(){this.act()}, false); }; P.prototype.act = function(){}; var p3 = new P("Hello prototype world!"); p3.act = function(){ if (this.elem.style.borderStyle == ""){ this.elem.style.borderStyle = "solid"; } else { this.elem.style.borderStyle = ""; } }; p3.regist(document.body); // step 5 : inheritance function SELECT(parent, str) { this.str = str; this.regist(parent); } SELECT.prototype = new P(); SELECT.prototype.act = function(){ p4.elem.style.borderStyle = this.str; p4.div.style.display = "none"; } var p4 = new P("Hello world!"); p4.div = document.createElement("div"); p4.div.className = "select"; p4.div.style.display = "none"; p4.select = [ new SELECT(p4.div, "none"), new SELECT(p4.div, "dotted"), new SELECT(p4.div, "solid") ]; p4.act = function(){ p4.div.style.display = "block"; }; p4.regist(document.body); document.body.appendChild(p4.div); //--> </script></body></html>
Hello world !! こんにちは世界!! こんにちは皆さん!!
webサマリはネットにある記事のまとめを作成して、世界中の人と共有するサイトです。
あなたも、一緒にLet's サマリ!!
以下はサイトの説明になります。興味が湧いたかたはご覧下さい。
------------------------------------------------------------------------------------------
webサマリはwebの記事のまとめを集めるサイトです。それはブログを書く事や、トラックバックを書く事とは少し違います。
元の記事があってそれをわかりやすくまとめたもの、要約、それがサマリです。由来はsummaryです。
世の中にはいろんな人がいます。面白い考え方をする人、どんどん発言する人、反論する人、認める人、話をまとめるのが上手な人。
僕はこの「話をまとめるのが上手な人」に注目しました。
どんなにわかりにくいブログでもまとめるのが上手な人にかかれば、読みやすく、理解しやすくなるはずです。
得意なまとめるのが得意な人チャンスですよ!!是非webサマリで貴方の力を存分に発揮して下さい。
面白そうなんだけど長過ぎて読む気になれないブログ、内容が単純にわかりにくい記事、[後で読む]が付いている記事、
これらの記事に対してサマリを作成しましょう。
分かりやすくまとめられたサマリを読んで、ざっと概要をつかんで興味が湧いたら始めてその記事を見に行けば良い。と僕は思います。
逆にブロガーの皆さんはどんどん、長くて面白くて中身の濃いブログを書いて下さい。webサマリで貴方のブログをまとめます!
あなたのMYブックマークのタグは後で読むであふれていないでしょうか?
あなたはブログが長過ぎて途中で読むのをあきらめたことはないでしょうか?
あなたはホットエントリーチェックするのに何時間も費やしてないでしょうか?
あなたは人の話をまとめるのが上手いと言われた事はないでしょうか?
あなたはブログを読んでいる内に結局ブロガーの言いたいことがわからなくなってしまったことはないでしょうか?
あなたはネットで情報を収集する時間を少しでも短くしたいと考えたことはないでしょうか?
「あるあるww」と思ったそんなあなたには是非webサマリを勧めます。
エディタなしでも大丈夫。アドレスバーでJavaScriptを実行してみよう!
アドレスバーに入れた場合、最後の値が表示されます。
javascript:"Hello world!"
サンプルでは良くあるけれど、実際、ダイアログはほとんど使いません。でもちょっとしたデバッグには便利です。
javascript:alert("Hello alert() world!")
このとき「alert()」とは「window.alert()」を表します。windowオブジェクトはブラウザの表示ウィンドウを表すオブジェクトです。windowオブジェクトのプロパティやメソッドを使用する場合は、alertに限らず「window.」が省略できます。
これが「print "Hello world!"」に一番近と思います。
javascript:document.write("Hello document.write() world!"); document.close()
documentオブジェクトは表示中のドキュメント全体を表すオブジェクトです。
Document Object Modelを利用して要素を追加します。
javascript:document.write("<html><body></body><html>"); document.close(); var p = document.createElement("p"); p.appendChild(document.createTextNode("Hello DOM world!")); document.body.appendChild(p);
現在のドキュメントがHTMLであれば、先ほどの「document.write()」はHTMLを扱うことになります。これを使用してbody要素を作っておき、そこへp要素を追加しています。
[追記] createTextNodeを使用するように変更しました。
javascript:document.write("<html><body>Hello world!</body><html>"); document.close(); p = document.createElement("p"); p.innerHTML = "Hello javascript world!"; document.body.appendChild(p); p.addEventListener("click", function(){this.style.borderStyle="solid"}, false)
イベントハンドラの使用方法は幾つかありますが、ここでは「addEventListener」を使用します(申し訳ありませんがIEでは動きません)。この例では、イベントに対するコールバック関数として無名関数の「function(){……}」が登録されます。p要素がクリックされたとき「function(){……}」が呼び出されます。このとき、this(変数ではありません!)が、要素pを示します。
(define str "Hello world") (let ((a 0)) (let1 b (with-input-from-string str (lambda () (port-fold (lambda (c b) (if (eqv? #\o c) (inc! a)) (+ 1 b)) 0 read-char))) (print a " " b)))
あるいはこう。
(use srfi-1) (define (times* e n) (map (lambda _ (e)) (iota n))) (define-macro (with-gensyms var . body) `(let ,(map (cut list <> '(gensym)) var) ,@body)) (define-macro (with-gensyms* var n . body) `(let ((,var (times* gensym ,n))) ,@body)) (define-macro (port-vfold proc seed reader) (with-gensyms (loop %proc v) (with-gensyms* pr (length seed) (with-gensyms* npr (length seed) `(let ((,%proc ,proc)) (let ,loop ((,v (,reader)) ,@(map list pr seed)) (if (eof-object? ,v) (values ,@pr) (receive ,npr (,%proc ,v ,@pr) (,loop (,reader) ,@npr))))))))) (receive (a b) (with-input-from-string "Hello world" (lambda () (port-vfold (lambda (c a b) (values (if (eqv? #\o c) (+ a 1) a) (+ 1 b))) (0 0) read-char))) (print a " " b))
文字列操作関数って高価じゃね?
(define string "Hello world") (print (string-length string) " " (string-count string #\o))
main = putStrLn $ p "Hello world" p s = (show $ length [x | x <- s, x == 'o']) ++ ", " ++ (show $ length s)
二時間くらい調べて書いた。
後悔はしてない。
$,=", "; $\="\n"; $_ = "Hello world"; print scalar(@{[/o/g]}), length;
printを知らないjavascript:
string = 'Hello world'; string.match(/o/g).length+', '+string.length+"\n";
ちょっと趣旨は離れるけれど。他言語はどんな感じ?
文字列 'Hello world' の o の合計数は2、全文字数は11
string = 'Hello world'
print string.count('o'), len(string) # prints 2, 11 why not string.len()?
Ruby:
string = 'Hello world'
jijixi's diary - Ruby に比べて Python の面倒なところ
Django勉強会始まったよ|| Woops'dez | Bloggin'
Pythonはグローバルスコープとローカル(関数)スコープ以外のスコープを何も持っていない。
だからPythonには「本物の」OOシステムがあるのだとしても、クラスは自分のインスタンス変数にさえアクセスできない。
あらゆるインスタンスメソッドに対し"self"パラメタを渡す必要があり、そうやってインスタンスデータにself経由でアクセスするのだ。
だからPythonの中のものはすべて、self、selfself、selfselfself、selfSELFselfSELF__SELF__であり、
たとえあなたがホワイトスペースの問題を気にかけないとしても、これはあなたの頭をおかしくするだろう。
「プログラミングなんて誰にでもできる」という思想は、案外広く信じられているようで、とくに「そこそこできる」人にそういう傾向があるように思う。もちろんそんなのは嘘っぱちだ。
例えば、100m走で走りきれないという人は、まぁそうそういないだろうけど、オリンピックで金メダルをとれるかというと、いやずーっとレベルを下げて運動会の100m走で一位の旗を誇らしげに持てるかというと、それだって無理な人には無理だ。それと同じ意味でプログラミングは誰にでもできることではない。
もちろんプログラミングで一位になる必要なんてどこにもない。だけど考えて欲しい。100m走では1位とビリの差は数秒もない。オリンピックレコードと二十代平均の記録を比べても、多分倍半分も違わないだろう。もしプログラミングの世界にもこれが適用されるなら世の中はもっと幸せになっているはずだ。
たとえ話が何か違う方向に行ってる気がするんだけど、気のせいだろうか…。
思うに、そこそこ出来る人に案外広く信じられている「プログラミングなんて誰にでもできる」を敢えて100m走に置換するならば、「100mなんて誰でも走れる」になるのでは?20秒とかそんな条件はない。
もちろん、「誰にでも..」は何に於いても嘘っぱちだ。身体的条件その他諸々により、「特別な事情がある場合を除き」みたいなprefixは必ず付く。
100mという距離は別にしても、「走る」というのは人間の基本行動であり、特別な訓練を受けなくても"ほぼ誰にでも"できる事だろう。特別な事情がある場合を除いて。
対してプログラミングの方はというと、知らない人は知らないし、出来ない。当たり前だ。
というか、足し算だって何だってそうだ。
プログラミングは(普通)PCが必要だったりして、ちょっと入門の敷居が高いだけで。
つまり?そこそこ出来る人に案外広く信じられている「プログラミングなんて誰にでもできる」は、「誰でもHello Worldくらい、やろうとしてできねーこたぁねぇ」くらいじゃないんですかね。と。
本当に「Fizz-Buzzくらい誰でも書けるでしょ?」なんて信じ込んでる奴は、なんていうかオワッテル気がする。
ええと、なんていうか、揚げ足とってサーセンッシタ!
ああ、それと、皆が皆本当にプログラミングがデキたら少なくとも俺はくいっぱぐれて幸せじゃないので、ちょっと特殊な技能のままでいてほしいなーなんて思ったり!
あと、それと、「誰でも...」レベルの人が間違ってプロ状態になっちゃってたりして、そこそこ出来ると信じてる俺としてはちょっといけすかん状態なので、誰かなんとかしてください。
妙に「世界に1つだけの、お前のプログラム」という言葉が気に入っているみたいだけど
やっぱりそれはある程度何かの言語を学んだ人が全く新しい言語に挑戦するときしか通用しないと思うよ。
経験が皆無で、プログラミングの勘が無い人というのは、どこを変えてみたらいいのかがまず分からないんだよ。
Hello World!程度ならまだなんとかなるだろうけど、
if文やfor文、ましてや再帰関数なんて出て来た日にはもう、書き換えた部分と出力の変化の因果関係がつかめない。
因果関係を理解するために出力を変更することも出来ない。
だから最初、もう本当に最低限のルールだけはネットなり本なりで学んでからやるべきだと思う。
とにかく書け!パクれ!実行しろ!っていうのは賛成だけどね。