だてブログ

ねことテクと趣味のブログ

やらかした-滅びの呪文

突然だが"滅びの呪文"というのをご存知だろうか。黒い画面で管理者権限でログインして、
rm -Rf /” と打つと
………
はい、今回はわたしも滅びの呪文を打ってしまった経緯をお話しする。私はこのようなディレクトリ構成で作業をしていた。

username
├── testA
│   ├── test2
│   ├── test3
│   │   ├── testa
│   │   ├── testb
│   │   └── ~username
│   └── test4

“test3"に私はいた。そして”~username"というフォルダが間違えて作られたものだということに気づいた私は、
rm -Rf ~username” と打ってしまった。お気付きの方もいるであろうか 。"~“はホームディレクトリを指す。それは上の図の一番上、”~username"を指す。つまり、上のコマンドを押すと……

username
└──

全て消えた。
今までの作業。
すべて。

自分にはroot権限がないため、管理者にrmしたものを復活させる邪道なプログラムを入れてもらうよう頼んだが、、ダメでした。(リスクもあるため) 原則的にrmしたものは復活できない。それを心から感じました。結局、ローカルやgithubなどに保存したものと他のユーザを参考にして、半分ほどは復活させることができました。
次からは次のファイルをcron使って定期的に打ってバックアップを取ることにします。

#!/bin/bash
chmod 777 ~/.backup 2> /dev/null
rm ~/.backup/backup.gz 2> /dev/null
shopt -s dotglob
tar cfz ~/.backup/backup.gz * 2> /dev/null
chmod 400 ~/.backup

祝迎2017年! 大事な最後の一年の抱負。

新年あけましておめでとうございます…というにはもう5日過ぎた今日。 ちょっと遅いですが今年の抱負についてここに書き記そうと思います。

去年は、病気の回復に春休みを費やし、スキル磨きや知識の取得、さらに3つの資格を取ることに成功して、後期はとても楽しく過ごすことができ、2年よりもさらに充実した一年を送ることができました。そして今年は就職活動、ゼミ論、、といった大イベントがある年というだけでなく、あともう一年で社会人になる、そんな大学生活最後の一年でもあり、また"一人暮らしをしたい"という大学入ってからの兼ねてからの願い、目標を叶える一年でもあります。(実際できるかわかりませんが笑) そんな私には社会人になる前にまだまだしたりないこと、しなくちゃならないことが沢山あります。それをできるだけ全てこなせるように、しっかり足を据えて明日から頑張っていこうと思います。

さて私の抱負はいくつかあります。

一つ目は、料理をすること。 正直実家暮らしということもあり、やはり親に作ってもらうことに甘えてあまり自分から進んで料理をするということを避けていたところがありました。今年は昼、親がいない時だけでなく夜飯なども自分で積極的に作っていこうと思います。まぁもともと料理自体は好きなんですけど、、めんどくさいって時も、簡単にインスタントですませないで自炊するようにがんばります。←

二つ目は、1D3HLと走ること。 これはまぁ自分でわかってると思うので割愛。

三つ目は、貯金をすること。 また2年の時にしたような貯金を再開しようと思います。月2~3万で、9月までに20万が目標です。

そして4つ目は、"一人暮らしをする"ことです。 一人暮らしをしたいと兼ねてから思っていた理由は、自立をしたいと思っていたからです。といってもそんな大層なことでなく、簡単に言えば自分のことは自分でできるようになりたいと、そう思っているだけです。まぁ実際、いずれは一人暮らしをはじめてそれが当たり前と思えて何も感じなくなり、実家暮らしが恋しくなるとは思っていますが。それでもその当たり前のことができるくらいにはなりたいなーとずっと思ってました。あと、実家暮らしだとどうしても甘えちゃうんですよね笑 でも社会に出てからいざそれをすると結構苦労しそうなので、できれば今年中には始められるように親と掛け合って、説得する材料を着々と用意して、、と考えています笑 できるかな。。。

ここまで見て見ると、1,2,3個目の目標はそのまま4個目の目標の土台みたいになってる、、笑

でも自分で決めたことは後悔しないと思うので、この4つの抱負をこなせるようがんばります! 今年もよろしくお願いしますm(_ _)m

エンジニアは一つの言語に特化すべきかどうか

こんにちわ! 今日は、面白い質問を見つけたのですが、SSL未対応でそのサイト自体に安全が保証できないため、こちらの方で引用-紹介させていただきます。また回答が28件あったため、そのなかでも上位数件を載せたいと思います。

質問 エンジニアは一つの言語に特化すべきかどうか

エンジニアは一つの言語に特化したT字型の成長をするといいと聞きました。 しかし、現場に出ると、プロダクトに合わせてPHP, javascriptなど様々な言語を使うように求められました。 エンジニアとしてのキャリア形成を考えた時に、一つの言語のみに特化させて極めるべきなのでしょうか? それとも知識は浅くても幅広く言語を習得すべきなんでしょうか?

この質問にたいして、様々な意見がありました。

A. エンジニアを雇う立場から言えば、言語はツールであり、適材適所で色々な言語を使いこなすことが出来るエンジニアの方が好ましいのは当然です。「得意な言語がある」ことは好ましいことですが、そのためにその言語に固執したり、客観的な判断が出来ないようでは困ります。私が雇ったエンジニアの中で、Javaが得意でとても優秀なエンジニアがいましたが、Javaが最適でないところにまでJavaを使おうとしたり、Java以外の言語を勉強することを拒否したので、とても苦労しました。理想的には「どんな言語でも2週間でマスターしてやる!」ぐらいの心意気のある(そして実際の実力もある)エンジニアと仕事をしたいですね。
A. 特化すべきではないと思います。 言語は流行もあります。そして、エンジニアとしての寿命はそれほど長くないです。結局プログラミングは表現が変わっても原則は変わりません。そういった共通した根本的な考え方をマスターすれば、他の言語習得にそれほど時間はかかりません。それ以上に、言語よりも原則をマスターして設計が出来るようになり、エンジニアからより上流に移っていくことが必要だと思います。ただし、組み込み系などのニッチなトコについては尖がってずっとエンジニアとしていくのもありだとは思います。
A. 多分エンジニアとしての質やレベルは、どの言語かというより、エンジニアリングとして何をすることが出来るのかによって測られるのだと思います。そういった能力を高めるには言語を一つ決め打ちして掘り進むのがいいと思います。一つの言語で到達した点に、他の言語でたどり着くのはそれほど難しくないですからね。 なので結論としては1つの言語のみ特化、会社などの実情を鑑みると、今やっている言語を本気で極めようとしたほうがいいという答えなのではないでしょうか。ちなみに、個人的には、サーバーサイドの重い処理はC++(HadoopだとJava)Webサーバー全体としてはRuby,クライアントサイドは言わずと知れたJavaScript,学術論文や機械学習分野だとPythonやR,iOS開発だとObjectiveCでやるのが一番楽な気がしているので、強要されなくても自由に出来るのであれば言語を変えます。結局言語の差なんて、文法的には方言程度の差しかないので、ライブラリの充実度など含め、そのドメインで多く使われている言語を使うのがデバッグなどを含め開発が速くなると思います。我が道を行くとGoogle先生が助けてくれないですからねwちなみに、別の話として、その分野のトップになるためにマイナー言語を学んで高速に情報発信していくという戦略はありかと思います。
A. 言語という意味では、言語に固執するなという部分もありますが、言語に紐づくコミュニティにコミットするという意味ではある程度、言語を絞ったほうが良いと言う部分もあります。僕がこのレスを読んだ人に希望するのは、他の言語をバカにしない人材になって欲しいということですね。昔ならVB、今ならPHPがそういう対象になりがちですが、その中でも、市場ではPHPは何故支持されているのか?!を適切に把握し、もしRubyPerlが好きだったとしても、普通にその言語も使えるようになって欲しいと思います。処理系の人に言うと怒られるかもしれませんが、言語というのはエンジニアリングという意味では所詮、何かを実現するための手段の一つでしかない、という事実はあります。また言語のトレンド一つで、成功したサービスの歴史あるコードがレガシー技術扱いになってしまうという業界としての問題もあります。技術者は、トレンドにこだわるよりも、あなたの本当の価値はそこじゃないというところを意識し、ビジネスやアウトプットの質や安定性にコミットして欲しいです。
A. 業務及び趣味でPythonを使っていますが、いろいろな言語をかじっては覚えたりしています。自分が思うに、一つの言語に特化するためには、むしろ他の言語を勉強する必要があると思います。著名なハッカーの人々は、例えば「一年に一つのプログラミング言語を学ぶべきである」と述べたり、あるいは半ダースの言語を覚えるべきである、という話をしています。参考までに、そういったエッセイを載せておきます。 http://www.yamdas.org/column/technique/21-daysj.html http://itpro.nikkeibp.co.jp/article/COLUMN/20070618/275142/ プログラミング言語には、さまざまなパラタイムがあります。例えば、自分がかじった範囲ですと、関数型としてHaskell、宣言型としてPrologなどが挙げられます。これらの言語は、いわゆるPHPPythonといったような手続き型以外のパラタイムを教えてくれます。そうすると、如何に自分が勉強している言語が「特殊なものの」の一つであるということに気がつかされまず。そして、またこれらは「この言語はこうするべきだ」という思い込みを打ち砕き、違うアプローチを教えてくれます。これらが実際的に、業務として、ようするに「技術を金にする」という意味で役に立つかどうか、というところは疑問ではあるでしょう。しかし、自分は上記の言語を勉強した所で、ポンコツでありながらも、「こういう考えをするとどうだろう」と考えられるようになったように感じます。それは確実に業務として生きているように感じます。また、エンジニアとしてのロードマップとして、どのように生きるのか。一つとして、Webサービスをたち上げる、といったときに、一つの言語でおさまることはほぼありえません。最近、自分でもサービスを立ち上げたのですが、Pythonの他に、SQLであったり、クライアントJavaScriptであったり、それらをつなぐShellScriptへの理解をせまられて、必死で覚えています。たぶん、多くのスペシャリストも、上のように、「母国語(メインの言語)」を覚えながら、他の言語で幅を広げるという形を取っているような気がします。もちろん、ただの器用貧乏になる可能性もありますけどね、自分のように :)
A. 高水準言語を使うエンジニアであれば、答えとしては、すべきではないです。まず、大抵の高水準言語のプログラミング言語は使った言語と同じ世代言語で、親となった言語があります。まず、その親言語の理解が必要です。例としてはC#の親言語はC++,phpの親言語はC++などとなります。次に同じ親を同じとしている他の言語の理解が必要です。(以降、類似言語と省略)これら、親言語と類似言語は、文法の違いもありますが、根幹として、設計思想の差がありますので、同様の仕組みを作る場合、記述する命令の差が出てきます。これら差がオブジェクト指向が使える高水準言語の場合、全体的な設計に大きく関与してきますので、バグ、生産性、セキュリティといった要素に大きく関わってきます。全く系統の異なる高水準言語の場合は、上記の差異がわかりづらいですが、同様の差がありますので、よく学んで下さい。

以上のように賛否両論さまざまな意見がありました。 わたしのゼミの先生もそうでしたが、多くのプログラマーはより幅広く言語を学ぶべきという人が多いとおもいます。 しかし、学生の短い時間でどれだけの言語を習得できるかと考えると、一つの言語のスペシャリストになろうとするのも悪くはないのかな?と私は思っています。 ちなみに、わたしはPython超大好きっ子なので、(ほかも必要最低限学びながら、)すくなくとも今年はPythonオライリー本全部読破しようと目論んでいる勢いで学んでいます。 好きな言語を好き放題やれるのは学生のうちだと思いますし、こだわるのもいいのかなと思っています。