Hatena::ブログ(Diary)

130単位

2008-06-30

高級ランチ再び

スペインが優勝したので、ご馳走していただきました。

ホテルサンルートプラザ名古屋 和ダイニング
http://www.sunroute-nagoya.co.jp/dining/index.htm

"きなこ豚"のお店ですが、気になるメニューがあったので今回はそちらに。

f:id:deeeki:20080630232742j:image:w320

名古屋コーチン親子丼。数量限定。¥1500。

f:id:deeeki:20080630232743j:image:w320

中央の黄身が印象的。この贅沢な卵の量は、人によって少し好みが分かれるところかもしれません。

f:id:deeeki:20080630232935j:image:w320

まぁ店の雰囲気も相まって、非常に美味しくいただけました。ありがとうございます。


…次回食べに行くのは、オリンピックが閉会するころになるんじゃないかという気がします。


関連記事:高級ランチを食す

2008-06-28

某生命保険のくれた占い結果

最近どういうわけか身の回りで占いが流行っているみたいです*1。で、たまたま手元にそんなネタが転がっていたので、そのまま載せてみることにします。『ピタゴラスの大占術』とかいうらしいです。

あなたの運命数は 7 完全星

宇宙を支配する重要な数。神秘・知識・研究を物語る

出発期:29歳
自己の才能や個性を発揮しはじめる時期
発展期:38歳
努力が実を結び発展する時期
充実期:47歳
これまでの成果があらわれ、充実する時期
完成期:56歳
目標を達成する時期
あなたの人生の運勢

この運命数を持つ人の大きな特徴は、社会的な地位確率の可能性が40歳前後にあることです。38歳をメドにメキメキと頭角を現し、人生の経験を積む程に自信が出てきます。自己の目標に向かって一歩一歩確実なステップをふむでしょう。充実期の47歳前後に生涯があるかもしれませんが思慮深く、冷静な判断ですばらしい人生をものにするでしょう。

全体運

<性格>

誠実で、人当たりがよく、思いやりもありますから、誰からも好かれます。

礼儀正しく、理知的な上、もの静かで控えめなタイプです。ひとりで空想にふけったり、音楽を聴いたり、本を読んだりといったことが、いちばん性に合っているロマンチストなのです。常に静かな環境を好み、大声を出したり、どなったりといった行為はきらいます。

実現不可能なことを夢見る空想家ですが、その夢を育てて、将来の仕事に役立たせることもできる人です。現実社会への順応性もあります。直感的な判断が得意で、その鋭いインスピレーションを生かして、個性を伸ばしていくでしょう。

<仕事・金銭運>

細かい分析や調査といった分野で才能を発揮します。コンピューターのプログラマー、経理事務、精密機器のオペレーターなどは、何の苦痛もなくこなせるでしょう。人の指図に従うよりも、自分で仕事を作るタイプでしょう。お金には、あまりこだわりませんが、やりくり上手で倹約家です。

<相性運>

相手との性格の一致を重要に思うタイプで、同じ運命数の〔7〕の人とは、とても良い相性です。

プラスの運命数…〔4〕〔7〕〔9〕

無難な運命数…〔1〕〔3〕〔5〕〔8〕〔11〕〔22〕

まぁ、それなりに当たっているんじゃないかと思います。先のことは分かりませんけど。


以下サイトでそれぞれの運命数について確認ができます。運命数の計算のしかたも載っています。

Pythagoras's fortune-telling
http://hidegorou.hp.infoseek.co.jp/pythagoras/pytha0.html

2008-06-27

PHP 配列型プロパティを動的に扱う

メソッドにて引数で名前を与えて、配列型のプロパティに1つずつ値を格納したい場合。

<?php
class arrayTest
{
    var $arrA = array();
    var $arrB = array();
    var $arrC = array();

    function set($property)
    {
        for ($i = 0; $i < 10; $i++) {
            $this->$property[] = $i;    // Fatal error: Cannot use [] for reading in ...
        }
    }
}
$object = new arrayTest;
$object->set('arrA'); 
var_dump($object);
?>

この書き方だと、「$this->$property」よりも「$property[]」が優先的に解釈され、[]は読み取りには使えない、というエラーになってしまいます。詳しくは以下。

可変変数配列で使用する際には、曖昧さの問題を解決する必要がありま す。つまり、$$a[1]と書いた場合、 $a[1]を変数として使用したいのか、 $$aを変数とし [1] を変数の添え字としたいのかを、 パーサが知る必要があるのです。この曖昧さを解決するには、前者では ${$a[1]}とし、後者では ${$a}[1]とする構文を用います。

PHP: 可変変数 - Manual

ということで、

<?php
    function set($property)
    {
        for ($i = 0; $i < 10; $i++) {
            $this->{$property}[] = $i;
        }
    }
}
?>

このように波括弧をつければエラーは出ず期待通りに動きます。

<?php
    function set($property)
    {    
        for ($i = 0; $i < 10; $i++) {
            array_push($this->$property, $i);
        }
    }
?>

ほか、array_pushを使った書き方。

<?php
    function set($property)
    {    
        for ($i = 0; $i < 10; $i++) {
            $array[] = $i;
        }
        $this->$property = $array;
    }
?>

最も無難(といえそう)な、別の変数配列を作ってから格納する書き方。

2008-06-20

慣れないXMLについてのたわごと

XML(ATOM)形式でパラメータをいくつか付加したURLを記述したくて、

<summary><![CDATA[<a href="http://www.example.com/?id=1&code=1">title</a>]]></summary>

ってな感じのフィードを出力したんですが、ブラウザ(Firefox)で見てみたところ、なにも表示されません。パラメータを1つ、つまり「&」をなくしてみたら、問題なく表示されました。また、「&」の部分を「&amp;」に変えてみた場合も、問題なく表示されました。さっぱりわかりません。

…と、この記事を書くまで悶々とした気分でいたものの、よくよく考えてみれば、単純に他の部分で見落としていた可能性が大きいんじゃないかと思えてきたりしました。他にも&付きURLの記述があって、そこはCDATAセクションで囲ってなかったりとか*1

なんにしても、基本的な知識の不足を早めになんとかしたいところです。手始めに、以下のことはしっかりと記憶しておきたいです。

Within a CDATA section, only the CDEnd string is recognized as markup, so that left angle brackets and ampersands may occur in their literal form; they need not (and cannot) be escaped using "<" and "&". CDATA sections cannot nest.

 上記では、CDATAセクション内では文字列CDEndだけをマーク付けとして認識するので、不等号(より小)とアンパサンドは、そのままの形で出現してよいと記述してある。

no title

…関係ないですが、はてな記法引用記法って入れ子にできるんですね。初めて知りました。

*1:というかまさにこれが原因なんじゃないかと

2008-06-19

ブログチャートをやってみた

blog chart.jp

ブログチャートは個別のブログの特徴や影響力を比較することができるサイトです。

古本買取 姫路市 | 古本買取 姫路 加古川 みのり書房

こういうサービスはとりあえず試してみたくなる性分です。


f:id:deeeki:20080619005340j:image

「LV10」と出ました。

次のレベルまで31ポイントとありますが、6つの指標それぞれが1ポイントとして集計されているんでしょうかね。地道な更新を続けていれば、徐々にでも上がっていくものなのかもしれません。

2008-06-18

SQL 集計関数とテーブル結合

id
ユーザーID (一意)
date
アクセス日 (複数回記録)
area
地域 (可変)

こんなテーブルから、地域ごとのユーザー数を集計したい場合

※ただし、同じユーザーIDでは最新のアクセス日の地域を適用

-- これはダメ
SELECT a.area, COUNT(a.area)
FROM (SELECT DISTINCT ON (id) area 
      FROM tablename
      ORDER BY id, date DESC) a
GROUP BY a.area
ORDER BY count DESC, area ASC

-- これが正しい
SELECT c.area, count(c.area)
FROM (SELECT area
      FROM tablename a
      INNER JOIN (SELECT MAX(date) AS date, id
                  FROM tablename 
                  GROUP BY id) b
            ON a.date = b.date
            AND a.id = b.id) c
GROUP BY c.area
ORDER BY count DESC, area ASC

自力で考え付いたのが上のSQL。いちおう結果は意図したものになってた(と思う)んですが、ORDER BY→DISTINCTしてるあたり、明らかに邪道なやり方だといえるでしょう。

下の正しいSQLに関してですが、まったく思い浮かびませんでした。集計と結合を同時に扱う考え方に、まだあまり慣れていません…。

今日の一言:

SQLにとれないものはない」

2008-06-17

興味と身軽さで距離感が縮まる

小野和俊のブログ:Twitterで就職 - ネットコミュニケーションで仕事を決める時代

従来のスタイルが、まったくの他人同士が初めて会ってガードを上げながら

コミュニケーションしていくものだったのに対し、

以前から愚痴も嬉しかったことも聞いている知り合いが、

会社に興味を持って応募してきてくれたような感じで話が進んでいく。

しかも実際にはお互い一度もあったことがないのに、である。

記事の内容もさることながら、さらに面白いというかすごいと思ったのがコメント欄。「エンジニアの募集要項にて年齢・性別を要求しているのはどうなのか」というコメントに対し、わずか2時間後のレスで「ご指摘の通り」と直すのを即断をされています。*1

Twitterでの採用活動をうまく実現させているのには、このような精神的なフットワークの軽さを持っているのが大きいのだろうな、と感じました。


そんな流れでアプレッソのWebサイトをのぞいてみたところ、どうやら来月に名古屋でセミナーが行われる模様。小野さんは最初のセッションで講演されるようです。

『DataSpider事例紹介セミナー』

■ 名古屋会場

開催日 2008年7月11日(金) 13:30〜  (13:00開場)

会場 ミッドランドスクエア(名古屋駅前)

定員 80名 (無料事前登録制)

もしも平日開催でなければ、タイミングに乗っかるかたちで申し込もうとしていた、かもしれません。*2

時間が自由に使えてフットワークの軽い人は、ぜひ行ってみるといいのではないかと思います。

*1:そして実際に要項からなくなっています

*2:知識の面でついていけるのかという不安はありますが…

2008-06-16

フォクすけを見て感じたこと

Spread Firefox | Download Day 2008
http://www.spreadfirefox.com/ja/worldrecord/

昨日、Firefox3(RC版)をインストールしたという記事を書いてみたのですが、どうやら正式リリースは明日6/17のようですね。ダウンロード数のギネス世界記録へ挑戦なんていう催しもあるみたいです。

Download Day 2008

で、↑のバナーを目にしたとき、ふとデジャヴっぽい感覚に陥りました。何故だろうと少し考えてみたところ、あるキャラクターが昔の記憶からよみがえってきました。




クター©ギガ連射


クターです。

もう10年近くも前になりますが、一気ノミとかナワトビとかけっこう遊んでたりしました。いやはや懐かしいです。

クター www.kutar.com
http://www.kutar.com/

2008-06-15

Firefox3へ移行 & 現在利用中のアドオン

Firefox2を使ってて、最近どうも挙動がおかしいことがあったので*1、3へ移行してみました。

次世代ブラウザ Firefox - Firefox 3 Release Candidate ダウンロード 
http://www.mozilla-japan.org/products/firefox/rc/

今年の3月頃はまだ対応していないアドオンが多かったですが、正式リリース間近ということもあってか、現状のままでほぼ問題なく移行できました。

そんなわけで、整理と確認もかねて、自分が現在利用しているアドオンをまとめてみます。


全部でちょうど10個でした。

移行にあたり、速くて快適らしいSafariも試してみようかとしたんですが、Win版ではGreaseKit(Greasemonkeyみたいなの)が使えないようなので*2、結局Firefox3に落ち着きました。


※追記

参考になる記事を紹介。いくつかのアドオンのFx3対応/非対応が確認できます。

Firefox 3.0 RC に Googleツールバーが対応したようです + 使用中の拡張リスト - [He]
http://d.hatena.ne.jp/b4-tt/20080615/1213533881

関連記事:

AutoPagerize体験

*1:タブを移動してもタイトルとかがそのまま

*2:となるとAutoPagerizeが使えない

2008-06-14

はてブ数&リンク取得ブックマークレット

Webサイトや記事を紹介するとき、はてなブックマーク数も同時に表示させたいことがたまにあります。しかし、いかんせん表示用のURLがなかなか覚えられなくて、その都度調べるということを繰り返していました。これでは非効率。

というわけで、今後のためと、JavaScriptの学習もかねてブックマークレットを作ってみました。

javascript:(function(){l=document.URL;clipboardData.setData('Text','<a href="'+l+'">'+document.title+'</a> <a href="http://b.hatena.ne.jp/entry/'+l+'"><img src="http://b.hatena.ne.jp/entry/image/'+l+'"></a>');})();

コピーできるのは「リンク付き記事タイトル」+「リンク付きはてブ数」となってます。IEのみで動作します。

わかったこと
  • 「document.URL」の「URL」は大文字でないといけない
  • 「clipboardData.getData("Text")」によってクリップボードの内容が盗まれる可能性がある*1
  • 「function()」とかを書かないと、実行したときブラウザの画面に「true;」と表示される*2

以下、参考にした記事。さっそく使ってみました。

ブックマーク数を画像で取得する API の公開について - はてなブックマーク日記 - 機能変更、お知らせなど

JavaScriptによるクリップボード操作

ニコニコ動画サムネイル作成ブックマークレットを作り直したよ - 敷居の先住民

*1インターネットオプションセキュリティ→レベルのカスタマイズから無効にできる

*2:仕組みが分からないのでとりあえずおまじないとして覚えておきます

2008-06-13

PostgreSQL CSVファイルからのインポート

EC-CUBEのカスタマイズをしていると、テストデータを作成して動きを確認したいことがよくあります。しかしpgAdminでは、プライマリキーのないテーブルには直接データを作成・編集することができません。参考

それでは、EXCELにて作成したcsvファイルをどうにかインポートできないものか。調べてみたところ、メニューなどからのインポートはできないみたいですが、「COPY」というSQLコマンドを使えば可能なようです。

COPY : PostgreSQL日本語ドキュメント
http://www.postgresql.jp/document/current/html/sql-copy.html

「tablename」という名前のテーブルに「testdata.csv」からインポートする場合のSQL例。

COPY tablename FROM 'C:/test/testdata.csv' WITH CSV;

OSWindowsであっても、パスの指定は「/」で問題ないようです。ただし以下の場合はだめでした。

-- 「\」1つではエスケープされるのでだめ
COPY tablename FROM 'C:\test\testdata.csv' WITH CSV;
-- WARNING:  nonstandard use of escape in a string literal
-- ERROR:  could not open file "C:testtestdata.csv" for reading: No such file or directory

-- 「\」2つでもなぜかエラーが出てだめ、ではなくて、警告が出るが実行はOK
COPY tablename FROM 'C:\\test\\testdata.csv' WITH CSV;
-- WARNING:  nonstandard use of \\ in a string literal
-- HINT:  Use the escape string syntax for backslashes, e.g., E'\\'.

-- ヒントにあるように「E」をつければ警告なしで実行OK
COPY tablename FROM E'C:\\test\\testdata.csv' WITH CSV;

-- パスに日本語が入っているとだめ(マルチバイトへの何らかの対応が必要?)
COPY tablename FROM 'C:/Documents and Settings/User/デスクトップ/testdata.csv' WITH CSV;
-- ERROR:  could not open file "C:/Documents and Settings/User/デスクトップ/testdata.csv" for reading: No such file or directory

あと、文字コードがファイルとDBで異なっていてもエラーとなります。

-- ERROR: invalid byte sequence for encoding "UTF8"

EXCELで作成したCSVだとShift-JISになってしまうので、エディタで変換して保存し直すか、

SET client_encoding TO 'SJIS';
COPY tablename FROM 'C:/test/testdata.csv' WITH CSV;

とすれば大丈夫なようです。以下サイトが参考になります。

tomimemo - postgresqlメモ
http://www3.atwiki.jp/tmogmni/pages/21.html#id_9e61ee0c

途中、パスについての部分は記憶を頼りに書いたので間違いがあるかもです。発覚次第訂正いたします。

※6/14追記 再度試した結果、加筆・修正しました。


4798123358
PostgreSQL徹底入門 第3版

関連記事

2008-06-12

プログラマにとって良い会社とは

プログラマが自分の技術力を活かして働くことができ、スキルアップでき、風通しがよく気分良く働ける会社の見分け方と、その具体例を教えてください。 - 人力検索はてな
http://q.hatena.ne.jp/1212456813

via : まなめはうす

id:whtiecloud氏が最近似たような記事を書いていたなぁと思いつつ、興味深く読んでいました。うち、自分が印象に残った部分をピックアップしてみます。すこし改編させてもらっています。

  • 自分が動いて(回りも巻き込んで)社内を変えていくことが出来る会社
  • ブログメーリングリストなどで良い発言を沢山している人がいる会社
  • 面接をするような部屋にも技術書やちょっとした遊び心がある会社
  • 定期的に技術系の(オープンな)勉強会がある会社
  • 「御社が使っているソースコード管理システムを教えてください」と聞かれて答えられない社員や経営陣がいない会社
  • 技術者による面接があり、技術面を問う筆記、面接試験がある会社

半分以上は9番の回答者さんのものです。「思いっきり主観」なのだそうですが、視点が面白いうえに、非常に的を得ているように感じられました。

2008-06-11

EC-CUBE 購入手続きキャンセル処理のバグ?対応

購入手続きの一連の処理は、セッションDBを同時に見ながら進んでいきます。そのため、セッションで管理されているカート内の商品が購入手続き中に変更されてしまうと、意図せぬ動きとなるおそれがあります。

元々のEC-CUBEの機能として、購入手続きキャンセルの仕組み*1は存在しています。ただし、今回カスタマイズしている影響で受注関連テーブルが増えているため、本当に問題なくキャンセルされるかどうか、念のため調査をしてみることに。その結果、確認→完了の部分で、数量が変わっても受注できてしまう現象が発生しました*2

以下、購入手続き中に通る、通常アクセスかどうかをチェックするメソッド。実際に数量変更したとき、$retにtrueが入ってきてるのは確認できたのですが、なぜかページ遷移が行われません。

<?php
    function sfCheckNormalAccess(&$objSiteSess, &$objCartSess) {

        // (省略)

        // カート内が空でないか || 購入ボタンを押してから変化がないか
        $quantity = $objCartSess->getTotalQuantity();
        $ret = $objCartSess->checkChangeCart();
        if($ret == true || !($quantity > 0)) {
            if (defined("MOBILE_SITE")) {
                header("Location: ". MOBILE_URL_CART_TOP
                       . "?" . session_name() . "=" . session_id());
            } else {
                header("Location: ".URL_CART_TOP);
            }
        }
        return $uniqid;
    }
?>

そんなわけで、header関数マニュアルを参照。

PHP: header - Manual
http://jp2.php.net/header

説明を読む限り、header関数の前に何らかの出力があることが原因のようなのですが…そんな細かい部分を探し出すのは正直しんどい。と思った矢先、ふとアイデアが浮かんだので、1行だけコードを加えてもう一度試してみました。そしたらなんと、正常にページ遷移されたのです。

<?php
    function sfCheckNormalAccess(&$objSiteSess, &$objCartSess) {

        // (省略)

        // カート内が空でないか || 購入ボタンを押してから変化がないか
        $quantity = $objCartSess->getTotalQuantity();
        $ret = $objCartSess->checkChangeCart();
        if($ret == true || !($quantity > 0)) {
            if (defined("MOBILE_SITE")) {
                header("Location: ". MOBILE_URL_CART_TOP
                       . "?" . session_name() . "=" . session_id());
            } else {
                header("Location: ".URL_CART_TOP);
            }
            exit;                     // ← exit処理を追加
        }
        return $uniqid;
    }
?>

ただ単に、マニュアルに載っていたコード例のようにexit処理を追加してみた、というだけです。リダイレクトされるのであれば意味のないように思えてしまうのですが、どういうわけかうまくいくようになりました。

ひとまず問題点が解決できたのは良かったのですが、解決に至った理由が全く理解できていないので、時間があれば詳しく調べてみたいところです。

※ec-cube version 2.1.2

*1:カート内の変更が発覚すると、購入前の画面に戻る

*2:他の配送先選択や支払い方法選択画面では問題なし

2008-06-10

6/10 知ったことメモ

  • PHP POST後の処理
    • ポストバック…POSTしたあと(の画面)のこと
    • 二重に更新されるのを防ぐには、画面表示前にPOSTデータをunsetする
    • 他ページからの遷移もある場合は、リダイレクトして初期状態に戻す
  • リリース後のソース修正
    • 追加部分にわざわざ日付等のコメントを残す必要はない
    • バージョン管理ツールのログで確認すればよい

理由も含めて様々な考え方に触れていく中で、少しずつ、より適した選択をできるようにしていきたいです。

某普通駅への終電の確認

ラーメンはボリュームがあって美味しく、内容はほとんどついていけないけど貴重なお話*1も聞けました。誘っていただいてありがとうございます。が、終電に間に合わず1駅ぶんおよそ30分ほど歩く羽目に…。

というわけで今後のために調べてみました。完全に自分用。

乗車駅平日休日
名古屋23:3923:22
伏見23:3323:09
23:2723:06
上前津23:3023:06

こちらのサイトを利用しました。

終電案内|駅探
http://www8.ekitan.com/norikae/Syuden1Servlet?AN=0

*1:熱の入りすぎた議論、ともいえる

2008-06-08

将棋 働かぬ角と塞ぐ角

休出にて将棋。2週間おきに指すサイクルになってます。

先手。序盤の歩交換で失敗して気づいたら相当な劣勢に。

f:id:deeeki:20080608021756j:image

▲2六歩    △3二金    ▲7六歩    △4二銀    ▲4八銀    △4一玉
▲4六歩    △5四歩    ▲4七銀    △5二飛    ▲6八玉    △5五歩
▲5八金右  △3四歩    ▲7八玉    △6二銀    ▲3六歩    △7四歩
▲9六歩    △7三桂    ▲3七桂    △6四歩    ▲1六歩    △1四歩
▲6六歩    △6三銀    ▲6七金    △5四銀    ▲6八銀    △6五歩
▲2五歩    △3三銀    ▲5六歩    △同 歩    ▲同 銀    △6六歩
▲同 金    △3一角    ▲7五歩    △6五歩    ▲7六金    △7五歩
▲7七金    △5五歩    ▲6七銀引  △6二飛    ▲7四歩    △6六歩
▲同 銀    △6五桂    ▲同 銀    △同 銀    ▲7三歩成  △5二飛
▲6三と    △5一飛    ▲2四歩    △同 歩    ▲5三歩    △4二銀打
▲6二歩    △5三銀    ▲6一歩成  △同 飛    ▲5二金
まで65手で先手の勝ち

図の局面、後手としては△6六歩が良かったのではないかと思います。中央の銀をさばくかたちに持っていけば、位を活かして難なく攻めが続いたことでしょう。

しかし実戦はここで△6二飛。次の▲7四歩が痛恨となって一気に逆転模様に。そこからは急転直下。ほとんど歩だけの攻めで勝ってしまったという印象です。

相手が歩を持ち駒にしたとき、自陣の桂馬の頭に打たれる筋は常に警戒する必要があります。


※棋譜再生は以下のソフトで可能です

Kifu for Windows

2008-06-07

Subversion 更新時のリターンコードの意味

TeraTermにてコマンドで更新を行っていたところ、見慣れない「G」というコードの表示が。気になったので調べてみました。

updateの出力の意味

U 更新

A 追加

D 削除

R 置き換え

G マージされた(問題が起こらずに)

C 衝突した

programming/subversion - PukiWiki

意味しているものは「マージ(=Merged)」のようです。ではなぜ「M」でなく「G」なのか? おそらく、「M」はステータス確認時のコードで「変更済(=Modified)」として使われているため、重複を避けて「G」になったのではないかと思われます。

2008-06-06

PHP 文字列で扱う複数フラグのマージ ビット演算編

PHP: ビット演算子 - Manual
http://jp.php.net/manual/ja/language.operators.bitwise.php

おそらく本来の使い方ではないのだろうと思いますが…試しにやってみました。排他的論理和に関してはどうもうまくいきませんでした。また、「+=」や「.=」のように複合演算子としても使えるようです。

<?php
$str1 = '10101';
$str2 = '00110';

//OR
$str3 = $str1 | $str2;
echo $str3;         // '10111'

//AND
$str4 = $str1 & $str2;
echo $str4;         // '00100'

//XOR
$str5 = $str1 ^ $str2;
echo $str5;         // '^A^A^A'


$str6 = '01001';
$str7 = '01110';

//OR
$str6 |= $str1;
echo $str6;         // '11101'

//AND
$str7 &= $str2;
echo $str7;         // '00110'
?>

2週間前の記事とやりたいことはほぼ同じです(論理和によって可能)。比べてみてもはるかに単純明快です。特に問題がないようであれば、こちらのやり方で進めてみようと思います。


関連記事:

PHP 文字列で扱う複数フラグのマージ

2008-06-05

NHKでビジネスメールのコツを学ぶ

「成功をつかむメール術」(5月31日放送)|めざせ!会社の星|NHK名古屋放送局
http://www.nhk.or.jp/kaisha/archives/080531.html

より抜粋。一般的なルールというよりも、ちょっとしたコツが中心ですかね。

  • 読み手のことを考慮して書く
  • 送信前に読み返す
    • いったん「下書き」として保存して読み返す
  • 件名は用件+名前で柔らかさを
  • 返信の件名は流れを明確にするため「Re:」で
  • 件名の先頭に2文字分の空白を入れて注目させる
    • ただし重要な用件のときのみ
  • 送信者名は英語よりも日本語表記が分かり易い
  • アドレス帳へは「様」は付けずに登録
    • 面倒なので登録すらしない→返信での自動登録を活用
  • 用件は箇条書きでわかりやすく
    • 「■」「・」などを見出しとして利用
  • 1行は全角25〜35文字
  • 段落ごとに1行空ける
  • 「P.S.」(追伸)で自分をアピール
  • 末尾に気の利いたネタを仕込む
    • 例:「今日は何の日?」
    • さらに相手(の趣向)によって内容を変える
  • 署名で自分の名前を会社名より上に書く
  • 固い表現を意図的に避ける
    • 「○○様」→「○○さま」「致します」→「いたします」
  • 誤送信した際は、侘びとともに破棄していただくよう伝える
    • 謝るときはチャンス(ユーモアをもたせてみる)

これらのコツをどう捉えるかは人それぞれ、だと思います。相手や用件に応じて、柔軟に書き分けられる能力を身につけていきたいものです。

以下記事も参考にどうぞ。

わかりやすいメールの書き方:BochiBochi:So-net blog
http://bochibochi2.blog.so-net.ne.jp/2008-05-31-9

関連記事:

メーラーの件名未入力チェック比較

メールの署名を考え中

2008-06-04

ややこしい処理のコード(※超個人的)

EC-CUBEプロジェクト。の、仕様変更に対応したコードを考えてました。自分用のメモであることをあらかじめお断りしておきます。すいません。

現状のざっくりとした仕様の説明
  • 設定した区分(クール便など)による個口分割対応
  • 個口ごと送料算出対応
  • 複数配送先対応
  • 複数配送業者対応(ただし1受注で1配送業者にまとめる)
以下コードの説明
  • お届け先選択ページにて、submitしたあとのPageクラスの処理
  • Helperクラスはいろいろ拡張済み(処理はメソッド名で察してください)
  • 個口用のテーブルを新たに作成済み(個口ごとのデータ類はそちらへ)
  • 関係ない部分のコードは省略
  • 文法エラー確認したのみ
  • やたら長いのでphpのほうは"続き"で

html(配送先選択部分のみ簡易版)

<form method="post" action="">
    <input type="checkbox" name="deliv_check[]" value="-1"/>    <!--本人-->
    <input type="checkbox" name="deliv_check[]" value="1"/>     <!--別1-->
    <input type="checkbox" name="deliv_check[]" value="2"/>     <!--別2-->
</form>

続きを読む

2008-06-03

コーラ値段調査とその経緯

(お徳用ボックス) コカ・コーラ ゼロ 1.5L×8本
(お徳用ボックス) コカ・コーラ ゼロ 1.5L×8本


¥1,880ですが、その値段で販売してるのはAmazonでなくマツキヨで、2セット買わないと送料無料にはならないみたいです。

  • 1セット → ¥2,370
  • 2セット → ¥3,760

楽天だともう少し安く買えるっぽいです*1。ただし同じように2セットという条件付きではあります。


常時募集中の、面白い社内ルール。速攻で却下されるだろうと思いながらも提案してみた「ドリンク飲み放題」ですが、なぜか採用される運びとなったようです*2。たまたま耳にしてなんとなーく印象に残っていた「コーラコーディングが速くなるらしい」というエピソードが、どうやら琴線に触れたみたいです。

その元ネタ?というのがこちらです。スライド4枚目に注目。

ke-tai.org > Blog Archive > 第33回PHP勉強会で使用したスライド資料「モバイル版Googleマップのちょっと進んだ使い方」
http://ke-tai.org/blog/2008/05/26/mobilegmap/

プレゼンに関しては、実際にストリーム中継でやっていたのを興味深く拝見していました。特にアニメーションGIFについては、モバイルをやらなくても知っておいて損はなさそうな面白い技術であるように感じました。

ちなみに勉強会の動画は以下から見ることができます。

第33回PHP勉強会に参加してきました + 動画公開 - おぎろぐはてな
http://d.hatena.ne.jp/i_ogi/20080524/1211651375

*1:¥3,500ちょいくらい

*2:とりあえず6月のみ

2008-06-02

一日中会議

およそ8時間、みっちりとやりました。EC-CUBEのプロジェクトで。

そんでもって、悪い予感が当たって今までの半分以上の作業が水の泡に。ある事情でしばらく保留になっていたクレジット決済機能対応の影響によるものなので、致し方のないところではありますが…。やり方次第では、もう少し早く方向転換することも可能だったとは思います。

原因を考えると、ホウレンソウが不十分だったことかな、と。設計段階における検討事項、決定した仕様、そして各開発者の進捗。これらを毎日、(たとえ整っていなくとも)何らかのドキュメントにして共有する意識が、各々に必要だったのではないかと思います。

まぁ、過ぎた時間は戻りません。ので、あらためて優先順位を振り直し、個人的な見通しを立てる訓練もしつつ、タスクをこなしていきたいと思います。