読者です 読者をやめる 読者になる 読者になる

Make Healthy Life

最近はSQLばっかり書いてるWebエンジニアの日記です。

kensington SlimBlade Trackball がうるさくて発狂しそうだったけど、クリーム塗ったら快適すぎた

もうかれこれ5ヶ月ちかくkensingtonのTrackballを使ってるんだけど、最近スクロールする動きでキュルキュルこする音がしてうるさかった。


スクロールするときはカチカチ音を出す仕様なのだけど、それとは違って、黒板をこするようないや〜な音が出てしまう。もうなんなのこれ!!

最初はボールが汚いのかと思ってボールや受け口の方を念入りに洗ってみた。
音はひどくなる一方。。。

単純に洗うと、摩擦が大きくなってさらに音が出ていることに5回目にボールを洗った時点で気づく。
それなら滑りを良くしてやれば良いのでは?
でも油なんて塗りたくない。。。キーボードが油だらけになる。。。

苦肉の策でハンドクリームならいけるのでは?でもハンドクリーム無いから顔用のクリーム!をボールに塗りたくってみた。
音が消えてる!それどころか滑りが良すぎる。
逆に操作しずらいかもw

あぁ、でも音が消えてよかった。

使ったクリームはこれ。多分クリーム系ならなんでもいいんだろうな〜

エンジニアは割のいいアーティストなんじゃないか

大手のSIerからWebベンチャーにエンジニアとして飛び込んで、クリエイティブでキラキラしているように見えたWebエンジニアの世界に入った。

よくエンジニアはクリエイティブな仕事だと言われるけど、Webベンチャーでクリエイティブな仕事ができるかというとそんなことは無かった。
大体は社長やお偉いさんが「こんなことしたい!」「こんなことしたら売上あがる!」みたいなのを考える。それを実現するための技術を選び、かかる時間を見積もり、作る、という作業だった。

「どうやって実現するか?」という部分は無限に可能性があり、クリエイティブな部分なのかもしれない。それでも「何を作るのか?」という部分に必要なクリエイティブさとは比べ物にならない。

社員としてエンジニアをやっている以上、「どうやって実現するか?」のエキスパートにならざるを得ない。そして大概の場合、そこにはクリエイティブさが入り込む余地がなかったりする。ハードコーディングされた変数を力技で書き直していく作業だとか。
僕の知っている現場ではそういった力技の方が多かった。アルゴリズムや最新技術を駆使するよりも、とにかく力技。結構そういう仕事の方が多いのではないかと思う。


ただ自分はクリエイティブなものを創りたい、この世の中に価値を生み出したいと思ってエンジニアになった。そう強く思うから、仕事をしていて不満が出ることもあった。

発想の転換で、エンジニアというのはアーティストなのだ、と考えるようにしてみた。
アーティストは下積み時代、というか売れない時期は食えない。自分の作品に価値を見いだしてくれる人がいなければ、その日のパンを買うことすらままならない。
エンジニアは、力技でなんとかする程度のクリエイティブでも、まぁまぁの給料をもらえる。最初は未経験でブラックな企業に使い倒されても、1、2年耐えたらそれなりのところに就職できる。おいしいじゃないか!!そう思うようになった。
アーティストとして売れない時代を耐える、という意味では最高の選択肢。

今はまだ僕の作品は贋作を売ってその日のパン代を稼ぐ画家レベルかもしれないけど、ピカソレベルになるまで精進しようと思う。

ユーザー認証には黙ってdevise使っとけ、という話

Ruby on Railsに限らず、Webアプリ作ろうと思ったら、ユーザー登録・認証を作らなくてはならない。もちろんそんなの必要ないアプリ作るのもアリだけど。
僕もこのユーザー登録・認証をRuby on Railsで実装したら、かなり迷った。
deviseを使えばいけるんだけども、世の中にはFacebook認証と、独自認証どちらでも登録できるようにしたいとか、Facebook認証とtwitter認証で認証してきたユーザーがいたらどうするんだ?とかいろいろ考えてる人がいるらしく、これぞ認証の決定版!みたいなのがまだないみたい。というかアプリの要件によって変わるから仕方ないのかな。

迷った経緯を書いておきます。

Facebook認証とかにしたら楽にできるんじゃね?期

Facebook認証とかよく見るし、絶対だれかgem作ってるよな〜と思って調べてみた。
僕の検索の仕方が悪かったのと、中途半端に英語が読めるので以下記事を参考に実装してみた。
Rails 4 OmniAuth using Devise with Twitter, Facebook and Linkedin

ほうほう、devise, omniauthというgemを使えばいけるのか〜ぐらいで、チュートリアルやるみたいに写経してみた。
が、写経終わってみてviewはどう書くの?結局deviseって何してるの?とか疑問が湧きまくってしまった。しかもよく読むと、これはFacebook認証とtwitter認証で違うメールアドレスで認証してきたユーザーにどう対処するか?という主旨の実装方法らしく、結構複雑な感じらしい。
レベル高いことに挫折し、googleをさまよう。

日本語の記事あるじゃん!期

ちゃんと検索したら、日本語の記事あった!

Rails4 で Devise と OmniAuth で、Twitter/Facebook のOAuth認証と通常フォームでの認証を併用して実装 | EasyRamble

でもこっちもFacebook認証と独自認証を併用させてるんですね。
出来そうな気もしたけどもうFacebook認証よそうかなぁと思い始める。

独自認証だけでいいや!期

もうシンプルなユーザー登録でいいや!と開き直り、RailsCastの認証を実装してみた。フルスクラッチ
#250 Authentication from Scratch - RailsCasts

この辺はRailsチュートリアルでやっていたので、ああ、そうそうこんな感じだよね〜という気分だった。
ログイン画面を実装し終えた時点で、いろんな機能が足りないことに気づく。
ログインユーザーの取得とか、ログインしているか否かの判定、などなど。

deviseってシンプルなユーザー登録のgemだったんだね。。。期

Facebook認証とかにしたら楽にできるんじゃね?期ではomniauthに気を取られて気づかなかったが、deviseってシンプルなユーザー認証・登録の仕組みを提供してくれるgemだったんだね。
とりあえずこれを入れておけばユーザー登録もできるし、ログインユーザーの取得もできるし、大体できるんだね。
とてもショック。
でもとても便利!便利です。


ここまでくるのに丸2日かかった。まだrubyになれてなくて=~の意味とか調べながらやったからというのもあるけど、もっと早い段階で気づきたかったというのが本音。
初めてのことをやるときは仕方ないのかな。めげずに頑張ります。

Railsのオープンソースアプリをソースコードリーディングしてみた

フレームワーク使っててなかなかベストプラクティスがわからない。。。とか、チュートリアルはやったけど、ここからどうやっていこうかな?みたいな人ってやっぱりソースを読むのが一番いい気がしてる。
というわけでRailsオープンソースアプリでソースコードリーディングをしてみた。

まずはどのアプリを読むかを選んだ。

Most Loved Ruby on Rails Open Source Projects

GitlabとかRedmineとかも選択肢としてありかな~と思ったけど、稼働環境を作るのが面倒だったので、demoがついてるアプリにした。
それがこれ。errbitというエラーを表示、管理するアプリ。
errbit/errbit · GitHub

デモ環境はherokuなんですね。
Errbit — Sign in


今回はルーティングのあたりでどうやってるのかを知りたかったので、config/routes.rbしかみてないけど、ほかのところももっと読んでくと、「あ~こうやって実装してけばいいのか~」って発見がありそう。

結構オススメです。

bootstrap 3 をrails 4で使う

なぜか最新情報があまり見当たらなかったのでメモ。
railsでbootstrapを使うなら、twitter-bootstrap-railsというGemを使え!みたいな記事が多い。
でもtwitter bootstrap 3をrails 4 で使おうとすると、去年まではtwitter-bootstrap-railsが対応してなかったので、bootstrapをvender配下に設置したり、違うGemを使ったりしないといけなかったらしい。
対応してなかったから自分用に作った、なんて強者もいた。
jasontorres/bootstrap-on-rails · GitHub
(でもこのGemはなんかうまく動かせなかった。。。)


でもtwitter-bootstrap-railsの最新ソースを使うだけで出来たよ〜という報告です。
Gemfileに最新ソースを使うことを宣言してやればいい。

gem "twitter-bootstrap-rails", :git => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'

ディスプレイとキーボードを大人買いした

転職して、自宅勤務しだしてからずっと考えてたんだけど、ディスプレイとキーボードを買いたいな〜と思ってた。
前職ではディスプレイ2面+REALFORCEというなかなか恵まれた環境だったんだけど、ノートPCだけで1週間、2週間と過ごすうちになんか慣れていってしまった。
でもようやく新しい職場でもデスクトップPCを配布してもらえることになり、いよいよちゃんと環境を整えますか〜という気になった。

まずはディスプレイ!!
フルHD(1920x1080)以上は当然だけど、どうせ買うならWUXGA(1920x1200)がいい!と思った。かつなるべく安め。。。
今日時点で価格コムで一番安いのはこれ。

価格.com - ASUS VS24AH [24.1インチ] 価格比較

でもでも!やっぱり縦にしたい。。。ということでちょっと奮発してピボット機能付きのこれに決定。

価格.com - ASUS PB248Q [24.1インチ] スペック・仕様

onhomeさん、注文して次の日きたよ。素敵。
PB248Q | 激安家電通販11&【onhome オンホーム】



使い心地は最高。でかい!回る!やっぱWUXGAにしてよかった〜!ブラウザとエディタが一画面で十分入る。
もう一枚、フルHDのディスプレイを会社から支給される予定なので、それが来たら縦置きで使おうと思う。



キーボードも結構迷ってた。
選択肢は、REALFORCE(前職で慣れてるし、割と好き)、HHKB(場所とらなそう)、Kinesis(慣れたらすごい快適そう)といった感じ。
Kinesisは高そうなのと、場所取りそうなので、最初に除外。HHKBは場所取らなそうでとても惹かれたけど、やっぱり前職で2年近く使ってたREALFORCEに決定。
案外自分って保守的だなと思った。

ノートPCのぽちぽち感の少ないキーボードでやってたけど、変えてみるともう戻りたくない。Macbookのキーボードも割と好きだったけど、やっぱり良いキーボードは気持ちいいね。

良い買い物した〜

railsでPostgreSQLを使おうとしたらプチはまりした

いつもMySQLをバリバリ使ってるんだけど、せっかくだしPostgreSQLを使いたい!と思って手を出したらちょっとはまって痛い目をみたので、まとめとく。
環境はVMware FusionCentOS 6。

インストール

普通にyumだと古いバージョン(version 8)がインストールされるので、公式サイトのやり方を。
このへんは以下記事の通り。
PostgreSQL9.3をCentOS6にyumで入れて設定するまでの手順まとめ | IDEA*IDEA

Railsからのアクセス

rails sでサーバーを起動させて、ブラウザからアクセスすると、「peer authentication failed」となる。
この原因は、PostgreSQLが標準でUNIXのユーザーと同名のユーザーからのアクセスしか認証しない設定になっているためらしい。
いろいろ試して試行錯誤したけど、結局開発するだけなので、以下のように/var/lib/pgsql/9.3/data/pg_hba.confの80行目の最後をpeerからtrustへ編集してOKだった。

# "local" is for Unix domain socket connections only
local   all             all             trust

外部からのアクセスなどを考慮する場合はもっと考えて設定しないとだな〜
とりあえずRailsのローカルアプリからアクセスするだけなら、これでいいのかな?