はてなキーワード: Grepとは
人間とは精神である。精神とは何であるか?精神とは自己である。自己とは何であるか?自己とは自己自身に関係するところの関係である、すなわち関係ということには関係が自己自身に関係するものなることが含まれている、
それで自己とは単なる関係ではなしに、関係が自己自身に関係するというそのことである。人間は有限性と無限性との、時間的なるものと永遠的なるものとの、自由と必然との、綜合である。要するに人間とは綜合である。
1. 精神
2. 自己
3. 関係
4. 綜合
正解:3. 関係
理由:出現数
ruby -e '["精神","自己","関係","綜合"].each{|c|puts "#{c}:#{`grep -o #{c} 死に至る病.txt | wc -l`.chomp}"}' 精神:3 自己:8 関係:9 綜合:3
最初のプログラミング言語として最もおすすめなのは、Bourne (Again) Shell。通称sh(bash)です。shはUNIXの標準的なシェルであり、bashはその拡張です。現在、多くのLinuxディストリビューションでは、bashが標準のシェルです。以下、これらのシェルの上で動作するコマンド言語およびそれによって作られたプログラムを指して「シェルスクリプト」と呼ぶことにします。
シェルスクリプトを最初のプログラミング言語におすすめする理由は、主にその実用性にあります。ほとんどのプログラミング学習者にとって、プログラミングで実現したいことは、「10000以下の素数を求める」などの教科書の課題のようなものではなく、大量のファイルから情報を検索するとか、インターネットから定期的にコンテンツを取得する、などの具体的なタスクのはずです。シェルスクリプトを使えば、後者のような実用的なプログラムを手軽に作成できます。一方、多くのプログラミング入門書には、制御構文などの細かい説明はあっても、後者のようなトピックはあまり載っていません。というのも、そのような機能は汎用的なプログラミング言語(C、Java、Python、Rubyなど)のコアの機能ではないからです。それらの機能は通常、ライブラリによって提供されます。したがって、汎用的なプログラミング言語で実用的なことをしようと思えば、外部モジュールの読み込みや、場合によってはパッケージ管理ツールを使ったライブラリのインストール方法などを学ばなければいけません。これらは、初学者にはいささかハードルが高いです(たとえば、Webフロントエンドのツール群を初学者が独学でインストールするなどは、ほぼ不可能でしょう)。一方、シェルスクリプトでは、grep、sed、awkのようなシェル上のユーティリティは全て、他の言語における組み込みの関数と同様です。つまり、モジュールのインポートや初期化処理などを行わずに使用することができます。
また、シェルスクリプトは、より本格的な言語やフレームワークへステップアップする過程としても非常に適しています。プログラミング入門書ではほとんど語られないことですが、プログラミングにおいては「プログラミング言語以外の技術」がプログラミング言語自体と同様に重要です。たとえば、ファイルやディレクトリを操作するには、OSのファイルシステムにアクセスしなければいけませんし、インターネットからコンテンツを取得するには、HTTPというネットワークプロトコルを知らなければいけません。シェルスクリプトを使う場合、それら「プログラミング言語以外の技術」を自然に利用します。それらは、プロのエンジニアを目指す上でも欠かせない知識です。また、多くのプログラミング言語では、制御構文を用いて変数の値を更新していくプログラミングスタイルが取られます。一方、シェルスクリプトでは、コマンドの出力を他のコマンドの入力に渡してデータを変換するプログラミングスタイルが取られます。後者のスタイルは、現代のソフトウェア開発では多くの場合、良いスタイルだと認識されています。シェルスクリプトを最初に学ぶことで、そのような良いプログラミングスタイルが身につきます。
カラーリングで、開発環境でコードが見やすくなる。マークアップ言語には、markdown, html, wikiなどがあげられると思う。
また、xml, jsonなどのデータもマークアップ言語と言ってよいだろう。
(pythonを使えば否が応でもスペース4つを空けることになるだろう。(あるいはtab一つ分))
まずは、ブラインドタッチでマークアップ言語を書き、一文字でも違うとコンピューターは、こちらの意図通りには動いてくれないという悲しみにひたらないかぎり、
全角スペース、半角スペースを目grep出来るようにならないと、プログミングは上達しないことをここに宣言したい☆
Webエンジニアの技術確認って、知識や経験が多方面に渡るから難しいと思ってる。
Webアプリ作れます!と言って完成物だけを見るとたしかにそれなりのができてる。
もちろんテストはない。動けばいい。
N+1やSQLインジェクションが埋め込まれてる(後者はフレームワーク側でほぼ無いが)。
Gitは漢のmaster(main)一本だし、rebaseはできない。何かgitでトラブったら全消ししてcloneし直す。
デプロイもHerokuコマンドをよく分からず打ち込んでるだけ。ちょっと凝ったことはできない。
データベースも大きなExcel程度と考えていて、一つのテーブルに全部のデータを入れる漢のスキーマ。
コマンドも例えばgrepやfindを使えない。XXenvの使い方がわからない。何でもかんでもsudoをつける。
vimが使えないからなんかのはずみでvimの画面になったらパニックになる。
まだまだいろいろあるけど挙げたらきりがない。
となるとどこかで線引きをしなければいけないけど、その線引きの一つの手段が対面での会話の内容、受け答えの態度だと思う。
Torで身元消し
ポートの穴探し
セキュリティ解除
log停止
grep *桜*
なければ復元
→世紀のスクープネタのため、極秘情報の相場的に5000万位?(CUOのWHK談)
セキュリティ戻す
ログ再開設定
切断
等は今どき効かないですよね。
ファイルサーバを破棄しなかったら、捜査で120%復元できますよね。
現代では削除しても簡単に復元できてしまいます。税金バラまき宴に忙しい道長には、暗号化という知恵はないでしょうしね。
税金で美味い飯食うのって、
どんな味がするんでしょうね。皆さん。
パイプでつないでawk使ってハッカー気分かもしれないけどお前の書いてるスクリプトクソクソクソオブクソだから
おとなしく
subprocess
<追記>
本物のハッカーである皆さんはどしどし使ってくれて大丈夫ですよ^^;
そうですね、熱くなって言い過ぎました。
個人がターミナルに打ち込む一度きりのコマンドはOK、ファイルに保存した瞬間に違法としましょう。
<追追記>
いやあ思いのほかBuzzっちゃって^^;
awkは適当に思いついたから入れただけでパイプ使ってるんだから他のコマンドも入ってますよ^^;
grepとかsedとかPythonで同様のことができる(実行時間が現実的な範囲で収まる)ならPythonの関数でお願いします。
読めないのか
読めませんよ。意図が。$1、$2とだけ書かれててそこにどういう値が入っているべきなのかコメントは書かれてませんし^^;
ハッカーの皆さんは当然コメントも書いてくださってますよね^^;
NOV1975 追記で日本語が読めない増田だということがわかったし、業務を任せられない増田ということもわかった。君は一体何の増田なんだ
本人の話ではできそうな人だった
あるときその人の作ったものを引き継ぐ事があったのだけど、コードがゴミのようだった
当たり前のようにグローバル変数を使うし、どこで最初に代入されるかも全コードをgrep書けないとわからない
mapやreduceみたいなものは一切使わず繰り返しはすべてfor文
本気でコードは捨てて仕様に基づいて1から作り直したほうがいいレベル
変に速度にこだわって、そんなの誰も気にしないってレベルのことにまで文句つけてくるくらいだから、最適化の結果関数はインライン化して使い捨ての変数はなしでグローバルを使うとかやってるのかと好意的に考えようともした
しかし、見ていると、その辺のwebページのコピペがそのままコードに残ってるし、そういうところはインデントも揃ってなくてグチャグチャ
タブとスペースの混在も当たり前
あれこれ試した結果が見えるコードのコメントアウトは全部残っている
それでも一応なにかそれなりのものを作れてしまうのが悪いところなんだと思う
趣味でやる分にはそういうので動くのはいいと思うが、仕事でそういうのはホントやめてほしい
ずっと一人で作っていて他の人と変わらないでもらいたい
昔はそこそこあった尊敬度もいまではマイナス、見下す対象にしかならない
ということがあって、採用とかしてる人は本人が何作ったとか何使えるとか言っても、ちゃんとコードみて能力判断したほうがいいと思った
どっかの電気自動車すげーな。VPNを暗号化してなかったとか、通勤時間帯になると今まで売った車が全部一気ににログインしてきてサーバのオートスケールが間に合わないとか、バグ入り更新データを公開した社内のバカのために売った車全部でブートループが始まって手が足りる限り一台ずつsshして直したとか、そりゃトヨタもケツまくって逃げるわ。恐らく事故った時すぐデータ出てくる理由もサーバが超巨大なゴミの塊だからrootでログインして車台番号grepすれば即出てくるってだけだわ。あまりに設計がゴミすぎる故に管理が楽だと。
オートパイロットもあんまり検証してる雰囲気じゃないな。ビルド通ってなんとなくまっすぐ走ったらはいOKって感じ。他の自動車メーカーみたいな最低限なんもせんけど事故だけはせんって雰囲気全く無い。
客の車やぞ!!!!!!!!!!!お客様の2000万円の車やぞ!!!!!お前の自宅のRaspberry Piとちゃうんやぞ!!!!!!!!!ファーストサーバもびっくりだわ。
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業界に蔓延る日本の国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます。
スパイの目的である国際競争力の低下にダイレクトにアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。
・「よく分からないものはセキュリティの都合使えません」と思考停止している人
お前はそのツールのコミッターでそのツールの脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツールの有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シスの仕事じゃねーのかと?まぁこの場合スパイなのでそんな調査は死んでもやりませんが…
スパイの常套プロパガンダです。明らかにおかしな言動なのでスパイの中では未熟者なのかもしれません。
そのままでは通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉をマジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが
よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイが蔓延る構造は日本社会に根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法、下請法、派遣法…機能しないのも当然です。
プログラマなんだけど、なんでも揃えようとしてる人がうざい
よくあるのが、JSON とかオブジェクト系の記述するところで、 「:」とか「=>」みたいなのの位置
揃えられると一見すると見やすいが、金額みたいに揃ったみやすさが必要ないところでされると面倒
10行並んでたら1つ変えたのが原因で10行とも変えないといけなかったりする
面倒だけどツール使えば揃えること自体は楽にできるからこれはまぁいい
だが、バージョン管理ソフトでの変更行数が無駄に増えるのでパット見たときに結構大きな変更してるように見えたりするからちょっとイヤ
さらに grep かけようにも空白数が不定だから正規表現にしないといけない
んだけど、まあここまでは別にいい
この揃えるときに
aaa : { bbbb : 100 ccccc: 200 }, dddd : { e: : 300 }
みたいに(フォントによっては揃ってなく見えるかも)、ネストが違うのに全部を揃えようとするの、ホントやめろ
わかりづらい
上の例みたいなシンプルだと困らないが複雑な構造になってるとかなり見づらい
上でいう aaa と dddd の行が10行程度離れていたら、ここを揃えても全くきれいに見えないし無駄
bbbb と ccccc みたいなときだけならまあ許せる
仏の顔も三度まで、
(1) 文字数を合わせようとする
上で書いたみたいなのは文字数が違うから合わせるためにスペースを入れる必要がでる
きれいなのはわかる、だが無理やり合わせようと単語を探し始めるとかありえない
5つ項目があって、4つが6文字の単語で残りの1つが4文字だったとする
無駄な上に、本来のそれに適した単語じゃないのを無理やり使うのでわかりづらい
揃ってることはパット見綺麗でもプログラムみたいのだと、単語まで似てると気づかないミスが出て来る
beer と bear、 form と from、 fall と fail みたいな見た目が似てる単語と、見た目が全く違う単語の比較ではミスの数が明らかに変わると思う
なのに、 enum みたいな選ぶタイプのもので、数文字違うだけの似た見た目の単語を探してきて選ぶとか、ミスを誘発しようとしてるのかと言いたい
(2) 単語の語尾とか
(1)のように大半が揃ってると残りも無理やりそうしたいということで、単語を勝手に変化させたものがある
例えばだが、語尾が1つを除き全部 -ly になってたとする
そうすると残り一つに無理やり ly をつける
なんなの?イン踏みたいの?ラッパーなの??
そもそも名前みたいな固有名詞にすらそんなことしてるから意味不明にもほどがある
上の時点で英語を完全無視で英語力のなさはわかっただろうが、さらにこういうのもある
過去形には ed 、複数形には s のようなルールには単語によっては特殊な形をするものがあるのはもちろん知ってると思う
プレフィックスに is つけるみたいな単語の組み合わせ部分なら気にしないけど単語としておかしいから、自分で書くときに本来の形で書くとエラーでるからさらにイライラする
例えばこういうこと
readed, catched, taked, companys, boxs, mans, childs, fishs, classs
見てるとムズムズする
英語得意でない自分ですら違和感を感じるのに、これに何も感じないとか英語力ひどすぎると思う
まあエラーメッセージで don't have ~ とすべきところを has not ~ とか書いてたくらいだからなぁ
これが部下とか下の立場の人なら 「使う前にググってみて。おかしかったら『もしかして、~~』みたいの出るから」と言って直させるけど、上だからどうしようもない
間違ってますよー、と遠回しに言ってみたことはあるものの、直す気は全くないようだし、それどころか無邪気に揃えてやったぜみたいなこと言ってドヤ顔してるからホントどうしようもない
まじな話をすると、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, 子どもからデータを消す)