Slide 1

Slide 1 text

$MPKVSFʹೖ໳ͯ͠ )551αʔόʔΛͭͬͯ͘Έͨ ौ୩+BWB !UPEPLS ָ͘͠

Slide 2

Slide 2 text

ా ॴ  ॣ ༎  ! U P E P L S  w ג ࣜ ձ ࣾ Ϗ ζ Ϧ ʔ ν  ελ ϯόΠ ࣄ ۀ ෦  
 α ʔ ν ί Ξ ν ʔ Ϝ  w 4 D B M B M J B O  w & N P K J O F F S

Slide 3

Slide 3 text

4DBMBº&NPKJͳϥΠϒϥϦΛͭ͘Γ·ͨ͠

Slide 4

Slide 4 text

ΑΖ͓͘͠ئ͍͠·͢

Slide 5

Slide 5 text

͓͸ͳ͢͠Δ͜ͱ w ͜ͱͷൃ୺ w ͭͬͨ͘)551αʔόʔʹ͍ͭͯ w )551αʔόʔʁ w ϦΫΤετ͔ΒϨεϙϯε·Ͱ w ·ͱΊ w )551αʔόʔΛͭͬͯ͘ΈͯΑ͔ͬͨ͜ͱ w $MPKVSFʹೖ໳ͯ͠Α͔ͬͨ͜ͱ

Slide 6

Slide 6 text


 ͜ͱͷൃ୺

Slide 7

Slide 7 text

ʮ)551αʔόʔΛ࡞Δձʯ w ࣾ಺ͷ༗ࢤʹΑΔϥϯνษڧձ w ʮ8FCΞϓϦͭ͘Γ͍ͨʂʯ
 ʮͲͷϨϕϧͰͭ͘Δͷʁʯʮαʔόʔ͔Βͭ͘Δͷ͔ʁʯ w 2JJUBɺ4UBDL0WFSqPXFUD͸ݟͪΌͩΊ w ࢖͏ݴޠͷυΩϡϝϯτ΍3'$ɺଞݴޠͰͷ࣮૷͸ݟ͍͍ͯ w ʮ5̋,*0ܕΤϯδχΞཆ੒ॴʯ

Slide 8

Slide 8 text

ཱͪ͸͔ͩΔ͍ͭ͘΋ͷน w ιέοτͬͯͳΜͰ͔͢ʁ
 ˠάάͬͯ΋ిٿ͔͠ग़ͯ͜ͳ͍ w ը૾͕දࣔͰ͖ͳ͍
 ˠόΠφϦͳΜ͔ͩΒ0VUQVU4USFBN8SJUFS࢖ͬͪΌμϝ w NVMUJQBSUGPSNEBUB
 ˠCPVOEBSZʢσʔλͷ۠੾Γจࣈྻʣ͸ΫϥΠΞϯτ͕ܾΊΔ

Slide 9

Slide 9 text

4DBMB൛4JNQMF)5514FSWFS

Slide 10

Slide 10 text

ࠓ೥ͷ৽ଔ΋ࢀՃͯ͠
 γʔζϯ΁

Slide 11

Slide 11 text

ࣗ෼΋࠶౓$MPKVSFͰͭ͘Δ͜ͱʹ w ϙʔϧɾάϨΞϜʹ᱐͞Εͨ w ʮ&NBDT࢖ͬͯΔͷʹ-JTQॻ͍ͨ͜ͱͳ͍ΜͰ͔͢ʁʯͱઞΒΕͨ w ΞϯαΠΫϩϖσΟΞ͕ͳΜ͔͔ͩͬͨ͢͝

Slide 12

Slide 12 text

IUUQBOTBJLVSPQFEJBPSHXJLJ-*41

Slide 13

Slide 13 text

IUUQBOTBJLVSPQFEJBPSHXJLJ-*41

Slide 14

Slide 14 text

IUUQBOTBJLVSPQFEJBPSHXJLJ-*41

Slide 15

Slide 15 text


 ͭͬͨ͘)551αʔόʔʹ͍ͭͯ

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

)551αʔόʔʁ w MPDBMIPTUͷ೚ҙͷϙʔτͰ଴ػ w 5$1઀ଓɺ)551ϦΫΤετΛड͚औΔ w )5.-΍ը૾ͳͲΛ)551Ϩεϙϯεͱͯ͠ฦ͢

Slide 18

Slide 18 text

ϦΫΤετ͔ΒϨεϙϯε·Ͱ w DPSFDMK w SFRVFTUDMK w SFTQPOTFDMK

Slide 19

Slide 19 text

DPSFDMK w ΞϓϦέʔγϣϯͷΤϯτϦʔϙΠϯτ w ೚ҙͷϙʔτͰ઀ଓΛ଴ͪड͚ɺϦΫΤετ͝ͱʹιέοτੜ੒ w ιέοτੜ੒Ҏ߱ͷॲཧ͸ผεϨουͰ࣮ߦ

Slide 20

Slide 20 text

+BWB $MPKVSF (defn -main [] (let [address (InetSocketAddress. 3000) server-socket (ServerSocket.)] (.bind server-socket address (int backlog)) (while true (let [socket (.accept server-socket)] ... class SimpleHttpServer { public static void main(String[] args) { InetSocketAddress address = new InetSocketAddress(3000); ServerSocket serverSocket = new ServerSocket(); serverSocket.bind(address); while (true) { Socket socket = serverSocket.accept(); ... ϦΫΤετ͝ͱʹιέοτੜ੒

Slide 21

Slide 21 text

SFRVFTUDMK w ιέοτͷ*OQVU4USFBNΛSFBE͠ɺ
 )551ϦΫΤετͱͯ͠ύʔε w ϦΫΤετ͸ͨͩͷ.BQͱͯ͠දݱ

Slide 22

Slide 22 text

$MPKVSF (let [stream (FileInputStream. file)] (take-while #(not= -1 %) (repeatedly #(.read readable)))) +BWB InputStream stream = new FileInputStream(file); try { int b = stream.read(); while(b != -1){ // Ωϟετͯ͠഑ྻʹ٧ΊΔͳͲ } } catch (IOException e) {} *OQVU4USFBNΛ࠷ޙ·ͰSFBE͢Δ

Slide 23

Slide 23 text

SFTQPOTFDMK w ϦΫΤετΛݩʹɺϑΝΠϧΛόΠτྻ΁ w ιέοτͷ0VUQVU4USFBNʹ)551Ϩεϙϯεͱͯ͠XSJUF

Slide 24

Slide 24 text

$MPKVSF (str "HTTP/1.1 200 OK" CRLF "Content-Length: " XXX CRLF "Content-Type: " YYY CRLF) +BWB String resTxt = "HTTP/1.1 200 OK" + CRLF + "Content-Length: " + XXX + CRLF + "Content-Type: " + YYY + CRLF; จࣈྻͷ݁߹

Slide 25

Slide 25 text

·ͱΊ

Slide 26

Slide 26 text

)551αʔόʔΛͭ͘Δޮ༻ w Ұ࣍৘ใʹ͋ͨΕΔΑ͏ʹͳΔ
 +BWBEPDɺ3'$ɺ&$."ɺFUD w Πϯλʔωοτͷ࢓૊Έ͕ݟ͑ͯ͘Δ
 ιέοτɺΧʔωϧɺ5$1ɺ)551ɺFUD
 ʮे෼ʹൃୡͨ͠ςΫϊϩδ͸ຐ๏ͱݟ෼͚͕͔ͭͳ͍ʯ w ଞͷϛυϧ΢ΣΞͷத਎ʹڵຯΛ࣋ͭ
 ࠓ೥͸%#Λ࡞ͬͯΈ͍ͨ


Slide 27

Slide 27 text

$MPKVSFʹೖ໳ͯ͠Α͔ͬͨ͜ͱ w ؔ਺ྗͷ޲্
 ߴ֊ؔ਺΍ແݶϦετɺ஗ԆධՁ͕਎ۙʹ w εϨουϓʔϧΛҙࣝ͢ΔΑ͏ʹ
 HPͱUISFBEͬͯԿ͕ҧ͏ʁˠछྨ΍ಛੑΛؾʹ͢ΔΑ͏ʹͳͬͨ w ঢ়ଶΛͲ͏ѻ͏ʁ00WT$MPKVSFXBZ
 $MPKVSFͰ͸ʮΞΠσϯςΟςΟʯͱʮঢ়ଶʯΛ੾Γ཭͢
 ൺֱ͢Δ͜ͱͰ͓ޓ͍͕ΑΓ໌֬ʹ


Slide 28

Slide 28 text

IUUQTBZBUPQHJUIVCJPDMPKVSFCFHJOOFS

Slide 29

Slide 29 text

͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ