タグ

ブックマーク / atmarkit.itmedia.co.jp (116)

  • Html Agility Packを使ってWebページをスクレイピングするには?[C#、VB]

    Webページの内容をどのようにして解析すればよいだろうか? 例えば、記事の一覧が掲載されているWebページの内容を取得してきて、そこから記事のタイトルとURLだけを全て取り出したいといった場合だ。正規表現(System.Text.RegularExpressions名前空間のRegexクラス)を使えば可能ではあるが、かなり面倒である。WebページがXHTMLで記述されているならXDocumentクラス(System.Xml.Linq名前空間)で楽に解析できるはずなのだが、しかし現実のWebページにはXHTMLであると宣言してあってもXMLとしては不完全な記述のものが少なくない(=XDocumentクラスで解析できない)。そこで稿では、オープンソースのライブラリ「Html Agility Pack」を使ってWebページを解析する方法を解説する。 事前準備 稿では、文字コードがシフトJIS

    Html Agility Packを使ってWebページをスクレイピングするには?[C#、VB]
    mk18
    mk18 2024/05/29
  • VS Codeでエンコーディングを変更、自動判別するには

    連載「Visual Studio Code TIPS」 Visual Studio Code(以下、VS Code)のエンコーディングはデフォルトでUTF-8となっている。そのため、シフトJISなど、異なるエンコーディングで保存されているファイルを開こうとすると文字化けが発生する。稿ではエンコーディングを指定して開き直す方法や、エンコーディングを指定してファイルを保存する方法、デフォルトのエンコーディングを変更する方法、エンコーディングをファイルオープン時に自動判別する方法を紹介する。ちなみに筆者のオススメは表の一番下にある「自動判別」だ。

    VS Codeでエンコーディングを変更、自動判別するには
    mk18
    mk18 2023/08/17
  • 日付を比較するには?[C#/VB]

    var datetime1 = new DateTime(2018, 3, 1, 3, 0, 0); var datetime2 = new DateTime(2018, 3, 1, 15, 0, 0); // datetime1と同じ日 var datetime3 = new DateTime(2018, 3, 3, 0, 0, 0); // datetime1の2日後 // datetime1とdatetime2は同じ日か? bool compare1and2 = (datetime1.Date == datetime2.Date); WriteLine($"(datetime1.Date == datetime2.Date) ⇒ {compare1and2}"); // 出力:(datetime1.Date == datetime2.Date) ⇒ True // datetime2

    日付を比較するには?[C#/VB]
    mk18
    mk18 2022/10/20
  • 指定した日の曜日を取得するには?[C#/VB]

    連載目次 日付から曜日を表す文字列を取得するにはどうしたらよいだろうか? 稿では、「日曜日」や「月」や「Tue」といったさまざまな形式で曜日を取得する方法を解説する。また、旧暦の六曜(「大安」や「仏滅」など)を求める方法も紹介する。 特定の方法をすぐに知りたいという方は以下のリンクを活用してほしい。 なお、曜日を取得するための機能は.NET Frameworkの当初からあるものだが、サンプルコードでは新しい機能も使っている。稿に掲載したサンプルコードをそのまま試すにはVisual Studio 2015以降が必要である。 既定の言語で取得する:「日曜日」/「日」 日付を文字列にフォーマットするときの書式指定に「dddd」(完全な表記)か「ddd」(短縮した表記)を与えればよい。 System名前空間のDateTime構造体(あるいはDateTimeOffset構造体)のToString

    mk18
    mk18 2022/10/05
  • 40インチ超級4K大画面ディスプレイ導入のポイント

    10万円を切った40インチ超4Kディスプレイを編集部に導入。大きいことはいいこと、だけど、ちょっと注意もあるゾ 連載目次 大画面へのあこがれ、あれから30年 思い起こせば30年ほど前のこと、Windowsが世に登場して、グラフィカルなGUIPCで使えるようになろうってころだ。ディスプレイの標準は、14インチ程度のCRT(ブラウン管ね)、ディスプレイの解像度は640×480ドットだった。そこに登場したのが17インチCRTだ。17インチなら、1024×768ドットで広々とWindowsが使える! 当時は安いものでも10万円はしたと思うが、それでも大喜びで買ったものだった。 あれから30年。ディスプレイはブラウン管から液晶に変わり、大型化、低価格がどんどん進んで、いまや40インチ超の4K対応(解像度3840×2160ドット)の液晶ディスプレイが5万円前後から買えるようになった。 そんなある日、

    40インチ超級4K大画面ディスプレイ導入のポイント
    mk18
    mk18 2022/08/14
  • Fluent APIとDbContextの機能(1/2) - @IT

    連載:Entity Framework 4.1入門 第3回 Fluent APIDbContextの機能 WINGSプロジェクト 土井 毅(監修:山田 祥寛) 2011/08/16 EF 4.1連載の最終回となる今回は、「Fluent API」と呼ばれる、エンティティ・クラス外部からデータベースの構造を制御するための機能と、DbContext/DbSetクラスの使用方法について解説する。 ■外部からデータベース構造を設定するFluent API Fluent APIは、コード・ファーストにおいて、デフォルトの規約と異なるモデルを扱う際に使用するAPIである。 前回解説した、エンティティ内に属性として記述する方法(=アノテーション)とは異なり、Fluent APIはエンティティ・クラス外部から設定を行うための仕組みだ(図1)。 Fluent APIを使用する場合、エンティティ・クラス内にE

    mk18
    mk18 2022/06/29
  • @IT:.NET TIPS Encodingクラスで扱えるエンコーディング名は? - C#

    稿は2003/04/11に初版公開、2008/07/24に改訂した記事を再改訂し、Visual Studio 2017でコードの動作検証、図版の追加、全般的な構成の変更などを行ったものです。 ファイルの読み書きなどで文字コードを指定したいときがある。そのために使うEncodingクラス(System.Text名前空間)のインスタンスは、どのようにして取得すればよいだろうか? また、日語独自のエンコーディングを指定するには、どのようなエンコーディング名が使えるのだろうか? 稿で整理して紹介する。

    @IT:.NET TIPS Encodingクラスで扱えるエンコーディング名は? - C#
    mk18
    mk18 2022/05/10
    “Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS"); ”
  • すべての分離ストレージ環境をクリーンアップするには?[C#、VB] - @IT

    分離ストレージ(Isolated Storage)を扱うソフトウェアを開発する場合、その処理をテストするなどの理由で、その実行環境を完全に初期状態に戻したいというケースはあるだろう(※分離ストレージについて詳しくは、「TIPS:分離ストレージを活用するには?」をご参照いただきたい)。そこでTIPSでは、ユーザー(=Windowsログオン・ユーザー)ごとにこれまでに作成・生成されてきたすべての分離ストレージ環境を完全にクリーンアップする方法を説明する。 その方法には「コードによる方法」と「ツールによる方法」があるので、それぞれ解説しよう。 すべての分離ストレージ環境をクリーンアップする方法(コード編) すべての分離ストレージ環境(と、その中にあるすべての分離ストレージ・ファイルおよびディレクトリ)を一括削除するには、IsolatedStorageFileクラス(System.IO.Isol

    mk18
    mk18 2022/02/09
  • as演算子とキャストの違いは?

    これもobject型の参照をstring型の参照に変換している。as演算子では、その手前に変換したい参照を、後ろに変換したい型を記述する。キャスト演算子とas演算子の表記は、まったく違って見えるが、それぞれのコードを実行した結果は同じものとなる。 なお、正確には、文字列をobject型変数に代入している最初の行も暗黙的な変換を行っている。objectクラスは文字列型のスーパークラスであるため、このような操作は暗黙的に行える。 変換できないときの挙動の相違 キャスト演算子はC言語の流れを汲む多くのプログラム言語で使用でき、C#プログラムでも多用されている。これに対し、as演算子を使用したソース・コードを見かけることは多くない。しかし、キャスト演算子とは別にas演算子が存在するのには、それなりの理由がある。両者は、データ型を変換するという目的は似ているが、機能の詳細は同じではない。 第1の相違

    as演算子とキャストの違いは?
    mk18
    mk18 2021/12/29
  • C#プログラミングTips:日付と時刻の処理を知る - @IT

    今回は、日付や時刻に関連するクラスを取り上げて解説する。単に日付や日時を取得するだけでなく、.NET Frameworkには、それらを処理するための便利なクラスが多数実装されている。 現在の日付および時刻の表示 まず最も簡単なものから始めよう。次のサンプル・プログラムは、現在の日付と時刻を取得し、いくつかのフォーマットで表示する。メッセージを表示するための各Console.WriteLineメソッド呼び出しの直下または右横に、プログラムの出力結果(の例)をコメントとして記述している。 1: // datetime1.cs 2: 3: using System; 4: 5: class datetime1 { 6:   public static void Main() { 7: 8:     Console.WriteLine(DateTime.Now); 9:     // 2001/1

    mk18
    mk18 2021/12/20
  • 文字列がnull(Nothing)か空文字列かを簡単に判定するには?[C#/VB、.NET 2.0]

    稿は2006/08/04に初版公開した記事を改訂し、Visual Studio 2017でコードの動作検証、Null&空白文字列チェックの方法とNull&文字列長チェックの方法の追加、図版の追加、全般的な構成の変更などを行ったものです。 文字列(=String型のオブジェクト)がnull(C#の場合。Visual BasicではNothing)かどうかをチェックし、さらにnull(Nothing)ではない場合にはそれが空文字列(=長さが0の文字列。「""」あるいは「String.Empty」)かどうかをチェックするというコードは、非常によくあるパターンだ(以降、この一連のチェックを「Null&空文字列チェック」と表現する)。

    文字列がnull(Nothing)か空文字列かを簡単に判定するには?[C#/VB、.NET 2.0]
    mk18
    mk18 2021/10/20
  • GUID値を生成するには?[C#、VB]

    連載目次 一意なID値が必要な場合、プログラムではよくGUID(Globally Unique IDentifier。グローバル一意識別子。読み方は「グイッド」)値が用いられる。GUID値とは、世界で重複することがない、ユニーク(=唯一)な128bit(16byte)のランダムな数値である。GUID値は必ずしも「絶対に同じID値が生成されないこと」を保証するものではないが、その数値の範囲が2の128乗、つまり「およそ3.4×(10の38乗)」(=340億の100兆倍の100兆倍)もあるので、現実的に同じIDが生成される可能性はきわめて低い。 GUID値とは、例えば次のような数値である。 GUIDを文字列で表す際には、通常、この例のように8、4、4、4、12けたの間にハイフンを入れた16進数で表現される。 このようなGUID値を生成する機能が、.NET Frameworkにはあらかじめ備わっ

    GUID値を生成するには?[C#、VB]
    mk18
    mk18 2021/10/01
  • Span<T>構造体

    Span<T>型は「連続したメモリ領域とその操作」を抽象化して、元のメモリ領域の種類によらず、それらを統一的かつ効率的に扱えるようにするもの。 連載「Dev Basics/Keyword」 Span<T>型は「連続したメモリ領域を表現する」値型。配列やスタックに確保されたメモリ領域、.NETの管理外にあるメモリ領域などを統一的かつ効率的に扱える。 Span<T>型を使うには 稿執筆時点(2017年12月25日)では、Span<T>型を利用するにはSystem.MemoryパッケージをNuGetからインストールする必要がある。また、一部の機能は.NET Core 2.1(現時点ではプレビュー段階)でのみサポートされており、.NET Frameworkではサポートされないものもある(稿では.NET Core 2.1 Previewと、dotnet.myget.orgからプレビュー版のSys

    Span&lt;T&gt;構造体
    mk18
    mk18 2021/09/28
  • C#で実感する「LINQ to XML」の素晴らしさ(2/2) - @IT

    LINQ to XMLというブレークスルー その答えは、ズバリ「LINQ to XML」ということになる。LINQ to XMLとは、LINQというフレームワークをXMLに対応させたもの……という理解では不十分である。それは、単なるクエリのフレームワークを超えて、XML文書を扱うAPIそのものの大幅な改善手段として用意されている。 ただし、E4Xのように、言語仕様にXML対応を組み込むほどの過激さは見せていない。言語仕様はあくまでXMLに対して独立を貫いている。だが、その範囲内で可能な限りコンパクトにソース・コードを記述できるように、さまざまな工夫が凝らされている。 実際に、上記のリスト1やリスト2と同じ機能を記述したサンプル・コードを見てみよう。 using System; using System.Collections.Generic; using System.Linq; usin

    mk18
    mk18 2021/09/27
  • 文字列配列内の文字列を連結するには?

    連載目次 文字列配列に格納されている各文字列を連結して1つの文字列を作成するには、Stringクラス(System名前空間)の静的メソッドであるJoinメソッドを使用する。 Joinメソッドでは、第1パラメータに「区切り文字列」を、第2パラメータに対象となる文字列配列を指定する。 result = String.Join(区切り文字列, 文字列配列) 区切り文字列は文字列を連結する際に各要素間に挿入される文字列である。区切り文字列が不要な場合には、空文字列("")あるいはnull(VB.NETの場合はNothing)を指定すればよい。 以下にJoinメソッドを使用したサンプル・プログラムを示す。 // join.cs using System; public class JoinTest { static void Main() { string result; string[] data

    mk18
    mk18 2021/09/27
  • 配列を連結するには[C#/VB]

    ArrayクラスのCopyメソッド/CopyToメソッド、BufferクラスのBlockCopyメソッド、LINQのConcatメソッドなどを使い、配列を連結する方法を解説する。

    配列を連結するには[C#/VB]
    mk18
    mk18 2021/09/27
  • ZIPファイルを解凍するには?(ZipArchive編)[C#、VB]

    ZIPアーカイブ形式の圧縮ファイルを簡単に扱う手段は、これまで.NET Frameworkに提供されてこなかった。そのため、サードパーティー製のライブラリや、Visual J#の再頒布可能パッケージなどを苦労して利用してきた。それが.NET Framework 4.5で提供されたZipArchiveクラス(System.IO.Compression名前空間)でサポートされたのである。標準のライブラリに入ったため、配布の心配をすることなく安心して使える。稿では、ZipArchiveクラスを使ってZIPアーカイブからファイルを展開する方法を説明する。 事前準備 適当なZIPファイルを「SampleFiles.zip」という名前で作成し、Visual Studioのプロジェクトに「Sample」というフォルダーを作ってその中に配置しておく。また、配置したZIPファイルは、Visual Stud

    ZIPファイルを解凍するには?(ZipArchive編)[C#、VB]
    mk18
    mk18 2021/09/24
  • ExcelなしでExcelファイルを操作するには?(純正SDK編)[.NET 3.5、C#/VB]:.NET TIPS - @IT

    ExcelなしでExcelファイルを操作するには?(純正SDK編)[.NET 3.5、C#/VB]:.NET TIPS Open XML SDKを使用して、Excelファイル(.xlsxファイル)をC#やVisual Basicから作成したり、それに対して書き込み/読み込みを行う方法を説明する。 連載「.NET TIPS」 Microsoft Office(Word/ExcelPowerPoint)のファイルをプログラムから操作したいとき、OfficeがインストールされているWindows上ならばCOMインタフェースが使えることはよく知られている。では、Officeがインストールされていない環境のときは、どうしたらよいだろうか? Office 2007から採用されたOpen XML形式のファイル(拡張子が.docx/.xlsx/.pptx)であれば、Officeがなくても、また、.NET

    ExcelなしでExcelファイルを操作するには?(純正SDK編)[.NET 3.5、C#/VB]:.NET TIPS - @IT
    mk18
    mk18 2021/09/22
  • @IT:.NET TIPS テキスト・ファイルの内容を読み込むには? - C#

    StreamReaderクラスを用いたテキストファイル読み込み、using構文によるファイルのクローズ、例外処理など、.NETにおけるテキストファイル読み込みの基を解説する。

    @IT:.NET TIPS テキスト・ファイルの内容を読み込むには? - C#
    mk18
    mk18 2021/09/22
  • .NET TIPS ファイルやディレクトリの作成/変更/削除を監視するには? - C# VB.NET - @IT

    .NET Frameworkのクラス・ライブラリには、ファイルやディレクトリの作成/変更/削除を監視するためのFileSystemWatcherクラス(System.IO名前空間)が用意されている(ただしWindows 98/Meでは利用できない)。これを利用すると、特定のディレクトリにファイルが作成された、特定のファイルが修正された、といったタイミングで、それらのファイルに対して何らかの処理を行うようなアプリケーションを容易に作成することができる。 FileSystemWatcherクラスの利用方法は簡単で、まずそのインスタンスを作成し、以下の表に示すような各プロパティを設定する。

    mk18
    mk18 2021/09/09