はてなキーワード: SEDとは
最初のプログラミング言語として最もおすすめなのは、Bourne (Again) Shell。通称sh(bash)です。shはUNIXの標準的なシェルであり、bashはその拡張です。現在、多くのLinuxディストリビューションでは、bashが標準のシェルです。以下、これらのシェルの上で動作するコマンド言語およびそれによって作られたプログラムを指して「シェルスクリプト」と呼ぶことにします。
シェルスクリプトを最初のプログラミング言語におすすめする理由は、主にその実用性にあります。ほとんどのプログラミング学習者にとって、プログラミングで実現したいことは、「10000以下の素数を求める」などの教科書の課題のようなものではなく、大量のファイルから情報を検索するとか、インターネットから定期的にコンテンツを取得する、などの具体的なタスクのはずです。シェルスクリプトを使えば、後者のような実用的なプログラムを手軽に作成できます。一方、多くのプログラミング入門書には、制御構文などの細かい説明はあっても、後者のようなトピックはあまり載っていません。というのも、そのような機能は汎用的なプログラミング言語(C、Java、Python、Rubyなど)のコアの機能ではないからです。それらの機能は通常、ライブラリによって提供されます。したがって、汎用的なプログラミング言語で実用的なことをしようと思えば、外部モジュールの読み込みや、場合によってはパッケージ管理ツールを使ったライブラリのインストール方法などを学ばなければいけません。これらは、初学者にはいささかハードルが高いです(たとえば、Webフロントエンドのツール群を初学者が独学でインストールするなどは、ほぼ不可能でしょう)。一方、シェルスクリプトでは、grep、sed、awkのようなシェル上のユーティリティは全て、他の言語における組み込みの関数と同様です。つまり、モジュールのインポートや初期化処理などを行わずに使用することができます。
また、シェルスクリプトは、より本格的な言語やフレームワークへステップアップする過程としても非常に適しています。プログラミング入門書ではほとんど語られないことですが、プログラミングにおいては「プログラミング言語以外の技術」がプログラミング言語自体と同様に重要です。たとえば、ファイルやディレクトリを操作するには、OSのファイルシステムにアクセスしなければいけませんし、インターネットからコンテンツを取得するには、HTTPというネットワークプロトコルを知らなければいけません。シェルスクリプトを使う場合、それら「プログラミング言語以外の技術」を自然に利用します。それらは、プロのエンジニアを目指す上でも欠かせない知識です。また、多くのプログラミング言語では、制御構造を用いて変数の値を更新していくプログラミングスタイルが取られます。一方、シェルスクリプトでは、コマンドの出力を他のコマンドの入力に渡してデータを変換するプログラミングスタイルが取られます。後者のスタイルは、現代のソフトウェア開発では多くの場合、良いスタイルだと認識されています。シェルスクリプトを最初に学ぶことで、そのような良いプログラミングスタイルが身につきます。
Awk始めた。正確に言うとこれだけじゃなくてBashインストールしたら漏れなくついてくる関連のも使っている。SedとかPasteとか・・・
”今までExcelでやっていたことをAwkでやりたいんです”ってSFOに投げると親切な人から返事が来てそれをコピペで運用している。なので、スクリプトの中身を解読しなくて生きていけている。しかしぱっと見分かりにくい。例えば
もちろんFNR、NRといった個々の予約変数については調べればわかる。どうも入力リストと異なった形態の中間リストが生成され、そいつの行番号を数えているようだ。
中間リストまで明示して解説してくれないので(解説を試みたサイトもあるにはあるが)そこでやる気をなくし、現在に至る。
入力リストに至るところまで厳格なルールを適用しておけば、教えてもらったAwkコードは当分そのまま使えるし・・またなんか異種のパターンが来たら、SFOに投げればいいし。。自堕落だ!!それでも脱Excelしようとしてるだけマシか?
quotation marksがawk的には曲者?いざとなればExcel上でコピペか?
金曜日が〆切とあるから別に17時じゃなくてOKそう。金曜の夜が勝負だな。土曜の午前くらいもOKか?おそらくこんな感じの手順だな。 unsubmitted guy listとscoringが手作業なのでこの辺が律速か?
sed '/^$/[null]/'
この件⇒ 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は好きになれませんでした。
パイプでつないでawk使ってハッカー気分かもしれないけどお前の書いてるスクリプトクソクソクソオブクソだから
おとなしく
subprocess
<追記>
本物のハッカーである皆さんはどしどし使ってくれて大丈夫ですよ^^;
そうですね、熱くなって言い過ぎました。
個人がターミナルに打ち込む一度きりのコマンドはOK、ファイルに保存した瞬間に違法としましょう。
<追追記>
いやあ思いのほかBuzzっちゃって^^;
awkは適当に思いついたから入れただけでパイプ使ってるんだから他のコマンドも入ってますよ^^;
grepとかsedとかPythonで同様のことができる(実行時間が現実的な範囲で収まる)ならPythonの関数でお願いします。
読めないのか
読めませんよ。意図が。$1、$2とだけ書かれててそこにどういう値が入っているべきなのかコメントは書かれてませんし^^;
ハッカーの皆さんは当然コメントも書いてくださってますよね^^;
NOV1975 追記で日本語が読めない増田だということがわかったし、業務を任せられない増田ということもわかった。君は一体何の増田なんだ
日経xTECHの元記事を読んでもCOBOLの特徴があんまり伝わってこない感じだし、かといってそれをディスってもしょうがないので、書いてみた。
https://anond.hatelabo.jp/20190205192741
COBOLは本質的にはDSLなんだけど、一見汎用プログラミング言語に見えてしまってRubyやPythonなんかと比較するのが誤解のもとではあると思う。今の人でも知ってそうなCOBOLに似ている言語はたぶんSQLで、データを処理するための専用言語。ただ、SQLは頑張ればすごく複雑なこともできるパワフルな言語で、だからこそ現代でも生き延びているわけだけど、COBOLはわりとシンプルなデータ処理を想定している感じ。
SQLだけでアプリケーションを作れないのは触ったことある人なら誰でもわかると思う。普通はJavaやRubyで全体の流れを記述してデータベース入出力をSQLで書く。COBOLもそんな感じで、全体の流れをJCLやShellスクリプト、あるいはJP1のような運用管理ソフトで書く。SQLの1個の処理に相当するのがCOBOLのコンパイル単位で、それごとにソースファイルが分割される。ひとつのソースファイルに2個以上の処理を書くこともできるけど普通はしない。ここまで理解すると古いCOBOLに1ファイル内のすべての処理に影響するグローバル変数しかないのや、今のCOBOLにコンパイル単位をまたぐ真のグローバル変数がないのも、それほどクリティカルではないことがわかると思う。もし、本当に複数の処理にまたがる値が必要なら、データベースに格納してしまえばいいんだし。
で、SQLでいうところのデータベースに相当するのがCOBOLではデータファイル。sedやawkでテキストファイルやCSVファイルを行ごとに処理するのとちょっと似てるけど、COBOLの場合は固定長ファイルという点が違う。改行文字は入ってなくて、たとえば150バイトごとに次のレコードみたいな形式。これの1レコードごとに何月何日何時に〇〇という商品を□□円で売ったとか書いてあるのが典型的なデータの内容。それを集計して今日は〇〇が何個売れて売上がどれだけあったとか、出金合計がいくらで入金合計がいくらで、みたいな財務諸表を作ったり。SQLと同じように税率なんかが書いてあるマスタデータと、日々の売り上げが書いてあるトランザクションデータがあって、突き合わせたりということもする。こういう集計処理だからUIはなくて、夜中に自動起動するようなバッチプログラムが主な使われ方。(混乱するから余談だけど、今のCOBOLはSQLを使って普通のRDBにもアクセスできる。ただ使い方としては、RDB→ファイル処理→ファイル処理→ファイル処理→ファイル処理→ファイル処理→RDBみたいに、最初と最後だけみたいなのが普通)
入出力がファイルだから今の感覚で考えるとアクセスは遅い。でもメリットもあって、1回に1行しかメモリに乗せないからどんな巨大なデータでも時間さえかければ処理できる。それこそ国民ひとりひとりの年金データとかね。あと、途中でバグや不正データで止まってもデータを失うのは最小限で済むので復旧が比較的楽だったり。
データベースの話に戻ると、テーブル定義はどこに書いてあるかというとデータファイル側ではなくてCOBOLプログラム側、というのがSQLと一番違うところかも。つまり、このデータファイルの構造はこれこれこうなっていると想定して読みます、とソースコードに自分で書く。当然実際のデータ構造がそれと違ってたらおかしくなる。
まあそんな感じで80年代くらいに会計処理をする目的だったら悪い言語ではなかったので、銀行や官公庁とか、電力水道ガスといったライフラインを扱う大企業がこぞって導入して今に至る感じ。普通の大企業は途中でSunとかに置き換えてその後Linuxやクラウドにさらに置き換えたりしたけど、最初に作ったシステムが大きければ大きいほど、重要であれば重要であるほど現代的な環境に置き換えられないというのが今の課題。
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業界に蔓延る日本の国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます。
スパイの目的である国際競争力の低下にダイレクトにアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。
・「よく分からないものはセキュリティの都合使えません」と思考停止している人
お前はそのツールのコミッターでそのツールの脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツールの有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シスの仕事じゃねーのかと?まぁこの場合スパイなのでそんな調査は死んでもやりませんが…
スパイの常套プロパガンダです。明らかにおかしな言動なのでスパイの中では未熟者なのかもしれません。
そのままでは通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉をマジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが
よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイが蔓延る構造は日本社会に根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法、下請法、派遣法…機能しないのも当然です。
https://anond.hatelabo.jp/20170706235735
勝手に具体的に考えてみる。
マウスで目的の部分をさっと選択できて、さっと切り貼りできる。EmacsやViは1ストローク余計にかかって使いづらい。他のエディタなら大抵OK。
WriteMonkyなど
lorem ipsum(ロレム・イプサム、略してリプサム lipsum ともいう)とは、出版、ウェブデザイン、グラフィックデザインなどの諸分野において使用されている典型的なダミーテキスト。書籍やウェブページや広告などのデザインのプロトタイプを制作したり顧客にプレゼンテーションしたりする際に、まだ正式な文章の出来上がっていないテキスト部分の書体(フォント)、タイポグラフィ、レイアウトなどといった視覚的なデザインを調整したりわかりやすく見せるために用いられる。
「lorem ipsum」は様々なバリエーションがあるが、もっとも一般的なテキストは以下の通りである。
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
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