サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
kazuktnd.wordpress.com
Amazon EC2 F1 Instances (Preview) https://aws.amazon.com/jp/ec2/instance-types/f1/ いやぁ、Azure が先行するかと思ってたのですが、Amazon の方が先に使える事になるんですかね。 という訳で、自分の中で想定してた諸々と想定して無かった諸々を書いてみたいと思います。 ネットワークトラフィックの前さばきには使えない https://aws.amazon.com/jp/blogs/aws/developer-preview-ec2-instances-f1-with-programmable-hardware/ The New F1 Instance の構成要素を見ると PICe x16 で CPU と接続されている以外は 288bit-wide な 64GiB DDR4 ECC メモリが接続されているとな
一度は nuget統合がらみで project.json とかに移行するという形でdiscon言われた msbuild ですが、結局息を吹き返し、Visual Studio 2017 RC で .NET Core App (ASP.NET vNext 改め ASP.NET Core でのWebアプリを含む)のビルドランナーとして復活を果たしました。 この msbuild について、ビルドのカスタム手法について諸々調べてみましたので blog にまとめてみます。 デフォルトの csproj からの targets / props の読み込み 実際にプロジェクトを作って csproj を開いてもらうと解りますが、msbuild の Import による targets の取り込みがありません。過去の知識だけを頼りに調べようとすると一体何が起こってるのやらで即詰みしますね。 いつ増えたんだ!って
(追記)mataliloさんに await は依存してないけど async はっ?てツイッターで指摘されて気づきました。async は依存してます。メソッドの内容を Task に包みます。async はそういう意味で現状存在するTaskという選択肢にデフォルトで依存しています。単純に試した範囲内で同一名前空間、同名のクラスに+いくらかのメソッドというレベルの実装では置き換えできませんでした。すいません。(/追記) F#の立ち位置 – 猫とC#について書く代わりにHaskellとF#について書くmatarilloの日記 – haskell を読んで、色々とちょっと待ってよ感があったので書いてみます。 C#は色々詰め込みすぎってのはまぁそう。色々詰め込みすぎた結果として直行性を失ってる部分もある事はある。 ラムダの中で yield できないとかそういうのは確かに直行性を失ってる。catch ブ
資料現物とかは以下 PowerPoint のファイル http://sdrv.ms/12Gh11k ソースとかはこちら https://github.com/kazuk/SimpleILer/ 比較的簡単(当社比)なコードで、 MSIL を逆アセンブル、制御フロー解析、データフロー解析をやっています。 コアロジックは Msil クラス に実装されていて、上から順に ILInstructions で命令の切り出し、GetRuns で基本ブロックに分解、PopulateControlFlowPath で制御フローパスの列挙、 SimulateEvalStack で評価スタックのシミュレーションをやり、結果として各 IL 命令のデータ依存グラフが得られます。 基本ブロック 簡単に言えば、制御構造単位での命令列です。基本ブロックでは末尾を除いて制御フロー命令が無いようになっています。また、基本ブロ
というわけで、 NuGet & MsBuild なネタ。 NuGet 2.5 から MsBuild の targets と props の展開ができるようになりました。 NuGet 2.5 のリリースノート んで何が便利かというと、ビルド時処理のカスタマイズを部品化できて、 csproj を人がいじらないでも、その部品の付け外しが NuGet パッケージのインストール/アンインストールで簡単にできるという事で、これまでは一部のビルドヲタとかビルドをカスタムすることができる人に覆いかぶさっていた作業が NuGet パッケージ入れろよとか、外せよの一言で済んでしまうという事である。 取りあえず、便利すぎて濡れたので作った物 そういうカスタムビルド処理用の NuGet パッケージを書くためのプロジェクトテンプレートを作ってみたのが NuGetCustomBuilder になる。 んで、このプロジ
.NET基礎勉強会 http://connpass.com/event/2441/ で ILについてお話させていただく事になったんですが、まぁ 30分枠ぐらいだと、だいぶ話せる事が限られるんで、あらかじめ Blog に記事乗せといた方が良いかなー的に書いておきます。 「手元にございますMSIL命令表をご覧ください」 「えっ、どこよ?」 .NET Framework がインストールされている環境であれば、MSIL命令表は入っています。mscorlibアセンブリ、 System.Refrection.Emit 名前空間配下の OpCodes クラスのOpCode型フィールドをリフレクションで舐めてください。 命令表としての活用の仕方にもよりますが、プレフィックスバイト等も命令表には入っています (Prefix1 etc)、自分の用途でプレフィックスとか要らない場合には、そういう物をフィルタして
宣伝かよ はい、宣伝です。軽く失注続きで本気にこのままだと路頭に迷う事態なので一人ならどうという事は無いのですが嫁子供居る身なので必死なわけで、個人で作って使ってるツールの類に値段を付けて並べてみようかとの第1弾です。 タダで手に入る物で全部回して主義の方はこの先読んでも意味ないのでお帰り下さい。 Doc<Code> “doc of code” とは .NET Framework アセンブリとその XML ドキュメントファイルを投げ込むとドキュメントを閲覧できる ASP.NET アプリケーションです。 同様なXMLドキュメントコメントの整形を行うアプリケーションとしては Sandcastle があります。Sandcastle プロジェクト自体は現状 Sandcastle Help File Builder でメンテナンスされているようですが、若干プロジェクトに不安定要素があり、ちょっとやや
昨夜リリースされたばかりの Microsoft Code Digger をさっそくハックしてみました。 明け方の段階ではつかえねーコレだったのですが、ハックによってそこそこ使えるようになった感じです。 何ができる物ですか? 簡単に言えば Pex の低機能版です。一メソッドを選択し、コンテキストメニューから Generate Inputs / Outputs Table を行うとPexでの動作パスの列挙および、その動作パスに入るパラメータ値、そのパラメータでの呼び出し結果がリストアップされます。 public class Class1 { public int Test( int x,int y) { checked { return x/y; } } } というTestAddを Generate Inputs/Outputs すると以下のように表示されます。 UI上ではそれだけです。これ以
年末年始辺りから調べ初めて、一応これで確定かなと思える段階になりましたので記事おば。 サイドローディングって何ですか? 一般的に Windows 8 / RT ではアプリケーションはマイクロソフトの運営する Windows アプリストアから入手するようになっています。( Windows 8 のデスクトップ環境はこの限りではありません) Windows アプリストアは全世界に向けて公開されている物なので、企業内利用を前提とするアプリケーション(いわゆるインハウスアプリケーション)の配布と展開には向きません。特に企業秘密なロジックやその他が外部に漏れないように管理したいという場合には向きません。 これにたいする回答がサイドローディングという事になり、Windowsアプリストアを経由せずにアプリケーションをインストールする事ができます。 サイドローディングが可能なクライアントOS Windows
Kindle 本のソース Kindle 本を書く上でのソースは、html と pdf, word 文書等が選べるようです。 細かい事はこっちを参照 Amazon.com: Kindle Direct Publishing: Help と Type of Formats んで、今回は Visual Studio の ASP.NET Web Application の csproj を魔改造して html から mobi 形式で kindle 本をビルドするという形にします。プロジェクトのドキュメントとか、ソリューション内に kindle 本のプロジェクト置けば電子書籍化できるという誰得な物ですね。 というわけで ASP.NET Web Application のプロジェクトを作ります。 MsBuildBook とか付けてますけど、こんな本が Amazon の Kindle ショップに並んでる
Gistしましたって事でお知らせ。 https://gist.github.com/kazuk/5089069 何をするものですか? ビルドすると NuGet パッケージを作り、ローカルリポジトリに発行します。 使い方 ソリューションを右クリックし、「NuGetパッケージの復元の有効化」を行います。(又は NuGet.exe をソリューション配下、 .nuget ディレクトリに置いてください) ソリューションにGistから取ったファイルを突っ込んでください。 csproj の末尾で Import してください 必要に応じて NuGetRepository を PropertyGroup 定義してください(定義しないと \\nugetrepos.local\NuGetRepos にパッケージを発行します) プロジェクトに nuspec を加え、ビルドアクションに NuSpec を指定します。
どーも、どーも、どーもです。 Visual Studio Advent Calender 2012 が中々枠が埋まり切らないという悲鳴が上がってたので、参加しましたです。 というわけで、表題通りパフォーマンスプロファイリングについて書かせてもらいます。 Visual Studio でのパフォーマンスプロファイリング機能は Visual Studio 2010 までは Premium 以上で有効、Visual Studio 2012 では Professional 以降で有効という事で、Visual Studio の上位エディション機能がやっと普通のエディションで使えるようになったという事になります。 というわけで、プロファイリングによってなんかしらプログラムのボトルネックが検出できるかという事で緩く募集したら msgpack-cli をプロファイリングしてみてほしいという事で試してみました
というわけで、二日続けての Advent Calender、今回は One ASP.NET です。 というわけで、タイトルの事についてゴニョゴニョ語ってみようと思います。タイトルからして嫌なものを題材にしてって感じですが、クリスマスに向けてホノボノし続けてるとたまにホラー映画とか見たくなるじゃないですか、そういうニーズにこたえる記事でございます。 ASP.NET での Web サイトやアプリケーションを皆さんはどのように監視したりしていますか? ping や一定期間ごとの get リクエストでの死活監視 これは最低限の監視ですね、サーバやインフラが生きてないんじゃお話にならないでしょう。 定期的なWebアクセスログやシステムイベントログの収集と分析 システムイベントログを取ってるとアプリケーションのエラーとかの情報はおおよそ良い感じに集まるので、これをベースに監視や管理を行うのはいいことで
日本で発売されなかったとか、そういう話じゃなくて、買って手元に届いたんだけど起動しなかった感じ。 普通の人だとちょっと諦めでサポートに駆け込んだ方がいいケースだったのでは?なんですが、日本未発売のマシンだから当然にサポートとの往復とか相当な時間がかかるはずなので無理矢理でもリカバリーさせたの話。 入手経路については細かくは書きませんが、届いてすぐに「なんかエラーでて上がらない」のスクリーンショットをFacebookに書いたら入手経路に中の人が速攻でメッセージで幾つかのエラーの情報を送ってくれましてそのうち一つがビンゴだったわけであります。 結果的にはUSBメモリーからリカバリーが必要だったんですが、もちろんの事としてUSBメモリーにリカバリーイメージを作る元が起動してないから困る。 結果的に向こうでUSBメモリーにリカバリーイメージを作ってもらい、その中身のファイルをもらってなんとかする方
というわけで、Metro 開発始めました。 Windows 8 Consumer Preview と Visual Studio 11 Express for Windows 8 を開発環境として利用してアプリケーションを開発する上で、テンプレートから Grid Application テンプレートで開発スタートしてみたので、このテンプレートの基本構成その他読み取った物をつらつらとメモがきしてみます。 プロジェクトのファイル構成 パッと見でCommon, DataModel に多少の C# ファイルがある事のトップに XAML ファイルがあり、XAMLに関連づいた C#ファイルがあります。 Common/BindableBase.cs Common の BindableBase.cs が INotifyPropertyChanged 等データバインディングの為の基本実装をしているようです。
元ネタはすでに修正済みだったって事でNo.1が切腹してましたが、こんな方法もあるよというアプローチとその周辺にまつわる ASP.NET Core の闇についてちょっと書いてみます。 まず、ASP.NET において IHttpModule が HttpApplication のどのイベントをハンドルしているのか調べる方法はあるのか、イベントハンドリングに割り込む前にここから話を進めましょう。 回答としては存在します。 HttpApplication.Events プロパティ このプロパティの説明を見る通りで、EventHandlerList を舐めればイベントハンドラを列挙する事が出来ます。 「EventHandlerList を舐めれば」が可能であればこれだけで話は済みますが、そんなに簡単には行かんのです。 まず、EventHandlerList は object をキーとしてDelega
なんとなく出来ちゃったという物のおすそわけ blog. 何を解決する物ですか? ある意味 ASP.NET MVC による大規模アプリケーション開発をサポートします。 大規模というのは、サブシステム分割が必要となるレベルであり、例えば Controller が数十からそれ以上に達する可能性の高いシステムです。 このような大規模アプリケーションを作る場合、ASP.NET MVC の Area 等を利用してアプリケーション内で分割するのは一つのアプリケーションの規模の増大を招くだけであり、規模の暴力に対してのアプローチとはなりえません。 根本的にはアプリケーションをサブシステムに分割し、各個サブシステムを統合するという手順が望ましいわけです。 単純に msbuild プロジェクトファイル一個でこの分割によって分かれたアプリケーションの統合が出来ましたよって事です。 ソースと動作原理 Build.
//BUILD/ と思わせておいて msbuild と Visual Studio のネタ。 という訳で、「Hay U! 思い通りにビルドをコントロールできてるかい?」 うちの Blog はたびたび msbuild のネタを取り上げるという事で、生粋のビルドヲタクである事は読者の皆様にはバレバレだと思いますが、C# Advent Calender に参加して、ビルドヲタたるものこれは知っとくべきとか、こんぐらい当然なのよっていう物を世間に知らしめておきたいかなと。 msbuild の基礎の基礎(1) 処理対象の項目一覧 ItemGroup とアイテム msbuild は処理対象の項目の一覧を ItemGroup として定義します。シンプルに csproj の中でファイルやアセンブリ参照が ItemGroup として定義されています。 VIsual Studio でクラスライブラリのプロジェ
MVC でリポジトリパターン?サービスインターフェース?を Code Contracts で堅くいこうとすると、こんな恰好になりますよね? [ContractClass( typeof( RepositoryContracts ) )] public interface IRepository { Data GetByName( string name ); } [ContractClassFor( typeof( IRepository ) )] abstract class RepositoryContracts : IRepository { public Data GetByName( string name ) { Contract.Require( name!=null ); } } これをやればリポジトリを無茶なパラメータで呼ぶような事は契約によって守られるわけで素晴らしいん
neuecc さんの ToArray vs ToList を受けてちょっと書いてみます。 というのも、 .NET Framework にはパフォーマンス上ある一点に断崖絶壁があり、この断崖絶壁を何の気なしに超えてしまうと一気にパフォーマンスが落ちます。この断崖絶壁すなわちオブジェクトのサイズによる CLR のヒューリスティックが発動される時です。 例えばこのヒューリスティックはオブジェクトのサイズが 24KB を超える点で発動します。 CLR2 ではこのヒューリスティックは LOH へのオブジェクトの配置、CLR4では Gen1 に確保する様になっているようです。 このヒューリスティックの発動は性能面ではっきりした影響を表す事に注意してください、最も単純な例でも 20% ~ 30% の性能影響がでます。 (参考: .NET CLR2 と CLR4 の StringBuilder のパフォー
最近ではもっぱら開発環境はノートPC、どこでも開発できるのは魅力&やってる事の関係からUSBを頻繁に差し替えるので、キーボードのすぐ脇に出てるケーブル差し替えが出来るのは便利ですねーと。 とりあえず現状使ってるノートPCは hp の ProBook 4420s 本体購入価格は4万円を切っているというアウトレット品。中身は殆ど総とっかえで HDD を SSD換装、メモリはデフォルトの2GBを外して4GBボードx2で8GBへ、本体ディスプレイだけだと情報表示量が貧弱すぎるので外部ディスプレイに UXGA 1600×1200 を接続しています。 SSDにしてあるので、メモリは8GBでもまぁまぁ快適、Core i3 なので Azure のエミュレータで多数ノード上げるとコアが足りなくなる不便さはあるけど一応2コアあるので処理競合をさせようとすればしないでもないぐらいな。 Windows 系メインの
環境の準備 というわけで Visual Studio でのカスタムツールの実装方法です。 まず最初に Visual Studio 拡張のSDKが必要になりますので、ダウンロードしてインストールしてください。 Extending Visual Studio から Visual Studio 2010 SDK で、非常に定型コードの多い、カスタマイズの必要のない部分が多いので、Razor Preprocessor のソースを持ってると非常に楽です(っていうか、とってきてそのままプロジェクトに入れて下さい的解説が多く出ます)ので zip は拾って展開しておいてください。 プロジェクトの作成 Visual Studio 2010 SDK をインストールすると、Extensibility 配下に VS Package プロジェクトが表示され、Visual Studio 拡張のパッケージを作成する事が
元ネタは How to: Create Multi-Project Templates http://msdn.microsoft.com/en-us/library/ms185308.aspx なんだけど、一回作ってる最中にうまくビルドできなくなったので、メモとりながら「やってみる」という blog 要 Visual Studio SDK です。 プロジェクトテンプレートのプロジェクトを作成。ソリューションエクスプローラー上での構造があうように作る。 <?xml version="1.0" encoding="utf-8"?> <VSTemplate Version="3.0.0" Type="ProjectGroup" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <Name
という訳でいくつもの連載するよと言っといて(2)が来ないとかやってるとアレなので、Visual Studio 2010 リリース後に出てきた物が開発にどう影響を与えるかという事で、Pex を取り上げます。
Visual Studio 2010 「後」って事で VS2010 には正式には組み込まれてないんだけど、その後にリリースされた各種拡張がどんな感じでプログラミングに影響を与えるかの話。 (1)って事で連載。 というわけで最初は Code Contracts、Code Contracts については一回書いてるけど素晴らしく使える代物って事で導入から設定まで流した上で軽くイントロダクション まずダウンロード、DevLabs Code Contracts から Download Standard Edition / Download Premium Edition どっちか選んでインストールする。僕は Premium を選んでインストールしたぜって事でそれをベースに書きます。 (ってか Static Checker 無いと契約違反をビルド時に検出できないんで魅力半減っていうより魅力なっしんぐ
ランチにビールはかまいませんが、画像をアップするのはテロですのでやめましょう。 などと内輪ねたを最初に持ち出してみます。
NuGet のプロジェクトテンプレートを公開してたりする人なので、レシピを公開しておきましょう。 最も簡単な方法は Visual Studio のファイルメニューからテンプレートの作成なんですが、今回はちっと難しい方法を。 Visual Studio SDK をインストールします。Download details: Visual Studio 2010 SDK こいつをインストールすると、プロジェクトの種類として Extensibility が選べるようになり、Visual Studio の拡張パッケージを作成したり色々できる他に、その他色々のおまけがついてます。 今回は ASP.NET MVC3 のHttpModule を作成する為のプロジェクトテンプレートを書いてみます。プロジェクト名を設定して出てくる画面はこんな感じ。 いきなり vstemplate が開かれてますね。ソリューション
日本最速? ってわけで NuGet パッケージを作るためのプロジェクトテンプレートをインストールしてくれる NuGet パッケージを作ってNuGet.org に放り込んでみました。 インストールスクリプトを使ってるんでコンソールから入れろって言われます。 おとなしくコンソールから行ってください(お願いします)。 イカ、コンソールでのコマンドとレスポンスでゲソ。 以下と変換しようとしたらイカが出たので侵略されたゲソ。太字が入力ゲソ。 PM> Get-Help NuGet TOPIC about_NuGet SHORT DESCRIPTION Provides information about NuGet Package Manager commands. LONG DESCRIPTION This topic describes the NuGet Package Manager comm
ちょっと、奥さん聞いてよ。 JParsec – NParsec Tutorial の一番上の downloaded here でとったソースと、一番したのフルコード The final parser code is as following: …をべたっと cs ファイルに張り付けて Binary, Unary, Grammar の double を System.Linq.Expressions.Expressionにする。 plus の delegate ( double a,double b ){ return a+b; } を Expression.Add に…それぞれ Expression のビルダ関数にマップする。 Grammar p_number = Terms.OnDecimal<double> を Terms.OnDecimal<Expression>にして、 retur
次のページ
このページを最初にブックマークしてみませんか?
『kazuk は null に触れてしまった』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く