Quantcast
Channel: 蒼の王座・裏口
Viewing all 183 articles
Browse latest View live

HttpClientでBasic認証をする方法

$
0
0

System.NET.Http にある HttpClient を使って、Basic認証をする方法を調べました。
単純にする方法は検索すると、類似サンプルコードが複数でてくるのですが、
恰好良く見えないのです。
もっと綺麗な方法があるに違いないと思ったのですが、そんなことは無かったて話。

Basic認証をする方法(推奨)

var httpClient = new HttpClient();
var byteArray = Encoding.ASCII.GetBytes(string.Format("{0}:{1}", username, password));
httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));

Basic認証をする方法その2(非推奨)

var credential = new BasicCredentialsProvider();
credential.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password));
var auth = new BasicAuthCache();
auth.put(targetHost, new BasicScheme());
var context = HttpClientContext.create();
context.setCredentialsProvider(credential);
context.setAuthCache(auth);

エンコードとかのコードがなくなって、スマート(行数増えてるけど…)に見えなくもない。
でも、この方法の問題点は、
認証をするために、プリ認証、本認証と2回通信が発生してしまうこと。
認証は成功するんですけどね…。

参考


HttpClient のレスポンス改善方法

$
0
0

System.Net.HttpにあるHttpClientを使用して通信をする際に設定をしておくとレスポンス速度を改善されることができる方法をメモしておきます。

Http通信時に、gzip、Deflateをヘッダーに設定することでデータを圧縮した状態で受信できるので、通信量を削減することができます。その分、圧縮&解凍のオーバーヘッドはあるのでCPUと通信どちらを取るかという問題はあります。ケースバイケース。

var handler = new HttpClientHandler();
if (handler.SupportsAutomaticDecompression)
{
    handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
}
var client = new HttpClient(handler);
var response = await client.GetAsync("http://yahoo.co.jp");
var content = await response.Content.ReadAsStringAsync();

HttpClientHandlerで設定をして、それをHttpClientのコンストラクタに渡してあげるといい。

設定するとリクエストヘッダーに設定される。

image

レスポンスバイトは4614バイト。

image

ハンドラを渡さないときのリクエストヘッダーは次の通り。

image

レスポンスバイトは、1882バイト。

image

Creative Cloud 2015 が体験版と表示される場合の対応方法検証

$
0
0

Creative Cloud エンタープライズ版を契約し、シリアル番号ライセンスによる匿名ユーザー認証で運用しています。社内には、Creative Clooud 2014のパッケージを作成し展開しています。

Creative Cloud 2015がリリースされたことで、Adobe Creative Cloudに、2015の案内が表示されるようになりました。

image

当然、人ですから最新バージョンを使いたくなるので、「すべてアップデート」をクリックして、Creaative Cloud 2015にアップデートします。
そーすると悲しいことに、「体験版の使用」となってしまい、体験版となってしまいます。

image

対応方法

しっかりと検証できていないので、手順が前後するかもしれませんが、次のどれか、もしくはすべてをすることで認証させることができます。

  1. 社内でCreative Cloudパッケージを配布している部門から、「ライセンスファイル」を入手して、インストールしてください。
  2. インストール後、Photoshopかillustlrtorを起動しログインしてください。
  3. Adobe Creative Cloudのホームタブに移動し、再度Appタブに移動すると「開く」表記に代わります。

CC2014はライセンスファイル入りのパッケージでインストールしたので正規版として認証されてインストールされます。
そして、Adobe Creative Cloudを使用して、CC2015にアップグレードすると、アップグレードファイルは世間一般の共通インストーラーがダウンロードされてインストールされるので、ライセンスファイルが同梱されていません。

ですので、ライセンスファイルを後から追加でインストールする必要があります。

image

それぞれが何か詳細がわかりませんが、自分は「RemoveVolumeSerial.exe」を実行してから、「AdobeSerialization.exe」を実行しました。実行する前には、Adobeのソフトウェアは終了させておいたほうが良いでしょう。
ちなみに、実行しても画面が暗転してWindowsのインストール確認だけで、画面には何も表示されず、すぐに終了します。

ライセンスファイルのインストールが終わったら、Photoshopを起動させ、
ヘルプ→サインイン
をクリックします。

image

そのあと、Adobe Creative Cloudの画面をリフレッシュする意味で、ホームをクリックします。

image

で、またAppsタブに戻ります。

image

そーすると、「体験版」となっていた箇所が、「開く」になります。
ちなみに、アプリケーションは一度は起動する必要があります。
Photoshopでサインインしたら、Photoshopは「開く」で、illustlratorは「体験版」となっていました。
仕方ないので、illustlatorを起動してから、Adobe Creative Cloudのホームタブに移動して、Appsタブに戻るとillustlatorも「開く」となりました。

参考:ライセンスファイルの作成方法(管理部門のみ)

Creative Cloud Packagerで、ライセンスファイルの作成をクリックすれば作成できます。

image

Creative Cloud 2015 が体験版と表示される場合の対応方法検証蒼の王座・裏口で公開された投稿です。

C# 6.0 新機能まとめ from de:code2015

$
0
0

C# 6.0が正式リリースされたので、どんな機能が実装されたのかを勉強してみたいと思います。この投稿は、Channel 9で公開されてるde:code 2015のセッション「C# 6.0新機能」を元にしたものです。

C# 6.0 の新機能概要

非常に大きな言語変更はないが、数多く(10数個)の新機能が実装されています。
新機能の大部分は、開発者のコード量を削減し開発生産を高めることを目標としています。

  • オーバーロード解決の向上
  • 例外フィルター
  • インデックス初期化子
  • ラムダ式本体によるメンバーの記述
  • 自動実装プロパティの機能強化
  • using static
  • Nameof 演算子
  • 文字列補間
  • Null 条件演算子
  • パラメーターを持たない構造体

自動実装プロパティ

getterのみのプロパティを実装できるようになりました。

public int X { get; }
public int Y { get; }

using static

using staticを使用するとメソッドの呼び出しを単純化することができます。

コード記述量を減らすことができます。

using static System.Console;
using static System.Math;
Console.WriteLine(Math.Sqrt(3*3+4*4));
WriteLine(Sqrt(3*3+4*4));

文字列補間

{0}や{1}のところに直接変数を指定することができるようになりました。

return String.Format("({0}, {1})",X,Y);
return $"({X}, {Y})"

ラムダ式によるメソッド本体記述

従来の書き方

public override string ToString()
{
  return $"({X}, {Y})";
}

書き換えると…

public override string ToString()=>$"({X}, {Y})";

ラムダ式によるプロパティの記述

従来の書き方

public double Dist
{
  get { return Sqrt(X*X+Y*Y);}
}

書き換えると…

public double Dist => Sqrt(X*X+Y*Y);

インデックス初期化子

従来の書き方

var numbers = new Dictionary
{
  {1, "one"},
  {2, "two"},
  {3, "three"}
};

書き換えると…

var numbers = new Dictionary
{
  [1] = "one",
  [2] = "two",
  [3] = "three"
};

Null条件演算子

nullチェックをするための演算子です。nullであればnullを入れて、nullじゃなければ値を入れる。

int? count = person?.Count();

nameof演算子

定義した変数の名前を返す場合の処理を効率化したものです。ArgumentNullExceptionに従来は文字列を指定していたが、それでは変数名をリファクタリングしたときに変更がもれることがあった。それを防ぐために変数名を返す演算子が追加された。

public Point Add(Point point)
{
  if(point==null)
  {
    throw new ArgumentNullException(nameof(point));
  }
}

参考

C# 6.0 新機能まとめ from de:code2015蒼の王座・裏口で公開された投稿です。

Visual Studio 2015 で Less とSass

$
0
0

Web Essentials 2015 からLess と Sass のコンパイルや、JavaScriptのミニファイ機能が、切り離されて別製品として提供されるようになりました。

image

Bundler & MinifierWeb Compiler の2種類の製品で提供されています。

Bundler & Minifier

JavaScriptとCSS、HTMLのミニファイとバンドリングするためのVisual Studioの拡張機能です。

  • CSS、JavaScript、HTMLファイルをバンドルし、一つのファイルとして出力します
  • ソースファイルの保存をトリガーに、自動的に再バンドルをします
  • CIシナリオ用にMSBuildに対応しています
  • 言語ごとにミニファイ設定をカスタマイズできます
  • 生成ファイルを開くとウォーターマークが表示されます
  • ソリューションですべてのバンドルを更新するショートカットがあります。

Create bundle

2つ以上の同じ種類のファイルをソリューションエクスプローラーで選択し、バンドルを生成することができます。
バンドル設定は、プロジェクトのルートに、bundleconfig.jsonというファイルで格納されます。

Minify file

ソリューションエクスプローラーで、JavaScript、CSS、HTMLファイルを選択してミニファイできます。オリジナルファイルの配下に、「<ファイル名>.min.拡張子」が作成されます。

Bundle on build

ASP.NET MVC と WebForms プロジェクトで、ビルド処理の一環でバンドルとミニファイをすることができます。bundleconfig.jsonファイルを右クリックして処理できます。

Update all bundles

キーボードショートカットキー「Shift+Alt+i」を押すか、Buildメニューから選択することで、ソリューション内のすべてのbundleconfig.jsonファイルを使用してバンドルを実行できます。

Web Compiler

LESS、Sass、CoffeScriptファイルをコンパイルするためのVisual Studioの拡張機能です。

  • LESS、Sass、CoffeeScriptファイルをコンパイルできます
  • ソースファイルの保存をトリガーに自動再コンパイルすることができます
  • 個別ファイルごとにコンパイルオプションを指定することができます
  • Error一覧に統合されます
  • CIシナリオで、MSBuildに対応します
  • ミニファイしてコンパイル出力します

Compile file

.less、.scss、coffeeファイルを右クリックして、コンパイルを設定できます。

Recompile

compilereconfig.jsonファイルが生成されます。
右クリックして、再コンパイルを実行することができます。

Visual Studio 2015 で Less とSass蒼の王座・裏口で公開された投稿です。

Windows 10へのアップグレード方法

$
0
0

Windows 10 に無償アップグレードする方法について確認できたので、それについてメモを残しておきます。WSUS や Active Directory に参加しているPCには、Windows Update による Windows 10 へのアップグレードは配信されないようになっています(配信されちゃってるケースもあるようですが…)。

WSUS や Active Directory に参加しているPCや企業が管理しているPC(Enterprise EditionやSA除く)も無償アップグレードの対象なので、Windows 10 にアップグレードすることができます。
アップグレード方法は、マイクロソフトが提供する「メディア作成ツールを使用したWindows 10のインストール」で説明されているツールを使用します。

(このツール、MSDNライセンスのOS上では動作しないかも?正確には未確認ですが…。)

早速、ツールを使用してみましょう。
今回は社内展開のための作業なので、「他のPC用にインストールメディアを作る」を選択します。

image

言語、エディション、アーキテクチャを選択します。
Windows 7 Proは、Windows 10 Professionalにアップグレードできるので、Windows 10 Professionalを選択します。(Enterprise Editionについては、VLSCのサイトからダウンロードします)

image

使用するメディアとして、ISOファイルを選択しました。

image

ツールを実行!

image

ISOファイルをDVDに焼きます。

image

Windows 10へのアップグレード方法蒼の王座・裏口で公開された投稿です。

SignalR パフォーマンス関連の情報

$
0
0

ASP.NETのサイトで、「SignalR Performance」ってサイトがあるので、そこに書かれてあることを見て見ましょう。

メッセージ頻度を制限する

メッセージの送信数が多くなりすぎないように、コードで制限をかけておきましょう。
通常は、毎秒メッセージ送信をしないといけないシステムはあまりありません。
その為、一度メッセージ送信後、次に送信するまで多少のWaitを入れちゃいましょう。

サンプルコードが、ここで提供されています。

setInterval(updateServerModel, updateRate);

メッセージサイズを減らす

シリアライズオブジェクトのサイズを減らすことでSignalRメッセージサイズを減らせます。

サーバーサイドでは、送信する必要がないプロパティは送信しないようにします。例えば、JsonIgnore属性を指定します。

プロパティ名を短くします。たとえば、JsonProperty属性を指定します。「Name」というプロパティを「N」で送信するなどです。

クライアントサイドでは、サイズを減らすためにNなどの一文字で送信されてきたものを、ミスしないように人が読みやすい名前に再マッピングしてもいいかもしれません。

var shapeModelContract = {
    l: "left",
    t: "top"
};

DefaultMessageBufferSizeを設定する(SignalRの設定)

既定では、Hub毎コネクション毎に1000メッセージまでメモリに保持します。

大きなメッセージを扱う場合は、メモリ問題が発生するかもしれないので、この数字を減らしたほうが良いかもしれません。

この設定は、ASP.NETアプリケーションのApplication_Startイベントハンドラーで設定するか、OWINスタートアップクラスのConfigurationメソッドで定義します。

以下のコードは、メモリ使用量を減らすために値を変更したサンプルです。

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        // Any connection or hub wire up and configuration should go here
		GlobalHost.Configuration.DefaultMessageBufferSize = 500;
		app.MapSignalR();
    }
}

アプリケーション毎の最大同時リクエスト数(IISの設定)

コマンドプロンプトでMax concurrent requests per applicationを設定します。既定値は5000です。

cd %windir%\System32\inetsrv\
appcmd.exe set config /section:system.webserver/serverRuntime
        /appConcurrentRequestLimit:10000

アプリケーションプールのキューサイズ(IISの設定)

HTTP.sysが処理できるリクエスト数ApplicationPool QueueLengthの最大数を設定します。

キューが満杯になると、新しいリクエストには503 Service Unavailavleレスポンスを返します。既定値は1000です。この値は、サーバーのメモリ量と密接な関係があるのいで、メモリ量と相談して設定します。(参考:アプリケーションプールのチューニング

CPUごとの最大同時リクエスト数の設定(ASP.NETの設定)

ASP.NETの設定は、aspnet.configを使用します。
このファイルは以下の場所に配置されています。

  • %windir%\Microsoft.NET\Framework\v4.0.30319\aspnet.config
  • %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet.config

この値がパフォーマンスボトルネックになる可能性があるので、値をあげることで緩和できます。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.web>
        <applicationPool maxConcurrentRequestsPerCPU="20000" />
    </system.web>
</configuration>

リクエストキュー制限(ASP.NETの設定)

maxConcurrentRequestsPerCPU数を最大接続数が超えると、キューを使用してリクエストを制限します。キュー数を増やすには、requestQueueLimit 設定を使用します。
設定は、config/machine.configのprocessModelノードに設定を追加します。

<processModel autoConfig="false" requestQueueLimit="250000" />

SignalRのパフォーマンスカウンターを使う

Microsoft.AspNet.SignalR.Utilsパッケージに含まれているSignalRパフォーマンスカウンタの使用方法について説明します。

Visual StudioのNugetで、signal.utilをインストールする。

パッケージをインストールする。SignalR.exeは、<project folder>/packages/Microsoft.AspNet.SignalR.Utils.<version>/toolsにインストールされます。

SignalRパフォーマンスカウンターをインストールするために、コマンドプロンプトを管理者特権で起動し、次のコマンドを実行します。

SignalR.exe ipc

カウンターを削除したいときには次のコマンドを実行します。

SignalR.exe upc

カウンターの発生タイミングは、コネクションライフタイムイベントに紐づいています。Understanding and Handling Connection Lifetime Events in SignalRを参照してください。

次のカウンターは、SigalRがメッセージトラフィックを生成したときに計測されます。

  • Connection Messages Received Total
  • Connection Messages Sent Total
  • Connection Messages Received/Sec
  • Connection Messages Sent/Sec

次のカウンターは、内部SignalRメッセージパスを通るトラフィックを計測したものです。Publsihaはメッセージを送信、ブロードキャストした時です。Subscriberは、メッセージバス上のサブスクリプションです。Allocated Workerはアクティブコネクションにデータ送信しているコンポーネントです。Busy Workerはアクティブにメッセージ送信しているWorker数です。

  • Message Bus Messages Received Total
  • Message Bus Messages Received/Sec
  • Message Bus Messages Published Total
  • Message Bus Messages Published/Sec
  • Message Bus Subscribers Current
  • Message Bus Subscribers Total
  • Message Bus Subscribers/Sec
  • Message Bus Allocated Workers
  • Message Bus Busy Workers
  • Message Bus Topics Current

エラーカウンター

  • Errors: All Total
  • Errors: All/Sec
  • Errors: Hub Resolution Total
  • Errors: Hub Resolution/Sec
  • Errors: Hub Invocation Total
  • Errors: Hub Invocation/Sec
  • Errors: Transport Total
  • Errors: Transport/Sec

SignalR パフォーマンス関連の情報蒼の王座・裏口で公開された投稿です。

Visual Studio 2015 のデバッグでChrome匿名モードを選択する方法

$
0
0

デバッグドロップダウンメニューから「ブラウザーの選択」をクリックします。

image

 

追加ボタンをクリックし、ダイアログで項目を入力します。

プログラム

・System: C:\Program Files (x86)\Google\Chrome\Application\
・User: C:\Users\UserName\AppData\Local\Google\Chrome\Application

引数

「–incognito」

image

 

これで完成です。

image

Visual Studio 2015 のデバッグでChrome匿名モードを選択する方法蒼の王座・裏口で公開された投稿です。


利用ツールまとめ 2015年

Windwos 10 でスリープから復帰できない時の対応

$
0
0

離席などをして席に戻ってくると、Windows 10 のパソコンの画面が真っ暗で、キーボードやマウスや電源ボタンを押しても、反応しなくて真っ暗なままで、画面が表示されなくなることがあります。

これは、Windows 10 でスリープモードに入った後、復帰できなくなって発生している可能性が高いようです。

原因としては、「Intel Management Engine Interface」と Windows 10 の組み合わせで問題が発生している可能性があるようです。
対処としては、一旦古いバージョンに戻して様子見をすることが考えられます。

image

以下では、Dellのケースで説明します。

案1 最新のドライバーをインストールする

問題と考えられる「Intel Management Engine Interface」ドライバーが、Dellの場合、2015/10/6に新しいバージョンがリリースされているので、それをインストールすることで改善しないか様子を見てみましょう。

E7240、T1650、T3600、T3610、T5600、XPS 13:http://www.dell.com/support/home/jp/ja/jpdhs1/Drivers/DriversDetails?driverId=KFR45&fileId=3489734108&osCode=WT64A&productCode=precision-t1650&languageCode=JP,EN&categoryId=CS

T1700:http://www.dell.com/support/home/jp/ja/jpdhs1/Drivers/DriversDetails?driverId=G1XKX&fileId=3489736244&osCode=WT64A&productCode=precision-t1700-workstation&languageCode=JP,EN&categoryId=CS

案2 ドライバーを古いものに入れ替える

Intel Management Engine Interface 9.5.24.1790 では正常に動作しているとのうわさ。

image

Windwos 10 でスリープから復帰できない時の対応蒼の王座・裏口で公開された投稿です。

2つのExcelファイルの差分を比較するツール

$
0
0

Excel 2013では、標準で2つのExcelファイルを比較して、差分を表示するツールが同梱されていますので、使用方法を説明します。

1.ファイルメニューを選択します。

image

2.オプションを選択します。

image

3.アドインを選択します。

image

4.管理から「COMアドイン」を選択します。

image

5.設定ボタンをクリックします。

image

6.Inquireにチェックを入れ、OKボタンをクリックします。

image

7.INQUIREタブを選択します。

image

8.比較したいExcelファイルをあらかじめ2つ開いておきます。

9.ファイルの比較を選択します。

image

10.ファイルを比較します。比較ボタンをクリックします。

image

11.結果が表示されます。

image

2つのExcelファイルの差分を比較するツール蒼の王座・裏口で公開された投稿です。

Fluentd が Windows を正式サポートしたので動かした

$
0
0

2015年10月8日に、Windows での正式動作にFluentdが対応しました。
正式対応までの流れは、Add Windows support #674 で確認できて、Windows対応が、masterにマージされました。

Windows サーバーに Fluentd をインストールする方法

Fluentd on Windows with Ruby 2.2を参考にインストールできます。

RubyInstallerのインストール

http://rubyinstaller.org/downloads/からRubyとDevKitをダウンロードします。

Ruby 2.2.x(64bit)をインストール

image

「Rubyファイルの実行ファイルへ環境変数Pathを設定する」にチェックをいれる

image

DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exeをインストール

image

解答先指定で、「c:\ruby」などにする

image

コマンドプロンプトを起動し、以下のコマンドを実行する。
以下の例は、rubyは「c:\Ruby22-x64」、devkitは「c:\ruby」にインストールしている例。

cd c:\ruby
ruby dk.rb init

「c:\ruby\config.yml」を開き、「 – C:/Ruby22-x64」を追記する。

ruby dk.rb install

image

Gitのインストール

http://www.git-scm.com/から git for windows をダウンロードする

image

image

Fluentd のインストール

cd c:\
git clone https://github.com/fluent/fluentd.git
cd fluentd
gem install bundler
bundle
bundle exec rake build
gem install pkg\fluentd-0.12.16.gem –no-ri –no-rdoc

image

master にマージされているので、Fluentd on Windows with Ruby 2.2で説明されているWindowsブランチへの切り替えは不要。

Fluentd の起動

fluentd -c ./example/in_forward.conf

image

Fluentd のサービス登録

fluentd –reg-winsvc i

image

サービスに登録されます

image

細かい話は、http://qiita.com/okahashi117/items/9b55418e770f1f5ce4b7を参照。

Fluentd が Windows を正式サポートしたので動かした蒼の王座・裏口で公開された投稿です。

Fluentd と Windows の関係

$
0
0

Fluentd でのWindows 対応についてコミッターが方針話していたのでメモ。

テスター大募集中

まだまだ使用実績が少ないので、Windows環境で試す人、PJを募集中のようです。


公式サイトでの言及時期について

公式サイトには、v0.14.0preをリリースしたら掲載するようです。

OSSなので、下記スタンスでもいいですね。いくらWindows対応とはいっても、軽く出して使う人が増えれば、だんだん安定するでしょうし。そーするとSIerでも使いやすくなりますね。


余談

ちょっと、masterマージをみて、喜び勇んで正式対応されたと早とちりしてBlog書いて影響与えてしまってたら申し訳ないですね・・・。

でも、使えるの素晴らしい!

Fluentd と Windows の関係蒼の王座・裏口で公開された投稿です。

SignalR で接続が切れた時にセッションクローズされず残り続ける問題への対応方法

$
0
0

SignalR では、クライアント側が閉じたとしても検知する術がありません。
例えば、Websocketのコネクションが失敗したら、OnCloseコールバックが呼ばれますが、クライアント側の状態によっては、OnCloseが呼ばれずに接続が残り続けてしまうことがあります。

そこで登場するのが、IIS WebSocket のping/pnogです。

/signalr/ping リクエストは、ASP.NETセッションを維持するのに利用されます。
通常は、セッションタイムアウトよりも短い感覚でリクエストを生成し、セッションが切れないようにします。

SignalR は、既定で5分毎にpingリクエストを送信します。
5分は、ASP.NETの既定のセッションタイムアウト時間20分よりも短く設定されています。

ping送信間隔を5分から変更したい場合は、$.connection.hub.startを使用します。

// Configure SignalR to ping the server every minute
$.connection.hub.start({ pingInterval: 60000 })//…

尚、既定では、pingIntervalは、300000ミリ秒(5分)が設定されています。

ちなみに、web.configで設定することもできます。まずは次のコマンドを発行します。

cd \Windows\System32\inetsrv
appcmd unlock config /section:system.webServer/websocket

web.configで以下の記述を追加します。

<webSocket enabled=”true” pingInterval=”00:00:05″/>

SignalR で接続が切れた時にセッションクローズされず残り続ける問題への対応方法蒼の王座・裏口で公開された投稿です。

BILL ITUNES COM から合計28万円の請求を受けた件

$
0
0

クレジットカードに、一回数千の請求で50数回、合計28万円の請求が来ていました。

image

処理内容は上の図のような感じ。
一回一回は数千円で、一日当たり5~6万円で5日間にかけて処理をしています。
今回はカードの上限額に達して28万円で請求が止まりましたが、上限額に達してなかったら、そのまま請求が来続けたかもしれません。

結論

  • カード情報の流出
  • その情報をもとに、第三者がクレジットカード名義でiTunesアカウントを作成
  • カードの不正チェック機能に検知されないように細かくアプリ内課金
  • Apple に調査してもらいキャンセル処理をしてもらう
  • カード会社に報告&カード変更

時系列

土曜日の夜

カードで買い物をしようとしたら上限額オーバー。
上限額を超えたことが一度もないので、帰宅してWeb明細を確認。
BILL ITUNES COMから1週間前に50数回20数万円の決済がきてる。

不正利用された…。まさか自分が。

土曜日の夜なので、連絡先がない!
なので、まずは自分の持っているiTuens アカウントで、iTunesにログインして課金履歴を確認する。

Appleのサイトhttps://support.apple.com/ja-jp/HT204088を見て確認。
ここに履歴があれば、自分のiTuensアカウント情報の流出となる。
が、自分はここ半年ほど決済履歴がなし。
ここでクレジットカード情報の流出となる。

ポイントは、カードの紛失&盗難ではないので、そこに電話しても対応が進まない。
For youデスクは平日の9~17時なので意味がない。
しかも、For youデスクに電話しても、Appleに電話するよう言われる。

なので、課金履歴までを確認して、翌日日曜日の営業時間までまつ。
For youは平日のみだけど、Appleha土日も対応してる。

日曜の朝

Appleに電話(0120-277-535)する。
かくかくシカジカと説明すると、本人確認をすることになる。

本人確認方法として、iPhoneを用意する。
iPhoneの設定→一般→情報ページの下のほうにあるIMEI番号を電話で伝える。
そーすると向こうが処理をしたら、手元端末にポップアップが出るので承諾すると本人確認完了。

iTunesアカウントの確認。
本人確認のため、向こうから秘密の質問を言われるので、その回答。
秘密の質問って悩みますね。覚えてます?
会社の上司やら小学校の親友やらね。

続いて、Apple内のiTunesチームに転送される。
不正請求されたクレジットカード番号への決済をiTunesからできないようにロック処理をされる。
以後の対応はメールを送るので、メールに明細などを添付してほしいと言われて電話終わり。

電話時間は全部で20分ぐらい。

日曜の昼

数時間後にメールがきたので、Web明細をコピって送付。

夕方に受理と調査しますとのメール返信。

月曜日の朝

For youデスクに電話する。
クレジットカードのセキュリティ部門に転送される。

事情を説明する。

Appleから回答があったら、連絡をしてほしいと言われて直通の番号を教えてもらう。

火曜の昼

久々にAppleから連絡くる。

「カード会社に連絡して、ほかに請求来てないか確認してね」とのこと。

確認したら、Web明細に追加されていた。
請求到着のずれの問題で、一日分数万円が不正額に増えていた。
カード会社に電話し、他にはないこをと確認。

Appleにメール。

Appleから返信。継続調査とのこと。

金曜日

Appleから連絡。

不正請求28万円をすべてキャンセルし返金処理したとのこと。

カード会社に連絡。
事情説明。
カード会社でもAppleのキャンセルを確認。
請求付きは10月。キャンセルは11月と言われて、いったんは引き落としがかかるとのこと…ぇ。

ぇって言ったら、打ち消し処理をしてくれて無事、余計な金額は払わずに済むことに。

BILL ITUNES COM から合計28万円の請求を受けた件蒼の王座・裏口で公開された投稿です。


SQL Server のクエリヒントによるロックへの影響(SELECT)

$
0
0

SQL Serverで、クエリヒントを使用するとロックにどのような影響が出るのかを調べてみました。

結論

image

標準クエリの場合、ISを取得するので、DDL文とXロック(SELECTだと、XLOCKクエリヒントを使ったクエリ)と競合する。UPDLOCKとは競合しない。

UPDLOCKは、キーにUを取得するので、DDL文と同一キーへのUとXと競合する。ページにIUを取得するので、ページへのUとXと競合する。キーへのUはトランザクション終了時まで保持される。

 

詳細は、ロックの互換性参照

調査方法

今回は単純なテーブルとクエリでの調査です。
4列あるテーブルで、100000行のデータを格納して、Where無しのクエリで処理をしています。

テーブル例

image

クエリ例

SELECT   [Uid]
      ,[AddTime]
      ,[EnemyId]
      ,[StrongType]
FROM [dev_next_dev].[dbo].[AAA]

クエリヒント無し

データベースにSロックを取得・
テーブルにISロックを取得。
PageにISロックを取得しますね。(検証中、まれにSの時もあり)

image

UPDLOCK

データベースにSロック
テーブルにIXロック
PAGEにIUロック
KEYにUロックを取得します。Keyは全レコード(Top1000なので1000行)のロックを保持します。

image

image

これは、トランザクションが終了するまで保持されていて、トランザクションが終了すると、KEYのUロックとPAGEのIUロック、テーブルのIXロックが解除されます。

image

NOLOCK

データベースにSロックを取得します。
テーブルにSCH-Sロックを取得します。

image

SCH-Cロックは、DDL文発行時に取得されるSCH-Mロックとのみ競合します。

TABLOCK

データベースにSロック
テーブルに大量のSロック

image

XLOCK

データベースにSロック
テーブルにISロック
テーブルにIXロック
ページにIXロック
キーごとにXロック

image

SQL Server のクエリヒントによるロックへの影響(SELECT)蒼の王座・裏口で公開された投稿です。

Lenovo ThinkPad と Windows 10で指紋認証が使えない時の対処方法

$
0
0

Thinkpad で、Windows 10にアップグレードし、Windows Hello の指紋認証を設定しようとすると、「セットアップ」ボタンがグレーアウトされていて設定できないことがあります。

これは、Lenovo Fingerprint Manager Pro が、Windows 10に対応していないことが原因で発生します。アンインストールしようとしても、「このオペレーティングシステムでの動作はサポートしていません」とエラーが表示され、アンインストールできません。

対処方法

  1. レジストリエディターを起動する
  2. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\WinBio\Credential Provider ツリーを開く
  3. Enabled=0 を見つける
  4. 削除する
  5. 再起動する

これで、セットアップボタンがグレーアウトされていた問題が解消され、セットアップボタンがクリックできるようになります。

Lenovo ThinkPad と Windows 10で指紋認証が使えない時の対処方法蒼の王座・裏口で公開された投稿です。

TinkPad X1 で Windows 10 でスリープモードにした時に再起動したり、ブルースクリーンになる件の対応

$
0
0

原因は、複数あるので人によっては解決方法が違うのでご注意。

ブルースクリーンが発生したら、c:\windows\Minidump にダンプファイルが出力されます。

Windbg で開いて、「!analyze -v」を実行。結果が出力される。

image

DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: ffffe00127fa1750, Physical Device Object of the stack
Arg3: ffffd001b5ab1990, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffe0012faa9680, The blocked IRP

 

「!irp ffffe0012faa9680」を実行。

image

2: kd> !irp ffffe0012faa9680
Irp is active with 4 stacks 2 is current (= 0xffffe0012faa9798)
No Mdl: No System Buffer: Thread 00000000:  Irp stack trace. 
     cmd  flg cl Device   File     Completion-Context
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-00000000   

            Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
            0  0 ffffe0012ace7050 00000000 00000000-00000000   
          Unable to load image \SystemRoot\System32\drivers\Netwtw02.sys, Win32 error 0n2
*** WARNING: Unable to verify timestamp for Netwtw02.sys
*** ERROR: Module load completed but symbols could not be loaded for Netwtw02.sys
\Driver\Netwtw02
            Args: 00014400 00000001 00000004 00000002
[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
            0 e1 ffffe0012ad4a840 00000000 fffff80240f95d74-ffffe0012f549010 Success Error Cancel pending
           \Driver\vwifibus    nt!PopRequestCompletion
            Args: 00014400 00000001 00000004 00000002
[N/A(0), N/A(0)]
            0  0 00000000 00000000 00000000-ffffe0012f549010   

            Args: 00000000 00000000 00000000 00000000

 

「Netwtw02」が問題っぽい。

デバイスマネージャーで、「Intel Dual Band Wireless-N 7265」を確認して、バージョンを18.21以降にする。18.21以下だったので、ドライバーの更新でアップデートした。

これで様子見。

TinkPad X1 で Windows 10 でスリープモードにした時に再起動したり、ブルースクリーンになる件の対応蒼の王座・裏口で公開された投稿です。

2015年11月の Windows Update で発生している不具合への対応

$
0
0

社内のWindows 7で、Windows Updateが走って再起動したときに、「画面が真っ暗になり、マウスカーソルのみが表示されて何もできない」問題が発生しました。

15分ほど経過して、待ち切れず電源ボタンを長押ししてしまい、Windowsが起動しなくなったり、「画面が真っ暗になり、マウスカーソルのみが表示されて何もできない」問題に遭遇します。

最初に、「画面が真っ暗になり、マウスカーソルのみが表示されて何もできない」状態になったときに20分前後待つとすんなり終わる可能性もあります。
ダメな場合は、システムの復元で過去の復元ポイントにリストアしてから再起動するとログインできます。

手順は、https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=011923を参照。

2015年11月の Windows Update で発生している不具合への対応蒼の王座・裏口で公開された投稿です。

Dell XPS 13 ( Windows 10 )で、画面がちらつく件の対応方法

Viewing all 183 articles
Browse latest View live