from どさにっき
どさにっき
grep -C
_ まあ -A でも -B でも -C でもいいけど、GNU grep でマッチした行の前後も表示するというオプション。
% yes '' | cat -n | head | grep -C 2 5
3
4
5
6
7
1 から 10 の連番のうち、5 を含む行と、その前後2行を表示する。
_ 逆に、これらの行を削除しようとして -v と組み合わせると
% yes '' | cat -n | head | grep -v -C 2 5
1
2
3
4
5
6
7
8
9
10
機能しない。しくしく。
_ なんかエレガントな方法ないかな。とりあえず今回は深く考えず sed やら awk やらでごまかしたけど。
どうも GNU grep だとどうしようもないようですね。
grep の一番キモのところを抜き出すとこんな感じなんですが
/* Scan the specified portion of the buffer, matching lines (or
between matching lines if OUT_INVERT is true). Return a count of
lines printed. */
static int
grepbuf (char const *beg, char const *lim)
{
int nlines, n;
register char const *p;
size_t match_offset;
size_t match_size;
nlines = 0;
p = beg;
while ((match_offset = execute(p, lim - p, &match_size,
NULL)) != (size_t) -1)
{
char const *b = p + match_offset;
char const *endp = b + match_size;
/* Avoid matching the empty line at the end of the buffer. */
if (b == lim)
break;
if (!out_invert)
{
prtext (b, endp, (int *) 0);
nlines++;
outleft--;
if (!outleft || done_on_match)
{
if (exit_on_match)
exit (0);
after_last_match = bufoffset - (buflim - endp);
return nlines;
}
}
else if (p < b)
{
prtext (p, b, &n);
nlines += n;
outleft -= n;
if (!outleft)
return nlines;
}
p = endp;
}
if (out_invert && p < lim)
{
prtext (p, lim, &n);
nlines += n;
outleft -= n;
}
return nlines;
}
-v オプション指定時には out_invert という変数に非0の値が入っています。
途中で呼ばれている prtext() というのが前後の行をあわせて出力する下請け関数だったりするんですが
関数の最後の方にある
if (out_invert && p < lim)
{
prtext (p, lim, &n);
nlines += n;
outleft -= n;
}
どうも問答無用で範囲内の行をぶちまけているような(笑)
そもそもが
while ((match_offset = execute(p, lim - p, &match_size,
NULL)) != (size_t) -1)
{
マッチに成功したときにどうこうというループなので、
逆の出力を期待通りに行うためにはもうちょっと手を入れないといけないような。
むかーし -v と -l の合わせ技が期待通り動かないということで
-L が新設されたような記憶があるので、希望を出せば通る可能性が?
-L, --files-without-match only print FILE names containing no match
-l, --files-with-matches only print FILE names containing matches
[ruby-dev:35140] Re: [ruby-list:44988] Re: 各ブランチの計画
In message "[ruby-dev:35130] Re: [ruby-list:44988] Re: 各ブランチの計画"
on Jun.17,2008 00:34:01, <hogemuta / gmail.com> wrote:
> > ruby_1_8_7、ruby_1_8、trunkでは既にrb_io_tに改名されています。
> > ruby_1_8_5、ruby_1_8_6ではそれはバックポートしないという前提
> > で、今の話のような問題が出てるので回避策を考えている、という
> > 状態です。
>
> それは大変失礼しました。
>
> #これで長年の懸念が
10年越しでしたもんねえ。
ちなみに昨年3月にようやく改名されました。
∧∧
ヽ(・ω・)/ ズコー
\(.\ ノ
、ハ,,、  ̄
 ̄
なんかそういう記憶もあったんだよなあ。
ソース見てから書けばよかった○| ̄|_
Java meets Python - 第7回 ハリウッドの原則:CodeZine
《Tea Break》補助輪付き vs. ブレーキのない自転車
補助輪付きの自転車でバランス感覚を養っていくと、やがて補助輪なしで走行できます。むし
ろ、上達するにつれて、補助輪が自由な走行を邪魔します。競輪用の自転車には、ブレーキが付
いていません。同様に、プログラミング言語も、アマ/プログラマーの仕様の棲み分けが必要か
もしれません。一般道では必要なブレーキも、競技場では邪魔な存在です。Java/C# の言語仕様
には、学習用には適切でも、アジャイル開発下では失速を余儀なくされるものも少なくありませ
ん。ステップ単位の開発コストを、他の言語(Ruby/Python 等)と比較してみるのも一興です。
例によってたとえ話は危険な部分があるのでそれは全力でスルーしておいて、
プログラミング初心者にプログラミングを教えるのに向いたもの、あまり向いていないもの
というのはあるでしょうね。
後者も絶対それでやってはいけない、できないということではなくて、
言語以外のサポートがきちんとしていれば何とかなる部分というのは小さくないように思います。
裏を返すといつも云ってることになりますがね(笑)
■_
正規表現とかパターンマッチとかそのへん
d.y.d.
ぱたーん☆まっち
パターンマッチ的な物の未来を考える、というか主に願望を垂れ流します (see also: NyaRuRu
さん、 きむら(K)さん)。 リンク先でも話題にあがっているように、パターンマッチの使い勝
手を考える上で 正規表現というのは近い位置にいるような気がするので、意図的にその辺りご
ちゃまぜに考えます。
http://d.hatena.ne.jp/NyaRuRu/20080615
http://www.kt.rim.or.jp/~kbk/zakkicho/08/zakkicho0806b.html#D20080616-3
* とりあえず、文字列以外のリストも正規表現で処理したいということは自分の場合本気で
結構あるので (日記に書いたのだと PQ Tree や 構文解析の話 ‐ "毎回スタックを
覗く感じの実装" は非終端記号+構文木列スタックを正規表現で覗き込みたい ‐ など)、
その辺り巧く統合されて正規表現でできることはパターンマッチでできて逆もまた可、って
なると楽しい。
http://www.kmonos.net/wlog/57.php#_2254060120
http://www.kmonos.net/wlog/83.html#_1506080301
* あるいは。 各種 LL の多重/アンパック/リスト代入は、私の感覚では、物凄く限定された形の
パターンマッチなんですが、 Haskell や ML のようなフルのパターンマッチまで行かなくても、
なにかもう一声欲しいよなーと思うことがあって、 そんなに大革命でなくても、今の言語に対
するこのくらいの拡張でも便利なのでは…という消極的拡張。
if a.size >= 2 then
x = a[0]
y = a[1]
...
end
よりも
if a.size >= 2 then
x,y,* = a
...
end
の方が感覚的には500倍くらいわかりやすくて、
if x,y,* = a then
...
end # 的な何かそういったもの
さらにこう書けたらもう500倍くらいわかりやすいなーと。
(ry
* また積極的主張に戻る。 いやこれは私が色々使い方間違ってるだけな気がするんですが、
たまにこういう正規表現書くはめになって
mystr.scan( /(aaa)|(aab)|(abc)/ ) do
case
when $1 ...
when $2 ...
when $3 ...
end
end
正規表現に括弧が増えるのが面倒くさい!あと、aaa の代わりに中で () 使うようなちょっと
複雑な正規表現 が入ると、もう $1 の次が $3 なのか $4 なのか中身によって変わってしまっ
て大変なことに! … などなどの理由で
mystr.scan do-case
when /aaa/ ...
when /aab/ ...
when /abc/ ...
end # 的な何かそういったもの
こういう風に書きたいなあと妄想してしまうことがよくあります。たぶん、「ブロック」を
first-class のオブジェクトとして扱える言語がループ等の制御構造を自由自在に作り出せ
るのと同じように、 「パターン」を first-class のオブジェクトとして扱える言語なら、
こういう、ユーザー定義のパターンマッチ 制御構造みたいなのを書けるであろうなあ、とい
うアレコレ。
(ry
なんか正規表現の話しかしてないな。なんでだろ。 「列」に対するパターンマッチの機能以外
は、 Extractor (Scala) とか [PPT] Active Pattern (F#) とか View Pattern (Haskell) とか
で任意の抽象データ型に好きなだけパターンマッチできるようになった時点で、私的にはかなり
満足 できちゃってるんですよね、たぶん。あんんまり話を混ぜない方がよかった気がしてきた。
まあいいや。 みんなで混乱しましょう。
http://www.scala-lang.org/intro/extractors.html
http://www.kmonos.net/pub/Presen/POPL20070725.ppt
http://hackage.haskell.org/trac/ghc/wiki/ViewPatterns
(ry
えーとなにから書けばいいだろう(^^;
まず、カッコが増えると番号がずれてわけわからん問題は(例によって) Larry Wallが
Perlに導入した (?: ) 構造がひとつの解決策を提示していると思います。
正規表現におけるカッコというのは大きく二つの役割を担っていて、
ひとつはいくつかのパーツを集めてひとつの部品として扱えるようにすること。
つまり、foo* は fooの最後の 'o' しか繰り返しの対象にならないけれども、
(foo)* とした場合には 'foo' という文字列が繰り返しの対象になると。
まあごく初期には後者の使い方はできなかったっぽい(Beautiful Code でカーニハン大先生の
章にある正規表現ルーチンを見てもそれが伺えます)のと、W○ エディタみたいなものも
ありますが。
もうひとつは、これはPerl起源ではありませんが(これはなにが一番最初なんだろう?)、
カッコによってまとめたグループに名前をつけるというものです。
名前によって参照すれば、後で構成が変わってカッコ群の中で順番の変更があったとしても
その影響は受けないですむと。
もちろんこれは正規表現側からのアプローチなので、
mystr.scan do-case
when /aaa/ ...
when /aab/ ...
when /abc/ ...
end # 的な何かそういったもの
こういう風に書きたいなあと妄想してしまうことがよくあります。
というのもわかります(そのつもりです)。
前後しましたが、代入の話は賛成です。
が、なんか似たような話題を Dave Thomas が昨日今日あたりで書いていたような?
Perl 6のルールはわたしの好みにけっこうズバリと来ている仕様なんですが、
あれはいわゆる正規表現の「親玉」的でない、Haskellとかのパターンマッチのような
使い方はできたのかなあ?(よく知らない奴)
■
RoRは…な人向け?
Ruby 初心者スレッド Part 19 [bbs2chreader]
863 デフォルトの名無しさん [] Date:2008/06/17(火) 11:40:57 ID: Be:
質問させてください。
現在Ruby on Railsの勉強をしています。
しかし根本的な部分で躓いてしまいました。
練習してみようとtsukaeru.netのシルバープランというVPSサーバーをレンタルいたしました。
しかし、まったくこの上でrubyを用いたホームページを公開する方法がわかりません。
ruby on railsははいっていますか?との質問にサポートは入っています。との解答でした。
それ以上のサポートはできないとのことなので失礼ながらこちらで質問させていただきます。
勉強をしている本は基礎Ruby on RailsというものなのですがこちらはWindowsで導入する方法でしかも
ローカルで動く方法のみ書いてあったのでそれを一般に公開するという点では参考になりません。
サーバ構築なども全く初体験なのです。
rubyのプログラムは普通のHPのようにpublic_html直下にindex.htmlをおけば動くといったものではないのですか?
公開するまでの具体的な方法をおしえてください。よろしくおねがいします。
OSはLinux CentOS5(final)のようです。
864 デフォルトの名無しさん [sage] Date:2008/06/17(火) 12:05:19 ID: Be:
windowsで導入してローカルで動かせばいいじゃないか
865 デフォルトの名無しさん [sage] Date:2008/06/17(火) 12:08:55 ID: Be:
うむ
866 デフォルトの名無しさん [sage] Date:2008/06/17(火) 13:43:28 ID: Be:
>>863
まず、その程度の知識でVPSに手を出すのが無謀
組織の命令でやらざるを得ないのなら同情する
ちなみに
% ruby script/server
を実行すれば、適当なポートでHTTPサーバが立ち上がるので
あとは http://localhost:(ポート番号)/ にアクセスすれば、サンプルページは見えるはず
よく分からないなら素直にWindows使って練習した方がいい。VPSはその後で
867 デフォルトの名無しさん [] Date:2008/06/17(火) 15:19:46 ID: Be:
まじすか
そんなにハードル高いものだとは・・・orz
Windowsでやるということは、それを公開するには自鯖を立てるしかないのでしょうかね?
自鯖は少し理由があって立てられないのです。
レンタルしているVPSサーバー上でruby script/serverとすると
ruby: No such file or directory -- script/server (LoadError)
と出てしまいます。ruby -vなどとすると正しくバージョンが出ますのでインストールされていることは
確かなはずです。
VPS以外で、もっとも簡単にRuby on Railsを公開するにはどうすればよいでしょう。。。
もとからRubyが使えますよ~っと書いてあるレンタルサーバーでもどのようにしてつかえばいいのか
さっぱりです。本でも読んで勉強もしますのでよろしければはじめの一歩でも教えてください。
868 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:06:20 ID: Be:
つか、なんで知識無い奴がRoRやってんの?
CGIとHTTPとDBの知識無い奴がRoRなんか触ったって意味ないのに
869 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:15:51 ID: Be:
>>867
Rails環境の構築は初心者には難しい
お薦めの手順としては
1.WindowsにRails環境を作って、そこでRailsの基礎を勉強する
基礎Ruby on RailsにもRails環境入りのCDがあるけれど、ここは「InstantRails」を使うべき
2.ある程度Railsアプリケーションをローカル(つまりWin)で作れるようになったらVPSでの公開を検討する
遠回りかもしれないがまずはローカルでRailsを動かしてみよう
学生さんですか?
ここはRubyスレで微妙にスレ違いの話になるので、捨てアドでも晒してくれたら色々と教える事は可能
870 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:19:05 ID: Be:
>>867
>ruby script/server
script/serverは、最初にrails generateで作ったディレクトリの中にある
あとは分かるな?
>VPS以外で
自鯖が立てられないならほぼ不可能
CGIスクリプトとして動かす手段もあるにはあるが、たぶん遅すぎて使い物にならない
それでもやりたいなら「dispatch.cgi rails」でググれ
871 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:22:14 ID: Be:
>>868
そんな事は無いだろう
DBは必須だがCGIとHTTPの知識が無いRailsエンジニアなんてゾロゾロいるぞ
もちろん誰かが作ってくれた環境上でアプリを作るだけしかできないが
872 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:25:29 ID: Be:
>>870
いや、実はRails自体入ってないんじゃないかとオレは思ってるw
867にはrails -vしてみて欲しいところだな
873 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:32:10 ID: Be:
>>868
まあ、Railsはどこをどう見ても
「わかってる人間が手早く作るための強力フレームワーク(※ 引き換えにパワー上限あり)」
なんだが、Javaソリューションビジネスで負けた奴らが次点を求めてRoRにツバつけようと群がったもんだから
「あなたにもRoRが簡単にできます」ビジネスの被害者が続出してる
そういう被害者の人たちのフォローをするのも初心者スレの役目だとは思うぜ
874 デフォルトの名無しさん [sage] Date:2008/06/17(火) 16:38:38 ID: Be:
>>873
Railsはシンプルでわかりやすいけど、それは「ある程度わかっている人」限定の話なんだよなぁ
プログラミング未経験者ならRailsよりもPHPの方が簡単に入れるだろうとは思う
875 デフォルトの名無しさん [sage] Date:2008/06/17(火) 17:01:38 ID: Be:
Rubyの知識はあるのかなあ
無いんだったら、俺ならダッシュで本屋行ってPHPに鞍替えするね
876 デフォルトの名無しさん [sage] Date:2008/06/17(火) 17:19:53 ID: Be:
おk
>>867はPHPに乗り換えなさいw
877 デフォルトの名無しさん [linksuplinksup@yahoo.co.jp ] Date:2008/06/17(火) 18:10:33 ID: Be:
皆様ご回答ありがとうございます。
現在の、ローカルのWindows環境では本にしたがい、localhost:3000で動くことはできました。
それを一般に公開するなんて簡単だろうperlのcgiとおなじだろ~っと考えていたらみごとに躓きました。
ご指摘のとおりrails -vしてみたところRails 1.2.2と返ってきたので入ってはいるみたいです。
そしてRoRのソースやらが入っているディレクトリまでcdで移動して再度script/serverを打ってみると
create
File exists - script/server
と帰ってきました。どうやらサーバーがたったようではなさそうな感じですが・・・
あと一歩なんでしょうかorz
ちなみに言語経験はC#とVBを少々でございます。
捨てアドさらせば教えていただけるというとても親切な方がいらっしゃいましたのでアドレスを書いて見ます。
よろしくお願いします。
878 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:38:56 ID: Be:
初心者か
879 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:43:32 ID: Be:
>>878
まあ、初心者スレだからな
来るのはRubyの初心者だけにして欲しかったもんだが
2ch初心者とかネット初心者とかコミュニケーション初心者とかは正直勘弁
880 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:44:48 ID: Be:
つーか>>878とか>>868は上から目線すぎ
誰だって知らない分野はあるだろ
881 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:47:51 ID: Be:
lololol
882 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:49:54 ID: Be:
>>880
ほいほいメールアドレス晒したり
Windows以外で動作させるための文献検索すらできてなかったりするのは
どうにも擁護できんぞ
「知らない分野」とかそういうレベルではない
883 デフォルトの名無しさん [sage] Date:2008/06/17(火) 18:53:29 ID: Be:
>>880は「お前には無理だからやめろ」とはっきり言ったほうがいいと仰っておられるのですよ
RoR使うのやめろというレスを全部スルーしてるからな
884 デフォルトの名無しさん [sage] Date:2008/06/17(火) 19:10:38 ID: Be:
>>882
自分のメールアドレス晒すのは、別に擁護する必要無いだろう。
885 デフォルトの名無しさん [sage] Date:2008/06/17(火) 19:12:56 ID: Be:
RoR以外の手段を使えというアドバイスですが、一応RoRについての文献をすでに購入してしまったことと
また、RoRを勉強してみたいという意欲のもと始めましたので、別の言語は考えていません。
LinuxにRuby と Railsを入れる方法についてはいろいろと調べまわったつもりなのですが具体的に
公開手順を示されているサイトがみつかりません。
メールアドレスを晒したのは>>869さんが親切にあのようにおっしゃってくれたからです。
微妙にすれ違いとの事ですので、失礼しました。
886 デフォルトの名無しさん [sage] Date:2008/06/17(火) 20:02:43 ID: Be:
Rails云々とは関係なくHTTPとCGIについてよく書けている記事があったので晒してみる
ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080128/292199/?P=4&ST=oss
これを書いたやつは見込みがあるな
887 デフォルトの名無しさん [sage] Date:2008/06/17(火) 20:11:11 ID: Be:
そのシリーズはなかなか良質
抽象データのあたりとか、
よくまあ説明が複雑になりがちな概念をここまで平易に
888 デフォルトの名無しさん [sage] Date:2008/06/17(火) 20:18:50 ID: Be:
タイトルで吹いたw
889 デフォルトの名無しさん [sage] Date:2008/06/17(火) 22:58:25 ID: Be:
直伝噴いた
890 デフォルトの名無しさん [sage] Date:2008/06/17(火) 23:21:08 ID: Be:
ここまで言うならぜひ言語を作って欲しい物だ
初心者のためのプログラミング言語ガイド Part9 [bbs2chreader]
510 デフォルトの名無しさん [sage] Date:2008/06/16(月) 15:24:20 ID: Be:
あれ、なんでだ>>1から読んだのに特に得るものが無かったぞ!
途中にあったエロゲ体験記くらいか
511 デフォルトの名無しさん [sage] Date:2008/06/16(月) 17:00:48 ID: Be:
初心者はタイトルに夢を見る。
↓
経験者は好きな言語を薦める。
↓
色々な言語がランダムに薦められる。
↓
さらに迷う初心者…その果てに
↓
何でも好きなのやれ、が結論になる。
真実を教えよう。「何でもいいからやった者勝ちだ!」
512 デフォルトの名無しさん [sage] Date:2008/06/16(月) 17:23:11 ID: Be:
初心者はelispからはじめるのが幸せだと思う
513 デフォルトの名無しさん [sage] Date:2008/06/16(月) 21:52:11 ID: Be:
初心者はタイトルに夢を見る。
↓
経験者は好きな言語を薦める。
↓
色々な言語がガンダムに薦められる。
に見えたw
真実を教えよう。「こ、こいつ動くぞ!」
514 デフォルトの名無しさん [] Date:2008/06/17(火) 21:14:32 ID: Be:
株の分析ソフトを作りたいんですけど言語は何がよろしいか教えてたもれ。
・株価のデータを外部から入手する。
・そのデータを元にチャートを表示するようにする。
・そのチャートにマウスで線を引けるようにする
(これは難しければ出来なくてもいいです)
以上のことがやりたいんです。
詳しく書くと
日や月単位で株価を縦軸、出来高を横軸にした四角いボックスを
表示するチャートが作りたいです。
http://www.asumiru.com/analyze/cv_c.html
こういうローソク足で出来高が多くなれば横に大きくなる感じです。
516 デフォルトの名無しさん [sage] Date:2008/06/17(火) 21:30:34 ID: Be:
ま た 株 か
自作は半年くらいかかるぞ
C#かJavaかフィーリングに合うの選べ