2013年8月29日

EXCELで作る課題一覧とか

 EXCELで問い合わせのシートを作るのはいいんだけど、以下のことはやめてほしいものです。
 

改善して欲しいところ 

  1. 印刷した時にセルから文字がはみ出る。
  2. 入力した内容が用紙に収まっていない。
  3. 行を1行のセルに収めようとして、文を途中で切って次の行のセルに続きを書く。
  4. 方眼紙のようにセルを細かくする。


対応方法

  1. ちゃんとプレビューして確認してください。
    セルの書式設定の文字の制御で「縮小して全体を表示する(K)」をチェックすれば、自動的に縮小します。
  2. ちゃんとプレビューして確認してください。
    余白の設定や、「全ての列を1ページに印刷」とかを選んで横にはみ出ないようにしてください。
  3. 1行に収まらいときは、次の行のセルを結合して、自動的改行にまかせてやってください。
    その時、セル内ギリギリに入っているように見えても、印刷すると確実にはみ出るので、余分に1行を結合してください。
  4. インデントを合わせたいだけなんだったら、真面目にWordの使い方を練習して自動インデントに任せるようにしてください。



 そもそも、いろいろなページの自由度を上げるために、駆使してるのはわかりますが、メンテナンスのことを考えていないドキュメントになって、結果的に工数が増大するので考えなおしたほうがよいのです。
 作る人のことではなく、できたものにしか興味がない人はこうなるんでしょう。

2013年8月28日

SoftBank Arrows A 202F入院決定

 全然、電話がかかってこなくなったり(通常もあまりかかってこないんですが)、電話かけても全然つながらないことが頻繁にあったので、SoftBankのショップに持って行ったら、そういった現象の報告がユーザーからあるらしい(再起動すると一定期間治る)。
 Arrowsだけではなく、Sharpの AQUOS PHONE Xx206SHも同じらしい。

一応自分が使っている環境では、モバイルデータ通信をOFFしています。
このコトは、直接関係ないらしいですが…。

 他のメーカーの機種でも発生しているので、端末固有の問題ではなく、Androidの問題では無いかという疑いがかかっています。
 修理してくれるらしいですが、原因が明確でないのにどうやって修理するのか不思議です。
(問題発生しませんとか言って帰ってきたらパンチです)

 早く帰ってきて欲しいです。
余談ですが、
 別の代替端末を貸してくれるのですが、Arrowsに挿してあったSDカードが64GBだったのでそれが挿さる端末がないらしくて、1時間くらい待ってほしいと。
 PANTONEを出してきたので、もうちょっとしたら解決するのかな?

結局、今、携帯端末がない状態です。


9/2にSoftBank Arrows A 202F退院しました


関係ないですが、横のお客さんがクレーマー、クレーマーっぽい、おばさんでした。
 高速通信を高速道路での通信と思っていたらしく、高速道路で使っていないのにつながらないことがあるとかいって店員さんに喰って掛かってました。

 いろんな技術が組み合わさって作られているものとかことを自分が知っている世界だけで理解しようとするとはやっぱり無理がありますよね。
 ある、1のことを理解するために、その周辺の3くらいの事を理解しないと、最初の1が理解できなくて、3の中の1を理解するためには、またその周りの3くらいのことを理解しないとと永遠に続く。

 でも、車のエンジンの仕組みなんて知らなくても、車を運転できますよね。そういうことです。

 このおばさんは、知らないうちにお金を取られていると思っているんでしょうけど。
きっとパケット代は、固定のやつです。


2013年8月27日

消費税あがるって慌ててるけどさ。SEは何してるのさ。

 消費税が変わるからコンピュータのシステムを変更しないとだと慌ててるみたいだけど、ほんとにそうなの?
既に0→3→5を経験してるんだから、そんなに慌てること無いような気がするんだけど?

 でも、ほんとにヤバイってことになってるとしたら、そのシステム作った会社は、何してんのさ?
 前の会社の先輩で、消費税の5%をプログラム固定で使ってるのを外注さんに指摘されても、「問題ない。OK,OK.」って言ってるのを思い出した。

 そういう人たちのおかげでよくわかっていないユーザが無駄にお金を払うんだよね。
そう言えば、これでお金が稼げるんだからいいんだとか言ってる人もいたな。
悪人だ。自分さえ良ければ。の世界。

パケット料を安くしたいのに高くなった人へ

 知っている人は当たり前で何でしょうが、知らない人の為に(自分のその仲間ですが)。

 最近、4Gスマートフォン(Android端末)買った人で、通信費を安くするために、パケットし放題 for 4G(2,100円~6,510円)というパケット定額サービスを選択する人がいると思います。
 実は、この上限なんて一瞬にして超えてしまうので、あまり意味がないのです。割引も少し少なくなるし。

 でも、モバイルルータを持っている人は、常にモバイルルータを使うようにしておけば、最低額の2,100円で抑えることができるのです。(ここまで当たり前)

 でも、SoftBankのショップの人も教えてくれなかったのか、自分が無知なのかしりませんが、端末側で、「モバイルデータ」通信をオフにしておかないと、せっかくモバイルルータを持っていても、そっちと接続しないで、電話会社の回線につないで、上限があっという間に超えてしまうんです。
 (実際、4日くらいで、上限の15.5MBに迫りました。なので、初月は高いです)
 

 この条件を満たす人は、新しい端末を買ったらすかさず、「モバイルデータ」のスイッチをオフにしましょう。



上の写真の黄色で囲んでいるところです(写真は、Arrows A 202F)。
[設定]-[その他]-[データ使用]でこの画面にたどり着きます。

さぁ、OFFにして、安く上げましょう。

2013年8月22日

Windows2008 R2のMySQLにリモートPCからつなぐ

 わかっていたはずなのに忘れているという…。

 MySQL使った、アプリケーションのテスト環境を作ろうと思って、ファイアーウォールのことを忘れてて2時間も費やした。

MySQLをリモートPCから接続する為に、やること。

  1. MySQLが適切にインストールする。
  2. ファイアーウォールでプロファイルの指定を追加。
    実は、これにハマって閉まっていました。
    例えば、MySQL5.6をインストールすると、ファイアウォールの受信の規則に「MySQL56」というエントリが2つ作成されます。
    どちらでも良い(ドメイン用途、プライベート用の2つがある)ので、詳細設定のタブのプロファイルの設定の「パブリック(U)」にチェックを入れる。

    これしないと外から入れない。きっと、サーバーも、クライアントPCもドメインに参加していないからだと思うけど…。テスト環境だからOK.
  3. rootでログインしてリモート接続するクライアント用のアカウントを作る。(当然この作業は、MySQLをインストールしたサーバで行う。)
    環境
    DB名:oreore_db
    アカウント名:oreore_user
    パスワード:oreore_pw
    リモートPC名:oreore_pc(ここをIPアドレスにもできるよ。例えば、192.168.0.%とか)
    mysql>grant all on test_db.* to 'oreore_user'@'oreore_pc' identified by 'oreore_pw':
  4. リモートPCから接続してみる
    何を使って確認をしてもOK。
    ちょっと前からのDB操作のツールのトレンドは、「A5:SQL Mk-2」というものです。


 これできないと、DBを別のサーバーに入れられないので嫌なのです。(クライアントPCにサーバーアプリケーション入れたくないののろのろするから。)

2013年8月18日

MSDNサブスクリプションで思うこと

 よく、テスト環境のつくるのに、頻繁にWindowsOSをインストールし直すんですが、毎回、Windows Updateのパッチを当てきるのに何時間も費やしてしまうのを何とかしてほしいと思っています。

 毎月、毎月は大変だと思いますが、ある程度パッチのリリースがたまったら、それらを全部あてたバージョンをダウンロードできるようにしてほしいですのよ。

 今も、WIndowsXPのWindowsUpdateをやっているけど、「このコンピュータに該当する最新の更新プログラムを確認しています…」のまま緑の■が横に流れてます。


早くおわってよ。

Microsoft Access 2010のパッケージソリューションの作り方

 最近、MS Accessでアプリケーションを作成してほしいという依頼があって作ることは簡単にできるんですが、セットアップをどう簡単にしようかと考えてました。

 一番ラクなのは、ドキュメントベースでこの手順でセットアップしてくださいと書くことです。
もっとラクにするためにセットアップを作ることにしました。

 MS Access2010って作ったものをパッケージしてインストーラとしてまとめてくれる機能があるんですよね。とっても便利です。

 あまり、高度なことはできませんが、以下のことはやってくれるようです(自分調べ)。
  • デスクトップにショートカットを作る。
  • ショートカットのアイコンが指定できる。
  • スタートメニューにショートカットを作る。
  • 一緒にインストールするファイルを指定できる。
  • AccessのSecurityのレジストリにインストールしたフォルダを登録してくれる
    →これをしないと毎回、実行していいの?って聞かれる。
  • Access2010のランタイムのインストールをしてくれる。
    →ランタイムを指定しておくとやってくれます。

ポイント1

[セキュリティのレジストリは、以下のように設定します。
「追加レジストリ キー」を設定するところがあります。


  • ルート:すべてのユーザー
    他にも、
  • キー:Software\Microsoft\Office\14.0\Access\Security\Trusted Locations\[任意の名前]
    [任意の名前]には、例えばシステムの名前とかでも良いと思います。実際にレジストリを見るとLocation0とか書いてありますが、これらと重複しなければOKです。
  • 名前:Path
  • 値:[DATABASEDIR]
    [DATABASEDIR]と書いておけば、ルートインストール フォルダーとインストールサブフォルダーで指定したフォルダが自動設定されます。

ポイント2

Accessランタイムのサービスパックのインストールも同時にさせる。
パッケージソリューションでは、Accessのランタイムを指定しインストールさせることができます。
 合わせて、AccessのServicePacke1や2または、その他のインストールも同時にしたい場合、できあがったパッケージのSetup.iniを編集してやることでセットアップのプロセスに組み込むことができます。
Setup.iniは、セットアップのルート\Files\Setup\Setup.iniにあります。

では、編集方法。
 Accessのランタイムをインストールするようにしておくと、「[ChainedInstall_1]」という記述を見つけることができます。これは、AcceccRuntime.exeをインストールするためのものなのでそのままにしておきます。
例えば、AccessRuntimeのサービスパック2(accessrtsp2010-kb2687444-fullfile-x86-ja-jp.exe)を同時にインストールしたい場合は、以下のように記述を追加します。


  1. [ChainedInstall_2]
  2. TaskName=Access Runtime SP2 Setup 
  3. TaskType=exe
  4. Path=\Files\accessrtsp2010-kb2687444-fullfile-x86-ja-jp.exe
  5. IgnoreReturnValue=0
  6. ;cmdline=/passive


1行目は、AccessRuntimeは、「ChainedInstall_1」なので「ChainedInstall_2」にします。
2行目は、このセットアップは何かをわかりやすい名前を書きます
3行目は、実行するファイルの拡張子を書くようです。(msi形式の場合は、msi)
4行目は、実際に実行するファイルのパスを指定します。
AccessRuntime.exeが配置してあるパスにしておくのが無難だと思います。
5行目は、多分、Ignoreなのでセットアップが無効(失敗とか)だった時の戻り値だと思います。0であれば、何もなかったように次に進みます。
6行目は、不要です。実際にセットアップされるファイルへの引数だと思います。今回は不要です。


 これで、Accessランタイムベースのアプリケーションのインストールがラクになると思います。
ポイントしか書いていませんので、実際にやってみてください。

2013年8月14日

入力画面項目チェックのロジックの提案[初心者向け]

 画面入力値のチェックをするときに、1項目ずつチェックをすると思います。
その場合、入力チェック用の関数などを作ってチェックをすると思います。
 その場合の構造の提案です。
例としてMS Accessで考えてみます(なんでもいいんですが)

■仕様


  1. 会員ID、会員名、会員住所の必須入力チェックを行う。
  2. 入力チェックは、入力項目のエラーがあったら、それ以降の項目のチェックは行わない。
  3. エラーのあった項目にフォーカスをあてる

■画面イメージ

  会員ID [         ]
  会員名 [               ]
  会員住所 [               ]

■ロジック

Private Sub 登録_Click()

    If 入力チェック() Then
        ' エラー
        Exit Sub
    End If

    ' 登録処理をここに実装


End Sub

' True..エラーなし False..エラーあり
Private Function 入力チェック() As Boolean
   
    Dim msg As String
    Dim error_item as Control

    Do
        '
        ' 会員ID必須入力チェック
        If IsNull(会員ID) Then
            msg = "会員IDは、必須入力です"
            Set error_item = 会員ID
            Exit Do
        End If
        '
        ' 会員名必須入力チェック
        If IsNull(会員名) Then
            msg = "会員名は、必須入力です"
            Set error_item = 会員名
            Exit Do
        End If
        '
        ' 会員住所必須入力チェック
        If IsNull(会員住所) Then
            msg = "会員住所は、必須入力です"
            Set error_item = 会員住所
            Exit Do
        End If
    Loop Until True
   
    if msg = "" Then
        入力チェック = False
    Else
        入力チェック = True
        MsgBox msg, vbExclamation Or vbOkOnly, "入力エラー"
        error_item.SetFocus
    End If

End Function

■ポイントと解説

あまり考えないと、各項目エラーチェックをするかどうかを以前の項目でエラーがあったかのフラグを立ててチェックを行うと思います。

 ですが
 エラーがあったら、エラーメッセージのセットとエラーのあった項目の保存をしてエラーチェックを一気に抜け、仕様のとおり、それ以降の項目チェックを行いません。
 ロジックの赤字のところがポイントです。

 Do Loopは、ループがしたいわけではなく、それ以降のロジックを実行したくないためにブロック構造を作り出すために使っています。

 メリットとしては、以下のことがあります。

  • 各入力項目は、他のエラー状態を考える必要がない
    (ということは、入力チェックをする項目が増えた場合は、そのことだけを記述すればよい)
  • フォーカスのセッとメッセージ表示トロジックが1箇所にまとめられる
  • 余計な変数を作る必要がない(弱い理由ですが)

これで、ちょっと改造しやすくて、わかりやすいプログラムができるのではないでしょうか?






2013年8月13日

Subversionリポジトリバックアップメモ(案1)

Subversionのリポジトリバックアップのメモ


 Subversionでソース管理をしている場合に、リポジトリが壊れても復旧できるようにするためにバックアップを常にとっておく。
 その手段として、リポジトリの同期機能(svnsync)を使う。

  1. 同期先のリポジトリを作成する
    svnadmin create リポジトリ名
  2. hookスクリプトの準備
    pre-revprop-change.tpmlをpre-revprop-changeにリネームして、スクリプト内を「exit 0」だけにする。
  3. 同期先のリポジトリの初期化
    snvsync init 同期先のリポジトリ 同期元のリポジトリ
    例)svnsync init file:///var/appdata/svnbackup/repo_backup http://server_name/repos/repo --username [username] --password [password]

    [username]は、リポジトリへアクセスするユーザ
    [password]は、リポジトリへアクセスするユーザのパスワード
  4. リポジトリを同期する
    svnsync sync 同期先のリポジトリ
    例)svnsync sync file:///var/appdata/svnbackup/repo_backup  --username [username] --password [password]

ヒント

同期先のリポジトリは、fileプロトコルだけではなく、httpでもhttpsでもなんでも良いです。
ただし、1度でもcommitすると同期はできなくなります。


 運用しているリポジトリが何らかの理由で壊れたときは、この同期しているリポジトリを使って復旧する。

2013年8月12日

ファイル圧縮ツールなに使ってますか?

 みなさんは、ファイルの圧縮ツールは何を使っていますか?
いろいろ使って来ましたが、今は、7-zipというツールを使っています。

LHA→zip→DGCA→7-zipとツールを変更しています。

途中、いろいろなのを使っていましたが、圧縮機能が有料だったり、あまりメジャーでなかったり(自分が知らないだけ?)、高圧縮のツールがでたりして、使うのをやめたのも多々あります。


 DGCA(DigitalGCodecArchiver)は、他で使っている人は居ませんでしたが、高圧縮できたので仕事でもよく使っていました。メジャーでないということは、ファイルを展開するツールを持っている人がいないので、自己展開形式にしてファイルを渡していました。
当然、小さいファイルを自己展開機能をつけてしまうと、そのプログラム部分が大きいので、その場合は、zipとかで圧縮して送っていました。

 7-zipは、高圧縮で、いろいろなファイル形式の展開機能が付いているので今では、一番使っているツールです。
 これも、やはり、一般的には普及していないようなので、自己展開形式にしてファイルを圧縮して送っています。
 でも、圧縮レベルを「超圧縮」というのにして使うととんでもなくファイルサイズが小さくなります。
 ベンチマークを取ったわけではないですが、たまたま今、やった圧縮の状況を書きますとこんな感じです。


圧縮前 ファイル数56、フォルダ数25の123,412,480バイト(117MB)のファイル(ファイルは、accdb形式)を圧縮してみた。
  • zip(WIndows標準)
    16,675,382バイト(15.9MB)
  • 7-zip(超圧縮)
    1,542,751バイト(1.47MB)
  • 7-zip(超圧縮)の自己展開形式
    1,705,567バイト(1.62MB)
zip形式の10分の1にサイズになってしまいました。
自己展開形式しても、ほとんど変わりません。


 これで、7-zipを使わない手はないよね。

7-zip推しです。





2013年8月10日

店頭の家電並みと思っているらしい

 あるコンピュータのコンサルの営業のことであるが、手作りのコンピュータシステム(でも)は、量販店で電化製品を買ってきて、コンセントを挿せば動くほど簡単だと思っているらしい。
 だから総合的なテストもせずに本番リリースさせようする。
でも実際、総合テストなんてせずにリリースしたけど。
特に問題も起きずに、稼働しているらしい(小声で、さすが俺。


誰とは言わないが…。

※電化製品が簡単に作られているというわけではなく、店頭に並んでいるのは完成品という意味です。

スーパーユーザー!

 自分はコンピュータのシステムをよく理解していると勘違いしているユーザは、事ある毎にスーパーユーザを作って、なんでもできるようにしてという。
 当然データの整合性が崩れるてしまう事件が起きる可能性があることなんてこれっぽっちも考えに無い。

誰とは言わないが…。

2013年8月9日

新潟まつり2013 花火

外で音がすると思ったら、新潟祭りの花火。
今年から、三日間上がるらしいよ。


2013年8月6日

Windows Updateで作成された不要なフォルダを消す方法

 Windows7でWindows Updateしているとディスク容量が大きいドライブに数字とアルファベットで構成されているフォルダが勝手にさくせいされて消えないで残る場合があります。
(WindowsUpdateが失敗すると残るらしい)

 その残骸のフォルダを消す方法。
エクスプローラーでやることもできると思いますが、管理者のコマンドプロンプトでやるほうがちょっと楽なのでその方法を紹介。


手順は、フォルダの所有権を取得→フォルダをEveryoneのアクセス権を付ける→削除するの手順です。


  1. コマンドプロンプトを管理者で起動する。
    スタートメニューの「コマンドプロンプト」を右クリックし、「管理者で実行(A)...」をクリックする。
    管理者:コマンド プロンプトが起動します。
  2. takeownコマンドで現在のログインユーザに所有権を与える(指定したフォルダ以下全部のファイル)
    例)takeown /r /f H:\16429603b3e0bc8a76c894993b295c
  3. icaclsコマンドでフォルダのアクセス権に付ける(指定したフォルダの下のEveryoneでフルアクセス権)
    例)icacls H:\16429603b3e0bc8a76c894993b295c /grant Everyone:F /T
  4. エクスプローラーでフォルダを削除する。

たくさんあるとちょっと面倒ですが、削除用のバッチファイルかなんか作れば一回で終われますね。
そもそも、そのバッチファイルは、1回しか使いませんけどね。


2013年8月4日

dotNET アプリケーションをビルドするbatファイル

 昔々、やってたプロジェクトでdotNETで作成したWebアプリケーションをコンパイルするのに毎回VisualStudioを起動してコンパイルしてリリースやテスト環境を作るのが嫌になったのと、たかがこれだけの作業すら自分でやりたくない偉ぶってる人を批判するためにビルドするバッチファイルを作りました。
 ちなみに、VSSにも対応していました。
一応中を読めばわかると思うんですが解説が欲しい人はコメント下さい。

 当時は、VisualStudio2005を使っていたので、このバージョンですが、新しいのにも適用できるのでは無いでしょうか?


やってることは

  1. 1.Subversionのリポジトリからソースを一式取ってくる
  2. 2.ソリューションをビルドする
  3. 3.リリースファイルをフォルダにまとめる。
  4. 4.ビルド結果をログファイルとして作成する。

です。

 ホントは、これを元に改良していろいろなプロジェクトに適用してほしかったんですが、だれも何も指定内容です。
 殆どの人が自分で作業したくないんですよね。
システム開発者が消費者(出来合いのものを使うだけ)になっている現状がありました。


ダウンロードはこちら
dotNTAppBuilder.zip