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

だるろぐ

明日できることは、今日しない。

WPF + PhantomJS で Web ページの内容を取得してみる

「AngularJS で作られた Web サイトの内容がとれないよ……」って Twitter で泣いてたら、@nakaji 先生が「PhantomJS 使えばええやろ」的なことを言っていた気がするので、ちょっと試してみました。 PhantomJS とは ぶっちゃけあんまりよくわかってないのです…

Visual Studio 2017 で Windows サービスを作った

まぁ、この程度のことであれば、今までとあんまり変わらんと思うけどね。ちょこちょこ便利になってる感じはある。 今回の目標 実行ファイルが書き換わったら、トーストで通知してほしい。 プロジェクトを作成する [テンプレート]-[Visual C#]-[Window…

UWP:はてなの oAuth 認証

プログラミングの秋……なのかな? 最近、またプログラミングをちょろちょろとやっています。今回は、UWP。一つ新しいのができたのでストアに提出して、今はむかし作りかけて放置中のはてブをつけるアプリを完成させようと四苦八苦してる途中。実はこのアプリ…

C#:非同期なイベント?

C#

たとえばこんなコードがあるとする。ラムダ式でイベントハンドラを実装する、よくあるヤツ。 public void Run(IBackgroundTaskInstance taskInstance) { taskInstance.Canceled += (sender, reason) => { Hoge(); }; } イベントハンドラ内で非同期コードがあ…

引数で匿名型を受け取る

C#

string クラスのためにこんな拡張機能があれば便利かなぁ、と思った。指定した要素タグでソーステキストを括って、HTML タグを出力できる。 public static string Wrap(this string source, string element) { return string.Format("<{1}>{0}</{1}>", source, ele…

VirusTotal API を使ってみる

WPF で VirusToral API を利用するサンプルを書いてみました(書いた後に気付いたのですが、あんまり WPF 要素なかったです)。 VirusTotal とは 指定したファイルをいろんなウイルス対策エンジンでスキャンしてくれるサービスです。VirusTotal - Free Onlin…

Windows Store Apps:Cookie を取得して、ログインが必要なページを閲覧する(はてなフォトライフ)

さてはて、Widows Store Apps: WSSE 認証(はてなフォトライフ) - だるろぐ で AtomPub API(はてなフォトライフAtomAPI - Hatena Developer Center)を無事叩けるようになったのだが、これがショボい。ファイルの操作系(EditURI)はともかく、情報の取得…

Widows Store Apps: WSSE 認証(はてなフォトライフ)

Surface RT(Windows RT)で“はてなブログ”を書くのが微妙にめんどくさいので、“はてなフォトライフ”のクライアントでも作ろうかと思い、@kanaharu ちゃんのブログ(はてなフォトライフに画像をアップロードするプログラムをC#で実装してみた - kanaharu.cpp…

--> 演算子

C#

C++ で新しい演算子“-->” が採用されたそうだが、これは C# ですでに利用可能である。この演算子は、左辺の変数を右辺値まで 1 ずつ減算する。 @{ int x = 10; } <html lang="ja"> <head> <meta charset="utf-8" /> <title>マイ サイトのタイトル</title> </head> <body> @do { <p>@x</p> } while(x --> 0); </body> </html> 筆者の趣味により、コードは Razo…

意図が明確なコード

C#

WebMatrix 2: Markdown を汎用的に拡張する仕組みを考えてみる - だるろぐ でこんなコードを書いた。 // 型名-型ディクショナリから、メソッド // (Type: p[0]).GetHtml(p[1], p[2]...) // をもつ HtmlHelper を探す var result = helper_table.FirstOrDefau…

Google Chart を使った数式ツールを作ってみた(3)

ネスト(入れ子)が認識できない。あと、[Shift]+[Tab]キーで逆向きに移動したいけれど、これがなかなかめんどくさい。{} だけじゃなくて () にも対応させたい、なんて考えだすと破たんするのが目に見えてるし。というわけで、解決策は正規表現か、構文…

Google Chart を使った数式ツールを作ってみた(2)

Google Chart を使った数式ツールを作ってみた - だるろぐ の続き。さすがにもう少し完成度を上げようと思って、 数式テキストの新規作成・開く・保存 編集機能(切り取り・コピー・貼り付けなど) 数式イメージのファイル保存・クリップボードへコピー なん…

Google Chart を使った数式ツールを作ってみた

晩御飯食べた後にさくっと作ってみた(参考:WebMatrix で数式を表現する(1) - だるろぐ)。自然演繹のブログの続きを書こうと思ったのだけど、プレビューできないと数式が書けない人なので……。でも、これ、ネットワークがつながっていないとだめなのはと…

WebMatrix 2:ASP.NET と PHP(2)

WebMatrix 2:ASP.NET と PHP - だるろぐ あたりを書いた時に Twitter で「WebMatrix 2(というより、Razor 記法)は Visual Basic に対応していないのか?」という疑問を見かけたのですが、ちゃんと対応しています。たとえば前回の例の場合、こんなふうに書…

C# も神だった! (もちろん、WebMatrix も神)

0.1を10回足してみた。 PHPでの結果、1 JavaScriptでの結果、 0.9999999999999999 Pythonでの結果、0.9999999999999999 Rubyでの結果、1.0 Haskellでの結果0.9999999999999999 結論、PHPは神、その次、Ruby 0.1を10回足してみた結果PHPが神と言う事が判明し…

寄り道: string クラスの拡張

C#

WebMatrix でユーザー認証機能(3) ―― なにはともあれユーザー登録しないと始まらん - だるろぐ の脱線。個人的には <fieldset> <legend>Register Your Account</legend> @this.RenderTextWithValidation( "name", "Name", new { Value = name} ) @this.RenderPasswordWithValidation( </fieldset>…

なぜ var d = new Dictionary<string, string> { { "a", "b" }, { "c", "d" } } と書けるのか ―― コレクション初期化子

C#

Dictionary ってその場で初期化できるんだね。 private Dictionary<string, string> AllowedFileType = new Dictionary<string, string>() { { "image/jpeg", "jpg" }, { "image/png" , "png" }, { "image/gif" , "gif" }, }; こっちのほうがいいや。 これまでのサンプルを NuGet パッケージ</string,></string,>…

失敗の数だけ強くなりたい( Jason.NET についての補足

C#

失敗の数だけ強くなりたい - だるろぐ の補足。 "files": { "close_duplicate_tab.js": { "type": "application/javascript", "filename": "close_duplicate_tab.js", "raw_url": "https://gist.github.com/raw/3175551/c7590ad8cfdd352150a8c845ff96fb9f30b…

失敗の数だけ強くなりたい

朝起きてボーっとしてたんだけど、そしたらふと「Windows Phone端末使って Gist でメモ取れたら便利じゃね?」と思いついた。早速、 Visual Studio を起動。けれど、趣味プログラマーの悲しさ、久しぶりだと何もかもすっかり忘れている*1。しかも、 Silverli…

デスクトップ全体を一時的に暗転させたい (2)

デスクトップ全体を一時的に暗転させたい - だるろぐ がなぜか動かんなぁ、と思っていろいろ試していた(08式机上撮影機 v1.5.0 - だるろぐ)のだけど、原因は FormWindowState.Maximized だったっぽい。これをコメントアウトすると動いた。 public const in…

シリアライズを利用したアプリケーションの設定保存

C#

アプリケーションの設定保存はいくつか方法があるけど、XMLシリアライズを使うのが一番楽な気がする。 var settings = Settings.FromFile(); settings.ToFile(); って感じに使うようにしてみた(Type08ScreenCapture - Daruboard のコードの一部)。 パブリ…

デスクトップ全体を一時的に暗転させたい

C#

Windows 8 は[Windows]+[PrintScreen]キーでデスクトップのスクリーンショットを“ピクチャー”フォルダに保存できる - だるろぐ Windows 8では、スクリーンショットを撮るときデスクトップにエフェクトがかかる。画面が一瞬だけ暗転して徐々に戻る、とい…

最初に生成されたウィンドウがメインウィンドウ

<Application x:Class="SoundKeyboard2012.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml"> <Application.Resources> </Application.Resources> </Application> こう書いたら、MainWindow がメインウィンドウになると思うじゃないです…

Notify Property Weaver で楽ちんに INotifyPropertyChanged を実装する

INotifyPropertyChanged の実装って面倒じゃないですか。 public class Person : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public string GivenNames { get; set; } public string FamilyName { get; set; } pu…

なんでフック、すぐに死んでまうん……

せっかく公開した SoundKeyboard 2012 なのだけど、ちょっとしたバグがある。長い間放置してると、音が鳴らなくなり、サウンドパックを切り替えようとするとエラーで落ちる。どうも、フックが勝手に外れてしまうらしい。@daruyanagi GC に回収されてるだけじ…

WPFでバージョン情報ダイアログをつくる

VisualBasic では My.Aoolication.Info でバージョン情報なんかを簡単に取得できるらしい。これを使えば簡単にバージョン情報ダイアログを実装できそうだな。これを C# から使ってみよう。http://msdn.microsoft.com/ja-jp/library/0f1ec0yf(v=vs.80).aspxMi…

ClickOnce インストーラーで「ハードディスクへの書き込みエラーが発生しました。ディスクに十分な空きがあるかどうか確認してください」と表示される

C#

ClickOnce インストーラーで、ディスクにGB単位で余裕があるにもかかわらず、こんなエラーが表示される場合がある。ウチの場合は、同じDLLが2回インストールされようとしていたのが原因らしい。プロジェクトのプロパティにある[発行]タブで[アプリケーシ…

YouTube の URL を動画タグへ変換する(oEmbed)

Flickr の URL を画像タグへ変換する(oEmbed) - だるろぐ のYoutube版も作ってみた。Youtube も oEmbed に対応しているのだけれど、画像ではなく動画なので、リンクを作る場合は url ではなく html (objectタグ)を使うのが、Flickr の写真の場合と少し違…

Flickr の URL を画像タグへ変換する(oEmbed)

eEmbedというのは、あるリソースのURL(例えばFlickrの特定の写真のページのURL)を サードパーティ上で、写真自体の埋め込みに変換したいときに、 埋め込みに必要なパラメータを取得するためのプロトコルみたいです。 URLを埋め込みコンテンツに変換するoEmbe…

危険な可能性のある Request.Form 値がクライアントから検出されました

ASP.NET 規定の動作では、入力にHTMLタグが含まれていると、バリデーションでエラーを吐く(HttpRequestValidationException)。これはこれでありがたいのだけど、どうしてもHTMLタグを受け入れたい場合はある。 ページ単位でバリデーションを無効にする web…

RSS を処理する

C#

今日の10分プログラミングは、RSSを取得してリストタグに変換しようの巻。 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Xml; using System.ServiceModel.Syndication; names…

RFC822 の日付形式

C#

RSS 2.0 を実装する - だるろぐ の記述に誤りがあった(ちなみにこのブログは誤りだらけなので鵜呑みにしてはいけない)。 RSS 2.0 Notes によれば、日付の形式は RFC822 に従わなければいけなかったらしい。例えばこんな感じ。 Sun, 12 Feb 2012 21:09:36 +…

C# の Markdown エンジン

C#

C# で Markdown エンジンを探すと、 MarkdownSharp と MarkdownDeep というのが見つかるけど、どっちがいいんだろうね。 markdownsharp - C# Markdown processor - Google Project Hosting Topten Software (MarkdownDeep) どちらも NuGet からダウンロー…

RSS 2.0 を実装する

C#

http://sample.com/Post/LastUpdated.rss で RSS が吐かれるようにしてみたかった。まずはルーティング。 #Global.asax.cs routes.MapRoute( "Mode", // ルート名 "{controller}/{action}.{mode}", // パラメーター付きの URL new { controller = "Home", ac…

Embedded Tweets を使ってWebページにツイートを埋め込む

C#

最近のTwitterでは、ツイートの埋め込み用のタグが、パーマリンクから簡単に取得できるらしい。これをコードからもやってみたくて、 Embedded Tweets | Twitter Developers を参考にちょっとやってみた。 var tweet_url = url; // 例: https://twitter.com/#…

URLとして使えない文字が含まれているのを検出する

C#

[Url]という属性を作成。 \"'|*`^> false を返す。 [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] public sealed class UrlAttribute : ValidationAttribute, IClientValidatable { public UrlAttribute() { ErrorMessage = "URLに利…