2017年3月31日金曜日

Web API あれこれ

久しぶりにVisual Studio 2015でのWeb API開発ネタです。

APIを非公開にしたい


ファイルを削除したり、ソースをコメントアウトすることなく、一部のAPIを非公開にしたいのです。
属性で指定できればスマートだと思うのですが、探しても見つかりませんでした。
仕方がないので、

 
public class SampleController : ApiController
{
    public object Post([FromBody]object value)
    {
        return this.NotFound();
 
        // 以降の処理はそのまま残す
  

のように、強制的に404エラーを返すようにしました。
別の方法ないですかね?


APIのルーティングを変更したい


一部のAPIのルーティングを変更する方法です。
Route属性を設定すればOKです。

 
public class SampleController : ApiController
{
    [Route("api/internal/sample")]
    public object Post([FromBody]object value)
    {


ただし、コントローラー名を直接指定する必要があり、

 
public class SampleController : ApiController
{
    [Route("api/internal/{controller}")]    // これはできない!
    public object Post([FromBody]object value)
    {


のように、WebApiConfigでは指定可能なcontrollerパラメーターを指定することはできず、エラーになります。
コントローラー名変更の際は注意が必要ですね。

またいつか、どこかで。

2017年3月24日金曜日

VirtualBoxでゲストOSのストレージ容量を拡張した!(けど失敗)

動作確認用にVirtualBoxを使用して仮想化環境を構築しています。
その環境のドライブ容量が少なくなってきて困っていたところ、拡張方法を教えてもらったのでメモ。(Tさん、ありがとう!)

ホストOSで下記のコマンドを実行します。
resizeの後に指定する容量の単位はMBです。


> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyhd "path\to\vdifile" --resize 100000


で、あとはゲストOSがWindowsなら「ディスクの管理」で拡張した領域をドライブに割り当てて・・・ということになるのですが、今試したらエラーが!


Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage.exe: error: Resize hard disk operation for this format is not implemented yet!


この前は成功したのになぜだ!?

またいつか、どこかで。

2017年3月17日金曜日

WHERE句に大量の条件を追加してみた!

SQLiteを使用するWindowsアプリケーションを開発しています。

あるテーブルから条件に合致するデータを取得し、それらに合致するデータをさらに別のテーブルから取得する、ということをやろうとしています。テーブルを結合すればスマートなのでしょうが、それができない事情もあり、2段階で処理します。

最初に取得したデータの件数が10000件近くあり、次のテーブルから取得するために

select * from table where id = 1 or id = 2 or id = 3 ... or id = 10000

のように調子に乗ったクエリを書いていたら、

 
SQL構文エラーまたはデータベースが見つかりません。
Expression tree is too large (maximum depth 1000)


というエラーが発生しました。
WHERE句に指定できる条件の数は999までのようで、1000以上はダメなようです。
仕方がないので、500件ずつ取得するようにしました。

またいつか、どこかで。

2017年3月10日金曜日

LocalDBにデータをため続けてみた!

ローカルの開発環境で、データベースにデータをため続けていたらエラーが発生して、追加できなくなりました。

 
Could not allocate space for object 'dbo.Data'.'PK_dbo.Data' in database 'xxxxxxxxxx' because the 'PRIMARY' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.


データベースファイル(*.mdf)のサイズを確認すると9.99GB!
SQL Server Express LocalDBの制限は10GBですから、そりゃダメですよね。

またいつか、どこかで。

2017年3月3日金曜日

MCP [70-483] 合格

先日、MCP [70-483] Programming in C# に合格しました。

というのも今年度の下期に社内で資格キャンペーンが開催され
みんな何かしらの資格を受けることになりました。

で、資格は情報処理しか受けたことなかったんですが
たまには違う資格でもと思い受けてみたんですねぇ。えぇ。

で、C#歴は4、5年なんでMCPでも取ろうかと。

[Microsoft Learningサイト]
https://www.microsoft.com/ja-jp/learning/exam-70-483.aspx

ただ勉強方法には非常に困りましたね。
なんせ何が出題されるかよくわからない。。。

出題範囲は下記となっております。

・プログラム フローの管理 (25 - 30%)
・型の作成と使用 (25 - 30%)
・アプリケーションのデバッグとセキュリティの実装 (25 - 30%)
・データ アクセスの実装 (25 - 30%)

自分のスキルを信じ、勉強は前日の徹夜のみ。。。

試験が終わった瞬間の感触は落ちたかなと。。。

「終了」ボタンをポチっとな。

なんと、875点!!!

「デバッグとセキュリティ」以外は9割以上取れてました。
「デバッグとセキュリティ」は6割でした。

試験の内容、気になりますよね~
こればっかりは詳細を書くことはできませんが
C#歴が長い人は、Microsoft Learningサイトに書かれている範囲で
自信のない部分だけに絞って調べてみれば問題ないかと。

「Jump Start」のビデオは日本語字幕対応しているので
お時間あるなら見てみてもよいのではないでしょうか。
私は一通り見ましたがあまり役には立たないかもですね。
C#初めての方は見ておいてもよいと思います。

選択問題は残りニ択で迷う問題が何個かあったのですが
経験からの予測でなんとか乗り切れた感じですね。
問題をよく読まないとひっかかりそうな問題が多い印象でした。

まぁ全く参考になる情報ではありませんね。

ではでは。