読者です 読者をやめる 読者になる 読者になる

だるろぐ

とてもだるだるした日記です http://about.daruyanagi.jp/

WebMatrix とおさらばして、Visual Studio 2015 で ASP.NET Web Pages をはじめる

長年愛用してきた「WebMatrix」ですが、昨年10月に2017年11月1日 でのサポート終了がアナウンスされました。 Hi everyoneAfter a long and successful run, Microsoft has decided to end formal support of WebMatrix. Formal support will end on November…

WebMatrix:フィードを読み込むときに System.Xml.XmlException が発生する

ASP.NET Web Pages 製の BOT が、ある日を境に突然、System.Xml.XmlException エラーを吐くようになった。 The element with name 'RDF' and namespace 'http://www.w3.org/1999/02/22-rdf-syntax-ns#' is not an allowed feed format. 某サイトのリニューア…

WebMatrix:改修工廠の早見表がほしかったので作ってみた

今週は超忙しい&体調がよろしくなかった“ので”、合間を見つけて前々からほしかった改修工廠の早見表を作ってみた。接続詞が間違っているというツッコミが入りそうだけど、こういうのって、そういうときにこそやりたくならない? 最初に作ったヤツ ASP.NET W…

WebMatrix: URL にドットを含めたい

Wiki エンジンなんかを作るときなど、「ドット(.)」を URL に含めたい場合は、Web.config に一行、以下のように加えるといいみたい。 <configuration> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> </configuration> 静的リソースまでアプリケーションで処理するようになる(?)ので、効率が悪そうだけど。もっとちゃんと対策した…

「Visual Studio Community」で ASP.NET Web Pages をはじめる

みんなも大好きな「WebMatrix」ですが、そろそろ本格的に“なかったこと”になっているような気がしてならない今日この頃。代わりとなるのはおそらく「Visual Studio Code」なのでしょうが、まだちょっとベータ版なので、今回は定評のありまくる「Visual Studi…

WebMatrix:フィードを読み込んでデータベースへつっこむときに System.Data.SqlServerCe.SqlCeException が発生する。

だいぶ悩んで、Visual Studio まで立ち上げていろいろデバッグしていたのだけど、原因は簡単だった。 datetime 300 分の 1 秒、つまり 3.33 ミリ秒の精度で、1753 年 1 月 1 日から 9999 年 12 月 31 日までの日付と時刻のデータを格納するデータ型です。値…

WebMatrix 3:oEmbed ヘルパーを作ってみた(2)

WebMatrix 3:oEmbed ヘルパーを作ってみた - だるろぐ の続き。今回は Flickr の埋め込みをやってみようかと思う。 ~/App_Code/OEmbed.cshtml @helper Flickr(string url) { const string API_ENDPOINT = "http://www.flickr.com/services/oembed/"; using …

WebMatrix:Web.config の appSettings を使いこなす

WebMatrix:ローカルとリモートで異なる設定を利用する方法を考えてみた - だるろぐ でちょっと興味がわいたので、Web.config について少しいろいろ試してみた。 基本 Default.cshtml @using System.Configuration <html lang="ja"> <head> <meta charset="utf-8" /> <title>マイ サイトのタイトル</title> </head> <body> @ObjectInfo.</body></html>…

WebMatrix:ローカルとリモートで異なる設定を利用する方法を考えてみた

たとえば Twitter BOT を作っている場合に、 ローカルテスト中は、テスト用に作成したアカウントでポスト リモート展開中は、本番用のアカウントでポスト したい。Visual Studio だったらデプロイ時に XDT で Web.config を書き換えられるので簡単だけど、わ…

WebMatrix:ルビを振るためのヘルパーを作ってみる

とりあえずオーソドックスに App_Code フォルダ以下に Ruby.cshtml を作ってこんな感じに記述。 # ~/Ruby.cshtml @helper GetHtml(string text, string ruby){ <ruby><rb>@text</rb><rp>(</rp><rt>@ruby</rt><rp>)</rp></ruby> } 使い方はこんな感じ .cshtml の名前がそのまま静的クラスの名前になっていて、…

WebMatrix: Gmail 経由でアラートメールを送る(2)

見事 WebMatrix で Gmail 経由のアラートメールが送れたわけだが(WebMatrix: Gmail 経由でアラートメールを送る - だるろぐ)、このやり方には一つ欠点(? というか、仕様だな)があった。たとえば、以下のようなコード。タイマーでとあるジョブ(必ず失敗…

WebMatrix: Gmail 経由でアラートメールを送る

Hidetoshi Yanagi(無職) (YanagiHidetoshi) on Twitter に仕掛けておいた Twitter Bot が少しおかしいことに気が付いた。このブログのフィードだけ配信されていない。アプリが吐いたログを見ると、どうやらツイートが長すぎたようだ。修正、修正っと。で、…

ASP.NET Web Pages: より柔軟なルーティングを利用する

※ この記事は One ASP.NET Advent Calendar 2013 の11日目の記事です。@ono さん、ありがとうございます! ASP.NET Web Pagesは4番目の選択肢です。Razorのシンタックスのおかげで、PHPやクラシックASPに似た開発経験を提供してくれます。 Microsoftの技術の…

Razor で組まれた CMS「razorC.net CMS」

ASP.NET Web Pages(razor syntax)で開発された CMS で、WebMatrix で開いていろいろ改造できるみたい。 Open Source ASP.net CMS for WebMatrix - razorC.net 実際に WebMatrix で動かすとこんな感じ。機能的には割と普通というか、自動バックアップ機能と…

WebMatrix 3: プッシュしてデプロイ!

Windows Azure Web Sites はソース管理(GitHub とか CodePlex とか)からのデプロイが可能。前々から使ってみたかったがついつい後回しにしていたのだけど、これが超便利だった。

WebMatrix 3: Twitter Bot (+リアルタイムログ表示付き)でも作ってみる。

タイマーと WebMatrix 3: Twitter ライブラリ Tweetinvi API でツイートしてみる - だるろぐ を組み合わせれば、定期的に何かをつぶやく BOT も手軽に作れそうな予感。

WebMatrix 3: Response.OutputStream

動的に画像を出力したい、という場合はこんな感じでいいのかな。以下は「~/Download/あほー」にアクセスると、「あほー」と描かれた画像を出力する例。 @{ var text = UrlData[0] == string.Empty ? "Sample" : UrlData[0]; try { var bitmap = new System.D…

WebMatrix 3: @ でハマる(解決編

WebMatrix 3: @ でハマる - だるろぐ の続き。 HTML ヘルパーだからあんな謎挙動したんじゃね?2013-09-30 10:15:06 via Twitter for iPhoneというアドバイスをもらった。あ、たぶんそれだ。というわけで書き直した。 旧バージョン(Logger.cshtml) #App_Co…

WebMatrix 3: @ でハマる

ちょいとログを外部ファイルに吐きたくなって、テキトーにこんなコードを書いてみた。 #App_Code/Logger.cshtml @helper Write(string message) { System.IO.File.AppendAllText( Server.MapPath("~/log.txt"), string.Format("{0}:\t{1}\r\n", DateTime.Now…

WebMatrix 3: Twitter でログインしてアクセストークン(秘)を取得する

WebMatrix 3: Twitter でログインする - だるろぐ でめでたく Twitter でのログインが実現できたのだけど、実はひとつ問題があった。AccessTokenSecret が取れない。自分もあんまりよくわかっていないのだけど、Twitter の API を利用するには以下の情報が必…

WebMatrix 3: Twitter ライブラリ Tweetinvi API でツイートしてみる

たまたま Tweetinvi a friendly Twitter C# API - Home というのをみかけたのだけど、割と便利だった。 @{ var token = new TwitterToken.Token( "*****************Pj5ecAhlw3SqBPU5qHtBUSiTQDcgmUzBU", "*****************RZSPVglcM0TfE7mPCFzm334rw", "**…

WebMatrix 3: Twitter でログインする

ちょっと Twitter と連携するアプリを作ってみたかったのだけど、“スターター サイト”テンプレートを使った例以外はあまり載っていなかったので、今回はそれを使わずに、“空のサイト”テンプレートから作ってみるよ。というのも、ググってたら自分のサイトが…

はてなグループ、作ってみました。

本日、はてなブログを「ブログ グループ」に参加させる際に、ブログ記事のカテゴリーを指定できるようにしました。自分のブログで「写真」カテゴリーにある記事だけを「写真」グループに参加させる、といったことができます。 ブログ グループに参加する際に…

WebMatrix 3 で Wiki クローンを作る vol.1

前回(WebMatrix 3 で Wiki クローンを作る vol.0 - だるろぐ)からすでに1ヶ月たちましたが、だいたいこんなペースで、気が向いたときにやっていくと思います。すまんやで!さて、今回はデータの読み書きです。Wiki と言えば、データはテキストとして保存す…

Windows Store oEmbed API を NuGet にしておきました

WebMatrix 3: Windows Store oEmbed API を利用する - だるろぐ を NuGet にして NuGet Gallery で公開しました。 NuGet Gallery | Windows Store oEmbed API 1.0.2 前回の記事からの変更点は、System.Threading.Thread.CurrentThread.CurrentUICulture で言…

WebMatrix 3: Windows Store oEmbed API を利用する

Windows Store oEmbed API は、なかなかいいですね。ブログにこんなかんじでストアアプリの情報が貼り付けられます。使い方などは以下の URL を参照してください。 Windows Store oEmbed API として公開しなおしました - しばやん雑記 Windows ストアの内容…

WebMatrix 3 で Wiki クローンを作る vol.0

Ruby on Railsには良くかけたチュートリアルがあって、最初の一歩は踏み出 しやすいようになっています。しかし、チュートリアルをひととおり読んで、 scaffoldスゲーということはわかったのだけど、次に何をしたら良いかわから ないという人が多いようです…

WebMatrix 3: Windows Store アプリを紹介するヘルパー(未完成)

もしあなたが Windows ストア アプリを作っていて、なおかつ自分のサイトを APS.NET MVC/Web Pages で構築していたならば*1、Web ページに Windows ストア アプリの情報を埋め込みたいと思うかもしれませんね。公式に oEmbed *2のような仕組みが提供されてい…

nosniff 1.0.1

必ず X-Content-Type-Options: nosniff レスポンスヘッダをつけるようにしましょう 機密情報を含むJSONには X-Content-Type-Options: nosniff をつけるべき - 葉っぱ日記 とのことなので、ASP.NET でカスタム HTTP ヘッダを追加する方法 - しばやん雑記 を参…

WebMatrix 3: Sinatra on ASP.NET 「Nancy」 を利用する

Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy-path to all interactions. Hosting Na…

少しずつ Web サイトのリニューアルをしていきます。

まずはここから。 http://download.daruyanagi.net/ 仕組み的には Markdown テキストを App_Text フォルダに入れておいて、それを HTML に変換しています。Helper でプラグインっぽく拡張できるのがちょっと自慢。 WebMatrix 2: Markdown を汎用的に拡張する…

WebMatrix 3: JSON と JSONP

WebMatrix 3: フィードの購読者数を取得する - だるろぐ WebMatrix 3: フィードの購読者数を取得する(2) - だるろぐ WebMatrix 3: フィードの購読者数を取得する(3) - だるろぐ 一連の記事では、FeedCount の結果を JSON でやり取りしていました。 JSON …

WebMatrix 3:危険な可能性のある Request.Path 値がクライアント (:) から検出されました。

WebMatrix 3: フィードの購読者数を取得する - だるろぐ の補足。 http://localhost:11330/FeedCount/http://daruyanagi.jp/このような URL を受け取ると、 危険な可能性のある Request.Path 値がクライアント (:) から検出されました。 というエラーが出て…

WebMatrix 3: フィードの購読者数を取得する(1:サーバーサイド編)

こんな感じのソーシャル共有+ RSS 購読ボタンをサイトに追加したいな、と思って、今朝少し WebMatrix と格闘していた。SNS における共有数の取得部分は JavaScript だけで完結するのだけれど、RSS 購読数の取得部分は JavaScript だけでは少ししんどいのか…

WebMatrix 3: RSS フィードを出力する(解決編)

できた!と思ったけど、Internet Explorer ではちゃんと表示できない。なんか XML が尻切れトンボで出力されておる…… WebMatrix 3: RSS フィードを出力する - だるろぐ この問題を解決しておきましょう。

WebMatrix 3: RSS フィードを出力する

とあるフォルダー内のファイルのリストを RSS で出力したいなぁ、と思って昔に書いた記事(RSS 2.0 を実装する - だるろぐ)をコピペしてみたのだけれど、ちゃんと動かなかった……なぜだ。まぁ、原因を追求するのも面倒だったので、SyndicationFeed クラスを…

WebMatrix 3:SwissKnife.T4.AppSettings を使う

Web.config の appSettings セクションをもとにクラスを生成してくれる T4 テンプレート SwissKnife.T4.AppSettings がよさげなので、これが WebMatrix 3 も使えないかなぁ、といろいろ試してみた。 Web.config から AppSettings クラスを生成する T4 を NuG…

ASP.NET Web Pages 2 を構成する名前空間

Microsoft.Web.Infrastructure Microsoft.Web.Infrastructure.DynamicModuleHelper Microsoft.Web.Infrastructure.DynamicValidationHelper Microsoft.Web.WebPages.OAuth System.Web.Helpers System.Web.Mvc System.Web.Razor System.Web.Razor.Editor Syst…

ASP.NET Web ページとは(2)

WebMatrix と ASP.NET Web Pages ASP.NET Web ページとは - だるろぐ WebMatrix とは - だるろぐ これでだいたい ASP.NET Web Pages と WebMatrix の違いは説明できるかなぁ、と思う。 WebMatrix は ASP.NET Web Pages の開発もできる開発環境 ASP.NET Web P…

メモ:Request でつまづく

Request QueryString 、Form、Cookies、ServerVariables の各コレクションから指定したオブジェクトを取得します。 HttpRequest クラス (System.Web) Default.cshtml?Hoge=Fuga というリクエストがあった時、 Request["Hoge"] => "Fuga" が得られる。つまり…

ASP.NET Web ページとは

ASP.NET Web ページ (ASP.NET Web Pages)という技術をほかの人に説明するとき、どうすればいいんだろう? と最近考えているけど、ぶっちゃけよくわからん。一応 MSDN ではこのように紹介されている。 ASP.NET Web ページは、Web アプリケーションのプログ…

WebMatrix 2: 縦書きツイートするためのアプリ作った

Twitter の Web UI で改行が使えるようになったとのことで、タイムラインが縦書きでいっぱいです。それをみていたら、自分も漢詩なんかが縦書きで投稿できるアプリがほしくなりました。 縦書き - @daruyanagi Inside Tategaki 拡張メソッド さっそく中身を紹…

WebMatrix 2: Markdown を汎用的に拡張する仕組みを考えてみる

Markdown は覚えやすくて書きやすいのだけれど、とても非力に感じる。一応 HTML タグの埋め込みも可能なので、原理的にはなんでも書けるのだけれど、たとえばルビを振りたい場合、 国民の<ruby>税金<rp>(</rp><rt>ぜいきん</rt><rp>)</rp></ruby>を2億円使うなんて などといちいち書くのは、読みにく…

WebMatrix 2:OAuth でログインする(2)

WebMatrix 2:OAuth でログインする - だるろぐ の続き。今回は“空のサイト”テンプレートから、OAuth によるログイン処理を書いていくことにする。まぁ、“スターターサイト”テンプレートのコードを読めば分かる人もいると思うけど、こういうのは一度自分で書…

WebMatrix 2:OAuth でログインする

「WebMatrix 2」と「ASP.NET Web Pages」を組み合わせれば、Web サイトへ OAuth 認証の機能を簡単に追加できる。標準で対応するプロバイダは以下の通り。 Twitter Facebook Microsoft(旧 Windows Live) Yahoo Google LinkedIn そのほかにも、カスタムプロ…

WebMatrix 2:RESTful?な Web アプリケーション (5)

WebMatrix 2:RESTful?な Web アプリケーション (4) - だるろぐ の続き。結局こんな感じになったというのを書くのを忘れていた。実際に動作するサンプルは、Windows Azure に置いておいた。 http://daruyanagi-sample1.azurewebsites.net/Posts モーダル…

WebMatrix でほかの Web サイトのデザインをパク……じゃなくて、参考にさせていただく

ちょっと調べ物をしていて、arara by cereda というサイトを見つけたのだけど、このデザインがシンプルながら結構いけているな、と思った。トリッキーなマークアップが少なくて、ちゃんとセマンティック。印刷時の見栄えも素直だ。なにより素晴らしいのはレ…

WebMatrix 2:RESTful?な Web アプリケーション (4)

WebMatrix 2:RESTful?な Web アプリケーション (3) - だるろぐ の続き。サーバーへ手軽に PUT/DELETE できる方法はないかなぁ、と思って探していたのだけど、 Poster :: Add-ons for Firefox という Firefox 拡張機能が簡単でよかった。ただ、最近はあん…

WebMatrix 2:RESTful?な Web アプリケーション (3)

WebMatrix 2:RESTful?な Web アプリケーション (2) - だるろぐ の続き。日中戦争、ベトナム戦争並みに泥沼化してきたけど、突き進んでいこう! PUT/DELETE メソッドを扱えるようにする とりあえず、前回の宿題をさっさと終わらせる。 @{ Layout = "_Site…

WebMatrix 2:RESTful?な Web アプリケーション (2)

WebMatrix 2:RESTful?な Web アプリケーション - だるろぐ の続き。とりあえず、 /Posts/ -> GET:List /Posts/:id -> GET:Show /Posts/New -> GET:New, POST:Create /Posts/Edit/:id -> GET:Edit, POST:Update /Posts/Remove/:id -> GET:Remove, POST:DELE…