2010年12月2日木曜日

メールを送るときのメモ

よいメールの書き方

1)相手に伝えたいことを明確にして 少なくする
ひとつのメール、文章で、伝えたいことは少なくする。
多ければ箇条書きにしたり、番号振ったり相手がひとつづつ片付けられるようにする。

2)あの や その 等余計なものを使わない
邪魔なものはとる。「とか」もやめたい。だがよく使ってしまう。

3)例をあげたり、URLを貼ったり、資料を作る。文章だけで伝えない
結局文章だけでは伝わりにくい。
余計なやりとりをするよりは資料をちゃっと作ってあげたほうがイメージが共有できるので楽

4)丁寧すぎない
丁寧すぎて文章が長くなるよりはそこそこでいいから文章が短いほうがよい気がしている。
慇懃無礼ってやつですか。だがこれもよくやってしまう

5)意外と同じこと2回書いてしまうため、見直しはしっかり

6)返信は早めにやってしまったほうがタスクが減る

6番はあんまりよいメールの書き方と関係ないかも

2010年10月28日木曜日

MTのsplitプラグインについて

自分で原因調査したわけではないのですが、、、
私ともう一人の方で大分ハマってしまったsplitプラグインの罠について。
というか、報告してあげたほうが良いレベルなんでしょうかね。
それとも仕様なのかな。

MTでsplitというプラグインがあります。
http://www.koikikukan.com/archives/2009/01/20-015555.php

こちらは、カスタムフィールド等にいれた、データを任意の区切り文字で
split した配列変数を返してくれるプラグインで、便利なのでよく使います。
何個入力されるかわからないときとかよく使う。

今回は、splitした内容をMTIfで判定して、合致したら出力を行うみたいなことを
しようとしていたのですが。
改行を区切り文字にしてsplitで区切って配列変数に入れる。
そのあとループで回して変数にセットしてIf文で分岐

【フィールドの入力値】
A
B
C

【テンプレート】

<MTVar name="string" split="\n" setvar="alphabets">
<MTLoop name="alphabets">
<MTSetVarBlock name="result"><MTVar name="__value__"></MTSetVarBlock>
</MTLoop>

<MTIf name="result" eq="●●">
~~処理~~
</MTIf>



上記だと出力したときに、なぜかCの分岐しか出力されない。
一番最後に入っていた値のIf文しか実行されませんでした。

splitで区切っているはずで、試しに
などで出力してみても、
ちゃんと区切れているのですが、だめでした。

私で一日、もう一人の方にも半日以上みてもらったけどだめで
ダメもとで改行区切りをカンマ区切りに変えてみたら全部でました。

【フィールドの入力値】
A,B,C

【テンプレート】

<MTVar name="string" split="," setvar="alphabets">
<MTLoop name="alphabets">
<MTSetVarBlock name="result"><MTVar name="__value__"></MTSetVarBlock>
</MTLoop>

<MTIf name="result" eq="●●">
~~処理~~
</MTIf>


記号でできて文字コードでできないことから、
splitプラグインで区切ったとき、改行コードのようなものは
splitしたときに前の値にくっついてしまうようです。
目には見えないし出力にも現れませんが。

回避方法としては、splitで区切った値を使用して
分岐処理をしたい場合は改行を使わない、または
strip_linefeeds="1" のモディファイアを付けるといいらしい
http://www.movabletype.jp/documentation/appendices/modifiers/strip_linefeeds.html

一時はお客さんに複数入力はあきらめてもらおうかと
思ったくらいだったので奇跡がおきてよかったです。

時には自分らのコードの誤りだけでなくて
MTの機能自体やプラグイン自体の挙動もチェックしたほうが
いいかもっていうおはなしです?

2010年10月21日木曜日

特定カテゴリでアーカイブを出力しないようにする

MTはアーカイブマッピングのパスにもMTタグが使えるので、
ブログ記事などで出力したくないカテゴリの記事を出力しないようにできる。

http://unimakura.sakura.ne.jp/blog/2010/02/mt-3.html


http://salvageship.dropcontrol.com/2009/03/post-40b6.html

2010年9月6日月曜日

ドメイン移管作業について

ドメインの移管をすることになりました。
自分はやったことないのでよくわからないのですが、
今回移管してもらうには、レンタルサーバの会社に
お願いするだけでよかった。でも移管対象のドメインによって
料金とか手続きがいろいろ違うみたいです。


移管対象は汎用JPドメインと属性型JPドメインでした。
.jpなのはわかるのですが何がどう違うのかよくわからないです。


汎用JPドメイン名
個人でも組織でも、日本に住所があれば誰でも登録できるJPドメイン名。登録できるドメイン名の数に制限はありません。
漢字やひらがななどを用いた日本語ドメイン名も登録できます。「日本語ドメイン名について」もあわせてご覧ください。
 例:EXAMPLE.jp
 例:日本語ドメイン名.jp

属性型JPドメイン名
CO.JP(企業)、AC.JP(大学等)など、組織の種別ごとに区別されたドメイン名。1つの組織が登録できるドメイン名は1つだけです。
 例:EXAMPLE.co.jp

属性型のほうが汎用型より倍くらい移管費用がかかるみたいです。
「gTLD」という国や地域の概念がなくて世界中を対象とした
ドメイン名(.com、.netとか)もありますが、
そちらのほうがjpドメインより移管費用は安いようです。


ここから引用しました。
http://jprs.jp/info/jp-dom/

2010年7月9日金曜日

2010年7月6日火曜日

アイテムは画像とは違うらしい

MT4では、カスタムフィールドで「アイテム」を登録して、
画像アップロードを行っていて、ブログなどで画像を選択ボタンを
クリックすると今までアップロードした画像が一覧で表示されていた。



MT5では、「アイテム」と「画像」の扱いが違うみたいで、
「アイテム」のカスタムフィールドを作っても
今までアップロードした画像は一覧で表示されない



「画像」のカスタムフィールドを作ると、
今までアップロードした画像が一覧で表示される

書いてもよくわかんない。。
あとでまとめる

IEでだけページが真っ白になったとき

【事象】
今日静的HTMLを編集してサーバにアップしたら、
IE系のブラウザでだけ画面が真っ白になった。

でも、ブラウザでソースはちゃんと読み込まれていて、
表示だけができないようだ

FireFoxとかcromeでは普通に表示されている。謎ー

【原因】
文字コード宣言をtitleタグよりも下に書いてた。
<head>
<title>タイトル</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Description" content="ディスクリプション" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<meta name="robots" content="noydir" />
<meta name="robots" content="noodp" />
<meta name="robots" content="index,follow" />
</head>

http://webtech-walker.com/archive/2007/03/06143435.html
ここのHPの緑の狸さんコメントによると、
文字符号化方法を知るまでに ASCII の範囲外のバイト値が現れると、タグを正常に解釈できなくなる可能性があります

だそうです。知らなかった。

【対処法】
宣言などは全部headタグの上に書き、日本語を使う可能性のあるタイトルなどはheadタグでも下のほうに書くこと。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="Description" content="ディスクリプション" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="content-style-type" content="text/css" />
<meta name="robots" content="noydir" />
<meta name="robots" content="noodp" />
<meta name="robots" content="index,follow" />


<title>タイトル</title>
</head>

上記バグは、別のお問い合わせの対応をしていて、その対応中に起きたバグでした。

開発している自分たちはよくFFでしかテストしないことも多いので、そのままお客さんに連絡してしまっていたらお客さんから指摘される可能性があり、危うく炎上するとこでした。。

今回については、自分の他にもうひとり開発の方と、営業の方にも確認してもらっていたので
発見できて、対応もすばやく行えました。

お問い合わせの返事の速度も大事だけど、小さそうな対応でもいろいろなブラウザで試すこと、2人、3人体制でチェックを行うことがすごい大事です。

なのでまずは、返事が遅くなって焦らないためにも
お問い合わせきた

着手しています の連絡

修正する

2人、3人体制でちゃんとテストする

原因とか修正内容の連絡

のフローで行くのがいいのかなと思いました。

2010年6月29日火曜日

MT SubCategoriesの中だと、__counter__ とかがきかない

http://www.mt-matome.com/category/get-catid.html

http://gyauza.egoism.jp/clip/archives/2007/05/070518-css-class/

うぉおお

かわなきゃ!



にほん2 パラグアイ1

MT 今日のはまった点

MTの変数同士で比較するときの注意点について。。

MTIfの中でMTタグは使えないようなので、
※例えば
<MTSetVar name="test" value="1">
<MTSetVar name="exam" value="2">
<MTIf name="teat" eq="<MTGetVar name="exam">">
しょり
<MTElse>
しょり2
<MTIf>

はできない。ので、「$」マークを頭につけると、値が取り出せるようになる。
<MTIf name="teat" eq="$exam">


http://d.hatena.ne.jp/wonohe/20080705/1215234439

2010年6月28日月曜日

MT 基礎編1

MTの基本

●タグの書き方
3種類くらいあって、どの書き方でも表示可能。
混在しててもOK



<$MTGetVar$>

2010年6月24日木曜日

MT5のテンプレートを読み込む順番

MT5はウェブサイトっていう考え方があるみたいで、
ウェブサイト毎にブログを管理できるから、
MT4でやっていたときみたいに、異なるサイトを1つのMTに乗っけていても
ブログが混在しなくてとても便利だと思ったけども。

今までMT4でグローバルテンプレートにおいていたものを、
ウェブサイトテンプレートに移し変えたら、MTIncludeタグだと
システムテンプレートを見にいってしまってうまくウェブサイトテンプレートを
読み込んでくれない。

MTIncludeのタグを書くと動き的には

1. ブログのテンプレートモジュールを呼び出す
2. ブログに該当するモジュールがない場合はシステムのテンプレートモジュールを呼び出す

ということらしい。
普通は、単位の小さいブログ→ウェブサイト→システム の順に
呼び出すと思うんですけど…

下のページの
【ParentalInclude】 というプラグインを使うと、
ブログ→ウェブサイト→システム のテンプレートの順番で見に行ってくれるように
なりもした。

http://www.skyarc.co.jp/engineerblog/entry/parentalinclude.html

読んだほん



映画もみたいかも

2010年6月23日水曜日

スケジュール引くときのまとめ

●工数と締め切りで考える
→工数がどれくらいかかるかと、締め切りがわかっていれば、そこから逆算
例えば、お客さん側の検収とかデータ投入に10日かかるとすれば、
実際の締め切りより10日前には開発環境にアップしておかないと、
データの投入ができなくなるからだめ

●関係性のあるものは線で結ぶ
→デザインや他の会社の作業があって、それが終わらないと進まないとか
そういう関連性がある場合には線で結ぶなどして、関連付けをしておく
 ⇒そうすることで、スケジュールを組む段階で「△△が遅れたら、
  その分だけスケジュールが後ろにずれます」と連絡が先にできる。

●詳細に落とす前に概要スケジュールを作る
→詳細にスケジュールを組もうとおもってもすぐにできないので、
おおざっぱな線でまずひいてみる。とか

またあとで編集

2010年6月21日月曜日

ふかづめ

痛い…

できたー MT5でカテゴリとカスタムフィールド検索を組み合わせる方法

これと
http://www.7dc.jp/matsutsune/2009/11/customfields.html

これだ!
http://tec.toi-planning.net/mt/customfieldssearch/

つかれた。。

ソース
<form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
<!--カスタムフィールドサーチを有効にするかどうか-->
<input type="hidden" name="CustomFieldsSearch" value="1" />

<!--どのブログを検索対象にするか-->
<input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" />

<!--カテゴリサーチを有効にするかどうか-->
<input type="hidden" name="CategorySearch" value="1" />
<input type="hidden" name="CategorySearchSets" value="1" />

<!--カテゴリ選択用プルダウン select nameが”1”なのがポイントっぽい-->
<select name="1">
<option value="0">--</option>
<MTTopLevelCategories>
<MTSubCatIsFirst>MTSubCatIsFirst><MTIfNonZero tag="MTCategoryCount">
<option value=""><$MTCategoryLabel$> [<$MTCategoryCount$>]</option>
MTIfNonZero><MTSubCatsRecurse><MTSubCatIsLast>MTSubCatIsLast>
MTTopLevelCategories>
select>
<fieldset id="freeword_set">
<br />
<!---->

<!--カスタムフィールドがチェックボックスのものを検索する場合
チェック有り無しは「なし:0、あり:1」で出力されるので-->
<!-- valueを -->
カスタムフィールドの値がチェックボックスのもので、チェックがついたエントリーをOR検索<br/>
<input type="checkbox" id="CustomFieldsSearchField_
entryninjin" name="CustomFieldsSearchFieldIn" value="entryninjin:1" />
<label for="CustomFieldsSearchField_entryninjin">: にんじん</label>
<input type="checkbox" id="CustomFieldsSearchFieldIn_
entrypiman" name="CustomFieldsSearchFieldIn" value="entrypiman:1" />
<label for="CustomFieldsSearchFieldIn_
entrypiman">: ピーマン</label>
<input type="checkbox" id="CustomFieldsSearchField_
entrysweetpotato" name="CustomFieldsSearchFieldIn" value="entrysweetpotato:1" />
<label for="CustomFieldsSearchField_
entrysweetpotato">: さつまいも</label>
fieldset>



<input type="submit" accesskey="4" value="検索" />
form>

2010年6月15日火曜日

struts2+文字コードでおきたバグ

【前提】
・struts2を使用
・入力された文字列と単位を出力する
・文字列が「 _ 」の場合は、単位を出力しない

以下のような形でデータ出力している。
 <s:property value="number"/>
 <s:if test="number!= '_'"><s:property value="unit"/></s:if>

【事象】
特定の文字列「95」を入力すると、単位表示がされない。
例)
33円
50円
62円
87円
95
100円

【原因】
struts2では、文字列が一文字の場合、シングルコーテーションで囲むと
char型で判断される。
http://mofuken.blogspot.com/2009/07/struts2-sifognl.html


 ←の判定式で、アンダースコアをシングルコーテーションで
囲んでいるため、
http://homepage2.nifty.com/miyuki-t/html/cardinalnum.html

ハイフンの文字コードが16進数だと5Fで、10進数であらわすと「95」
「95の値が入力されたとき「_」と同じと判断されて単位表示が
されなくなる。

char型
 Javaでは、文字を扱うための型として、charが用意されています。char型は、Unicodeの1文字分と同じく、16ビットで表現します。
 char型は、整数型の一種です。char型には0以上、65535以下の整数値が入ります。具体的には、整数値として、Unicode文字のコード番号を入れて使います。
 文字を扱う型と言っても、その実体は整数ですから、整数に関して実行可能な演算は、char型に関しても実行可能です。つまり、加減乗除、剰余、比較などが行えます。

文字リテラル
 char型の値を表すのには、文字リテラルが使用できます。文字リテラルは、1個の文字をシングル・クォート(')で囲んで表します。例えば、
'A'

は文字リテラルです。
引用元:http://www.itarchitect.jp/beginners/-/10422-2.html

【解決方法】
下のブログにあるようにダブルコーテーションで囲むと文字列として
解釈されるので、回避できる。

http://mofuken.blogspot.com/2009/07/struts2-sifognl.html

結果的にソースとしては↓みたいにしたら直った。
<s:property value="number"/>
<s:if test="number!= \"_\""><s:property value="unit"/></s:if>

2010年6月10日木曜日

ナレッジのため方

ナレッジのため方について考える。

【現状】
・ほしゅチームはある
・保守チームの中では、2~3人のグループで1プロジェクトを担当
・そのグループ内での知識の共有はできてるか
  ⇒そうでもない?いや、そうでもなくない
   ⇒グループ内ではできてるけど、保守チーム内ではできてない
・wikiはあるけど使ってない
  ⇒めんどくさい、アカウントないとみれない

【なぜ問題か】
障害おきる
 ⇒自分(A)の知識では対応できない
  ⇒対応できる人(B)に聞く
   ⇒Bと対応する
    ⇒直る サイトは動くようになる
     ⇒ありがとう
      ⇒終わり

AとBの間にしか知識の共有が行われない、それ以上他の人(C)に広がらない
 →Cが困ったときまたBに聞きにいく
  →Bの負担が増える、同じことまた教えないとだし

【なぜナレッジがあるといいか】
Bより知識はないが、Aが以前似た問題を対処したことがあり、それがメモとかなんでもいいけど残っている場合Bに直接行く前にAとCのみで対処できるかもしれない
  →Bの負担が減る

【なぜできないか】
・めんどくさい

【方法】
ブログを各自で作ってもらって、保守しててで起きた事例や、解決方法を書く
(保守以外のことも書いていいです)

【ブログを書く際の取り決め】
・記事を作成する場合で、保守の内容を書く場合は、ラベル付けを以下のように行う
※ラベルは何個でもつけられます
※クライアント名とか、特定できるような具体的な記述は避ける

●技術的問題
大項目:アプリ対応
  中項目:tomcat、apache、java、php、mt

●対応などの問題
大項目:コミュニケーション対応
  中項目:障害発生時、追加開発、見積もり

●ケーススタディ的な
大項目:ケーススタディ
  中項目:失敗事例、成功事例

【注意して欲しい点】
・書く習慣をつける
 ⇒フォーマットとかどうでもいいのでとにかく書く

とにかくためてみるしか。ためてから考える

find覚え書き

【ファイル探しつつコピーしたいとき】
find /usr/app/logs/ -name "*yyyy-mm-dd.log" | xargs cp -t /usr/app/logs/backup/
 ⇒-tオプションがポイントらしい

【ファイル探しつつ移動したいとき】
find /usr/app/logs/ -name "*yyyy-mm-dd.log" | xargs mv -t /usr/app/logs/backup/
 ⇒-tオプションがポイントらしい*2


http://openlab.dino.co.jp/2008/02/20/133431188.html

クロールされたくないページがクロールされる件

【事象】
検索結果で表示されたリンクをクリックするとエラーページにとんでしまう

【原因】
エラーページに飛んでしまうのは、クロールされた画面が、現在存在しない画面であったため。
表示がおかしいのは不明。。ぱんくず表示がちょうどおかしかったときにクロールされた?かも

【対処法】
①robots.txtをドメイン直下に置き、クロールされたくないページを書き込む
実際においてあるファイルの中身

 -----------------------------------------------
 User-agent: *
 Disallow: /***/***/***/←ファイルパス
 -----------------------------------------------

参考:http://dokodemo.rankuappu.com/syono5.html

②google webmasterツール から、削除手続きを行うのでもよい
http://www.google.com/support/webmasters/bin/answer.py?hl=jp&answer=164734

PDFのキャッシュが残る

【事象】
同じ名前でアップロードしたPDFファイルのキャッシュが残る

【原因】
pdfのファイルがtomcat側で処理されていたため、apache側のキャッシュ制御をしていたが、無効となっていたから。デフォルトキャッシュの有効期間は数時間があるのでpdf更新確認の前に(数時間以内)そのpdfを参照したことがあればそのキャッシュがブラウザ側に残され、しばらくサーバーへ最新バージョンを取りに行かなくなる。

【対処法】
httpd.conf に、以下の設定を追加
 pdfの拡張子のものにマッチした場合、ヘッダ情報を追加する。
 http://httpd.apache.org/docs/2.0/ja/mod/core.html

#pdf Cache-Control
Header set Pragma no-cache
Header set Cache-Control no-cache
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

jk.conf (mod_jkの場合)に、←の一行を追加
 JkUnMount で、特定のディレクトリ以下をTomcatの対象から外す
 http://www.emxas.co.jp/itblog/item_75.html
 http://www.kanata.to/java/tomcat_jkunmount.html
 
  JkUnMount /*.pdf ajp13←←←

追加後、apache再起動
/etc/init.d/httpd reload