Hatena::ブログ(Diary)

130単位

2008-05-30

続・とあるややこしい処理に関するメモ

2週間前の、EC-CUBEのカスタマイズに関する作業メモのエントリ。その後の報告も兼ねて。

まず、「複数配送先への対応」というさらに厄介な仕様が追加されたせいで、スケジュールが延びてしまっています。その他にも細かい仕様追加がいくつかあったりして、未だ先が見えないままでいます。

またしても個人的なものになってしまいますが、再びタスクを分割しなおして、全体を俯瞰してみたいと思います。

  • データベース
    • 個口関連テーブル新規作成(済)
    • 個口テーブルに配送先IDカラムを追加
  • モジュール
    • 個口分割処理(済)
    • 個口-区分別送料算出処理(済)
  • 購入処理ページクラス
  • 購入処理テンプレート
    • 配送先ごと個口内容表示
    • エラー表示
    • 冗長箇所の表示制御
  • テストデータ
    • パターン網羅商品テストデータ作成
    • パターン網羅送料テストデータ作成(ほぼ済)

テストデータ以外はうまくいけば2日で終えられそうな気はしていますが…。ただ他の画面の修正も入ってきそうなので、余裕のない状況はまだまだ続きそうです。

実は来週の頭に大きなミーティングが入っていまして。その結果次第では、今までの作業の半分以上が無に帰す可能性もなきにしもあらず。無事に済むのを願うばかりです。

2008-05-29

採用ページに意表を突かれた

http://exbridge.jp/recruit.html


お、ゴードン・ベル。堂々とインスパイアされているのが素晴らしい(笑)

『ウェブ時代 5つの定理』を読んだ人であれば、ほぼ間違いなく気づくでしょう。そうでなくても、プログラムが好きな人に対しては何らかプラスの印象は残せそうです。

少し気になったのは「理想の会社」にしたあと。「get(キャピタルゲイン)」ではなんとなくイメージが沸きにくいので、さらに何かひとひねりあるといいかと思うんですが…。

※5/30追記

さっそく修正して更新されたみたいです。インクリメントとか増えてます。

2008-05-28

宣伝と感想

デザインはかなりイイと思います。あとはもう少し"動き"がほしいですかねぇ。

簡単に思いつく提案としては、天気のアイコンが動いたりとか、定期的にウィジェットの色が変化したりとか。機能面でいえば、スケジュールの編集/更新ができたりとか。

社長から戦略について聞かされましたが、いやはやなるほどなぁと感心させられるものでした。若干フライング気味のような気がしなくもないのですが、まずは0から1にすることが大事なのでしょう、おそらく。

2008-05-27

社会人として大切な3つの要素

  • 人間関係を良くするための礼儀
  • 自らの仕事をやり遂げる責任感
  • 知識や技術に対する向上心

これらが欠けてはいけない、のだそうです。

というわけで前回の記事につづき合宿のメモ。ヒューマンスキル編です。

  • 多様性が組織の存続にかかわる
  • いろんな人がいれば、新しいメンバーにとって「誰かには合う」という状況ができる
  • 理想に近づく前に、まずはダメなところをなくす
  • 社内の問題点は皆で解決する
  • 問題を放置していると、そこから崩壊していく(割れ窓理論
  • 自分の役割のひとつ上を想像して行動する

経験を積んだ人にしか言えないような意見が飛び交う一方で、それでも一概に答えが出せない議論が続いたりしました。会社というのは"人"あってのものでもあるわけで、やはり相当に奥深く、難しいテーマであるようです。

生の声からビジネス戦略に触れる

朝まで生テレビ』を模して、社員が一同に会して朝まで徹底的に話し合う合宿が行われた。営業戦略や製品戦略といったビジネス面から、人格向上や社内の雰囲気作りといったヒューマンスキルに及ぶ部分まで、幅広い内容。特にビジネス面での具体的な戦略に関しては、非常に勉強になった。

以下、メモの中から一部抜粋。

  • 提案力を高める(製品で何ができるか、どうニーズとマッチさせるか)
  • エンジニアのサポート(営業への同行、提案書の作成支援)
  • 取引先やエンドユーザーとの接点を持つことで学ぶ
  • 製品が売れるためには具体的な実績が必要
  • 資本金や新聞掲載がアピールになる
  • 娯楽からビジネスに発展する
  • 急成長のためには、時代の流れに乗る必要
  • 共に流れに乗れるパートナーに出会うために新規営業に力
  • 名古屋は土地柄もあってなかなかきびしい市場
  • きびしい市場で着実に結果を出すことで、引き合いを得ていく

普段まだ開発を学んでいる段階の自分にとっては、得るものはものすごく大きかったように思う。貴重な機会に参加させていただいたことに感謝しつつ、これからも向上心を持って日々取り組んでいきたい。

2008-05-25

午前2時半の将棋

f:id:deeeki:20080525100257g:image

2週間ぶりの将棋。某徹夜合宿の休憩中に指したもの。駒が自然に前進するかたちでうまく攻めることが出来ました。

▲2六歩    △3二金    ▲2五歩    △4二銀    ▲2四歩    △同 歩
▲同 飛    △2三歩    ▲2八飛    △3四歩    ▲3八銀    △3三銀
▲3六歩    △3一角    ▲3七銀    △1四歩    ▲7六歩    △5二飛
▲6八玉    △5四歩    ▲7八玉    △5五歩    ▲5八金右  △5六歩
▲4六銀    △6四角    ▲5六歩    △同 飛    ▲6六歩    △7四歩
▲6八銀    △7三桂    ▲6七金    △5二飛    ▲3七桂    △8四歩
▲5三歩    △8二飛    ▲5六金    △4二銀    ▲6五歩    △5三角
▲1一角成  △3三桂    ▲5五香    △6二銀    ▲6四歩    △5二金
▲5三香成  △同銀右    ▲6三歩成  △同 金    ▲3五歩    △同 歩
▲3四歩    △3六歩    ▲3三歩成  △同 銀    ▲4五桂    △4二銀右
▲5五桂    △6二金    ▲3三桂成  △同 金    ▲7一銀    △7二飛
▲6二銀成  △同 飛    ▲6三金    △6一飛    ▲3三馬    △5二銀
▲6二歩    △8一飛    ▲5二金    △同 玉    ▲6三銀
まで77手で先手の勝ち

図の局面では、飛車か角どちらで歩を取っても、次に桂馬での両取りがかかってしまいます。後手としては、▲3七桂と飛ばれた時点で、次の▲4五桂は多少なりとも警戒する必要があります。陣形が整っていないうちは、△4四歩または△4四銀とあらかじめ受けておくのが良いかと思います。

関連記事:

休出ついでに将棋を愉しむ

111単位 最高峰の戦い

2008-05-23

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

今日書いたコードをさらしてみます。

フラグ(マスタ) → 1:われもの, 2:水濡, 3:逆積, …

商品Aのフラグ → 1(わ)
商品Bのフラグ → 1(わ),3(逆)

ってあって、ひとつの荷物としてまとめたときに

荷物(A+B)のフラグ → 1(わ),3(逆)

としたい場合(「われもの」が重複しないように)。

<?php
$s_products[0] = '1';
$s_products[1] = '1,3';

$s_package = '';
foreach ($s_products as $val) {
    mergeStrFlg($s_package, $val);
}
echo $s_package;  // "1,3"

function mergeStrFlg(& $s_base, $s_add, $s_separator = ',') {
    $arr_base = explode($s_separator, $s_base);
    $arr_add = explode($s_separator, $s_add);

    foreach ($arr_add as $val) {
        if (!in_array($val, $arr_base)) {
            array_push($arr_base, $val);
        }
    }

    sort($arr_base);
    $s_base = implode($s_separator, $arr_base);

    if ($s_base[0] == $s_separator) {
        $s_base = ltrim($s_base, $s_separator);
    }
}
?>

うーん、明らかに無駄が多いですかね。あと引数がnullとかだった場合にちゃんと動くのかどうか…。というか、フラグの持ち方の設計から考え直すべきかもしれません。

まぁ、php標準関数引数の順番に少しだけ詳しくなれたのは良かったのかなー、と。

※追記

参照渡しにし忘れてたのと記述ミスの修正、および使用例を追加しました。

※さらに追記

フラグ」ではなくて「区分」が正しい言い回しかもしれません。

2008-05-21

TODOリストから始まってあれこれ

昼休み中にTODOリスト関連の記事をなんとなく巡回していました*1。本日はそれについて書こうと思っていたのですが、紹介したい元記事が今現在落ちているためやめることにします。

PHPによるタスク管理ツール

で、そんな中見つけたのがこちらのサイト。

タスク管理・バグ管理なら OpenTask(オープンタスク) [株式会社サイブリッジ] 
http://opentask.jp/

最近になって、自社でWebベースの管理ツールの導入を検討しているらしい感じだったので、アンテナに引っかったという次第。

言語はPHP。デモサイトを触ってみたところ、機能はシンプルで直感的にわかりやすいデザインという印象。比較的小規模なプロジェクトに対しては、十分な効果が得られるのではないでしょうか。

Redmine

ただ、実際には先に候補に挙がっていたRedmineというツールでほぼ決まりの模様*2

たしかにOpenTaskに比べて高機能ですし、Subversionなどと連携可能という大きなメリットもあります。それに個人的な思いとしても、全く経験のないRubyに触れておくのは将来的にプラスにはたらくような気がします。

そんなわけで、以下のサイトを読みつつ徐々に慣れていければと思います。

連載:Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!|gihyo.jp … 技術評論社

*1:最近毎日のようにイレギュラーなタスクが入るため

*2via : http://twitter.com/xbrg_koba/statuses/816445393

2008-05-20

「読書メーター」に登録

読書メーター - あなたの読書量をグラフで管理
http://book.akahoshitakuya.com/

読書メーターとは?

最近読んだ本のページ数や冊数をグラフにしてあなたの読書量を記録・管理するwebサービスです。

http://book.akahoshitakuya.com/about

f:id:deeeki:20080521005155j:image:w150,right

さっそく登録してみました。

読書メーター - deeekiさんの読書メーター

「ページ数」に着目したのと、さらにそれをグラフ化したところが新しくて面白いと感じました。グラフにちょっとした動きがあるのも何気にイイと思います。

入力項目は「読了日」と「コメント(省略可)」のみというシンプルなつくりで、書籍の登録に手間はかかりません。全体的にレスポンスも早く、いまのところ快適に使えます。気軽に読書記録をつけたいって方に特におすすめです。

2008-05-19

ユーザーアカウントを複製して削除するときの注意

手違いによって自宅PCにあった収支のデータ(約半年分)が消えてしまい、かなり凹んでおります。戒めの意味も兼ねて、その経緯をメモ。

もともと「D:¥My Documents」をマイドキュメントのターゲットフォルダとして利用し、データ類は主にそこに保管していました。で、かれこれ5年も前にセットアップした際のユーザー名が以前から気に入っておらず、つい最近アカウントの変更をしてみたのでした。

  1. ユーザーアカウントを変更したい
  2. ユーザーアカウントを複製
  3. 複製した新しいユーザーアカウントに乗り換え
  4. マイドキュメントのターゲットも同じ場所に
  5. Cドライブの容量が少なくなってしまった
  6. 古いユーザーアカウントは削除しよう
  7. 一度削除を試みるも、何かが使用中だかで失敗
  8. 再実行したところ、削除成功
  9. あれ、なんかいろいろ消えてる ←いまここ

具体的にいうと、マイドキュメント直下のファイルと、「Work」と名のつけてたフォルダ以下だけがなぜか消えてしまいました。それ以外の例えばマイピクチャなんかは無事でした。

まあでも、ユーザーアカウントを削除するときには「データを保存するかどうか」の確認はちゃんとあったんですよね。それを無視して進めた自分が悪いわけです。どうせ消すだろうし容量増やしたいから、という安易な考えが大きな災いのもとでした。

教訓:保存できるものは保存しておくべし

…至極当たり前ですね。

2008-05-17

今日調べたデザイン関連記事

Blueprintでのレイアウトデザインを試みています。ただ慣れない分野なので、調べないといけないことばかり。結局実践はほんの少ししか出来ませんでした。整理もかねて、それぞれリンクのかたちで残しておいてみます。

Brueprint

Blueprint Grid CSS Generator

レイアウトのカラム数を決めるとgrid.cssを自動生成してくれるジェネレーター。

Blueprintcss Tutorial 和訳 - minorio のプログラミング・メモ
Blueflavor: BlueprintCSS 101 和訳 - minorio のプログラミング・メモ

非常にありがたいチュートリアルの日本語訳。ただしどうやら以前のバージョンのものらしく、cssファイルのパスが微妙に違ってるようです。

blueprint

こちらは最新バージョンの簡単なインストール手順など(全記事数が4で更新とまっちゃってますが…)。

デザイン関連の参考記事

XHTML・CSSコーディングガイドライン | d-spica | ホームページ制作・ウェブサイト制作・Webデザイン

「Strict」でコーディングする際に参考になりそうな資料。

正しく、早く、美しいコーディングを実現するために踏むべき5つのステップ:::STOPN’ LISTEN:::

検証も含めた全体的な手順についてのわかりやすい資料。

今webサイトは幅何pxで製作されているのか | Liquid Paper Clips

こうしてみると、Blueprintのデフォルトの横幅はちょうど最適なサイズといえそうです。

覚えておくと便利なバランスのよい縦横比とバナーサイズ :: Love & Design ::

比率が使われている例も示されていてためになります。

その他

ez-HTML

HTMLエディタこちらで評価がよかったので試してみたのですが、デフォルトで「Ctrl+Home」が効かず、自分には合わない気がしました。

CSS 概説 | Media Types in CSS  @import 規則

インポート時のメディアタイプの指定方法。(ex:「@import url("print.css") print;」)

2008-05-16

JS 初歩のメモ

  • body要素を得る方法
    1. そのまま…「document.body」
    2. id名から…<body>タグにid属性をつけて、「document.getElementById('id名')」
    3. タグ名から…「document.getElementsByTagName('body')[0]」

2週間くらい前にJavaScript参考書を1冊読み終えてたのですが、もうすっかり忘れてました。やはり身につけるには書籍よりも実践することが大切だと感じました。

2008-05-15

待ち画面作成にbusy.jsを試してみる

busy.js (loading indicators)
http://www.netzgesta.de/busy/

via : 指定したHTMLエレメントをローディング中にする際に便利な「busy.js」:phpspot開発日誌

使ってみて気づいたこと。JavaScriptは超素人なので見当違いもあるかもです。

  • 動作中、適用範囲内にあるリンクやボタンは押せなくなる
  • でもselectタグやembedタグには効かないっぽい
  • ページ全体に適用するときは第一引数に「document.body」を指定
  • サイズとかの数値はinteger型で指定する(「'」は不要)
  • removeメソッドを実行するとオブジェクト自体が消滅する

んで、もともと用意されている5種類の動作タイプを確認できる簡単なデモを作ってみました。配布元サイトのソースをほぼそのまま持ってきただけですが、よろしければどうぞ。

http://deeeki.blog6.fc2.com/blog-entry-1056.html

f:id:deeeki:20080516002139j:image:w150


※5/24追記

cvi_busy_lib.js is distributed under the Netzgestade Non-commercial Software License Agreement.

License permits free of charge use on non-commercial and private web sites only under special conditions (as described in the license). This license equals neither "open source" nor "public domain". There are also Commercial Software Licenses available.

http://www.netzgesta.de/busy/

ライセンスに関してですが、非営利かつ個人的な利用のみ可能ということみたいです。

2008-05-14

とあるややこしい処理に関するメモ

EC-CUBEのカスタマイズをしています。ものすごく費用対効果が悪いであろう、ものすごく複雑な送料算出処理を、どういうわけか作ることになってしまっています。まぁ、これも経験であると(いい意味で)開き直ることにしました。

スケジュールの線は来週末まで引いてもらっているのですが、果たしてできるのかどうか、今のところさっぱり読めません。というわけで、少しでも見通しを立てるために、タスクを分割したものを書き出してみることにします。自分以外には完全に意味不明かと思います、申し訳ないです。

  1. データベース
    1. [DB]個口関連テーブル追加(済)
    2. [DB]最低限のテストデータ作成(済)
  2. 送料算出モジュール
    1. [Module]個口分割処理(済)
    2. [Module]個口ごと送料算出処理(済)
  3. 支払方法選択
    1. [tpl]個口ごとの配送時間指定セレクトボックス表示
    2. [tpl]個口の送料表示
    3. [tpl]個口の中身の商品表示
    4. [Page]受注個口テーブルに登録?
  4. 注文確認
    1. [Page]受注個口テーブルから読込?
    2. [tpl]個口ごとに中身と配送時間確認
  5. 注文完了
    1. [Page]受注個口テーブルに登録
    2. [Page]受注個口商品テーブルに登録
  6. データベース2回目
    1. [DB]パターン網羅商品テストデータ作成
    2. [DB]パターン網羅送料テストデータ作成
  7. 例外処理
    1. [Module]算出不可フラグ
    2. [tpl]即時決済制御
    3. [Page]メール送信

(※「?」の部分は未定。セッション利用での再計算もありかもしれない)

明日中には「注文完了」あたりまではいけたらいいかなぁと考えています。

また、もし最終的に実現できた際には、詳しい設計手順などの公開も予定しています。何かのお役に立つかもしれないので。立たないかもしれませんが。

2008-05-13

メールの署名を考え中

まだ、社内のメーリングリストくらいにしか送信した経験はありません。が、いずれは必要になるだろうと思って少し調べてみたところ、人力検索の質問が。

かっこいいメールの署名の書き方を教えてください。 (もしあれば)署名のテンプレ集でも構いませんが、 回答には必ず署名の作成例を最低1つ載せてください。 その際、○○x.. - 人力検索はてな 
http://q.hatena.ne.jp/1186480211

気に入ったのがこちらの署名。

1.slash style

///////////////////////////////////////////////////

NAME: ISONO KATSUO

TEL : 000-0000-0000

MAIL: katsuo@isono.org

URL : http://www.isono-katsuo.com

///////////////////////////////////////////////////

http://q.hatena.ne.jp/1186480211#a747190

シンプルでありながら、ソースコードにおけるコメントアウトの意味合いも暗に含ませているところに惹かれました。ただ、日本語で書いてしまうと微妙な感じがしなくもないです。

そんなわけで、シンプルで日本語にも合い、なおかつ何かひとひねりのあるような署名を引き続き考え中です。

2008-05-12

足りないことだらけ

仕様を変えるには、説明が必要。

説明をするには、根拠が必要。

根拠を得るには、調査が必要。

調査に必要なのは、経験と技術と積極性、でしょうか。

そのどれもが自分には足りないことを、改めて感じました。

ただ、積極性だけは心の持ちようです。

まずはそこから、改善していきたいと思います。

2008-05-10

休出ついでに将棋を愉しむ

f:id:deeeki:20080511012954g:image

軽い気持ちで100円ショップで買った将棋盤を持っていったところ、予想以上に先輩方と盛り上がることができました。素人同士の将棋ではありますが、せっかくなので棋譜*1

▲7八金    △3四歩    ▲6八銀    △4四歩    ▲7六歩    △4二飛
▲7七銀    △6二玉    ▲7九角    △9四歩    ▲6八角    △7二玉
▲6九玉    △8二玉    ▲7九玉    △7二銀    ▲4八銀    △3二銀
▲8八玉    △9五歩    ▲5六歩    △4五歩    ▲3六歩    △4三銀
▲5八金    △4四銀    ▲3七銀    △5二金左  ▲4八飛    △6四歩
▲4六歩    △3五歩    ▲4五歩    △同 銀    ▲3五歩    △4六歩
▲同 銀    △5六銀    ▲6六銀    △6五歩    ▲7七銀    △4七歩
▲同 金    △同銀成    ▲同 飛    △5六金    ▲4九飛    △6六歩
▲5八銀    △6七歩成  ▲同 銀    △同 金    ▲同 金    △5八銀
▲5九歩    △6七銀成  ▲7八金    △6六歩    ▲4五歩    △7八成銀
▲同 玉    △6七金    ▲8八玉    △6八金    ▲同 銀    △6七歩成
▲7七銀    △7九角
まで68手で後手の勝ち

↑1局目。後手。初手に意表をつかれましたが、ほとんどミスなく指せたように思います。

▲2六歩    △3二銀    ▲2五歩    △3四歩    ▲7六歩    △8八角成
▲同 銀    △3三桂    ▲7七銀    △4五桂    ▲4八銀    △5五角
▲6六角    △5四歩    ▲2四歩    △同 歩    ▲同 飛    △3三銀
▲2一飛成  △2二飛    ▲同 龍    △同 銀    ▲5五角    △同 歩
▲4六歩    △3七桂成  ▲同 桂    △2八角    ▲2五飛    △2三飛
▲同飛成    △同 銀    ▲2二飛    △5二飛    ▲2三飛成  △1九角成
▲7五桂    △6二金    ▲1五角    △2四歩    ▲同 角    △4二飛
▲4三龍    △2一香    ▲4二角成  △同 金    ▲3一飛    △4一歩
▲4二龍    △同 玉    ▲3三銀    △4三玉    ▲3二飛成  △5四玉
▲6六銀    △4三飛    ▲5五銀    △同 玉    ▲4三龍    △7七角
▲同 桂
まで61手で先手の勝ち

↑4局目。先手。中盤、優勢になった以降はかなり正確に受けられて、攻めをつなぐのに苦労しました。最後は衝撃の幕切れ。

また、息抜き程度にやれると良いです。


ちなみに棋譜の再生は以下のソフトでできます。コピー&ペーストでokです。

「Kifu for Windows」
配布元:柿木の将棋ソフトウェア

*1:うろ覚えの部分もあります

2008-05-09

Subversion コマンドによる更新手順

すでにSubversionによる環境は整っていて、Linux上で動いているサーバーのファイルを最新バージョンにするような場合のメモ。

  1. 「su」で管理者権限を持つユーザに変更
  2. 「ll」や「cd」で目的のディレクトリへ移動
  3. svn update」で更新
  4. ステータスを確認し、問題がなければok

※衝突が起きていた場合

  1. vi [filename]」で該当ファイルを開いて内容確認
  2. 「/[keyword] 」で文字列検索 「/mine」で衝突部分が検索可能
  3. 特に問題がなければ、「:q」でファイル編集終了
  4. 「rm [filename]*」で衝突があったファイルを削除(ワイルドカード「*」により連続削除)
  5. svn update」で再度更新し、最新ファイルとして復元

プロジェクトにより他の人が修正中のファイルがあるかもしれないので、その影響を考慮して更新は必要最小限はにするのが良いようです。

参考URL:@IT:Subversionによるバージョン管理(3/3)*1

コマンドに別の名前を付けるには

llコマンドが使えないLinuxでllコマンドを使用する - じょむにー風味

*1svnコマンドのサブコマンド一覧表あり

2008-05-08

Subversion ファイル名リネーム時の注意点

Subversionソースコード等を管理する際、ファイル名を大文字(小文字)に直してコミットを実行すると*1、動作がおかしくなってしまうようなので注意が必要です。以下、エラーが起きないための手順。

  1. リネーム対象ファイルをあらかじめコピー
  2. コピー元のファイルを削除
  3. コミットして削除したことをリポジトリに反映
  4. コピーしておいたファイルのファイル名を大文字(小文字)にリネーム
  5. リネームしたファイルをリポジトリに追加&コミット

用語の使い方が間違ってたらすいません。

*1:文字の並びはそのまま、というときです

2008-05-01

商品と販売戦略の関係

なかなかいいタイミングで、自分の興味とマッチする本に出会えました。ブックオフで。


最も印象に残った部分を引用させていただきます。

そもそも、「新商品はなんのために作らなくてはいけないのか」ということを冷静になって考えてください。

新商品を作りたいから、作るのではありません。

新商品を売らなくてはいけないから、作るのです。

だから商売というものは、商品が先にあるのではなく、「売り方」が先にあり、それから商品を開発しなくてはならないのです

ターゲットを定め、ニーズを分析し、特徴や機能を絞り込んで設計。それから開発に着手。ソフトウェア開発においても、何かに特化した製品を作る際には、大いに参考になる考え方ではないかと思います。

以下ちょっとしたメモ。

  • 「伝達力」と「集客力」が戦略の基本
  • 「お得感」を演出する
  • 購入機会(=販促企画)を増やす

メディアマーカー (読書記録)