ブログ始めてみようかな

メリー クルシミマス

なんだかこの週末は賑やかですね。 そういえばクリスマスっていうイベントがあったっけ。 全く無縁だったけど。

さて、せっかくアカウント作成したのでAdvent Calendarとは関係なくブログというものを書いてみようと思います。

ブログのあり方について

たいていの人はブログって日記として作成するのかな。
たぶん当初はオンライン日記という位置づけだったものが、 SNSの拡大で告知目的などに使われたりして、今ではいろいろな使われ方をしているような。

今回、Advent Calendarで他人のブログを読んでみても、人によって使い方がそれぞれ。

日記としてではなく、自身の技術メモ(備忘録)的な使い方や、新技術に触れた感想を書いたり色々な使い方をしてるし。

何が正しいか、とかそいういことには興味ないんだけど、 ブログっていろんな使い方できるから、いざ始めようと思っても どんな書き方をするか、でまず一考するはず。

俺以外にも今回AdventCalendarで初めてブログってものを書いた人もいると思うけど、 どうか書こうか悩んだんじゃないかな。

備忘録としてのブログ

ある意味、日記って過去を振り返るためのツールだから備忘録としての使い方もありだとは思う。

でも、ブログに技術メモの備忘録書いていくのはちょっとどうかとも思う。
というのも、忘れないようにするためにはちゃんと整理したいはず。
でもブログってこれには向いていないと思う。

記事としてのブログ

単純にあったことを述べてるだけじゃなくて、なにか意図して伝えたい内容がまとまってるブログはこれになると思う。

ブログの内容にストーリー感があって起承転結しているブログは面白いよね。

でもこれって結構時間がかかるんだよ。

ネタがあるのにまとめられずに中途半端になって、続かなくなるパターンだよ。

やっぱブログ書くのやめよう

めんどくさいわ

休日出勤のススメ

休日出勤のすすめ

休日出勤なう

現在絶賛休日出勤中ですw

ブログ書いてないで仕事しろ、って言われそうな気もしますが
まあ、0.5時間位サビ残扱いにしてよってことで書きます。

休日に出勤してしまう理由

あなたは休日出勤しますか。
それはなぜですか。
今日の私の出勤理由は「俺が作ったプログラムが本番環境では動かなかったから」です。

チームのみんなが出勤しています。

俺が書いたプログラムが動かないからです。

なぜ動かないのか。例のIE7プログラムが・・・

話が脱線するのでこれ以上はやめましょう。

(再)休日に出勤してしまう理由

あなたは休日出勤しますか。 それはなぜですか。

  • 仕事が終わらないから
  • 突発的な事故対応
  • 顧客都合
  • 休日手当て狙い

いろいろあるかと思いますが、これらの理由で休日出勤なんて勧めません。 当たり前です。

おすすめしたいのはもっと生産的な理由としてです。

もくもくの場所として最適

IT勉強会ってもくもく会とかやってますよね。

集中して作業できる空間でもくもくしたいっていうね。

よくスタバとかでMacbook開いてドヤ顔で座っている人いますが、
こっちは会社でWindows閉じて絶望してますよ
「集中したい」目的で場所を選ぶなら間違いなく職場の自席が一番だと思いますよ。

「なんかせな」ってImprintingされている場所であることが重要

これが喫茶店や図書館などよりも、もくもくできる最大の理由です。

まあ人によってはそんな刷り込みされていないのかもしれませんが、 自分は自席が一番集中(忙しく)せざるを得ない場所ですね。

ほんと、はかどりますよ。

でもまあデメリットもあるわけで。

「趣味で使う場所じゃない」ってことまでImprintingされている

いまブログ書いてるので大きな声で言えませんけどね。

これが最大の障害です。
集中できる場所。それは間違いない事実ですが、趣味でプログラムするためにはPCとか使えないってことですね。
セキュリティの問題もあるし、プライベートPC持ち込むのも色々な意味で危険です。

そういうことが簡単にできる会社や職場ならいいんですが、私の会社では規則的に絶対無理ですね。
っていうかWindowsだし。
勝手にインストールできないし。

趣味で勉強したいプログラムを仕事で作るプログラムに結びつけていけばあるいは。。。

勉強会の会場にして出勤する

dodosoftはこのパターンですよね。(株式会社アットウェア)
うちの会社もこれが簡単にできればきっと出勤するメンバー多くなると思う。

「ついでに仕事もくもくしていくか」ってなると思う。

まとめ

「休日出勤」って聞くと嫌なイメージしか無いかもしれませんが、 「集中したい場所」として使うには最適だと思います。

うちの会社でも情報処理試験の勉強とかPC使わず仕事のためとも言える作業なら使えるね。

滅びろIE7

滅びろIE7

以前の投稿で「Windows使っている人はプログラマー失格ですね」とか言ってたんですが、 会社では「IE7で動作するWebページを作れ」とか言われるので、 泣く泣くWindows Vistaで開発することになったりするわけです。

もう来年の春にはサポート切れるOSなのに、 っていうかIE7ってだいぶ前にサポート切れてるのになぜこんなことしなくてはいけないのか。 小一時間問い詰めたい。。。

でも仕方ないんです。

IE7で動くWebページを作らなければならない、なんて状況に陥ることはもう今後二度と無いと信じてますが、 念の為に今回の教訓をまとめておくことにします。

IE7ってどんなブラウザ

Wikipediaによると、2006年の秋にリリースされたブラウザですね。 Windows Vistaには標準搭載されています。 Windows 7にはインストールできません。 どうしてもインストールしたい人はここから

当時、学生だった私にとっては 「IEタブブラウザになった。Ctrl+Qのクイックタブすげー」 というのが一番のインパクトでした。

今の私から見れば

  • HTML5/CSS3が動かない
  • JSON.parseが使えない
  • stringのtrimが使えない(ECMAScript5未対応)
  • parseInt("0123")で123でなく83(8進数)に変換される
  • console.logが使えない
  • っていうか、F12で開発者ツール起動しない。そんな機能ないってマジか。どうしろと。

っていう感じで、もう泣きたい。
HTML5/CSS3のデザインできます。って自慢気に行ってる人はゆとりですね。
まじでエンジニアを泣かせにくるブラウザです。

教訓まとめ

imgタグっていいですね(笑)。 遅いけど遅い理由が他にもあれば(Vistaが動いている時点でマシンスペックもたいてい糞なので)それを理由にごまかせます。。。

と言いたいのですが、さすがに画像だと修正がめんどくさいので極力CSSでできるところはやりました。 細かいところまで全部まとめるときりがないので、今回は「IE11なら簡単なのに」という点に絞って以下の対処法をまとめます。

教訓1: 先人の知恵を借りる

テキトーにググると先人の人たちが以下のようなjsファイルを作って提供してくれているので、全部使います。

<script src="html5shiv.js"></script>
<script src="es5-shim.js"></script>
<script src="json3.min.js"></script>

教訓2: alertだけが心の友

IE7では開発者ツールが使えないので console.log(hoge) みたいに呼び出すと例外になってしまいます。 うっかり呼び出しても大丈夫なように定義してやりましょう。

<!--[if lt IE 8]>
<script>
window.console = {
        log : function(msg){
                  alert(msg);
              }
    };
</script>
<![endif]-->

教訓3: ボタンは角張っていてこそ美しいと信じる

ボタンの角を丸くして影つけるとか、CSS3なら簡単にできるのに、IE7だと難しい。
最近はググってもCSS3のやり方しかヒットしなくて困る。

たぶん一番簡単なのはこれ。でも今回みたいにサーバじゃなくてローカルに置く場合は使えません。

角丸くするだけならjQueryのこれ。一瞬角ばったものが表示されるのを気にしなければね。

妥協が必要な出来にしかなりませんのであしからず。

教訓4: ボタンを押した感じを表現する必要はない

:active擬似クラスを利用すれば、クリックした時にスタイルを変えられます。
これは別にIE6でも<a>タグであれば使えます。IE7では<a>タグ以外でも使えます。

よかったよかった。

と思った俺の心は砕かれた。

IE7では:activeだけは<a>タグでしか使えないんです。しかもその挙動がIE8以降と違います。

押した瞬間がactiveのはずなのに、IE7だと押したあともずっとactiveスタイルになってしまうんですよね。 クリックでページ遷移してしまうボタンとかならいいんですが、文字入力用のボタンとかは致命的です。 (画面から暗証番号入れるシステムでは死活問題だ)

得られた教訓は「諦めが肝心」だということだ。俺は諦めた。

a:link{
    background-color:blue;
}
a:visited{
}
a:hover{
}
a:active{
    background-color:skyBlue;/* 一度クリックしたら最後。ずっとこの色になる */
}

教訓5: エミュレータは信用するな

<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=7">
<style type="text/css">
* {
    font-family: "MS ゴシック";
    font-size : 24pt;
    color: black;
}
 
a {
    background-color: skyBlue;
    vertical-align: middle;/*cssハックしてもうまくいかない*/
    display: table-cell;/*cssハックしてもうまくいかない*/
    padding: 30px; /* vertical-alignが融通聞かないのでやむなく縦幅合わせるための微調整 */
}
 
button {
    background-color: skyBlue;
    border: none;
    display: table-cell;
    vertical-align: middle;
}
</style>
</head>
<body>
    <a>リンクでボタン</a>
    <button>ボタンでボタン</button>
</body>
</html>

コレをIE11のエミュレータ使ってIE7モードで表示する。

f:id:march_7:20161213232249p:plain

どう見ても縦幅揃っている。
実機で表示するとこうなる。

f:id:march_7:20161213232324p:plain

ほらね。だから信用できないんだよ。
今週末までずっとこの作業なんだが。終わる気がしない。

頭文字C

なりゆき

dodosoftの一員ということで、Advent Calendarの記事に投稿することになったわけでして。

で、せっかく書くならそれなりにオリジナリティある記事を書こうかと思い、メンバーの中で「C言語」なら自分が一番の有識者じゃないかなと思い、語っていくことにしました。

C言語との出逢い

今、プログラマーとしてこの記事を読んでいる人にも、最初に触れたプログラミング言語があったはずです。 その言語は何でしたか?

私はC言語でした。

大学のプログラミング講義で結城浩さんの「C言語プログラミングレッスン入門編」を教科書にprintfから学んだのを覚えています。

今はもう仕事でもほとんど使わなくなってしまったC言語ですが、未だに「C言語を最初に学んでいてよかった」と思うことは多々あります。

なぜならC言語プログラマーを育てる言語」だからです。→元ネタは某ドライバー育成漫画より f:id:march_7:20161208003722j:plain

今では組み込み系のシステム制御など限られた分野でしか見かけなくなりましたが、C言語を学ぶことはとても重要だと本当に思います。

特にこれからプログラミングを勉強する初心者には声を大にして言いたい。

C言語から勉強しなさい」

基本を学べます。 基本を学ぶことはこの上ない応用力を身につけることにつながります。

いきなりJavaみたいなガーベージコレクション搭載のメモリ管理を意識しなくていいモンスターマシンに乗ってはいけません。
(標準ライブラリが豊富なので)初心者でも苦労せずタイムアタックでいい記録を出してしまうかもしれまんが、それでは荷重移動の重要さにはいつまでもたっても気づけませんよ(笑)。

まずはテキストエディタコンパイラだけインストールして、Hello Worldを表示するところからです。

間違っても Visual Stdio みたいな統合開発環境なんてインストールしてはいけません。 そんな豪華なものは必要ありません。

というかWindowsを使ってるやつはプログラマー失格ですね。 今すぐUbuntuをインストールしなさい。

 sudo apt-get install gcc emacs
 emacs hello.c &
#include <stdio.h>

int main(void);
int main(void){
    printf("Hello World\n");
    return(0);
}
 gcc hello.c
 ./a.out

勢いでサンプルコードまで載せてしまいました。 今日のところはここまでにしておきましょう。 語り始めると明日会社行けない時間になってしまう。