はてなキーワード: ORACLEとは
Javaで開発されたアプリケーションにはインストールにまつわる難点がある。
それによりせっかく興味をもってくれたユーザーも試す前に諦めてしまいがちである。
また、サーバーサイドアプリケーションもJava製である場合、デプロイや監視の際の難点が多く運用者を悩ませてきた。
javafxで導入されたパッケージャを用いることで各OSネイティブなインストーラーの作成が可能になり、この問題を解消・緩和できる。
SpringBoot などを用いた ExecutableJar を作成するアプリケーションであれば、サーバーサイドアプリケーションであっても一部制限があるもののパッケージングできる。
Javaで開発されたアプリケーションの配布には以下の問題点がある。
javafx-maven-pluginを使うとよい。javafxと冠しているが実態はパッケージングツール。
javafxの冠があるがためにスタンドアロンアプリ開発者以外を遠ざけている感あり。
Windows(msi/exe), Linux(rpm/deb), Mac(dmg) など各OS・ディストリビューション固有のパッケージングが行える。
公式ページ( http://zenjava.com/javafx/maven/ )では更新が止まっているが、Github( https://github.com/zonski/javafx-maven-plugin )とMavenRepository( http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22com.zenjava%22%20AND%20a%3A%22javafx-maven-plugin%22 )を確認するとちゃんと開発は続いている。
pom.xml に以下を追加する。
mainClassはSpringBootなら@SpringBootApplicationのついてるクラスですね。
vendor は適当に組織や個人の名前を入れておきましょう。
※ 以下の XML が化けるのは増田の不具合か仕様っぽい。 http://anond.hatelabo.jp/20100205210805
<plugin> <groupId>com.zenjava</groupId> <artifactId>javafx-maven-plugin</artifactId> <version>8.1.2</version> <configuration> <mainClass>[main method class]</mainClass> <vendor>[Vendor Name]</vendor> </configuration> </plugin>
あとはそのままビルドすればよい。
maven clean jfx:native
ビルドが終わると target/jfx/native 以下に、ビルドしたOS/distributionに合わせて msi, exe, deb, rpm, dmg ができあがります。
本当であればクロスビルドできてしかるべきなのですが、まだ実現はされていないようです。
これらのパッケージは Widonws であれば Program Files(x86) に、Linux系であれば /opt/ の下にインストールされるようです。
/opt/app-name/ の下には app と runtime の2つのディレクトリがあります。
app の下にはビルドした jar ファイルや依存ライブラリが置かれています。
runtime の下には実行用の jre が配備されています。
実行ファイルにそのまま引数を渡せば jar 実行時の引数としてそのまま渡されます。(-Xmxなどはまだ未検証です)
有益な話だし、GPL関係でググってこのページを見た人のために勝手に補足と個人的な疑問を放流してみる。
適当に調べてた知識を記憶をたよりに書いているので、間違いがあれば容赦なく指摘して欲しい。
# どうでもいいけど、元増田の話でOSがLinuxだったりしたら笑うw
GPLは元増田で書かれている通りで、WEBシステムを閲覧しただけではソースコードを請求することはできない。RMSらもこれには気づいていて、この穴を塞ぐためにAGPLというライセンスができた。このライセンスのソフトウェアを利用した場合、WEBシステムであろうと利用できる人はソースコードの請求を行えるようになる。
これは別にWEBシステムに限らず、ユーザーが何らかの形で利用できるシステムなら、ソースコードの請求が行える。
申し訳ないが詳しい所は知識不足でよくわからない。だけど、下記の記事の通り現在の開発元のOracleの見解である。すなわち、MyODBC(GPLのMySQL用ODBCドライバ)を使わず、GPLでないドライバを用いて接続してしまえば、開発したソフトウェアがGPLにならない。
http://plaza.rakuten.co.jp/matsunopage/diary/201011300000/
# 個人的にGPLがRMSの著作権Hackなら、OracleのコレはGPL Crackだと思っている。「GPL汚染が嫌なら有償ライセンスで契約しろ」と言われた話を聞いた事があるからだ。
おそらく持ち帰れないのではないかと思う。なぜそう思うかというと、普通、プログラマが書いたコードの著作権は会社に取られるし、GPLでライセンスされたソフトウェアを受け取ったのは会社であってプログラマ個人ではない。GPLでライセンスされたソフトウェアを物理的にもっていく事は可能でも、きちんとライセンスを受けた訳ではないので機密情報の漏洩にしかならないと思う。
単純な興味なのだけど、例えば最初はGPLだったが途中からはプロプライエタリ(ないし、GPL非互換なライセンス)に変更可能なのか知りたい。個人的な考えでは、著作権者全員の合意がとれれば可能という結論。著作物をGPLに書かれた通りに扱ってよいとしただけで、著作権者によって著作物の扱い方は変更可能だという考えから。無論、GPLでライセンスされたプログラムを受け取った人はソースコードの請求は依然として可能。
http://nippondanji.blogspot.jp/2010/06/gpl.html
http://d.hatena.ne.jp/karasuyamatengu/20110126/1296004598
なんで、グレーなのか。なんで、無理なのか。どのような考えでグレー、無理という結論を出しているのかきちんと書いてもらえますか? 私の考えが間違っているならなぜ間違っているか指摘していただけますか? あるいは、下記の増田さんのように具体事例を出してもらえますか? プロプライエタリに戻せないというのなら下記の具体事例はどのようにお考えですか?
http://anond.hatelabo.jp/20140722071548
とした場合に、PHPを飛び越えて(間接的にしか接続していないにも関わらず)開発したシステムにGPLが適用されるということですか? その場合、PHPにもGPL汚染が発生するということになると思いますが、間違いありませんか?(FOSS除外規定を設けているのはMySQLであって、FOSS除外規定と無関係な開発したシステムがGPLになってしまうと、開発したシステム側からGPL汚染が発生するという考えから。)
元のパラグラフは下記の通りです。
あと、MySQLのデータベースサーバに接続しただけではGPL汚染は発生しません(AGPLはそのためのものなのは前述の通り)。また、PHPは接続するクライアントになりますよね。ということは、MySQLと一緒に開発システムを一つのパッケージとして納品しない限りはGPL汚染は発生しないのではないでしょうか?(WEBシステムでそんなこと普通しませんよね。yumとかでインストールするし)
根本的な問題として、FOSS除外規定はGPLソフトウェアと他のFLOSSをリンクする際の問題を解決する物であって、MySQLのデータベースサーバに接続する場合には関係のない話だと思います。おそらく、問題だとお考えなのは、PHPのドライバがOracle製のGPLプログラムをリンクしていたためPHPのドライバを利用すればそのような問題が発生するという事だと思います(さらに追記。この通り書かれていますね。よく読んでおらず、失礼いたしました)。現状、PHPライセンスとなっているMySQL Native Driverを利用すればそのような問題は発生しないはずです。
http://php.net/manual/ja/mysqlnd.overview.php
かりに、おっしゃる通り、開発システムもFOSS除外規定に含まれるFLOSSにしなければGPLになってしまうとした場合、それはMySQL独自の問題であり、他のFLOSSに一律で当てはまる問題ではないということでよいでしょうか? なぜこのような質問をするかというとMongoDBが同じような問題を抱えているからです。下記のURLの通り、MongoDBのコアサーバはAGPLですが、ドライバにApache licenseを適用し、開発システムにAGPL感染が発生しないようにしています。
http://www.mongodb.jp/mongo/licence
上記の様なケースにも実用的に対応する為、(AGPLを採用しつつも)我々はあなた方の(MongoDBを利用する)クライアントアプリケーションは(MongoDBとは)別物扱いする事を約束します。これを円滑に行う為、mongodb.orgサポートのドライバー(あなたのアプリケーションとリンクする部分)はApache licnese(コピーレフト)の元公開します。
返信お待ちしております。
冒頭に書いた通り、間違いがあれば容赦なく指摘してください。
MySQLに限らないけど、「GPLは営利目的では使えない的な思い込み」は止めて欲しい。
先週、システム開発の提案で客先に行ってきた。
当方、30前半のSE。対応してくれた担当者は40代後半の情報システム部門の方。
提案したシステムの規模はそれほど大きくはなく、お客さんからもあまり予算はないと言われていたため、RDBMSに「MySQL」を使ったWebシステムを提案したところ、「それほど可用性は求めてないし、無料で使えるDBの方がいい」と言われた。
あぁ、商用ライセンスを購入すると勘違いしたんだな、と思ったので、「MySQLはGPLライセンスもあるので無料で使うことができますよ」と説明したところ、担当者の顔が険しくなった。
「GPLだとソースコードを公開しないといけないんだよ?たとえMySQLのソースコードを改変していなくても、MySQLを使ったソフトウェアであればソースコードを公開しないといけないし、それを企業で使おうとすると犯罪になるよ。」
「だからウチでは重要なシステムはOracleを使っているし、重要度が低いシステムPostgreSQLを使ってる。」
「たまたま提案先がウチだからいいものの、他の企業にそんな提案すると恥をかくし、あなたの会社の信用も堕ちる。」
いろいろ言われたけど、要約するとこんな感じ。
「確かにGPLだと他の誰かにMySQLを使ったソフトウェアを頒布する場合はソースコードも渡さないといけないですが、今回は御社に導入するWebシステムですから問題ないですよ」
とは返したものの、
「Webシステムなのが問題なんだ。システムを使う人にソースコードを公開しないといけないんだよ。TOPページとかにリンクを貼るの?ソースコードはこちら、みたいなの。ありえないよね?」
「システムを使った社員がソースコードを持って帰って公開したらどうなるの?機密情報の流出だよ。」
と捲し立てられてしまった。
心の中では「Webシステムだと利用者全員にソースコード公開とか、なわけねーだろ」と思いつつも、相手の勢いがスゴいし反論するための明確な情報を持っていなかったので一旦持ち帰って再検討することになりました。
http://www.ipa.go.jp/files/000028332.html
英語が苦手なのでIPAが公開しているGPLv3の日本語訳で確認したところ、「0. 定義」の項目に以下の文言があった。
著作物の「コンベイ」(convey)とは,プロパゲートに当たる行為のうち第三者が複製すること又は複製物を受領することを可能にする行為をいう。ただし,コンピュータネットワーク上での単なるやりとりであって複製物の伝送を伴わない場合は,コンベイに当たらない。
そりゃそうだよね。てかWebシステム利用者にソースコードを公開しないといけないとか誰が言い出したんだよ。
で、結局提案はPostgreSQLに変更しました。ライセンス云々関係なくPostgreSQLに統一されているんだったら運用コスト面でその方がいいし、MySQLを提案したのは俺がPostgreSQLより得意だからってだけだから。
ライセンスについては調べたことを担当者に伝えるかどうか思案中…。
ここまで捲し立てられたのは初めてだったけど、今までもお客さんから「GPLだけど商用ダメなんじゃないの?」って言われたことが多いんだよね。
もう一度言うが
Androidアプリ作ろうとしてJavaプログラマ募集したらクズしかこなかった全部クズだったとか、ひどくありません?
まあそれは置いといて、UIみたいに最初から仕様を決められなくて何度も作り直すようなコードはJavaは不向きみたいな話もまったく同意できないわ。
string url = "http://www…";
のように、URLを文字列で持っていたけど、やっぱアドレス用のクラスでもったほうが安心だなって思って
URI url = new URI("http://www…");
と書き直しました。
当然、このurlを参照しているところは全部エラーになります。
Javaをはじめとする静的型の言語をけなしてる人たちは、これが面倒だと思うんでしょうか。
逆にエラーの出ている箇所を片っ端から直してエラーが無くなれば、修正漏れなしの証拠だからめちゃくちゃ安心できます。
JavascriptやらRubyでこういうことをしたら、人間が目を皿のようにして全部チェックしないといけないわけでしょ。
どう考えても変更の多いコードこそ動的型の言語は不向きだと思われますが。
こういう話をすると、エディタの検索でどうこうって反論がくると思いますけど、あれは言語を理解しないでテキストでマッチしてるだけでしょ。
たとえば func($url); と他のサブルーチンに渡して、
function func($address) {} みたいに受け取って、そこから先は文字列として扱ってるコードがあっても探しきれませんよね。
静的型の言語なら、void func(string address) {} を void func(URI address) {}と修正したら修正漏れの箇所があってもエラーが伝播して言って、すぐ分かります。
OracleとGoogleの裁判がらみで「Java終了よかったよかった」みたいな話の流れで、AndroidアプリはJavascriptで作ればいいって盛り上がってたけど、そうなったらIDEのサポートが大幅になくなる原始的な環境に逆戻りでしょ。
勘弁して欲しい。
ほんとうに動的型の言語はめんどくさい。
Playbooks — Ansible Documentation
railsbox - Fast and easy Ruby on Rails virtual boxes
Ansible入門 (全15回) - プログラミングならドットインストール
Amazon.co.jp: 入門Ansible eBook: 若山史郎: Kindleストア
Amazon.co.jp: Ansible Configuration Management 電子書籍: Daniel Hall: Kindleストア
Red HatがITオートメーションのAnsibleを$150Mで買収へ…OpenStackデプロイをDevOpsのために簡易化
Git Clone (スタートアップスクリプトID:112600117316)
指定のGitリポジトリをcloneし、指定の実行ファイルを自動的に実行します。
https://github.com/philc/terraform
fog - The Ruby cloud services library
A list of base boxes for Vagrant - Vagrantbox.es
Discover Vagrant Boxes | Atlas by HashiCorp
https://github.com/ryotarai/itamae
Itamae - Infra as Code 現状確認会 // Speaker Deck
Amazon.co.jp: Chef実践入門 ~コードによるインフラ構築の自動化 (WEB+DB PRESS plus): 吉羽 龍太郎, 安藤 祐介, 伊藤 直也, 菅井 祐太朗, 並河 祐貴: 本
Docker - Build, Ship, and Run Any App, Anywhere
[翻訳] Dockerについてよくある勘違い | TechRacho
Puppet Labs: IT Automation Software for System Administrators
IT系の知識って多岐に渡るくせに、初めの一歩のために浅く広くで体系立てられた情報源が無いんだよね。
DBならOracle、PostgreSQL…、言語ならC、Java…みたいな感じで各技術分野の中の特定の技術ってのを学ぶ手段は山ほどあるんだけど、その技術分野同士の相関関係や各技術の違いなどのメタ情報が個人ブログとかで部分的に表現されてるだけで、体系立てられてないから、とにかく実務で身に付ける、アンテナ張って色んな技術情報を身に付けていく内に段々分かってくるってモノになってる気がするんだよな。ググって調べても説明文にまた分からない言葉や腑に落ちない部分があるからまたその言葉をググってみたいな事を繰り返してようやく何となく分かったみたいな経験がこの仕事をしてる人は誰にでもあると思う。
だから、用意されたインフラ上で実装するって現場ばっかり回されるような人は知らなくても不思議ではないと思う(若干酷いなとは思うけど)。
プライベートでキャッチアップし続けてようやく知って当たり前の知識が身に付くって構図はあまり良いとは思えないんだよな。
Iパスや基本情報も所詮はバラバラの情報の寄せ集めなんで書いてある内容の理解や各技術分野の関連を理解するには行間を自分で埋めなきゃならないんだけど、まさにその行間を埋めるための全体像を把握するための知識が今この業界に欠けているものであり必要なのだと思う。
下見て思った。
http://mizchi.hatenablog.com/entry/2013/09/25/190313
知識が離散して蓄積されてない気がする。
シングルページスタイルのJavaScriptWebアプリケーションのアーキテクチャ
JavaScriptMVCライブラリを利用するよ!
とりあえず今回は、乱立する名称候補たちを紹介
HTML5って言いたいだけのJavaScrtipt使ったスマホのアプリフレームワークとかも呼ばれたり。
HTML5とか言われる前にJavaScriptアプリケーションやるとこれになってた。
アーキテクチャとしては、もっとも正解の名前なのだが、NET系界隈でしかきかん。
ASP.NET MVC Single Page Applicationは、キー要素がかなり詰まってて、参考になる。
このあたりのやろうとしてる奴は一度触っておくが吉
JavaScriptMVCライブラリ、AMD等の依存モジュール管理とか
英語ソースだと結構ポピュラーな感じの名前だが、指針的な匂いでアプリケーションとは言わない感も。
日本でも一時期、大規模Javascript開発とか言われてたが、Bakcbone.jsって名前に変わった。
Node.jsと被るために、このアーキテクチャの説明にはあんまり使われない。
動物本の、
「ステートフルJavaScript MVCアーキテクチャに基づくWebアプリケーションの状態管理 」
原題は、「JavaScript Web Applications」
これだけで、どのぐらい困ったか分かる感じ。
ちなみに、JavascriptMVCアーキテクチャの解説本としてはありなので読むが吉
といっても、10年ぐらい前からXHRとHTMLとDOMでほげるのは
実はあんまり変わってない。
Java界隈から出したかっただけ。oracleが呼んでた気がする。
Struts死んだけど、JSFでやるの?JSF無理筋だから違うフレームワーク作るの。
JSFみたいな抽象化使い始めると、コボルみたいにJava世界に閉じそうだけど大丈夫なの?
このあたりのライブラリ使えば、簡単にこのスタイルのアプリ作れると思ってるでしょ?
ライブラリの名称なのだが、背負ってるものは、大体この界隈全て
だけど、使えば、この界隈のアプリが簡単に作れるかというと、そうでもない。
仕事で3ヶ月ほどRuby on Railsに触れる機会があったので、色々と調べているうちにRailsでエロサイトを作るのが流行っているというのを知りました。
そこで、自分でも作ってみようかと思いました。
2番煎じなのは重々承知ですが、とにかく作ってみることが重要なのです。
今回のエントリでは、個人的にエロサイトを作成して公開するまで自分でやった方法を紹介します。
※公開後の状況なども書き込みします。
CuteClipper : http://cuteclipper.night-generations.info/
既にあるものなら新しく作る必要はないわけで、、、今回は自分の使いたい機能を作ってみました。
Xvideosの動画サイトの多くは、動画を選択すると他のサイト(ブログみたいなやつ)に飛ばされてしまい、
そのサイトで、動画のある場所を探さないといけないことが多くてめんどくさい。
自分で作るのならh300さんのように分かりやすいサイトにしたいと思いました。
たくさんの動画を観て廻るものの、本当にいいと思う動画は大体3本くらいです。(自分の場合)
なので、3本まで動画をストックする機能があるといいなと思いました。
本番環境のherokuはドメインの設定も簡単で助かりました。
rails newしてdb作成して、基本的なアプリを作成しました。
動画情報の解析のため、RailsのGemのnokogiriを使用しました。
nokogiriはhtmlなどの解析をして、情報を取得することができます。
Ruby - Nokogiriでスクレイピング - Qiita [キータ]
//localStrage.setItem("key","value"); localStorage.setItem("test","テスト"); //localStrage.getItem("key"); localStorage.getItem("test"); //"テスト"
レイアウトにはあまり時間を掛けず、bootstrapを利用しました。
twitter bootstrap railsを使ったら職が見つかり彼女も出来て背も3センチ伸びました。 - ppworks blog
タグクラウドはacts-as-taggable-onで簡単に実装できます。
ということで、ここまでで出来上がったものを本番環境にアップします。
herokuはgitでpushをするだけで簡単に本番環境にデプロイ出来ます。
とにかく動かすという目標のためにはherokuはベストチョイスです。
スピードに関しては、海外サーバという点が難点ですが、今回はjavascriptをメインにしたことで、それほど問題はありませんでした。
解析の仕方を覚えるためにもGoogle Analyticsを使用しました。
公開の準備として以下の作業をしました。
ただ、公開することを最優先にしたので、しっかり作りこんではいないです。
公開します。
今の投稿方法だとエラーが発生しやすいので修正してからじゃないとなぁ
後は、並び替えるだけなんですが、まずはカウントが貯まるまではソートも何もないので・・・
ストック回数だけじゃ物足りないので、評価をつけれるようにしたいです。
でも、たくさんの人に使ってもらえるものを作るというのは、とても大変ですね。
今回、CuteClipperを作りながら、他の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)
というのが、作ってる人たちは「これ、正直やばいけど稼げるし短期決戦で得るもん得ていこうか〜」くらいの気持ちでやってるのかと思ってた。
実際この考えの人は少なからずいるはずだ。
あるいは、「ヤバいけど、ライバル会社もやってて生き残るには自分も参加するしかない。」っていう、
ある種の邪悪なチキンレースに乗ってしまっている事を自覚してる人たち。
この人たちは、まぁ、邪悪だけど仕方ないのかなと思う。
※なお、本当に本当の意味で『邪悪』な人たちはとっくの昔に上がりを頂戴して既にあの場にはいないはず。
少なくとも某女史は完全に逃げ切ったのかなと。
けれども、どうも中の人たちのレスポンスを見る限り、「俺たち悪い事してねーし!」みたいなことを本気で考えている人たちがいる様子。
この人たちはヤバい。何がヤバいかと言うと、「罪の意識の希薄化」がされたことに一切気づいていないと言う点でヤバい。
そしてそのヤバさが、プログラマーっていう職業に対する社会の認識が悪い方向に傾きかねないのでヤバい。
いや、もう手遅れだ。多分、後一年後にはIT業界に対する世間の目そのものが冷たいものに変わっているだろう。
まず僕はあの場で「俺悪くねーし!」って言ってる末端を攻めるつもりは無い。
(といっても役職持ちでこんなことを言ってる連中には残念ながら、だけど。)
けれども、彼らが嵌った「脱法的ソシャゲー開発」の一端は解き明かしておきたい。
何故なら、このロジックは非常に単純で、かつ効果がテキメン。特に技術職に従事する連中に対しては。
さて、例え話をしよう。
それは先端のライブラリを使い、高負荷をものともしない作りにし、
またユーザーを飽きさせないよう常時色々なキャンペーンを打っていくアプリケーションだ。
ユーザー数は膨大で、アクティブなユーザー数だけでも10万を超す。
このアプリケーションを作成して運用するのは、いくら何でも一人では無理だ。
そこで仕事を分割し、プログラマー、インフラエンジニア、UXデザイナ、WEBデザイナー、ディレクター、
アナリスト、PM、営業…などなど、それぞれの専門職を適切に配置し、
それぞれが自分の得意な事に集中できるようにする。
こうすることで、それぞれの専門職にとって雑多な事は、耳半分で会議を聞きつつうまく回る。
さて、次の例え話をしよう。
とある邪悪な人間が、邪悪で脱法的な方法でお金を稼ぐロジックを思いついたとしよう。
しかし、規模が大きいので人手がいる。けれども、他の邪悪な連中を誘い込むと美味しいところを奪われたあげく、
責任をなすり付けられる可能性が高い。
ならばどうするか?「普通の人」を巻き込めばいい。
でも、「この方法で情弱を騙して稼ごうぜwww」というと、人は訝しみ、拒絶する。
けれども、その邪悪なロジックを分割して、分割したそれぞれの仕事が違法ではないものにすると…?
あるいは、分割したロジックを事前に3つ前後の別のクリーンな仕事に適用して失敗して後が無い状況を演出しておき、
ここで、だ。結合された後のサービスのありようを見て、「これって、ダメなんじゃない?」という人は必ず出てくる。
ここで、技術職の悪い癖を利用する。
技術職は「0か1か」での判断をすることに常にさらされているため、
そうではない世界でも「0か1か」で決まるものだと錯覚しやすい。
「うちの法務に事前に確認しましたが、法律上問題ないとのことです」と。
※注意
法務の方々の名誉の為に言っておくと、システムの邪悪さを理解して邪悪さを誤摩化す回答をする法務も一部にはいるが、
そこで、邪悪な人は特定の条件下で起こりうる例外を提示して「それならグリーンだ」と言わせておき、
その例外を隠して「この前うちの法務に事前に確認しましたが、法律上問題ないとのことです」と
法律は「0か1か」に見えてそうじゃない。
少なくとも過去に判例が出ていないものについては「0か1か」すらわからない。
ようは「未テストの項目」に過ぎない。
「裁判所」というテストを通らない限り、「0か1か」なんて本当はわかるはずもない。
それも、テストの内容によっては関係するモジュールや実行環境、タイミングによって結果が変わる事すらあり得る。
法務の言う「大丈夫」なんて、ようは自動テストやってない職場でベテラン開発者がいう「あ〜あそこはきっとOracleのバグ(※ただし未検証」と同じ程度の回答だ。
(本当はOracleのバグではなくそいつが作りこんだバグなのかもしれない。)
さて、普通の技術者が邪悪なテスト結果をまんまと信じたら、あとは邪悪な人の思い通りだ。
まず、そのテスト結果を信じた普通の人は、他にも不審に思った人に対して「あれは問題ないって法務が言ってたよ」と伝える。
が、ここでは同じテストを繰り返さず、過去のレポート、それも又聞きのレポートを伝えているに過ぎない。
もう一度同じテストをかけていない。自分の目と耳で、法務から直接話を聞いていない。
また、結合前のクリーンな仕事をしているそれぞれの担当者に取って、
結合後の姿より結合前の状態がその人の仕事の大半であり、「本当の意味での」結合後の姿を見てるようで見ていない。
単体テストはバリバリこなすだろう。しかし結合後のストレステストやセキュリティのテストは専門外として見向きもしない。
いや正確には「何かあったら、専門の担当者が文句つけてくるはずだ」と待ちの姿勢でいる状態だ。
邪悪な人は、間違いなくその専門の担当者が各部署を回って抜き打ちテストをやらせるなんて事はしない。
そもそも専門の人を社内に常駐させないか、もしくは置いても他の事(例えば他社とのライセンス問題など)にリソースをさくよう仕向ける。
だから否定されると「俺悪くねーし!」と言い出す。
細分化された仕事のことしか見なければ悪いことは何も無いだろうね。
しかし…もう…嵌っちゃったんだなぁというのが外野からの印象。
まぁせいぜい人身御供になってくれ。
今回の件、役職だけではなく実務の担当者まで引っ張られる可能性はある。
裁判にかけられるかどうかは謎だけど、企業や業界への揺さぶりの手段としては有効だしね。
なお、最初に言ったが本当に邪悪な人はもう既にあの場所にはいないはずだ。
もう既に後進に道を譲るだの自分の力を別の場所で試したいだのもっともらしい理由を付けて、
「普通の人々」のその後がどうなるかはこれからの物語なので、とても楽しみではある。
おそらく、なのだが、この件、ワーストケースで転がれば、当該の企業だけではなく
「ITの技術者はマッドサイエンティストと同じで法の遵守する気がない連中だ!」と言われる日は意外とそう遠くないと思う。
そんな風がもし吹こうなら、政治家の先生方や警察のお歴々も「インターネットの健全性を保証する」という名目で、
色々と無茶な法律を作るかもしれませんね。
少なくとも、「インターネット=悪」として自分らの有利な方向にネットをコントロールしたい方々にとってはとても好都合でしょうよ。
そろそろ、誰かが「良い意味で」健全化のために何かを仕込む頃合い。
政治家や警察といったレイヤーではなく、業界の自主努力のレイヤーで。
2、3年後、どんな団体ができでどんな人が所属するかなぁ?
ダンコーガイ、津田、はまちちゃん、ちきりん、高木先生、漢のMySQLの人、徳丸本の人…多分この中から二人は自ら、あるいは担ぎだされる/巻き込まれる形で関わってくるかな。
切込隊長は面白おかしくレポートしつつ裏で謎の秋波を送るんだろうなぁ。
多分ひろゆきはその集まりを「つまらない」と見て何もしないかな?
ガチでメーラとWordとExcel,パワポ(しかも2003(笑))、teraterm、FFFTP位しかつかわねーからさ
あいつら本気でXP(笑)、メモリ1GBで足りてるとか思ってるからタチがわりーわ。
・コードがかける若手SE(笑)がEclipseとかMySQL、Oracle,Chrome,Firefox,IE,Java,.netと使うからある程度スペックが欲しい。(と言っても今時の5万で買える普通スペックで良い。。)
↓
・若手が新しいPC寄越せと要求
↓
・年食ったコードがかけないSE(笑)はOffice2003(笑)位しか使わないし、めんどくさいから要らないと抜かす
↓
・先輩がいいって言ってるのにお前らが要求するのか?とか言って取り合わない。
↓
・ほんとに必要な最前線の若手にまともなPCが行かない、その結果朝にパソコン起動してメーラとEclipseが起動するのに15分かかる環境の出来上がりwww
一方部課長以上の役職には全員Androidタブレットが支給され
お飾り部長には組織移行都度に新PCが卸される(結局何してるかもしらんがwOfficeとIEしかつかわねーくせによwww)
そりゃ社員がセットアップするし、何も入ってねぇから環境移行もし易いもんなww
もちろんAndroidタブレットはメール確認するくらいにしか使わないwww
iPadやAndroidタブレットのブラウザ、メールをちょこっと触った位で最新になったと思い込むめでたい老害達。
そのHTML5とサーバサイドの開発するのは俺たち若手SEなんだがなwwww
でも結局使わないし飽きて部長のタブレットは机の中に入れっぱかおきっぱ。
クラウドクラウド、SalesforcrSalesforce
クソウォーターフォール維持しながらスピード感がとか寝言ぬかしてんじゃねーぞwwヴォケが。
上の承認が~承認が~って要件定義が~ってお前らクソ共の承認があってスピードも何もねぇだろうがwww
その上テストドリブンしようとすると、要件が固まってないだろ!とか抜かすし、殺すぞ。
結果アホ共が思いつきで言い放った言葉は忘れない
SalesForceのパンフレットに開発は1月を目処に実装する、みたいな文言を間に受けて
え?じゃあ、プロトタイピングとかテストドリブン型とかでやるの?とか聞くと、
いや、客の要件をしっかり聞いて要件をしっかり洗い出して~上司の承認をしっかりと得て手戻りがないように~とか抜かすwwwwww
おい、お前それ今までとかわらねーじゃねーかwwwww
あーいうのは少人数チームで全員が開発者としてプログラムが十二分に書けて仕様書とかの書類を最低限にして
要件定義や決定権限の大部分を現場に委任して優先順位の高い項目からを集中してやるから出来るのであって
日本のほとんどのアホSI企業の典型的なコードの書けないExcel書くだけの御用聞きSE(笑)なんて邪魔以外の何者でもないwww
そんなゴミSE(笑)が多くを占める会社で出来る事じゃねーんだよwwww
あーいうゴミ共は居るだけでどーでもいい好みでの文句をグダグダいうから余計に作業が遅くなるwww
こういうクソみたいなことばっかりやってるから古い日本企業はダメなんだよ、ゴミどもが、さっさと潰れろ。
そして俺はクソSI業界を見限ってソーシャルゲーム業界に転職準備をしているのであった(完)
http://anond.hatelabo.jp/20120207005408
まなめはうす恐るべし
ちなみに私のPCのスペックはPen4 1.6Ghz メモリ1GB HDD 30GBです。
これでメインはJavaのStruts2とSpring Eclipse3.7で組んでます。
これより低い奴出てこいや…
とりあえず一部間違えていたので訂正www
1.HDDは37GBでした。ごめんなさい、実際に見てみたら間違えてました。でもいつもSVNチェックアウトするときとかデカイzipを落とす時はいつも何か消してからしています。
2.ケースはチェーンで鍵がかけられているので開けられません(^p^)よって自分での拡張は不可
後、時々あった。
PGなんてのはゴミがやる仕事だからそんなの気にかける方がゴミ
とか
とか
コードを書かなきゃいけない時点で大手ではない
ちなみにT○SとかI○M、NT○の人もコード普通に書いてたよ。
ってか書くとこは書くでしょww
んで上みたいな考えの人はそれで構わないでしょう。
そうやって思っててコードやプログラム部分なんてどうでもいい。
フロントエンドやバックエンドが発達しても設計書レベルや提案レベルに落としこむ場合に実コードの知識なんて影響しない思うならそれでどうぞって感じ
いつまでも何でもバッチ処理(笑)にこだわる人も良くいますしねwwww
私からしたらいつまでコードの書けないSE(笑)が成り立つか逆に聞きたい位www
ま~コードがかけないSE(笑)からいつも馬鹿にされてるのを知ってるから、コードがかけるSE(笑)はどんどん逃げてっているんですよね~
わざわざプログラム(笑)とか馬鹿にされてまで居るものじゃねーよwww
現在どんどんSI業界から出来る人が率先して辞めてるからwww
ただでさえ人材不足のクソSI業界にいつ影響が表面化するか(もうしてるか?)楽しみですNE!
私は先に役に立たない大量の船頭しかいない泥船から抜け出しますwww
戻って来ることもないでしょう!多分!
それではアデュー!
事実上性能悪いでしょ。
たとえばこのご時世で、NLS対応なんかが糞。
根本的な部分に手を出せないんだろ、「過去の安定した実績」とやらを保つ弊害だな。
Expressなんか無償である程度使わせておいて、バグ対処必要とのことで有償でパッチを配る。
パソコンにデザインやキーの感触、I/Oポートの配置などトータルでの洗練は無用、
クロックアップでベンチがすごいとか、PCI-X(出てるのかな...)にも対応、とかで
「さすが!」と嬉々とする厨房みたい。
まあ、Oracle様のアコギ商売、信者どもが守ってくれるからな。
「うまく使えないのは、使うおまえが下手なだけ」...って言ってお終いの、よく見かける世間のパターン。
という俺はゴールド餅だけど、新規DBにOracleは、俺の為にも会社の為にも絶対採用しない。
採用時の1従業員(SIerかもしれぬ)の好き嫌いで、業務が左右されてたまるかよ。(SIerなら、バックもあるのか?)
今後数年の保守やシステム拡張、何より費用面からして会社へ背任行為をするわけにいかない。
困るとすれば、転職ときの経験・スキルでOracle求められること。
DBの意味もわからない人事のひとがとりあえずメジャーということで
求人要件に載せやがるっぽくて参る。
http://www.limy.org/program/db/not_oracle.html
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=30408&forum=7&start=8
どうもありがとう、試してみる。
TCP/IP接続を有効にすればいけたのか、、制限か何かでダメだったのかと記憶してた・・・
安定していたりマルチプラットフォームなのは良いのだろうけど
今ではMSSQLもOracleっぽい排他ロック(READ COMMITTED SNAPSHOT)が出来るようになったし
ロックのエスカレーションってやつで困るほどテーブルにたくさん行を作ることもなさそうだし
OracleDBを新規導入で敢えて選択したくはないな...
DBってこんなもんか...と思ってたけど、インストーラのヘコさにあきれまくる。
その後 Microsoft SQL Server 2000 の手軽さを知って、こちらにどっぷり。
で、ずっとSQL Server。
そこそこの使い方ならどっちのDBも十分使える上に、Oracleは「くだらない」お作法が大杉。(Oracle Master の為?)
クエリー実行計画が図解でわかりやすい、バックアップやアタッチが超楽。
サポート(修正パッチなど)も料金込みのMSのほうがトータルで安価だし、CubeやReporting Serviceなどもコミコミで使える。
多言語関係もMS SQL Server のほうが良くできてる。
SQL Server のStandard Editionだけでなく、無償版であるExpress Edition も使っているが、
残念ながらこれは外部のPCから接続できない制限がある(はず)。
同じく無償版のOracle DB 11g Expressがあるが、こっちでは他のPCから接続できた。
Universal Installer は相変わらずjavaでできてるからかUIヘコいけど、
「くだならい」設定項目がだいぶ減って楽ちんでインストール完了。時代は進化した。
.NET Framework(OLE DB)で外部からのPC接続もホスト名、ユーザー名、パスワードを接続文字列で指定するだけで、あっさりOK。
tnsnames.oraとかいじることはもう無くてよいのだろう。
The faster a computer goes, the more likely is to have Linux at its heart. The most recent Top500 list of supercomputers shows that, if anything, Linux is becoming even more popular at computing’s high end.
In the latest Top500 Supercomputer list, you’ll find when you dig into the supercomputer statistics that Linux runs 457 of the world’s fastest computers. That’s 91.4%. Linux is followed by Unix, with 30 or 6%; mixed operating systems with 11 supercomputers, 2.2%. In the back of the line, you’ll find OpenSolaris and BSD with 1 computer and–oh me, oh my–Windows also with just 1 supercomputer to its credit. That’s a drop from 4 in the last supercomputer round up in June.
Digging deeper, we find that various customized Linux distributions account for 414 of the supercomputers. AIX, IBM’s house brand of Unix, takes a distant second place in individual operating system distributions. It’s followed by various versions of SUSE Linux Enterprise Server (SLES) and a variety of Red Hat Enterprise Linux (RHEL) variants including the RHEL clone CentOS. Compute Node Linux is the last significant solo Linux distribution on the list.
Other operating systems that just make the list includes Oracle’s all but dead OpenSolaris with one entry. The sole Windows entry, Windows HPC 2008, placed 58th.
So, while Linux has only a minute share of the desktop, a big chunk of the server market, is the platform for most Web servers, when it comes to one arena: the fastest of the fast, supercomputers, Linux absolutely rules.