Skip to content

Instantly share code, notes, and snippets.

View legokichi's full-sized avatar
😇
neary heaven

Legokichi Duckscallion legokichi

😇
neary heaven
View GitHub Profile
@legokichi
legokichi / Algebra.purs
Created September 22, 2019 13:01 — forked from LukaJCB/Algebra.purs
Alternative Tagless Final encoding in PureScript
module Algebra where
import Prelude
import Control.Monad.Eff (Eff)
import Data.Maybe (Maybe(..))
newtype ConsoleAlg f = ConsoleAlg
{ printLn :: String -> f Unit
, readLn :: f String
@legokichi
legokichi / code_review_basics.md
Created August 20, 2019 08:16 — forked from taichi/code_review_basics.md
チームでコードを書き始めた後、「どうやらレビューってやつをした方が良いらしい」くらいの若手に向けた資料です。

コードレビューの基本


一番大事な事

ソースコードはプロジェクトの共同所有物である

  • 誰かだけが触れるコードを無くす
@legokichi
legokichi / amp1-2.md
Created June 30, 2019 20:34 — forked from sile/amp1-2.md
The Art of Multiprocessor Programming 読書会 第一回 一章後半~二章前半

| 一章 Introduction - 導入

1.5 The Harsh Realities of Parallelization - 並列化の厳しい現実

  • 理想化された世界で並列化について考えるのは楽しい
    • N倍多くのプロセッサが使えれば、N倍プログラムが早くなる!
  • 現実にはそうはならない
  • 例: 五人の友人が協力して家の壁を塗る話
    • 各々の作業スピードやそれぞれの部屋の広さが異なる場合、部屋数が5で割り切れない場合にどうなるか
  • 並列化することで全体をどの程度効率化できるかといった分析は重要

@legokichi
legokichi / AMP-CH7-a.md
Created June 30, 2019 20:34 — forked from sile/AMP-CH7-a.md
The Art of Multiprocessor Programming - 第七章前半

七章 スピンロックと競合

目的:

  • 現時点では、効率的な並列プログラムを書くには、基盤となるマシンアーキテクチャを把握している必要がある
  • この章の目的は、
    • アーキテクチャが、並列プログラミングの実行性能にどのような影響を与えるかを理解する
    • そのうえで効率的なプログラムの書き方を学ぶ
  • 皆がなじみのある相互排他(ロック)の現在のマルチプロセッサ上での効率的な実装の話から始める
@legokichi
legokichi / AMP-CH10.md
Created June 30, 2019 20:34 — forked from sile/AMP-CH10.md
The Art of Multiprocessor Programming - 第十章

第十章: 並列キューとABA問題

10.1: 導入

  • 後続の章では様々な形式の__プール__と呼ばれるオブジェクト群を見ていく
  • プールは__セット__に似ているが、主に以下の二点が異なる
    • contains()を提供しない
@legokichi
legokichi / AMP-CH13.md
Created June 30, 2019 20:34 — forked from sile/AMP-CH13.md
The Art of Multiprocessor Programming - 第十三章

13 並列ハッシュと自然な並列

注意:

  • 何故か"item"を"要素"と訳しているところが多いです

13.1 導入

これまでの章:

@legokichi
legokichi / pfds-7.md
Created June 30, 2019 20:34 — forked from sile/pfds-7.md
Purely Functional Data Structures: 第7章

第7章 償却を除去する

memo: スケジューリングの役割

  • イメージ的には銀行員の手法での__支払い__を実装に反映した感じ
  • 後ろに重いサスペンションが控えている場合の挙動の違い:
    • 6章(償却):「軽い操作で__仮想的に__その内のN個のデビットを払ったことにしておこう」
    • 7章(最悪):「軽い操作で__実際に__その内のN個の(小さな)サスペンションを事前に評価しておこう」
  • 支払い(or 評価)が終わっていないオブジェクト(サスペンション)に対するアクセスは許可されない
@legokichi
legokichi / AMP-CH18-SUMMARY.md
Created June 30, 2019 20:34 — forked from sile/AMP-CH18-SUMMARY.md
The Art of Multiprocessor Programming - 第十八章

18 トランザクショナルメモリ

18.1 導入

これまでの章で取り上げたデータ構造はロックやCAS等の同期プリミティブを使っている:

  • 現在の種類
  • これらを使って効率的なデータ構造を実装することは可能
  • ただし欠点も多い
@legokichi
legokichi / oosc-ch30.md
Created June 30, 2019 20:33 — forked from sile/oosc-ch30.md
オブジェクト指向入門 第2版 方法論・実践 - 第30章

第30章 並行、分散、クライアント/サーバ、インターネット

注意:

  • かなり大雑把にまとめたので細部は間違っているかもしれません
  • 結構しっかりと書かれているので並列処理周りに興味がある人はちゃんと読んでみても損はないと思います

前置きと主張

@legokichi
legokichi / damps-frontmatter.md
Created June 30, 2019 20:33 — forked from sile/damps-frontmatter.md
Distributed Algorithms for Message-Passing Systems: formatter and backmatter

前付

序文

分散コンピューティングとは何か?

1970年代後半に生まれた:

  • 研究者/実践者が物理分散システムに固有の性質に取り組み始めた