2013年12月28日土曜日

SQL Serverを使う限り中小企業のクラウドサービスの提供はありえない?





利用料払いでSQL Serverを使ったクライアントへのサービスを提供しようとすると非常に高価になります。2コアバックで18K~19Kくらいでしょうか、、、SPLAS流通会社へ別途問い合わせが必要
http://www.microsoft.com/ja-jp/licensing/licensing-options/spla-program.aspx


ではどうすればいいのか、、、、

1)大規模なSQL Serverを作成し、シェアする
  課題
  ・中小企業には厳しい
  ・管理が煩雑になりうる(影響を加味して管理しなければならない。
2)Editionを変更する
  ⇒ないです。ExpressやWorkgroupなどは、SPLAに対応していない
3)SQL Serverをやめる
  ・MySQLやPostgreSQLなどに乗り換える
  ⇒対応コストが掛かり過ぎる上に、自社のエンジニアのスキルスセットの変更は難しい

、、、、ベストな対応案が無いですね。

なにかいい案ってありますか?

言えるのは、最初から開始するなら、Cloud前提のアーキテクチャで固めるべきでしょう。
技術選択の誤りは、ブラックな環境を生み出すので気をつけたほうがいいです。


2013年12月27日金曜日

139 unable to close session for _accessoryの対応について

ERROR - opening session failed
ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-242/EASession.m:-[EASession dealloc] - 139 unable to close session for _accessory=0x14e846d0 and sessionID=65536


またこのエラーが発生しました。


スキャナが繋がっていない場合のプリンタの電源OFF/ONで発生します。


対応は、Bluetooth接続時にコネクションのハードウェアモデルを見るように対応しました。


Bluetoothのイベントキャッチ


  [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];

  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(_accessoryDidConnect:)
                                               name:EAAccessoryDidConnectNotification
                                             object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(_accessoryDidDisconnect:)
                                               name:EAAccessoryDidDisconnectNotification
                                             object:nil];



イベントの記載方法


- (void)_accessoryDidConnect:(NSNotification *)notification
{


 EAAccessory *connectedAccessory =  [[notification userInfo] objectForKey:EAAccessoryKey];
 OPN2002iBluetoothService *sessionController = [OPN2002iBluetoothService sharedController];

    NSLog(@"description=%@",[connectedAccessory description]);
   
    if ([[[connectedAccessory modelNumber] substringToIndex:3] isEqualToString:@"OPN"]) {



補足


2013-12-29 10:08:34.483 UNITE-POS[716:60b] description=<EAAccessory: 0x155eff40> {
  connected:YES
  connectionID:28447505
  name: Wireless Barcode Scanner
  manufacturer: OPTOELECTRONICS CO.,LTD.
  modelNumber: OPN-2002i
  serialNumber: 000956
  firmwareRevision: 1.0.0
  hardwareRevision: 1.0.0
  protocols: (
    "jp.opto.opnprotocol"
)
  delegate: (null)
}


2013-12-29 10:11:21.850 UNITE-POS[716:60b] description=<EAAccessory: 0x155ed810> {
  connected:YES
  connectionID:28447508
  name: Star Micronics
  manufacturer: Star Micronics
  modelNumber: Star Micronics
  serialNumber:
  firmwareRevision: 0.1.0
  hardwareRevision: 0.1.0
  protocols: (
    "jp.star-m.starpro"
)
  delegate: (null)
}



わからないこと


Bluetoothの接続時にDidConnectが2回発生します。

この理由がわからなかった。。。

2013年12月7日土曜日

iOS7だとFTP通信を行った後にまれにアプリケーションが完全終了する

iOS7になって画面が広くはなり、正しい4:3の画面サイズになったのは嬉しい。

入れたコード
                        //iOS7対応
                        if (SYSTEM_VERSION_LESS_THAN(@"7.0"))
                        {
全体コード
- (void) stream: (NSStream *) theStream handleEvent: (NSStreamEvent) streamEvent
{
    NSData *data;
   
    switch (streamEvent)
    {
        case NSStreamEventOpenCompleted:
        {
   self.filesInfo = [NSMutableArray array];
            self.didOpenStream = YES;
            self.receivedData = [NSMutableData data];
        } break;
           
        case NSStreamEventHasBytesAvailable:
        {
            data = [self.streamInfo read: self];
           
            if (data)
            {
                [self.receivedData appendData: data];
            }
           
            else
            {
                InfoLog(@"Stream opened, but failed while trying to read from it.");
                [self.streamInfo streamError: self errorCode: kBRFTPClientCantReadStream];
            }
        }
        break;
           
        case NSStreamEventHasSpaceAvailable:
        {
           
        }
        break;
           
        case NSStreamEventErrorOccurred:
        {
            [self.streamInfo streamError: self errorCode: [BRRequestError errorCodeWithError: [theStream streamError]]];
            InfoLog(@"%@", self.error.message);
        }
        break;
           
        case NSStreamEventEndEncountered:
        {
            NSUInteger  offset = 0;
            CFIndex     parsedBytes;
            uint8_t *bytes = (uint8_t *)[self.receivedData bytes];
            int totalbytes = [self.receivedData length];
            do
            {
                CFDictionaryRef listingEntity = NULL;
               
                 parsedBytes = CFFTPCreateParsedResourceListing(NULL, &bytes[offset], totalbytes - offset, &listingEntity);
               
                if (parsedBytes > 0)
                {
                    if (listingEntity != NULL)
                    {
                        //iOS7対応
                        if (SYSTEM_VERSION_LESS_THAN(@"7.0"))
                        {
                            id date = [(__bridge NSDictionary *) listingEntity objectForKey: (id) kCFFTPResourceModDate];
                            if (CFGetRetainCount((__bridge CFTypeRef) date) >= 2)
                                CFRelease((__bridge CFTypeRef) date);
                        }
                        self.filesInfo = [self.filesInfo arrayByAddingObject: (__bridge_transfer NSDictionary *) listingEntity];
                    }
                    offset += parsedBytes;
                }
               
            } while (parsedBytes > 0);
            [self.streamInfo streamComplete: self];
        }
        break;
       
        default:
            break;
    }
}

サーバ管理者もしているが、WindowsServer2008R2のファイル共有へ接続が出来ない問題の対応

有るサーバがファイル共有が使えなくなっているこの調査に難航したのでメモをアップする。

対象のサーバ
Windows Server 2008R2
ホストOS
Windows Server 2012
仮想マシン
Hyper-V3.0
一番の問題は、「ネットワークと共有センター」からネットアダプターが参照できないこと

対応のためにやったこと
1)Windows Updateで最新化

2)ググった
 参考にしたページ
 http://www.aibsc.jp/joho/otasuke_m/clientserver/netcheck.html
 ⇒共有サービスからネットワークアダプタが確認ができない。

3)Hyper-V 統合サービスのアップグレードもした。
 ---------------------------
 Hyper-V 統合サービスのアップグレード
 ---------------------------
 以前のバージョンの Hyper-V 統合サービスがインストールされていることが検出されました (バージョン 6.1.7601.17514)。このインストールをアップグレードするには、[OK] をクリックしてください。

それでも現象は変わらずでした。

4)結果、
 デバイスマネージャーからネットワークアダプタ「Microsoft Hyper-V ネットワーク」を削除して再起動後にネットワークの設定を行ったところ復旧しました。

以上

2013年12月4日水曜日

ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213.3/EASession.m:-[EASession dealloc]


発生しているエラー
2013-08-28 14:04:20.879 UNITE-POS[365:907] ERROR - opening session failed
2013-08-28 14:04:20.881 UNITE-POS[365:907] ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-213.3/EASession.m:-[EASession dealloc]
- 137 unable to close session for _accessory=0x20887b40 and sessionID=65536
2013-12-03 11:51:05.935 UNITE-POS[1575:60b] ERROR - opening session failed
2013-12-03 11:51:05.936 UNITE-POS[1575:60b] ERROR - /SourceCache/ExternalAccessory/ExternalAccessory-242/EASession.m:-[EASession dealloc]
- 139 unable to close session for _accessory=0x15d9dea0 and sessionID=65536
参考にしたマニュアル、サンプル
https://developer.apple.com/library/ios/samplecode/EADemo/Introduction/Intro.html

修正例
  [[EAAccessoryManager sharedAccessoryManager] registerForLocalNotifications];
  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(_accessoryDidConnect:)
                                               name:EAAccessoryDidConnectNotification
                                             object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self
                                           selector:@selector(_accessoryDidDisconnect:)
                                               name:EAAccessoryDidDisconnectNotification
                                             object:nil];

- (void)_accessoryDidDisconnect:(NSNotification *)notification
{
 [_service closeSession];        
 NSLog(@"▼ScannerPlugin.m DidDisconnect -> close");
 CDVPluginResult *result;
 result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"_accessoryDidDisconnect"];
 [self writeJavascript:[result toSuccessCallbackString:_callbackEventId]];
}
↓マニュアルを見て修正しました。
- (void)_accessoryDidDisconnect:(NSNotification *)notification
{
    EAAccessory *disconnectedAccessory =  [[notification userInfo] objectForKey:EAAccessoryKey];
   
    if ([disconnectedAccessory connectionID] == [[_service accessory] connectionID])
    {
        [_service closeSession];
        NSLog(@"▼ScannerPlugin.m DidDisconnect -> close");
        CDVPluginResult *result;
        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"_accessoryDidDisconnect"];
        [self writeJavascript:[result toSuccessCallbackString:_callbackEventId]];
       
    }
}

補足

bluetoohデバイスが2つ以上あることを前提でコードを組まないといけませんね。

Xamarin、PhoneGap(Cordova)、Titaniumをやってきているが、以外なところでハマった。

2013年11月11日月曜日

iOSでCFNetworkのTCPを使うとBAD_ACCESSエラーが発生する問題

iOS6.1では発生しなかったので、iOS7のエミュレータ、実機で下記のコードを入れて対応
//定義
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)

- (void) stream: (NSStream *) theStream handleEvent: (NSStreamEvent) streamEvent
{
    NSData *data;
   
    switch (streamEvent)
    {
        case NSStreamEventOpenCompleted:
        {
   self.filesInfo = [NSMutableArray array];
            self.didOpenStream = YES;
            self.receivedData = [NSMutableData data];
        } break;
           
        case NSStreamEventHasBytesAvailable:
        {
            data = [self.streamInfo read: self];
           
            if (data)
            {
                [self.receivedData appendData: data];
            }
           
            else
            {
                InfoLog(@"Stream opened, but failed while trying to read from it.");
                [self.streamInfo streamError: self errorCode: kBRFTPClientCantReadStream];
            }
        }
        break;
           
        case NSStreamEventHasSpaceAvailable:
        {
           
        }
        break;
           
        case NSStreamEventErrorOccurred:
        {
            [self.streamInfo streamError: self errorCode: [BRRequestError errorCodeWithError: [theStream streamError]]];
            InfoLog(@"%@", self.error.message);
        }
        break;
           
        case NSStreamEventEndEncountered:
        {
            NSUInteger  offset = 0;
            CFIndex     parsedBytes;
            uint8_t *bytes = (uint8_t *)[self.receivedData bytes];
            int totalbytes = [self.receivedData length];
          
            do
            {
                CFDictionaryRef listingEntity = NULL;
               
                 parsedBytes = CFFTPCreateParsedResourceListing(NULL, &bytes[offset], totalbytes - offset, &listingEntity);
               
                if (parsedBytes > 0)
                {
                    if (listingEntity != NULL)
                    {
                        if (SYSTEM_VERSION_LESS_THAN(@"7.0"))
                        {
                            id date = [(__bridge NSDictionary *) listingEntity objectForKey: (id) kCFFTPResourceModDate];
                            if (CFGetRetainCount((__bridge CFTypeRef) date) >= 2)
                                CFRelease((__bridge CFTypeRef) date);
                        }
                        self.filesInfo = [self.filesInfo arrayByAddingObject: (__bridge_transfer NSDictionary *) listingEntity];
                    }
                    offset += parsedBytes;
                }
               
            } while (parsedBytes > 0);
            [self.streamInfo streamComplete: self];
        }
        break;
       
        default:
            break;
    }
}

2013年11月8日金曜日

asp.net json 400 bat requestについて(データサイズの大きいリクエスト)

Web.configの設定を見なおして対応

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.web>
  <compilation targetFramework="4.0" />
 </system.web>
 <system.serviceModel>
  <!-- WCFがASP.NET環境で動くように -->
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  <standardEndpoints>
   <webHttpEndpoint>
    <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </standardEndpoint>
   </webHttpEndpoint>
  </standardEndpoints>
 </system.serviceModel>
</configuration>

2013年10月30日水曜日

VMWare ESXi を使ってみた

VMware vSphere Client
をインストールして、サーバに接続し、仮想サーバを扱いました。

Active Directoryが消えない

Active Directoryが消えない。
強制終了のオプション
dcpromo /forceremoval
をやっても消えませんでした。

強制終了は、
DFS Replicationのアカウントを聞かれて先に進めない。

対応は、
ドメイン コントローラーの降格に失敗した後、Active Directory のデータを削除する方法
http://support.microsoft.com/kb/216498
をみて、手でデータを削除して降格させました。

CT960m500SSD1のCrystalDiskInfoの結果


殆ど使っていませんが、2000時間を超えていた、、、


その後、2000時間使った結果


ここまで安定して早いとなると1TBが5万円のSSDということで、サーバに使用していこうかと考えています。
あとは、サーバでの使用(RAID1)でどのくらい性能が劣化するかをRAIDなしとRAID1で比較したいと考えている。




2013年10月24日木曜日

セキュリティソフトインストールによる業務システム環境の破壊について

ウィルスバスターの注意点
 過去に.NETやASP.NETなどの環境を破壊して業務システムを止めたことがある。
 動いている業務システムに後付でウィルスバスターを入れるのは注意が必要。
 経験上、入れた後に必ず業務システムの動作チェックをきちんと行う必要がある。

 経験とは、
   ・.NET Frameworkの破壊
   ・ASP.NETの.NETバージョンの変更
 
   ・アプリケーションプールの権限の変更
などを勝手に行い、業務システムの動作に影響を及ぼした。

経験から、
 ・必ず、セキュリティソフトは業務システムをインストールする前にインストールが必要。
   (その上で、業務システムの動作確認をするべし
     業務システムの検証後にセキュリティソフトを入れると問題があとで発覚することとなる)
 ・セキュリティソフトは最新版のインストールが必要となります。
  (古い定義のセキュリティソフトは問題がある場合もある。
    新しいと言って問題がないとはいえないが)
 ・クライアントのセキュリティソフトに多種多様なセキュリティソフトを使用するべきではない。
  (障害の種類が増えるだけである。)

以上

ローカル コンピュータ 上の Performance Logs and Alerts サービスは起動して停止しました。

修理

あるプログラムが下記のエラーを出力。
通常の直し方では復旧せずに、レジストリを再構築で対応しました。
---------------------------
パフォーマンス ログと警告
---------------------------
System Overview ログまたは警告は開始されませんでした。 現在の状態を表示するには、ログまたは警告の一覧を最新の情報に更新してください。 またはアプリケーション イベント ログでエラーを参照してください。 ログと警告によっては、多数のカウンタが含まれる場合や、 含まれているカウンタが、ネットワーク上から無くなったリモート システムから収集されている場合に開始するのにしばらく時間が必要となることがあります。詳細な情報はオンライン ヘルプのトラブルシュートを参照してください。
---------------------------
OK  
---------------------------
---------------------------
サービス
---------------------------
ローカル コンピュータ 上の Performance Logs and Alerts サービスは起動して停止しました。
パフォーマンス ログ、警告サービスなど、一部のサービスは作業がない場合に自動的に停止します。
---------------------------
OK  
---------------------------

ハンドルされていない例外 : System.InvalidOperationException: プロセス パフォーマ
ンス カウンタは無効にされているため、要求された情報を実行できません。
   at System.Diagnostics.NtProcessManager.GetProcessInfos(PerformanceCounterLib
library)
   at System.Diagnostics.NtProcessManager.GetProcessInfos(String machineName, Bo
olean isRemoteMachine)
   at System.Diagnostics.ProcessManager.GetProcessInfos(String machineName)
   at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.get_ProcessName()




サービスの起動のエラー
 ローカルコンピュータ上のPerformance Logs and Alertsサービスは起動して停止しました。
 パフォーマンスログ、警告サービスなど、一部のサービスは作業がない場合に自動的に停止します。」

パフォーマンスモニターを起動し
 グラフ上で右クリックし追加を選択すると、カウンタの追加画面が表示されます。
その画面の、コンボボックスになっている
パフォーマンスオブジェクトの選択項目がすべて1~4桁の数列になっています。
http://oshiete.goo.ne.jp/qa/1616107.html


http://support.microsoft.com/kb/274305/ja
を使って設定の見直し

きっかけ
https://groups.google.com/forum/#!topic/microsoft.public.jp.windows.server.general/TeeeuJlF-BU
lodctr /rコマンドを使用してパフォーマンスカウンタを修理
 http://support.microsoft.com/kb/300956/ja
これでなおりました。
コーディングでGetProcessを使用している場合は、注意が必要ですね。
PCの状態によっては途中で動作しなくなる。
Mutexを使うほうがよさそうですね。

2013年9月13日金曜日

WindowsでiPhone/iPad開発の実施

仕事柄、色々となデバイス、OS上でのいろいろな言語を使った開発を行います。

C#でiPhone/iPad上のアプリを作る場合は、Xamarinを使います。
Windows上のVisual Studio 2012でもiPad上でアプリケーションをデバック実行出来ました。
もちろん、Mac上のXamarin上でC#の開発も出来ました。

XamarinのC#のバージョンは4.0となっており、await/waitが使えたり、Linqが使えたりするので、通信やDBを使う業務アプリケーションの開発が非常にパワフルにできます。

これはすごく便利な環境です。
ちょっとでバック実行を開始するまでの時間が掛かるのが難点ですが、PhoneGap(Cordova)やTitaniumなどに比べるとすこぶるコーディングが楽です。

そしてGUIの機能をフルに使えるので、かっこいいアプリケーションを量産できる。

C#で作られたiOS/MacOSのアプリに興味が有る方は、こちらまで


using System;
using MonoTouch.UIKit;
using System.Drawing;
namespace HelloWorld_App2
{
    public class MyViewController : UIViewController
    {
        UIButton button;
        int numClicks = 0;
        float buttonWidth = 200;
        float buttonHeight = 50;
        public MyViewController()
        {
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.Frame = UIScreen.MainScreen.Bounds;
            View.BackgroundColor = UIColor.White;
            View.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight;
            button = UIButton.FromType(UIButtonType.RoundedRect);
            button.Frame = new RectangleF(
                View.Frame.Width / 2 - buttonWidth / 2,
                View.Frame.Height / 2 - buttonHeight / 2,
                buttonWidth,
                buttonHeight);
            button.SetTitle("Click me", UIControlState.Normal);
            button.TouchUpInside += (object sender, EventArgs e) =>
            {
                button.SetTitle(String.Format("clicked {0} times by kiyo744", numClicks++), UIControlState.Normal);
            };
            button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleTopMargin |
                UIViewAutoresizing.FlexibleBottomMargin;
            View.AddSubview(button);
        }
    }
}

2013年9月5日木曜日

DELLのPawer Edgeにて「E2111 SBE DIMM4」が発生

Dell OpenManage Server Administratorで見てみると
メモリアレイのDIMM4が状態×(エラー)となっている。

詳細を見てみると

「シングルビット警告のエラーレートを超えました
  シングルビットエラーのエラーレートを超えました」

が発生していました。

補足
  このPower Edge 1900って当時はものすごく効果な
  イメージで購入したのに、自分のノートPCより
  全然スペックが低いのに驚いた。
 
  ノートPC   メモリ16GB
             SSD 960GB+HDD7200rpm 500GB
  サーバ     メモリ 7GB
             HDD 7200rpm  1.5TB

6,7年しか立っていなのに、、、

2013年9月4日水曜日

PhoneGapでのアーカイブ作成時のエラー

アーカイブを作成すると
clang: error: linker command failed with exit code 1 (use -v to see invocation)
が発生しました。

対応は、
http://stackoverflow.com/questions/12621421/phonegap-cordova-build-error-apple-mach-o-linker-error-no-such-file-or-direct
の通り、2.9のバグのようです。

2013年7月20日土曜日

'autorelease' is unavailable: not available in automatic reference counting modeとは

ARCが有効なのに、releaseやautoreleaseを記載したために発生した。
 
例)
  downloadData = [[[NSMutableData alloc]initWithCapacity:1] autorelease];
  downloadFile = [[[BRRequestDownload alloc]initWithDelegate:self] autorelease];
 
  downloadData = [[NSMutableData alloc]initWithCapacity:1];
  downloadFile = [[BRRequestDownload alloc]initWithDelegate:self];
・・・
 [NSMutableData release];
[[BRRequestDownload release];
 
ARCを有効にする場合は、

  downloadData = [[NSMutableData alloc]initWithCapacity:1];
  downloadFile = [[BRRequestDownload alloc]initWithDelegate:self];
・・・
クラス変数の場合は

  downloadData = nil;
   downloadFile = nil;
終わったらInstrumentsで開放を確認する



 
ARCの変更は、
 

SSD960GBにしました。crucial CT960M500SSD1

念願のcrucial CT960M500SSD1を購入し換装しました。
http://www.crucial.com/store/ProductMarketing_m500.aspx


性能は

-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
                           Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]
           Sequential Read :   458.027 MB/s
          Sequential Write :   397.238 MB/s
         Random Read 512KB :   402.896 MB/s
        Random Write 512KB :   365.297 MB/s
    Random Read 4KB (QD=1) :    20.402 MB/s [  4980.9 IOPS]
   Random Write 4KB (QD=1) :    53.052 MB/s [ 12952.1 IOPS]
   Random Read 4KB (QD=32) :   324.482 MB/s [ 79219.2 IOPS]
  Random Write 4KB (QD=32) :   274.469 MB/s [ 67009.0 IOPS]
  Test : 1000 MB [C: 38.8% (136.2/351.2 GB)] (x5)
  Date : 2013/07/12 19:26:00
    OS : Windows 7  SP1 [6.1 Build 7601] (x64)



です。

換装手順は、
EaseUS Todo Backup Free5.6
を使用しました。(前回のINTELのSSD 320への換装と同じやり方)

なぜか、このツールで換装すると、MBRが故障するので、回復をかけて上げる必要があります。

それが注意点となります。



iOSでのエラー対応について

No 'assign','tetain', or 'copy' attribute is specified - 'assign' is assumed
Default property attribute 'assign' not appropriate for non-GC object
FTPのロジックを作っています。
進捗率表示やキャンセル機能があるもの。

上記のエラーが発生して困っていました。

ARCの有効・無効を意識して開発しないと行けないんですね。
あとは最終試験では、Leaksを使用した試験も必要ですね。

参考にしたサイト
http://www.crossbridge.biz/enable-arc

2013年7月11日木曜日

メモリを16GBへ増設したので、デスクトップヒープを増やした


http://support.microsoft.com/kb/947246/ja

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\SubSystems]
↓増やした設定内容

%SystemRoot%\system32\csrss.exe
ObjectDirectory=\Windows SharedSection=4096,30720,2048
Windows=On
SubSystemType=Windows
ServerDll=basesrv,1
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2
ServerDll=sxssrv,4
ProfileControl=Off
MaxRequestThreads=16

補足

デスクトップモニタでヒープサイズを確認したようしたらエラーが発生した。。。。

デスクトップヒープモニタ
http://www.microsoft.com/en-us/download/confirmation.aspx?displayLang=en&id=17782
デスクトップヒープモニタの使い方
http://support.microsoft.com/kb/914216/ja
dheapinst - Driver Installation error occured (124)

11:17:34.42>dheapinst.exe -y srv*http://msdl.microsoft.com/download/symbols
  dheapinst - Driver Installation error occured (124)
>NG。

11:18:58.65>set _NT_SYMBOL_PATH=symsrv*symsrv.dll*C:\Symbols*http://msdl.microsoft.com/download/symbols
11:19:34.68>dheapinst
>NG

結局、何度実施してもデスクトップヒープは起動できずに本日は諦めた。orz

2013年5月16日木曜日

Galaxy S2のネットワーク不調の問題


一度ネットワークを入れ直さないと繋がらなくなります。
これはバージョンアップ後の不具合で既知の不具合です。

しばらくは、最新のOSにはしないほうが良いでしょう。

なぜ、既知かって?

それは、無印のS2を使っている人、3人がすべて同様の症状に悩まされているからです。
S2は安定さえしていれば、最強ですが、
  ・今の通信の問題  
  ・低温など温度変化で液晶が正しく表示しなくなる
などの弱点があります。

また、それを受け入れてもよいというくらい他のソニー以外のAndroidのスマフォはしょぼいんです。


2013年5月1日水曜日

2100:detection error on HDD0 (Main HDD) エラーが発生した


2100:detection error on HDD0 (Main HDD) エラーが発生した
その後に
 Invalid partition table
と表示され、PCが起動しませんでした。

対象は、ThinkPad T430sにintel SSD320 300G+7200rpmの500GB HDDを積んでいるノートパソコンである。

やってみたこと

1)診断を行う

OS標準
chkdsk ・・・異常なし
Lenovo標準
ハードウェア診断
ハードウェア クイックスキャン
Intel標準
Intel Solid-State Drive Toolbox
診断用完全スキャン

2)バックアップを取る

EausUS Todo Backup 5.6
⇒前回のバックアップは13/4/21だった。

3)今後
SSDの交換を検討しています。
もともと、300GBということで容量不足だったので、
SSD 960GB+HDD 1TBで考えています。

SSD
http://kakaku.com/item/K0000476156/
HDD 7200rpms
http://kakaku.com/item/K0000465942/

所感
昔crucial 256GBを使って、早いけど信頼性がいまいちだった思いであるので、
本当はintelのSSDにしたいんだけどなぁって思っています。
Fusion-ioがパテント技術を入れて2.5インチ7mmでIOPS20万くらいの
1TB SSDを出してくれればいいのにね


Hyper-V2.0でゲストOS Windows2003や2008R2のネットワークファイルコピーが遅い問題


サーバは、DELLのPowerEdge R320で
ネットワークカードは、Broadcom Network Adapter です。


1)DELLからすべてのドライバをダウンロードして適用

BIOS、チップセット、ネットワークをUPDATE

⇒これでは解決しない

2)日本語のサイトの対応

コマンドで機能を無効にする
http://teruc.dnsalias.net/blog/2012/04/22/87

オフロードを無効にする
http://www.atmarkit.co.jp/fwin2k/win2ktips/1404noffload/noffload.html

その他のチェックポイント
http://bearmini.net/blog/View.aspx?bid=1&aid=143

⇒これでは解決しない

3)海外の情報も漁った

ネットワーク共有からファイルコピー速度は、Hyper-Vのコンピュータで遅い
http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/f829b401-6b95-41e7-bfa3-cf4f383aa825/

Windows 2008のネットワーク·ファイルには、非常に遅い転送
http://social.technet.microsoft.com/forums/en-US/winservergen/thread/e807a6b5-5602-4600-ab4e-2e2057d2fc77

Windows Vista または Windows Server 2008 を実行しているコンピューター間のサーバー メッセージ ブロック (SMB) セッションでのハンドル リークが発生します。
http://support.microsoft.com/kb/948572/en-us


Windows Vista SP1 および Windows Server 2008 を実行しているコンピュータで使用できる信頼性とパフォーマンスを向上させる更新プログラムについて
http://support.microsoft.com/kb/955302/en-us

ネットワークが遅い
http://social.technet.microsoft.com/Forums/en-US/windowsserver2008r2virtualization/thread/8aeb63b7-e368-457d-bd41-fe55d0caded4

4)結果的には、解決しました。

Virtual Machine Queues
Enable

Disable
に変更してネットワークの問題を解決させました。




2013年4月26日金曜日

今更だけどXmlHttpRequestを使ってみた


1)Windows7で動作確認したのは下記の通り

Internet Explorer 9.0 ×(ネット上の通りActiveXObjectを使う)
Chrome 26.0
Opera 12.15
Safari 5.1.7
Firefox 20.0

ほとんどのブラウザで動作した。

2)jQueryMobile上でも使ってみてAndroidで動作確認したのは下記の通り

Adroid 4.0.3 Opera 12.10
Adroid 4.0.3 ブラウザ
Adroid 4.0.3 Chrome 26.0
Adroid 4.0.3 firefox 20.0

3)最後にGapPhone(cordoba)2.5で
ネイティブに変換したら下記のエラーが発生した。
04-26 11:20:58.848: D/CordovaLog(6518): Uncaught Error: NETWORK_ERR: XMLHttpRequest Exception 101
・・・・はて?

なぜ、使えないかは不明だが、後日調査しようと思う。

2013年4月23日火曜日

Truncateは、ロールバックはするが、Triggerが動かない。(SQL Server 2012)

Triggerでデータを更新する仕組みを入れている場合、データの総入れ替えをTrancate Tableで行う場合に注意しなければなりません。

2013年4月11日木曜日

Ntbackup.exe 使用時のエラー メッセージ "要求されたメディアは空ではありません"

Windows 2000 Serverでバックアップ(ntbackup)を設定している時に発生しました。
調べたら↓のサイトがありましたが、原因は、バックアップ先のフォルダを変更したため、自分が作成したバックアップファイルじゃないと判断され、上書き確認を聞いてくるようになったようです。

http://support.microsoft.com/kb/323274/ja

対応は、バックアップファイルを消しいて再度バックアップを実施したらうまくいきました。

2013年4月8日月曜日

Galaxy S2 SC-02Cの不具合について


Galaxy S2 SC-02Cの不具合について
やっと今年で使用して2年たちます。
なんとか、二年耐えました。
赤裸々に今のGalaxyで困っていることをメモします。

液晶の不具合
  1)温度に影響がしやすいようです。
  http://kiyo7447.blogspot.jp/2012/02/galaxy-s2-ssc-02c.html

充電時の不具合
  1)充電中に操作すると電池がたまらない。操作が鈍くなる。
  2)ドコモのフォーマ用の電源アダプタを変換して使っているとフォーマ用の電源アダプタが壊れます。これはほぼ仕様だと考えています。(家では、4つが壊れた)

充電開始時の不具合
  1)充電を開始すると操作ができなくなります。
    この場合は、一旦、電源を押してロックしてアンロックすると操作ができるようになります。

その他
  1)勝手に電源が切れる
  2)勝手にCPU100%となり、いつの間にか電池がなくなる。

う~ん。こんなに不具合があっても、なぜか、国産スマフォよりもマシなんですから不思議ですよね。

2013年3月30日土曜日

SQL Azureを使ってのデバックでエラーが発生する。



Azureへの発行はうまく行き、Azure上でも動作しているが、Visual Studio 2010でSQL Azureを使ったデバックを行うと下記のエラーが発生する。
'/hogehoge' アプリケーションでサーバー エラーが発生しました。
Cannot open database "[hogehoge]" requested by the login. The login failed.
Login failed for user 'hogehogeroot'.
This session has been assigned a tracing ID of 'a54af759-414b-4080-8bf3-daf9de1182b5'.  Provide this tracing ID to customer support when you need assistance.
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。
例外の詳細: System.Data.SqlClient.SqlException: Cannot open database "[hogehoge]" requested by the login. The login failed.
Login failed for user 'hogehogeroot'.
This session has been assigned a tracing ID of 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'.  Provide this tracing ID to customer support when you need assistance.
ソース エラー:

行 87: dt.Select.Parameters.Add(new SqlParameter("@担当者コード", _textBox担当者コード.Text));
行 88: DataSet ds = new DataSet();
行 89: dt.Adapter.Fill(ds);
行 90:
行 91: if (ds.Tables[0].Rows.Count == 0)

解決方法は調査中。

Visual Studio 2010からAzureへアップでない。

作成したASP.NETのアプリをAzureへ発行としてもアップできない。。。。


使用してツール群が 2012/6のツール群でそれを2012/10のツール群へ変更したらうまくいきました。



Windows 7の再起動に時間がかかる

Windows 7 Professional x64を使っています。
突然再起動に時間がかかるようになりました。(OSの読み込み開始まで5分以上)


そこで、対応できたのでその時のメモ

1)CCLEANERによるシステム不具合を引き起こすゴミデータ排除。
http://www.altech-ads.com/product/10001211.htm
・「CCLEANER」の起動→「クリーナー」である「ウィンドウズ」項目一覧→「フォームの入力履歴」、「ゴミ箱を空にする」、「空きスペースの掃除」以外全チェック→「クリーンアップ開始」をクリック
・上記終了後、「レジストリ(G)」項目に進む→「問題点をスキャン(S)」をクリック→問題点があったら「問題点を解決(S)」

2)GLARY UTILITYソフトによるシステムレジストリーの最適化
ダウンロード
http://www.forest.impress.co.jp/lib/sys/file/delundel/glaryutils.html
・「GLARY UTILITYES」の起動→「モジュール」項目欄に進む→「クリーンアップ&修復」に進む→「レジストリ クリーナー」→「レジストリーの問題点のスキャン」選択→問題点があったら「修復」選択
・上記終了後、「モジュール」の「最適化&性能向上」項目欄に進む→「REGISTRY DEFRAG」欄に進む→レジストリーの最適化を行いましょう。

実施して約1分半でOSが起動するように治りました。良かった。


お客様にプレ納品(Azureの使用について)DBがアップできない。

ASP.NETのアプリをお客様に納品するためにAzureにアップして確認してもらいましhた。
その時の問題点をまとめる。

環境
SQL Server 2012 SP1
Visual Studio 2012
をつかって開発しました。


1)問題1 SQL Server 2012のデータベースをAzureにアップできない。

エラーは、

TITLEMicrosoft SQL Server Management Studio
------------------------------

指定したデータベースからパッケージを抽出できませんでした。 (Microsoft.SqlServer.Dac)

------------------------------
ADDITIONAL INFORMATION:

内部エラー: Ese を初期化できませんでした。 (Microsoft.Data.Tools.Schema.Sql)

------------------------------

内部エラー: Ese を初期化できませんでした。 (Microsoft.Data.Tools.Schema.Sql)

------------------------------

Disk IO error (Microsoft.Data.Tools.Schema.Sql)

------------------------------
ボタン:

OK
------------------------------

が発生。
⇒SQL Server 2012 Service Pack1 CU3を当てて対応
http://support.microsoft.com/kb/2790947


[SQL Server 2012 Service Pack 1]
Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
       Dec 28 2012 20:23:12
       Copyright (c) Microsoft Corporation
       Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

v
[SQL Server 2012 Service Pack 1 CU3]
Microsoft SQL Server 2012 (SP1) - 11.0.3349.0 (X64)
       Mar  8 2013 17:33:56
       Copyright (c) Microsoft Corporation
       Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

になりました。

画面操作イメージをお客様に連絡する


1)目的

お客様にプロトタイプのプロトを納品するときは、システムの動作を動画キャプチャして納品することもある。
今までは、VMWare Workstationを使用して仮想マシンをムービー(動画)キャプチャしていたが、ホストOSでもムービーキャプチャを使用と思い、調べてみた。

下記のサイトが見つかった
http://www.gigafree.net/media/recording/


2)課題
ムービーキャプチャ、動画キャプチャをやるのに最適なフリーソフトはどれなのか

3)どれがいいか調べてみる
                                                 ↓ネット上の検索結果件数
アマレココ 256K
⇒良いと思ったがWin7ではうまく使えなかった。日本語のフォルダの対応もできていない。
AG-デスクトップレコーダー 170K
CamStudio 2,560K(海外もあるから?)
カハマルカの瞳 82K
        ⇒ネット上で情報が少ないのでやめる。
Bandicam 3,030K <良さそう
http://www.gomplayer.jp/bandicam/

⇒CamStudioを使うことにしました。
個人的には今もバージョンアップしているツールがいいと思っているからね。


2013年3月11日月曜日

プロジェクトを実施する上での注意事項 適当にまとめた


KIYO7447の中規模PJの成功に向けてのリスクチェック表
また、見積時にお客様とANDをとった方が良い項目

とてつもなく不明な物件の見積もりを相談された場合に確認したほうがいいリスト

1)PJ目的の確認
    1.お客様の組織や権限、予算、実施などを把握
        現場が強い会社やワンマン社長の会社など社風があるので、ステークホルダーや意思決定者を抑える必要がある。
    2.お客様がシステムに求めている事の確認
        そこに注力したほうが効率的。
        外でシステムを使いたい。とか、双方向でコミュニケーションを取りたいとか。
    3.お客さまが必要としている時期を把握
        場合によっては、分納が必要だったり、やベータ版での検収が必要になることもある。

2)コスト
    1.予算は?予算超過時の手法の方向性の検討

    2.調達予算
        ハード
            サーバ
            デバイス
        ミドルウェア、開発環境
        ・レスポンシブWebデザインで作っても実機でのテストは必要
        ・ミドルウェアはライセンスに注意が必要。サーバでのレポート機能やExcel作成機能など
    3.専門誌、雑誌の購読
        MACやTRONなど新しいOSでの開発や新しい開発環境、言語、データベースを使うことも多々あるので、一式基礎から勉強が必要となる。
     

3)品質
    1.試験工程の深さと幅の確認
    見落としがちなのは、性能が出ないシステムになるリスクがある。
    過負荷時にシステムがハングアップする問題などが出るので性能・負荷試験をきちんと行うこと。
    ・node.jsだからと言っても油断できない。
    ・ioDriveを使っているからといっても油断ができない。

4)納品物
    1.ドキュメント
    2.見落としがちな付帯作業を見極める調整する
        ・サーバセットアップ手順
        ・クライアントセットアップ手順
        ・バックアップデータのリカバリ手順書
     
5)作業内容
    規模を把握しよう
    ・マスタ・トランの移行作業
    ・運用開始時のマスタ整備の責任、データ投入責任、投入時の仕組みなど責任の所在。
    ・ユーザ教育の有無

6)その他、作業セキュリティ
    作業ロケーションの明確化。
        持ち帰り開発が前提。その場合のインターネット環境の有無のANDRなど。
    対象デバイス・UA以外のアクセスについての取り決め

7)アーキテクチャ

    リスクであるアーキテクチャを抑えよう。
    見えていないアーキテクチャは必ず、モックアップを作成し、技術検証を行う。
    対規模システム場合は、フレームワークとライブラリの充実をはかろう。

    システム構成
    データベース
    開発言語
        デバイス
        サーバ
        データベース
    開発ツール
    ミドルウェア(PDF、Excel、etc)
    ハードウエア・ブラウザ
        対象ブラウザ
        オリエンテーション
        画面サイズ
        多国語対応
    デバイスの確認
        スキャナ
        カードR/W
        タグ発行器
        RFID R/W
    ネイティブ機能の確認
        マルチタッチ
        位置情報、加速度センター、電子コンパス
        バイオメトリックス(静脈、顔、etc)
        パプティック、バイブ
        NFC
        Bluetooth
        音声出力/入力
        カメラ/動画出力/入力
    パフォーマンス
        アプリケーションキャッシュ
        マスタキャッシュ
        描画の最適化
        リアルタイム性(プッシュ、ロングポーリング)
    コミュニケーション
        SNS連携(Facebook、Twitter)
        メール連携
        メッセンジャー連携(Facebook、LINE、、、)
        IP電話・テレビ電話
        電話帳

    アーキテクチャを押さえ込める技術者の確保

8)非機能要件
    非機能要件をどのくらいのコストでどのように対応するかを明確する。
 
    1.負荷・性能試験を実施し、レスポンス問題を取り除くこと
 
    2.セキュリティ設計
        Web系
            ・SQLインジェクション対応
            ・クロスサイトスクリプティング対応
        インターネット公開の場合データの暗号化を忘れずに
            ・SSL、https
    3.移行がある場合は、
        移行リハーサルは必須
        段階的移行と一括移行をプロコンを見極める
     
    4.必ずお客様の受入れ試験を実施し、リスクヘッジを実施すること
 
    5.運用試験の実施
        月またぎ、年またぎ、月処理、年次処理、最大稼働年数などのチェック
 
    6.リカバリ試験
        各種データはバックアップがあると思う。バックアップデータをリカバリできることを確認
    7.排他試験
        Webシステム、C/Sシステムでも同時実行時に問題が発生しやすい。
 
    8.異常系試験
        1台のサーバで稼働するシステムは少ない。
        AD、DNS、AP、DB、FTP、MAILサーバが停止している時に縮退運用や
        監視ツールへの通知がうまくいくか確認する
    9.バックアップ試験
    10.監視ツール試験
        必要な定義ファイルがない場合の動作。各種異常時に検知されることを確認。
    11.
 
9)保守
    保守契約が前提とする。保守期間外&瑕疵期間外は、別途有償対応を共有すること。
    保守は、
        ・リモートでのサーバ回線接続が可能なこと
        ・メールサーバが必要なこと
        ・

10)自分のスケジュールの確認
    よく考えてみよう
    少なくても5分は自分のスケジュールを見なおすべき。
    年初計画のそっているかが重要となる。

以上

Windwos リブート時にSQL Server Agentの起動に失敗する問題


Windwos リブート時にSQL Server Agentの起動に失敗する問題

マイクロソフトは、OUTフィアルを見て対応とのことだが、ログがなかった。
http://support.microsoft.com/kb/306655/ja

今回発生しているエラー
2013-02-08 04:01:04 - ! [000] サーバー '(local)' に接続できません。SQLServerAgent を開始できません。
2013-02-08 04:01:04 - ! [298] SQLServer エラー: 848, SQL Server Network Interfaces: セキュリティに危害を与える試みが検出されました。認証したサーバーに連絡してください。 [SQLSTATE HY000]
2013-02-08 04:01:04 - ! [298] SQLServer エラー: 848, Cannot generate SSPI context [SQLSTATE HY000]
2013-02-08 04:01:04 - ! [382] サーバー '(local)' にログインできませんでした (DisableAgentXPs)
2013-02-08 04:01:41 - ? [098] SQLServerAgent が終了しました (通常)


英語だと
2013-02-08 04:01:04 - ! [298] SQLServer Error: 848, Cannot generate SSPI context [SQLSTATE HY000]
2013-02-08 04:01:04 - ! [298] SQLServer Error: 848, SQL Server Network interfaces : The system detected a possible attempt to compromise security.Please ensure that you can contact the server that authenticated you [SQLSTATE HY000]

調査結果
前者のエラー対応
http://support.microsoft.com/kb/811889/en-us
後者のエラー対応
DNS、ADの問題で発生
http://social.msdn.microsoft.com/Forums/en/sqlsecurity/thread/7e6be4d2-d657-44b9-a03d-992144f6df0c
ネットワークエラーの時に発生
http://www.sqlservercentral.com/Forums/Topic498813-359-1.aspx#bm837603

⇒で、OS郡のイベントログを調べた結果
   DNSサーバも再起動中であり、DNSサーバが不在のため、SQL Server Agentの起動に失敗していました。

2013年3月7日木曜日

http(TCPポート80)が使用済みでApacheが使用できない。


判明していること
  PID:4
  プロセス名:System

調べてみる(※)と下記のサイトが有りましたが、これが原因ではなかった。

Windows Remote Management(WS-Management)の問題
http://social.technet.microsoft.com/Forums/ja/windowsserver2008ja/thread/c64a83f3-de13-4c3a-a955-3cbb629e4cf5

原因は、Web Deployment Agent Serviceであり、これを停止したら問題が解決した

※:http://www.atmarkit.co.jp/fwin2k/win2ktips/236portcheck/portcheck.html
netstat -nb
tasklist

2013年3月4日月曜日

Galaxy S2のバージョンアップを実施


13/02/28(木) 13:09:24

Galaxy S2のバージョンアップを実施

モデル番号 SC-02C
Androidバージョン 4.0.3
ベースバージョン SC02COMPLP
カーネルバージョン 3.0.15-SC02COMPLP-CL887191 se.infra@SEI-47#3
ビルド番号 IML74K.OMLPL


モデル番号 SC-02C
Androidバージョン 4.0.3
ベースバージョン SC02COMMP4
カーネルバージョン 3.0.15-1196328 se.infra@SEP-113#3 SMP PREEMPT Mon Jan 21 20:20:16 KST 2013
ビルド番号 IML74K.OMMP4



2013年3月2日土曜日

拡張.cssのファイルを選択するとメニューのFileにNewが出てくるので消したい。


やり方
regeditにて下記の手順を実行します。

1).cssの登録を確認する。

[HKEY_CLASSES_ROOT\.css\OpenWithProgids]
"VisualStudio.css.9.0"=""
"XWeb.css.4.0"=""
"VisualStudio.css.10.0"=""

この中のどれかが原因。

2)調べてみると↓が登録してあったので削除した。

[HKEY_CLASSES_ROOT\XWeb.css.4.0\shell\New]

[HKEY_CLASSES_ROOT\XWeb.css.4.0\shell\New\command]
@="\"C:\\Program Files (x86)\\Microsoft Expression\\Web 4\\ExpressionWeb.exe\" /dde"

>以上で解決しました。

2013年2月14日木曜日

System.Runtime.InteropServices.ExternalException: 要求されたクリップボード操作に成功しませんでした。

System.Runtime.InteropServices.ExternalException: 要求されたクリップボード操作に成功しませんでした。
が発生する。

対応

//Clipboard.SetDataObject(post, true);
//たまにエラーが発生するので、リトライを組み込み対応
Clipboard.SetDataObject(post, true, 10, 100);

エラー詳細
---------------------------
System.Runtime.InteropServices.ExternalException: 要求されたクリップボード操作に成功しませんでした。

   場所 System.Windows.Forms.Clipboard.ThrowIfFailed(Int32 hr)

   場所 System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy, Int32 retryTimes, Int32 retryDelay)

   場所 System.Windows.Forms.Clipboard.SetDataObject(Object data, Boolean copy)

   場所 SendToClipBord.MainApplicatoin.Main(String[] args) 場所 D:\kiyo\Windows\Deveropment\SendToClipBoard\MainApplication.cs:行 159
---------------------------
OK   
---------------------------

Windows8でファイルサーバに接続できなくなる問題

Windows8からドメインやワークグループにアクセスできない場合は、下記の設定を実施してください。

操作
 1. [ コントロールパネル ] → [ クラシック表示 ] → [ 管理ツール ] をクリック
 2. [ ローカルポリシー ] → [ セキュリティオプション ] をクリックする。
 3. 「ネットワークセキュリティ:LAN Manager認証レベル」 の「NTMv2応答のみを送信する」が
   デフォルトになって いるのが原因でワークグループにアクセスすると
   ユーザ名とパスワード入力が出てアクセスできない。

   LMとNTLM応答を送信する に変更することでアクセスが可能になります。

2013年2月6日水曜日

ioDriveの進め

最近のサーバチューニングでPCIe直結の高速ドライブを用いたハードウェアチューニングに凝っています。

費用対効果が優れているから、今年からは、サーバの世界では、一般化したソリューションだという認識です。

SQL Serverも

http://www.microsoft.com/ja-jp/sqlserver/2012/ssd-appliance/default.aspx

MySQLも

↓このシリーズ

RDBMSだと処理の内容やタイミングにもよるのですが、性能がよくなります。
(DBとのやり取りが多いヘボい構造だったり、クエリの作りの問題など多種多様な問題の場合もあったり、キャッシュの活用度合いにもよるので、一概には言えないのですが、概ね良い結果をもたらします。)

あと、多数のVM数を動作せるホストOSには必須かなと思っています。
(感覚、実用性に耐えれるVM数が、10から200くらいへ増えます。)

借りれるサーバ

Parallelのコードを書くときの注意点

マルチコアを活かそうとして、Parallelのコードを書くかと思いますが、自処理の外の変数を使用するときは、lockステートメントを使用して排他制御をしましょう。
下記のようなコードは、aの値が、必ずしも0とはならない。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int a = 0;
List<string> l = new List<string>();

for (int i = 0; i < 10000; i++)
{
l.Add("" + i);
}

Parallel.ForEach(l, s =>
{
a = a + int.Parse(s);
Console.WriteLine(s);

a = a - int.Parse(s);

});

Console.WriteLine("a=" + a);
Console.ReadLine();
}
}
}


a = a + int.Parse(s);
lock(l) a = a + int.Parse(s);
となります。