Skip to content

Instantly share code, notes, and snippets.

View wipiano's full-sized avatar
🏠
Working from home

Kohei Hakoishi wipiano

🏠
Working from home
View GitHub Profile
@wipiano
wipiano / PostalCodeParser.scala
Last active May 10, 2017 10:49
Scala のパーサコンビネータ (RegexParsers) を使った郵便番号のパーサ
import scala.util.parsing.combinator._
// パーサ
class PostalCodeParser extends RegexParsers {
// 地域番号 ( "-" より前の 3 桁)
def regionCode: Parser[Int] = """[0-9]{3}""".r ^^ { _.toInt }
// "-" よりあとの 4 けた
def detailCode: Parser[Int] = """[0-9]{4}""".r ^^ { _.toInt }
@wipiano
wipiano / UUIDGen.scala
Created May 19, 2017 05:11
UUID を生成する
import java.util.UUID.randomUUID
object UUID extends App {
println(randomUUID)
}
object UUIDLower extends App {
println(randomUUID.toString.toLowerCase)
}
@wipiano
wipiano / ExceptVsWhere.cs
Created July 29, 2017 08:15
HashSet に対する Except と Where の性能比較
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace ExceptVsWhere
{
class Program
{
static void Main(string[] args)
@wipiano
wipiano / LinqVsForEach
Last active July 29, 2017 10:28
LINQ と foreach どっちが速い!? (Except)
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace LinqVsForEach
{
class Program
{
static void Main(string[] args)
@wipiano
wipiano / file0.cs
Last active July 30, 2017 08:55
IEnumerable なのに LINQ が使えない!? 使えますよ! ref: http://qiita.com/wipiano/items/24991bfae6baba8dfbd4
// 非ジェネリックな IEnumerable
ArrayList services = new ArrayList() {"Qiita", "GitHub", "AWS", "Azure"};
// Cast<string>() で IEnumerable<string> にできる!
services.Cast<string>().Select(s => s.ToLower());
@wipiano
wipiano / IEnumerableExtensions.cs
Last active August 1, 2017 15:40
IEnumerable<T> を指定した要素数で分割する
namespace IEnumerableSplit
{
public static class IEnumerableExtensions
{
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int size)
{
if (size <= 0)
{
throw new ArgumentOutOfRangeException($"{nameof(size)} は 0 より大きくなければなりません");
}
@wipiano
wipiano / file0.cs
Last active October 12, 2017 17:03
[C#][LINQ] IEnumerable<T> を要素数を指定して分割する 超デリケートな拡張メソッド ref: http://qiita.com/wipiano/items/d217a279e028c95b7899
var result = Enumerable.Range(1, 99).Split(10);
foreach (var splitted in result)
{
System.Console.WriteLine(string.Join(",", splitted));
}
@wipiano
wipiano / Newton.cs
Created August 13, 2017 09:36
ニュートン法
using System;
namespace AppliedITEnginnerMisc
{
/// <summary>
/// ニュートン法の実装
/// </summary>
public sealed class Newton
{
/// <summary>
@wipiano
wipiano / .vimrc
Last active September 16, 2017 16:14
.vimrc
" http://qiita.com/mfujimori/items/9fd41bcd8d1ce9170301
" setting
"文字コードをUFT-8に設定
set fenc=utf-8
" バックアップファイルを作らない
set nobackup
" スワップファイルを作らない
set noswapfile
" 編集中のファイルが変更されたら自動で読み直す
set autoread
@wipiano
wipiano / Person.cs
Last active October 7, 2017 15:36
C# で かんたんな builder ref: http://qiita.com/wipiano/items/b2690d9084ea1ea6c98f
namespace BuilderSample
{
/// <summary>
/// immutable な Person class
/// </summary>
public class Person
{
public string Name { get; }
public int Age { get; }