Mercurial > hg > Papers > 2015 > nozomi-prosym
changeset 2:3c53c527d762
last fix of 1st version
author | Nozomi Teruya <e125769@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 10 Nov 2015 23:31:29 +0900 |
parents | 84254e949b77 |
children | 9994b9edfaff |
files | paper/.DS_Store paper/Makefile paper/dummy.tex paper/images/TreeVNC.pdf paper/images/TreeVNC.xbb paper/ipsjunsrt.bst paper/prosym.aux paper/prosym.bbl paper/prosym.bib paper/prosym.blg paper/prosym.dvi paper/prosym.log paper/prosym.pdf paper/prosym.tex paper/source/afterCompress.java paper/source/beforeCompress.java |
diffstat | 16 files changed, 1447 insertions(+), 204 deletions(-) [+] |
line wrap: on
line diff
--- a/paper/Makefile Tue Nov 10 19:37:47 2015 +0900 +++ b/paper/Makefile Tue Nov 10 23:31:29 2015 +0900 @@ -15,7 +15,7 @@ .tex.dvi: $(LATEX) $< - #$(BIBTEX) $(TARGET) + $(BIBTEX) $(TARGET) $(LATEX) $< $(LATEX) $<
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/dummy.tex Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,60 @@ +%%% jdummy.def +% +\DeclareRelationFont{JY1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{mc}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareRelationFont{JT1}{mc}{sl}{}{OT1}{cmr}{sl}{} +\DeclareFontShape{JY1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sl}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareRelationFont{JT1}{mc}{sc}{}{OT1}{cmr}{sc}{} +\DeclareFontShape{JY1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*min + <10.95><12><14.4><17.28><20.74><24.88> min10 + <-> min10}{} +\DeclareFontShape{JT1}{mc}{m}{sc}{<5> <6> <7> <8> <9> <10> sgen*tmin + <10.95><12><14.4><17.28><20.74><24.88> tmin10 + <-> tmin10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmbx}{it}{} +\DeclareFontShape{JY1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareRelationFont{JT1}{gt}{sl}{}{OT1}{cmbx}{sl}{} +\DeclareFontShape{JY1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sl}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareRelationFont{JT1}{gt}{sc}{}{OT1}{cmbx}{sc}{} +\DeclareFontShape{JY1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{mc}{bx}{sc}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\DeclareRelationFont{JY1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareRelationFont{JT1}{gt}{it}{}{OT1}{cmr}{it}{} +\DeclareFontShape{JY1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*goth + <10.95><12><14.4><17.28><20.74><24.88> goth10 + <-> goth10}{} +\DeclareFontShape{JT1}{gt}{m}{it}{<5> <6> <7> <8> <9> <10> sgen*tgoth + <10.95><12><14.4><17.28><20.74><24.88> tgoth10 + <-> tgoth10}{} +\endinput +%%%% end of jdummy.def
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/images/TreeVNC.xbb Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,8 @@ +%%Title: ./TreeVNC.pdf +%%Creator: extractbb 20130405 +%%BoundingBox: 20 276 527 712 +%%HiResBoundingBox: 19.828200 276.334500 527.055300 711.739600 +%%PDFVersion: 1.4 +%%Pages: 1 +%%CreationDate: Tue Nov 10 23:07:15 2015 +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/ipsjunsrt.bst Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,1135 @@ +% ipsjunsrt.bst 15-Jun-07 by Hiroshi Nakashima (ver 2.12) +% ipsjunsrt.bst 30-Jan-02 by Hiroshi Nakashima (ver 2.00) +% ipsjunsrt.bst 28-Dec-93 by Hiroshi Nakashima (ver 1.00) +% jssst.bst tomura@etl.go.jp (Satoru Tomura) +% BibTeX standard bibliography style `jplain' + % version 0.10 for JBibTeX versions 0.10 or later, JLaTeX version 2.09. + % by Shouichi Matsui, matsui@denken.junet + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + yomi + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +INTEGERS { before.year } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := + #4 'before.year := % 1.00(1) +} + +STRINGS { s t } + +FUNCTION {is.kanji} +{ is.kanji.str$ } % 1.00(2), 2.00(1) + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { duplicate$ is.kanji % 2.00(2) + { "," * write$ } + { ", " * write$ } + if$ + } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { output.state before.year = % 1.00(1) + { " " * write$ } + { add.period$ " " * write$ } + if$ + } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {required.argument} +{ 't := + empty$ + {"Missing required argument " t * " in " * cite$ * warning$} + 'skip$ + if$ +} + +FUNCTION {required.exclusive.or.argument} +{ 't := + empty$ + { 's := + empty$ + { t " or " * s * " is missing in " * cite$ * warning$} + 'skip$ + if$ + } + { 's := + empty$ + 'skip$ + { "You can use only one of " t * " and " * s * " in " * cite$ * warning$} + if$ + } + if$ +} + +FUNCTION {required.and.or.argument} +{ 't := empty$ + { 's := empty$ + { "there's no " t * " and/or " * s * cite$ * warning$ } + 'skip$ + if$ + } + { pop$ pop$ } + if$ +} + +FUNCTION {optional.series.volume.number.argument} +{ series empty$ + { volume empty$ + { number empty$ + 'skip$ + { "there's a number but no series in " cite$ * warning$ } + if$ + } + { number empty$ + { "there's a volume but no series in " cite$ * warning$ } + { "you can use only one of volume and number in " cite$ * warning$} + if$ + } + if$ + } + { volume empty$ + { number empty$ + { "there's a series but neither volume nor number in " cite$ * warning$ } + 'skip$ + if$ + } + { number empty$ + 'skip$ + { "you can use only one of volume and number in " cite$ * warning$ } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + before.all 'output.state := +} + +FUNCTION {fin.entry} +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { duplicate$ is.kanji + 'skip$ % 1.00(3) + { "{\em " swap$ * "}" * } % 2.00(3) + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} % 1.00(4), 2.00(4) +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff}{ll}" format.name$ duplicate$ is.kanji + { duplicate$ text.length$ #6 > + { 't := } + { pop$ s nameptr "{ff} {ll}" format.name$ 't := } + if$ + } + { pop$ s nameptr "{vv }{ll}{, jj}{, f.}" format.name$ 't := } + if$ + nameptr #1 > + { namesleft #1 > + { s is.kanji + { "," } + { ", " } + if$ + * t * } + { t "others" = + { s is.kanji + {"ほか" * } + {" et al." * } + if$ + } + { s is.kanji + {"," * t * } % put "," here for Kanji (H.N.) + {" and " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {add.colon} % 2.00(5) +{ duplicate$ is.kanji + { "\:" * } % 2.12(1) + { ": " * } + if$ +} + +FUNCTION {format.editors.inparen} % 2.00(6) +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {",編" * } {", eds." *} if$ + } + { editor is.kanji + {",編" *} {", ed." *} if$ + } + if$ + } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { editor is.kanji + {"(編)" * } {"(eds.)" *} if$ % 2.00(7) + } + { editor is.kanji + {"(編)" *} {"(ed.)" *} if$ % 2.00(7) + } + if$ + } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ before.year 'output.state := % 1.00(1) + year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + "" % 1.00(5) + } + if$ + } + { "(" year ")" * * } % 1.00(5) + if$ +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { "\ " } % 1.00(6) + if$ + swap$ * * +} + +FUNCTION {output.volume} +{ + volume empty$ + 'skip$ + { "Vol.~" volume * output} + if$ + +} + +FUNCTION {output.number} +{ + number empty$ + 'skip$ + { "No.~" number * output} + if$ +} + +FUNCTION {output.series.volume.number} +{ series empty$ + { output.volume + output.number } + { series is.kanji + volume empty$ + number empty$ + or + and + { series " " * volume * number * output} + { series output + output.volume + output.number} + if$ + } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} % 1.00(7) +{ pages empty$ + { "" } + { pages multi.page.check + { "pp." pages n.dashify tie.or.space.connect } + { "p." pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} % 1.00(8) +{ volume empty$ + { ""} + { " Vol.~" volume * } + if$ + number empty$ + 'skip$ + { volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + { "," *} + if$ + " No.~" number * * + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" chapter tie.or.space.connect } + { type is.kanji + { chapter type tie.or.space.connect } + { type "l" change.case$ chapter tie.or.space.connect } + if$ + } + if$ + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { booktitle emphasize + editor empty$ + 'skip$ + { booktitle is.kanji + { "(" * format.editors.inparen * ")" *} % 2.00(6,7) + { " (" * format.editors.inparen * ")" *} % 1.00(9), 2.00(6) + if$ + } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { title empty$ + { "Technical Report" } + { title is.kanji + { "技術報告" } + { "Technical Report" } + if$ + } + if$ + } + {type} + if$ + number empty$ + { "t" change.case$ } + { " " number * * } + if$ +} + +FUNCTION {format.article.crossref} % 2.00(8) +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { journal emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} % 1.00(11) +{ editor #1 + editor is.kanji { "{ff}" } { "{vv }{ll}" } if$ + format.name$ + editor num.names$ duplicate$ + #2 > + { editor is.kanji + {pop$ "ほか" *} {pop$ " et al." * } if$ + } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { editor is.kanji + {"ほか" *} {" et al." * } if$ + } + { editor is.kanji + {"・" * editor #2 "{ff}" format.name$ * } + {" and " * editor #2 "{vv }{ll}" format.name$ * } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { series emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * + volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ } + { duplicate$ is.kanji { "," } { ", "} if$ * + "Vol." * volume tie.or.space.connect + } + if$ +} + +FUNCTION {format.incoll.inproc.crossref} % 2.00(8) +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { booktitle emphasize } % 1.00(10) + if$ + } + { "In " key * } + if$ + } + { format.crossref.editor } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {article} +{ +%%%% + author "author" required.argument + title "title" required.argument + journal "journal" required.argument + year "year" required.argument +%%%% jssst + volume "volume" + number "number" + required.and.or.argument + pages "pages" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { journal emphasize output + format.vol.num.pages output % 1.00(12) + format.date output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + publisher "publisher" required.argument + year "year" required.argument + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + publisher output + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ +%%%% + author "author" + editor "editor" + required.exclusive.or.argument + title "title" required.argument + chapter "chapter" + pages "pages" + required.and.or.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + author empty$ + { format.editors} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + crossref missing$ + { output.series.volume.number + format.chapter.pages output + publisher output + } + { format.chapter.pages output + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date output % 1.00(13) + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ +%%%% + author "author" required.argument + title "title" required.argument + booktitle "booktitle" required.argument + publisher "publisher" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + output.series.volume.number + publisher output + address output + format.edition output + format.chapter.pages output % 1.00(13) + format.date output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ +%%%% + author "author" required.argument + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + crossref missing$ + { format.in.ed.booktitle output + booktitle "booktitle" required.argument + output.series.volume.number + address output + organization output + publisher output + format.pages output + format.date output % 1.00(13) + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ +%%%% + title "title" required.argument +%%%% jssst + author "author" + organization "organazaion" + required.exclusive.or.argument +%%%% + output.bibitem + author empty$ + { organization} + { format.authors} + if$ + add.colon % 2.00(5) + title emphasize output + author empty$ + 'skip$ + { organization output } + if$ + address output + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + author empty$ + { "Master's thesis" } + { author is.kanji + { "修士論文" } + { "Master's thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ +%%%% +%%%% jssst + author "author" required.argument + title "title" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + howpublished output + format.date output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ +%%%% + author "author" required.argument + title "title" required.argument + school "school" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output % 2.00(9) + author empty$ + { "PhD Thesis" } + { author is.kanji + { "博士論文" } + { "PhD Thesis" } + if$ + } + if$ + format.thesis.type output.nonnull + school output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ +%%%% + title "title" required.argument + year "year" required.argument + + optional.series.volume.number.argument +%%%% jssst + editor "editor" + organization "organization" + required.exclusive.or.argument +%%%% + output.bibitem + editor empty$ + { organization } + { format.editors } + if$ + add.colon % 2.00(5) + title emphasize output + output.series.volume.number + address output + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ +%%%% + author "author" required.argument + title "title" required.argument + institution "institution" required.argument + year "year" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.tr.number output.nonnull + institution output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ +%%%% + author "author" required.argument + title "title" required.argument + note "note" required.argument +%%%% + output.bibitem + format.authors add.colon % 2.00(5) + title output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} + +
--- a/paper/prosym.aux Tue Nov 10 19:37:47 2015 +0900 +++ b/paper/prosym.aux Tue Nov 10 23:31:29 2015 +0900 @@ -1,4 +1,5 @@ \relax +\citation{senkokenkyu} \citation{treeVNC} \newlabel{ipsj@firstpage}{{}{1}} \@writefile{toc}{\contentsline {section}{\numberline {1}\hskip 1zw{研究背景と目的}}{1}} @@ -6,8 +7,8 @@ \@writefile{toc}{\contentsline {subsection}{\numberline {2.1}{Code Segment と Data Segment}}{1}} \newlabel{fig:CS}{{1}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.2}{DataSegmentManager}}{2}} +\newlabel{fig:RemoteDSM}{{2}{2}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.3}{Data Segment API}}{2}} -\newlabel{fig:RemoteDSM}{{2}{2}} \citation{MessagePack} \@writefile{toc}{\contentsline {subsection}{\numberline {2.4}{Data Segmentの表現}}{3}} \@writefile{toc}{\contentsline {subsection}{\numberline {2.5}{Code Segmentの記述方法}}{3}} @@ -15,30 +16,33 @@ \@writefile{lol}{\contentsline {lstlisting}{\numberline {1}StartCodeSegmentの例}{3}} \newlabel{src:CodeSegment}{{2}{3}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {2}CodeSegmentの例}{3}} +\citation{Erlang} +\citation{tightVNC} \@writefile{toc}{\contentsline {section}{\numberline {3}\hskip 1zw{Meta Computation}}{4}} \@writefile{toc}{\contentsline {section}{\numberline {4}\hskip 1zw{AliceVNC}}{4}} -\citation{tightVNC} -\newlabel{fig:vnc}{{3}{5}} -\newlabel{fig:TreeVNC}{{4}{5}} +\newlabel{fig:TreeVNC}{{3}{5}} \@writefile{toc}{\contentsline {section}{\numberline {5}\hskip 1zw{Aliceの新機能}}{5}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.1}{転送機能}}{5}} \@writefile{toc}{\contentsline {subsection}{\numberline {5.2}{Data Segmentの表現の追加(圧縮機能)}}{5}} -\newlabel{src:ReceiveData}{{3}{6}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}データを表現するクラス}{6}} +\newlabel{src:ReceiveData}{{3}{5}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {3}データを表現するクラス}{5}} \newlabel{src:before}{{4}{6}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {4}通常のDSを扱うCSの例}{6}} -\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}{Aliceの通信プロトコルの変更}}{6}} -\newlabel{src:after}{{5}{7}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}圧縮したDSを扱うCSの例}{7}} +\newlabel{src:after}{{5}{6}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {5}圧縮したDSを扱うCSの例}{6}} +\citation{*} +\bibstyle{ipsjunsrt} +\bibdata{prosym} +\bibcite{senkokenkyu}{1} \newlabel{src:asClass}{{6}{7}} \@writefile{lol}{\contentsline {lstlisting}{\numberline {6}asClassの処理}{7}} -\@writefile{toc}{\contentsline {section}{\numberline {6}\hskip 1zw{まとめ}}{7}} +\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}{Aliceの通信プロトコルの変更}}{7}} +\newlabel{src:CommandMessage}{{7}{7}} +\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}CommandMessage}{7}} \newlabel{tb:variable}{{1}{7}} -\bibcite{treeVNC}{1} -\bibcite{MessagePack}{2} -\bibcite{senkokenkyu}{3} +\@writefile{toc}{\contentsline {section}{\numberline {6}\hskip 1zw{まとめ}}{7}} +\bibcite{treeVNC}{2} +\bibcite{MessagePack}{3} \bibcite{Erlang}{4} -\bibcite{hadoop}{5} -\newlabel{src:CommandMessage}{{7}{8}} -\@writefile{lol}{\contentsline {lstlisting}{\numberline {7}CommandMessage}{8}} +\bibcite{tightVNC}{5} \newlabel{ipsj@lastpage}{{}{8}}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/prosym.bbl Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,21 @@ +\begin{thebibliography}{1} + +\bibitem{senkokenkyu} +{Yu SUGIMOTO and Shinji KONO}: 分散フレームワークAlice上のMeta + Computationと応用,琉球大学工学部情報工学科平成26年度学位論文(修士) (2014). + +\bibitem{treeVNC} +{Miwa OSHIRO and Shinji KONO}: + 授業やゼミ向けの画面配信システムTreeVNCの拡張機能,琉球大学工学部情報工学科平成26年度学位論文(学士) + (2014). + +\bibitem{MessagePack} +: MessagePack, \url{http://msgpack.org/}. + +\bibitem{Erlang} +柏原正三\:プログラミング言語Erlang入門,アスキー (2007). + +\bibitem{tightVNC} +: {TightVNC Software}, \url{http://www.tightvnc.com}. + +\end{thebibliography}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/prosym.bib Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,30 @@ +@Misc{MessagePack, + title = "MessagePack", + howpublished = "\url{http://msgpack.org/}" +} + +@Misc{tightvnc, + title = "{TightVNC Software}", + howpublished = "\url{http://www.tightvnc.com}" +} + +@article{treeVNC, + author = "{Miwa OSHIRO and Shinji KONO}", + title = "授業やゼミ向けの画面配信システムTreeVNCの拡張機能", + journal = "琉球大学工学部情報工学科平成26年度学位論文(学士) ", + year = 2014 +} + +@article{senkokenkyu, + author = "{Yu SUGIMOTO and Shinji KONO}", + title = "分散フレームワークAlice上のMeta Computationと応用", + journal = "琉球大学工学部情報工学科平成26年度学位論文(修士) ", + year = 2014 +} + +@article{Erlang, + author = "柏原正三", + title = "プログラミング言語Erlang入門", + journal = "アスキー", + year = "2007" +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/paper/prosym.blg Tue Nov 10 23:31:29 2015 +0900 @@ -0,0 +1,56 @@ +This is pBibTeX, Version 0.99d-j0.33 (utf8.euc) (TeX Live 2013) +Capacity: max_strings=35307, hash_size=35307, hash_prime=30011 +The top-level auxiliary file: prosym.aux +The style file: ipsjunsrt.bst +Database file #1: prosym.bib +Warning--there's no number and/or volumesenkokenkyu +Warning--Missing required argument pages in senkokenkyu +Warning--there's no number and/or volumetreeVNC +Warning--Missing required argument pages in treeVNC +Warning--Missing required argument author in MessagePack +Warning--there's no number and/or volumeErlang +Warning--Missing required argument pages in Erlang +Warning--Missing required argument author in tightVNC +You've used 5 entries, + 2207 wiz_defined-function locations, + 554 strings with 4556 characters, +and the built_in function-call counts, 678 in all, are: += -- 37 +> -- 15 +< -- 0 ++ -- 8 +- -- 3 +* -- 48 +:= -- 102 +add.period$ -- 5 +call.type$ -- 5 +change.case$ -- 0 +chr.to.int$ -- 0 +cite$ -- 13 +duplicate$ -- 43 +empty$ -- 87 +format.name$ -- 5 +if$ -- 154 +int.to.chr$ -- 0 +int.to.str$ -- 5 +missing$ -- 3 +newline$ -- 18 +num.names$ -- 3 +pop$ -- 18 +preamble$ -- 1 +purify$ -- 0 +quote$ -- 0 +skip$ -- 36 +stack$ -- 0 +substring$ -- 0 +swap$ -- 0 +text.length$ -- 1 +text.prefix$ -- 0 +top$ -- 0 +type$ -- 0 +warning$ -- 8 +while$ -- 3 +width$ -- 6 +write$ -- 35 +is.kanji.str$ -- 16 +(There were 8 warnings)
--- a/paper/prosym.log Tue Nov 10 19:37:47 2015 +0900 +++ b/paper/prosym.log Tue Nov 10 23:31:29 2015 +0900 @@ -1,4 +1,4 @@ -This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 10 NOV 2015 19:07 +This is e-pTeX, Version 3.1415926-p3.4-110825-2.6 (utf8.euc) (TeX Live 2013) (format=platex 2014.4.14) 10 NOV 2015 23:28 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -114,26 +114,6 @@ \Gin@req@height=\dimen130 \Gin@req@width=\dimen131 ) - -! LaTeX Error: Option clash for package color. - -See the LaTeX manual or LaTeX Companion for explanation. -Type H <return> for immediate help. - ... - -l.8 \usepackage - {latexsym} -? -(/usr/local/texlive/2013/texmf-dist/tex/latex/base/latexsym.sty -Package: latexsym 1998/08/17 v2.2e Standard LaTeX package (lasy symbols) -\symlasy=\mathgroup4 -LaTeX Font Info: Overwriting symbol font `lasy' in version `bold' -(Font) U/lasy/m/n --> U/lasy/b/n on input line 47. -) -(/usr/local/texlive/2013/texmf-dist/tex/latex/url/url.sty -\Urlmuskip=\muskip10 -Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. -) (/usr/local/texlive/2013/texmf-dist/tex/latex/listings/listings.sty \lst@mode=\count102 \lst@gtempboxa=\box50 @@ -159,16 +139,14 @@ )) Package: listings 2007/02/22 1.4 (Carsten Heinz) +(/usr/local/texlive/2013/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip10 +Package: url 2006/04/12 ver 3.3 Verb mode for urls, etc. +) (/usr/local/texlive/2013/texmf-dist/tex/latex/listings/lstlang1.sty File: lstlang1.sty 2004/09/05 1.3 listings language file ) - -! LaTeX Error: File `dummy.tex' not found. - -Type X to quit or <RETURN> to proceed, -or enter new name. (Default extension: tex) - -Enter file name: +(./dummy.tex) LaTeX Warning: Unused global option(s): [techrep]. @@ -176,50 +154,46 @@ (./prosym.aux) \openout1 = `prosym.aux'. -LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. -LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 35. -LaTeX Font Info: ... okay on input line 35. +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. +LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 33. +LaTeX Font Info: ... okay on input line 33. \c@lstlisting=\count110 LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <8.8711> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 46. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 44. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <8.8711> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 46. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 44. LaTeX Font Info: Font shape `JT1/gt/bx/n' in size <19.2207> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 60. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 57. LaTeX Font Info: Font shape `JY1/gt/bx/n' in size <19.2207> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 60. -LaTeX Font Info: Calculating math sizes for size <9.61035> on input line 60. +(Font) Font shape `JY1/gt/m/n' tried instead on input line 57. +LaTeX Font Info: Calculating math sizes for size <9.61035> on input line 57. -LaTeX Font Info: Calculating math sizes for size <11.82813> on input line 60 +LaTeX Font Info: Calculating math sizes for size <11.82813> on input line 57 . -LaTeX Font Info: Calculating math sizes for size <8.13184> on input line 60. +LaTeX Font Info: Calculating math sizes for size <8.13184> on input line 57. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <11.82813> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 63. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 60. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <11.82813> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 63. - - -LaTeX Warning: Citation `treeVNC' on page 1 undefined on input line 72. - +(Font) Font shape `JY1/gt/m/n' tried instead on input line 60. LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <9.61035> not available -(Font) Font shape `JT1/gt/m/n' tried instead on input line 72. +(Font) Font shape `JT1/gt/m/n' tried instead on input line 76. LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <9.61035> not available -(Font) Font shape `JY1/gt/m/n' tried instead on input line 72. -[1 +(Font) Font shape `JY1/gt/m/n' tried instead on input line 76. + [1 ] @@ -231,29 +205,30 @@ (Font) Font shape `JY1/gt/m/n' tried instead on input line 86. File: images/remote_datasegment.pdf Graphic file (type pdf) <images/remote_datasegment.pdf> -Underfull \hbox (badness 10000) in paragraph at lines 114--115 + +LaTeX Warning: `h' float specifier changed to `ht'. + + +Underfull \hbox (badness 10000) in paragraph at lines 118--119 []\OT1/cmtt/m/n/9.61035 void put(String managerKey, String [] -[2] -Underfull \hbox (badness 10000) in paragraph at lines 118--119 + +Underfull \hbox (badness 10000) in paragraph at lines 122--123 []\OT1/cmtt/m/n/9.61035 void update(String managerKey, String [] -Underfull \hbox (badness 10000) in paragraph at lines 123--124 +Underfull \hbox (badness 10000) in paragraph at lines 127--128 []\OT1/cmtt/m/n/9.61035 void take(String managerKey, String [] -Underfull \hbox (badness 10000) in paragraph at lines 128--129 +Underfull \hbox (badness 10000) in paragraph at lines 132--133 []\OT1/cmtt/m/n/9.61035 void peek(String managerKey, String [] - -LaTeX Warning: Citation `MessagePack' on page 3 undefined on input line 134. - -(./source/StartCodeSegment.java +[2] (./source/StartCodeSegment.java LaTeX Font Info: Try loading font information for OMS+cmr on input line 1. (/usr/local/texlive/2013/texmf-dist/tex/latex/base/omscmr.fd @@ -263,25 +238,21 @@ (Font) Font shape `OMS/cmsy/m/n' tried instead on input line 1. ) (./source/TestCodeSegment.java) [3] -! Extra }, or forgotten \endgroup. -l.175 ...(CommandType.TAKE)}が行われ、{\tt }input} - が初期化される。 -? - -Overfull \hbox (24.42479pt too wide) in paragraph at lines 181--182 +Overfull \hbox (24.42479pt too wide) in paragraph at lines 185--186 []\OT1/cmtt/m/n/9.61035 void setKey(String managerKey, String key) [] -[4] - -LaTeX Warning: Citation `tightVNC' on page 5 undefined on input line 212. +File: images/TreeVNC.pdf Graphic file (type pdf) +<images/TreeVNC.pdf> +Overfull \hbox (21.64644pt too wide) in paragraph at lines 225--226 + [] + [] -File: images/vnc.pdf Graphic file (type pdf) -<images/vnc.pdf> -File: images/treestructure.pdf Graphic file (type pdf) - <images/treestructure.pdf> [5] (./source/ReceiveData.java) -(./source/beforeCompress.java) (./source/afterCompress.java) -(./source/asClass.java + +LaTeX Warning: `h' float specifier changed to `ht'. + +[4] (./source/ReceiveData.java) [5] (./source/beforeCompress.java) +(./source/afterCompress.java) (./source/asClass.java LaTeX Font Info: Try loading font information for OML+cmr on input line 1. (/usr/local/texlive/2013/texmf-dist/tex/latex/base/omlcmr.fd @@ -289,41 +260,24 @@ ) LaTeX Font Info: Font shape `OML/cmr/m/n' in size <8.8711> not available (Font) Font shape `OML/cmm/m/it' tried instead on input line 1. -) -Overfull \hbox (39.99373pt too wide) in paragraph at lines 309--332 +) [6] +(./source/CommandMessage.java) +Overfull \hbox (39.99373pt too wide) in paragraph at lines 311--334 [] [] -(./source/CommandMessage.java) [6] [7] -LaTeX Font Info: Calculating math sizes for size <8.8711> on input line 359. - - -! Undefined control sequence. -l.367 \bibtem - {tightVNC} -? - -Underfull \hbox (badness 10000) in paragraph at lines 367--369 -[]\OT1/cmr/m/n/8.8711 tightVNC TightVNC, - [] - -[8 +(./prosym.bbl +LaTeX Font Info: Calculating math sizes for size <8.8711> on input line 1. + [7]) [8 -] (./prosym.aux) - -LaTeX Warning: There were undefined references. - - -LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right. - - ) +] (./prosym.aux) ) Here is how much of TeX's memory you used: - 2974 strings out of 494008 - 41745 string characters out of 6154472 - 296557 words of memory out of 5000000 - 6400 multiletter control sequences out of 15000+600000 - 28787 words of font info for 127 fonts, out of 8000000 for 9000 + 2964 strings out of 494008 + 41587 string characters out of 6154472 + 254657 words of memory out of 5000000 + 6395 multiletter control sequences out of 15000+600000 + 27682 words of font info for 116 fonts, out of 8000000 for 9000 745 hyphenation exceptions out of 8191 30i,12n,40p,261b,1428s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on prosym.dvi (8 pages, 51068 bytes). +Output written on prosym.dvi (8 pages, 51408 bytes).
--- a/paper/prosym.tex Tue Nov 10 19:37:47 2015 +0900 +++ b/paper/prosym.tex Tue Nov 10 23:31:29 2015 +0900 @@ -4,10 +4,8 @@ %\documentclass[withpage,english]{ipsjprosym} \usepackage[dvipdfmx]{graphicx} -\usepackage[dvipdfmx]{color} -\usepackage{latexsym} +\usepackage{listings} \usepackage{url} -\usepackage{listings} \lstset{% language={Java},%使用言語 basicstyle={\small},%書体 @@ -45,16 +43,15 @@ \begin{abstract} 当研究室ではデータを Data Segment、タスクを Code Segment という単位で分割して記述する手法を提唱しており、 -それに基づく並列分散フレームワーク Alice を開発している。 -Aliceが分散プログラムを記述する能力を有することは、Aliceを用いた水族館の例題等で確認された。 -しかし、実用的な分散アプリケーションを作成するためには、通信時にData Segmentを圧縮形式で扱う機能やData Segmentを他ノードへそのまま転送する機能が必要な場合がある。 -本研究では、Alice上に実用的な分散アプリケーションの例題である画面共有システムTreeVNCを構築する。 -構築するにあたり必要となった圧縮などの機能を、AliceのMeta Computationとして実装する。 -そして Alice を使用していないTreeVNCとの比較を行うことでMeta Computationの役割と有効性を示す。 +それに基づく並列分散フレームワークAliceを開発している。 +Aliceが分散プログラムを記述する能力を有することは水族館の例題等において確認された。 +しかし、実用的な分散アプリケーションを構築するには圧縮形式で通信を行う機能等が必要であることが分かった。 +本研究では、 実用的なアプリケーションである画面共有システムTreeVNCをAliceで実装するにあたり必要となった圧縮機能等をMeta Computationとして実装した。 +データの多態性の実現により、扱うデータの形式を元のコードを大きく変更することなく指定することができ、ノード間通信における自由度の向上を図った。 \end{abstract} \begin{jkeyword} -プログラミング・シンポジウム,冬,予稿集 +プログラミング・シンポジウム,並列分散フレームワーク \end{jkeyword} \maketitle @@ -69,15 +66,18 @@ そして分散環境の構築に必要な処理をMeta Computationとして提供する。 プログラマはコアな仕様の変更を抑えつつプログラムの挙動変更ができるため、信頼性の高い分散アプリケーションの記述が可能となる。 -本研究では、 実用的なアプリケーションである画面共有システムTreeVNC \cite{treeVNC} をAliceで実装するにあたり必要となった圧縮機能等をMeta Computationとして実装した。 -データの多態性の実現により、扱うデータの形式を元のコードを大きく変更することなく指定することができ、ノード間通信における自由度の向上を図った。 +先行研究 \cite{senkokenkyu} の水族館の例題等において、Aliceが分散プログラムを記述する能力を有することは確認された。 +しかし、実用的な分散アプリケーションを作成するためには、通信時にData Segmentを圧縮形式で扱う機能やData Segmentを他ノードへそのまま転送する機能が必要な場合がある。 +本研究では、Alice上に実用的な分散アプリケーションの例題である画面共有システムTreeVNC \cite{treeVNC} を構築する。 +構築するにあたり必要となった圧縮などの機能を、AliceのMeta Computationとして実装する。 +そして Alice を使用していないTreeVNCとの比較を行うことでMeta Computationの役割と有効性を示す。 \section{分散フレームワークAliceの概要} \subsection{Code Segment と Data Segment} AliceではCode Segment(以下CS)とData Segment(以下DS)の依存関係を記述することでプログラミングを行う。 -CSは実行に必要なDSが全て揃うと実行される。CSを実行するために必要な入力DSはInputDS、CSが計算を行った後に出力されるDSはOutput DSと呼ばれる。データの依存関係にないCSは並列実行が可能である(図 \ref{fig:CS} )。 +CSは実行に必要なDSが全て揃うと実行される。CSを実行するために必要な入力DSはInputDS、CSが計算を行った後に出力されるDSはOutput DSと呼ばれる。 +データの依存関係にないCSは並列実行が可能である(図 \ref{fig:CS} )。 CSの実行においてDSが他のCSから変更を受けることはない。そのためAliceではデータが他から変更され整合性がとれなくなることはない。 -実際にはAliceはJavaで実装されており、DSはJavaObjectでCSはRannableThreadである。プログラマーがCSを記述する際は、CodeSegmentクラスを継承し、DSを操作するAPIを使用する。 \begin{figure}[htbp] \begin{center} @@ -87,8 +87,11 @@ \label{fig:CS} \end{figure} +実際にはAliceはJavaで実装されており、DSはJavaObjectでCSはRannableThreadである。プログラマーがCSを記述する際は、CodeSegmentクラスを継承し、DSを操作するAPIを使用する。 + \subsection{DataSegmentManager} DSはAliceが内部にもつデータベースによって管理されており、このデータベースをAliceではDS Manager(以下DSM)と呼ぶ。 + DSには対になるString型のkeyが存在し、このkeyを指定してDSの保存・取得を行う。 一つのkeyに対して複数のDSを登録することもでき、その場合DSはqueueに保存されFIFOで取り出される。 @@ -96,7 +99,7 @@ 他ノードのLocal DSMに書き込みたい場合はRemote DSMに対して書き込む。 Remote DSMは他ノードのLocal DSMに対応するproxyであり、接続しているノードの数だけ存在する(図 \ref{fig:RemoteDSM} )。 -\begin{figure}[htbp] +\begin{figure}[h] \begin{center} \includegraphics[width=70mm]{images/remote_datasegment.pdf} \end{center} @@ -104,6 +107,7 @@ \label{fig:RemoteDSM} \end{figure} +\newpage \subsection{Data Segment API} DSの保存・取得にはAliceが提供するAPIを用いる。 @@ -172,7 +176,7 @@ TestCodeSegmentのコンストラクタが呼ばれた際には、 \begin{enumerate} -\item CSが持つフィールド変数 {\tt Receiver input}に{\tt ids.create(CommandType.TAKE)}が行われ、{\tt }input}が初期化される。 +\item CSが持つフィールド変数 {\tt Receiver input}に{\tt ids.create(CommandType.TAKE)}が行われ、{\tt input}が初期化される。 \item 5行目にあるTestCodeSegmentのコンストラクタのTAKEが実行される。 \end{enumerate} @@ -199,7 +203,8 @@ つまりトポロジーの構成はAliceのComputationを支えているComputationとみなすことができる。 Aliceの機能を追加するということはプログラマ側が使うMeta Computationを追加すると言い換えられる。 -AliceがMeta Computationとして分散環境の構築等の機能を提供することで、プログラマーはCSを記述する際にトポロジー構成や切断、再接続という状況を予め想定した処理にする必要はない。 +並列指向プログラミング言語Erlang \cite{Erlang} では分散環境の構築等の処理はすべてユーザー側のプログラムに記述しなければならなかった。 +一方AliceはMeta Computationとして分散環境の構築等の機能を提供するため、プログラマーはCSを記述する際にトポロジー構成や切断、再接続という状況を予め想定した処理にする必要はない。 プログラマーは目的の処理だけ記述し、切断や再接続が起こった場合の処理をMeta Computationとして指定する。 このようにプログラムすることで、通常処理と例外処理を分離することができるため、仕様の変更を抑えたシンプルなプログラムを記述できる。 現在Aliceには、動的・静的トポロジーの管理構成機能、ノードとの接続状態確認機能、切断・再接続時の処理を指定できる機能などのMeta Computationが用意されている。 @@ -210,29 +215,20 @@ TreeVNCとは、当研究室開発を行っている授業向け画面共有システムである。 オープンソースのVNCであるTightVNC \cite{tightVNC} をもとに作られている。 -授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう(図 \ref{fig:vnc} )。 +授業でVNCを使う場合、1つのコンピュータに多人数が同時につながるため、性能が大幅に落ちてしまう。 この問題をノード同士を接続させ、木構造を構成することで負荷分散を行い解決したものがTreeVNCである(図 \ref{fig:TreeVNC} )。 +TreeVNCは通信処理部分の記述が大変複雑になっている。しかし、Aliceで記述すれば本質的な処理とそれを支える通信処理部分で分離できる。 +そのため、TightVNCからの修正も少なく、見通しの良い記述で構成可能と期待される。 -\begin{figure}[htbp] - \begin{center} - \includegraphics[width=60mm]{images/vnc.pdf} - \end{center} - \caption{VNCの構造 } - \label{fig:vnc} -\end{figure} - - -\begin{figure}[htbp] +\begin{figure}[h] \begin{center} -\includegraphics[width=50mm]{images/treestructure.pdf} +\includegraphics[width=80mm]{images/TreeVNC.pdf} \end{center} -\caption{TreeVNC, AliceVNC の構造} +\caption{AliceVNC の構造} \label{fig:TreeVNC} \end{figure} -TreeVNCは通信処理部分の記述が大変複雑になっている。しかし、Aliceで記述すれば本質的な処理とそれを支える通信処理部分で分離できる。 -そのため、TightVNCからの修正も少なく、見通しの良い記述で構成可能と期待される。 - +\newpage \section{Aliceの新機能} 実用的なアプリケーションであるTreeVNCをAlice上で実装することで、Aliceに必要な機能を洗い出した。 \subsection{転送機能} @@ -270,11 +266,20 @@ \lstinputlisting[label=src:ReceiveData, caption=データを表現するクラス]{source/ReceiveData.java} \end{table} +\newpage また、圧縮状態を持つDSを扱うDSMとしてLocalとRemoteそれぞれにCompressed Data Segment Managerの追加した。 Compressed DSMの内部では、put/updateが呼ばれた際にReceiveData.classが圧縮表現を持っていればそれを使用し、持っていなければその時点で圧縮表現を作ってput/updateを行う。 + ソースコード \ref{src:before} はRemoteからDSをtakeしインクリメントしてLocalにputすることを10回繰り返す例題である。 これをDSを圧縮形式で行いたい場合、ソースコード \ref{src:after} のように指定するDSM名の先頭に"compressed"をつければCompressed DSM内部の圧縮Meta Computationが走りDSを圧縮状態で扱うようになる。 +これによりユーザは指定するDSMを変えるだけで、他の計算部分を変えずに圧縮表現を持つDSを扱うことができる。 +ノードは圧縮されたDSを受け取った後、そのまま子ノードにflipメソッドで転送すれば圧縮状態のまま送信されるので、送信の際の再圧縮がなくなる。 +画面表示の際はReceiveData.class内の{\tt asClass()}(ソースコード\ref {src:asClass} )を使うことで適切な形式でデータを取得できる。 +{\tt asClass()}はDSを目的の型にcastするメソッドであり、ReceiveData.classが圧縮表現だけを持っている場合はこのメソッド内で解凍してcastを行っている。 +これによりDSの表現を必要になったときに作成できる。 + +\newpage \begin{table}[html] \lstinputlisting[label=src:before, caption=通常のDSを扱うCSの例]{source/beforeCompress.java} \end{table} @@ -283,12 +288,6 @@ \lstinputlisting[label=src:after,caption=圧縮したDSを扱うCSの例]{source/afterCompress.java} \end{table} -これによりユーザは指定するDSMを変えるだけで、他の計算部分を変えずに圧縮表現を持つDSを扱うことができる。 -ノードは圧縮されたDSを受け取った後、そのまま子ノードにflipメソッドで転送すれば圧縮状態のまま送信されるので、送信の際の再圧縮がなくなる。 -画面表示の際はReceiveData.class内の{\tt asClass()}(ソースコード\ref {src:asClass} )を使うことで適切な形式でデータを取得できる。 -{\tt asClass()}はDSを目的の型にcastするメソッドであり、ReceiveData.classが圧縮表現だけを持っている場合はこのメソッド内で解凍してcastを行っている。 -これによりDSの表現を必要になったときに作成できる。 - \begin{table}[html] \lstinputlisting[label=src:asClass, caption=asClassの処理]{source/asClass.java} \end{table} @@ -299,9 +298,12 @@ また、データの表現に圧縮したbyteArrayを追加したため、RemoteからputされたbyteArrayが圧縮されているのかそうでないのかを判断する必要がある。 そこで、Aliceの通信におけるヘッダにあたるCommandMessage.class(ソースコード \ref{src:CommandMessage} )にシリアライズ状態表すフラグと、圧縮状態を表すフラグを追加した。 -これによってputされたDSMはフラグに応じた適切な形式でReceiveData.class内にDSを格納できる。 -また、CommandMessage.classに圧縮前のデータサイズも追加したことで、適切な解凍が可能になった。 +\begin{table}[html] +\lstinputlisting[label=src:CommandMessage, caption=CommandMessage]{source/CommandMessage.java} +\end{table} + +\newpage \begin{table}[htbp] \caption{CommandMessageの変数名の説明} \label{tb:variable} @@ -333,10 +335,8 @@ \end{table} - -\begin{table}[html] -\lstinputlisting[label=src:CommandMessage, caption=CommandMessage]{source/CommandMessage.java} -\end{table} +これによってputされたDSMはフラグに応じた適切な形式でReceiveData.class内にDSを格納できる。 +また、CommandMessage.classに圧縮前のデータサイズも追加したことで、適切な解凍が可能になった。 \section{まとめ} 並列分散フレームワークAliceの計算モデルと実装について説明を行い、Aliceにおけるプログラミング手法を述べた。 @@ -351,31 +351,9 @@ -% BibTeX を使用する場合 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \bibliographystyle{ipsjsort} -% \bibliography{ref} - -% BibTeX を使用しない場合 -\begin{thebibliography}{9} - -\bibitem{treeVNC} -{MIWA OSHIRO, and Shinji KONO}:授業やゼミ向け画面配信システムTreeVNCの拡張機能,琉球大学工学部情報工学科平成26年度学位論文(学士) (2014). - -\bibitem{MessagePack} -MessagePack, http://msgpack.org/ - -\bibtem{tightVNC} -TightVNC, http://www.tightvnc.com/ - -\bibitem{senkokenkyu} -{Yu SUGIMOTO and Shinji KONO}: 分散フレームワークAlice上のMeta Computationと応用,琉球大学工学部情報工学科平成26年度学位論文(修士) (2014). - -\bibitem{Erlang} -{柏原正三}:プログラミング言語Erlang入門,アスキー (2007). - -\bibitem{hadoop} +\nocite{*} +\bibliographystyle{ipsjunsrt} +\bibliography{prosym} -\end{thebibliography} - \end{document}
--- a/paper/source/afterCompress.java Tue Nov 10 19:37:47 2015 +0900 +++ b/paper/source/afterCompress.java Tue Nov 10 23:31:29 2015 +0900 @@ -1,5 +1,4 @@ public class RemoteIncrement extends CodeSegment { - public Receiver num = ids.create(CommandType.TAKE); @Override @@ -13,5 +12,4 @@ ods.put("compressedlocal", "num", num); } - }