【M言語】キャシエ・CACHE【MUMPS】
: 1 [sage] 05/02/21 11:23:08ID:??? 医療、金融、物流、製造でいまだに活躍! 古参も新参者も、さー語ってくらっしゃい。 : 1 [] 05/02/21 11:24:46:Kfxv6UfG データベース新たな選択肢―リレーショナルがすべてじゃない 吉田 育代 (著), 梅田 正隆 (著) 価格: ¥2,310 (税込) -------------------------------------------------------------------------------- レビュー 出版社 / 著者からの内容紹介 「速い」「軽い」「安い」 こんなデータベースがあったのか! リレーショナル・データベース全盛時代に、 新しい選択肢を提供するスマート・データベース、 『キャシエ』の真実。 柔軟なデータ構造、高度な文字列の検索性能、 OSを選ばないマルチプラットフォーム。 医療、物流、金融など、 幅広い分野で活躍し続けるデータベース『キャシエ』。 歴史に埋もれてしまった優れたテクノロジーが、 新しい時代に蘇ってきた。 システム開発の効率化を促し、 ビジネスを自然な姿でITの世界に取り組む仕組み。 キャシエのすべてを解き明かす。 MUMPSから生まれた『キャシエ』の歴史から、 さまざまな産業界での輝かしい実績、 そして、これからの活躍の機会を、実例を交えて紹介する。 この人どっかで見たような、、、 : NAME IS NULL [sage] 05/02/21 12:13:50ID:??? お仕事ですか? 学生が興味持つような品じゃないと思うよ : NAME IS NULL [] 05/02/21 13:20:24:9u3FVZID リストアがうまくいかないのは何故? : NAME IS NULL [sage] 05/02/21 21:14:55ID:??? 宣伝? : NAME IS NULL [sage] 05/02/23 02:28:04ID:??? 評価用キット(シングルユーザライセンス無償版って奴)持ってるんだけど、いまいち 使い方がよくわかんないのよね。何かクライアントサイドはWindowsしか考慮されて ないみたいだし。言語バインディング増やす予定があるようなことを去年のセミナーでは 言ってたけど、例のスタジオとかいう環境の外から普通に使うことってできんの? : NAME IS NULL [sage] 05/02/23 14:06:28ID:??? 優良解説サイトのURIキボンヌ : SCOTT/TIGER [age] 05/02/26 00:02:33ID:??? 誰も使ってないのか、使っている人は2chを見てないのか・・・興味はあるんだけどな。 インターシステムズの中の人でもいいから何か情報書いてよ。 : NAME IS NULL [] 05/03/03 23:55:09:0QrS0ZXz SQLより絶対使いやすい!!MUMPS・Cacheを使用していると、 なんで、世の中ではSQLがもてはやされるのかが理解できない。 周辺機器とも接続しやすいし、DBの中で、BASIC的なコマンドが使えるのが いい。 : NAME IS NULL [sage] 05/03/04 13:17:12ID:??? あげるなバカ、知ってるやつはしってるんだから。。。 : sage [] 05/03/04 23:37:51:QCkP59xy 解説本が原本よりかなり安かったり 日経BPに広告打ったり マーケティングはかなり頑張ってると思う でも果実を取れるかどうかは。。。 : NAME IS NULL [sage] 05/03/06 17:52:15ID:??? >> 9〜11 詳細レポートきぼんぬ。 : NAME IS NULL [] 05/03/07 19:10:39:jgD1H//W cacheってデフォルトではダーティーリードなんだよな。 分離レベルを上げたときの性能はどうなの? : NAME IS NULL [sage] 05/03/07 20:19:54ID:??? この本はどうですか? ttp://www.amazon.co.jp/exec/obidos/ASIN/4990207904/ref=pd_sims_dp__3/249-8007258-8653131 : NAME IS NULL [] 05/03/07 22:41:46:czxLclBp 青色立方体研究所、ここに詳細あり。 ttp://zerogravity.hp.infoseek.co.jp/ : NAME IS NULL [sage] 05/03/07 23:25:19ID:??? RDBが出始めのころ、IMS使いのベテランが「RDBは理論は綺麗かもしれないけど、 肝心のパフォーマンスが駄目だから実用的じゃないよ」と嘯いていたのを思い起こさせるな。 ま、それもひとつの真実ではあるわけだけど。 : NAME IS NULL [] 05/03/08 10:56:31:z3MQGZom せみなーあるってよ ttp://www.intersystems.co.jp/healthcare/2005/ : NAME IS NULL [sage] 05/03/14 23:02:05ID:??? オブジェクトデータベースCach´e入門 シュプリンガーフェアラーク東京; ISBN:4431710620; (2004/05) をお持ちの方にお聞きしたいですが、これは Object-Oriented Application Development Using the Cache Postrelational Database の第2版と同じ内容ですか? 初版の内容であれば洋書第2版を購入しようかと。 : NAME IS NULL [sage] 05/03/15 22:57:14ID:??? ご注意ってところに 「本書記載の情報は、第1刷制作時のものを掲載していますので、〜〜」 まえがきには 「この第2版は、〜〜」とある 第2版1刷ということで、いいんだよな。 : 18 [sage] 05/03/16 23:33:04ID:??? サンクス。何かビミョ〜に不安の残る書き方してるんですねぇ。 調べるの面倒なんで洋書第2版を注文することにします。日本語版にしか載ってない 情報とかがあったらちと残念ですが、実は初版だったってオチが一番いやだし。 : NAME IS NULL [] 2005/03/26(土) 08:29:07:rtNEvCX1 なんか便利なのか?これ。 : 18 [sage] 2005/03/31(木) 23:33:44ID:??? 本届いた。予想していたより薄いので気楽に読めそうです。 : NAME IS NULL [sage] 2005/04/05(火) 21:57:34ID:??? これライセンスって幾らくらいなの : NAME IS NULL [] NGNG とりあえずどんなモノをつっこめてどんなクエリを掛けられるんだ? サンプル出せやコラ。 : NAME IS NULL [sage] 2005/04/07(木) 09:10:24ID:??? 優れてるとか何に向くかという表現ばかりで、 何の部分が優れてて何の部分が犠牲になるのか、 全く書かれて無いね。 : NAME IS NULL [sage] 2005/04/07(木) 11:26:05ID:??? Cacheを意識したオブジェクト設計をしないといけないなら 意味がない気がする。 : NAME IS NULL [sage] 2005/04/07(木) 15:24:06ID:??? ヂャ、SQL使う人には必要ないんだ。 : NAME IS NULL [sage] 2005/04/08(金) 01:00:50ID:??? ObjectScript、ちらっと眺めてみたけどこれ設計した奴変態だな。 よくもまあこんなに気持ち悪いデザインにしたものだ。これ使ってるユーザもある意味 尊敬する。 : NAME IS NULL [] 2005/04/08(金) 22:31:21:uEi9HtjL そのObjectScriptってのがSQLみたいなもんなの? : NAME IS NULL [sage] 2005/04/09(土) 02:12:52ID:??? 「SQLみたいなもん」が何を意図して質問されてるか誤解してなければ 「全然違うモノです」と回答しておきます。オブジェクト指向のスクリプト言語で、 そこで扱うオブジェクトが永続化できるようになっているわけです。 但しシンタックスが謎・・・設計し直す予定ないのかしら。 : NAME IS NULL [sage] 2005/04/09(土) 10:29:56ID:??? MUMPSをオブジェクト指向風に拡張したのがObjectScript。 設計しなおしなんていまさら。。。 : NAME IS NULL [] 2005/04/09(土) 14:45:17:b+5/xJ8y 何に使われているかは、大抵の場合病院関係で、少数派は運輸倉庫系かな。 うちでは、売上管理用に使用している。 特に何に使い易いかと言われると、大抵のシステムに対応できると思う。 ただ、プログラマー人口は少ない。Mumpsは、ANSI規格にも 登録されているので心配はないと思うけど。PG人口は少ない。 : NAME IS NULL [] 2005/04/11(月) 21:22:11:pM9ngf6N OLAPやチャート描画機能は標準装備? それともこういうのを別途購入する必要あるの? ttp://www.speedminer.com/architecture.htm : NAME IS NULL [sage] 2005/04/12(火) 10:24:43ID:??? キャシェー入門届いた。 とりあえずこれで全文検索OKのBBSっぽいの作ってみる。 本当にはえーのかな?はえーといいな。 : NAME IS NULL [sage] 2005/04/12(火) 14:59:00ID:??? ライセンス料金、聞いてからにしなよ。 webアプリの場合だと、いい値段になるから。 : NAME IS NULL [sage] 2005/04/12(火) 16:12:41ID:??? ライセンス料金などなど 好奇心くらいしかないので 問い合わせメールとかして後から メールだ電話だで連絡がバンバン来るようになると いやーんなので(ほんとあの会社にゃ参った参った) 知ってる人、教えてー。 : 中野ゆかり [] 2005/04/12(火) 19:40:41:WIfUK7r8 趣旨に反しててごめんなさい。「園田朋子さん」もしここ読んだら連絡ください! 真剣に探してます。 : NAME IS NULL [sage] 2005/04/15(金) 22:57:19ID:??? 漏れもライセンス料金気になるんだけど営業が後で来るのは嫌だな。 Webアプリで使いたいんだが100万円前後くらいまでで収まるなら試したい。 そうでないならオプソのDBを頑張って使うしかない。 ライセンスどれくらいか知ってる人教えてください。 : NAME IS NULL [sage] 2005/04/16(土) 01:47:21ID:??? ↑バカか、デブ死ねよ。 : NAME IS NULL [sage] 2005/04/21(木) 10:41:41ID:??? ttp://www.intersystems.co.jp/symposia/2005/index.html 開発者セミナー、行ってみようかと思ったけど大阪かよ : NAME IS NULL [sage] 2005/04/21(木) 10:44:26ID:??? うーむ。 tp://d.hatena.ne.jp/higayasuo/20050418#1113807275 : NAME IS NULL [sage] 2005/04/25(月) 17:51:10ID:??? >1氏 吉田 育代さんは、以前○経ソフトウェアに執筆されてました。 Cache'の入門書(緑のヤツ)は、初めての人には分かりにくい気がしますね。 : 1 [sage] 2005/05/07(土) 07:11:55ID:??? そですね。何かの雑誌でもみたことあるような、、、。和服着てました。 緑本は高価で手が出ません。とりあえず、お試し版はインスコ済みなのですが、、、。 : NAME IS NULL [] 2005/05/15(日) 12:24:52:0BKeCLiE 技術な情報 ttp://www.intersystems.co.jp/cache/technologyguide/technologyguide.html ttp://www.intersystems.co.jp/support/faq/index.html セールスな情報 ttp://www.ssl.fujitsu.com/news/2005/press050510.html ttp://www.intersystems.co.jp/press/press-releases/050510.html : NAME IS NULL [sage] 2005/05/18(水) 17:43:32ID:??? なんかイメージ的なことばかり書かれててイヤ。 なぜ高性能か、なぜ大規模に使えるのか、が書かれてないような。 : NAME IS NULL [] 2005/05/22(日) 19:45:41:8YDZ0AWO インターシステムズ(だっけ?)の人に会社に来てもらって説明聞いたけど、 それなりにいい値段したよ。ユーザー数によってはオラクルよりも高かったはず。 まぁ、勉強するとは言ってたけど。 分離レベルが Read Uncommited なのは、オラクル教の俺からするとちょっとな。 : NAME IS NULL [] 2005/05/23(月) 01:22:31:8SbtqB7t > 46 大事なことは、値段に対する能力がその製品が持っているか、と いうことだと思うね。 俺も以前はOracleだったけど、Oracleを知れば知るほど、金を ドブに捨てていることがわかるね。タコな仕様の尻ふきを 設計者、管理者がやらされていることに気づく。 ユーザには「初期導入コスト」よりも管理者に支払う 「人件費」を含む運用コストの節約に視点を向けるべき。 まあ人的スキルを除いても同じコストで実現できる 能力はCache'の方が上だと思うよ。 あと、READ UNCOMMITEDは「デフォルト」なだけな。 SET TRANSACTIONすればいいだけ。 本当のオラクル教信者は、名より実を取る。 競合製品は自分で試して評価することを実践する人が 多いのだけど、はてさて。 , : NAME IS NULL [sage] 2005/05/23(月) 09:52:04ID:??? だったらRDBはオープンソースが良い。 MySQLやポスグレも良いかもしれないけど、 Firebirdが一番。 : NAME IS NULL [sage] 2005/05/26(木) 18:04:10ID:??? MUMPSって調べてみたけど、非構造化言語で サブルーチンレベルのローカル変数すらないのね… 永続化データにはスキーマもないからデータ構造も アドホックになりがちという話。 古すぎてちょっと触りたくないな。 : NAME IS NULL [sage] 2005/05/29(日) 01:06:53ID:??? > 48 Firebird となったとたんにBorland製品とのマッチが 悪くなったのと、これはOSSのDBのほとんどについて 言えるがスケーラビリティにおいてはまだ大規模には向かない。 そうじゃないというなら、これに対する反論は大歓迎。 たかだかWebサイトや小規模部門サーバのDBならともかく、 病院のような(ちょっとした問題でも起こしたら 「人殺し」とののしるような客があいて)ところに OSSのDBを薦められる根拠があると俺も助かるから 教えてくんない? 医療業務や原子力関連など、生命にかかわるものに 関しては、O社も使用許諾書でこっそり「無保証」を言ってるからな。 それでも大丈夫な画期的方式がOSSにあるなら、しりてーなー OSSは自己責任だから、客に任せて、、はNGね。 そんな寛大で技術的に優秀なお客さんが沢山いれば幸せだねー > 49 マニュアルも試用版も、ベンダーサイトにある資料も ほとんど見ないで憶測で書いてるよね。キミ。 確かにCacheはMUMPSの過去資産をほとんど利用できる互換性を 持っているけどね。 N88BASICとVS.NETぐらいの差があるっていったら理解できるかな? この例は互換性に乏しいけどね。 : 49 [sage] 2005/05/29(日) 01:31:29ID:??? 今のところCache'には興味がないんで、 MUMPSについて調べた感想を書いただけなんだが どこか間違いあった? : NAME IS NULL [sage] 2005/05/29(日) 01:48:32ID:??? だったら「MUMPS」は触りたくない、って書けばいいのにねぇ。 厨房? : 49 [sage] 2005/05/29(日) 02:50:38ID:??? > MUMPSって調べてみたけど、(…中略…)古すぎてちょっと触りたくないな。 って書いたんだけど、何かおかしかった? : NAME IS NULL [sage] 2005/05/29(日) 03:09:24ID:??? あんたのお勧めはなんだ? たこな仕様ってなんだ? : NAME IS NULL [] 2005/05/29(日) 09:41:50:Xixe9HKd 古すぎるなら 古いから使わなくていいと思うものは使わなくていい 単なる食わず嫌いに過ぎない。 古いから悪いものばかりではない!! Mumpsは古いがSQLよりも速く使いやすい。 SQLは単なる巨大なエクセルシートで検索ができるだけの データベースにすぎない。 複雑なエクセルシートを検索するなら、スクリプトが複雑になる。 なので、マスターにおいておけば済むような情報でも、詳細情報に書き込み れーコードを巨大化させている。新しく好い物なんだろうか?? また、vbからSQL情報を取得するには、VBのレコード定義 スクリプト作成、スクリプトのコール、取得されたレコードの読み込み これだけの手順が最低でも必要。Cacheなら、VISM.OCXのプロパティ で十分対応できる。複雑なDB検索が必要ならMUMPSロジックを書けば対応できる。 またサブルーチンレベルでの変数と書かれているが、実際はMUMPSでは出来るが 正解。 Newコマンドと言われるコマンドがある。 正直、MUMPSを使用していて、このコマンドは使う人は使うが、 NEWコマンド嫌いな人は使わない。 MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた 人々には難しいかもしれない。 Mumpsを使いこなすと、SQLなんて使えなくなる。 Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う : NAME IS NULL [sage] 2005/05/29(日) 10:27:36ID:??? >MUMPSは1960年代からある言語だから、今のWindows始まってからpc始めた 人々には難しいかもしれない。 そういう人にはぜひCacheObjectScriptを。 いわゆる構造化プログラミングにも対応した 拡張M言語ともいえます。 クラスメソッドならVBライクなCacheBASICもあるし。 >Mumpsを使いこなすと、SQLなんて使えなくなる。 >Mumpsは人間の脳の記憶に近いらしいから、人類であれば使いやすいのではと思う これはMUMPSの肝である「グローバル」のことを言っているのだと 推測します。 いわゆる「永続化できる連想多次元配列」こそMUMPSをここまで 生き延びさせてきた要因かもしれない。 バリバリのプログラマなんだけど、RDB/SQLの考え方やその デメリットに辟易してる人なら、直感的に気に入るはず。 そんなによいものなら、なんで日本市場ではニッチなんだろう、 という疑問がある人は、吉田さんの本を読むべし。 : NAME IS NULL [sage] 2005/05/29(日) 10:37:54ID:??? いまだに階層型DBをマンセーする香具師がいるとは驚きだな。 そういう議論は80年代で終わったかと思ったが。 : NAME IS NULL [sage] 2005/05/29(日) 10:44:52ID:??? Cacheは何故隠されていたか ■速すぎる.. HWメーカーが支持しない 例えば、RDBなら1億円のマシンが売れるが、Cacheでは1000万円のマシンしか売れない ■日本企業がすべて開発販売に失敗 1980年頃O、T、M、P、H、(N)、D MUMPSはダメだ.. ネガティブキャンペーン ■ユーザーは成功しすぎて話したがらない 競合他社ではRDBで40億のシステムを、自社では8億で開発した… : NAME IS NULL [sage] 2005/05/29(日) 11:16:33ID:??? > 57 よく調べもしないでRDB派のFUDのノリそのままでくるとは 驚きだな。ていうか笑えるな。 いわゆるCOBOL方面の階層化DBとデータの持ち方が ちがうからな。 自分で試してから批判したほうがいいと思うぞ。 : NAME IS NULL [sage] 2005/05/29(日) 11:40:16ID:??? >■速すぎる.. HWメーカーが支持しない ちょっと前だと当てはまる構図ですね。日本のソフトウェアが 欧米製に完敗し、プラットフォームビジネスに切り替え。 ハード・ソフト両方売っているSIerはシステム開発はおまけで ハードで利益を出す。 オープンソースがはやり、Linuxがのさばり、利益率が高い RISC系オープンサーバが売れなくなって、安いIA/Linuxに 路線変更。今の頼みの綱はサポートサービスによる収益。 Cache'はハードの性能をあますとこなく生かすので、 ユーザのコストメリットは高い。 >■日本企業がすべて開発販売に失敗 「F」も入れといて。でも、最近は運用実績からみなおされてきて 既存のRDBリプレースならずとも分析系などで人気がでてきている。 >■ユーザーは成功しすぎて話したがらない おれも客の巨大データつかって、SQLアクセスのみ だったけどOracleとの性能比較したらびっくりしたよ。 そのときはRDB/SQLしか知らなかったから、 MUMPSグローバルの特性をISJにレクチャーしてもらって ダイレクトアクセスに処理を書き換えたら感動物だった。 いちおうDBA15年選手でOracleMasterも持っているので Oracleのチューニングは死ぬほどしたけど、勝てなかった。 : NAME IS NULL [sage] 2005/05/29(日) 22:10:39ID:??? データのretrieve以外もはやいのかな? セッションいっぱいで更新したらだめだめとかない? データファイル壊れても完全リカバリとかできる? 安全装置がないから早いですってのは嫌だYo : NAME IS NULL [sage] 2005/05/29(日) 22:41:39ID:??? > データのretrieve以外もはやいのかな? > セッションいっぱいで更新したらだめだめとかない? セッションいっぱいといっているのは、 サーバマシンリソースの限界のことを言ってる? 何の限界をさしてる? あと、セッションいっぱいになったがために 問題になった実例ケースを想定して話しているなら、 その実例を起こした製品はなんだ? それって、DB製品自体の問題だけじゃなくて、インフラや 消費リソースの見積もりが極度に悪いとかの場合もあるからな。 あ、あと、Oracleなんかだと負荷高騰による障害パッチが サポートを[買えず|買わず]に運用している環境にあたって なく、サポート情報も知りえないから障害なのか仕様なのか すら判別できないという悲惨なケースもあったなあ。 > データファイル壊れても完全リカバリとかできる? 当然。オンラインバックアップも可能。 > 安全装置がないから早いですってのは嫌だYo ああ、InnoDBがなかったころのMySQLみたいのね。 更新ログもってなかったらそりゃ早いだろ、と。 ちゃんと更新ログもってるし、もし速さだけを追求したい (テンポラリ作業用とか)トランザクションに対して Oracle の NOLOGGING のような機能もあるよ。 更新ログ転送してOracle DataGuardのようなリモートサーバ へのDB複製(シャドウイング)もできるしね。 : NAME IS NULL [sage] 2005/05/30(月) 03:14:23ID:??? なんかキモイ : NAME IS NULL [sage] 2005/05/30(月) 09:32:51ID:??? 儲の立てたスレは大抵キモいな : NAME IS NULL [] 2005/05/30(月) 12:40:02:bVXD8g/V MUMPSはダメだ.. ネガティブキャンペーン??? SQLこそ、くそDBである。早くなくなっちまえ。 ユーザーからみれば、安くて安定したシステムを希望する。 SQLエンジニアは、プログラムがややこしいのです、 時間がかかります。なので、コストが高くなりますで、 エンジニアっぽい能書きたれるけど、実際はSQLしか しらんから他のDBに手を出すのも今更、怖いで勉強もしない。 そこがいかん!!。 なんでも、キモイの言葉で済ます低脳な発言はやめろ。 言葉知らずども!! MUMPS,CACHEを知り尽くして、反論してみろ。 : NAME IS NULL [sage] 2005/05/30(月) 13:32:35ID:??? MUMPSって、DECのミニコンとかで動いてたヤツ? : NAME IS NULL [sage] 2005/05/30(月) 13:53:02ID:??? MUMPSの多次元連想配列って、どう使うのがセオリーなの? 「M(MUMPS)メモ帳」っていうページを見つけたんだけど、 1レコードをひとつの文字列としてまとめて変数に格納する みたいなテクニックだった。 例えばこのスレのを^DATというグローバルに入れる場合は ↓のような感じ。 ^DAT("db",1108952588,1)="2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。" 素人考えでは、 ^DAT("db","Board Name")="データベース板" ^DAT("db",1108952588,"Thread Name")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,"Year")=2005 ^DAT("db",1108952588,1,"Month")=2 ^DAT("db",1108952588,1,"Date")=21 ^DAT("db",1108952588,1,"hour")=11 ^DAT("db",1108952588,1,"minuit")=23 ^DAT("db",1108952588,1,"second")=8 ^DAT("db",1108952588,1,"content")="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" こんなツリーを作ってしまいそうなんだけど。 効率が悪くなるからダメ? : 67 [sage] 2005/05/30(月) 13:56:22ID:??? あ、名前とメアドとのフィールドを忘れてた。 ^DAT("db",1108952588,1)="1;sage;2005;02;21;21;11;08;医療、金融、物流、製造でいまだに活躍!\n古参も新参者も、さー語ってくらっしゃい。" こうですね。 : NAME IS NULL [sage] 2005/05/30(月) 14:28:16ID:??? YahooBB219023164105.bbtec.net 荒らし常習犯↑↑ : 62 [sage] 2005/05/30(月) 23:35:36ID:??? > 65 俺は製品の批判はするけど、RDB理論とSQL自体は批判しない。 普通のファイルアクセスだって、大量データの全なめ用途 だけなら最速の場合もある。 適用ゾーンと使い方を間違えずに、問題にフィットする データ操作を行えばいいだけ。 中傷なんぞ勝手に言わせとけ。どうせプログラムしか 組んだことなくて、要件定義から運用保守までなぞ したこともないし苦労したこともだろうから。 > 67、67 建設的な質問サンクス 上の例だと、";" を区切りにしたPIECE構造はあくまでデータで、 このデータを検索するキーとしては("db",1108952588,1) =板、スレ、投稿番号の3つでよいという構成ならOKと いうことになるね。 キミが書いた例なら、そのあとの要素が規則的に続き、本文は データとして扱うなら ^DAT("db")="データベース板" ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " の方が効率的。 要素確保の分効率が悪くなると思いがちだけど、 同じ要素位置の値は、そのままストレージに格納されるのでは なくて、その前の同じ要素構成の部分までは同じ、という 情報だけを持つので、このパターンだと、板とスレの要素値は 省略されてストレージに格納される。 この並びによって、実際の格納サイズも削減できるし、 RDBなら検索キーのカーディナリティ(多重度)が低い 場合でも、フルスキャンする量が減るので効果大 ソートは不要、ストアした時点で自動的に要素順に格納してくれる。 削除・更新したときのストレージの断片化も心配無用。 ストレージエンジンが自動デフラグしてくれる。 デフラグ負荷も実運用上ほとんど気にならない。 あくまでここまでは標準MUMPSのグローバルアクセス。 Cache’の拡張Mはまだいろいろある。スキーマも持たせたい 場合は、クラス定義をすることになる、ストレージには最終的に クラスに対応するグローバルにストアされるが、その構成が 異なる。その辺はマニュアルを見るべし。 ttps://www.intersystems.co.jp/support/csp/main.html ttps://www.intersystems.co.jp/support/csp/ggbl/ggbl.html ttps://www.intersystems.co.jp/support/csp/ggbl/ggbl_sqlobj.html : NAME IS NULL [sage] 2005/05/31(火) 22:59:33ID:??? UNIXでshell&Emacsべったりな生活を送っていた習性からかLinux版であっても Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている のでしょうか? 当方OracleのクライアントはSQL*Plusが最強だと信じて疑わないコマンドライン派です。 Cache'に興味はあるんですがWindowsが(ry : 67 [sage] 2005/06/01(水) 12:07:00ID:??? ありがとうございます。 レコードの要素を文字列で持とうが添字で持とうが、 データを一直線に並べて(という表現が適切か分かりませんが) 保持するのがいいんですね。 あと、検索性についても知りたいのですが、2chの例で続けますと、 更なる要件として、スレのage/sageがあります。 板を表示するときには、各スレの最終投稿日時の降順が基本ですが、 スレごとの最終投稿日時を決める際に、メール覧に"sage"という文字列が 含まれている投稿は考慮しないというルールです。 この場合、投稿データの登録時に、メール覧に"sage"が含まれない場合に スレ別最終投稿日時インデックスを更新する、という処理になると思い ますが、そのインデックスをどう表現するのがいいのでしょうか。 あるいはもしかすると、の例の場合インデックス自体いらないのでしょうか。 ご教示ください。 : NAME IS NULL [] 2005/06/01(水) 16:29:37:1D0d6fgZ M言語のグローバルについて グローバルに書き込んだ時点で、ノードごとにアスキーコード順に 書き込まれるようになっています。 のグローバルを下記の順でSetコマンドを実行した場合 Set ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " Set ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " Set ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" Set ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" Set ^DAT("db")="データベース板" 逆にグローバルをセットしても グローバルを参照した場合は、下記のように表示されます。 ^DAT("db")="データベース板" ^DAT("db",1108952588")="【M言語】キャシエ・CACHE【MUMPS】" ^DAT("db",1108952588,1,2,21,11,23,8)="医療、金融、物流、製造でいまだに活躍!<br>古参も新参者も、さー語ってくらっしゃい。" ^DAT("db",1108952588,2,2,21,11,24,46)="データベース新たな選択肢 〜 略 〜 " ^DAT("db",1108952588,3,2,21,11,24,46)="お仕事ですか? 〜 略 〜 " ノードで参照する場合であれば、インデックスは不要です。 : M経験者 [sage] 2005/06/17(金) 19:46:26ID:??? キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 前ゼロキー値がソート順で後ろになるのはやめてくれ〜 コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 : M経験者 [sage] 2005/06/17(金) 19:59:34ID:??? ごめん。もうひとつ追加。 >ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 でこのときネスト外に同名変数があると、 有無を言わさず上書きになるのはやめてくれ〜 : NAME IS NULL [] 2005/06/18(土) 06:30:49:QkO2JNYV >キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 "000005" 000005 の件ですね。 これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。 仕様としては理に適っています。 >前ゼロキー値がソート順で後ろになるのはやめてくれ〜 本件も、ソート順がAsciiコードである事を理解されていないからですね。 仕様としては正しいです。 >コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 何を言おうとしているのかわからん >ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 Newコマンド使わなきゃいいんじゃないの? >ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 どこのMumpsを使用したの? M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも しれませんが。仕様を理解されて使うと 本当にいいDBですよ。 : M経験者 [sage] 2005/06/18(土) 13:08:08ID:??? あーレスどうもです。 > >キー値前ゼロの有無でダブルコーテーションの要不要が変わるのはやめてくれ〜 > これは、ごめんなさい。あなたが、コンピュータそのものを理解していないだけです。 > 上記の"00005"は文字列として扱う、000005は数値として扱うなんです。 >仕様としては理に適っています。 理に適っていません。 「000005は数値として扱う」は厳密に言うと5として数値扱いになります。 そして555555は常に数値扱いとなります。"555555"と書いてもです。 つまりこの問題の本質は、固定桁数数値をキー値として扱う場合、 先頭がゼロかそうでないかで処理を分けなければいけないということです。 ○○コードとか○○区分とか、世の中固定桁数数値で扱わなきゃ いけないものが結構あるのですが。 # って書くと「常に前ゼロなしで扱えばいいのでは」という話になるのですが、 # それはそれで表示時の前ゼロ書式化/書式化解除が手間でしょう。 >>コメント行入れるとネストがぶっちぎられるのはやめてくれ〜 >何を言おうとしているのかわからん ↓こんな感じ。 D ;ネスト開始 .S n=1 ;ネストの中。こことか .;こことかにコメントは書けるが ;ここに書くとネストも終わってしまう .S n=n+1 ;この行は実行されない いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 >>ネスト内でNew付け忘れるとネスト抜けても変数が残るのはやめてくれ〜 > Newコマンド使わなきゃいいんじゃないの? 言い換えると「ローカル変数は使用禁止。構造化は諦めろ」ということですか? >>ループのブレイクがフラグ変数使わないと書けないのはやめてくれ〜 >どこのMumpsを使用したの? これは失礼。説明不足でした。ループ継続条件だけではなく breakもあるwhileループを想定しています。どう書くのがスマートですかね? >M経験者と言われても、数ヶ月でしょうか?SQL(2次元DB)経験者ではとっつきにくいかも >しれませんが。仕様を理解されて使うと >本当にいいDBですよ。 Cache'4で1〜2年ほど。VT200環境で動かす業務アプリでした。 きっとそれでは経験不足なのでしょうが、その上での感想は ・確かにDB自体の処理スピードは悪くない ・しかしMの言語仕様がロートルなので、生産性はまったくよくない。 ・変数スコープが変態的なので、特にデバッグでは確実に死ねる といったところ。構造化が中途半端にしか出来ないのは困りものですね。 Newの仕様に意義を見出すかどうかで、Cache'に対する印象が 分かれるかと思います。 : M経験者 [sage] 2005/06/18(土) 13:10:25ID:??? やめてくれ〜シリーズにもうひとつ追加。 空白文字の数が一つか二つかに、文法的意味を持たせるのはやめてくれ〜 : NAME IS NULL [] 2005/06/19(日) 13:00:07:GkH7LfsQ 前ゼロの件ですが、0005も5もMumpsでは5です。 Mumpsで0005として扱いたければ、$E(10000+5,2,5) と書けば0005と表示されます。 確かに世の中では、固定数値で扱う事は多々とありますね。 Mumpsでは無駄なデータ情報は持たないが原則で作成するので 他のPic x(20) とか 8桁固定とか使われるDBではそのように0詰め とかしてDB登録しなければいけないですね。 Do<スペース><スペース>の件ですね。 コマンドの仕様はご存知ですか? Mumpsの基本プログラムは昔のBasicと同様上から下の行へしか行かないGoto,Quitなど 特殊な場合を除き。 Do<スペース><スペース>は、このコマンドの次の行以降で"."で始まる行を飛び先 として扱い、"."で区切られた行がなくなればそのとび先は終了となっています。 なので、"."のない行があるからとび先は終了で正しいのです。 >>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 それは、当然気を使わなければいけませんね。 Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合 などは有効と思えますが、重要な変数名であれば、いたるところで変更される 事のないように変数を利用するのがいいと思います。 よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、 それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム になるなら、古典的なプログラムでもいいと思います。エンドユーザーから 見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な 仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても 彼らの一人よがりでしかありません。 breakもあるwhileループ どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで 十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか? その文コマンドを覚えなければいけませんよ。 Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成 されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように バージョン違えば、コマンドも違うなんて事にはなりにくいのです。 生産性がよくない事は全くをもってありません。 コマンドを知らないプログラマが言う言い訳に過ぎません。 空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。 空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか? 仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を 感じているんではないでしょうか? : NAME IS NULL [sage] 2005/06/19(日) 13:15:52ID:??? 話のすりかえもはなはだしいな >エンドユーザーから >見れば、プログラム内容ははっきりどうでもいい話なんです。それより、完璧な >仕様で動作してくれればいいのです。エンジニアが、頻りに構造化構造化と言われても >彼らの一人よがりでしかありません。 こんなこと書いといて、あとはひたすらMumpsの擁護かよ。 : M経験者 [sage] 2005/06/20(月) 00:13:48ID:??? 遅ればせながら最後の一分の誤記を訂正致します。orz 誤: Newの仕様に意義を見出すかどうかで、Cache'に対する印象が 分かれるかと思います。 正: Newの使用に意義を見出すかどうかで、Mに対する印象が 分かれるかと思います。 さんは「意義を見出さない」方のようですね。 >確かに世の中では、固定数値で扱う事は多々とありますね。 数列をあらわす項目は文字列型、数量をあらわす項目は数値型、 というように使い分けられるのがベストですが、Mでは言語仕様上 先頭がゼロなら常に文字列型(但し先頭に"+"をつければ前ゼロを除去し 数値型にキャストしたことになる)、そうでなければ常に数値型 という扱いになってしまうようです。 結局、「固定桁数数値という要件に対する解決は、Mにはない」 という解釈でよいのですかね。どのように解決しているのか 事例を出していただけるとむしろありがたいのですが。 >>いちいちコメントアウトするときも(.の有無に)気ぃ遣わなきゃならんとは…。 >それは、当然気を使わなければいけませんね。 "."を評価する以前に、コメント行の除去が行われるよう 文法解析仕様が組まれていれば、気を遣う必要すらないのですが。 「当然」なのではなく「理不尽な仕様」と考えます。 >Newコマンドの件ですが、同じ変数名を、あるサブルーチンで使用する場合 >などは有効と思えますが、重要な変数名であれば、いたるところで変更される >事のないように変数を利用するのがいいと思います。 「重要な変数」が引き立つのは、「重要でない変数」があるからです。 この「重要でない変数」の寿命・名前の有効範囲をサブルーチン内に 閉じ込めることがNew(というよりローカル変数)の真骨頂なのです。 (MではNew宣言した変数でも同名での読み書きが下位ネストで可能なので、 他言語で言うところのローカル変数とはちょっと違う) グローバル変数の読み書きは要注意というのは確かにその通りですが、 ローカル変数にも注意を要求されるのは組む側としては負担の増加です。 >よく、構造化構造化と頻りに言葉に出されるエンジニアさんがいますが、 >それが、絶対正しいのでしょうか?構造化して便利に利用できるのもいいですが >それにより、プログラム変更が難しくなり、仕様変更に耐えれないプログラム >になるなら、古典的なプログラムでもいいと思います。エンドユーザーから これはとんだFUDですね。この文脈では 「構造化(プログラミング)するとプログラム変更が難しくなり、 仕様変更に耐えられないプログラムになる」 というように読み取れますが、その根拠は何ですか? 逆に古典的なプログラムだと、そんなことはありえないんですか? 構造化/非構造化それぞれについて、具体例を挙げていただけませんか? 私の経験では「構造化プログラミングによりプログラムの見通しはよくなり 製造時の気遣いが減る分生産性は上がる。プログラム構造にハマれば プログラム変更時に当該部分を差し替えるだけですむので、 仕様変更に耐えるチャンスは増える」なのですが。 長くなったので次へ。 : M経験者 [sage] 2005/06/20(月) 00:15:06ID:??? >breakもあるwhileループ >どんなのを想定されていますが、VBなどで書いてみてもらえれば書きますが VBだと、Exit Do/Exit Forにあたりますね。 Do While i < 10 If i = j Then Exit Do i = i + 1 Loop # 図らずもcontinueはあるんだな…。 >M言語の仕様自体は確かに古いです。おっしゃる通りだと思いますが、でもそれで >十分機能は果たしています。最新の言語のようにコマンドが多い方がいいですか? >その文コマンドを覚えなければいけませんよ。 これまたFUDですね。CもJavaもC#も予約語の数は決して多くはないですよ。 その分ライブラリが多いのですが、それは適而リファレンスを見ればよい話です。 予約語分を網羅すれば制御構造の文法は分かるのだから、 むしろ制御構造と機能を分けた、洗練されたやり方だと思います。 逆にライブラリを含めた上でコマンドの少なさを誇られても、 それは即ち実現できる機能の貧弱さを示すだけなのですが…。 >Mumpsは基本的にa-z,$a-$z,Za-Zzなどアルファベットまたは$付き,Z関数で構成 >されていて、コマンドは少なく仕様は世界基準も整備されている、新興言語のように >バージョン違えば、コマンドも違うなんて事にはなりにくいのです。 >生産性がよくない事は全くをもってありません。 >コマンドを知らないプログラマが言う言い訳に過ぎません。 ここで言われている生産性とは、単に習得の容易さのことであり、 私が考えている生産性とは意味が違います。私が考える生産性とは 「文法は一通り習得したその上で、如何に気遣いなく製造・デバッグが出来るか」 です。前述の通り、前ゼロの有無を考慮したコーディングが必要だったり、 コメントアウトの際ネストに留意する必要があったり、 うっかりNewを付け忘れてもコンパイルエラーにならなかったり、と どうも「他言語ではしなくてもいい苦労を強いられている」 ように思えてなりません。やはり生産性はよくないと考えますね。 >空白文字が1文字2文字で文法が変わると言うのは、それはそれに意味があるからです。 >空白文字を1つであなたは、プログラムを書いたプログラマの意思を判断できますか? >仕様は仕様なんだから、それに対応できる理解力が必要です。なので、Mumpsに抵抗を >感じているんではないでしょうか? 私もいろいろな言語をやってきましたが、空白文字を区切り文字としてのみではなく その個数にまで意味を持たせる言語はMが初めてでした。 他言語では空白文字がいくつあっても同じ意味合いでしたから。 そんなMの変態的文法に抵抗を感じていることは、否定しません。 えーと…、ところでこれ()、釣りじゃないんですよね。 : NAME IS NULL [sage] 2005/06/20(月) 14:10:48ID:??? >固定桁数数値という要件に対する解決は、Mにはない データの型としては、Mには文字列しかありませんので、 プログラムでどうにかするだけ。 Cacheは知らんが。 : M経験者 [sage] 2005/06/22(水) 20:16:56ID:??? >データの型としては、Mには文字列しかありませんので、 微妙に不正確な気が。いや感覚的には分かるけど。 ・変数に型はない ・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する 厳密には↑では? >プログラムでどうにかするだけ。 ないものねだりなのは分かってますが、結局組む人が知恵使って どうにかして正しく動作するようにしないといけないのね。 固定桁数数値使用時の「定石」みたいなのは 確立されていないんでしょうか。 : NAME IS NULL [sage] 2005/06/22(水) 23:19:17ID:??? >・変数に型はない >・文字列扱い/数値扱いどちらで評価されるかは、格納値に依存する 同意。 でもその為にパタンマッチングが存在する。 いちいちそうしなければならないのか、という気持ちもわかるけど 言語の仕様で対応されていないならMに限らず多かれ少なかれ 他の言語でも知恵使ってプログラムで対応してるでしょ? : NAME IS NULL [sage] 2005/06/24(金) 22:11:56ID:??? > Mに限らず多かれ少なかれ ダウト。 多いと少ないじゃ天と地の差だろう。 : M大好き [] 2005/06/25(土) 18:40:13:84dv6T3H DSMから始まりVMS、SP−MUMPS,U−MUMPS、キャシエと M言語を使い始めて約20年。その間、メジャーなDBとは一通り出会いまし たが。。。可変長の利便性は離れがたいものがあり、今後もM言語をメインに 使用続ける事になると思います。 : NAME IS NULL [sage] 2005/06/26(日) 14:24:14ID:??? キャシエも可変長データ扱うけど、 容量の大きなグローバルをキルしてもcache.datがHDD上に占める サイズはキルする前のまま…グローバルが大きくなればそれだけ cache.datも大きくなるのにグローバルをキルしても小さくならないんじゃぁ 可変長なんだか固定長なんだか…中途半端だとおもう。 : 67 [sage] 2005/06/29(水) 14:07:08ID:??? スレッドフロート方式の掲示板の ・書き込みが新しい順にスレ表示 ・スレ内容は最新X件を表示 ・ただしメール欄が "sage" のものは考慮外 という表示についての indexing を質問したかったんですが… : コンチハ [] 2005/06/29(水) 14:54:57:n2BAd9gd Windows機上の「スタジオ」という統合環境からのオペレーションを強要されるのが なんとかならんもんかと思うのですが、その辺古くからのユーザさんはどうしている のでしょうか? 私の隣の彼は、Cache ObjectScriptのプログラムはMIFESで書いてますね。 私もデバッグはターミナル(つまりコマンドライン)でやってます (^^ : コンチハ [] 2005/06/29(水) 14:58:58:n2BAd9gd ないものねだりなのは分かってますが、結局組む人が知恵使って どうにかして正しく動作するようにしないといけないのね。 固定桁数数値使用時の「定石」みたいなのは確立されていないんでしょうか。 何しろ教科書も少ないからなあ。皆さん自分の工夫でこなしているんでしょうね。 ちなみに、Cacheなら固定桁数数値をDataTypeで定義してしまえばOKでしょう。 : NAME IS NULL [] 2005/06/29(水) 15:39:07:XHeGGAmV , -'"´  ̄`丶、_ ,.∩ `ヽ 〃∪'´ ̄`二二人\ ヽ | ツ´ ̄ ̄ ̄ ̄´ ヾ ヽ. ', |ハ ,ニ、 ,. - 、 | | | l | | ハ ィハ ,二ヽ. | | | | | 同じ板にコピペするとそのままだけど、 | | | じ' |トJ〉 /)} l | 違う板にコピペすると鬼のような怖い顔 | ハ 、'_,  ̄,, 厶イ川| に変わる摩訶不思議な佳子様コピペ。 l l /\ .. イV\川 | ,' l l ,イ `l ̄´ / /ヽl l l | l ハ `メ、 〃 ヽヽ、__ノ : NAME IS NULL [sage] 2005/06/29(水) 16:28:27ID:??? 「固定桁数値」という考え方は数を表示するフォーマットの問題に過ぎないので、 (想像だが)普通はMプログラマはソート等で数として扱いたい場合は 「001」と「01」と「1」が別の添え字(値)として同居したりするのを防ぐために、 先行ゼロをつけたままの形式ではグローバルにsetしないとは思う。 $tr($j(数値,桁)," ",0) で固定桁表示にできるし +固定桁数値 で元に戻るし 仮に先行ゼロをつけたままでも演算はできるし 何が不満なのか何をそんなにこだわっているのかがさっぱり見えてこない。 : U ◆CZtFsGiu0c [sage] 2005/06/30(木) 13:03:59ID:??? インターシステムズの人と話す機会があったので、Eclipseのプラグインとか 考えていないんですか? と聞いてみた。検討はしているが、計画はないとのこと。 : NAME IS NULL [sage] 2005/06/30(木) 15:05:30ID:??? 「固定桁数値」は、ノードにセットするときはソート順を間上げて0を取るって感じでしょうか? 希に、"5"と"05"は別のデータとして管理してくれ、とかいわれて泣きを見る事がありますが。 : NAME IS NULL [sage] 2005/06/30(木) 15:08:49ID:??? 10.50 をノードにセットすると、10.61 より後になるとか。 : NAME IS NULL [] 2005/07/02(土) 16:31:32:VLT50gqA 知り合いにCacheってどうなのって聞かれたので、 「別の言語を1本知ってるひとなら大丈夫だよ」と答えました。 1日だけ研修で習ったのですが、なかなか素直な言語だと思いました。 : NAME IS NULL [sage] 2005/07/05(火) 17:27:47ID:??? 知っている別の言語が何かによって 印象はかなり変わってくるな。 : NAME IS NULL [] 2005/07/19(火) 19:55:51:19Obe/Ej 最近知ったのですが、Cache'のライセンスの方がOracleとかよりも高いですね。 昔は安かったのかもしれませんが現在はOracleの約2倍くらいしてるみたいです。。。 : NAME IS NULL [sage] 2005/07/23(土) 21:06:18ID:??? >99 基本的にユーザライセンス(指名・同時)の計算を 単純にユーザ数だけで計算してるからだね。 負荷分散を考慮した複数サーバ構成でやると、 Oracleよりはるかに安くなるケースがある。 あと、言語の生産性を「昔のM言語」だけで語るのをやめてくれー。 あと、言語オタクは死んでくれー。DBMSの本質を語れないやつは ここにくるなー。お前らは一生プログラマーでいろー。 プログラミングの話題しかできないやつとは議論したくねー。
凡例:
レス番
100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている
名前
名無しさん (青) → sage のレス
名無しさん (緑) → age のレス
ID
ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID
このページは2ch勢いランキング が作成したキャッシュです。元のページはこちら 。削除についてはこちら 。