はてなキーワード: postgresqlとは
たとえばC#など.NET系のリファレンスはMSDNで読むことができる。
RubyだってHaskellだってScalaだって、公式サイトにガイドぐらい置いてある。
Oracle、DB2、MySQL、PostgreSQL、SQLite、AccessなどSQLが実装されたDBMSは様々にあるが、どれを取っても仕様が違う。
皆が標準SQLに従っていてその上で適当に増設している程度ならよいが、もはや誰も標準SQLに従う気が無い。
根幹的に必要な機能があったりなかったりするから、あるDBMSで書けるようになったからと言ってSQLを覚えたとは言えない。
これと上記1とのせいで、何かググった時に特定のDBMSでしか解決法にならないものが大量に出てくる。
最近のプログラミング言語は大抵、雑に書いたってコンパイラが適当に最適化してくれる。
同じ結果を生むような二つのコードは、よほど下手くそに書かない限りは同じような実行速度になる。
SQLもオプティマイザが最適化はするが、ほぼ同じような二つのコードで速度が全く変わったりする。
そのため実行計画というオプティマイザの中間言語のようなものを読んであげて、
より速い中間言語が生成されるようSQLをチューニングし直さなければならない。
これでは何をやっているのかわからない。
有名なサイトでは、初心者が必死で書いたような可愛らしいSQLを「それでは遅すぎるんじゃ」とけちょんけちょんにけなし、
なんかシンプルなのだけれどよくわからない文法を一杯使って実行速度を高めたのを「正解」としていたりする。
しかもその文法、ググってもろくな解説が無かったり、特定のDBMSに依存してたりと使えないオチ。
上手い人はSQLを綺麗に書く。だけど、その綺麗さの基準が人によって違う。
エディタが単なるメモ帳でしかないようなDBMSも多いから、インデントの文字数さえ個々人に任される。
インデントは2文字か4文字か。SELECTで改行するかしないか。カンマは列の後ろか、前か。
いろいろなサイトに色々なことが書いてあったけれど、全部違うこと言ってた。
つまり各々綺麗に書ければいいやということであり、読むほうも宗教が違ってもまあ綺麗なら読めるから困りはしない。
何かの解決法をググるたびに違うスタイルだからどう書いていいのかわからない。
結局なんかいろいろな上手い人のスタイルをツギハギした新たなスタイルが世に誕生してしまうのだ。
async えいしんく
nvidia いんびーでぃあ
postgreSQL ぽすとぐrしーくえる
or whatever
I've had enough of that kind of thing. It sucks.
まじな話をすると、N予備校のプログラミング入門コースやるのがオススメ。
一日8時間勉強時間があるなら、だいたい一ヶ月で終わる内容。
月額1000円だけどしっかり勉強すれば一ヶ月の無料期間中に終わると思う。
もともとN高等学校のノンプログラマーの生徒をWebエンジニアとして就職させるために作られたカリキュラムで講師曰く去年はこれで二人エンジニア就職を決めたらしい。
内容も相当親切に説明していて、プログラミングで何か作るだけじゃなくて、就職に必要な環境構築やセキュリティまでみっちりやる。
で講師が書いてる入門コースで習うことがまとめ。テキスト教材もあるけど授業も1項目を2時間で説明している。授業は週2の生放送とそのアーカイブがある。
↓みたいなことが学べる
----
Web ブラウザとは (Chrome, デベロッパーコンソール, alert)
はじめてのHTML (VSCode, HTML, Emmet)
さまざまなHTMLタグ (h, p, a, img, ul, tableタグ)
HTMLで作る自己紹介ページ (HTMLタグ組み合わせ, コンテンツ埋め込み)
はじめてのJavaScript (JS, ES6, エラー)
JavaScriptでの計算 (値, 算術演算子, 変数, 代入)
JavaScriptで論理を扱う (論理値, 論理積, 論理和, 否定, 比較演算子, if)
JavaScriptのループ (ループ, for)
JavaScriptのコレクション (コレクション, 配列, 添字, undefined)
JavaScriptの関数 (関数, 関数宣言, 引数, 戻り値, 関数呼び出し, 再帰)
JavaScriptのオブジェクト (オブジェクト, モデリング, プロパティ, 要件定義)
はじめてのCSS (CSS, セレクタ, background-color, border)
CSSを使ったプログラミング (transform, id, class)
Webページの企画とデザイン (企画, 要件定義, モックアップ, 16進数カラーコード)
診断機能の開発 (const, let, JSDoc, インタフェース, 正規表現, テストコード)
診断機能の組込み (div, 無名関数, アロー関数, ガード句, truthy, falsy)
ツイート機能の開発 (リバースエンジニアリング, URI, URL, URIエンコード)
LinuxというOS (VirtualBox, Vagrant, Ubuntuのインストール, OS, CUIの大切さ)
コンピューターの構成要素 (ノイマン型コンピューター, プロセス, lshw, man, ps, dfの使い方)
ファイル操作 (pwd, ls, cd, mkdir, rm, cp, mv, find, ホストマシンとの共有ディレクトリ)
標準出力 (標準入力、標準出力、標準エラー出力、パイプ、grep)
vi (vimtutor)
シェルプログラミング (シバン, echo, read, 変数, if)
通信とネットワーク (パケット, tcpdump, IPアドレス, TCP, ルーター, ping)
サーバーとクライアント (tmux, nc, telnet)
HTTP通信 (http, https, DNS, hostsファイル, ポートフォワーディング)
GitHubでウェブサイトの公開 (GitHub, リポジトリ, fork, commit, 情報モラル)
イシュー管理とWikiによるドキュメント作成 (Issues, Wiki)
GitとGitHubと連携 (git, ssh, clone, pull)
GitHubへのpush (init, add, status, インデックス, commit, push, tag)
Gitのブランチ (branch, checkout, merge, gh-pages)
Node.js (Node.js, nodebrew, Linux, REPL, コマンドライン引数, プルリク課題)
集計処理を行うプログラム (集計, 人口動態CSV, Stream, for-of, 連想配列Map, map関数)
アルゴリズムの改善 (アルゴリズム, フィボナッチ数列, 再帰, time, プロファイル, nodegrind, O記法, メモ化)
ライブラリ (ライブラリ, パッケージマネージャー, npm)
Slackのボット開発 (slack, mention, bot)
HubotとSlackアダプタ (hubot, yo)
モジュール化された処理 CRUD, オブジェクトライフサイクル, filter)
ボットインタフェースとの連携 (モジュールのつなぎ込み, trim, join)
同期I/Oと非同期I/O (同期I/O, 非同期I/O, ブロッキング)
例外処理 (try, catch, finally, throw)
HTTPサーバー (Web, TCPとUDP, Webサーバーの仕組み, Node.jsのイベントループ, リスナー)
HTTPのメソッド (メソッド, GET, POST, PUT, DELETE, CRUDとの対応)
HTMLのフォーム (フォームの仕組み, form, input)
HerokuでWebサービスを公開 (Webサービスの公開, heroku, dyno, toolbelt, login, create, logs)
認証で利用者を制限する (認証, Basic認証, Authorizationヘッダ, ステータスコード)
Cookie を使った秘密の匿名掲示板 (Cookie, Set-Cookie, expire)
UI、URI、モジュールの設計 (モジュール設計, フォームのメソッド制限, リダイレクト, 302)
フォームによる投稿機能の実装 (モジュール性, textarea, 303)
認証された投稿の一覧表示機能 (パスワードの平文管理の問題, 404, テンプレートのeach-in)
データベースへの保存機能の実装 (データベース, PostgreSQL, 主キー)
トラッキングCookieの実装 (トラッキング Cookie, IDの偽装, Cookie の削除)
削除機能の実装 (データベースを利用した削除処理, 認可, サーバーサイドでの認可)
管理者機能の実装 (Web サービスの管理責任, 管理者機能の重要性)
デザインの改善 (Bootstrap, レスポンシブデザイン, セキュリティの問題があるサイトを公開しない)
脆弱性 (脆弱性, 脆弱性で生まれる損失, 個人情報保護法, OS コマンド・インジェクション)
XSS脆弱性の対策 (XSS, 適切なエスケープ処理, リグレッション)
パスワードの脆弱性の対策(ハッシュ関数, メッセージダイジェスト, 不正アクセス禁止法, パスワードジェネレーター, 辞書攻撃)
セッション固定化攻撃脆弱性の対策 (セッション, セッション固定化攻撃, ハッシュ値による正当性チェック)
より強固なセッション管理 (推測しづらいセッション識別子, 秘密鍵)
安全なHerokuへの公開 (脆弱性に対する考え方, HTTPの廃止)
Webフレームワーク (Express.js, フレームワーク導入, 簡単なAPI, セキュリティアップデート, Cookie パーサー, ミドルウェア, 外部認証, ロガー)
ExpressのAPI (app, Properties, Request, Response, Router)
GitHubを使った外部認証 (Passport, OAuth)
テスティングフレームワーク (Mocha, レッド, グリーン, リファクタリング)
継続的インテグレーション (CircleCI)
クライアントのフレームワーク (Webpack, Chrome 以外のブラウザでもES6)
DOM操作のフレームワーク (jQuery, jQueryアニメーション, this)
AJAX (jQuery.ajax, クロスドメイン, 同一生成元ポリシー, x-requested-by, CORS)
WebSocket (WebSocket, WebSocketの状態遷移, Socket.io)
RDBとSQL (DDL, DCL, CREATE, DROP, INSERT, DELETE, UPDATE, WHERE)
テーブルの結合 (外部結合, 内部結合, 片側外部結合, JOIN ON)
インデックス (インデックス, 複合インデックス, Bツリー)
集計とソート (SUM, COUNT, ORDER BY, GROUP BY)
「予定調整くん」の設計 (要件定義、用語集、データモデル、URL設計、モジュール設計、MVC)
認証とRouterモジュールの実装 (Mocha, supertest, passport-stub, モックテスト)
予定とユーザーの保存 (セキュリティ要件, UUID, 複合主キー)
予定とユーザーの一覧の表示 (非同期処理, Promise, then)
出欠とコメントの表示 (入れ子の連想配列, Promise.all, 子どもからデータを消す)
昨今話題になってるヤマトや佐川関連のブックマークが上位を占めるかと思いきや、まったく違った。
(2016年12月29日10:54時点、本文、新着順で検索)
Amazonの検索結果 (絞り込み: 3 users 以上) 約 3,423 件中 1 - 40 件目 (0.26 秒)
(以下略)
ECサイトを連想させるトピックがほとんどなくて、AmazonがB2B向けサービスを充実させていることに驚いた。
Amazonって表向きは物流業界に革命と問題を起こしている要因に挙げられているけど、EC以外のインパクトがどれだけ大きいのか門外漢なので分からない。
↑でブクマ付けた人、何が起きるのか教えて
GitHubの謎生物が気になり、せっかくなのでIT界隈の動物(?)を用いた名前やロゴの由来など調べてみた。
※追記あり:Gopherファンに襲われそうなので。ごめんねGopher君
Q.どうしてタコなのに8本足じゃないの?
A.なにも考えずに描いたからね!
もともとデザイナーはoctopussと呼んでいたが、いくら訂正してもGitHubの社員がoctocatと呼ぶため、octocatで落ち着いた。
octocatはあの生物種の名称であり、monalisaという名前は社員の娘が学校の課題で名付けたもの。
種類:ニシキヘビ
名前: -
イギリスのコメディ番組『空飛ぶモンティ・パイソン』より。
またPythonという英単語はニシキヘビを意味するため、マスコットとしてヘビが用いられる。
オライリーの本とかすごい表紙だよね。
種類:ゾウ
種類:ゾウ
名前:slonik
「動物のロゴにしたいなら、象なんてどうだい?アガサ・クリスティの小説にもある『象は忘れない』だ」
― PostgreSQL発足時のメーリスより
種類:ゾウ
名前: -
象は記憶力が非常に優れた動物のため。PostgreSQLと同じで、象の優れた能力にあやかっている。
種類:ヌー
名前: -
種類:キツネ
名前: -
もともとPhoenixという名前だったが、商標権を侵害していたので、公募でFirebirdという名前に決定。
しかし今度はDBに同じ名前があったので、Firefox(レッサーパンダの別名)に改名。
みなさん命名は慎重に。
種類:クジラ
『白鯨(Moby-Dick)』より。クジラを採用した理由はデザイン見れば納得。
種類:ペンギン
名前はタキシード(Tuxedo)を着ているように見えるから。
ロゴコンテストで決定されたが、他の作品を見ればなぜ選ばれたのかよくわかる。デザインって大事。
https://www.cs.earlham.edu/~jeremiah/linux-pix/linux-logo.html
種類:鳥
名前:ラリー・バード
名前はNBAのラリー・バード選手より。社員がファンだったらしい
ちなみに初期のTwitterのデザインはGitHubのデザイナーが手掛けたもの。すごいっすね。
種類:シーサー
名前: -
種類:イルカ
名前:Sakila
種類:ネコ
名前: -
オライリーの本に載ることを考慮して動物をマスコットにしようと考え、「自立した強かさ」を持つという意味でTomcat(雄猫の愛称)を採用。
しかし、猫はオライリーのUML本で使われてしまい、念願のTomcat本にはユキヒョウが使われたという…。
種類:Dogcow(イヌ+ウシ)
名前:Clarus
昔々、Mac OSで用紙の向きや色を表示するために使用されていたらしい。
知らんわ。
種類:ウサギ
名前:Glenda
OSの名前である「Plan 9~」はエド・ウッドの『Plan 9 from Outer Space』に由来。
ウサギの名前であるGlendaはエド・ウッドの『グレンとグレンダ』に由来。
どんだけエド・ウッド好きなんだよ。
ニュージャージーのWFMUラジオで、Renee Frenchによって宣伝用のTシャツに描かれたのが、彼の初登場。
その後、Bell labsのメールシステムでアバターとして起用もされた。
(ちなみにReneeはBell labsのGlendaを描いた人。Glendaもアバターの一員だった)
そうして2009年、Goプロジェクトが発足し、ロゴを検討していたメンバーにReneeが無償で描いてあげたのが「Go gopher」である。
みんなGo Gopherと呼ぶので、特に固有の名前は無いらしい。
由来は下記サイトにありました。
Babelink
作った動機は、そっくりNAVIをつくった人と似ていて技術の勉強のためと今ある類似検索のサイトへの不満からです。
そっくりNAVI - 気になる子の顔写真で、似てるAVを検索できるサイトを作った
http://anond.hatelabo.jp/20160719033025#tb
ディープラーニングは最近流行りの技術で、一般的な物体の認識では人間に匹敵するか
今回は自分が持っている画像や有名人に似ているAV女優を探すという
極めて実用的な問題にその手法を試したいと思い、サイトをつくってみました。
■使ったライブラリなど
・PostgreSQL (データベース)
・flask (Web構築)
・dlib (顔検出)
・Awesomplete (入力補完)
ぼくは一応エンジニアのはしくれですが、pythonとか仕事でちゃんと使ったことないレベルです。
それでも3~4ヶ月程度である程度のサイトはつくれるので、みなさんも是非つくってみてください。
■課題
ディープラーニングでは非常に多くの画像を機械に学習させる必要があるのですが、
現状では学習のための画像がまだまだ足りていないので、あまりいい精度はでていません。
あとはディープラーニングで精度を高めるには、ハイスペックなGPUマシンが必要になるのですが、
そんなもの持っていないので精度をこれ以上あげるのは難しかったです。
そんなかんじで、まだまだ改良の余地はたくさんあるので、楽しみにしていてください。
■参考にしたサイト
http://anond.hatelabo.jp/20101203150748
京大で画像処理を学んだ僕が本気でエロWEBサービス作ったった
http://anond.hatelabo.jp/20130122180847
画像の収集はサーバー容量の問題もあり、していないので画像検索を気軽に試してみてください。
Babelink
みんな大好きPostgreSQL。
複数DBマルチテナントシステムを構築するなら忘れてはいけないコネクションプーリング。
大量コネクションを扱うなら都度forkやpre-fork式ではちょっと辛い、イベントベースが好ましい。
もうお分かりですね。pgbouncer1.6の話題です。
PostgreSQL界隈では有名なコネクションプーリングの実装が2つあります。 pgpool-II と pgbouncer。
ざっくり言うと高機能の pgpool-II に対して、軽量・大規模向けの pgbouncer という棲み分けがあると言えるでしょう。
pgpool-II は最近は日本の トレジャーデータ社の Prestogres ( https://github.com/treasure-data/prestogres ) という痺れるようなプロジェクトのベースとして採用されていることで名前を聞いたことのある方もいるのではないでしょうか。
pgbouncer は少し古いですが LastFM( http://www.lastfm.jp/user/Russ/journal/2008/02/21/zd_postgres_connection_pools:_pgpool_vs._pgbouncer )の事例が有名でしょう。Instagram も使ってますネ。
pgbouncerは現行のバージョンは1.5系で、最新は1.5.5です。1.6系は8月1日にリリースされ、複数DBマルチテナントシステムに向けた大規模な機能強化が行われています。
この1.6系では複数DBマルチテナントシステム開発者にとって嬉しい機能がたくさん搭載される予定です。本番運用に投入する前に一足お先にリリースノートを読んで夢を感じましょう。
本バージョン、2013年ぐらいからリリースノートは準備されているのにさっぱりリリースされなくて関係者をやきもきさせていました。(想像)
本記事では以下のリリースノートをもとにザックリ読み解いたものです。
http://pgbouncer.github.io/2015/08/pgbouncer-1-6/
・接続ユーザーやパスワードハッシュをDBからロードできるようになった
・プーリングモードの設定をデータベース毎、ユーザー毎に設定できるようになった
・データベース毎、ユーザー毎にコネクションの最大接続数を制御できるようになった
・新しいコネクション確立を避けるための DISABLE/ENABLE コマンドが追加された
・新しい推奨のDNSバックエンド c-ares が追加された
・設定ファイルに include ディレクティブを追加した
新しく以下のパラメータが追加された
1.5までのpgbouncerは userlist.txt というテキストに静的に接続ユーザを書かなければいけませんでした。
これは動的に接続先ユーザーが増えるようなマルチテナントシステムを構築するのに不向きという事です。
タイトルがすべてを物語ってます。柔軟にできますねぇ('∀`)
ただ、私にはちょっと有用な利用シーンが思いつかなかったです。
たとえば分析用ユーザーではトランザクションなんて使わないので statement モードにしてコネクションの消費を抑えたりできるという事でしょうか。
max_db_connections と max_user_connections という設定が追加されます。
テナント毎にユーザーを分けているような複数DBマルチテナントシステムにとって必須といえる機能です。
特定のユーザーのリクエストにコネクションをすべて占有されてしまい、他のユーザーにサービスできないという事態を避けることができるようになるでしょう。
特定のデータベースの新しいコネクション確立を抑止・再開することができます。
c-ares は名前解決の非同期化を行うためのライブラリです。c-aresは名前解決をブロックしないし、いろいろな方式の名前解決に対応している唯一のプロダクトとのこと。
名前解決をブロッキングしてしまうようではpgbouncerのような大規模向けシステムでは役に立たないのだというpgbouncerの強い意志を感じる。
というか、ドキュメントを見る限り pgbouncer は名前解決にかなりこだわりを持っているらしい。それだけそこが重要ということでしょう
(個人的には困ったことがないのでそこまでだわる理由はよくわからない。)。
UNIXドメインソケットで接続しているクライアントと、TCPまたはUNIXドメインソケットで接続しているサーバーでremote_pidを取得できるようになりました。
tcp serverの場合、pid はキャンセルキーから取得できる。(?ドキュメントから意味が読み取れず)
キャンセルキーとは何でしょうね。ちょっとリリースノートからは判断できませんでした。
pg_cancel_backend とかに使えるPIDだよという事なのでしょうか。
DBの数なんてもはや何台あるかわからない。ホスト名の解決はもはやDNSで行っておるよという皆様にとって必須の機能。
…なのでしょうが、ちょっとこの機能が必要となるようなシステムとはどんなものなのか、私も未経験なのでよくわからないです。
この設定は application_name_add_host=on にすることで有効となる。
今や接続元アプリケーション名がWebだとかBatchだとか区別できるだけで問題が解決するような時代ではない。
どのホスト(ポート)レベルで区別しないと。という事なんだろう。
「おお、Webサーバーから死ぬほど重いクエリが飛んでる、今すぐ調べないと!で、どのWebサーバーよ?100台あるんだぜ」みたいなときに助かりますね。
設定ファイルが大規模化してくると、切り出して整理したいという要望はどうしてもでてくるもの。
データベース毎、ユーザー毎に設定できる項目が増えてきたので必要になったという事でしょう。
以降はバグフィックスとかクリーンアップだとかで自分はあまり興味がないので各自読むように。
本番運用に突撃するPostgreSQL界の猛者の報告待ってます。
恥ずかしすぎてハンドルネームでやってる自分のブログにすら書けず、かと言ってどこかに吐き出したくはあったのでここに書いておく。
見た人は存分に笑い飛ばして欲しい。
先週、趣味で立てたVPSサーバー(CentOS 6.5)のCPU使用率が、気付くまでの9時間ずっと100%になっていた。
作動中のプロセスを見ると、2つのperlプロセスがその原因であることが分かった。
そのプロセスはユーザー「postgres」によって実行されたプロセスだった。
postgresは、PostgreSQLをインストールすると勝手に作られるユーザーだ。
先日自分でPostgreSQL9.4をインストールしたので、このユーザーの存在自体は問題無い。
その時このpostgresに、「postgres」という簡素なパスワードを、passwdコマンドで設定した。
「まぁ無いよりはマシなんじゃね?サーバー内でしか使わないユーザーだからハッキングの心配とかないしどうでも良いけど〜。」
と言ってたと思う。
その程度の認識だった。
これにより下記コマンドでpostgresとしてサーバーに入れてしまう状態になっていた。
$ ssh postgres@my.server.address.com
実行するとパスワードを求められるが、もちろんそれは前述のパスワード「postgres」だ。
それまではパスワードを設定していなかったので逆に助かっていた。
パスワードが設定されていないユーザーにはsshでは入れないからだ。
「もちろん」というが、それまではユーザーのパスワードがsshで入る時のパスワードになることを知らなかった。
そしてそれだけで接続可能になる可能性があることを知らなかった。
sshサーバーの設定はひと通り、自分が使っているVPSサービスがやってくれており、多分大丈夫だろうとそのまま使っていたからだ。
それでハッキングされ、そいつに謎のperlスクリプトを走らされていた。
具体的なスクリプトファイルや.bash_historyは消されていたようで、どんなものを走らせられていたのかよく分からない。
ハッキングであることを知ったのは、/var/log/secure を見たからだが、そもそもこの自体に陥るまで /var/log/secure の存在とその役割を知らなかった。
「ポスグレ(PostgreSQL)がなんかバグったわ〜でも原因がよく分からんわ〜ヒマだしハッキングの可能性も考えとくか〜でも絶対ポスグレがバグったんだわ〜」
でググって初めて知ったぐらいだ。
それで見たらパスワード設定してから9日間でそれぞれ別の端末23件から不正アクセスを受けていたことが分かった。
VPSサービスのコントロールパネルを見ると、その内の1件が侵入した3分後にCPU100%現象が始まったので、十中八九そいつの仕業だろう。
それ以外の連中が何をやったのかは分からない。
分からないのでOSを再インストールした。DoS攻撃だったらあとで攻撃先に訴えられるかもしれないので、全データを家のパソコンにDLする事で証拠(?)を保存してから。
/etc/ssh/sshd_config には、sshサーバーの設定が書かれている。
その中のPasswordAuthenticationをnoにし、公開鍵暗号方式による認証のみ受け付けるようにした。
他になんかやることとかある?おしえてぴょーん
こういう記事が上がって
それへの反応
記事の最初のカッコの省略だけど、世界的に評価されて広く使われてるようなプロジェクトのコードを見ると、案外{}が省略されていたりしてそんなことは気にしてない。(たとえばlinux, apache, postgresql, mysql, chromium, netbeeans, eclipse, llvm, jruby, android)
で「こんなコードを書くヤツは夜道に気をつけろ」「八つ裂き」みたいな大げさな反応してるのって、どういうコードを書いてるかよく分からないような人たち。
自転車置き場の議論的な、素人でも分かりやすいポイントだからこのツッコミって人気あるのかね。
―――――↓見てないかもしれないけどブクマとかへの返信を追加―――――
2chあたりでコーディングスタイルの議論になったときは、俺様基準じゃなくて実際に成果を出してる人たちが採用してるコーディングスタイルを基準にしようぜってことで、誰もが認める成果を出しててソースを見れるオープンソースのコードを引き合いに出すことが多いんだけど、そうするとよくある反論が二つある。
みたいなの。
さすがにはてなやツイッターじゃ、前者のような「お前は20年前からタイムスリップしてきたのか」みたいな認識の人はいないみたいだけど後者のような人は何人もいるね。
高度なコードを書いてる人とITドカタのコーディングルールは違うってなんなんだろうね。
「高度なコードを書いてる人は低レベルなケアレスミスなんてしない、だからカッコを省略しても平気なんだ、レベルの低い連中はケアレスミスをするからカッコが必要なんだ」って認識なのかね。
まあたしかに「viは一晩で書かれた」みたいにハッカーが複雑なコードを一気に書きあげてバグがなかったみたいな伝説ってあるけど、素人じゃないんだからそういうハッカーのイメージで高度な人たちをとらえるのはやめよう。
集中力が高度でケアレスミスをしないとか、今どきのソフト開発の「高度」はそういう意味じゃありません。
高度なソフトを開発している人たちは、おおむね読みやすさや保守性にセンシティブです。そのらのSIerなんかに比べたらはるかに。
で、そういう人たちが、カッコを書くか書かないかなんてどうでもいいって認識だからカッコを省くコードが書かれてるんです。
昔ハンガリアン記法がコードの質を高めると信じられてたときとか、if (100 == n) のように比較で定数を左にもってくるのが流行ったときも、そういう流儀の人たちは自分らは安全側に倒してるから正義だって信じて主張を全然曲げなかったですね。
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だけど商用ダメなんじゃないの?」って言われたことが多いんだよね。
もう一度言うが
IT系の知識って多岐に渡るくせに、初めの一歩のために浅く広くで体系立てられた情報源が無いんだよね。
DBならOracle、PostgreSQL…、言語ならC、Java…みたいな感じで各技術分野の中の特定の技術ってのを学ぶ手段は山ほどあるんだけど、その技術分野同士の相関関係や各技術の違いなどのメタ情報が個人ブログとかで部分的に表現されてるだけで、体系立てられてないから、とにかく実務で身に付ける、アンテナ張って色んな技術情報を身に付けていく内に段々分かってくるってモノになってる気がするんだよな。ググって調べても説明文にまた分からない言葉や腑に落ちない部分があるからまたその言葉をググってみたいな事を繰り返してようやく何となく分かったみたいな経験がこの仕事をしてる人は誰にでもあると思う。
だから、用意されたインフラ上で実装するって現場ばっかり回されるような人は知らなくても不思議ではないと思う(若干酷いなとは思うけど)。
プライベートでキャッチアップし続けてようやく知って当たり前の知識が身に付くって構図はあまり良いとは思えないんだよな。
Iパスや基本情報も所詮はバラバラの情報の寄せ集めなんで書いてある内容の理解や各技術分野の関連を理解するには行間を自分で埋めなきゃならないんだけど、まさにその行間を埋めるための全体像を把握するための知識が今この業界に欠けているものであり必要なのだと思う。
仕事で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アプリを観てきました。
そういうアプリの中で、自分のアプリを埋もれさせない努力を続けていかないといけないですね。
がんばります。というやる気がでました。
デザイナーの搾取と役所におけるボランティア活用を別の問題として考えるべきで
ごちゃまぜにしているから噛み合わないだと思う。
一般論としてNPOも含め公的な目的でのボランティア活用は認められてもよいと思う。
ダンピングとの指摘もあるが、ダンピングが規制されるのはガソリンスタンドの値下げのように競合を潰して自らの利益にする目的で行われるからであって
目的の異なるボランティア活用と同列にすることはできないと思う。
海岸で清掃ボランティアをするひとは、清掃業者に対するダンピングなのでやめるべきですか?
近所の掃除は? ほぼボランティアで近所の子供にサッカーを教える人は?(これは公的ではないか・・)
個人的にはよくも悪くも、社会の変化による避けられない現象だと思う。
IT業界におけるフリーソフトの台頭に近い。これまで有償で提供されていたスマホアプリが、個人が作ったフリーソフトに負ける。
MySQLやPostgreSQLに潰された中小データベースメーカー多いだろう。
これはダンピングと見えなくもないが、フリーソフト提供者も利用者も社会的に認められている。
Wikipediaだってボランティアによる百科事典業界に対するダンピングに見えなくもないが否定する人は少ないだろう。
今回のケースでは社会に対するボランティア意識の高まりと(似非も含めた)デザイナーの過多が原因ではないかと思う。
(一般論について話したいのでこれ以上突っ込まない)
ただし大前提としてボランティアとして成り立つのは動機が奉仕の心によってのみであるべきで、
それ以外の邪念(今後の仕事に役に立つとか)を応募側も持つべきでないし、募集側も匂わせるべきではない。
追記
今回のケースは当初から募集側応募側双方に邪念があったので、ボランティアじゃないよね。
ボランティアならは「自発」「見返りを求めない」が守られている必要がある。
そういった意味でボランティアとするならば、バーターの要素を一切排除し
・可能であれば何らか別の形でデザイナーに報いる
前編はこちら
http://anond.hatelabo.jp/20120926165407
会員情報や文章などのコンテンツを保存しておくデータべース、MySQLを調べます。
データベースは他にもPostgreSQLやSQLiteなどが有名ですが、やはり王道を勉強します。
MySQLはCakePHPや、ステップ4のWordPress他、よく使いますので把握しておきましょう。
今はまだ関係ありませんが、余裕があればこれも読むといいです。
操作はコマンドラインを覚えていく方向で、始めはブラウザで操作できるphpMyAdminを使ってOKです。
技術調査はこの位にして、これからは実際にWebサイトを作っていきます。
ここまで来ると何となく、Webサイトがどんな仕組みで動いてるかが分かってくるので、
ステップ0でイメージした作りたいサイトがどんな技術で実現出来るか調べます。
TwitterやGoogle、Yahoo、AmazonなどのAPIを使ってサテライトサイトを作っても良いと思います。
が、高度な事をするとはまりやすいので、ある程度やって無理だったらあきらめて次回にまわしましょう。
まずは何か一つ完成させる事のほうが大切です。
それから開発効率UPのため、Chromeにプラグインを入れましょう。
説明はそれぞれのリンク先を見て下さい。
https://chrome.google.com/webstore/detail/ggfgijbpiheegefliciemofobhmofgce
Firebug Lite for Google Chrome
https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
View Selection Source
https://chrome.google.com/webstore/detail/fbhgckgfljgjkkfngcoeajbgndkeoaaj
Pendule
https://chrome.google.com/webstore/detail/gbkffbkamcejhkcaocmkdeiiccpmjfdi
BuiltWith Technology Profiler
https://chrome.google.com/webstore/detail/dapjbgnjinbpoindlpdmhochffioedbn
iPSim
https://chrome.google.com/webstore/detail/gcligifbhamdimemnemmlkffkpmflehh
Color Picker
https://chrome.google.com/webstore/detail/ohcpnigalekghcmgcdcenkpelffpdolg
CSS Tester
https://chrome.google.com/webstore/detail/pjncppaiejjkcjlcgegcbmhgkflhenfp
MeasureIt
https://chrome.google.com/webstore/detail/pokhcahijjfkdccinalifdifljglhclm
あとはFireFoxにはFireBug。デバッグの定番らしいです。
https://addons.mozilla.org/ja/firefox/addon/firebug/
それから、空いた時間に無料のプログラミング動画サイト「ドットインストール」を見ておくと
ここまでの知識が定着すると思います。
ステップ7で作りたいサイトがイメージ出来てきたら、ドメインを取りましょう。
サーバーがさくらの場合はドメインもさくらで取得すると楽ですが、もっと安いところもあります。
希望するドメインが空いているか調べて取得、空いていなければ他のドメインを考えます。
http://www.sakura.ne.jp/domain/
定番の.com、.net、.orgは誰が見ても親しみがあるし安いので、できればこの3種類のどれかにしたい所ですが、
一般的な言葉はほぼ埋まっているので、その場合は.jp等にしても良いでしょう。
日本語ドメイン(www.日本語.netみたいな)は流行っていないですが、
自分のサイト名が「○○○.com」のような名前の場合は一緒に取得して、アルファベットのドメインにリダイレクトしましょう。
(ChromeユーザーがURL欄で検索する時、「○○○.com」のように後ろに.xxxが付いているとそのURLに直接アクセスしてしまい、
僕はバリュードメインで取得して、サーバーはさくらのレンタルサーバーにしました。
その際の親切な設定方法の解説はこちら。
VALUE DOMAIN で取得したドメインをさくらのレンタルサーバで使う
http://nekohacks.com/wordpress/domain/value-domain/
どんなサイトで、どんな機能があって、どんなページがあるかノートに書き出して行きます。
サイトの基本的なレイアウトをCSSで組みながら、デザインのイメージもしておきましょう。
ここではデザインはまだやりません。
先にデザインを作っても、プログラムを進めていく過程で変更がでたりする為です。
(でもあんまり後回しにしても、見た目がチープなせいでモチベーションが下がったりするので、次のステップでやります)
あと、ここで気をつけたいのは、あくまでメインとなる機能の開発を優先することです。
外堀から埋めていくとそこでモチベーションが尽きてしまったり、
メインの機能を実装してみたら外堀の修正が発生してしまったりするためです。
始めると分からない事がどんどん出てくると思うので、本を読み返したりGoogle先生で検索しながら進めて行きます。
なかなか進まなくて検索8割、コーディング2割くらいの進め方になると思いますが、それでOKです。
いじっているだけでモチベーションを使い切ってしまったりするので危険です。
CGソフトは色々ありますが、おすすめはフォトショ(Photoshop)です。
WebサイトのデザインはFireworksなども有名ですが、学習コストがかかるので、
Webサイトにもそれ以外にも使えて一番つぶしが効くフォトショップでOKです。
今年からクラウド契約が始まり、今なら1ヶ月8000円、年間契約なら1ヶ月5000円で
http://www.adobe.com/jp/products/creativecloud.html
お勧めの本はこれ
一から全部自分で作らなくても、素材サイトからダウンロードして加工するなどして手間を省きます。
PC・スマホ・携帯(ガラケー)全部に対応するのは大変なので、
初めはそのサービスを最も使うだろうと思われるどれか1つに絞ります。
PC用サイトならスマホでも最低限アクセスはできるし、携帯は縮小傾向なので優先度低、
スマホは画面サイズがまちまちでタブレット端末が目下発展中、AndroidはブラウザがたくさんあるがChromeに統一されていくかも、
対応する際はCSSを切り替えてレスポンシブレイアウトにするのがお勧めです。
その他、困ったらTwitter社が公開しているブートストラップを使うのもお勧めです。
ブートストラップはcssのフレームワークで、簡単にシャレ乙なデザインに仕上がります。
超便利!Twitter BootstrapでさくさくWeb開発
どうしても自分でイケてるデザインが出来ないと思ったら、友だちに頼んだり、SNSのコミュで募集したり、
デザイン系の大学や専門学校の掲示板にビラを貼らせてもらったりしましょう。制作費が出せればランサーズで募ってもいいかも。
Lancers - 仕事をフリーランスに発注できるクラウドソーシングサービス
僕はたまたまフォトショップの使用経験があったので、ここにかけた時間は30時間ではなく5時間程です(トータル275時間で開発)。
後編はこちら
【音注意】Count Down Tube http://www.leno-ig.com/ja/youtube/channel/
Count Down Tubeはチャンネル別に、トップソングをカウントダウン形式で視聴出来ます。
iTunes Music Store のプレビュー(30秒)では物足りなかったのが一番の理由です。
プレビューの短さを補うために、YouTubeにあるPVを再生しようと思いました。
また、1曲づつクリックして再生するのが手間だったので、カウントダウン形式で自動再生させました。
計4日で内訳は
「iTunes Music Store 、YouTube、アーティスト、ユーザすべてにメリットがある」
「アクセス増への対策」
「広告」
「機能追加」
[twitter:@leno_ig]
http://anond.hatelabo.jp/20101219185436
http://anond.hatelabo.jp/20101203150748