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箇所にまとめられる
  • 余計な変数を作る必要がない(弱い理由ですが)

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