狠狠撸

狠狠撸Share a Scribd company logo
Hello Dark-Side C# (Part. 1)
Yuto Takei
Software Engineer
bitFlyer Inc.
免責
このトークは、情報提供のみを目的として行われており、正確性?最新性についての保
障は一切ありません。内容は、会社の見解ではありません。この情報を元にして生じた
不利益について、当社およびスピーカは一切の責任を負いません。
bitFlyer 上での取引についての詳細は当社カスタマ サポートへお問い合わせください。
自己紹介
Yuto Takei
Software Engineer
わたしの人生設計
? : C# と心を通わせる
? : 美味しいモノを食べる
最近、宅建うかりました
文字列について
本日のお題は…
サンプル コードは
https://gist.github.com/yutopio/697ac1f75b66fca2b16ceedb9b0c1dd5
文字列のインスタンス
C# の文字列は不変です
§8.2.1 Predefined types
The predefined reference types are object and string. The type object is the ultimate
base type of all other types. The type string is used to represent Unicode string values.
Values of type string are immutable.
[訳]
神は object と string という参照型を作りたもうた。 object は万物の根源である。 string
は Unicode 文字列をあらわす。何人も string の値を
変えることはできない。
– ECMA-334 C# Language Specification, p. 17.
“
Insert とか Remove とかあるじゃん
… ご存知のとおり、新しい文字列になって返ってきます
string String.Insert(int, string)
“Returns a new string in which a specified string is inserted at a specified index position in this instance.”
– https://msdn.microsoft.com/library/system.string.insert.aspx
string String.Remove(int, int)
“Returns a new string in which a specified number of characters in the current instance beginning at a
specified position have been deleted.”
– https://msdn.microsoft.com/library/system.string.remove.aspx
Insert とか Remove とかあるじゃん
String result = FastAllocateString(newLength);
unsafe
{
fixed (char* src = /slideshow/hello-darkside-c-part-1/69862957/&m_firstChar)
{
fixed (char* dst = &result.m_firstChar)
{
wstrcpy(dst, src, startIndex);
wstrcpy(dst + startIndex, src + startIndex + count, newLength - startIndex);
}
}
}
return result;
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemstring.cs (Line. 2873 – 2885)
← 新しいインスタンスを作ってます
中身を変えたければ、どうするの?
System.Text.StringBuilder を使いましょう
StringBuilder StringBuilder.Insert(int, string)
“Inserts a string into this instance at the specified character position.”
– https://msdn.microsoft.com/library/system.text.stringbuilder.insert.aspx
StringBuilder StringBuilder.Remove(int, int)
“Removes the specified range of characters from this instance.”
– https://msdn.microsoft.com/library/system.text.stringbuilder.remove.aspx
中身を変えたければ、どうするの?
public StringBuilder Remove(int startIndex, int length) {
// ...
if (length > 0)
{
StringBuilder chunk;
int indexInChunk;
Remove(startIndex, length, out chunk, out indexInChunk);
}
return this;
}
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemtextstringbuilder.cs (Line. 865 – 893, excerpted)
← インスタンス自身がそのまま返る
中身を変えたければ、どうするの?
public override String ToString() {
// ...
string ret = string.FastAllocateString(Length);
StringBuilder chunk = this;
unsafe {
fixed (char* destinationPtr = ret)
; // copy here...
}
return ret;
}
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemtextstringbuilder.cs (Line. 330 – 368, excerpted)
← ToString するたびに
← インスタンスが作られる
文字列の intern とは
同一文字列は、ひとつのインスタンスにまとめられる
(メモリ節約が目的)
User Strings
-----------------------------
70000001 : (10) L"HelloWorld"
ldstr "HelloWorld" /* 70000001 */
0xDEADBEEF:
var hello = "HelloWorld";
– or –
string.Intern(otherHello); System.String “HelloWorld”
余談: いつ intern されるか
CompilationRelaxtions というコンパイラ制御用の属性があり、
NoStringInterning という属性を指定することができる
using System.Runtime.CompilerServices;
[assembly: CompilationRelaxations(CompilationRelaxations.NoStringInterning)]
… 無視されます
(intern しなくていいよ、というだけで、結局される)
余談: いつ intern されるか
ところが Ngen.exe にかけると無条件で intern できなくなる
> ngen.exe install ConsoleApp1.exe
ナンナンダ、この一貫性のなさは!!
ところでなぜ String を char* で fixed できるのか
public override String ToString() {
// ...
string ret = string.FastAllocateString(Length);
StringBuilder chunk = this;
unsafe {
fixed (char* destinationPtr = ret)
; // copy here...
}
return ret;
}
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemtextstringbuilder.cs (Line. 330 – 368, excerpted)
ところでなぜ String を char* で fixed できるのか
仕様です。
§27.6 The fixed statement
An expression of type string, provided the type char* is implicitly convertible to the pointer
type given in the fixed statement. In this case, the initializer computes the address of the
first character in the string, and the entire string is guaranteed to remain at a fixed address
for the duration of the fixed statement.
[訳]
string 型の式は char* 型が与えられたなら fixed によりポインタに暗黙変換できる。
このとき初期化子では文字列の先頭アドレスが計算されて、 fixed スコープ中
では文字列全体が固定アドレスに留まることが保障される。
– ECMA-334 C# Language Specification, p. 437.
“
さて
前置きはこのくらいにしておいて…
文字列のインスタンス (復習)
C# の文字列は不変です
§8.2.1 Predefined types
The predefined reference types are object and string. The type object is the ultimate
base type of all other types. The type string is used to represent Unicode string values.
Values of type string are immutable.
[訳]
神は object と string という参照型を作りたもうた。 object は万物の根源である。 string
は Unicode 文字列をあらわす。何人も string の値を
変えることはできない。
– ECMA-334 C# Language Specification, p. 17.
“
文字列のインスタンス
C# の文字列が、不変だと思っていたでしょう! … 違います (ガタッ)
§27.6 The fixed statement
Modifying objects of managed type through fixed pointers can result in undefined behavior.
[Note: For example, because strings are immutable, it is the programmer’s responsibility to
ensure that the characters referenced by a pointer to a fixed string are not modified. end
note]
[超意訳]
文字列はホントは不変だけど、ポインタで参照された文字列を変えてもイイよ!
責任取れるならね! (^ρ^)
– ECMA-334 C# Language Specification, p. 439.
“
fixed 文字列は、いじれるんじゃね?
そのとおり。
文字列インスタンスの生成は特殊
public override String ToString() {
// ...
string ret = string.FastAllocateString(Length);
StringBuilder chunk = this;
unsafe {
fixed (char* destinationPtr = ret)
; // copy here...
}
return ret;
}
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemtextstringbuilder.cs (Line. 330 – 368, excerpted)
文字列クラスの双対性 (デュアリティ)
public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable
{
[NonSerialized]private int m_stringLength;
[NonSerialized]private char m_firstChar;
– Reference Source for .NET 4.6
– ndpclrsrcbclsystemstring.cs (Line. 48 – 60, excerpted)
対応付け
class StringObject : public Object
{
DWORD m_StringLength;
WCHAR m_Characters[0];
– .NET CoreCLR (https://github.com/dotnet/coreclr)
– src/vm/object.h (Line. 1087 – 1099, excerpted)
文字列インスタンスの生成は特殊
LEAF_ENTRY AllocateStringFastMP_InlineGetThread, _TEXT
; We were passed the number of characters in ECX
; we need to load the method table for string from the global
mov r9, [g_pStringClass]
; Instead of doing elaborate overflow checks, we just limit the number of elements
; to (LARGE_OBJECT_SIZE - 256)/sizeof(WCHAR) or less.
; This will avoid all overflow problems, as well as making sure
; big string objects are correctly allocated in the big object heap.
cmp ecx, (ASM_LARGE_OBJECT_SIZE - 256)/2
jae OversizedString
mov edx, [r9 + OFFSET__MethodTable__m_BaseSize]
; Calculate the final size to allocate.
; We need to calculate baseSize + cnt*2, then round that up by adding 7 and anding ~7.
lea edx, [edx + ecx*2 + 7]
and edx, -8
(… 続く)
← String 型の情報を読み込み
← 文字列長の評価。大きすぎるときは別方法で割り当て
← 型のベース サイズを評価(C++ の WCHAR[0] はこのため)
← 最終的に必要な領域の計算
文字列インスタンスの生成は特殊
PATCHABLE_INLINE_GETTHREAD r11, AllocateStringFastMP_InlineGetThread__PatchTLSOffset
mov r10, [r11 + OFFSET__Thread__m_alloc_context__alloc_limit]
mov rax, [r11 + OFFSET__Thread__m_alloc_context__alloc_ptr]
add rdx, rax
cmp rdx, r10
ja AllocFailed
mov [r11 + OFFSET__Thread__m_alloc_context__alloc_ptr], rdx
mov [rax], r9
mov [rax + OFFSETOF__StringObject__m_StringLength], ecx
ifdef _DEBUG
call DEBUG_TrialAllocSetAppDomain_NoScratchArea
endif ; _DEBUG
ret
OversizedString:
AllocFailed:
jmp FramedAllocateString
LEAF_END AllocateStringFastMP_InlineGetThread, _TEXTracters[0];
– .NET CoreCLR (https://github.com/dotnet/coreclr)
– src/vm/amd64/JitHelpers_InlineGetThread.asm
– Line. 159 – 204
← メモリ割り当てに関する状態の取得
← 実際の割り当て
← 空き領域の検査
← Length プロパティの設定
← 高速割り当てがダメだった場合は
← SlowAllocateString へ
← フォールバック
高速化のための合わせ技
みんなパフォーマンス気になりますよね…
http://stackoverflow.com/questions/311165/
how-do-you-convert-byte-array-to-hexadecimal-string-and-vice-versa
byte[] から 16 進数表現 string への変換は、
文字列の高速割り当てをして、ポインタで書き込めば、
最速のものの約 1.5 倍まで加速できる!
intern した文字列変更したらどうなる?
結論: 壊れます
まとめ
● 文字列のインスタンスは基本的に不変
● 定数は、文字列リテラルのルックアップ テーブルが用いられる
● Ngen しない限り、メモリ節約のため、別で作った文字列も intern できる
● 文字列はデータ構造がとても特殊
● 新しいインスタンスの生成時にはメモリ高速割り当てされる
まとめ (ダーク サイド)
● 仕様書に外れる行為をすれば…
文字列インスタンスは変更できる (ただし自己責任)
● Intern されている変数は、
絶対に変更してはいけない
● 万が一変更すると、定数などが全部壊れるし、
string.Intern が動かなくなる
マイクロ最適化楽しい!! ?(??`???)
あとがき
本日のトークは 2008 年春 (C# 3 の頃) の再放送です。
会場から出た質問まとめ
● StringBuilder は意味ないの?
○ いえいえ、紹介したテクニックは、あくまで固定長文字列でしか使えないかと。
● intern された文字列のライフサイクルは?
○ AppDomain でなく System domain だから、
仮に変更したら読み込んでいる他の dll の文字列リテラルなどにも影響が出る
○ 文字列定数を lock ステートメントに食わせたらプロセス全体に影響出るよ (@ufcpp さん)
● fixed した文字列 char* pt に対して ((int*)pt)[-1] を
書き換えたら文字列長、いじれるんじゃね?
○ いじれますね。ヤヴァい。悪用禁止。
実行領域ではないので、不正コード埋められはしないはず ...? (要調査)

More Related Content

What's hot (20)

PDF
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
?
PDF
An Internal of LINQ to Objects
Yoshifumi Kawai
?
PDF
鲍苍颈迟测で覚える颁#
Masamitsu Ishikawa
?
PPTX
C# 7.2 with .NET Core 2.1
信之 岩永
?
PDF
颁++で颁プリプロセッサを作ったり速くしたりしたお话
Kinuko Yasuda
?
PPTX
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
?
PDF
Go conference 2017 Lightning talk
mokelab
?
PPTX
.NET Core 2.x 時代の C#
信之 岩永
?
PPTX
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
?
PDF
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
?
PDF
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
?
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
?
PPTX
最速C# 7.x
Yamamoto Reki
?
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
?
PPTX
ぱっと见でわかる颁++11
えぴ 福田
?
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
?
PPTX
C# 8.0 非同期ストリーム
信之 岩永
?
PDF
Async design with Unity3D
Kouji Hosoda
?
PPTX
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
?
PDF
emc++ chapter32
Tatsuki SHIMIZU
?
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
?
An Internal of LINQ to Objects
Yoshifumi Kawai
?
鲍苍颈迟测で覚える颁#
Masamitsu Ishikawa
?
C# 7.2 with .NET Core 2.1
信之 岩永
?
颁++で颁プリプロセッサを作ったり速くしたりしたお话
Kinuko Yasuda
?
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
?
Go conference 2017 Lightning talk
mokelab
?
.NET Core 2.x 時代の C#
信之 岩永
?
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
?
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
?
Hello, C++ + JavaScript World! - Boost.勉強会 #11 東京
hecomi
?
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
?
最速C# 7.x
Yamamoto Reki
?
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
?
ぱっと见でわかる颁++11
えぴ 福田
?
【Unite Tokyo 2019】Understanding C# Struct All Things
UnityTechnologiesJapan002
?
C# 8.0 非同期ストリーム
信之 岩永
?
Async design with Unity3D
Kouji Hosoda
?
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
?
emc++ chapter32
Tatsuki SHIMIZU
?

Viewers also liked (20)

PPTX
ASP.NETからASP.NET Coreに移行した話
Taiga Takahari
?
PDF
C# て?フ?ロックチェーン実装
Yuto Takei
?
PDF
仮想通貨, Blockchain 関連サービスを支える技術
Yuto Takei
?
PDF
5分でわかるブロックチェーンの基本的な仕组み
Ryo Shimamura
?
PDF
仮想通货のブロックチェイン技术による贵颈苍罢别肠丑
Kindai University
?
PDF
仮想化技术の基本の基本
terada
?
PDF
电子情报通信学会ク?ローハ?ル社会とヒ?ットコイン(山崎)
Kindai University
?
PPTX
仮想通货エコシステム试论(20140401公开版)
Toshiya Jitsuzumi
?
PDF
【闯补蝉谤补肠寄附讲座】クリエイティブ产业とファイナンス
Masakazu Masujima
?
PDF
ブロックチェーンと契约取引
Masakazu Masujima
?
PPTX
20140322
小野 修司
?
PDF
ビットコイン ブロックチェーン技術と既存金融サービス事業者の事業戦略
Masakazu Masujima
?
PDF
フ?ロックチェーンの整理 27 sep2015
Yoshimitsu Homma
?
PPTX
[Growth hack]RakutenTravel App Development
Emi Takahashi
?
PPTX
はじめてのASP.NET MVC5
Tomo Mizoe
?
PDF
金融机関向けフ?ロックチェーン?ビジネス
Hiroshi Shimo
?
PDF
贵颈苍迟别肠丑ベンチャーがもたらす日本市场への示唆
Toshio Taki
?
PDF
驰补丑辞辞!ブラウザーにおける市场环境の分析と戦略化
驰补丑辞辞!デベロッパーネットワーク
?
PPTX
Shideshare
milena fernanda
?
PDF
グロースハック なぜ我々は无意味な施策を打ってしまうのか
驰补丑辞辞!デベロッパーネットワーク
?
ASP.NETからASP.NET Coreに移行した話
Taiga Takahari
?
C# て?フ?ロックチェーン実装
Yuto Takei
?
仮想通貨, Blockchain 関連サービスを支える技術
Yuto Takei
?
5分でわかるブロックチェーンの基本的な仕组み
Ryo Shimamura
?
仮想通货のブロックチェイン技术による贵颈苍罢别肠丑
Kindai University
?
仮想化技术の基本の基本
terada
?
电子情报通信学会ク?ローハ?ル社会とヒ?ットコイン(山崎)
Kindai University
?
仮想通货エコシステム试论(20140401公开版)
Toshiya Jitsuzumi
?
【闯补蝉谤补肠寄附讲座】クリエイティブ产业とファイナンス
Masakazu Masujima
?
ブロックチェーンと契约取引
Masakazu Masujima
?
20140322
小野 修司
?
ビットコイン ブロックチェーン技術と既存金融サービス事業者の事業戦略
Masakazu Masujima
?
フ?ロックチェーンの整理 27 sep2015
Yoshimitsu Homma
?
[Growth hack]RakutenTravel App Development
Emi Takahashi
?
はじめてのASP.NET MVC5
Tomo Mizoe
?
金融机関向けフ?ロックチェーン?ビジネス
Hiroshi Shimo
?
贵颈苍迟别肠丑ベンチャーがもたらす日本市场への示唆
Toshio Taki
?
驰补丑辞辞!ブラウザーにおける市场环境の分析と戦略化
驰补丑辞辞!デベロッパーネットワーク
?
Shideshare
milena fernanda
?
グロースハック なぜ我々は无意味な施策を打ってしまうのか
驰补丑辞辞!デベロッパーネットワーク
?
Ad

Similar to Hello Dark-Side C# (Part. 1) (20)

PDF
Boost.Flyweight
gintenlabo
?
PDF
iPhone, iPad アプリ開発勉強会#3
Hiroe Orz
?
PDF
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
和弘 井之上
?
PDF
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
?
PDF
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
?
PDF
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
?
PPTX
Unity C#3からC#6に向けて
onotchi_
?
PPTX
Deep Dive C# 6.0
信之 岩永
?
PDF
.NET Core 3.0時代のメモリ管理
KageShiron
?
PPTX
颁#言语机能の作り方
信之 岩永
?
PDF
フ?ロク?ラミンク?講座 #6 競フ?ロのテクニック(初級)
ZOIdayo
?
PDF
拡张ライブラリ作成による高速化
Kazunori Jo
?
PPTX
C# 9.0 / .NET 5.0
信之 岩永
?
PDF
颁#勉强会 ~ C#9の新機能 ~
Fujio Kojima
?
PPTX
Live Coding で学ぶ C# 7
Takaaki Suzuki
?
PDF
Boost Tour 1_58_0 merge
Akira Takahashi
?
PDF
颁#勉强会
hakugakucafe
?
PDF
New Features in C# 10/11
Akira Inoue
?
PDF
详解顿别虫ファイルフォーマット
Takuya Matsunaga
?
PDF
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
?
Boost.Flyweight
gintenlabo
?
iPhone, iPad アプリ開発勉強会#3
Hiroe Orz
?
【C++BUILDER STARTER チュートリアルシリーズ】シーズン2 C++Builderの部 第6回 ?文字列とオブジェクト?
和弘 井之上
?
[TL06] 日本の第一人者が C# の現状と今後を徹底解説! 「この素晴らしい C# に祝福を!」
de:code 2017
?
2012.11.17 CLR/H&札幌C++勉強会 発表資料「部分文字列の取得を 効率よく!楽に! - fundoshi.hppの紹介と今後の予定 -」
Hiro H.
?
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
?
Unity C#3からC#6に向けて
onotchi_
?
Deep Dive C# 6.0
信之 岩永
?
.NET Core 3.0時代のメモリ管理
KageShiron
?
颁#言语机能の作り方
信之 岩永
?
フ?ロク?ラミンク?講座 #6 競フ?ロのテクニック(初級)
ZOIdayo
?
拡张ライブラリ作成による高速化
Kazunori Jo
?
C# 9.0 / .NET 5.0
信之 岩永
?
颁#勉强会 ~ C#9の新機能 ~
Fujio Kojima
?
Live Coding で学ぶ C# 7
Takaaki Suzuki
?
Boost Tour 1_58_0 merge
Akira Takahashi
?
颁#勉强会
hakugakucafe
?
New Features in C# 10/11
Akira Inoue
?
详解顿别虫ファイルフォーマット
Takuya Matsunaga
?
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
?
Ad

More from Yuto Takei (20)

PDF
51% 攻撃の原理とシミュレーション
Yuto Takei
?
PDF
これから始めるAzure Kubernetes Service入門
Yuto Takei
?
PDF
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
?
PDF
开発チームにおける多様性のススメ
Yuto Takei
?
PDF
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
?
PDF
ブロックチェーン技术者が梦见る未来
Yuto Takei
?
PDF
ブロックチェーン技术の课题と社会応用
Yuto Takei
?
PDF
Windows コンテナを AKS に追加する
Yuto Takei
?
PDF
ブロックチェーンの不动产登记への応用に関する検讨
Yuto Takei
?
PDF
51% 攻撃の原理とシミュレーション
Yuto Takei
?
PDF
[Intermediate 04] ブロックチェーンの動作原理
Yuto Takei
?
PDF
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
Yuto Takei
?
PDF
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
?
PDF
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
?
PDF
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
?
PDF
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
?
PDF
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
?
PDF
[Basic 12] 関数型言語 / 型理論
Yuto Takei
?
PDF
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
?
PDF
[Basic 10] 形式言語 / 字句解析
Yuto Takei
?
51% 攻撃の原理とシミュレーション
Yuto Takei
?
これから始めるAzure Kubernetes Service入門
Yuto Takei
?
ブロックチェーンと仮想通貨 -- 新しいビジネスに挑戦
Yuto Takei
?
开発チームにおける多様性のススメ
Yuto Takei
?
ブロックチェーン神話に迫る - 本当に使える? 使えない?
Yuto Takei
?
ブロックチェーン技术者が梦见る未来
Yuto Takei
?
ブロックチェーン技术の课题と社会応用
Yuto Takei
?
Windows コンテナを AKS に追加する
Yuto Takei
?
ブロックチェーンの不动产登记への応用に関する検讨
Yuto Takei
?
51% 攻撃の原理とシミュレーション
Yuto Takei
?
[Intermediate 04] ブロックチェーンの動作原理
Yuto Takei
?
[Intermediate 03] MinChain - 教育用ブロックチェーンの紹介
Yuto Takei
?
[Intermediate 02] シェルの使い方 / Git, GitHub について
Yuto Takei
?
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
?
[Basic 15] ソフトウェアと知的財産権 / ブロックチェーンと計算機科学 / MinChain の紹介
Yuto Takei
?
[Basic 14] 暗号について / RSA 暗号 / 楕円曲線暗号
Yuto Takei
?
[Basic 13] 型推論 / 最適化とコード出力
Yuto Takei
?
[Basic 12] 関数型言語 / 型理論
Yuto Takei
?
[Basic 11] 文脈自由文法 / 構文解析 / 言語解析プログラミング
Yuto Takei
?
[Basic 10] 形式言語 / 字句解析
Yuto Takei
?

Hello Dark-Side C# (Part. 1)