Skip to content

Instantly share code, notes, and snippets.

@pierre3
pierre3 / ModelShips.txt
Created May 17, 2014 06:41
船舶模型の一覧
No.,艦種,品名,税込価格,本体価格,メーカー
103,戦艦,山城 やましろ,1785,"1,700",A
104,戦艦,扶桑 ふそう,1785,"1,700",A
109,戦艦,金剛 こんごう,2625,"2,500",H
110,戦艦,比叡 ひえい,2625,"2,500",H
111,戦艦,榛名 はるな,2625,"2,500",H
112,戦艦,霧島 きりしま,2625,"2,500",H
113,戦艦,大和 やまと,2520,"2,400",T
114,戦艦,武蔵 むさし,2520,"2,400",T
115,戦艦,長門 ながと,2520,"2,400",A
@pierre3
pierre3 / MainWindow.xaml
Last active August 29, 2015 14:01
[WPF]CSVファイルを読み込んでDataGridに表示する
<Window x:Class="WpfApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:app="clr-namespace:WpfApp"
Title="MainWindow" Height="640" Width="800">
<Window.DataContext>
<app:CsvData/>
</Window.DataContext>
<Grid>
<Grid.RowDefinitions>
@pierre3
pierre3 / asyncRead.cs
Last active August 29, 2015 13:59
C# メソッドをasyncにする、しないのパフォーマンス比較
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
@pierre3
pierre3 / ReadXsvAsync.md
Last active July 6, 2021 09:51
C# asyncでやってはいけないこと

ブログ記事非同期版読み取り用メソッドを定義する に対して頂いたご指摘に対するメモ。

  1. awaitせずにTaskをじかに返せる場合はasyncにせずにそのまま返した方が良い
  • メソッドを asyncにするだけでコストがかかる?
  1. Task.Runでラップしただけのような偽Asyncメソッドは基本避ける
  • 非同期処理メソッドを実装する際は、I/O依存の処理と、CPU依存の処理は分けて考えなければならない
  • ライブラリはI/O依存の処理のみを非同期メソッドとして提供すべきであり、CPU依存処理の非同期メソッドは提供すべきでない。
  • CPU依存の処理を非同期で行うか否かを決めるのはライブラリを使う側の権限
  • スレッド、スレッドプールはアプリケーション開発者側が管理すべきリソースなので、ライブラリ内部でTask.Run()等を使って(勝手に)消費したりしてはいけない。
class Program
{
static void Main(string[] args)
{
var data =
"No., Name, Price, Comment" + Environment.NewLine
+ "001, りんご, 98円, 青森産" + Environment.NewLine
+ "002, バナナ, 120円, \" とっても!\r\nお,い,し,い,よ!\"" + Environment.NewLine
+ "" + Environment.NewLine
+ "004, \"うまい棒\"\"めんたい\"\"\", 10円," + Environment.NewLine
@pierre3
pierre3 / xsvReader.Parse.cs
Last active August 29, 2015 13:57
Parse a csv
public static IEnumerable<string> Parse(string line,
ICollection<string> delimiters, Func<string> followingLineSelector)
{
//読み取った文字の種類に応じて処理を振り分けるために使用するTokenState 列挙型
var state = TokenState.Empty;
string token = "";
// -フィールドを1文字ずつ読み取り、token へ格納する
// -1フィールド分を読み取ったら yield return token; で出力
foreach (var c in line)
{
@pierre3
pierre3 / Readme.md
Created December 14, 2013 01:59
XsvData

HandyUtilities, .Net C# Xsv data processing library

This is CSV, TSV and any character separated value data processing library.

Reading XSV data

Can read from TextReader. And accesses by indexer.

[TestMethod]
public void ReadCsvTest_indexer()
{
@pierre3
pierre3 / file0.cs
Created October 5, 2013 12:46
[WPF]PasswordBoxのセキュアなパスワードSecurePasswordにバインドしたい ref: http://qiita.com/pierusan2010/items/5d4ceb28ee18cd4e3853
public static class SecureStringEx
{
public static bool Equals(this SecureString a, SecureString b)
{
if (a == null && b == null)
{ return true; }
if (a == null || b == null)
{ return false; }
@pierre3
pierre3 / Program.md
Last active December 21, 2015 12:39
[C#][小ネタ] 文字列を各種組み込み型にキャスト(もどき)

こちらの記事から

bool dat = (bool:TextToBoolConverter)file[0];
こんな構文ないけど、型変換演算子のオーバーロードで、ほぼ同等ことができるのでは?ということで作ってみました。

他の主要な組み込み型についてもT4を使ってさくっと作れます。

(個人的にはToBoolean()みたいな拡張メソッドの方が使いやすいと思いますが。(インテリセンス使えますし))

@pierre3
pierre3 / StringExtensions.t4.cs
Created August 21, 2013 14:28
string to primitive

using System;
using System.Linq;
using System.Text;
using System.Globalization;
namespace TextDataUtility
{
public static partial class StringExtensions
{