2016年2月9日火曜日

NLS下のフォルダを探して、メニューを設定する(2)

開発のメモです。
設定ボタンの配置を換えました。
設定ボタンに16x16のアイコンを設定しました。
ISO言語省略名の選択は、ラジオボタンのタイプに変更しました。
潜在的なバグを見つけ出すパターンの設定は、Potential Problemのタブの下に移動しました。
言語の設定を切り替えるたびに、設定ファイルを読み直すように実装しました。





今日は、有給休暇でした。
銀行の手続きで3時間も掛かりました。

2016年2月7日日曜日

NLS下のフォルダを探して、メニューを設定する

開発のメモ。SASに倣って、NLSのフォルダ下にある言語のサブフォルダを見て、設定を切り替えられるように作成中です。



2016年2月6日土曜日

転職に弾みをつけたできごと、疲労臭

2014年12月の臭い
数年前から妻に「仕事を変えて」と言われていました。転職の理由は色々で、ひとつには絞れないけど、記憶に残ることがありました。人間、えらく疲れると通常とは異なる臭いを発するらしい。それが疲労臭という。2014年12月はそんな臭いを撒き散らしていたらしい。

症状
酷く足が臭く、脹脛が硬くなった。この臭いが強烈で、履いていた靴がやたらと臭くなった。メレルのごつい靴を履いていたが、臭いが取れずに「靴選科」で4500円のクリーニングに出した記憶があります。

その頃は仕事の追い込みで、客先にカジュアルウェアで土日、昼夜関係なく仕事をしていました。2日連続で徹夜したとき、靴を脱いで、靴下で歩き回ると嫌な臭いがカーペットに残りました。他の人がファブリーズで、私が歩いたところを消臭して回ったぐらいです。

疲労臭
あとから知ったのですが、これは疲労臭という症状でした。腎臓、肝臓の機能が低下して、アンモニア臭を発するという状況とぴたりと一致します。このころ、リフレクソロジーに行ったときも、ふくらはぎが異様にかたいとしてきされていました。身体が悲鳴を上げていたのは自覚していましたが、この仕事の切れ目までと無理を続けていました。

なんだか臭う…それはお疲れのサイン「疲労臭」かも?

妻の指摘は正しかったわけで、鼻を膨らませて「だからいったでしょ」とドヤ顔決めてます。あれを突き抜けると、過労死が待っていたのかもと思うと少し寒くなります。身体がダウンする手前まで頑張った。故に清々として、次の職場を探すことができたと思うのは不健康でしょうか。

2016年2月1日月曜日

SAS Log Utility, 多言語対応の仕組みを考える

多言語対応で必要なものは何?

設定ファイルは、ISO言語省略名ごとに保持できるようにしたい。

どこに、設定ファイルを保持するか?
!SASROOT\nls\ja の形に倣って設定ファイルを配置するか?
それとも、設定ファイルの後ろにISO言語省略名を付与するのか?

LOCALEの取得は、Windows.GetLocaleInfoでできる。

言語の切り替えは、メニューから行う。
切り替えはツールの再起動なしで、反映できるようにしたい。

言語を切り替えて、ダイアログの表示を切り替えられるか?
reinit.ReinitializeFormsは使えるのか?
reinit.LoadNewResourceModuleは使えるのか?

他に使い出のあるものは何?

マイグレーション案件、面倒なことが色々ある。
何か効率化できるネタはないか。
VAの構成って面倒、設定だけではなくエビデンスの取得もできる何かが欲しい。

移行で毎回手を焼くのが、過去データの移送と変換です。
量が多いので、並列化したり、夜間に差分検出して移送する、中断、再開の制御を入れています。

他には?
BI Serverの構成が面倒です。
SMCの管理は苦手なのです、私はね。



2016年1月30日土曜日

きっと役立つ、バグになりそうなNOTE:のチェック

SAS Log Utilityには、エラーでもなく、ワーニングでもないけど、バグになりそうなメッセージをチェックする機能があります。2013年頃投稿、2016年1月30日更新です。

  • 変数 ABC は初期化されていません
  • 以下の箇所で文字値を数値に変換しました
  • 以下の箇所で数値を文字値に変換しました
  • ステートメントに BY値を繰り返すデータセットが複数あります
  • 欠損値を含んだ計算により、以下の箇所で欠損値が生成されました
  • 切り捨てられた行があります
  • カラム999で0による割り算がありました
  • 関数XYZ(行999 カラム999の引数は無効です
  • LOST CARD.
  • NOEXECオプションが指定
  • ループが発生したため、DATAステップの実行を中止しました
  • 引用符で囲まれた文字列の後の識別子の意味は
  • 数値をプリントするには小さすぎるW.D出力形式
  • ライブラリABCは存在しません
  • クエリは元のデータに要約統計量の結果を再マージします
  • データセットABCにオブザベーションがありません
  • ファイルABC(memtype=DATA)は見つかりませんが、DELETEステートメントに存在します
  • ABCは未参照のラベル定義です
  • ABCに対して、無効なデータが行999カラム999にあります
  • ステートメントが行の終端に達したので、次の行を読み込みます
  • 要約化中にディスク処理が発生しました
  • CASE式にELSE句がありません

関数の引数無効とかは、意外と気がつきにくいです。

SAS Log Utility 1.6.1.8, 不具合修正

Vectorに登録の申請をしました。
修正したのは以下の点です。

  • NOTE:でチェックするパターンを追加
  • ステータスバーにISO言語省略名を表示
  • ログの行末に追加されている空白又はタブを削除して処理
  • ListViewのソートの不具合を修正

ステータスバーに言語省略名を表示したのは、多言語対応の準備です。
行末のタブ又は空白を削除するようにしたのは、SASログをEXCELファイルに貼って渡す人がいて、処理の区切りを正確に判定できなかったためです。これがメモリリークの原因のひとつになっていました。ちなみに、EXCELに貼り付けて渡すとダブルクォートがエスケープされて、正しくパースできないことがありますので、私はWinZipで圧縮して渡します。

ステータスバーの左に言語省略名追加


記録まで

2016年1月28日木曜日

SAS Log Inspector 1.3.1.2, リリース


機能は変えず、組み込みのマッチングパターンを24種類に増やしました。どんなパターンが定義されているかは、以下の画像をご覧ください。Vectorに公開の依頼を投げました。



SAS Log Inspectorの機能
  • 複数のログファイルからエラー、バグに繋がるNOTEを集計
  • 日本語と英語版のメッセージに対応
  • Excelファイルにログをチェックした結果をエクスポート
  • 任意のチェック項目を検査対象から外すことができる
  • Notepadを起動して、該当のログファイルを参照できる
  • マッチングパターンを画面から追加、修正できる