はてなキーワード: Csvとは
俗にいう「使えないシステム」ってやつをつかまされたのかもしれない。
今、WEBアプリみたいので、業務ツール作っているんだけど完成が見えてきた段階で実はボロボロのものが出来上がってることに気が付いてきた。たとえば月報とか日報みたいなアウトプットが必要なデータが10種類ぐらいあるんだけど、全部CSVっていう言語でしか出せない。CSVをエクセルで開くとところどころ文字化けになってて全然使えないし、そもそも罫線もないしページングもされてない。社外のコンサルに聞いても、CSVは機械同士がやり取りするための言語で、人が使うデータはエクセルで出せるようにするのが普通って言っている。ベンダーにそういったら「それは無理」の一点張り。コンサルはベンダーの瑕疵だからなおさせろ、ベンダーはやらない、で膠着状態。CSVだけじゃなくてほかにも必要な集計が画面上でできなかったり、そもそも機能自体が欠落していたりとかしてどうにもならない。
このまま話がすすまないで納期間に合わなくなったら大変なことになるって言っても「仕様変更で納期が延びるのは当然だし、その場合再見積もりになる」とかサラッというし。20代のクソガキが!つうか仕様変更じゃねーしおめーの能力不足でこっちが迷惑こうむってんの!って、ベンダーに文句言ったところで何かが変わるとは思えない。だからといって追加で払う金もない。裁判する時間も金もない。死にそうです。
★地方公共団体とか国とかの公的団体は、所有している普通預金口座・当座預金口座、郵貯口座を、
ネットでリアルタイムで開示するシステムを入れてみてはどうか?
(但し、個人との間の入出金取引は、個人情報の関係で個人名だけマスキングする。
★例えば
「茨木市名義の、関西アーバン銀行当座預金口座の、10月3日の入出金状況」を、
「こういう業者に市は34万円支払ったんだ」
と全てガラス貼りになる。
★恐らく全法人の法人税・固定資産税・消費税等の納税情報が、全てガラス張りになる結果になる。
つまり、全ての企業の納税額や対政府・自治体取引が開示されることになる。
「それは問題だ」という意見もあるだろうが、そもそも法人税納税情報は、隠すべき情報なのか?
★全ての政府・自治体の入出金情報をガラス張りにするだけじゃなく、
そのデータをCSV形式で自由にダウンロードできるようにすれば、それを使った各種ビッグデータ解析が生まれる。
企業の与信調査とか、こういうガラス張りシステムがあれば、ものすごく捗る
「大学教師が新入生に薦める100冊: わたしが知らないスゴ本は、きっとあなたが読んでいる」のCSVファイルを重複排除・ソート。出現数3回以上だけを抜き出してみた。記号が統一されていなくて漏れてしまっているのもあるかも知れない。(ゲーデル、エッシャー、バッハ─
の長音風記号はなぜか統一されていて、Amazonでも全く同じ表記)
世の中にはマニアがあふれている。
これに尽きます。
「僕は世の中を知っている大人だ。」なんて
こんな身近に知らない世界はありました。
中でも僕を驚かせたのは
嘔吐好きとか、
ゲロはいてる女性見て、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ
そのゲロかぶって、なんで興奮するんですか!? Σ(゚∀゚ノ)ノ
キワモノ好きなんて、
裸の女性がミミズや昆虫にまみれて、それを食ってんですよ! Σ(゚∀゚ノ)ノ
さすがに気持ち悪くなりました。。。
男は半分の7千万人でしょ?
エロに情熱がある若者から中年層だとその半分強で4千万人として
その4千万のうち
ってどのくらいいるんでしょうね。。。
作る人がいて見る人がいるんだから、まあソコソコな人数いるんだろうなあ。。
【らぶらぶAVさーち】
AVの検索サイトです。
ちなみに、ワンクリックで検索できるピックアップ検索は私の趣味です。w
最近は、つぼみ、紗倉まな、ほしのあすか、臼井あいみがオススメです。www ぐう可愛い!(゜∀゜
Nginx + php-fpm + MySQL で動いています。
言語はPHP + Smarty + Javascript(jQuery) で書いています。
あと、スクレイピング用に .NET で windowsアプリを作りました。
すぐ誤動作してしまうのですよね。。。
PHPだと対応し直しが面倒なので .NET に逃げました。。。。ヽ(°▽、°)ノエヘヘヘヘ
データは、アフィリをやっている
動画サイトのduga さんと、MGS動画さんから持ってきています。
DUGA
データを常に最新にしておくために
個人的には
待ち合わせで暇なときに
てな感じで使っています。
んで、プログラマー()とか言ってる奴の仕事の大半はただただ命令通りにコードを書いてくだけなんだから一昔まえの事務仕事と一緒。
誰でも出来る簡単なお仕事。
なぁなぁ、それってどうやって実現してんだ?
SI界隈でメシ食ってるけど、見てきたコードの9割がクソコードなんだが。今日でも20年前より状況が良くなってる感じがしないぞ。
ヒープとスタックの区別も知らないスコープの意味もわかってない時間計算量も空間計算量も考慮されてなくて、
利用者が1人なら動くけど10人で利用すると挙動がおかしいとか、
データが100件ならすぐ終わるけど10000件だと24時間たっても終わらないとかメモリがあふれるとか、
月や年をまたいだはずなのに32日になってるとか13月になってるとか、月末締切のはずなのに月末の前日に締め切られるとか、
SQLインジェクションどころか認証もしてないのに他人のパスワード書き換えられるとか、
カンマやダブルクォートを入力したらCSVな出力データが壊れるとか、
マルチバイト文字列をバイト単位で分割して分割部分の文字を壊すとか、
そういうことがおきないんだよな? おまえのとこでは。
本当にどうやって実現してるんだ?
CSV読み込めるだけ立派だわ。
今後も表組みで管理していきたいので
非常に困ってしまいました。
できる方は日常的にやっておられるようです。
同様の処理を実現するシステムを構築することは、可能か不可能かで言えば可能ですが
表形式の編集画面はご提供できますが、Excelほど柔軟には作業できません。
列ごとコピーしてデータ貼り付けて表作るという一見簡単そうに見えることでも
レアな表を作成する場合はCSVで保存してExcelに取り込んで加工してください。
・・・とご説明申し上げたところ
担当者さんはげんなりした表情ですっかりやる気をなくされたようなんですが
この先大丈夫でしょうか…
うちの部署に入れる新しい業務システムの構築の担当になって、昨日から打合せが始まった。今までエクセルで管理してたものが多くて結構表組みで管理したいものがたくさんあったから、そういう要望を業者に伝えたら「いや~、、ハハハ・・(だったら今まで通りエクセルでやれば?)」みたいな反応。例えばフィルターとか超使ってるし、タブをドンドン増やしてハイパーリンクでつないで元データから引っ張ってきて計算して表組みを作成するとかいつもやってるような作業が新システムだと厳しい(=できないor莫大な時間と金がかかる)らしい・・。帳票は固定になりますね、帳票増やすと増やした分だけ金かかります、みたいな感じ。いちばんビビったのがコピーペーストができないって言われたこと。列ごとコピーしてデータ貼り付けて表作るっていう単純なことが、何百万だか払って作るシステムではできないとか・・。(CSVで保存してアップロードしてくださいとかなんとか言ってたけどそんなことしてられっか!みたいな・・・)なんかいきなりやる気なくなってるんですけどこの先大丈夫かな・・。
現在二十代後半の自分は小学校でのコンピュータ教育が始まったタイミングの世代です。
始めは「学校へコンピュータ導入しました」みたいな申し訳程度な感じだったと記憶しています。
小学校でのコンピュータ教育の内容としてはCD-ROMを配布され、ODへ挿れるとソフトウェアが書き込まれたISOが自動起動して、そのソフトウェア上でコンピュータを学ぶという形式だったはずです。
学習ソフトウェアは勝手にフルスクリーンになるわけですが、今思えば無知な小学生がOSの設定を変えてしまわない配慮だったのだと思います。
実はこのあたりの記憶は曖昧なので学習ソフトウェアの内容は以下のような感じだったはずです。
これ以外もあったような気がしなくも無いですが、前提として私は小学生男子なので興味のないものは記憶からすっぽり抜け落ちている可能性が高いです。
この中で一番出来が良いのはパラパラマンガツールで、おそらくはプレゼンテーションなどを学ばせるためのものだったのでしょう。
時代を考えるとFlashが出始めの頃でありユーザーインタフェースや機能はFlash作成ツールから影響を受けていたようです。
ポケモンの戦闘シーンを完全再現したことでクラス内でヒーロになったのでこのツールには思い入れが深いですw
感覚として元も近いFlash作成ツールはParaFla!で、ParaFla!とペイントを足して2で割ってタイムラインシーケンスが無い感じでした。
地図を学ぶゲームも比較的良い出来で、ユーザーインタフェースはシムシティな感じでしたね。思いっきり影響を受けてるようでした。
確かストーリー仕立てになっていてクリックしてるだけで進み、地図記号とか学べるんじゃなかったかなあ?と記憶が曖昧です。
この学習ソフトウェア、どうコンピュータ教育に活かされていたか?と言えば、何にも活かされていませんでした。
教師は軽くマウスやキーボードの使い方を指導するだけで、あとは良い言葉を選ぶなら生徒の自主性に任せて、変な設定等を行わないように監視しているだけでした。
どういう指導要領になっていたかは知りませんが、コンピュータによるオートメーションを過剰評価して授業もオートメーション化出来るかも?と国は考えたのでしょうか?
まあコンピュータ教育が導入された最初期ですから実験的な意味合いも多分に含まれていたと思います。
パソコンの起動方法から始まり、ローマ字入力(小学校はひらがな入力)、そしてMS Officeへと入りいます。
このあたりは民間のパソコン教室と変わりがないかも知れません。
小学校で行われていた学習のオートメーション化への期待は無惨にも崩れたらしく、教師は手取り足取り教えてくれます。
それは新規フォルダや新規ファイルの作成方法、メールやWebブラウザの使用方法、その他今現在皆さんが日常的に使うであろうソフトウェアの指導が全く無いです。
どうやら学習のオートメーション化は不可能だと気づいたため、今度は思いっきり実用に振ってMS Officeマスターを育てるという選択をしたようです。
Wordでは文字の大きさや色、背景色、ワードアートの使用法、図の挿入、印刷などが中心に指導されます。
ワードプロセッサソフトが大好きな方は気付いたと思います。そうですWordなのにマークアップの指導が一切ありません。
完全に見た目の変更の仕方と印刷だけの指導であり、Wordなのにアウトラインとか完全に無視です。
見た目中心の指導を行うことはWordと変わらないですが、Excel関数の指導に入ると関数の意味をほとんど教えず「B1へ=SUM(A1:A5)と入力してください。はいA1からA5が足された答えがB1に表示されました。次は...」といった感じです。
生徒は教師の指示通り入力するだけで応用とかそういうの全くわかりません。しっかり理解してるのは見た目の変更の仕方くらいです。
時代ですね。こうして互換性無視なオフィスファイルは作られていったのでした。国がそう教えてましたから。
あっそうそうPowerpointとかAccessは授業でやりませんでした。
端的に言うのならば同上。
しかしPowerpointが追加されました。流石にPowerpointも教えないといけないと気付いたのでしょうか?
高校によっては工業高校や商業高校、高専ではもっとマシな指導をしていた可能性はあります。
ただやっぱり社会人から見るとツッコミ入れたくなるような指導が一部で取られていたと思います。国も手探りですから。
この年齢くらいになると学校の授業で覚えたと言うよりも独学でパソコンを習得してる生徒が殆どになっていました。
全くと言って良いほど学校の授業からは得たものがなく、エロ画像探しのほうがコンピュータリテラシーを僕に与えてくれました。
そして大学時代は教授のゴリ押しからOSがWindowsからEmacsに変わりました。
はてブで小学生向けにビジュアルプログラミングScratchが流行り始めてるんだなと知ったくらいでコンピュータ教育の授業の内情がどうなっているか全く知らないです。
なので僕が少年期に受けたコンピュータ教育を前提として「こうだったら良かったのに」というのを書きます。
コンピュータを扱うにおいてデータ管理というのは非常に大事です。
何故判りやすいファイル名を付けるのか?何故フォルダを作るのか?そういうことをしっかりと指導しなくてはなりません。
とりあえず僕も誰かに教える気になって書いてみたいと思います。
今だけ使えれば良いデータはどうせ直ぐに破棄するデータなので用途に合致すればどんな風に作っても構いません。チャットやっててウケを狙うためにネットからダウンロードする時にファイル名を「a.jpg」にするとかそういうことです。どうせ消します。
注意しなければいけないのは残り2つです。残り2つは前提として後々見たり使ったりするデータです。
このデータのファイル名を「a.txt」とかにしたら何のデータか全くわかりません。
つまり後々使ったりするってことは探すってことです。探すのに判りにくいファイル名にしてたら意味もなく違うファイルを開いて探しまわることになります。最近流行の「名前重要」です。
このジャンルのデータはある特定のフォルダ(ディレクトリ)に保存すると決めておけば探すとき非常に楽です。
そのため各OSは、例えばWindowsならば「マイドキュメント」や「マイピクチャ」「マイミュージック」などを用意してくれてます(ソフトウェアも空気を読んでデフォルトの保存先をそういうのにする)。
せっかく用意してくれているので使うようにし、もし自分でフォルダを作るときは名前重要ですから判りやすいフォルダにしておきましょう。
例えばTwitterであるジャンルの話を同好の士に読んでもらいたい場合どうしますか?ハッシュタグを付けますよね?
そうやって名前を判りやすくしておけば自分以外の他人が使う時も非常に楽なのです。
「でもよく使うデータを深い階層に置いてたら面倒じゃん」っていう意見はもっともです。
実はそのために「デスクトップ」という階層や「ショートカット」があるんですね。
デスクトップがアイコンだらけの人ってたまに居ますけど、きっとそういう人はコンピュータ教育は受けたけど保存されるデータの種類を知らない人です。あなたは悪くないですコンピュータ教育が悪い。
世の中には目の見えない人が居ます。そんな人たちがコンピュータを使えるように「読み上げソフト」ってのがあります。
まあいろんな意味で"文字通り"読み上げるためのソフトウェアなわけですが、このソフトは何も編綴もないテキストデータを読み上げるとめちゃくちゃ棒読みです。
それが更に平仮名ばかりで句読点もないテキストだと読み上げソフトは棒読みで一気に読みあげて目の見えない人はものすごく聞き取りにくいです。こんなテキストは目の見える僕たちでさえ読みにくいです。
そこで僕達は漢字を使ったり句読点を使ったりして可能な限り読みやすくします。実はこれがデータの中身にとって重要なのです。
句読点は文章を判りやすくする目印ですが、これを付けることをコンピュータの世界では「マークアップ」と言います。
読み上げソフトはマークアップされた文章だと、何処がタイトルで何処が本文というのが判別できるようになり、更に強調マークアップされている部分では音量を上げたりするので目の見えない人は非常に聞き取りやすくなります。
もしここまで読んである点に気が付いた人はかなり賢いです。その点とは「目が見えないのは機械も同じ」という点です。
マークアップされた文章は機械にとっても非常に判別がしやすい文章であり、実例をあげるのであれば検索するときに使う「Google」が検索結果へWebページのタイトルを載せてくれるのも、マークアップされたタイトルを拾い上げているからなんです。
Wordでも「見出し」と指定された行は機械的に判別され、アウトライン機能で文書の管理が非常にしやすくなったりします。
PDFでも同じでアウトライン表示されたり、読み上げソフトがPDFに対応していたらマークアップに合わせて読みあげてくれます。
少しだけ専門的になりますが、データベースとして使われているCSVファイルやJSONファイルも特定の記号を使われているのでコンピュータは楽に判断できるのです。
更にしっかりとマークアップしておけばPDFを電子書籍でよく使われているEPUBに変換するなど、他形式への変換が失敗しにくくなる利点もあります。
今まで行なってきたコンピュータ教育は正直「コンピュータ教育をしてますよ」という体裁だけを保っている教育の仕方だと思います。
コンピュータが使われるようになったから教育に導入し、MS Officeが使われるようになったからMS Officeを教え、IT市場が大きくなったからプログラミングを教える。
高速に変わっていくコンピュータの状況に合わせてしっかり教育は対応して居るように見えますが、現状のコンピュータ教育が見ているのはコンピュータの上っ面だけです。だから教育も上っ面になる。
コンピュータ教育ではタブレット端末の導入を現在検討しているらしいですが、どうみてもこれは上っ面な判断です。
コンピュータで高速に変わっていってるのは上っ面だけであり基礎の部分は。ハッカーが使ってそうないわゆる黒い画面、つまり端末(コマンドプロンプト/ターミナル)の頃とあまり変わってません。
その基礎を教えずしてOfficeだのビジュアルプログラミングだのを教えても生徒が得るものは何もないと言って良いと思います。
正直この記事は総合職さんやプログラマさん、エンジニアさんから見たら「なにそんな当たり前の常識的なことをドヤ顔で記事にしてんの?」って嘲笑されるような内容です。
その嘲笑されるような内容をコンピュータ教育はできていないわけです。
これWindowsじゃなくたって教えられること、最新ハードじゃない中古のPC-98でだって教えられること、中学生以上は持ってそうなスマホでだって教えられることです。
ここのブコメのほとんどが、やまもといちろうがグーグルグループとGmailを勘違いしてるように思って、しかも大量に☆ついてて笑った。
というのは置いておいて、
本当はそういうのまずいはずだよ。一応これらも国の機密事項だから。そもそも国内でも研究内容漏れちゃったらまずいし。でも使っちゃうんだよね。
そういうのがここ10年ぐらいで変わったなあっていうのは、やっぱりサービス側がその敷居を下げるために、ネットで下地を作って色々やってるよなあ。
例えばグループウェアはクライアントソフトでやってたのが、ブラウザ経由で操作させるようになった。
(見た目の敷居が低くなったのと、プロキシとかポートブロックをすり抜けてシステム管理者が知らないうちに当事者が勝手に使ってる状況を作っている)
ユーザーがすぐ使えるっていう直感性でいうと、一般人はYahoo、Googleに慣れ、その操作感がデファクトスタンダードになってる。
(また、見た目は昔MacユーザがWindowsのルックアンドフィールをバカにしてたような、古くさいインターフェースだったりする。
Mac VS Windowsの一見非生産的なやり取りが、今の状況に与えた影響って少なからずあるんじゃないかなあ
国産グループウェアは、エラー情報が一般ユーザーに分かりづらいのもある。
国産グループウェアのブラウザ版がIEのみ、バージョンに振り回されるのも。
WebサービスはほとんどアンチMSに傾いているので、ここで違いも出たはずだ。
だからカレンダーがicalか、サポートのあるMicrosoft Exchangeかという選択で。
ここで始末の悪いのが、Microsoft Exchangeが高価だからCSVで吐き出して分かる奴がつかえってのがアホな選択。
http://anond.hatelabo.jp/20130327222045
内容は大概同意だけど、うちの場合はAmazonが月800~1,000万、楽天は800万前後って感じだなぁ、ちなみに自社サイトは3000万くらい。
AmazonはFBAにすると売れ方が全然違うが、独自の在庫管理システムとか、複数のモール店舗を一括で管理するシステム入れてるショップはFBAはやりずらいんだよね。
※FBAってのマケプレ商品をAmazonに納品して、売れたらAmazonの倉庫から発送されるやつね、これだとプライムの対象になる。
客層の違いなんだろうけど、Amazonでスゲー売れるけど楽天はさっぱりってのが結構有る、その逆も有るんだけど、その場合は大抵Amazonが最安なんでマケプレでは勝負になんない場合が多い感じかな。
俺も細々と手数料を抜いていく楽天よりもAmazonの方が手数料は確かに高いけど分かりやすくて好きだけどね。
ただ、Amazonの手数料に関してはFBA使用する事で結構変わったりする、FBAの発送手数料は梱包代、人件費、運送費で考えるとかなりお得になる。
コストのみを考えると、自社の発送部門の人間全員クビにしてAmaoznのFBAのみにした方が良いんじゃないかと思うくらいですよ。
ただ、Amaoznはよく売れる商品に関してはAmaozn自体が取り扱いを開始する場合があるんで、それが怖い。あいつら本気出すとあり得ない価格でやりだすんで超怖い。
本当かどうかは知らないけど、他の業者に聞いた話だと商品の値付担当は仕入額の確認は出来なくて、あくまで売れる額でやれって言われてるらしい。
バイヤーに対しても、そういった値付けを前提とした価格で仕入れをしろってプレッシャーにもなるって事だそうで。
(まぁ、メーカー系の商品は補填とかリベートとか有るんだろうけども)
本当、どの仕入先よりもAmazonが一番安い時とかあるもんな。
ちなみに手数料に関しては以前税務調査が入った時は、うちは田舎にあるんで税務署員がネット通販メインの会社に関して経験が少なく、説明しても頭を抱えてたのが面白かった。
Amazonに関しては注文1件につき、手数料はコレだけって金額が出てくるんで分かりやすいんだけど、楽天はそもそもの手数料がクソわかりづらい上に、送り状を発行するためCSVデータのダウンロードが注文1件につき何円とか、アフィ経由の手数料が取られてるが、どの注文に対しての物なのかは不明とか細々抜かれる手数料を一通り説明したら暫く沈黙した後に、「これ(楽天)に関しては、そのままで良いです」ってほぼスルーだったよ。
Webデザイナーといっても、プログラミング経験があるからCMSカスタマイズや
小規模なシステム構築を任されることのほうが多いけれど。
最近その辺りの仕事のやり方で思うことがありすぎるので書いてきます。
見た目っていうのは、デザインそのものやHTMLについての部分。
通常システムを作る場合は設計をすると思うんだけど、まずそれをしない。
というかしないでいいと思ってる。
それはデザインが全てで、最終的に出力されるものがデザイン通りであれば、
完成したということになるからだと思う。(もちろんHTMLは綺麗にコーディングする)
デザインでしか考えないから、画面の仕様を簡単に変更してしまうし、
見た目やユーザビリティ的にいいという理由で、製造中に画面を変えられてしまう
ことが多くてとても困った。
このことは、プログラマとデザイナーの衝突の原因にもなるんじゃないかと思う。
ふだんはCMSを使っていても記事を入力したりするくらいだから仕方ないのかな、
とは思ったけど、CSVだけ渡されて 「これ取り込んでおいて」とだけ言われたのには
驚いた。
DBもphpmyadminでインポートエクスポートくらいしかしないから、そのくらいの時間で
すむと思ったんだろうか。CSV取り込み機能なんて作らなければ存在しないのに。
DB構造を意識しないので、画面上に出力するデータの整合性が取れないときがある。
モックを先に作っておきたいからと言われて、出力する配列を固定で定義してもらっていた
もちろん動作確認はしてバグがあれば修正というところはやるのだけど、
表示結果が正しければよしとしてしまう。
デザイナーでいうデバッグとテストを混同しているところがあるように思う。
だからまともなテスト期間なんてないし、費用や納期などの問題があると
真っ先に削られてしまう。
僕自身、自分たちで作っていたシステムの見た目を改善したくて(いわゆる業務系
システムの古臭いデザインだったから)こうしてデザインの勉強をしているのだけど、
それでもデザイン重視だなんて思わないし、見た目も機能の一部だと思うので、
できるだけバランスのよいプロセスでものを作っていくべきだと思う。
上に書いたことは僕の技術や経験が未熟なせいで起きている問題もあるし、
ただ、周りが誰一人としてシステムに関する理解がない状態で、
(まともなプロセスでないし、一人で責任を負わなければならないから)
最近は心労がすごくて、辞めようかという気持ちになっている。
Webデザイナーの中には、きちんとシステムへの理解があって、
プログラマーと協力しながらうまくやっている人もいるので、
どうにかなることではあると思うけど、このままではやっていけない気がする。
シェル操作課題 (cut, sort, uniq などで集計を行う) 設問編 - Yamashiro0217の日記の解答例です。MySQL 5.5です。
mysql> CREATE TABLE log ( -> id BIGINT PRIMARY KEY AUTO_INCREMENT, -> server_host VARCHAR(30), -> access_time DATETIME, -> user_id INT, -> access_url VARCHAR(191) -> ); Query OK, 0 rows affected (0.00 sec) mysql> LOAD DATA LOCAL INFILE 'log.csv' -> INTO TABLE log -> FIELDS TERMINATED BY ',' -> (server_host, @unixtime, user_id, access_url) -> SET access_time = FROM_UNIXTIME(@unixtime); Query OK, 9 rows affected (0.01 sec) Records: 9 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT server_host, access_time, user_id, access_url -> FROM log; +-------------+---------------------+---------+--------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+--------------+ | server1 | 2012-07-27 13:25:24 | 30 | /video.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server3 | 2012-07-27 13:25:15 | 7 | /login.php | | server1 | 2012-07-27 13:25:05 | 8 | /profile.php | | server2 | 2012-07-27 13:26:45 | 35 | /profile.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server3 | 2012-07-27 13:26:45 | 30 | /login.php | | server4 | 2012-07-27 13:27:05 | 12 | /video.php | | server1 | 2012-07-27 13:27:45 | 7 | /video.php | +-------------+---------------------+---------+--------------+ 9 rows in set (0.00 sec)
mysql> SELECT server_host, access_url -> FROM log; +-------------+--------------+ | server_host | access_url | +-------------+--------------+ | server1 | /video.php | | server2 | /profile.php | | server3 | /login.php | | server1 | /profile.php | | server2 | /profile.php | | server2 | /profile.php | | server3 | /login.php | | server4 | /video.php | | server1 | /video.php | +-------------+--------------+ 9 rows in set (0.00 sec)
mysql> CREATE INDEX log_ix1 ON log (server_host); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> SELECT server_host, access_time, user_id, access_url -> FROM log -> WHERE server_host = 'server4'; +-------------+---------------------+---------+------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+------------+ | server4 | 2012-07-27 13:27:05 | 12 | /video.php | +-------------+---------------------+---------+------------+ 1 row in set (0.00 sec)
mysql> SELECT COUNT(*) -> FROM log; +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set (0.00 sec)
mysql> SELECT server_host, access_time, user_id, access_url -> FROM log -> ORDER BY server_host, user_id -> LIMIT 5; +-------------+---------------------+---------+--------------+ | server_host | access_time | user_id | access_url | +-------------+---------------------+---------+--------------+ | server1 | 2012-07-27 13:27:45 | 7 | /video.php | | server1 | 2012-07-27 13:25:05 | 8 | /profile.php | | server1 | 2012-07-27 13:25:24 | 30 | /video.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | | server2 | 2012-07-27 13:25:10 | 20 | /profile.php | +-------------+---------------------+---------+--------------+ 5 rows in set (0.00 sec)
mysql> SELECT COUNT(DISTINCT server_host, access_time, user_id, access_url) -> FROM log; +---------------------------------------------------------------+ | COUNT(DISTINCT server_host, access_time, user_id, access_url) | +---------------------------------------------------------------+ | 8 | +---------------------------------------------------------------+ 1 row in set (0.00 sec)
COUNT関数の中にDISTINCTを書けるのは覚えておくと便利です。
mysql> SELECT COUNT(DISTINCT user_id) -> FROM log; +-------------------------+ | COUNT(DISTINCT user_id) | +-------------------------+ | 6 | +-------------------------+ 1 row in set (0.00 sec)
mysql> SELECT access_url, COUNT(*) -> FROM log -> GROUP BY access_url -> ORDER BY COUNT(*) DESC -> LIMIT 1; +--------------+----------+ | access_url | COUNT(*) | +--------------+----------+ | /profile.php | 4 | +--------------+----------+ 1 row in set (0.00 sec)
mysql> SELECT REPLACE(server_host, 'server', 'xxx'), COUNT(*) -> FROM log -> GROUP BY server_host; +---------------------------------------+----------+ | REPLACE(server_host, 'server', 'xxx') | COUNT(*) | +---------------------------------------+----------+ | xxx1 | 3 | | xxx2 | 3 | | xxx3 | 2 | | xxx4 | 1 | +---------------------------------------+----------+ 4 rows in set (0.00 sec)
mysql> SELECT DISTINCT user_id -> FROM log -> WHERE user_id >= 10 -> ORDER BY user_id; +---------+ | user_id | +---------+ | 12 | | 20 | | 30 | | 35 | +---------+ 4 rows in set (0.00 sec)
定期的にサンプリング、分析されてcsvの形で出力されるデータとかがあるんだが
1装置で分析時間に差が出ないからと将来必要になるかもしれないからと本来は必要ないデータまで含んでファイルに出力されることがある。
そういうファイルからほんとうに必要なデータ項目だけを引っ張り出して1ファイルに纏めたりするって話じゃないかな?
自分の場合は環境中の温度とかのデータの連続測定装置だった。1時間に1個ファイルが出来る装置で1ファイル当たり30種類くらいデータが取れる。
これを1つの項目だけ経時変化を見たい場合csvファイルからその1項目だけ抜き出してその項目だけの経時変化を1つのファイルとしてまとめる。
仮に1月分を1つのファイルのコピペ30秒とすると30日*24h*0.5min/60min=6hour概算だが人力だとこれだけ作業時間がかかることになるのを
最初に準備に4時間かかったとしても自動化してやれば2時間の短縮って計算になる。
仮に同様の装置が10個、20個単位であったとしたらそれぞれの装置に対してデータを抜き出す箇所、出力ファイル名が被らないようにという設定に"仮に1時間"かかったとしても
ベースが既にできてるわけだから残りの装置に対してはそれぞれ5時間の短縮。これがこういう性質のデータは数ヶ月、年単位で取るものだから装置の数に比例して
(1)1年間限定ですか?それとも、問題がなかったら、3~5年など継続して使いますか?
・通常は、ソフトウェアの瑕疵担保は1年(1年は、ソフトのミスは、開発業者が直す)。
・仮に、サーバトラブルや、システムトラブルで、システムが止まったときに、どの程度止まることが許容できますか?
・年数は、自動化するか?どうか?の見極めに使う。
月給25万のサラリーマンだと、年収300。保険等も加えると、人を雇うコストはそれなりに高い。
数年使うのであれば、ある程度、初期投資をしても良いという判断が働く。
(400万でも、5年使うのであれば、年間80万。)
普通のスタッフ一人(が専任・手動で今回の対応を行う)やとうのと、
システム400万は、会社から見ると、経費の観点では変わらない。
やってみなきゃわからないだと、あったらいいな便利機能は極力削って、必要最小限の機能で
対応して、実際のオペレーションで不便な箇所を、追加発注で、自動化等の修正してもらえばいい。
(2)個人情報を管理しますか? 初期の申込み専用のシステムですか?
・多分あると思うので、SSLは必須。ベリサインでなくても良い。
・毎年~数年毎に更新必要。担当者が変わる(自分が辞める)ことも想定して、引き継ぎ項目に加えておく。
・多分あると思うので、サーバは専用にした方がいい。(Amazon安い)
・ドメインも多分必要。毎年~数年毎に更新必要なので、引き継ぎ項目に加えておく。
(3)バックアップは必要ですよね?
・ハードウェアみたいな形があるものは必ず壊れる。オペミスで飛ばすこともある。何らかの方法で、サーバ以外に、入力データを持っておく。暗号化はしておいた方がいい。
システムは納品業者が持っているけど、入力データは持っていない。サーバが飛んだら、取り戻しがきかない。
・できれば、(お客さまの名前は伏せて)、メール自動返信する場合には、自社スタッフにもメールCCしておく(個人情報はのせない)。最悪、バックアップがない状態で、サーバが飛んだときでも、お客さまのメアドは判る。
(4)入金管理はやりますか?クレジットカードは取り扱いますか?
(WEBシステムで管理すると、顧客情報などをまとめて、CSVで落とせる。細かいところはエクセルで調整が効く)
・お金もかかる。
(6)会員サポートは、どうしますか? メールだけですか?電話対応はしますか?
・電話対応、メール対応どちらも担当者が変わる(自分が辞める)ことを想定して、マニュアルや、メールの場合には回答テンプレートを作っておく。
(7)会場の増減、時間の変更、会員のキャンセル等は、誰が、どうやって、対応しますか?
・会場の増減があるのであれば、WEB管理画面から、管理できるのがいい。CSVで落とせること推奨→エクセルで管理できる→自社対応できる
・仮に、会場の増減や、会議のキャンセル、時間変更等があった場合には、どのようにして会員に通知しますか?
システム作る方がいいけど、100名程度なら、一括送信できるWindowsアプリがあるからそれを使う。システム化すると、お金がかかる。
(8) 過去のキャンセル率、問い合わせ率を教えて下さい。もしくは、調べる方法を教えて下さい。
・100名応募で、20名キャンセルの場合、本当は、キャパあるからもったいない。
過去実績から、大目に人員を募集して、席が足りない場合には、どうにかなるか?あたりを相談。
・キャンセルは、返金等にも影響。
・問い合わせ率は、人間がやった場合の費用を算出(兼任もあるので、一概に比較できない)
システムの見積もりも聞いて、どちらが安く済むかを上司に相談。
多いのであれば、自動化推奨。
・メールアドレスベースは、管理が楽なのだが、不通トラブルも多い。
それを避けるのは、最初に、疎通確認してから、問い合わせの方式がベターではある。
・簡単に、会員様の情報をID+PWで管理できるサイトを作ると、
会社側の管理コストが減る。(最初の質問のどのくらい使いますか?によってくる)
・自動化もできるけど、最初は、手動対応推奨。(データ集めのため)
(9)デザイン、テストにどのくらいの費用がかけられますか?仕様書・マニュアルは必要ですか?
・デザインは、決定権者の好み(好き、嫌い)が入るので難しい。
・継続的な業務であれば、仕様書、マニュアルも作ってもらった方がいい。
(10)納期はいつですか? 仮に、何らかのトラブルがあって、
この3つのプライオリティはどうなりますか?優先度をつけてください。
参考までに、予算がまったくない!というのであれば、
端的に言うと『ダケ』じゃないから。
年間に1万人 と書いてあるけど、会員登録するのか?顧客管理するのか?がまったくかかれていない。
100会場が固定なのか、追加・削除の編集機能が必要なのかかかれていない。
追加・削除もどの程度かんたんなUIが必要なのかかかれていない。 CSVでファイルおいておくのとWebDB使ってWebから編集可能では山ほど違う。
デザインについてかかれていない。
そんな指摘が山ほど。その指摘を無料でというのは無理すぎる。それがコンサルティングという。
正直、会員登録なし登録時にフォームから入力だけ、登録されたらメールが飛んでくるだけ あとは 事務員さんがメール読んで、手作業でやってくれ的なものなら20万とか、もっと安いかもだし
1万人の管理登録するし、キャンセルとかも扱うし、たまにDMとかも飛ばしたいし、電話番号含め、サポート対応するし・・・
会場とかのアナウンスとか時間とか場所とかアクセスとかも、表示して管理していくなら 数百万だろ。
よくあるのが、簡単ですよね。20万のでいいです。って担当者が言う。>契約する。>社長が 鶴の一声で会員登録必要とか言い始める > 予算増額希望 > ぼったくり!高い!ありえない!詐欺だ!言われ始める。
たどり着くところがシステム屋としては、知識のない人とはトラブルが起きるので極力かかわらないか、はじめから数百万の方しか売らない。
あまりにも、よくあるケースすぎるんだよこういうの。
Webシステムとは縁遠い事務職のリーマンが、ある日思い立って、ニッチな用途の検索エンジンサービスを作ってみたので、ちょっと書いてみようと思います。
ちなみに、検索エンジンといっても、googleカスタム検索とかのお茶濁し系じゃなくて、apache Solrというオープンソース検索エンジンを、VPS上で動かしているという、それなりに本
気度の高いものです。
なんで素人がそんな物騒なものを動かす羽目になったかは、後述。
やりたい構想みたいなことを思いついたのは、もう6、7年前ほど前のこと。初めて独り暮らしを始めたときに、ひどく不便を感じたことがあり、こんなサービスがあったら便利だなあ、
ちなみにその妄想をふと高校の同期に話したとき、そのサービスはどこにあるのか?!と、えらくがっつかれたのを、覚えてます。まあ、俺と同じく偏執狂の奴だったからだと思います
が。
ただ、しがない事務職リーマンということもあり、当然、技術も無く、そのときは、やるならこんな名前のサービス名だろうなあ、とか、そんな妄想レベルで、話は終わっていました。
そんな感じで、5年ほど月日は経ち、なんとなくリーマン人生の流れも見えてきたところで、以前、妄想していたことを、ふと思い出しました。
5年も経ったら、さすがに自分が考えたようなこと、誰かがやっているだろうと調べてみたところ、意外なことに、競合になるようなサービスは存在せず。ちょうど異動があって、少し時
間が出来たこともあり、じゃあ、着手してみようかと思い立ちました。
やりたいことは、大手サイトの情報検索。ただ、商品ページ内の特定情報、それも、商品ごとに正規化されていない表記を、正規化して抽出する必要があったので、大手サイトの既設API
だけではとても実現不可能でした。
まあ、だからこそ、5年間、誰もやろうとしなかったんでしょうが。
ということで、とても一発では解決できなさそうな内容だったので、自分でなんとか実現できそうな機能に細分化して、各個撃破していくことにしました。
随分と考えた結果、
以上に区分できると考えて、これらを各個撃破していくこととしました。
また、技術もなく、プログラミングも出来ず、ましてやlinuxサーバのお守りをしたことなんて当然ないので、インターネット上に置くサーバですべての処理を完結させるのではなく、イ
ンターネット上に置くリソースは最小限に留め、できる限り、勝手がわかる自宅のwindowsパソコンで処理を行うことにしました。
ちなみにさらっと結論だけ書いてますが、ここまで至るまでに、いろいろと調べ続たり、考え込んだりしていたので、思い立ってから3ヵ月は掛かってます。。。
さて、やる方針を決めたあと、はじめに着手したのは、要の検索エンジンサーバです。
いろいろとググって調べて、mySQLというやつか、apache Solrというやつかに絞りましたが、結局、Solrを使うことにしました。
MySQLのほうが実績は多そうだったのですが、Solrのほうが検索専門で、滅茶苦茶動作が速いらしいということ、MySQLでも出来るが特に速度が遅いらしい全文検索機能も使いたかったこ
と、あとファセット機能がジャンル絞りこみに便利に使えそうだったので、というのが理由です。
ちょうどSolr本が発売されていたこともあり、それを参考に、自分が使うように設定ファイルを変更していきました。
しかし、初めは設定ファイルの内容も意味不明な上に、私の書き方も雑なのか、少しいじっただけでまったく動かなくなる。結局、設定ファイルを一文字ずつ変更しては動作検証、とい
った始末で、進捗は地を這うよう。ある程度思い通りにSolrを扱えるようになるまで、3ヵ月以上掛かったでしょうか。。。
さらに、検索エンジンのフロントエンド(Solrの検索結果を、htmlに変換するプログラム)も書かなければならない。プログラミングが出来ない人間には、これが本当に辛かった。
Solr本に、いろんなプログラミング言語でサンプルがあったのですが、迷った末に、わずか数行なら書いた(≒コピペした)経験があるという理由で、javascriptを苦渋の選択。
しかし、選択はしてみたが、基礎が本当に無いから内容がサッパリ頭に入ってこない。こちらも、わかるところから本当に1文字ずつ変えていくといった手探り状態。
プログラミングについては、今回のためだけだから、といった理由で、一切基礎をやらずに着手したのが裏目に出たのか、サンプルのソースをモノにして、書き上げるのに、ゆうに半年
以上。本当に時間が掛かりました。
さらに、Solr周りで計9ヶ月間ハマっていた頃、忘れもしない、kanzen21のおっさんが彗星のように現れて、衝撃を受けることになります。
大手サイトのページをクロールして検索エンジンを作る手法は、私と考えていた構想の枠組みとまさに「完全に一致」な訳で。。。
図書館事件に注目していたのも同じで、あまりの一致具合に衝撃を受けっぱなしでした。
その後の成り行き等も含めて、興味深く観察させて頂き、本当に参考になりました。
そんな感じで紆余曲折もありましたが、ようやく難題だった、プログラミング関連に目処が立ってきたので、あとはクローラと肝心のデータ処理です。ここからは、勝手知ったるwindows
まず、クローラですが、専用のクローラをwindows用に探してきたり、それを設定するのも大変なので、今回はテレホーダイ時代に使っていたような、フリーのweb巡回ソフトを利用する
こととしました。指定のhtmlをダウンロードしてくるだけなので、別に変に新しいものに手を出す必要もないので。
また、ダウンロードしてきたhtmlファイルについては、これまたフリーの日本語処理ツールでcsv方式に加工することにして、処理ルール部分を相当に作り込みました。
このあたりは、全体を通して見てもキモの部分なんですが、ある意味、ちょっとしたパズル感覚だったので、プログラミング言語の部分と違って、かなり楽しかったです。
あとは、msdosのバッチファイル(これは前から知っていた)で、これらの処理を繋ぎ、cygwinのcurlとかいうツールで、連続して検索エンジンサーバにcsvファイルをアップロードする
仕組みを作りました。
検索エンジンサーバには、容量は少ないが、安くて高性能という、今回の用途にピッタリだった、さくらのVPSを借りて設定。CentOSのサーバ構築ホームページを見ながら、サーバとか
Solr管理URLとかにセキュリティを掛けて、こちらも素人ながら、意外とすんなり設定。
ホームページは、vpsサーバに相乗りさせるのではなく、別にさくらのレンタルサーバを借りました。apacheの設定方法等を習得する必要がありませんし、vpsのリソースをapacheと分け
合う必要が無くなるので。ホームページのhtmlファイル、cssファイル等も調べながら設定し、画像も準備しました。
あと、構想を思いついたときに妄想していたサービス名の.comドメインは、すでに他者に取得されていたのですが、どうも使っている風にも見えなかったので、whoisで出てきたメールア
ドレスに連絡して交渉し、幾ばくか払って買い取りました。
結局、足かけ18か月。ようやく完成。
楽天市場の家具を、幅x奥行x高さ(家具サイズ)で検索できる、楽天市場・家具カテゴリ専門の検索エンジン
この商品数規模(データ収録約30万アイテム)で、1センチ単位で家具のサイズ指定検索が可能な手段は、商用サービスも含めて、ほかには存在しないと思います。
kanzen21と違って、エロじゃないから華はないけどね。。。
ちなみに冒頭で少し書いたきっかけですが、就職して独り暮らしを開始したときに、新しい家にピッタリサイズの家具が欲しかったのですが、これが楽天で探すのは至難の技でして。
楽天で家具を探してみようと思った人には判っていただけると思うのですが、楽天では、価格では範囲指定やソートができても、サイズでは検索出来ないんです。
これは、楽天では、商品のサイズ情報は商品の自由記述欄に記載することになっているためで、商品ごとにサイズの記載方法がバラバラのため、検索が事実上、不能となっています。
家電製品とかに関しては、種類が少ないこともあり、メーカーのホームページとかでサイズを確認した上で、商品型番で検索すればいいので、それほど問題にはならないのですが、家具
って、種類が非常に多く、型番もあったり無かったりで、家電のようにサイズを調べることができません。
・・・ということで、カグサイズでは、楽天の商品ページにいろいろな書式で書かれているサイズ情報を拾って解析して正規化し、範囲指定やソートして検索ができるようにしています
。
また、単に寸法サイズを拾うだけでは、梱包サイズとか引き出し内寸とかも引っ掛かってしまうので、それらは出来るだけ排除して、商品の外寸が優先して引っ掛かるよう、アルゴリズ
ムを調整しています。
単位(センチとミリ)に関しても、商品ごとにバラバラ(単に単位だけでなく、商品説明のどこに"センチ"とか"ミリ"と記載しているかについてもバラバラです。)なので、サイズ表記
の前後の状況をみて、正しいと思われる単位で拾うようにしています。
あと、変わった使い方としては、欲しい家具の価格比較みたいなこともできます。
家具は、同じ商品でも、店ごとに型番が違ったりすることがよくあり、簡単には価格の比較が行いづらいジャンルの商品です。
しかし、型番は違っても、同じ商品なら原則、サイズは同じですから、欲しい商品とまったく同じサイズで検索をかけると、同等商品があるのかどうか比較しやすい・・・といった使い
方もできます。
と、そんな感じで、しがない事務職リーマンが作ってみた、ニッチな用途の検索webサービスを、サービスインさせて頂きました。
一般に公開されていて、誰でもアクセスできる情報でも、ニーズが有りそうな切り口の条件で検索性を高めれば、新しい価値を創造できるんじゃないかという実験です。
もしよろしければ、ぜひ、使ってみてくださいー。それでは!
----------
http://webrocketsmagazine.com/entry/20111209/html-code-generation-using-excel.html
http://mattn.kaoriya.net/software/vim/20111215034338.htm
http://d.hatena.ne.jp/takuya_1st/20111217/1324105198
真のプログラマーなら単純なHTML生成するのにテキストエディタは使わないよ。単純なHTML生成が必要なプログラマーなら、プログラムでやるでしょ。いちいちプログラムを書くのがだるい?いやいや、単純なHTMLの生成が必要なプログラマーなら、リストやディクショナリといった汎用的なデータ構造やCSVファイルといった汎用的な形式のファイルから、自動的にHTMLを出力するライブラリぐらい書いてるでしょ。わざわざ同じ作業をやるなんてめんどくさい。それにそのプログラムは他でも使うことができるしね。しかもPythonやRubyならほぼシェル感覚で使える。わざわざテキストエディタを使って同じ作業をする必要性はないね。真のプログラマーなら単純なHTMLの生成はプログラムでやるでしょ。プログラマーなんだから。