【JQuery】.html()じゃなくって.text()
これまたお仕事の話。
JQueryを使用し、mouseenterやfocusinのときに、入力フォームに会ったdivタグのtipsを表示したりする処理があった。
が、
IE7(もうサポート外とかいうキーワードは受け付けない)では、横長ページにて右端にスクロールバーがあったとしても、該当イベントが起こったときに左端に戻る。
何故に…。
しかも原因動作っていうのが、zoomが100%以外のときっていう。
調査の過程で動作ソースを切り刻んでいくと、
$("div#hogehoge").html("ここを書き換える");
みたいな書き方をしてた部分が原因とのこと。
(理由はわからないけど、コメントアウトしていった結果そうなった)
「なんでやねん」というお決まりのツッコミをしながら下記に変更してみた。
$("div#hogehoge").text("ここを書き換える");
おお、直った。
888888.
そしてまた言う。
なんでやねん!
P.S.
$("div#hogehoge").css("top", (top - 20) + "px"); $("div#hogehoge").css("left", (left - 20) + "px");
とかして、そのtipsの表示場所を変えているんだけど、
zoomが100%以外だとtipsの表示位置が激しくずれるのはなぜだよ…
UserAgentのお話(互換表示とかなんとか)
仕事にて。
ブラウザの種別によって機能を切り替えるとかなんとかっていう、よくあるパターンの内容が仕様として確定したため、旧来から使っていたソースを使用して対応した。
(まあよくあるこんなタイプの)
テストしてよしよし。リリースしておkおk。
そーんな感じでやってたら、納品先からお電話。
「機能が切りかれれてない」
おろ?何故に?
////////////////////////////////////////////////////
今回の案件の要件はIE7~IE11。
IE11にも対応してるからよしよし、と思っていたんだけども、
上記のようなソースにおいて加味してなかった部分があって。
それは【互換モード】。
納品先のお客様というのは、社内システムがたくさんある会社。
そのため、IE11に対応していない作りのあるシステムもあるらしく、
IE11においては基本的に「IE7の互換モード」で動くとのこと。
////////////////////////////////////////////////////
互換モードで動いているとなると、
tridentは7なんだけどもMSIEは7.Xなわけである。
上記のようなソースだと、先にIEのバージョン判別をしてしまうため、
MSIE 7.Xの分岐に先に入り込んでしまうわけだ。
今回は、IE11に対応するために、tridentの確認分岐を先に置くという手法で対応したが、
場合によっては下記のページもタメになるみたいだ。
防御するための鎧は、いつ脱げるのか
僕らみたいな下請けの受託システム開発会社ってのは、仕様書がすべての鎧。
「言った」「言わない」の水掛け論が多岐にわたって発生するが故に、しっかり仕様書を書いておく。
それは開発する側にとってもそうだけど、エンドユーザーに向かっての防具でもある。
仕様書に書いてないことを要求されたとき、立場は平等であって強気に突っぱねることが出来る。
未記入だと圧倒的に立場は不利。エンドユーザーの意見がすべて、となる(ことが多い)。
だからこそ、会社に入ってくる人間には
「頭の中に入っていることでも、仕様書としてしっかりアウトプットすること」
をやれと言う。
個人的には、そんなことあまりしたくない。
出来ることならプログラムを書いていたい。
Excelの方眼紙に向かって、何度も何度も同じような文言をつらつらと書き連ねる。
ウォーターフォール開発における仕様書作成のフェーズは、
開発会社にとってはぬるま湯のような時間になる。
結果としてこのぬるま湯のときにぬるすぎると、後で炎上するんだけどもw
結局仕様書はあくまで仕様書であって、それ以上でも以下でもないんだよー
と思い老ける昼休み明け。
仕事しよう。
paizaオンラインハッカソン 4Lite
コードを書いて転職するでおなじみのpaizaが、オンラインハッカソンのイベントを行ってますね。
マンガ版「エンジニアでも恋がしたい!」〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラインハッカソン4 Lite
というわけで、僕もさっそうと参戦しますた。
言語はめんどっちかったんでC#で。
全部で3問だったので、適当に載せときます。
[Q1]
class Program { static void Main(string[] args) { // n int n = int.Parse(System.Console.ReadLine().ToString()); // 各在庫数 int stockcount = 0; for (int i = 0; i < n; i++) stockcount += int.Parse(System.Console.ReadLine().ToString()); Console.WriteLine(stockcount); } }
[Q2]
class Program { static void Main(string[] args) { // n int n = int.Parse(System.Console.ReadLine().ToString()); // 1カラム目=必要在庫数 // 2カラム目=現在の在庫数 // 3カラム目=価格 long price = 0; for (int i = 0; i < n; i++) { int[] input = Array.ConvertAll<string, int>(Console.ReadLine().Split(' '), int.Parse); // 現在の在庫数が足らない場合 if (input[0] > input[1]) price += (input[0] - input[1]) * input[2]; } Console.WriteLine(price); } }
[Q3]
class Program { static void Main(string[] args) { // 1行目に区間の長さ t と コマの総数 n がスペース区切り int[] lencount = Array.ConvertAll<string, int>(Console.ReadLine().Split(' '), int.Parse); int[] checkbuf = new int[lencount[1]]; int i = 0; for (i = 0; i < lencount[1]; i++) checkbuf[i] = int.Parse(Console.ReadLine()); // 計算 // 最大値 int max = 0; // 格納 int tmp = 0; for (i = 0; i < lencount[1]; i++) { if (i < lencount[0]) tmp += checkbuf[i]; else tmp = tmp - checkbuf[i - lencount[0]] + checkbuf[i]; max = max < tmp ? tmp : max; } Console.WriteLine(max); } }
「転職するぜ!」と転職活動して転職しなかった理由
2014年5月。
「転職しようかなあ。。。」
こう思ったのは別に初めてのことじゃない。
けど今回は結構リアルにそう感じていた。
「給料、安いわ。生活できないなあ。」
今年の3月と4月、久しぶりに「案件の隙間」に入った私は、残業時間が20時間未満/月だった。
その結果、生活が大変苦しかった。
新卒の時に入った会社とは違う会社だけど、新卒のときの手取りの額と、残業なしのときの手取りの額を比べてみた。
9000円しか上がっていなかった。
でも年収ベースはかなりあがってる。
少なくとも新卒からは100万円以上。
でもそれはすべて、残業代によるものだということが改めて分かった。
所属している会社に不満があるところは他にもある。
・受託案件が少なくなってきている&メンバーが少ない
・業務で新しい技術や新しいやり方をしていない
他にもいろいろ小さいことはあった。
でもやっぱり一番は収入のところで、
「転職活動してみるか」との結論に至った。
2014年6月。
珍しく受託開発メンバーの私が社外に出て客先で派遣のお仕事をしていた。
2014年7月。
とりあえず転職サイトに登録してみた。
一括登録余裕。
一時して、何となく1社に申し込んでみた。
そうすると、運営する会社から電話があって、「転職サービスに申し込んで貰ってからの応募となる」という、転職サイトあるあるに遭遇した。
(今ではあるあると言えるけど、それすら知らなかった転職初心者)
転職サービスに申し込んだら、経歴や転職の希望が満たせるような会社を転職サービスをピックアップしてくれて、私に提示してくれた。
今回の活動においては、2社使用させていただいたが、1社はよかった。
1社はダメだった。
さらに言うなら、よかった1社も担当が途中で変わった結果、微妙になった。
つまり転職サービスってのは、「当たる人によりけり」なんだなあということがよくわかった。
(否定はしない。いろいろやってくれるからむしろありがたい側面もある)
2014年7月~8月。
怒涛の面接ラッシュ。ほぼ毎日。定時後。仕事も忙しいっていうのに。
書類選考を通過したのは10社くらいあった。
とりあえず私の最低条件みたいなのは
・年収400万円~
・自社開発(受託、自社サービス、パッケージは問わない)
・社内の技術意識が高い
みたいな条件しかなかったから、必然的に会社は多くなるらしい。
だから業界もばらばら。
有名な会社さんもあれば、名前聞いたことないよっていう会社まで。
新卒のときの就職活動もそうだったけど、やりながら学びながら面接に慣れる、そんなパターン。
面接ではいろんなパターンがあった。
一番多く聞かれたのは、当然だが「現職を辞める理由」。
そこから派生していく質問が多かった。
ゲーム系の会社は、僕らの年齢(27歳)は「プログラマ」を求めているらしく、ガッツリ技術的なことを聞かれた。ベンチャー系も同義。
受託開発やパッケージ系の会社にいくと、「プレイングマネージャー」みたいなのを求められた。
これに関しては私自身は「どちらでもいい」と感じていた。
けど面接官の雰囲気的なところを言うと、前者は「上から目線」。後者は「対等」。
こういったところからも、前者は僕には向いてないんだなーとも思った。
あと、ベンチャーは「適当」だなあと感じた。
まず出している求人と、面接を受けたときの求人の内容が異なる。
例えば「PHPによる開発(WindowsやMacなど)」と書いてても、実際はMacで開発して、Linuxにデプロイ。
例えば「JavaやPHPなど、何か言語を触っているだけでOK」と書いてても、実際はJavaじゃないといけなくって、しかも経験年数が3年以上とか。
求人内容が異なれば、そりゃ求められるスキルが変わるわけだから、面接もおかしなことになるよねっと。
あと多かったのが、事前に経歴書と履歴書を送っていたのに、面接時には両方を求められることと、両方の内容を見ていない見当違いな質問が飛んでくること。
細かい仕事内容や、受託か派遣かまで書いていたり、なんなら経験・未経験のないようまで普通に書いてるのに、未経験に書かれている言語について「どれだけ仕事で使ってましたか」と聞いてくるし、「派遣で仕事をされていると思いますが」と履歴・経歴を見てもないのに質問してくる。
このあたりは謎。採用に力入れてないのかな、と思ったり思わなかったり。
まあそんなこんなあったうえで、内定は4つほどいただいた。
どこも結構いい条件だった(給与的な面で)。
でも内定は全て辞退させてもらった。
内定を出していただいた会社さんには非常に申し訳ないことをした。貴重な時間を使わせたことになっているわけだから。
内定を辞退した理由というのは
・面接の中で、技術不足(というよりはキャッチアップ力不足)を露呈したから
・所属している会社において、まだ自分がやっていないことがあったから
・とりあえずの給料はあがったから
である。
面接を受けてる最中、やっぱりLinuxに対するアプローチと、新しい技術への取り組みみたいなところ(個人的には痛いところ)を突かれた。
まあそう言われた会社の面接では、「セミナーとかに行かないとダメ」とか「勉強会に出ないとダメ」みたいなことは言われたが、必ずしもそうではないと思う。
だがどちらにしても、自分の中での「やってる」感は、他人における「やってる」に届かないんだろうな、と思った。
だから、自分なりの意識改革や時間作りなどからしようと思う。
(家族もいるから家族も大事だし、そこらへんはバランスだと思う)
あとどっかの会社の面接で言われたのが、「所属してる会社でまだやれることあるんじゃない?」
確かに2次請け、3次請けで、環境や言語の選択すらできない会社なところはあるけれど、社内の環境だったり、社員の意識だったり、給与の改善だったり、仕事を請けてくるところだったり。
要は、私自身が「上司がすればいい」と思ってた部分を喰っていくってのは、やってなかったなあ、と。
それをずっとするつもりはないけれども、少なくとも1年くらいはトライしてみてもいいかなと思う。
あと大事だったのが、とりあえずの給料が上がる事。
見なし残業で一定時間積んでもらったから、数年後は転職活動をまたしてるかもしれないけれど、1年くらいは問題ないかなと思った次第。
きっと転職はする。数年の間に。
ただ転職のタイミングが今じゃなかったんだな、と転職活動をしてみて思った。
次の転職活動がいつになるかは知らないけれど、その時のための自分へのメモとしてここに残しておこう、と思う。
追記:
2015/04.
2015年5月をもって退職。転職することに。
Excel的な文字表示 - 文字の回転
仕事ではやっぱり
「Excelの見た目に近い形にしてくれ」
という要望というか押し付けみたいなのがあって。
それはWindowsアプリだろうが、Webアプリだろうがある。
というわけでWebアプリにおける文字の縦書きのCSS。
span.spin {
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
display: inline-block;
縦書きにしたいところに<span class="spin">でOK、っと。
「-」とか「(」とか「)」に使うとよろしいですね。
「1000万円/人」のためのマジックカード
IT企業、いやソフトウェア開発企業、か。
会社における財務状態を見る指標の一つとして、1人あたり1000万円の売り上げがあるか否か、というのが大事になってくる部分がある事があります。
中小企業になればさらにそれが大事になってくる部分があります。
それは、「受託案件会社か派遣会社か」を見分けるための指標です。
ご存じのとおり(?)、派遣がメインになっている会社というのは人を派遣して売り上げを上げます。
そのため、派遣している限りは売上が固定的に上がりますが、急激に売上が上がることはありません。売上を上げるためには、人を雇ってその人をさらに派遣で出すことでしか売上は上がりません。
最近の関西近郊では、単価が50~60万円っていうのが普通みたいです。
新人さんは40~45万円ってのもざらで、下手したら新人の経験を積ませるために、新人をタダでくっつけるとかあるそうです。
ということは、派遣で会社が成り立っているところは、600万円~700万円/人くらいの売上ということになります。
例:30名の会社→1.8億円
じゃあ受託案件会社はどれくらいの売上が上がるかというと、単価で65~75万とかで計算することが多い模様です。
ということは750万円~900万円/人くらいの売上ということになります。
例:30名の会社→2.7億円
なら「受託メインの会社です!」と書いてあって、売上が受託案件会社と思われる会社がいいのかと言われれば、必ずしもそうではないです。
マジックカード発動です。
売上は必ずしも自社の社員による売上じゃあなくてもいいわけです。
と書くと、語弊がありますね。
2つほどパターンを上げておきましょう。
【パターン1 : 社内に社員がいなくても受託できる】
中小企業は横のつながりが強いことが多いため、案件を引き回すこともあります。
受託して売上を上げたうえで、他の会社に丸投げ、もしくは多くの部分を投げるという事は多くあります。
実際に自社で開発している人間は一握りで、開発している部分も一部分で、多くの社員は派遣で外に出ている、なんてことは多いですね。
※そういう会社は、技術力とかそういった類とは無縁なことが多いです
【パターン2 : 自社以外の人間を回す営業がいたら売上「は」上がる】
派遣をやっている会社の営業さんは、基本的に自社の社員を派遣するために営業します。なので、最初に言った単価がどうこうの話の額の中には、営業さんの取り分みたいなのも入ってたりします。
しかし必ずしも営業さんは自社社員の営業ばかりをしているわけではありません。
協力会社さんの社員だったり、縁ある個人事業主の方だったりの営業もしてます。なんなら外の社員や個人事業主ばかりを派遣するための営業をしている人だっています。
そういう営業をしている人が会社にいて、その人が常時5~6人の人を営業して派遣に成功させているとしたら、その人たちの単価は、自社の売上として計上されたうえで、協力会社さんや個人事業主さんの手元に渡ります。
自社に残るのは、営業取り分の数万円程度です。が、売上は計上されます。
5~6人を年間常時回していたら、50万円/人の売上でも、250~300万円/月。年間で3000~3600万円もの売上を1人の営業で計上することが出来ます。
まあトータルして何が言いたいかというと、指標は指標でしかないから、中小企業へと転職とか就職とかする時にはそういった点を聞いてみてもいいんじゃないですかね?ってことでした。