『お金持ちになれる黄金の羽根の拾い方2015』読んだ

本書を一言で表すなら、日本版『金持ち父さん貧乏父さん』がふさわしい。

お金をためる方法は大きくわけて

  1. 収入を増やす
  2. 支出を減らす
  3. 運用利回りを上げる

の 3 つがあり、この中で確実なのは、支出を減らすこと。

本書で一番興味深かったのは、 社員が自分一人または家族だけの『マイクロ法人』を使った節税法。

例えば、サラリーマンは給与から所得税や住民税が天引きされるのに対し、 法人は売上から経費を引いた残りに税金がかかる。 この違いを利用し、家賃の一部などを経費にして税金を減らすテクニック。

ただ、最初のマイクロ法人を作るのが一番のハードルだ。 独立して業務委託するにしろ、起業するにしろ、 いきなり結構なリスクをとらないといけない。 本書の手法を実践して成功した人はどれくらい存在するんだろう。 家業を継いだりして、もとから自営業なら本書の方法は使えるだろうけど。 勉強にはなったが、自分の背中を押すまではいかなかったな。

WCF って TPL をサポートしていたのか

ものすごく今さらだけど、知らなかった。 というか、試そうともしていなかった。

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading.Tasks;

namespace WcfAsyncSample
{
    [ServiceContract]
    public interface IGreetingService
    {
        [OperationContract]
        Task<string> GreetAsync(string name);
    }

    public class GreetingService : IGreetingService
    {
        public async Task<string> GreetAsync(string name)
        {
            await Task.Delay(2000);
            return await Task.FromResult(string.Format("Hello, {0}", name));
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var address = "net.pipe://localhost/Greeting";
            var binding = new NetNamedPipeBinding();

            var host = new ServiceHost(typeof(GreetingService));
            host.AddServiceEndpoint(typeof(IGreetingService), binding, address);
            host.Open();

            var client = ChannelFactory<IGreetingService>.CreateChannel(binding, new EndpointAddress(address));
            client.GreetAsync("Honda").ContinueWith(task =>
            {
                Console.WriteLine(task.Result);
            });

            Console.WriteLine("Enter で終了します。");
            Console.ReadLine();
            ((IChannel)client).Close();
            host.Close();
        }
    }
}

f:id:griefworker:20150223095902p:plain

ASP.NET MVC 5 でビューを PDF に変換

以前、iTextSharp を使って ASP.NET MVC で PDF を作成する方法を試した。

ASP.NET MVC で PDF を作成 - present

ただ、実現したいのは「表示している HTML を PDF でダウンロードする機能」なので、 iTextSharp だと HTML と同じような見た目になるように、自力でゴリゴリ頑張る必要があってツライ。

例えば、Rails で wicked_pdf を使ったときのように、HTML から PDF に変換するのが一番いい。 wicked_pdf は wkhtmltopdf を Rails で使うラッパー gem なので、 .NET にも同じようなものがあるかもしれない。

ネットで探して見つけたのは次の 3 つ。

この中で今も開発が活発なのは TuesPechkin だったので、今回はこのライブラリを採用してみた。

ASP.NET MVC プロジェクトに、NuGet でパッケージを追加。

Install-Package TuesPechkin
Install-Package TuesPechkin.Wkhtmltox.Win32

試しに、トップページを PDF に変換するサンプルを書いてみた。

using System.Drawing.Printing;
using System.Web.Mvc;
using TuesPechkin;

namespace PdfSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Pdf()
        {
            var helper = new UrlHelper(ControllerContext.RequestContext);
            var indexUrl = helper.Action("Index", "Home", null, Request.Url.Scheme);

            var document = new HtmlToPdfDocument()
            {
                GlobalSettings =
                {
                    ProduceOutline = true,
                    DocumentTitle = "PDF Sample",
                    PaperSize = PaperKind.A4,
                    Margins =
                    {
                        All = 1.375,
                        Unit = Unit.Centimeters
                    }
                },
                Objects =
                {
                    new ObjectSettings() {
                        PageUrl = indexUrl,
                    },
                }
            };

            var converter = new StandardConverter(
                new PdfToolset(
                    new Win32EmbeddedDeployment(
                        new TempFolderDeployment()
                    )
                )
            );

            var pdfData = converter.Convert(document);

            return File(pdfData, "application/pdf", "PdfSample.pdf");
        }
    }
}

デバッグ実行し、Web ブラウザで /Home/Pdf にアクセスすると、PDF ファイルをダウンロードできる。

f:id:griefworker:20150216211610p:plain

ASP.NET MVC 5 のコントローラーでアクションの URL を作成する

コントローラーでも UrlHelper を使ってアクションの URL を作成できたのでメモしておく。

var helper = new UrlHelper(ControllerContext.RequestContext);

var indexPath = helper.Action("Index", "Home"); // => /

var indexUrl = helper.Action("Index", "Home", null, Request.Url.Schema); // => http://localhost:1065/

太宰府観光

そろそろ梅も見頃だろうと思ったので、太宰府天満宮まで出かけてみた。 車は持っていないので移動は電車。 西鉄電車太宰府駅に到着。

f:id:griefworker:20150214104655j:plain

11 時くらいに着いたので参道に観光客はまだ多くない。

f:id:griefworker:20150214104851j:plain

まずは腹ごしらえ。 もやさまを見て気になっていた豚まん屋に行ってみた。

f:id:griefworker:20150214105155j:plain

豚まんは中の肉汁が凄い。小籠包のスープかよ!ってくら大量の肉汁。 溢れた肉汁で手がギトギトになったけど、ジューシーで旨かった。

f:id:griefworker:20150214105320j:plain

参道の店を物色していたら、外観が話題になったスタバを発見。 中はいたって普通そうだったので入らずスルー。

f:id:griefworker:20150214110636j:plain

デザートに梅ヶ枝餅と思ったので、定番の『かさの家』へ。

f:id:griefworker:20150214111125j:plain

既に行列ができていたので並ぶ。 ガラス越しに作っているところが見れたので退屈しなかった。

f:id:griefworker:20150214110920j:plain

焼きたての梅ヶ枝餅は外側がカリカリでこれまた旨い。

f:id:griefworker:20150214111101j:plain

参道を進んでいったら、入り口と見られる鳥居が見えてきた。

f:id:griefworker:20150214111813j:plain

聞いた話だけど、赤い橋はカップルで渡るとよくないらしい。

f:id:griefworker:20150214111944j:plain

橋を渡ると遠くに本殿が見えてきた。

f:id:griefworker:20150214112203j:plain

本殿への門。朱が青空に映えて綺麗。

f:id:griefworker:20150214112531j:plain

本殿に到着。 大学受験の合格祈願以来なので14年振り2度目になるか。

f:id:griefworker:20150214112651j:plain

飛梅は満開といっていい状況。 梅の開花状況は思っていたほどではなかったけど、飛梅が咲いていたからまぁいいか、って思えた。

f:id:griefworker:20150214113114j:plain

太宰府天満宮には九州国立博物館への直通エスカレーターがあるので、 ついでに行ってみることにした。

f:id:griefworker:20150214113902j:plain

九州国立博物館は初めて来たけど、近代的な外観でカッコイイ。

f:id:griefworker:20150214114259j:plain

天井高けー。エスカレーターは足すくみそう。

f:id:griefworker:20150214114729j:plain

なぜか山笠が。

f:id:griefworker:20150214114906j:plain

常設展を見て回ることにした。

f:id:griefworker:20150214114658j:plain

常設展を見終わったところで、日帰り太宰府観光は終了。 太宰府天満宮は記憶よりも綺麗だったし、ようやく九州国立博物館に行くこともできたので満足、満足。

ASP.NET MVC 5 でビューから文字列を作成する

ASP.NET MVC 5 でビューが描画する HTML を、そのままレスポンスとして返すんじゃなくて、 いったん文字列で変数に格納したかったのでやってみた。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace RenderViewSample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult String()
        {
            var html = RenderViewAsString("Index");
            return Content(html, "text/html", System.Text.Encoding.UTF8);
        }

        private string RenderViewAsString(string viewName, object model = null, string masterName = "_Layout")
        {
            ViewData.Model = model;
            using (var writer = new System.IO.StringWriter())
            {
                var viewResult = ViewEngineCollection.FindView(ControllerContext, viewName, masterName);
                var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, writer);
                viewResult.View.Render(viewContext, writer);
                viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
                return writer.GetStringBuilder().ToString();
            }
        }
    }
}

フレームワーク側で提供して欲しいけど、需要ないんだろうか。ないんだろうな。

いっかく食堂

警固にある『いっかく食堂』の『限定いっかく和牛ハンバーグ』が、 どうしても気になったので週末行ってみた。 カフェみたいな綺麗な店で、いい意味で定食屋っぽくない。

f:id:griefworker:20150207112731j:plain

お目当の『限定いっかく和牛ハンバーグ&唐揚げ』定食がこちら。

f:id:griefworker:20150207114338j:plain

ハンバーグをアップでドン。

f:id:griefworker:20150207114347j:plain

ハンバーグが表面こんがり焼き目が付いていて香ばしい。 中はふわっとしていて柔らかかった。 ブラックペッパーがピリッと効いていて良いアクセント。 唐揚げもさくさくジューシーで、超自分好み。

ハンバーグ旨かったけど、それ以上に唐揚げを気に入ってしまった。 次は唐揚げ定食もいいかもしれない。迷うな。

関連ランキング:ハンバーグ | 薬院大通駅赤坂駅桜坂駅