はてなキーワード: シェルスクリプトとは
この件⇒ https://togetter.com/li/1452558
ユニケージはbashのパイプで作られた、RDBMSを使わずテキストファイルによる空白区切り行志向レコードへのデータ処理(だいたいプログラム1本の処理内容がメインフレームのCOBOLのそれと同じくSQLクエリ1個に相当する)で、同形式によるマスタとトランザクションファイル(RDBMS内部のredoログに相当)を使う(データに含まれる空白文字0x20はアンダーバー0x5Fに置換する、アンダーバーが複数存在するデータの場合どう扱うかは知らない)
開発と更新は早いんだけど参照が(テキストファイルなので)インデクスが効かないためシャーディングするしかなく、要するに検索機能の柔軟性がなく、リアルタイム性を損なう
おそらく基幹系というか在庫管理をユニケージでやっているので、ウェブサイト自体はユニケージで実装されていないかもしれないけど、しかし根幹に上記のような手作りのデータベース実装があるし、RDBMSに移行するとなると全部を止めてマスタとトランザクションファイルをマージしてインポートすることになる
追記:トランザクションファイルのマスタへのマージは営業時間後の日次バッチとかでやるはず
システムを止めている間も店舗が運営を続けているなら、たとえば店頭在庫を潤沢に積んだうえで、店舗間での在庫の融通は禁止し、店頭での売り上げ分はどこかでRDBMSに計上しなければならない
追記:テキストファイルに対するインデクスをつくって行頭へのシークの高速化をすること自体はもちろん一般的には可能だけど、ユニケージの方法論だとそれをする標準的な方法はないはず。ユニケージはRDBでもNoSQLでもなく、バイト位置でのシークという操作自体がない世界なので。sedとかで行の差し替えをした場合(SQLのUPDATE相当)当然行頭のバイト位置が変更した行以降ですべてずれてしまう可能性があるのでインデクスの更新がひどく非効率になる
追記:文章下手ですみません。ユニケージの良いところはRDBMSの実装の基礎を理解できるところ(これはDate先生の教科書を読んだりOracle Silverの勉強をしたりSQLの書き方を工夫したりクエリプランを読んだりするよりずっと効率的に学べる、ただしファイル編成法の知識はちゃんとした教科書で補う必要がある)、アプリケーション実装技術について横断的な理解ができるところだと思います(USP研究所のシェルスクリプトマガジンには実際勉強になりそうな記事が多い)自分はユニケージへの移行案件を生き残れなかったクチなので。。
追記:Tsukubaiは好きになれませんでした。
Z君と仕事をするようになって僕は雨男という存在を信じるようになった。
雨男と言っても、本当の天候の渕上様的な意味での雨男ではなく、「彼が参加したプロジェクトにはことごとくトラブルが発生する」という意味でだ。僕が知る限りでも、いくつかの転々としたプロジェクトやチームで
などなど、枚挙に暇がない。原因をたどると必ずしも彼一人の責任とばかりは言えないものだったり不可抗力的なものだったりする。にも関わらず彼のいるところでは明らかにそういうトラブルが頻発するので雨男なのである。
でも正直言うと、僕はやっぱり原因は彼にあると内心思っている。彼はとにかく粗忽で人並み外れてミスが多い。数行のメールの中で一行目と二行目で矛盾したことを書く。指示をことごとく間違って解釈する。やらなくていいことをわざわざやってミスを作り込む。報告の内容が何度聞いても要領を得ない。そしてミスや問題を隠す。一つ一つのエピソードは笑えるものもあるし新人の可愛い女の子だったらドジっ子キャラで愛されるかもだけど、この業界で10年以上経験があってこれはどうなの。
と書くと絶対「ミスは誰にでもあるもの、チェックやレビューする体制をしっかりすべき、報告を隠さないような雰囲気を作れ」と言われるでしょう。うんわかりますよ、全くその通りだと思います、一般論としては。でもかなりのことはすでにやっていて、それでも彼の粗忽っぷりはさらにその斜め上を行っているので結果として周囲の負担がさらに大きくなっている。それがトラブルを招きこむ要因になってるとしか思えない。
彼は今は別の組織に異動したので今はうまくやっているのかよくわからない。やっぱり使えないと言われて突っ返されてこないことを祈るのみだ。
開発言語は基本的にPHPとJavascriptの職場。
別に複雑なコードでもないし、PHPやJSでも、まがりなりにもコードを書いてる人なら見ればわかるでしょって感じなんだけど。
スマホアプリ作るときも、JSならだれでもメンテナンスできるからってmonacaとかいうJSでアプリが開発できるやつを採用したけど、Webとはアーキテクチャが違いすぎるから結局一部の人間にしか触れなくて、そんなマイナーなプラットフォーム採用した意味なかったし。
ちょっとしたツールを作るときも、Windowsアプリとして作ったほうが使い勝手いいから、VB.NETかC#で作ろうって話になってもベテラン勢が猛反対して、無理やりPHPでWebアプリとして作ることになったし。
サーバーで使うシェルスクリプト(.sh)も未経験の俺が、ネットでチョコチョコとググって改修して、すごいびっくりされたことがあるけど、こっちからすればなんであんたらは触れないかっていう感じだし。(黒魔術的な書き方もあるらしいけどもちろんそんな書き方ではない)
Windowsサーバーで使う .BAT ファイルを書くときに、.BATファイルの仕様では黒魔術的なテクニックを使わないと実現できない仕様だったからほかの言語にしませんかって提案したけど、.BATでないとほかの人が保守できないからと却下。
無理に.BATで書いて、逆に変なテクニックを駆使した保守性皆無のコードになってたし。
どの言語を使うかって話題になると、自分の使ってる言語以外を使うとアイデンティティが崩壊するかのような勢いで反対する。
Haskellみたいにまったく思想の違う言語ならともかく、似たような言語で、かつifとループと配列とサブルーチンの概念を把握していたら理解できるような書き方しかしてないコードでも、普段使ってない言語って時点で理解不能に陥るんだよな。
パイプでつないでawk使ってハッカー気分かもしれないけどお前の書いてるスクリプトクソクソクソオブクソだから
おとなしく
subprocess
<追記>
本物のハッカーである皆さんはどしどし使ってくれて大丈夫ですよ^^;
そうですね、熱くなって言い過ぎました。
個人がターミナルに打ち込む一度きりのコマンドはOK、ファイルに保存した瞬間に違法としましょう。
<追追記>
いやあ思いのほかBuzzっちゃって^^;
awkは適当に思いついたから入れただけでパイプ使ってるんだから他のコマンドも入ってますよ^^;
grepとかsedとかPythonで同様のことができる(実行時間が現実的な範囲で収まる)ならPythonの関数でお願いします。
読めないのか
読めませんよ。意図が。$1、$2とだけ書かれててそこにどういう値が入っているべきなのかコメントは書かれてませんし^^;
ハッカーの皆さんは当然コメントも書いてくださってますよね^^;
NOV1975 追記で日本語が読めない増田だということがわかったし、業務を任せられない増田ということもわかった。君は一体何の増田なんだ
http://itpro.nikkeibp.co.jp/atcl/column/14/346926/101101158/
Q1.役所の仕事なんて全国でほぼ一緒なのに、なんで自治体ごとに別のシステムを作るの?
A1.地方自治体の事務や財務について法律で決まっているのは大枠だけだよ。
それを実務≒内部規定に落とし込むのは各役所ごとなので大枠は似てても実務プロセスは全然各役所で違うよ。例えば同じ業務でも独自の語彙があったり、下手すると同じ語で市町村ごとに意味が違ったりするよ。
Q2.なんで新規で作らないの?
A2.80年代ぐらいにやったよ。その結果が政令市クラスに残ってて今回京都市が更新しようとしてるような、メインフレーム上のシステムだよ。
A3.みんなが使ってるWindowsとかLinuxとかのOSがなかった時代のコンピュータだよ。IBMとかがベンダーごとに作っていてOSもベンダー謹製だよ。性能はいいけどメチャ高いよ。
システム内でクローズして専用線以外では他とつながってなかったから、汎用機からPCサーバへの移行を「オープン化」と言うよ。
オープンソースソフトウェアとは全然関係ないよ。
Q3.使いまわしってどうやってやるの?
A3.80年代とかに作ったシステムで動いてるCOBOLとかPL/IとかをLinuxとかUnixとかWindows上で動く言語にコンバートしてリコンパイルするよ。
DBのデータも階層型データモデルからリレーショナルDB用にコンバートして移行するよ。こういう開発形態を「マイグレーション」と呼ぶよ。
あと、バッチジョブ制御もJCLという汎用機用の言語で動いているよ。これもそのままでは動かないのでコンバートするよ。
コンバート先はperlだったり、シェルスクリプトだったり、ベンダごとの独自スクリプトだったりするよ。
COBOLとかの実行プログラム移行も大変だけど、帳票の大量印刷はたいていバッチジョブでこなしてるので、JCLの移行もめちゃ厄介で大抵もめるよ。
Q4.80年代のものを使いまわすとか。新規で作ればいいじゃん
A4.お金が無限にあればできるよ。今の時代にお金があった時代のシステムをフルスクラッチで再開発するととんでもない予算になって市役所内の決裁が通らないよ。
しかも汎用機時代の納品は割といいかげんだったのか、仕様書が残ってなかったりするから、費用はさらにかさむよ。
Q5.そんなんでよく運用できてたな
A5.当時はSEが汎用機の付属品みたいについてって、困ったらオペレーターとして介入して動かしていたみたいだよ。
そうやって現場感覚バリバリでやっているので、オペレーターしか知らないプロセスがあったりするよ。
マイグレーション開発では総合テスト中にそういう隠しプロセスが「発見」されたりするよ。こわいね。
上記の通り仕様書がないことも多いうえ、システム課に限らず市役所の人員は基本ローテーションするよ。
導入当初の担当者が残っていることは珍しいし、30年も前に導入した汎用機のことなんてここ10年に入った職員にはわからないよ。
Q7.なんで入札にしたの? 現行ベンダに指名してやらせたほうが良くない?
A7.金額がでかいから、たぶんどこの市役所でも入札案件だよ。
随意契約(随契)は無理だし、入札業者を発注者が指定する指名競争入札は談合の温床になってたから最近はあんまりやらないよ。
(裏技としてRFPを指名したいベンダーに書かせて公募型指名入札にしたり、RFPの段階でハードを全部特定ベンダで型番まで指定するというのがあるけど、公になると多分問題になるよ。こわいね)
Q8.じゃあ役所は悪くないの?
Q8.悪いよ。
入札案件はRFPで書かれた各項目をどれだけ満たすかの技術点と、価格点で決まるよ。点が高ければだいたい自動的にそのベンダーに決まるよ。
なので、技術点の項目に現行システムの調査にかかる項目を入れるとかして、現行機の開発・保守ベンダが高得点を取れるようにしておけば価格勝負してくるベンダーをはじけた可能性はあるよ。
もちろん現行の会社に嫌われて逃げられたとか、役所が現行の会社をめっちゃ嫌いになって声をかけなかったとかもあるかもしれないけれど、可能性は低いと思うよ。
A9.ここまで述べたようにこの手のマイグレーションは火薬庫だよ。火を噴いても爆発しなければラッキーぐらいなので、強いて言うなら入札したことが悪いよ。
A10.前にマイグレーションをやったことがあるSEだよ。もうやりたくないよ。今は転職してSIerじゃなくなったからやらなくてよくなったよ。うれしいね。
しょぼいSEだからここに書いたことは個人の体験に基づく参照情報だよ。一般的じゃないことを言ってたり、間違ってたら教えてもらえると助かるよ。
(2017.10.13 追記)
Q3がかぶっていたよ。恥ずかしくてなきそうだけどブコメに番号で言及してくれている人がいるから忍んでそのままにするよ。
あと、「オープン化」の定義が違くない?という指摘があったよ。確かに増田が間違っていたので、記事の主旨から外れるけど補記するよ。
メインフレームは本文で述べたようにOSからハードまでメーカー謹製なので独自仕様のカタマリだよ。
これに対しPCサーバは標準規格で作られているよ。こういう標準規格に基づくサーバをオープン系と呼ぶよ。
独自規格でクローズしたコンピュータから、そうでないオープン系に移行するからオープン化なのであって、専用線とかは関係なかったよ。半可通な知識で語ってしまったよ、ごめんね。
京都市で火中にいるシステムズさんのサイトの解説がこの増田よりも分かりやすくて正確だから気になる人は見てほしいよ
http://www.migration.jp/column/column01.html
完全に余談だけどオープン系のx86サーバに移行しても、システムはそんなにオープンにならなかったりするよ。
H系に頼むとDBが拝承DBになったり、Fに頼むとシステム管理が全部SystemWalkerになったり、要するにベンダ独自のミドルに入ってがっつりロックインされたりするよ。
今の自分が何をやってきたのかと言われれば・・国立系現代美術研究機関で仕事をしている。
そこで何の仕事をしているのかと言われれば、ネットで美術作品に関するWebサイトの制作や
システム、サーバ管理作業やベンダー企業と打ち合わせを行いながら、世間に情報を発信している仕事だ。
プログラムこそ書けないが、PremiumPro、AfterEffects、Photosho、Illustrator、Dreamweaverを使いな
がら画像加工や映像制作、写真撮影、簡単コーディングやJavascript、シェルスクリプトをゴリゴリ書いて
仕事している。自分では何でも屋と呼んでいる。これがクリエイティブと言われればどうかはわからないが・・・。
アーティストとかデザイナーが嫌いですと言っていた自分ではあるが、知らない人間がそう言う世界の事を
言うのも失礼だと考え、正社員をやめてデザイナーになるため、まずは安いWeb制作スクールに通ってみた。
短期間だがサイトの作り方とAdobeツールの使い方を教わった。
ところが自分にはWebコーディングやデザイン考え方は理解できたが、デザインセンスや色彩感覚に欠けていた。
スクールへ通った後、派遣会社へ「Web制作がしたい」と登録したが、ポートフォリオを見せた途端にボロクソに言われ、不採用が続いた。
そんな中、あるWeb制作会社で「君、サーバ管理の方がいいかも」と言われてしまったがデザイナーになりたいとしと考えて断った。
その言葉をきっかけに「デザイン能力がないなら」せめてサーバ管理でもと考えて、Linuxスクールに通った
(その間は派遣で時給は安いがWeb制作会社で簡単なコーディング作業と画像修正作業、印刷会社でのDTP業務をして凌いだ)。
Linuxの勉強はすればするほど面白くなり、そちらの知識にのめり込んだ。サーバを学とネットワークの仕組みも知りたくなる。
最後にはネット知識で自作PCを組み上げてLinuxをインストールしてWebサーバとメールサーバを構築した。
ただ、自宅でWebサーバを構築すると言っても外部への公開はリスクが高すぎるので勉強機としてdebian系やredhati系OSなど
をデュアルブートさせたり、HDDでRAIDを組み上げたりして遊んだ。そのうちにレンタルサーバでドメインを取得、CMSで個人
ブログを立ち上げるも自分のポカミスからクラッキングにあいサイバー犯罪課の取り調べを受ける経験もした。
Web制作やデザインの仕事はなかったが、浅いネットワーク知識が幸いしてか、データセンターで映像サーバを扱う仕事に就き、
NagiosやらCisco機器、RAID、VM、セキュリティ知識、IP、デジタル映像知識、映像機器や編集の知識を得ることができた。
映像と言っても映画なのでDCPやKDP、3D映像の知識も会社で二週間研修させられた。仕事によっては夜中の仕事やAKB48ライブ
の収録に立会ったり、キアヌ・リーブスの舞台挨拶で生キアヌと打ち合わせしたりもしながらも、この日記を思い出しながら
それ以降は大企業の子会社でのWeb制作部門で勤務したり、IT資格もいくつか取得した。また途中で大学にも通い、好きだった
美術史や写真史、表現を学び、論文をいくつも書いた。その途中で亡くなった親父がフィルムカメラをくれたので、フィルムカ
メラにハマり出し、父親の形見の中判フィルムで撮影、フィルム現像、プリント額装して、個展までするようになった。
給料こそ高くはないが上記の研究機関で「何でも屋」で仕事をしている。
元々現代アートが幼少期から父親が集めていたアート関連の書籍を読んで、ドナルド・ジャドやフランク・ステラなどのハード
エッジアートに興味があったこと、簡単なシステム保守やサポートができること、フィルム現像や写真撮影ができること、ライ
ティング(照明)ができることが幸いして、作品の保管からシステム、ベンダーとの打ち合わせまでを任される仕事で採用され
ることになった。かなりの倍率だったようだが自分のように多く経験してきた方や知識、現代アートへの興味がある人は少なか
「オリも混ぜてくれよう。
実際には作ったりしないけど見るのは好きだおう
なのになんでオリを混ぜてくれないんだおう
お高く止まっちゃってさ!フン!もうこねぇよ!バーヤバーヤ!!!!
こうは書かれたものの、この気持ちもあって、それを理解するために色々と仕事と制作の仕事をしながら
勉強をしてきた(つもり)だけど、やってよかったと思う。
10年前の自分はデザイナー、アーティストがクリエイターという選民思想を持って「普通の会社員」を見下して
いるという、ルサンチマンに囚われていた。でも、仕事の業種に関わらずどんな仕事だって「創り出す」こと
は必要なのであって、それはどんな職種であっても創意工夫は必要であり皆がクリエイターである。
創り出すことが華やかに見えるのは一部だけであって、世の中にはもっと沢山のものが作り出されている。
たまーにWebのデザインや写真作品を制作することがあっても自分は「デザイナー」や「アーティスト」
とは言わない、それを言ってしまうと自分の創造の可能性を広げられなくなりそうで怖いから。もちろん周囲に
はデザイナー、ライター、アーティストの知人・友人はぐんと増えたが今はそれらの人を僻むことも今はしない。
しかし、あの日記を匿名日記を書けたことは自分の人生における仕事を大きく変えたと思うし、過去に自分が
そういう思いから出発しているから、どんな職業の人でも会う時には、まずは首を垂れて尊敬することか始めている。
それとこの言葉も気にしながら。
「未来に先回りして点と点をつなげることはできない。君たちにできるのは過去を振り返ってつなげることだけなんだ。だから点と点がいつか何らかのかたちでつながると信じなければならない。自分の根性、運命、人生、カルマ、何でもいいから、とにかく信じるのです。歩む道のどこかで点と点がつながると信じれば、自信を持って思うままに生きることができます。たとえ人と違う道を歩んでも、信じることが全てを変えてくれるのです」
ScalaとかKotlinとかいろいろ言ってる奴いるが10年後にはどうせJavaが勝ってる。
Javaはnull安全じゃない!とかほざく奴はもちろん@CheckForNullアノテーション使ってから言ってるよな…?
フレームワークは流行り廃りがあるから微妙だが、勉強するならSpringにしておけ。それだけでいい。
Webブラウザに標準搭載のJavaScriptが無くなることもまずありえない。
あとやるならjQueryね。AngularJSとかすぐ廃れるから。
学習コストが高いものって結局広まらないからさ…素直に現実を認めよう。
AnsibleやFabric使ってるやつがいるがどうせ10年後にはブームが去り技術的負債となっている。
シェルスクリプトで代用できるのだからシェルスクリプトでやっておけ。
これだけ広まったRDBが今後使われなくなることはまず考えられない。
そもそも便利なのかちゃんと考えてる?
「日々Dockerfileをメンテして開発環境がこんなに楽になります!」
「Dockerなので本番とも開発者同士でも同じになります!」
馬鹿じゃねーのかw?
Dockerfileメンテなんて手順書メンテとかシェルスクリプトメンテしてんのと大して変わらねーよw
そのDockerfileから作ったものが本番と同一だなんて保証はねーって気づけボケが
それと「同じDockerfileから作ったものだから環境差異はありません」なんて寝言まだ言ってるの?
yumもaptもリポジトリがセキュリティアップデートやらで変化する以上
いつも同じ結果になるわけじゃねーだろが、(バージョンロックする方法はあるけどめんどいだろ)
本番でもコンテナを使ってますってやつら以外無理してDocker使う必要ないんじゃねーか?
お前らが欲しいのは軽いVMであって細切れのコンテナじゃねーだろ?
initを潰して,supervisor入れてプロセス管理して・・・ってどう考えてもお前らが望む世界じゃないんじゃねーか?
流行りのコンテナぽくしたいならLXDやらsystemd-nspawnの方がよっぽど筋がいい
というわけでよく考えなおせ
続き書いた
毎度毎度、バージョンアップで非互換な修正加えてコードの修正が必要になって、Gemも上がって依存が壊れて
いつまでやってんだよw
Railsのプロジェクトでどれだけの人が最新版に追従できてんだよ?テストを書いてれば余裕?
本当かよ?正直に言ってみろよ?実際はレガシーRailsの山だろw
ヘルパーやらマイグレーションの仕組みやら最初は良いかなと思ったけど、どう考えてもやり過ぎだ
短くかけるとか喜んでるやつは一度考え直せ
それで良いんだって?自分がコントロールできない知らないコードに依存して結局バージョンアップで地獄みてるだろw
最低限中で何が起きてるか理解しとけよwまあ理解できるころにはRailsでなくても良かったんやwってなるけどなw
RAILS_ENV=productionだとstaticファイルは自分で返さないassetコンパイルで小さくしましょう
→ developmentで動いてたけど本番だと動きませんでしたw
毎度毎度、アホみたいにGem入れやがって、もう自分で把握できる状態じゃねーだろ?
bundlerだから完璧にvendoring出来ますだって?
本当かよnaitive extensionのGemなんてどう考えたってRails管理外のヘッダファイルに依存すんだろ
めんどくせーなbundlerもこけるし、rbenv使ってrubyのバージョン揃えろとか
ホントめどくせーよ
deployもcapistrano便利とか言ってるけれど、そんなに便利じゃねーよw
あんなDSL覚える時間あんならシェルスクリプト書けるようになっとけ
rackサーバがたくさんあってよかったねじゃねーよ集約しろ馬鹿w
unicorn, pumaで比較しましたとかアホ記事書いてる暇あるなら集約するかなにかしとけ
この手の話すると信者が使わない方法もある・選択しない方法もあるとか擁護してくるけど
そりゃあるけどそれ調べんのがめんどくせーって言ってんだよw
何でもかんでもレールに乗せてそれを強要してくるような感じがすんだよw
http://qiita.com/mesaka/items/41ec09a4dae3fba6dd6c
Qiitaに登録しているGitHubアカウントを見ると、たしかにGitやGitHubが苦手なんだなあというのを感じる。
それはまあともかく、プロフにあるURLを踏むと合同会社を設立されていることがわかる。
ついでに言うとWantedlyにも企業ページを作っていて、そこのプロフ等にも不穏なことが書かれているのだけれど割愛。
ここまで公開している立場で、あのコメント欄の態度は自分の首を絞めていないか?という疑問はさておき、GitHubの名前を検索したらTwitterアカウントが出てくる。
https://twitter.com/mesaka2009
いろんな人間に裏切られて鬱病になりました。もう人生に疲れています。 PHPは大好き!早く正社員になってもいいです!! ※このツイートはフィクションが含まれています。検挙件数稼ぎの警察の方の自宅に来襲はご遠慮下さい。
bioの内容が不穏すぎるがさておき、このTwitterアカウントを検索するとDMMの面接で落ちて逆恨みしたり、コロプラの面接で号泣していたことが既に増田でヲチされていたことが分かる。
すでに指摘されているが、妻子持ちでTwitterにはこの時期かなり不穏なこともつぶやいていたらしい。
件のQiita記事に関しては「書いてあることが事実ならチャットワーク社が反省すべきことはあるけど、この人の数年レベルの普段の言動から見ても、書いてある内容をそのまま鵜呑みにして語ることはできない」と思った。
ちなみに去年のカレンダーにはこんなこと書いてたのに、どうしてしまったんだろうなあ。
http://qiita.com/advent-calendar/2015/free-engineer
(追記)該当の記事を見たら、コメントにフリーランスおじさんを焚き付けてるおじさんが新たに登場してた。調べたらこの人も特定人物にケンカ売りたいだけの記事をQiitaに書いてた。
品位が問われるAdvent Calendar -- シェルスクリプトはどこでも動く! - Qiita
http://qiita.com/richmikan@github/items/5f53a14a79874d56a2ff
http://togetter.com/li/1056218
ちなみにこの人は松浦智之氏で最近『Windows/Mac/UNIX すべてで20年動くプログラムはどう書くべきか』という本を書いている。著作者情報によれば1975年生まれの40代。ついでに言うと、件のフリーランスおじさんはWantedlyに生の職務経歴書のpdfを公開していて、そこから年齢が40歳であることがわかる。なんだ、プログラマーは40超えたらこんな風におかしくなってしまうのか。プログラマー35歳定年説は正しかったのかもしれない。