Mercurial > hg > Papers > 2020 > itsuki-thesis
changeset 14:c3c24250dc6b
tweak
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/Makefile Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,36 @@ +# Created by Daichi Toma on Nov 16, 2011 + +TARGET=final_pre + +LATEX=platex +BIBTEX=pbibtex +DVIPDF=dvipdfmx -p a4 +#You need setting "-l" option if You think You get a landscape PDF +#DVIPDF_OPT=-l + +#Embed fonts +#DVIPDF_OPT=-f hiraginoEmbed.map + +.SUFFIXES: .tex .dvi .pdf + +.tex.dvi: + $(LATEX) $< + $(BIBTEX) $(TARGET) + $(LATEX) $< + $(LATEX) $< + +.dvi.pdf: + $(DVIPDF) $(DVIPDF_OPT) $< + + +all: $(TARGET).pdf + open $(TARGET).pdf + +dvi: $(TARGET).dvi + +pdf: $(TARGET).pdf + + +clean: + rm -f *.dvi *.aux *.log *.pdf *.ps *.gz *.bbl *.blg *.toc *~ *.core +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/final_pre.aux Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,20 @@ +\relax +\@writefile{toc}{\contentsline {section}{\numberline {1}複数人によるファイルの同時編集}{1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}remote editor}{1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}コマンドパターンでの実装}{1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}msgpackの対応修正}{1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}編集位置の相違とその解消}{1}\protected@file@percent } +\citation{*} +\bibstyle{junsrt} +\bibdata{reference} +\bibcite{dfs}{1} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces コマンド番号による編集相違の解消}}{2}\protected@file@percent } +\newlabel{fig:Fix}{{1}{2}} +\@writefile{toc}{\contentsline {section}{\numberline {6}スター型ネットワーク}{2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}分散フレームワークChristie}{2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {8}今後の課題}{2}\protected@file@percent } +\bibcite{cbc}{2} +\bibcite{christie}{3} +\bibcite{rep}{4} +\bibcite{myg}{5} +\bibcite{threadecodes}{6}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/final_pre.bbl Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,29 @@ +\begin{thebibliography}{1} + +\bibitem{dfs} +河野真治. +\newblock 分散フレームワークchristieと分散木構造データベースjungle. +\newblock IPSJ SIG Technical Report, May 2018. + +\bibitem{cbc} +Kaito TOKKMORI and Shinji KONO. +\newblock Implementing continuation based language in llvm and clang. +\newblock {\em LOLA 2015}, July 2015. + +\bibitem{christie} +照屋のぞみ. +\newblock 分散フレームワークchristieの設計, March 2018. + +\bibitem{rep} +安村恭一. +\newblock 巡回トークンを用いた複数人テキスト編集とセッション管理, Merch 2004. + +\bibitem{myg} +宮城健太. +\newblock Remote editing protocolの実装, Merch 2008. + +\bibitem{threadecodes} +結城浩. +\newblock デザインパターン入門, 2004. + +\end{thebibliography}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/final_pre.blg Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,47 @@ +This is pBibTeX, Version 0.99d-j0.33 (utf8.euc) (TeX Live 2019) +Capacity: max_strings=100000, hash_size=100000, hash_prime=85009 +The top-level auxiliary file: final_pre.aux +The style file: junsrt.bst +Database file #1: reference.bib +You've used 6 entries, + 2270 wiz_defined-function locations, + 564 strings with 4495 characters, +and the built_in function-call counts, 1047 in all, are: += -- 56 +> -- 27 +< -- 0 ++ -- 13 +- -- 7 +* -- 22 +:= -- 130 +add.period$ -- 14 +call.type$ -- 6 +change.case$ -- 6 +chr.to.int$ -- 0 +cite$ -- 6 +duplicate$ -- 69 +empty$ -- 141 +format.name$ -- 14 +if$ -- 251 +int.to.chr$ -- 0 +int.to.str$ -- 6 +missing$ -- 1 +newline$ -- 29 +num.names$ -- 6 +pop$ -- 64 +preamble$ -- 1 +purify$ -- 0 +quote$ -- 0 +skip$ -- 60 +stack$ -- 0 +substring$ -- 0 +swap$ -- 6 +text.length$ -- 0 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 0 +while$ -- 6 +width$ -- 7 +write$ -- 54 +is.kanji.str$ -- 45
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/final_pre.log Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,252 @@ +This is e-pTeX, Version 3.14159265-p3.8.2-190131-2.6 (utf8.euc) (TeX Live 2019) (preloaded format=platex 2019.10.15) 15 FEB 2020 17:06 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**final_pre.tex +(./final_pre.tex +pLaTeX2e <2019-10-01> (based on LaTeX2e <2019-10-01> patch level 1) +(/usr/local/texlive/2019/texmf-dist/tex/platex/base/jarticle.cls +Document Class: jarticle 2019/04/02 v1.8b Standard pLaTeX class +\c@@paper=\count83 +(/usr/local/texlive/2019/texmf-dist/tex/platex/base/jsize10.clo +File: jsize10.clo 2019/04/02 v1.8b Standard pLaTeX file (size option) +) +\c@part=\count84 +\c@section=\count85 +\c@subsection=\count86 +\c@subsubsection=\count87 +\c@paragraph=\count88 +\c@subparagraph=\count89 +\c@figure=\count90 +\c@table=\count91 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\symmincho=\mathgroup4 +LaTeX Font Info: Overwriting symbol font `mincho' in version `bold' +(Font) JY1/mc/m/n --> JY1/gt/m/n on input line 614. +\toclineskip=\dimen118 +\@lnumwidth=\dimen119 +\bibindent=\dimen120 +\heisei=\count92 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks15 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/10/08 v1.3c Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: dvipdfmx.def on input line 105. + +(/usr/local/texlive/2019/texmf-dist/tex/latex/graphics-def/dvipdfmx.def +File: dvipdfmx.def 2017/06/24 v5.0g Graphics/color driver for dvipdfmx +)) +\Gin@req@height=\dimen121 +\Gin@req@width=\dimen122 +) +(./picins.sty Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ +\@BILD=\box43 +\@TEXT=\box44 +\d@breite=\dimen123 +\d@hoehe=\dimen124 +\d@xoff=\dimen125 +\d@yoff=\dimen126 +\d@shad=\dimen127 +\d@dash=\dimen128 +\d@boxl=\dimen129 +\d@pichskip=\dimen130 +\d@tmp=\dimen131 +\d@tmpa=\dimen132 +\d@bskip=\dimen133 +\hsiz@=\dimen134 +\p@getot@l=\dimen135 +\c@breite=\count93 +\c@hoehe=\count94 +\c@xoff=\count95 +\c@yoff=\count96 +\c@pos=\count97 +\c@shad=\count98 +\c@dash=\count99 +\c@boxl=\count100 +\c@zeilen=\count101 +\@changemode=\count102 +\c@piccaption=\count103 +\c@piccaptionpos=\count104 +\c@picpos=\count105 +\c@whole=\count106 +\c@half=\count107 +\c@tmp=\count108 +\c@tmpa=\count109 +\c@tmpb=\count110 +\c@tmpc=\count111 +\c@tmpd=\count112 +\d@leftskip=\skip43 +\ptoti=\dimen136 +\ptotii=\dimen137 +\env@box=\box45 +\d@envdp=\dimen138 +\c@hsize=\count113 +\c@envdp=\count114 +\d@envb=\dimen139 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer +s +\f@nch@headwidth=\skip44 +\f@nch@O@elh=\skip45 +\f@nch@O@erh=\skip46 +\f@nch@O@olh=\skip47 +\f@nch@O@orh=\skip48 +\f@nch@O@elf=\skip49 +\f@nch@O@erf=\skip50 +\f@nch@O@olf=\skip51 +\f@nch@O@orf=\skip52 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/abstract/abstract.sty +Package: abstract 2009/06/08 v1.2a configurable abstracts +\abstitleskip=\skip53 +\absleftindent=\skip54 +\absrightindent=\skip55 +\absparindent=\skip56 +\absparsep=\skip57 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/here/here.sty) +(/usr/local/texlive/2019/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count115 +\float@exts=\toks16 +\float@box=\box46 +\@float@everytoks=\toks17 +\@floatcapt=\box47 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count116 +\lst@gtempboxa=\box48 +\lst@token=\toks18 +\lst@length=\count117 +\lst@currlwidth=\dimen140 +\lst@column=\count118 +\lst@pos=\count119 +\lst@lostspace=\dimen141 +\lst@width=\dimen142 +\lst@newlines=\count120 +\lst@lineno=\count121 +\lst@maxwidth=\dimen143 + +(/usr/local/texlive/2019/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2019/09/10 1.8c (Carsten Heinz) +\c@lstnumber=\count122 +\lst@skipnumbers=\count123 +\lst@framebox=\box49 +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2019/09/10 1.8c listings configuration +)) +Package: listings 2019/09/10 1.8c (Carsten Heinz) + +(/usr/local/texlive/2019/texmf-dist/tex/latex/listings/lstlang1.sty +File: lstlang1.sty 2019/09/10 1.8c listings language file +) +(/usr/local/texlive/2019/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2019/09/10 1.8c (Carsten Heinz) +) + +LaTeX Warning: Unused global option(s): + [9.5pt]. + +(./final_pre.aux) +\openout1 = `final_pre.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 48. +LaTeX Font Info: ... okay on input line 48. +\c@lstlisting=\count124 +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <12> on input line 53. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <8> on input line 53. +LaTeX Font Info: External font `cmex10' loaded for size +(Font) <6> on input line 53. +LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available +(Font) Font shape `JT1/gt/m/n' tried instead on input line 56. +LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available +(Font) Font shape `JY1/gt/m/n' tried instead on input line 56. +LaTeX Font Info: Trying to load font information for OMS+cmr on input line 8 +0. + (/usr/local/texlive/2019/texmf-dist/tex/latex/base/omscmr.fd +File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: Font shape `OMS/cmr/m/n' in size <10> not available +(Font) Font shape `OMS/cmsy/m/n' tried instead on input line 80. +File: pic/emblem-bitmap.pdf Graphic file (type pdf) +<pic/emblem-bitmap.pdf> + +Package Fancyhdr Warning: \headheight is too small (0.0pt): +Make it at least 20.37784pt. +We now make it that large for the rest of the document. +This may cause the page layout to be inconsistent, however. + + +Package Fancyhdr Warning: \footskip is too small (0.0pt): +Make it at least 4.50005pt. +We now make it that large for the rest of the document. +This may cause the page layout to be inconsistent, however. + +[1 + + +] +File: fig/FIxCommand.pdf Graphic file (type pdf) +<fig/FIxCommand.pdf> + (./final_pre.bbl [2] + +LaTeX Font Warning: Font shape `JT1/gt/m/it' undefined +(Font) using `JT1/gt/m/n' instead on input line 11. + + +LaTeX Font Warning: Font shape `JY1/gt/m/it' undefined +(Font) using `JY1/gt/m/n' instead on input line 11. + +) [3 + +] (./final_pre.aux) + +LaTeX Font Warning: Some font shapes were not available, defaults substituted. + + ) +Here is how much of TeX's memory you used: + 2534 strings out of 492763 + 33914 string characters out of 6140193 + 308912 words of memory out of 5000000 + 6977 multiletter control sequences out of 15000+600000 + 13434 words of font info for 52 fonts, out of 8000000 for 9000 + 929 hyphenation exceptions out of 8191 + 28i,15n,51p,285b,433s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on final_pre.dvi (3 pages, 15760 bytes).
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/final_pre.tex Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,160 @@ +\documentclass[twocolumn,twoside,9.5pt]{jarticle} +\usepackage[dvipdfmx]{graphicx} +\usepackage{picins} +\usepackage{fancyhdr} +\usepackage{abstract} +\usepackage{here} +\usepackage{url} +\usepackage{float} +\usepackage{listings} +%\pagestyle{fancy} +\lhead{\parpic{\includegraphics[height=1zw,keepaspectratio,bb=0 0 251 246]{pic/emblem-bitmap.pdf}}琉球大学主催 工学部情報工学科 } +\rhead{} +\cfoot{} + +\setlength{\topmargin}{-1in \addtolength{\topmargin}{15mm}} +\setlength{\headheight}{0mm} +\setlength{\headsep}{5mm} +\setlength{\oddsidemargin}{-1in \addtolength{\oddsidemargin}{11mm}} +\setlength{\evensidemargin}{-1in \addtolength{\evensidemargin}{21mm}} +\setlength{\textwidth}{181mm} +\setlength{\textheight}{261mm} +\setlength{\footskip}{0mm} + +\pagestyle{empty} +\lstset{ + language=C, + tabsize=2, + frame=single, + basicstyle={\ttfamily\footnotesize}, % + identifierstyle={\footnotesize}, % + commentstyle={\footnotesize\itshape}, % + keywordstyle={\footnotesize\bfseries}, % + ndkeywordstyle={\footnotesize}, % + stringstyle={\footnotesize\ttfamily}, + breaklines=true, + captionpos=b, + columns=[l]{fullflexible}, % + xrightmargin=0zw, % + xleftmargin=1zw, % + aboveskip=1zw, + numberstyle={\scriptsize}, % + stepnumber=1, + numbersep=0.5zw, % + lineskip=-0.5ex, +} + + +\begin{document} +\title{分散フレームワークChristieを用いたremote editor\\ Remote editor using distributed framework Christie} + +\author{165713F 一木貴裕 {}{} 指導教員 : 河野真治} +\date{} +\maketitle +\thispagestyle{fancy} + +\section{複数人によるファイルの同時編集} +ペアプログラミングを行う際に有効的手法の一つとして, 同じファイルを複数人が場所を問わずに同時編集することができるリモートエディタをあげられる. + +複数人の編集がリアルタイムに同期されるリモートエディタには, 既存の物としてVisual Studio Code(以下VScode)のremote session がある. +しかし, 編集のセッションに参加するユーザ全員がVSCodeを使うことになり, またVSCodeの環境を導入する必要がある. + +そこで,セッションに参加するユーザー全員が各々好きなエディタを使用することができるリモートエディタアプリケーションを作成したい. +アプリケーションの形に作成することにより, 開発のための環境に手間を使うことなく, ユーザーが慣れ親しんだエディタを利用できるようしたい. + +先行研究ではネットワークをリング型で構成しトークンを巡回させていたが, ノードごとの整合性の確立が難しい, ネットワーク全体の障害に対する脆弱性の弱さといった問題点が見られた. +これらの反省点を踏まえ本研究では スター型ネットワークを用いることで remote editor の障害耐性を高める. + +また新しく, 本研究室で開発している分散フレームワークChristieを使用することにより簡潔な実装と, Christie自体の性能と信頼性の向上も目指す. + +\section{remote editor} +リモートエディタは共通プロトコルが対応するエディタが保持するバッファを開いて編集することができる. +ネットワーク上の一つのバッファが編集されると他のバッファにも変更が反映され, お互いのバッファを編集し合うことができる. +バッファの変更のやり取りでは, 互いのバッファに起こった変更を一つの命令として他のノードへ送信することで実現する. + +\section{コマンドパターンでの実装} +命令はコマンドパターンを用いて実装した. +コマンドパターンとは命令を一つのオブジェクトとして扱うものであり, 命令に必要な情報が含まれたクラスのインスタンスを作成することで命令を作成する. + +\begin{itemize} +\item インスタンスを利用して命令を作成するため, 後述のChristieのGearの概念と相性が良い. +\item 命令に必要な内容をまとめて送信するため, 相違の発生を防ぐことができる. +\item 命令の管理が行いやすい, 行列に並ばせ命令の順番を管理したり, 命令の際, 実行, 取り消しが容易になる. +\end{itemize} +と言った利点がある. +クラスのインスタンスを作成し, msgpackパッケージを用いてシリアライズしてから送受信する。 + +\section{msgpackの対応修正} +msgpackを使用し, コマンドを送信しようとしたところエラーの発生が見られた. +原因はmsgpackのバージョンの進行によりシリアライズ機能が削除されたことによることが判明した. + +そこでjavaのバージョンを11から8へ下げる, シリアライズするクラスに対してフィールドをpublicにするといった処理を行うことで対処した. +msgpackはバージョンの更新が途絶えているため, 最新のjavaで開発を進めるためにはmsgpackに対応する機能を自身で開発する必要が生じた. + +\section{編集位置の相違とその解消} +エディタ間の通信で生じる相違について説明する. +エディタ同士のコマンドの送信はそれぞれが独立して行うため、編集対象の領域にエディタ間で相違が生じる場合がある。 +すれ違いが発生したか否かを検知するために、ノード同士が送信し合うコマンドにそれぞれ番号を割り振る方法を考案した. +図\ref{fig:Fix}はコマンド番号を用いてバッファの相違を解決する過程の図である. + +コマンドとコマンド番号について以下の特性が存在する. +\begin{itemize} +\item 各ノードは最後に実行した数値を変数(図ではserverがcNum, nodeがnodeCNum) に保持している. +\item いずれかのノードがコマンドを発行したら, そのコマンドのコマンド番号は前に実行したコマンドの番号+1となる. そしてそれは送信されてきたコマンドか自分が発行したコマンドであるかは問わない. +\item 送信されてきたコマンドのコマンド番号が自身が保持しているコマンド番号+1でなければ、自身が先に発進したコマンドとすれ違いが発生していることが判明できる. (保持コマンド番号より同値以下の場合) +\end{itemize} +以上の仕組みで相違の解消を図る. + +\begin{figure}[htpb] + \begin{center} + \scalebox{0.4}{\includegraphics{fig/FIxCommand.pdf}} + \end{center} + \caption{コマンド番号による編集相違の解消} + \label{fig:Fix} +\end{figure} + +\section{スター型ネットワーク} +リモートエディタのセッションに参加するノード(ユーザ)はスター型で接続を行い, リモートエディタの通信部分の障害に対する耐性を保障する. + スター型とは中心となるノードから放射状に他のノードにそれぞれ一対一の接続を行う接続であり, リング型と比較した際のスター型の利点として, + +\begin{itemize} +\item ノードの中心(サーバー)が正しいファイル状況を保持するため,整合性を保つことが容易である. +\item どこかのノードの接続が切断されても, 障害の範囲をそのノードのみに抑えることができる. +\item 新しいノードが参加した, もしくはノードの再接続の際にはサーバーのファイル状況を参照するのみで参加, 復帰ができる. +\end{itemize} +が挙げられる. + +\section{分散フレームワークChristie} +ChristieはJava言語で構成された本研究室独自の分散フレームワークである. +同じく本研究室で開発を行っているGearsOSのファイルシステムに組み込む予定があるため, GearsOSを構成している本研究室の独自の言語Continuation based C (以下CbC言語)とにた, Gearというプログラム概念が存在する. + +\begin{itemize} +\item CodeGear(以下 CG) +\item DataGear(以下 DG) +\item CodeGearManager(以下 CGM) +\item DataGearManager(以下 DGM) +\end{itemize} + +CodeGearはクラスやスレッドに相当する. DataGear は変数データに相当し, javaのアノテーション機能を用いて記述する. +CG内に記述したKeyに全てのDGが揃った際に初めてそのCGが動作するという仕組みになっている. CodeGearManager はいわゆるノードに相当し, CG, DG ,DGM を管理する. +DataGearManager は DG を管理するもので, put という操作により DG , つまり変数データを格納することができる. + +DGM の put 操作を行う際には Local と Remote と 2 つのどちらかを選び, 変数の key とデータを引数に書く. +Local であれば, Local の CGM が管理している DGM に対し, DG を格納していく. +Remote であれば接続した Remote 先の CGM の DGM に DG を格納できる. put 操作を行ったあとは, 対象の DGM の中に queue として保管される. +DG のアノテーションには Take, Peek, TakeFrom, PeekFrom の 4 つがあり, TakeはDGが一度読み込まれると中身が削除されるが, Peekは削除されない. +Fromをつけるとリモート先を指定してDGを得ることができる. + +\section{今後の課題} +本研究ではリモートエディタを制作する上で必要となる構造と, 土台となる分散フレームワークChristieについて述べた. + +現時点ではリモートエディタのコマンドを送り合う上での基盤となるコマンドパターンでの送受信を実装し, 命令コマンドのやり取りにて問題となってくる編集の相違の発生をテスト作成することまでができた. +リモートエディタを動かすまでの最低限の構造制作までは終わっていない. +現時点から最低限のセッションができるようになるためには, 複数人が参加できるStar型Topologyを構成すると編集ファイルの共有方法を作成しなければならない. +加えて, 本研究の制作物が実用的になるには既存のエディタを動作できるようになることは絶対条件である. +これらを踏まえて, 今後も制作を続け, 本研究で述べた構成が実際に実用性に応えられるか, ユーザに苦痛なく使ってもらえる処理速度を得られるか検証していきたい. + +\nocite{*} +\bibliographystyle{junsrt} +\bibliography{reference} +\end{document} \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos.pu Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,95 @@ +@startuml +title Paxos1 +/' ======= style ======= '/ + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + +/' ======= node name ======= '/ + +/' === proposers === '/ +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +/' === acceptors === '/ +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +/' === learners === '/ +participant learner1 +activate learner1 + +/' ======= uml ======= '/ + +proposer2 -> acceptor1:Prepare request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Promise Success\n\ +Proposal(8, 2) +acceptor2 --> proposer2:Promise Success\n\ +Proposal(8, 2) +acceptor3 --> proposer2:Promise Success\n\ +Proposal(8, 2) + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Fail\n\ +Proposal(8, 2) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + +proposer2 -> acceptor1:Accept request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor2 --> proposer2:Accept \n\ +Proposal(8, 2) +acceptor2 --> learner1:accept \n\ +Proposal(8, 2) + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Success\n\ +Proposal(13, 1) +acceptor3 --> proposer1:Promise Success\n\ +Proposal(13, 1) + +acceptor1 --> proposer2:Accept Fail\n\ +Proposal(13, 1) +acceptor3 --> proposer2:Accept Fail\n\ +Proposal(13, 1) +proposer1 -> acceptor1:accept request \n\ +Proposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + + +acceptor2 --> proposer1:accept \n\ +Proposal(13, 1) +acceptor2 --> learner1:accept \n\ +Proposal(13, 1) + + + +@enduml \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos1.pu Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,74 @@ +@startuml +title Paxos 1 +/' ======= style ======= '/ + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + +/' ======= node name ======= '/ + +/' === proposers === '/ +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +/' === acceptors === '/ +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +/' === learners === '/ +participant learner1 +activate learner1 + +/' ======= uml ======= '/ + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Success\n\ +Proposal(7, 1) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + +proposer2 -> acceptor1:Prepare request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Promise Success\n\ +Proposal(8, 2) +acceptor2 --> proposer2 +acceptor3 --> proposer2 + +proposer2 -> acceptor1:Accept request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Accept \n\ +Proposal(8, 2) +acceptor1 -> learner1:Accept \n\ +Proposal(8, 2) + +acceptor2 --> proposer2:Accept \n\ +Proposal(8, 2) +acceptor2 -> learner1:Accept \n\ +Proposal(8, 2) + +learner1 -> learner1:chosen \n\ +Proposal(8, 2) + +@enduml \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos1.svg Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="728px" preserveAspectRatio="none" style="width:864px;height:728px;" version="1.1" viewBox="0 0 864 728" width="864px" zoomAndPan="magnify"><defs><filter height="300%" id="fc7ra6n53s53c" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="405.5" y="23.5352">Paxos 1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="73" x2="73" y1="68.9766" y2="688.1875"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="213" x2="213" y1="68.9766" y2="688.1875"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="351" x2="351" y1="68.9766" y2="688.1875"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="487" x2="487" y1="68.9766" y2="688.1875"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="623" x2="623" y1="68.9766" y2="688.1875"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="754" x2="754" y1="68.9766" y2="688.1875"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="54.0234">proposer1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="707.7227">proposer1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="54.0234">proposer2</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="707.7227">proposer2</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="54.0234">acceptor1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="707.7227">acceptor1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="54.0234">acceptor2</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="707.7227">acceptor2</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="54.0234">acceptor3</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="707.7227">acceptor3</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="54.0234">learner1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="687.1875"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="707.7227">learner1</text><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#fc7ra6n53s53c)" height="600.2109" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><polygon fill="#000000" points="334,111.5977,344,115.5977,334,119.5977,338,115.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="115.5977" y2="115.5977"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="95.5449">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="110.8555">Proposal(7, 1)</text><polygon fill="#000000" points="470,125.5977,480,129.5977,470,133.5977,474,129.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="129.5977" y2="129.5977"/><polygon fill="#000000" points="606,139.5977,616,143.5977,606,147.5977,610,143.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="143.5977" y2="143.5977"/><polygon fill="#000000" points="89,184.2188,79,188.2188,89,192.2188,85,188.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="188.2188" y2="188.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="168.166">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="183.4766">Proposal(7, 1)</text><polygon fill="#000000" points="89,198.2188,79,202.2188,89,206.2188,85,202.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="202.2188" y2="202.2188"/><polygon fill="#000000" points="89,212.2188,79,216.2188,89,220.2188,85,216.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="216.2188" y2="216.2188"/><polygon fill="#000000" points="334,256.8398,344,260.8398,334,264.8398,338,260.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="340" y1="260.8398" y2="260.8398"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="225" y="240.7871">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="256.0977">Proposal(8, 2)</text><polygon fill="#000000" points="470,270.8398,480,274.8398,470,278.8398,474,274.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="476" y1="274.8398" y2="274.8398"/><polygon fill="#000000" points="606,284.8398,616,288.8398,606,292.8398,610,288.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="612" y1="288.8398" y2="288.8398"/><polygon fill="#000000" points="229,329.4609,219,333.4609,229,337.4609,225,333.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="333.4609" y2="333.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="235" y="313.4082">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="328.7188">Proposal(8, 2)</text><polygon fill="#000000" points="229,343.4609,219,347.4609,229,351.4609,225,347.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="347.4609" y2="347.4609"/><polygon fill="#000000" points="229,357.4609,219,361.4609,229,365.4609,225,361.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="617" y1="361.4609" y2="361.4609"/><polygon fill="#000000" points="334,402.082,344,406.082,334,410.082,338,406.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="340" y1="406.082" y2="406.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="225" y="386.0293">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="401.3398">Proposal(8, 2)</text><polygon fill="#000000" points="470,416.082,480,420.082,470,424.082,474,420.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="476" y1="420.082" y2="420.082"/><polygon fill="#000000" points="606,430.082,616,434.082,606,438.082,610,434.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="612" y1="434.082" y2="434.082"/><polygon fill="#000000" points="229,474.7031,219,478.7031,229,482.7031,225,478.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="478.7031" y2="478.7031"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="235" y="458.6504">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="473.9609">Proposal(8, 2)</text><polygon fill="#000000" points="737,519.3242,747,523.3242,737,527.3242,741,523.3242" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="356" x2="743" y1="523.3242" y2="523.3242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="363" y="503.2715">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="363" y="518.582">Proposal(8, 2)</text><polygon fill="#000000" points="229,563.9453,219,567.9453,229,571.9453,225,567.9453" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="567.9453" y2="567.9453"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="235" y="547.8926">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="563.2031">Proposal(8, 2)</text><polygon fill="#000000" points="737,608.5664,747,612.5664,737,616.5664,741,612.5664" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="492" x2="743" y1="612.5664" y2="612.5664"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="499" y="592.5137">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="499" y="607.8242">Proposal(8, 2)</text><line style="stroke: #000000; stroke-width: 1.0;" x1="759" x2="801" y1="657.1875" y2="657.1875"/><line style="stroke: #000000; stroke-width: 1.0;" x1="801" x2="801" y1="657.1875" y2="670.1875"/><line style="stroke: #000000; stroke-width: 1.0;" x1="760" x2="801" y1="670.1875" y2="670.1875"/><polygon fill="#000000" points="770,666.1875,760,670.1875,770,674.1875,766,670.1875" style="stroke: #000000; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="766" y="637.1348">chosen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="766" y="652.4453">Proposal(8, 2)</text><!-- +@startuml +title Paxos 1 + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + + +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +participant learner1 +activate learner1 + + +proposer1 -> acceptor1:Prepare request \nProposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer1:Promise Success\nProposal(7, 1) +acceptor2 - -> proposer1 +acceptor3 - -> proposer1 + +proposer2 -> acceptor1:Prepare request \nProposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 - -> proposer2:Promise Success\nProposal(8, 2) +acceptor2 - -> proposer2 +acceptor3 - -> proposer2 + +proposer2 -> acceptor1:Accept request \nProposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 - -> proposer2:Accept \nProposal(8, 2) +acceptor1 -> learner1:Accept \nProposal(8, 2) + +acceptor2 - -> proposer2:Accept \nProposal(8, 2) +acceptor2 -> learner1:Accept \nProposal(8, 2) + +learner1 -> learner1:chosen \nProposal(8, 2) + +@enduml + +PlantUML version 1.2019.01(Sun Feb 10 00:32:04 JST 2019) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Java Version: 11.0.1+13 +Operating System: Mac OS X +OS Version: 10.13.6 +Default Encoding: UTF-8 +Language: ja +Country: JP +--></g></svg> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos2.pu Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,116 @@ +@startuml +title Paxos 2 +/' ======= style ======= '/ + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + +/' ======= node name ======= '/ + +/' === proposers === '/ +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +/' === acceptors === '/ +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +/' === learners === '/ +participant learner1 +activate learner1 + +/' ======= uml ======= '/ + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Success\n\ +Proposal(7, 1) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + +proposer2 -> acceptor1:Prepare request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Promise Success\n\ +Proposal(8, 2) +acceptor2 --> proposer2 +acceptor3 --> proposer2 + +proposer1 -> acceptor1:Accept request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + + + +acceptor1 --> proposer1:Accept Fail\n\ +Proposal(8, 2) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + + +proposer2 -> acceptor2:Accept request \n\ +Proposal(8, 2) + +acceptor2 --> proposer2:Accept \n\ +Proposal(8, 2) +acceptor2 -> learner1:Accept \n\ +Proposal(8, 2) + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor2 --> proposer1:Promise Success\n\ +But Accepted \n\ +Proposal(8, 2) +acceptor1 --> proposer1:Promise Success\n\ +Proposal(13, 1) +acceptor3 --> proposer1 + +proposer2 -> acceptor1:Accept request \n\ +Proposal(8, 2) +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Accept Fail\n\ +Proposal(8, 2) +acceptor3 --> proposer2 + +proposer1 -> acceptor1:Accept request \n\ +Proposal(13, 2) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer2:Accept \n\ +Proposal(13, 2) +acceptor1 -> learner1:Accept \n\ +Proposal(13, 2) + + +acceptor2 --> proposer2:Accept \n\ +Proposal(13, 2) +acceptor2 -> learner1:Accept \n\ +Proposal(13, 2) + +learner1 -> learner1:chosen \n\ +Proposal(13, 2) + +@enduml \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos2.svg Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,102 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1316px" preserveAspectRatio="none" style="width:872px;height:1316px;" version="1.1" viewBox="0 0 872 1316" width="872px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ronj4dwj7ktb" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="409.5" y="23.5352">Paxos 2</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="73" x2="73" y1="68.9766" y2="1275.709"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="213" x2="213" y1="68.9766" y2="1275.709"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="351" x2="351" y1="68.9766" y2="1275.709"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="487" x2="487" y1="68.9766" y2="1275.709"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="623" x2="623" y1="68.9766" y2="1275.709"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="754" x2="754" y1="68.9766" y2="1275.709"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="54.0234">proposer1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="1295.2441">proposer1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="54.0234">proposer2</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="1295.2441">proposer2</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="54.0234">acceptor1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="1295.2441">acceptor1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="54.0234">acceptor2</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="1295.2441">acceptor2</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="54.0234">acceptor3</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="1295.2441">acceptor3</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="54.0234">learner1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="1274.709"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="1295.2441">learner1</text><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1ronj4dwj7ktb)" height="1187.7324" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><polygon fill="#000000" points="334,111.5977,344,115.5977,334,119.5977,338,115.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="115.5977" y2="115.5977"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="95.5449">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="110.8555">Proposal(7, 1)</text><polygon fill="#000000" points="470,125.5977,480,129.5977,470,133.5977,474,129.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="129.5977" y2="129.5977"/><polygon fill="#000000" points="606,139.5977,616,143.5977,606,147.5977,610,143.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="143.5977" y2="143.5977"/><polygon fill="#000000" points="89,184.2188,79,188.2188,89,192.2188,85,188.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="188.2188" y2="188.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="168.166">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="183.4766">Proposal(7, 1)</text><polygon fill="#000000" points="89,198.2188,79,202.2188,89,206.2188,85,202.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="202.2188" y2="202.2188"/><polygon fill="#000000" points="89,212.2188,79,216.2188,89,220.2188,85,216.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="216.2188" y2="216.2188"/><polygon fill="#000000" points="334,256.8398,344,260.8398,334,264.8398,338,260.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="340" y1="260.8398" y2="260.8398"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="225" y="240.7871">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="256.0977">Proposal(8, 2)</text><polygon fill="#000000" points="470,270.8398,480,274.8398,470,278.8398,474,274.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="476" y1="274.8398" y2="274.8398"/><polygon fill="#000000" points="606,284.8398,616,288.8398,606,292.8398,610,288.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="612" y1="288.8398" y2="288.8398"/><polygon fill="#000000" points="229,329.4609,219,333.4609,229,337.4609,225,333.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="333.4609" y2="333.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="235" y="313.4082">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="328.7188">Proposal(8, 2)</text><polygon fill="#000000" points="229,343.4609,219,347.4609,229,351.4609,225,347.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="347.4609" y2="347.4609"/><polygon fill="#000000" points="229,357.4609,219,361.4609,229,365.4609,225,361.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="617" y1="361.4609" y2="361.4609"/><polygon fill="#000000" points="334,402.082,344,406.082,334,410.082,338,406.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="406.082" y2="406.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="386.0293">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="401.3398">Proposal(7, 1)</text><polygon fill="#000000" points="470,416.082,480,420.082,470,424.082,474,420.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="420.082" y2="420.082"/><polygon fill="#000000" points="606,430.082,616,434.082,606,438.082,610,434.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="434.082" y2="434.082"/><polygon fill="#000000" points="89,474.7031,79,478.7031,89,482.7031,85,478.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="478.7031" y2="478.7031"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="95" y="458.6504">Accept Fail</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="473.9609">Proposal(8, 2)</text><polygon fill="#000000" points="89,488.7031,79,492.7031,89,496.7031,85,492.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="492.7031" y2="492.7031"/><polygon fill="#000000" points="89,502.7031,79,506.7031,89,510.7031,85,506.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="506.7031" y2="506.7031"/><polygon fill="#000000" points="470,547.3242,480,551.3242,470,555.3242,474,551.3242" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="476" y1="551.3242" y2="551.3242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="225" y="531.2715">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="546.582">Proposal(8, 2)</text><polygon fill="#000000" points="229,591.9453,219,595.9453,229,599.9453,225,595.9453" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="595.9453" y2="595.9453"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="235" y="575.8926">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="591.2031">Proposal(8, 2)</text><polygon fill="#000000" points="737,636.5664,747,640.5664,737,644.5664,741,640.5664" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="492" x2="743" y1="640.5664" y2="640.5664"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="499" y="620.5137">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="499" y="635.8242">Proposal(8, 2)</text><polygon fill="#000000" points="334,681.1875,344,685.1875,334,689.1875,338,685.1875" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="685.1875" y2="685.1875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="665.1348">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="680.4453">Proposal(13, 1)</text><polygon fill="#000000" points="470,695.1875,480,699.1875,470,703.1875,474,699.1875" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="699.1875" y2="699.1875"/><polygon fill="#000000" points="606,709.1875,616,713.1875,606,717.1875,610,713.1875" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="713.1875" y2="713.1875"/><polygon fill="#000000" points="89,769.1191,79,773.1191,89,777.1191,85,773.1191" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="773.1191" y2="773.1191"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="737.7559">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="95" y="753.0664">But Accepted</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="768.377">Proposal(8, 2)</text><polygon fill="#000000" points="89,813.7402,79,817.7402,89,821.7402,85,817.7402" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="817.7402" y2="817.7402"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="797.6875">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="812.998">Proposal(13, 1)</text><polygon fill="#000000" points="89,827.7402,79,831.7402,89,835.7402,85,831.7402" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="831.7402" y2="831.7402"/><polygon fill="#000000" points="334,872.3613,344,876.3613,334,880.3613,338,876.3613" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="340" y1="876.3613" y2="876.3613"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="225" y="856.3086">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="871.6191">Proposal(8, 2)</text><polygon fill="#000000" points="606,886.3613,616,890.3613,606,894.3613,610,890.3613" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="612" y1="890.3613" y2="890.3613"/><polygon fill="#000000" points="229,930.9824,219,934.9824,229,938.9824,225,934.9824" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="934.9824" y2="934.9824"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="235" y="914.9297">Accept Fail</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="930.2402">Proposal(8, 2)</text><polygon fill="#000000" points="229,944.9824,219,948.9824,229,952.9824,225,948.9824" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="617" y1="948.9824" y2="948.9824"/><polygon fill="#000000" points="334,989.6035,344,993.6035,334,997.6035,338,993.6035" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="993.6035" y2="993.6035"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="973.5508">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="988.8613">Proposal(13, 2)</text><polygon fill="#000000" points="470,1003.6035,480,1007.6035,470,1011.6035,474,1007.6035" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="1007.6035" y2="1007.6035"/><polygon fill="#000000" points="606,1017.6035,616,1021.6035,606,1025.6035,610,1021.6035" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="1021.6035" y2="1021.6035"/><polygon fill="#000000" points="229,1062.2246,219,1066.2246,229,1070.2246,225,1066.2246" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="1066.2246" y2="1066.2246"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="235" y="1046.1719">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="235" y="1061.4824">Proposal(13, 2)</text><polygon fill="#000000" points="737,1106.8457,747,1110.8457,737,1114.8457,741,1110.8457" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="356" x2="743" y1="1110.8457" y2="1110.8457"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="363" y="1090.793">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="363" y="1106.1035">Proposal(13, 2)</text><polygon fill="#000000" points="229,1151.4668,219,1155.4668,229,1159.4668,225,1155.4668" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="1155.4668" y2="1155.4668"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="235" y="1135.4141">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="235" y="1150.7246">Proposal(13, 2)</text><polygon fill="#000000" points="737,1196.0879,747,1200.0879,737,1204.0879,741,1200.0879" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="492" x2="743" y1="1200.0879" y2="1200.0879"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="499" y="1180.0352">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="499" y="1195.3457">Proposal(13, 2)</text><line style="stroke: #000000; stroke-width: 1.0;" x1="759" x2="801" y1="1244.709" y2="1244.709"/><line style="stroke: #000000; stroke-width: 1.0;" x1="801" x2="801" y1="1244.709" y2="1257.709"/><line style="stroke: #000000; stroke-width: 1.0;" x1="760" x2="801" y1="1257.709" y2="1257.709"/><polygon fill="#000000" points="770,1253.709,760,1257.709,770,1261.709,766,1257.709" style="stroke: #000000; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="766" y="1224.6563">chosen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="766" y="1239.9668">Proposal(13, 2)</text><!-- +@startuml +title Paxos 2 + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + + +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +participant learner1 +activate learner1 + + +proposer1 -> acceptor1:Prepare request \nProposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer1:Promise Success\nProposal(7, 1) +acceptor2 - -> proposer1 +acceptor3 - -> proposer1 + +proposer2 -> acceptor1:Prepare request \nProposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 - -> proposer2:Promise Success\nProposal(8, 2) +acceptor2 - -> proposer2 +acceptor3 - -> proposer2 + +proposer1 -> acceptor1:Accept request \nProposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + + + +acceptor1 - -> proposer1:Accept Fail\nProposal(8, 2) +acceptor2 - -> proposer1 +acceptor3 - -> proposer1 + + +proposer2 -> acceptor2:Accept request \nProposal(8, 2) + +acceptor2 - -> proposer2:Accept \nProposal(8, 2) +acceptor2 -> learner1:Accept \nProposal(8, 2) + +proposer1 -> acceptor1:Prepare request \nProposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor2 - -> proposer1:Promise Success\nBut Accepted \nProposal(8, 2) +acceptor1 - -> proposer1:Promise Success\nProposal(13, 1) +acceptor3 - -> proposer1 + +proposer2 -> acceptor1:Accept request \nProposal(8, 2) +proposer2 -> acceptor3 + +acceptor1 - -> proposer2:Accept Fail\nProposal(8, 2) +acceptor3 - -> proposer2 + +proposer1 -> acceptor1:Accept request \nProposal(13, 2) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer2:Accept \nProposal(13, 2) +acceptor1 -> learner1:Accept \nProposal(13, 2) + + +acceptor2 - -> proposer2:Accept \nProposal(13, 2) +acceptor2 -> learner1:Accept \nProposal(13, 2) + +learner1 -> learner1:chosen \nProposal(13, 2) + +@enduml + +PlantUML version 1.2019.01(Sun Feb 10 00:32:04 JST 2019) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Java Version: 11.0.1+13 +Operating System: Mac OS X +OS Version: 10.13.6 +Default Encoding: UTF-8 +Language: ja +Country: JP +--></g></svg> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos3.pu Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,112 @@ +@startuml +title Paxos 3 +/' ======= style ======= '/ + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + +/' ======= node name ======= '/ + +/' === proposers === '/ +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +/' === acceptors === '/ +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +/' === learners === '/ +participant learner1 +activate learner1 + +/' ======= uml ======= '/ + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Success\n\ +Proposal(7, 1) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + +proposer1 -> acceptor3:Accept Request \n\ +Proposal(7, 1) +acceptor3 --> proposer1: Accept \n\ +Proposal(7,1) +acceptor3 -> learner1:Accept \n\ +Proposal(7, 1) + + +proposer2 -> acceptor1:Prepare request \n\ +Proposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 --> proposer2:Promise Success\n\ +Proposal(8, 2) +acceptor2 --> proposer2 +acceptor3 --> proposer2:Promise Success \n\ +But Accepted \n\ +Proposal(7, 1) + +proposer1 -> acceptor1:Accept request \n\ +Proposal(7, 1) +proposer1 -> acceptor2 + +acceptor1 --> proposer1:Accept Fail\n\ +Promised \n\ +Proposal(8, 2) +acceptor2 --> proposer1 + + +proposer1 -> acceptor1:Prepare request \n\ +Proposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Promise Success\n\ +Proposal(13, 1) +acceptor2 --> proposer1 +acceptor3 --> proposer1 + + +proposer1 -> acceptor1:Accept request \n\ +Proposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 --> proposer1:Accept \n\ +Proposal(13, 1) +acceptor1 -> learner1:Accept \n\ +Proposal(13, 1) + +acceptor2 --> proposer1:Accept \n\ +Proposal(13, 1) +acceptor2 -> learner1:Accept \n\ +Proposal(13, 1) + + + +acceptor3 --> proposer1:Accept \n\ +Proposal(13, 1) +acceptor3 -> learner1:Accept \n\ +Proposal(13, 1) + +learner1 -> learner1:chosen \n\ +Proposal(13, 1) + +@enduml \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/images/paxos3.svg Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,97 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="1275px" preserveAspectRatio="none" style="width:872px;height:1275px;" version="1.1" viewBox="0 0 872 1275" width="872px" zoomAndPan="magnify"><defs><filter height="300%" id="f1jrqdh23d0xyz" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="56" x="409.5" y="23.5352">Paxos 3</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="73" x2="73" y1="68.9766" y2="1235.0195"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="213" x2="213" y1="68.9766" y2="1235.0195"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="351" x2="351" y1="68.9766" y2="1235.0195"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="487" x2="487" y1="68.9766" y2="1235.0195"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="623" x2="623" y1="68.9766" y2="1235.0195"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="754" x2="754" y1="68.9766" y2="1235.0195"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="54.0234">proposer1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="28" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="35" y="1254.5547">proposer1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="54.0234">proposer2</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="86" x="168" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="72" x="175" y="1254.5547">proposer2</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="54.0234">acceptor1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="308" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="315" y="1254.5547">acceptor1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="54.0234">acceptor2</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="444" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="451" y="1254.5547">acceptor2</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="54.0234">acceptor3</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="82" x="580" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="68" x="587" y="1254.5547">acceptor3</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="33.4883"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="54.0234">learner1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="30.4883" style="stroke: #000000; stroke-width: 1.5;" width="72" x="716" y="1234.0195"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="58" x="723" y="1254.5547">learner1</text><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="68" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="208" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="346" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="482" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="618" y="78.9766"/><rect fill="#FFFFFF" filter="url(#f1jrqdh23d0xyz)" height="1147.043" style="stroke: #000000; stroke-width: 1.0;" width="10" x="749" y="78.9766"/><polygon fill="#000000" points="334,111.5977,344,115.5977,334,119.5977,338,115.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="115.5977" y2="115.5977"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="95.5449">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="110.8555">Proposal(7, 1)</text><polygon fill="#000000" points="470,125.5977,480,129.5977,470,133.5977,474,129.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="129.5977" y2="129.5977"/><polygon fill="#000000" points="606,139.5977,616,143.5977,606,147.5977,610,143.5977" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="143.5977" y2="143.5977"/><polygon fill="#000000" points="89,184.2188,79,188.2188,89,192.2188,85,188.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="188.2188" y2="188.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="168.166">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="183.4766">Proposal(7, 1)</text><polygon fill="#000000" points="89,198.2188,79,202.2188,89,206.2188,85,202.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="202.2188" y2="202.2188"/><polygon fill="#000000" points="89,212.2188,79,216.2188,89,220.2188,85,216.2188" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="216.2188" y2="216.2188"/><polygon fill="#000000" points="606,256.8398,616,260.8398,606,264.8398,610,260.8398" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="260.8398" y2="260.8398"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="240.7871">Accept Request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="256.0977">Proposal(7, 1)</text><polygon fill="#000000" points="89,301.4609,79,305.4609,89,309.4609,85,305.4609" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="305.4609" y2="305.4609"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="95" y="285.4082">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="95" y="300.7188">Proposal(7,1)</text><polygon fill="#000000" points="737,346.082,747,350.082,737,354.082,741,350.082" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="628" x2="743" y1="350.082" y2="350.082"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="635" y="330.0293">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="635" y="345.3398">Proposal(7, 1)</text><polygon fill="#000000" points="334,390.7031,344,394.7031,334,398.7031,338,394.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="340" y1="394.7031" y2="394.7031"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="225" y="374.6504">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="225" y="389.9609">Proposal(8, 2)</text><polygon fill="#000000" points="470,404.7031,480,408.7031,470,412.7031,474,408.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="476" y1="408.7031" y2="408.7031"/><polygon fill="#000000" points="606,418.7031,616,422.7031,606,426.7031,610,422.7031" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="218" x2="612" y1="422.7031" y2="422.7031"/><polygon fill="#000000" points="229,463.3242,219,467.3242,229,471.3242,225,467.3242" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="345" y1="467.3242" y2="467.3242"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="235" y="447.2715">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="462.582">Proposal(8, 2)</text><polygon fill="#000000" points="229,477.3242,219,481.3242,229,485.3242,225,481.3242" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="481" y1="481.3242" y2="481.3242"/><polygon fill="#000000" points="229,537.2559,219,541.2559,229,545.2559,225,541.2559" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="223" x2="617" y1="541.2559" y2="541.2559"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="235" y="505.8926">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="235" y="521.2031">But Accepted</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="235" y="536.5137">Proposal(7, 1)</text><polygon fill="#000000" points="334,581.877,344,585.877,334,589.877,338,585.877" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="585.877" y2="585.877"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="565.8242">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="85" y="581.1348">Proposal(7, 1)</text><polygon fill="#000000" points="470,595.877,480,599.877,470,603.877,474,599.877" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="599.877" y2="599.877"/><polygon fill="#000000" points="89,655.8086,79,659.8086,89,663.8086,85,659.8086" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="659.8086" y2="659.8086"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="69" x="95" y="624.4453">Accept Fail</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="95" y="639.7559">Promised</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="86" x="95" y="655.0664">Proposal(8, 2)</text><polygon fill="#000000" points="89,669.8086,79,673.8086,89,677.8086,85,673.8086" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="673.8086" y2="673.8086"/><polygon fill="#000000" points="334,714.4297,344,718.4297,334,722.4297,338,718.4297" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="718.4297" y2="718.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="97" x="85" y="698.377">Prepare request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="713.6875">Proposal(13, 1)</text><polygon fill="#000000" points="470,728.4297,480,732.4297,470,736.4297,474,732.4297" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="732.4297" y2="732.4297"/><polygon fill="#000000" points="606,742.4297,616,746.4297,606,750.4297,610,746.4297" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="746.4297" y2="746.4297"/><polygon fill="#000000" points="89,787.0508,79,791.0508,89,795.0508,85,791.0508" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="791.0508" y2="791.0508"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="104" x="95" y="770.998">Promise Success</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="786.3086">Proposal(13, 1)</text><polygon fill="#000000" points="89,801.0508,79,805.0508,89,809.0508,85,805.0508" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="805.0508" y2="805.0508"/><polygon fill="#000000" points="89,815.0508,79,819.0508,89,823.0508,85,819.0508" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="819.0508" y2="819.0508"/><polygon fill="#000000" points="334,859.6719,344,863.6719,334,867.6719,338,863.6719" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="340" y1="863.6719" y2="863.6719"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="843.6191">Accept request</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="85" y="858.9297">Proposal(13, 1)</text><polygon fill="#000000" points="470,873.6719,480,877.6719,470,881.6719,474,877.6719" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="476" y1="877.6719" y2="877.6719"/><polygon fill="#000000" points="606,887.6719,616,891.6719,606,895.6719,610,891.6719" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="78" x2="612" y1="891.6719" y2="891.6719"/><polygon fill="#000000" points="89,932.293,79,936.293,89,940.293,85,936.293" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="345" y1="936.293" y2="936.293"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="95" y="916.2402">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="931.5508">Proposal(13, 1)</text><polygon fill="#000000" points="737,976.9141,747,980.9141,737,984.9141,741,980.9141" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="356" x2="743" y1="980.9141" y2="980.9141"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="363" y="960.8613">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="363" y="976.1719">Proposal(13, 1)</text><polygon fill="#000000" points="89,1021.5352,79,1025.5352,89,1029.5352,85,1025.5352" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="481" y1="1025.5352" y2="1025.5352"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="95" y="1005.4824">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="1020.793">Proposal(13, 1)</text><polygon fill="#000000" points="737,1066.1563,747,1070.1563,737,1074.1563,741,1070.1563" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="492" x2="743" y1="1070.1563" y2="1070.1563"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="499" y="1050.1035">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="499" y="1065.4141">Proposal(13, 1)</text><polygon fill="#000000" points="89,1110.7773,79,1114.7773,89,1118.7773,85,1114.7773" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="83" x2="617" y1="1114.7773" y2="1114.7773"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="95" y="1094.7246">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="95" y="1110.0352">Proposal(13, 1)</text><polygon fill="#000000" points="737,1155.3984,747,1159.3984,737,1163.3984,741,1159.3984" style="stroke: #000000; stroke-width: 1.0;"/><line style="stroke: #000000; stroke-width: 1.0;" x1="628" x2="743" y1="1159.3984" y2="1159.3984"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="635" y="1139.3457">Accept</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="635" y="1154.6563">Proposal(13, 1)</text><line style="stroke: #000000; stroke-width: 1.0;" x1="759" x2="801" y1="1204.0195" y2="1204.0195"/><line style="stroke: #000000; stroke-width: 1.0;" x1="801" x2="801" y1="1204.0195" y2="1217.0195"/><line style="stroke: #000000; stroke-width: 1.0;" x1="760" x2="801" y1="1217.0195" y2="1217.0195"/><polygon fill="#000000" points="770,1213.0195,760,1217.0195,770,1221.0195,766,1217.0195" style="stroke: #000000; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="45" x="766" y="1183.9668">chosen</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="766" y="1199.2773">Proposal(13, 1)</text><!-- +@startuml +title Paxos 3 + +skinparam sequence { +ArrowColor black +LifeLineBorderColor black + +ParticipantBorderColor black +ParticipantBackgroundColor white +ParticipantPadding 20 +} + + +participant proposer1 +activate proposer1 +participant proposer2 +activate proposer2 + +participant acceptor1 +activate acceptor1 +participant acceptor2 +activate acceptor2 +participant acceptor3 +activate acceptor3 + +participant learner1 +activate learner1 + + +proposer1 -> acceptor1:Prepare request \nProposal(7, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer1:Promise Success\nProposal(7, 1) +acceptor2 - -> proposer1 +acceptor3 - -> proposer1 + +proposer1 -> acceptor3:Accept Request \nProposal(7, 1) +acceptor3 - -> proposer1: Accept \nProposal(7,1) +acceptor3 -> learner1:Accept \nProposal(7, 1) + + +proposer2 -> acceptor1:Prepare request \nProposal(8, 2) +proposer2 -> acceptor2 +proposer2 -> acceptor3 + +acceptor1 - -> proposer2:Promise Success\nProposal(8, 2) +acceptor2 - -> proposer2 +acceptor3 - -> proposer2:Promise Success \nBut Accepted \nProposal(7, 1) + +proposer1 -> acceptor1:Accept request \nProposal(7, 1) +proposer1 -> acceptor2 + +acceptor1 - -> proposer1:Accept Fail\nPromised \nProposal(8, 2) +acceptor2 - -> proposer1 + + +proposer1 -> acceptor1:Prepare request \nProposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer1:Promise Success\nProposal(13, 1) +acceptor2 - -> proposer1 +acceptor3 - -> proposer1 + + +proposer1 -> acceptor1:Accept request \nProposal(13, 1) +proposer1 -> acceptor2 +proposer1 -> acceptor3 + +acceptor1 - -> proposer1:Accept \nProposal(13, 1) +acceptor1 -> learner1:Accept \nProposal(13, 1) + +acceptor2 - -> proposer1:Accept \nProposal(13, 1) +acceptor2 -> learner1:Accept \nProposal(13, 1) + + + +acceptor3 - -> proposer1:Accept \nProposal(13, 1) +acceptor3 -> learner1:Accept \nProposal(13, 1) + +learner1 -> learner1:chosen \nProposal(13, 1) + +@enduml + +PlantUML version 1.2019.01(Sun Feb 10 00:32:04 JST 2019) +(GPL source distribution) +Java Runtime: OpenJDK Runtime Environment +JVM: OpenJDK 64-Bit Server VM +Java Version: 11.0.1+13 +Operating System: Mac OS X +OS Version: 10.13.6 +Default Encoding: UTF-8 +Language: ja +Country: JP +--></g></svg> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/pic/picins.sty Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,578 @@ +% PICINS.STY --- Style File zum Einbinden von Bildern +% Autor: J. Bleser, E. Lang +% Hochschulrechenzentrum +% Technische Hochschule Darmstadt +% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!! +% !!! Aenderungen nur mit Zustimmung der Autoren !!! +\message{Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ} +\newbox\@BILD% +\newbox\@TEXT% +\newdimen\d@breite% +\newdimen\d@hoehe% +\newdimen\d@xoff% +\newdimen\d@yoff% +\newdimen\d@shad% +\newdimen\d@dash% +\newdimen\d@boxl% +\newdimen\d@pichskip% +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@% +\newdimen\p@getot@l% +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen% +\newcount\@changemode% +\newcount\c@piccaption% +\newcount\c@piccaptionpos% +\newcount\c@picpos +\newcount\c@whole% +\newcount\c@half% +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse% +\newif\if@offset% + + +\c@piccaptionpos=1% +\c@picpos=0 +\d@shad=4pt% +\d@dash=4pt% +\d@boxl=10pt% +\d@pichskip=1em% +\@changemode=0% +\def\@captype{figure}% +\let\old@par=\par% + +\def\pichskip#1{\d@pichskip #1\relax} + + +\def\shadowthickness#1{\d@shad #1\relax} + + +\def\dashlength#1{\d@dash #1\relax} + + +\def\boxlength#1{\d@boxl #1\relax} + + +\def\picchangemode{\@changemode=1}% +\def\nopicchangemode{\@changemode=0}% + + +\def\piccaptionoutside{\c@piccaptionpos=1}% +\def\piccaptioninside{\c@piccaptionpos=2}% +\def\piccaptionside{\c@piccaptionpos=3}% +\def\piccaptiontopside{\c@piccaptionpos=4}% + +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite% + \ifnum\c@piccaptionpos=2% + \advance\hsiz@ -2\fboxsep% + \fi% + \ifnum\c@piccaptionpos>2% + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip% + \fi% + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} + + + +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par% + \addcontentsline{\csname ext@#1\endcsname }{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}} + \begingroup\@parboxrestore\normalsize% + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par% + \endgroup% +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} + + + + + +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} + + + + +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal% + \old@par% + \ptotii\pagetotal% + \ifdim\ptoti=\ptotii% + \d@tmp\d@hoehe% + \else% + \d@tmp\baselineskip% + \multiply\d@tmp by\prevgraf% + \advance\d@tmp by\parskip% + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe% + \fi% + \ifdim\d@hoehe>0pt% + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1% + \c@zeilen=\the\c@zeilen% + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite% + \else\let\par=\old@par% + \hangindent 0pt% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% + \fi% +} + + +\def\picskip#1{% + \let\par=\old@par% + \par% + \pagetotal\the\pagetotal% + \c@tmp=#1\relax% + \ifnum\c@tmp=0% + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip% + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \ifdim\p@getot@l=\pagetotal% + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \else\hangafter=-\c@tmp\hangindent=\d@breite% + \fi% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% +} + + + + + + +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)} +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}% + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)} +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]} +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} + + + + + + +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} + + +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} + + +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} + + + + + +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb + +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + + +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} + + +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/pic/sample_code/TextFrame.java Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,34 @@ + textArea.getDocument().addDocumentListener(new MyDocumentListener()); + + class MyDocumentListener implements DocumentListener { + + public void insertUpdate(DocumentEvent e) { + Document doc = (Document)e.getDocument(); + int loc = e.getOffset(); + System.out.print("location = " + loc + "\n"); + try { + System.out.print("string = "+ doc.getText(loc, 1) + "\n"); + } catch (BadLocationException e1) { + e1.printStackTrace(); + } + } + + @Override + public void removeUpdate(DocumentEvent e) { + Document doc = (Document)e.getDocument(); + int loc = e.getOffset(); + int e_length = e.getLength(); + int del_loc_end = loc + e_length - 1; + if(e_length == 1) { + System.out.print("delete " + loc + "\n"); + }else{ + System.out.print("delete " + loc + " to " + del_loc_end + "\n"); + } + } + + @Override + public void changedUpdate(DocumentEvent e) { + } + + + }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/pic/sample_code/cbc_example.cbc Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,14 @@ +int main (){ + int data = 0; + goto cg1(&data); +} + +__code cg1(int *datap){ + (*datap)++; + goto cg2(datap); +} + +__code cg2(int *datap){ + (*datap)++; + printf("%d\n",*datap); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/picins.sty Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,578 @@ +% PICINS.STY --- Style File zum Einbinden von Bildern +% Autor: J. Bleser, E. Lang +% Hochschulrechenzentrum +% Technische Hochschule Darmstadt +% !!! Dieses Style-File ist urheberrechtlich geschuetzt !!! +% !!! Aenderungen nur mit Zustimmung der Autoren !!! +\message{Option `picins' Version 3.0 Sep. 1992, TH Darmstadt/HRZ} +\newbox\@BILD% +\newbox\@TEXT% +\newdimen\d@breite% +\newdimen\d@hoehe% +\newdimen\d@xoff% +\newdimen\d@yoff% +\newdimen\d@shad% +\newdimen\d@dash% +\newdimen\d@boxl% +\newdimen\d@pichskip% +\newdimen\d@tmp +\newdimen\d@tmpa +\newdimen\d@bskip +\newdimen\hsiz@% +\newdimen\p@getot@l% +\newcount\c@breite +\newcount\c@hoehe +\newcount\c@xoff +\newcount\c@yoff +\newcount\c@pos +\newcount\c@shad +\newcount\c@dash +\newcount\c@boxl +\newcount\c@zeilen% +\newcount\@changemode% +\newcount\c@piccaption% +\newcount\c@piccaptionpos% +\newcount\c@picpos +\newcount\c@whole% +\newcount\c@half% +\newcount\c@tmp +\newcount\c@tmpa +\newcount\c@tmpb +\newcount\c@tmpc +\newcount\c@tmpd +\newskip\d@leftskip +\newif\if@list \@listfalse% +\newif\if@offset% + + +\c@piccaptionpos=1% +\c@picpos=0 +\d@shad=4pt% +\d@dash=4pt% +\d@boxl=10pt% +\d@pichskip=1em% +\@changemode=0% +\def\@captype{figure}% +\let\old@par=\par% + +\def\pichskip#1{\d@pichskip #1\relax} + + +\def\shadowthickness#1{\d@shad #1\relax} + + +\def\dashlength#1{\d@dash #1\relax} + + +\def\boxlength#1{\d@boxl #1\relax} + + +\def\picchangemode{\@changemode=1}% +\def\nopicchangemode{\@changemode=0}% + + +\def\piccaptionoutside{\c@piccaptionpos=1}% +\def\piccaptioninside{\c@piccaptionpos=2}% +\def\piccaptionside{\c@piccaptionpos=3}% +\def\piccaptiontopside{\c@piccaptionpos=4}% + +\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}} +\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}} +\def\make@piccaption{% + \hsiz@\d@breite% + \ifnum\c@piccaptionpos=2% + \advance\hsiz@ -2\fboxsep% + \fi% + \ifnum\c@piccaptionpos>2% + \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip% + \fi% + \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}% +} + + + +\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}} +\long\def\@newcaption#1[#2]#3{% + \old@par% + \addcontentsline{\csname ext@#1\endcsname }{#1}% + {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}} + \begingroup\@parboxrestore\normalsize% + \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par% + \endgroup% +} +\long\def\@newmakecaption#1#2{% + \vskip 10pt% + \setbox\@tempboxa \hbox {#1: #2}% + \ifdim \wd\@tempboxa >\hsize% + \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0 + \setbox1=\vtop{\hsize=\dimen0 #2} + \hbox{\box0 \box1} + \par + \else \hbox to\hsize {\hfil \box \@tempboxa \hfil} + \fi +} + + + + + +\def\parpic{% + \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)} +} +\def\iparpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}% + {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)} +} +\def\iiparpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]} +} +\def\iiiparpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{% + \let\par=\old@par\par% + \hangindent0pt\hangafter1% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \multiply\c@piccaption\c@piccaptionpos% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=1\unitlength1pt% + \if@offset% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \ifnum\c@piccaption=2% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}% + \hbox{\hspace{\fboxsep}\box\@TEXT}% + \vspace{4pt}}% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa l\c@pos=1\fi% + \if\@tempa r\c@pos=2\fi% + }% + \ifnum\c@piccaption=1% + \make@piccaption% + \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}% + \fi% + \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi% + \pagetotal=\the\pagetotal% + \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip% + \ifdim\d@hoehe>\d@tmp% + \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax% + \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi% + \fi% + \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi% + \ifnum\@listdepth>0 + \@listtrue\parshape 0% + \advance\hsize -\rightmargin% + \d@leftskip \leftskip% + \leftskip \@totalleftmargin% + \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi% + \else\@listfalse\medskip% + \fi% + \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi% + \ifnum\c@piccaption=3% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \ifdim\d@hoehe>\d@tmp% + \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}% + \else% + \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}% + \d@hoehe\d@tmp% + \fi% + \fi% + \ifnum\c@piccaption=4% + \make@piccaption% + \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT% + \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}% + \advance\d@hoehe-\d@tmp% + \fi% + \ifnum\c@pos=1\d@tmpa=0pt% + \ifnum\c@piccaption>2% + \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}% + \fi% + \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite% + \ifnum\c@piccaption>2% + \d@tmpa=0pt% + \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}% + \fi% + \fi% + \p@getot@l\the\pagetotal% + \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip% + {\noindent\hspace*{\d@tmpa}\relax% + \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}% + \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip% + \c@zeilen=\d@tmp\advance\c@zeilen by-1% + \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip% + \else\advance\d@breite by\d@pichskip% + \fi% + \hangindent=\d@breite% + \hangafter=\c@zeilen% + \let\par=\x@par% + \ifnum\c@piccaption=3% + \hangindent0pt\hangafter1\let\par=\old@par% + \vskip\d@hoehe\vskip.2\baselineskip% + \fi% + \c@piccaption=0% +} + + + + +\newdimen\ptoti +\newdimen\ptotii +\def\x@par{% + \ptoti\pagetotal% + \old@par% + \ptotii\pagetotal% + \ifdim\ptoti=\ptotii% + \d@tmp\d@hoehe% + \else% + \d@tmp\baselineskip% + \multiply\d@tmp by\prevgraf% + \advance\d@tmp by\parskip% + \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe% + \fi% + \ifdim\d@hoehe>0pt% + \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1% + \c@zeilen=\the\c@zeilen% + \else\c@zeilen=0 + \fi + \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite% + \else\let\par=\old@par% + \hangindent 0pt% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% + \fi% +} + + +\def\picskip#1{% + \let\par=\old@par% + \par% + \pagetotal\the\pagetotal% + \c@tmp=#1\relax% + \ifnum\c@tmp=0% + \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip% + \ifdim\p@getot@l<\pagetotal + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \ifdim\p@getot@l=\pagetotal% + \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex% + \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi% + \fi% + \else\hangafter=-\c@tmp\hangindent=\d@breite% + \fi% + \leftskip \d@leftskip% + \if@list\parshape \@ne \@totalleftmargin \linewidth% + \advance\hsize \rightmargin% + \fi% +} + + + + + + +\def\hpic{% + \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)} +} +\def\ihpic(#1,#2){% + \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}% + {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)} +} +\def\iihpic(#1,#2)(#3,#4){% + \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]} +} +\def\iiihpic(#1,#2)(#3,#4)[#5]{% + \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]} +} +\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{% + \setbox\@BILD=\hbox{#7}% + \d@breite=#1\d@breite=\the\d@breite% + \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi% + \c@breite=\d@breite\divide\c@breite by65536% + \d@hoehe=#2\d@hoehe=\the\d@hoehe% + \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi% + \c@hoehe=\d@hoehe\divide\c@hoehe by65536% + \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536% + \d@yoff=\d@hoehe% + \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536% + \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt% + \if@offset + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe){}}% + \put(\c@xoff,\c@yoff){\box\@BILD}% + \end{picture}% + }% + \else% + \setbox\@BILD=\hbox{% + \begin{picture}(\c@breite,\c@hoehe)% + \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}% + \end{picture}% + }% + \fi% + \@tfor\@tempa := #5\do{% + \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi% + \if\@tempa t\c@pos=1\fi% + \if\@tempa b\c@pos=2\fi% + }% + \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi% + \parindent=\d@tmpa% +} + + + + + + +\def\Rahmen(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole% + \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Schatten(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@shad=\d@shad\divide\c@shad by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp% + \advance\c@tmp by\c@shad% + \advance\c@tmpd by#1% + \advance\c@half by\c@shad% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@whole,\c@half){\framebox(#1,#2){#3}}% + \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}% + \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad% + \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad% +} + + +\def\Oval(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@tmpa=\the#1\divide\c@tmpa by2% + \c@tmpb=\the#2\divide\c@tmpb by2% + \begin{picture}(#1,#2)% + \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}% + \put(0.4,0.4){#3}% + \end{picture}% + \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt% +} + + +\def\Strich(#1,#2)#3{% + \c@whole=\@wholewidth\divide\c@whole by65536% + \c@half=\@halfwidth\divide\c@half by65536% + \c@dash=\d@dash\divide\c@dash by65536% + \c@tmp=\c@whole\advance\c@tmp by\c@whole% + \c@tmpa=#1\advance\c@tmpa by\c@tmp% + \c@tmpb=#2\advance\c@tmpb by\c@tmp% + \c@tmpc=#1\advance\c@tmpc by\c@whole% + \c@tmpd=#2\advance\c@tmpd by\c@whole% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}% + \end{picture}% + \global\advance\d@breite by2\@wholewidth% + \global\advance\d@hoehe by2\@wholewidth% +} + + +\def\Kasten(#1,#2)#3{% + \@wholewidth=0.4pt% + \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl% + \c@tmpa=#1\advance\c@tmpa by\c@boxl% + \c@tmpb=#2\advance\c@tmpb by\c@boxl% + \c@tmp=#2% + \begin{picture}(\c@tmpa,\c@tmpb)% + \put(0,\c@boxl){\framebox(#1,#2){#3}}% + \put(\c@boxl,0){\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}% + \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}% + \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}% + \end{picture}% + \global\advance\d@breite by\d@boxl% + \global\advance\d@hoehe by\d@boxl% +} + + + + + +\newbox\env@box% +\newdimen\d@envdp +\newcount\c@hsize +\newcount\c@envdp +\newdimen\d@envb + +\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}} +\long\def\@frameenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endframeenv{% + \egroup% + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \vskip\@wholewidth% + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + + +\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}} +\long\def\@shadowenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth + \advance\textwidth by-2\fboxsep + \advance\textwidth by-\d@shad% + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\def\endshadowenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \d@tmpa=\d@envb + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth \advance\d@envb by-\d@shad + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp + \advance\d@hoehe by2\@wholewidth \advance\d@hoehe by\d@shad + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@shad =\d@shad \divide\c@shad by65536 + \c@tmp=\@wholewidth \divide\c@tmp by65536 + \advance\d@tmpa by-2\d@shad + \c@xoff =\d@tmpa \divide\c@xoff by65536 + \advance\c@xoff by\c@shad \advance\c@xoff by-1 + \advance\d@envdp by\@wholewidth + \vskip\@halfwidth + \unitlength 1pt\noindent% + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}} + \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}% + \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}% + \end{picture}% + \vskip\@halfwidth +} + + +\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}} +\long\def\@dashenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-2\@wholewidth \advance\textwidth by-2\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\enddashenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by2\fboxsep% + \advance\d@envdp by\@wholewidth + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@envdp=\d@envdp \divide\c@envdp by65536% + \c@dash=\d@dash \divide\c@dash by65536% + \c@whole=\@wholewidth \divide\c@whole by65536 + \c@half=\@halfwidth \divide\c@half by 65536 + \noindent\unitlength 1pt + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}} + \end{picture}% +} + + +\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}% +\long\def\@ovalenv[#1]{% + \hsiz@=\textwidth \textwidth=#1 \d@envb=#1 + \advance\textwidth by-4\fboxsep + \hsize=\textwidth \linewidth=\textwidth + \setbox\env@box=\vbox\bgroup}% +\long\def\endovalenv{% + \egroup + \hsize=\hsiz@ \textwidth=\hsiz@ \linewidth=\hsiz@ + \@wholewidth=0.4pt + \c@breite=\d@envb \divide\c@breite by65536 + \advance\d@envb by-2\@wholewidth + \c@hsize=\d@envb \divide\c@hsize by65536% + \d@envdp=\dp\env@box \advance\d@envdp by\ht\env@box% + \advance\d@envdp by4\fboxsep% + \c@envdp=\d@envdp \divide\c@envdp by65536% + \d@hoehe=\d@envdp \advance\d@hoehe by2\@wholewidth + \c@hoehe=\d@hoehe \divide\c@hoehe by65536 + \c@tmpa=\c@hsize \divide\c@tmpa by2% + \c@tmpb=\c@envdp \divide\c@tmpb by2% + \d@tmpa=2\fboxsep \advance\d@tmpa by\@wholewidth + \c@xoff=\d@tmpa \divide\c@xoff by65536% + \advance\d@tmpa by\dp\env@box + \c@yoff=\d@tmpa \divide\c@yoff by65536% + \unitlength 1pt\noindent + \begin{picture}(\c@breite,\c@hoehe)(0,0) + \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)} + \put(\c@xoff,\c@yoff){\box\env@box}% + \end{picture}% +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/final_pre/reference.bib Sat Feb 15 17:48:53 2020 +0900 @@ -0,0 +1,77 @@ +%% This BibTeX bibliography file was created using BibDesk. +%% http://bibdesk.sourceforge.net/ + +%% Created for 赤堀 貴一 at 2018-11-14 23:03:28 +0900 + + +%% Saved with string encoding Unicode (UTF-8) + + + +@misc{dfs, + Author = {河野 真治}, + Date-Added = {2018-11-14 13:43:20 +0000}, + Date-Modified = {2018-11-14 14:03:24 +0000}, + Howpublished = {IPSJ SIG Technical Report}, + Month = {May}, + Title = {分散フレームワークChristieと分散木構造データベースJungle}, + Year = {2018}} + +@article{cbc, + Author = {Kaito TOKKMORI and Shinji KONO}, + Date-Added = {2018-11-14 13:40:03 +0000}, + Date-Modified = {2018-11-14 13:40:03 +0000}, + Journal = {LOLA 2015}, + Month = {July}, + Title = {Implementing Continuation based language in LLVM and Clang}, + Year = 2015} + + + +@misc{christie, + Author = {照屋 のぞみ}, + Date-Added = {2018-11-14 13:36:55 +0000}, + Date-Modified = {2018-11-14 13:42:27 +0000}, + Month = {March}, + Title = {分散フレームワークChristieの設計}, + Year = {2018}, + Bdsk-File-1 = {YnBsaXN0MDDUAQIDBAUGJCVYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoKgHCBMUFRYaIVUkbnVsbNMJCgsMDxJXTlMua2V5c1pOUy5vYmplY3RzViRjbGFzc6INDoACgAOiEBGABIAFgAdccmVsYXRpdmVQYXRoWWFsaWFzRGF0YV8QNy4uLy4uL1BhcGVycy8yMDE4L25vem9taS1tYXN0ZXIvcGFwZXIvbm96b21pLW1hc3Rlci5wZGbSFwsYGVdOUy5kYXRhTxEBsAAAAAABsAACAAAMTWFjaW50b3NoIEhEAAAAAAAAAAAAAAAAAAAAAAAAAEJEAAH/////EW5vem9taS1tYXN0ZXIucGRmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAgAFAAAKIGN1AAAAAAAAAAAAAAAAAAVwYXBlcgAAAgBaLzpVc2VyczplMTU1NzUzOlNwZWNpYWxpemVkX3N1YmplY3Q6a29ubzpQYXBlcnM6MjAxODpub3pvbWktbWFzdGVyOnBhcGVyOm5vem9taS1tYXN0ZXIucGRmAA4AJAARAG4AbwB6AG8AbQBpAC0AbQBhAHMAdABlAHIALgBwAGQAZgAPABoADABNAGEAYwBpAG4AdABvAHMAaAAgAEgARAASAFhVc2Vycy9lMTU1NzUzL1NwZWNpYWxpemVkX3N1YmplY3Qva29uby9QYXBlcnMvMjAxOC9ub3pvbWktbWFzdGVyL3BhcGVyL25vem9taS1tYXN0ZXIucGRmABMAAS8AABUAAgAO//8AAIAG0hscHR5aJGNsYXNzbmFtZVgkY2xhc3Nlc11OU011dGFibGVEYXRhox0fIFZOU0RhdGFYTlNPYmplY3TSGxwiI1xOU0RpY3Rpb25hcnmiIiBfEA9OU0tleWVkQXJjaGl2ZXLRJidUcm9vdIABAAgAEQAaACMALQAyADcAQABGAE0AVQBgAGcAagBsAG4AcQBzAHUAdwCEAI4AyADNANUCiQKLApACmwKkArICtgK9AsYCywLYAtsC7QLwAvUAAAAAAAACAQAAAAAAAAAoAAAAAAAAAAAAAAAAAAAC9w==}} + +@misc{rep, + Author = {安村 恭一}, + Date-Added = {2019-10-18 13:43:20 +0000}, + Date-Modified = {2018-11-18 14:03:24 +0000}, + Month = {Merch}, + Title = {巡回トークンを用いた複数人テキスト編集とセッション管理}, + Year = {2004}} + +@misc{myg, + Author = {宮城 健太}, + Date-Added = {2019-10-22 13:43:20 +0000}, + Date-Modified = {2018-11-14 14:03:24 +0000}, + Month = {Merch}, + Title = {Remote Editing Protocolの実装}, + Year = {2008}} + + +@misc{threadecodes, + title = {デザインパターン入門}, + author = {結城 浩}, + journal = {SBクリエイティブ株式会社}, + year = {2004}} +} + +@comment{BibDesk Static Groups{ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<array> + <dict> + <key>group name</key> + <string>Group</string> + <key>keys</key> + <string></string> + </dict> +</array> +</plist> +}}