会社でjQuery使ったら無能上司に怒鳴られたんだがwwwww - IT速報 を読んで思ったこと
会社でjQuery使ったら無能上司に怒鳴られたんだがwwwww : IT速報
「何でこんなことも知らないの?老害なの?」と仕事しながら思ってる人はそれなりに居ると思うし、私でSIerとして働いてた頃は割とそう感じるところがありました。(昨年辞めましたが。)
なんでこうなるのかなー
- ホントに上司の性根が腐っているから
- 会社として新しいことを取り入れなくても食っていけるから
- 開発を「誰でもできる」ようにするために、小難しいことは排除するのが正義だから
最初のは、「それは大変ですね。心中お察しいたします。」って感じで、その次は「いい会社ですね。」って感じですね。
色々言いたかったのは、最後のだけです。 開発を「誰にでもできる」ようにしているっていうのは、極端な言い方するとそこら辺の人を連れてきて、マニュアル通りにポチポチやればできるみたいな、「決められたことを決められた手順で作る」仕組みだと思います。(規模に比例してその特徴が濃く出てくる。) 世の中の多くのITシステム屋はこのスタンスでソフトウェアを作っていると思うんですが、そういう環境で意識高く新しい技術を取り入れていくのは、一人だけでは当然無理なわけで。 「お前らのやり方は古いし非効率的だ。これくらい世の中では普通に使われてるし、分からないなら自分で勉強しろよ。俺は俺のやり方でやらせてもらう。」みたいな>>1は無責任極まりないと言われてもしょうがない罠。
かといって>>1が悪い、って終わらせるのも不幸だなとは思うので
じゃあどうすればいいの
- 組織全体の知識の底上げを図る
- 偉くなって、自分でルールを敷く側に行く
- 「誰にでもできる」ための仕組みを作る側に行く
- 別の道を行く
「誰にでもできる」の「誰にでも」が下のレベルに沿うし、常に人が入れ替わるようなところでは知識の底上げが難しいんだと思いますが、地道に頑張るしかない。 偉くなってルールを敷く側に行くのはとても時間がかかるとは思いますが、地道に頑張るしかない。
「誰にでもできる」ための仕組みを作る側というのは、Webサーバーの動作知らなくてもWebサービスが作れるみたいなフレームワーク開発をするということなんですけど、ここでどんなにイケてる技術使ってても実際に開発する人たちが直接触ることがなければ、実装は好きにできるというメリットを享受しつつ、気がつけば「何でそんなことも知らんの〜」という状況を作り出す一旦を担ってしまう諸刃の剣。でも、間違いなく自分の力はつくと思います。
地道に頑張っても状況が打開できないなら、もうそういうスタンスでやっているITシステム屋から抜けて、別の道に行くのもいいのではないでしょうか。辛い中頑張って疲れきってしまうのはやっぱりよろしくないと思います。
まとめると
「何でそんなことも~」って愚痴ってるだけだと幸せになれない。
自分だけでも幸せを求めるなら別の道を探したほうがいい。
今の状況を変える気があるなら、草の根的に情報共有とかして頑張るか、偉くなって上から組織を変えるか。どちらにしても時間と根気( 胆 力 )が必要。
胆力なかったら自分だけでも幸せになったほうがいいと思う。
僕は今のところ幸せです。
新年だしパスワードについて考えた
あけましておめでとうございます。
2014年は人生のひとつのターニングポイントでした。 ちょっと元気無くしてたり途方に暮れてたりしましたが、今は元気にやっております。 2015年もどうぞよろしくお願いします。
年末年始とお盆くらいしか実家に帰らないわけですが、家族はみんなITに弱いのでこういうタイミングで色々面倒みてます。 そこでびっくりしたのが、パスワードに対する考え方のギャップ。 パスワードが数字4桁とか、ジョーアカウント*1を使ってたり、「最近は8文字以上入れないとダメとか言われて困るんだよな、アレは何なんだ」とか言われたり。
せめてパスワードは最低8文字にして、できれば全部別のものにしてくれ〜とか言っても「そんなの覚えられん、無理だ」と言われるので、そこまで無理しないで覚えられて、かつ使うサービスごとに異なるパスワードの作り方を伝授しました。
同じような悩みがある人がいれば参考にして頂ければ…
強いパスワード(しかも忘れにくい!)の作り方
- コアとなるパスワードを作る(6文字くらい)
- コアパスワードを補強するパスワードを作る
- 1と2のパスワードをつなげる
補強するパスワードの作り方がポイントで、ネタをいくつかあげておきます。 これをどう組み合わせるかはご自由に。
補強パスワードの元ネタ
- サービス名(例:Twitter)
- URL(例:https://twitter.com/)
補強パスワードからどう作るか
- サービス名そのまま 例:Twitter → Twitter
- サービス名の最初2文字(何文字でもいいです) 例:Twitter → Tw
- サービス名の最初と最後の文字 例:Twitter → Tr
- ログイン画面URLのドット区切りの先頭文字 例:https://twitter.com/ → tc
- ログイン画面URLの最初ドット前後 例:https://twitter.com/ → rc
3のつなげ方もいくつか工夫できそうです
- 先頭につける
- おしりにつける
- 最初と最後に分ける
実際に作ってみると
- コアパスワードを「jibanyan(ジバニャン)14」にします→「jibanyan14」
- Twitterでの補強パスワードを先頭の4文字「Twit」にします→「Twit」
- コアパスワードと補強パスワードを2文字ずつ最初と最後に分けてつけます→「Twjibanyan14it」
こんな感じです。同じ方法でYahoo!だったら「Yajibanyan14ho」facebookなら「fajibanyan14ce」と、それなりに強いパスワードができます。
コアパスワードとルールさえ覚えておけば使うサービスが増えてもログイン画面から分かるので割とお手軽かと思います。
On Error Resume Nextなコードを駆逐するためには
構造化例外処理があるいま、On Error Resume Nextなんて構文にお目にかかるのは、 Excelマクロくらいのもん
On Error Resume Nextとは
Vishal Basicだけにある構文で、名前からも分かるようにエラー処理に使う。
On Error(エラーしたら) Resume Next(次の処理を続ける)…つまり、エラーは無視されるわけで。正しく動いているか分からないようなアプリはちょっとお守りできる気がしない。
構造化例外処理(Try...Catch)に置き換えられないか。。。
結論
そのままTry...Catch構文に置き換えるのは難しい。
理由
エラー時に次の行へ進む = 各行にTry...Catch書いてCatch句で何もしないのと同じ。 コードはこんな感じになる。
等価なコードにするのは現実的じゃないので、実装を見て例外処理するのがいいと思う。 ただ、こういうコードは不吉な匂いしかしないので、かなり苦労することは間違いない。。。
VB.netのIIf関数とIf演算子について
C#で使える三項演算子がVB.netには無い。 代わりに、IIf関数とIf演算子というのがある。使い方とか注意点について…
結論
理由とか
まずは、使い方↓
よくありそうな、TextBoxの値を数値として代入するケース。(TextBox1には数字しか入らないと考えて欲しい)
空だったら0として扱いたい訳だけど、If演算子ならTextBox1.Textが空なら、問題なく0が入る。 一方で、IIf関数を使った場合は、FormatExceptionが起きる。
何故か
IIf関数では、第一引数(評価式)の結果によらず、第二、第三引数の評価を行う。
そのため、評価して欲しくない Integer.Parse("")
が実行されて、FormatExceptionが起きる。
IIf関数は、If…Else…End If式と等価ではないわけだ。 VB使ってると、紛らわしい関数とかクラスとか、たまに出てくるのでホントやめてくれーって思う。
If演算子 != If…Else…End If
If演算子もIf…Else…End Ifと等価ではなかった。 ここはIIf関数も同じで、If演算子の返り値は Object型 なので、返り値はちゃんとCastしてやる必要がある。やはりVB.netは使わないほうがいい。 *1
?: 演算子 (C# リファレンス) | Microsoft Docs
SECCON 2014 長野大会に参加してきた
今更感あるけど、書いてる途中ではてブロが停止して消えたのd(ry
SECCON 2014 長野大会 DNS Security Challenge
チーム「/dev/null」で参加してきました。総合3位でした。惜しい。
クイズで積極的に押していったのがスコアにつながって良かったと思います。
お題が「DNSセキュリティチャレンジ」。
部内向けにBINDでMaster-Slaveサーバを建てたことがあるだけで、 セキュリティといっても簡単にACL書いておいたくらいのもので、 ちゃんと勉強したことは無かったんですよね。
JPRSの森下泰宏さんと、「浸透言うな」で有名な中京大の鈴木常彦さんの レクチャーも受けられて、非常に勉強になりました。
覚えたー
続きを読むjavascriptオブジェクトのこと
よく分かってなかったけど最近覚えたこと。
javascriptで扱うオブジェクトの最上位にあるのが「window」オブジェクト。
window.open("http://www.google.co.jp/", "Open sesame.");
とかやって使うオブジェクト。開いているwindow自体を指している。
windowオブジェクトは、「name」、「document」、「history」ナドのメンバをもっている。一番使われるのは「document」でしょう。
var contentsOfBodyTag = window.document.body;
documentっていわゆる「DOM(Document Object Model)」。HTMLタグとして記述されたドキュメントの最上位にあたる。だからプロパティがとても多い。
windowがあって、その中に描画される(HTMLで書かれた)documentがあって、(HTML)documentの中には、headやbodyやtitle、imagesなんかがある。 メンバにアクセスする(階層を掘り下げていく)には、2つの方法があって「ドット記法(dot notation)」と、「括弧記法(bracket notation)」のどちらを使っても良い。 あと、windowは省略してもよい。
// タイトルが取れる var title1 = window.document.title; // ↓も同じ var title2 = window[document][title]; // これも同じですね var title3 = document.title;