1月
13
2009
2

転職という言葉に感じる違和感

これまで 2 度ほど転職を経験しました。

大学卒業後、最初に就職したのは某電機大手の子会社で、グループ企業が開発したアプリケーションの導入支援 SE を主にやっていました。
2 社目は、自社で開発したウェブサービスを ASP で顧客に提供している会社で、システム開発を担当していました。自社の ASP サービスであるため、保守作業や機能追加が多かったです。
3 社目は現在の所属になるのですが、ウェブシステムを主とする、顧客から請け負ったシステム開発を行っている会社です。新規に開発する案件が多いため、新しい技術を採用しやすいのが 2 社目との大きな違いでしょうか。

さて、冒頭でも「2 度ほど転職」という言葉を使っているのですが、この転職という言葉の響きには違和感を感じています。
日本語には他に適切な言葉が無いため仕方なく使ってはいるのですが、いずれの転職の場合も別に職業が変わったわけではないからです。

確かに仕事の内容には変化があります。よりオープン寄りに、より開発寄りに変わってきています。
ですが、会社が変わっても劇的に仕事の内容が変わったわけではなく、比較的緩やかな変化でしかなかったです。
IT 業界と無縁な人に対しては違いを説明するのも難しいくらいなので、どうも「職業を転じた」という程のインパクトは無いわけです。

絵描きが魚屋になったり、弁護士が大工になったりすればそれはもう間違いなく転職といっていいと思うのですが、同じ業界で会社を変えるのはせいぜい「転社」くらいの表現でいいじゃないでしょうかね。

幸いにして良い会社に恵まれたので、いずれの「転社」もその結果には満足しています。
「転職」となると人生の大きな賭けかもしれませんが、それまでのキャリアが活かせる「転社」であれば、人生の幅が広がる良いきっかけになり得ます。
あまりに頻繁な「転社」は履歴書を汚すだけですが、適度にキャリアを伸ばしていくために、適度な「転社」をお勧めします。

Written by Otchy in: Business | タグ: ,
1月
11
2009
2

検索エンジンに優しいサイト移行

OTCHY.COM から、OTCHY.NET へのコンテンツ移行第一弾として、はてブ with Twitter を移行しました。

[旧 URL] http://www.otchy.com/lab/hatebuwithtwitter.html
[新 URL] http://www.otchy.net/greasemonkey/hatebu-with-twitter/

サイトを移行するにあたっては、元のサイトに説明を書いてリンクを張ったり、JavaScript か meta タグに利用した、リダイレクトなどを行うことが一般的に行われていますが、こういった方法は検索エンジンには優しくなく、SEO の観点からは非推奨です。

サイトを移行した際には、検索エンジンにもそれがわかるように、HTTP 301 リダイレクトしたいですね。特にこの旧URL は、はてブもいくつか付いているのでその価値を引き継がない手はありません。

今回は、301 リダイレクトを行うために、apache の mod_rewrite モジュールを使用したので、その設定をメモとして残しておきます。
以下の記述を、.htaccess という名前で、hatebuwithtwitter.html と同じディレクトリに配置しています。
(mod_rewrite と .htaccess が有効なのは前提です)

RewriteEngine on
RewriteBase /lab/
RewriteRule ^hatebuwithtwitter.html http://www.otchy.net/greasemonkey/hatebu-with-twitter/ [R=301,L]

今後も少しずつ OTCHY.COM からコンテンツを移行していき、その度に同様の 301 リダイレクトを設定していけば、最終的に OTCHY.NET は今の OTCHY.COM と同程度の (SEO 的な) 評価を得ることになるはずです。

Written by Otchy in: Development, Information | タグ: , , ,
1月
08
2009
3

外部リンクに自動でアイコンを付与

WordPress のテーマファイルをちょこちょこいじって、外部向けリンク (正確には、target=”_blank” を付けたリンク) に、自動でアイコンが付くようにしてみました。
おそらく他のサイトなどでも紹介されているであろうテクニックですが、OTCHY.NET で採用した方法を簡単に説明してみます。

下記は、WordPress を前提として書いていますが、その他の CMS や通常のウェブサイトであっても、css や html、JavaScript が自由になるのであればどこでも設定可能です。

用意するもの

  • jQuery
  • WordPress のテーマを編集する知識
  • ファイルをアップロードする知識

アイコン画像を用意する

任意のアイコン画像を用意して下さい。どんな背景であってもある程度見栄えをよくするためには、透過 GIF などが良いでしょう。
Otchy は、フリーで公開されているアイコンを少し修正して使いました。OTCHY.NET で使っているアイコンをそのまま持っていっても構いません。

JavaScript ファイルの準備

まず、jQuery の本体をダウンロードしてきて、jquery.js にリネームします。
リネームするかは任意ですが、将来のバージョンアップの際にファイルだけ差し替えれば済むように、リネームしておく事をお勧めします。

アイコン画像用のクラスを追加するスクリプトを common.js という名前で作成します。もちろんこのファイル名も任意です。

$(function() {
    $('a[target=_blank]').addClass('blank');
});

WordPress テーマの編集

アイコンを指定するためのスタイルを、CSS ファイルに追加します。
アイコン画像のファイル名やパスは任意ですが、画像ファイルのパスは css ファイルからの相対指定となる事に注意して下さい。
Otchy は同じテーマディレクトリの中に画像も一緒に置いています。

WordPress の場合、テーマごとのスタイルは、style.css となっているのでこのファイルに以下の記述を追加します。
padding-right の値は、使用するアイコン画像の横幅に合わせて適宜調整して下さい。

a.blank {
    background: url(images/blank.gif) no-repeat top right;
    padding-right: 14px;
}

次に、作成した JavaScript を読み込むための記述を追加します。
header.php を編集し、作成した 2 つの JavaScirpt ファイルにパスを通します。
js ファイルをアップロードした場所と整合性を取るように、script タグを追加して下さい。

Otchy の場合、js ファイルはドメイン直下の js ディレクトリに保存するため下記のような記述になります。

<script type="text/javascript" src="/js/jquery.js"></script>
<script type="text/javascript" src="/js/common.js"></script>

用意したファイルのアップロード

あとは、作成した各ファイルをアップロードすれば完了です。
追加した記述はわずか 9 行。これだけで、全てのページの外部リンクに自動でアイコンがつくようになります。

便宜上「外部リンク」という言葉を使っていますが、冒頭にも書いたように target=”_blank” となっているリンクが対象なので、外部サイトへリンクする際は、target=”_blank” とするのを忘れないようにして下さい。

うまく動いていないと思われる場合は、各種ファイルのパスの指定が間違っていないか再確認すると良いでしょう。

簡単な解説

大まかに言って、css でアイコンを指定する部分と、jQuery によって必要なクラスを追加する部分に分ける事が出来ます。

css による指定では、a タグの右側にアイコン画像分の幅を空け、アイコン画像は背景画像として右寄りに指定しているのがポイントです。

jQuery による指定では、html 内の a タグのうち、target=”_blank” となっているものを対象として、css で設定したクラスを追加しています。

これだけの処理を簡単に書く事が出来るのは、jQuery の力によるところが大きいですね。

Written by Otchy in: Development | タグ: , , ,
1月
06
2009
2

WordPress with Twitter 公開

WordPress に記事やページを投稿すると同時に、その内容を Twitter にもクロスポストする、Greasemonkey を書いたので公開しました。
詳細は、WordPress with Twitter を参照して下さい。

同じような動作をするという触れ込みの WordPress プラグイン、Twitter Updater を試してみたのですが、どうも上手く動かなかったので、はてブ with Twitter で実績のある、Greasemonkey を作成したというわけです。

今のところ、Otchy の環境 (Fx 3.0.5 + GM 0.8.2 + WP 2.7) では順調に動作しています。

Written by Otchy in: Development | タグ: , ,
1月
05
2009
3

MySQL のダンプを Gmail でお手軽に定期バックアップ

用意するもの

  • perl
  • cron
  • sendmail (もしくは sendmail ラッパを持った他の MTA)
  • zip
  • Gmail アカウント
  • jcode.pl
  • mimew.pl

対象者

  • 「用意するもの」に書かれているものの意味が分かる
  • perl スクリプトを作成して実行権限を与える方法が分かる
  • 作成したスクリプトを cron に登録する事が出来る

上記にあてはまらない方は、知識を身につけてから再度お越し下さい。

設置

下記のスクリプトを作成して、パスとかを適宜修正します。
※cron から動かすためにパスは全てフルパスで。

#!/usr/bin/perl

require "/path/to/library/jcode.pl";
require "/path/to/library/mimew.pl";

#### Setting
$sendmail = '/usr/sbin/sendmail';
$tmp = '/tmp';
$mysqldump = '/usr/bin/mysqldump';
$zip = '/usr/bin/zip';
$debug = 0;

$dbname = 'your_db_name';
$dbuser = 'your_db_username';
$dbpass = 'your_db_password';

$from = 'mail@from.address';
$to = 'mail@to.address';
$subject = 'Subject of mail';

$boundary = 'BOUNDARYBOUNDARYBOUNDARYBOUNDARY';

#### Header
$header = <<"EOH";
Content-Type: Multipart/Mixed; boundary="$boundary"
Content-Transfer-Encoding: Base64
From: $from
To: $to
Subject: $subject
EOH

#### Backup
($sec, $min, $hour, $mday, $mon, $year) = localtime(time);
$filename = sprintf($dbname . '_%04d%02d%02d%02d%02d%02d.dump', $year + 1900, $mon + 1, $mday, $hour, $min, $sec);
`$mysqldump -u $dbuser --password=$dbpass --skip-lock-tables --skip-extended-insert $dbname > $tmp/$filename`;
`$zip $tmp/${filename}.zip $tmp/${filename}`;
unlink("$tmp/${filename}");

#### File
$filename = "$tmp/${filename}.zip";
open(FILE, $filename);
binmode FILE; # For Win
while (read(FILE, $buf, 1024)) {
        $contents .= $buf;
}
close(FILE);
$base64 = &bodyencode($contents);
$base64 .= &benflush();

#### Body
$body = <<"EOB";
--$boundary
Content-Type: application/octet-stream; name="$filename"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="$filename"

$base64
--$boundary--
EOB

if ($debug) {
        open(MAIL, ">> dbbackup.txt");
} else {
        open(MAIL, "| $sendmail -t");
}
print MAIL qq($header);
print MAIL qq(\n\n);
print MAIL $body;
close(MAIL);

unlink($filename);

スクリプトを試しに動かしてみて、問題ないようならcron に以下を設定します。
※毎日 3:00 AM にメールを送る場合。

00 3 * * * /path/to/script/script_name.pl

これで、DB のダンプが zip 圧縮されて Gmail のメールボックスに毎日たまっていきます。
やったね!

カスタマイズのヒント

mysqldump コマンドのオプション –skip-extended-insert は、ダンプ時に INSERT 文を 1 行ずつはき出す設定です。
ダンプデータをエディタで開いて見る事があるので、可読性を高めるために指定していますが、リストアの速度は劣るので、用途によっては外しましょう。

バックアップデータは Windows で扱う事が多いので、zip を使っていますが、tar に変えてもいいでしょう。

mysqldump の部分を色々と変えれば、PostgreSQL 等の他の DB はもとより、様々なバックアップ用途に使う事が出来ます。
Otchy は、SVN のバックアップにも使用してます。

zip コマンドを工夫すれば、複数ファイルのバックアップも出来るでしょう。

Gmail のアドレスは、userid+suffix@gmail.com の様に、任意のサフィックスを付けても同じメールボックスで受け取る事が出来ます。
たとえば、userid+dbbackup@gmail.com 宛にバックアップを送信するようにして、userid+dbbackup でフィルタすれば、バックアップメールだけ受信トレイに入れずにそのままアーカイブ出来るので、バックアップメールも邪魔にならずに済みます。

備考

今更、jcode.pl ?と思われるかもしれませんが、「おけば動く」という事と、昔からお世話になっていて慣れている、という理由で選択してます。
特に必要性を感じなかったので Subject の日本語化には対応してません。

[追記]すごい事に気がついた!jcode.pl 使ってない!途中で日本語使うのやめちゃったんだな<過去のおれ

Written by Otchy in: Development | タグ: , , ,

Powered by WordPress | Aeros Theme | TheBuckmaker.com