はてなキーワード: Awkとは
IT業界は日本社会の縮図となっているんだよ - こうして僕らは腐る
http://www.byosoku100.com/entry/2018/01/13/212749
ITを学んでIT企業に就職して、この国のIT企業はきっとCIAか何かによって弱体化を図られたとしか考えられないと思いました。
自分でロジック組んだり、アルゴリズムを考えたりする仕事をさせてくれている会社もありますが、会社の規模がでかくなればなるほどそういう仕事は下流に任せる感が強い。まずこの構造が弱体化の出発点。
多重下請構造は、製造業日本ならではの伝統、下流=低賃金が根強い。背広を着た人がその伝統文化を売り捌く。文化が短納期、安請け合いを生み、短納期、安請け合いにより、品質が下がり、雇用も安く済まされ、弱いSEしか集まらず、国際競争力はなくなる。この下請け構造文化を持ち込んだのは、他ならぬ製造業文化を固持してきたメーカー系ベンダーのように思えます。メーカー系ベンダーはCIAだからなんだかのスパイ行為に加担したのでしょうか?
実はそんなメーカー系ベンダーにもいたのですが、ぽっと出の強いSEもいます。ところが強さが仇となり、全容を把握している神扱いで一段上に据えられます。そして多忙を極め、ロジックやアルゴリズムをひねり出す知的生産力は、仕様書、指示書と呼ばれるエクセル方眼紙に図形や文書を書き殴る作業力へと変貌します。
指示は全て自社フォーマットの図面に書け!その図面、審査、承認を課長に貰え!え?予算の都合、本部長承認が必要?本部長いつ来るの?1週間後だって!?リスケだ!工数再見積もりだー…これは仕事ですか?それとも茶番ですか?こうして強いSEは弱体化します。強いSEほど自分の置かれた立場や環境に順応しようとする意識が強く、仕事ができる人間になるためにはお上に楯突かず、弱体化を受け入れようと考えます。
エクセルのvlookupを使うために、学生時代に関数型言語を学んだわけじゃないのに…と就職して思うようになったunix文化を学んだ強いSEが、思考停止している情シスによって管理しきれないものは全てセキュリティホールみたいな会社にいたら、「あいつはセキュリティを脅かす不良社員」のレッテルを貼られ、朝から晩までvlookup,vlookup...(いやそのエクセル脆弱性情報とパッチ出ているけど、いやお上のお達しを待て!的な茶番劇)せめてgrep,awk,sedくらい使わせてやれって、残業がなくなってボスも最近社長の思いつきで始めた健康経営者として表彰されるかもしれんよ?思いつきだから明日あるか分からんけど…。いつまでこんな寸劇をやればいいのやら。学んだことは活かせません。茶番寸劇の中心にはやはりこの国のIT業界を弱体化させ国際競争力を低下させるスパイが潜んでいるとしかおもえません。
ここで、IT業界に蔓延る日本の国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます。
スパイの目的である国際競争力の低下にダイレクトにアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。
・「よく分からないものはセキュリティの都合使えません」と思考停止している人
お前はそのツールのコミッターでそのツールの脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツールの有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シスの仕事じゃねーのかと?まぁこの場合スパイなのでそんな調査は死んでもやりませんが…
スパイの常套プロパガンダです。明らかにおかしな言動なのでスパイの中では未熟者なのかもしれません。
そのままでは通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉をマジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが
よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイが蔓延る構造は日本社会に根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法、下請法、派遣法…機能しないのも当然です。
動的型の言語が流行ったのは、Webプログラミングの隆盛のおかげだろ。
大昔にテキスト処理のawkがあって、その発展版みたいなPerlが現れて、タイミングよくWebプログラミングの波がきて需要が拡大。
でもPerlは、awkの発展版だから、数値も文字列も全部文字列っていう設計思想。
変数に型がない以前に、値に型がない。
で、そのPerlの影響を受けたRubyやPHPがはやってしまって、動的型の言語の隆盛の時代に。
一連のスクリプト言語の特徴は表記が簡略だってことだけど、これは型が動的か静的かというのは関係ない。
でも動的型派は、それが動的型の特徴だと思い込んで「動的型サイコー」みたいに言い出した。
10年くらい前にはハテナでも「Javaで書いたら50行のこの処理が、Rubyで書いたらたったの10行。Javaだせえ!」みたいなブログが流行った。
http://vim-jp.org/vimdoc-ja/change.html#filter
Vimにはフィルタコマンドといって、テキストを任意のUNIXコマンドで処理するExコマンドが用意されている。
用意されていて、実際強力なんだけど、Vim組み込みの機能で間に合うことも多くて、下記以外はあまり使っていない気がする。
以前はVimの正規表現に慣れないからとPerlを使ってたりもしたけれど、Vimの正規表現も悪くないかなとなって。こう。
簡単な計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。
「<C-r>=」で代用できる。
長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。
最近はBashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。
簡単な整列をするのに使う。ビジュアルモードで選択して「!column -t<CR>」とすると整列ができる。
(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプションを指定して「!column -to' '<CR>」という風にする)
vim-easy-alignやvim-aligntaが入っているならそれでいいかも。
それぞれJSON、XML、HTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。
ただ「jq . <JSONのファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。
連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。
それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。
http://cpg.hatenablog.com/entry/2016/06/30/193755
プログラミング言語は、200種類以上存在していると言われていますが、その亜種や野良プログラミング言語を含めれば、星の数ほどあります。たとえば今回紹介しませんが、ベーシックという言語だけでも、ファミリーベーシック、プチコン(3DSのベーシック)、べーしっ君などがあります。
今回はその中から厳選に厳選を重ねて厳選した、プログラミング言語を5つ、徹底解説します。
Perlは歴史的に古く、sedやawkといった歴史として語られる以前のプログラミング言語のいいとこどりをした、とても、素晴らしい言語だ。
モンスト以前のmixiや、みんな大好きはてブ、はてなブログは、Perlで作られています。
学習する際は、歴史が古い分、Perl4の本も、たまに図書館に残っているため、気を付けなければなりません。
よく勘違いされるのが、「PerlとPearlって似てるんでしょ?」。違います。
何が違うかといいますと、文法から用途までほぼ全てが違います。
Pearlとは真珠のことだ。あと、バンドメンにとっては楽器。それと、譲れない願いからPEARLのCDを買った人も、いるんではないでしょうか。
https://www.infoq.com/jp/news/2014/06/perl520
Webサービスを開発したい場合、真っ先にお勧めしたいのがPerlだ。
Perlの特徴として、[[TMTOWTDI]]があります。あとPerlを生み出したLarryは、プログラマの3台美徳として、 "Laziness, Impatience and Hubris"というすばらしい考え方があります。
https://en.wikiquote.org/wiki/Talk:Larry_Wall
皆さんはAIをご存知ですか?
PerlとAI(Artificial Intelligence)でググッテても、わかるように、2000年台前半からすでに話題に上がっており、最近流行のディープラニングでも、Perl6を使った話があるようだ。
http://ai.neocities.org/P6AI_FAQ.html
https://itunes.apple.com/jp/app/perl-programming-language/id486217730
だんだん書くのが疲れてまいりました。
http://blogs.perl.org/users/lestrrat/2013/09/perlmotion-perl-for-ios.html
それとYAPCは去年で一区切りしましたが今年も、YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa あります!!!!!!1
cf). Software Design 2010/01号
!#/bin/sh vmstat 5 2 | tail -1 | awk '{print $4,$5,$6}'
service agent_mem { socket_type = stream protocol = tcp wait = no user = nobody server = Monitor/agent_mem.sh only_from = 127.0.0.1 disable = no }
php の場合、fopen() でもいけると思うのだが、明示的に sockopen() を使う。うむ、perlよりも楽だわこりゃ。
<?php /* -*-java-*- */ /** * モニタリングクライアント * */ $fp = fsockopen( 'localhost', 11001, $errno, $errmsg, 30 ); if ( !$fp ) { echo "Error: $errno - $errmsg \n"; } else { echo date('Y-m-d H:i:s'). "\t"; $stmt = fgets ( $fp, 128 ); if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) { $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3]; echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n"; } fclose( $fp ); }
こいつをモニターとして走らせっぱなしに出来るようにする。
<?php /* -*-java-*- */ /** * モニタリングクライアント * */ function mem_monitor ( $host, $port ) { $fp = fsockopen( $host, $port, $errno, $errmsg, 30 ); if ( !$fp ) { echo date('Y-m-d H:i:s'). "\t"; echo "Error: $errno - $errmsg \n"; } else { echo date('Y-m-d H:i:s'). "\t"; $stmt = fgets ( $fp, 128 ); if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) { $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3]; echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n"; } fclose( $fp ); } } while( 1 ) { mem_monitor( 'localhost', 11001 ); ob_flush(); flush(); sleep( 30 ); }
問1
cat logfile
問2
awk -F',' '{print $1","$4}' logfile
問3
awk -F',' '$1=="server4"{print $0}' logfile
問4
cat logfile | wc -l
問5
sort -t',' -k1,1 -k3,3n logfile | head -5
問6
sort logfile | uniq | wc -l
問7
awk -F',' '{print $3}' logfile | sort -n | uniq | wc -l
問8
awk -F',' '{print $4}' logfile | sort | uniq -c | sort -nr | head -1
問9
awk -F',' 'gsub("server","xxx"){print $1}' logfile | sort | uniq -c
問10
問3をgrepでやるならせめて ^server4, とすべき。server40があるかもしれないし、URLにserver4って文字が存在する可能性がある。
# cat a.log
# cat a.log |awk -F"," '{print $1","$4}'
# grep server4 a.log
# cat a.log |wc -l
# sort -t"," -k1,1 -k3,3n a.log | head -5
# sort a.log |uniq |wc -l
# cat a.log |awk -F"," '{print $3}' |sort |uniq |wc -l
追記
他の人の回答見ました。
http://anond.hatelabo.jp/20120727180525
パイプでつながなくてもawkでファイル指定できるのとIFができるのとuniq -cは知らなかった。
今度使ってみよう。
http://anond.hatelabo.jp/20090107031018
そのように感じるようになったのは、ボーカロイド好きな友人とチャットしていて、いい曲だと薦められた曲を聞いたとき、確かに良い曲ではあるけれど、これはボーカロイドを知ってる人・容認してる人じゃないと楽しめないということに気づいたとき。
ニコ動でVOCALOIDカバー曲を投稿して活動してる awk こと id:pyawk だけど、個人的にはそういう風に感じる人が大多数であって欲しいなーと思う。
というのも、自分はVOCALOIDを全く知らない人でも楽しんでもらえるのを目標に活動してるので。「どう聴いても生身の人間の歌にしか聞こえない!これがコンピュータで作った歌声なんて信じられない!!」なんてびっくりさせることが出来たらベストですね。VOCALOIDの歌声はこういうもんだっていう固定観念をあまり持って欲しくないんです。
そんな自分は、VOCALOIDにどっぷり漬かってるにも関わらず、VOCALOIDのロボロボした歌声に耳が慣れてしまうのを恐れて、あまりVOCALOIDの曲は聴かずに「歌ってみた」系をよく聴いてます。自分はプロデューサーであってもボカロファンではないのかもしれません。
初めは小学生の頃か。
実物のスペースインベーダーの記憶はない。
しかし、それを皮切りにアーケードゲームのみならず、ゲームウォッチ、ケームセンター嵐などを経て、ファミコンが登場する「ゲーム」の時代だった。
「ゲーム」がコンピューターゲームの意味になった時代だった。小学生も「コンピューター」にワクワクした。
21世紀はコンピューターにより人工知能ができる。そんな時代だった。
でも、アルファベットを知らない小学生にBASICは難しかった。ぴゅう太がせいぜいだった。
「PRINT」で文字を表示する。「GOTO」で行き先を変える。それは分かった。でも何をすればよいか分からなかった。
だから「ベーマガ」で16進数を打った。でも動かなかった。何度も調べ、直し、試した。デバッグした。
でも動いた。自分の入れた文字で数字でコンピュータが動いた。自分で動かした。動かせた。
高専に進んだ。Turbo Pascalでコラムスもどきを作った。
小学生のころから6年が過ぎていた。
Turbo Cも使った。IDEで使うそれは、インタプリタのノリだった。
FM-Rでレイトレースもした。一晩かけて、エラーが起きていた。
でも、構造化プログラミングを学んだ。ポインタも学んだ。マシン語の知識が役立った。
Solarisも使った。EmacsやXも使った。オブジェクト指向も知らずC++にも触れた。
awkやsedで正規表現を学んだ。そしてperlに出会った。
コラムスもどきを作ってから6年が過ぎていた。
perlで掲示版の書き込みをチェックし、madokaで遊んだ。CGIを書いたりした。
perlと出会ってから6年が過ぎていた。
はてなに出会った。JavaScriptに出会った。
Bookmarklet、greasemonkey、Ajax。オブジェクトだらけだった。
初めはゲームだった。でも最初だけだった。
気が付いたら24年が経っている。
今、pythonで書いている。
ようやく、言語の違いには慣れてきた。でも、まだLISPを使った事はない。
道はまだまだある。未知の世界につながっている。
作りたい物が本当は何かは分からない。作れる物が本当は何かは分からない。
どんなふうに動くのかは分かってない気がするけれど、分かっている事もある。
それが今の私のstatusだ。
via Twitterオタが非オタの彼女にTwitter世界を軽く紹介するための10ユーザ
まあ、どのくらいの数のプログラミング言語オタがそういう彼女をゲットできるかは別にして、
「オタではまったくないんだが、しかし自分のオタ趣味を肯定的に黙認してくれて、
その上で全く知らないプログラミング言語の世界とはなんなのか、ちょっとだけ好奇心持ってる」
ような、ヲタの都合のいい妄想の中に出てきそうな彼女に、プログラミング言語のことを紹介するために
習得させるべき10言語を選んでみたいのだけれど。
(要は「脱オタクファッションガイド」の正反対版だな。彼女にプログラミングを布教するのではなく
相互のコミュニケーションの入口として)
あくまで「入口」なので、アーキテクチャに過度に依存するアセンブラ等の低級言語は避けたい。
あと、いくら基礎といってもBrainf*ckやUnlambdaのような難しすぎるものは避けたい。
ポール・グラハムが『Arc』は外せないと言っても、それはちょっとさすがになあ、と思う。
そういう感じ。
彼女の設定は
ロジカル度が高く、頭はけっこう良い
まあ、いきなりここかよとも思うけれど、「Java以前」を濃縮しきっていて、「Java以後」を決定づけたという点では
ただ、ここでオタトーク全開にしてしまうと、彼女との関係が崩れるかも。
この情報過多な言語について、どれだけさらりと、嫌味にならず濃すぎず、それでいて必要最小限の情報を彼女に
伝えられるかということは、オタ側の「真のコミュニケーション能力」の試験としてはいいタスクだろうと思う。
アレって典型的な「オタクが考える一般人に受け入れられそうなプログラミング言語(そうオタクが思い込んでいるだけ。実際は全然受け入れられない)」そのものという意見には半分賛成・半分反対なのだけれど、それを彼女にぶつけて確かめてみるには一番よさそうな素材なんじゃないのかな。
「プログラミング言語オタとしてはこの二つは“教育用言語”としていいと思うんだけど、率直に言ってどう?」って。
ある種の言語オタが持ってるラムダ計算への憧憬と、ACM監修の関数型言語的純粋さへのこだわりを
彼女に紹介するという意味ではいいなと思うのと、それに加えていかにも参照透過な
の二要素をはじめとして、オタ好きのする要素を言語にちりばめているのが、紹介してみたい理由。
たぶんこれを見た彼女は「Emacsだよね」と言ってくれるかもしれないが、そこが狙いといえば狙い。
この系譜の作品がその後続いていないこと、これがポール・グラハムの間では大人気になったこと、
ポールグラハムがウェブサービスの構築に使って、それがいろんなウェブサービス開発者にも影響しててもおかしくはなさそうなのに、
実際のウェブサービスでこういうのが使われないこと、なんかを非オタ彼女と話してみたいかな、という妄想的願望。
「やっぱりプログラミングはバッチ処理のためのものだよね」という話になったときに、そこで選ぶのは「awk」
でもいいのだけれど、そこでこっちを選んだのは、この言語にかけるラリーとdankogaiの思いが好きだから。
断腸の思いで延ばしに延ばしてそれでも2008年、っていうPerl 6のリリース予定日が、どうしても俺の心をつかんでしまうのは、
そのリリースというイベントへの諦めきれなさがいかにもオタ的だなあと思えてしまうから。
Perlのリリース延期を無駄だとは思わないし、拙速なリリースは無茶だろうとは思うけれど、一方でこれが
GuidoやMatzだったらきっちり予定通りリリースしてしまうだろうとも思う。
なのに、各所に頭下げて迷惑かけてリリースを延期してしまう、というあたり、どうしても
「自分の言語を形作ってきた哲学(TMTOWTDI)が捨てられないオタク」としては、たとえラリーがそういうキャラでなかったとしても、
親近感を禁じ得ない。言語自体の高評価と合わせて、そんなことを彼女に話してみたい。
今の若年層でPostscriptを直で書いたことのある人はそんなにいないと思うのだけれど、だから紹介してみたい。
PDFよりも前の段階で、DTPの哲学とか印刷技法とかはこの作品で頂点に達していたとも言えて、
こういうクオリティのプログラミング言語がエディタで書かれてたんだよ、というのは、
別に俺自身がなんらそこに貢献してなくとも、なんとなくプログラミング言語好きとしては不思議に誇らしいし、
いわゆるJava VMでしかスタック型言語を知らない彼女には見せてあげたいなと思う。
PHPの「HTMLに埋め込み可能な点」あるいは「RDBMSとの接続性」をオタとして教えたい、というお節介焼きから教える、ということではなくて。
「HTMLのテンプレートエンジンを作り続ける」的な感覚が言語オタには共通してあるのかなということを感じていて、
だからこそアメリカ版『Yahoo!』の開発言語はPHP以外ではあり得なかったとも思う。
「MとVとCを分離なんてできない」というオタの感覚が今日さらに強まっているとするなら、その「オタクの気分」の
源はPHPにあったんじゃないか、という、そんな理屈はかけらも口にせずに、
単純に楽しんでもらえるかどうかを見てみたい。
これは地雷だよなあ。地雷が火を噴くか否か、そこのスリルを味わってみたいなあ。
こういう述語論理風味の計算をこういうかたちで言語化して、それが非オタに受け入れられるか
気持ち悪さを誘発するか、というのを見てみたい。
9本まではあっさり決まったんだけど10本目は空白でもいいかな、などと思いつつ、便宜的にC++を選んだ。
Javaから始まってC++で終わるのもそれなりに収まりはいいだろうし、テンプレート以降のメタプログラミング時代
の先駆けとなった言語でもあるし、紹介する価値はあるのだろうけど、もっと他にいい言語がありそうな気もする。
というわけで、俺のこういう意図にそって、もっといい10本目はこんなのどうよ、というのがあったら
教えてください。
「駄目だこの増田は。俺がちゃんとしたリストを作ってやる」というのは大歓迎。
こういう試みそのものに関する意見も聞けたら嬉しい。
LV0 スクリプト言語?どうせAUTOEXEC.BATとかだろ?どうでもいいよ…
LV1 Perlはあんまり堅苦しくないな。ってかこのor dieって何なの?
LV2 流行の言語は綺麗だな。Rubyってのはなんか日本人多くて結構いいかも。
LV4 PHPも気が利くわりにドジっ子でかわいいな。LispとかSchemeとかHaskellもいい・・・
LV5 Pythonってワンライナー書けないのにWeb2.0言語扱いされててうぜぇ。Python死ね!
LV7 やべぇPython最高!Pythonとエディタさえあれば生きていける!