Ipfs: *-ipfs-api๋ฅผ *-ipfs-http-client๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ์„ธ์š”??

์— ๋งŒ๋“  2018๋…„ 11์›” 14์ผ  ยท  29์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: ipfs/ipfs

js-ipfs-api ๊ฐ€ ๋™์ผํ•œ js-ipfs API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ์ผ ๋ฟ์ด๋ผ๊ณ  ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ์ž…์ด ๋–ก๋ฒŒ์–ด์ง‘๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ SDK ๋˜๋Š” ๊ฐ„๋‹จํžˆ ํด๋ผ์ด์–ธํŠธ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์žฌ๋ฏธ์žˆ๋Š” ์—ญ์‚ฌ ์‚ฌ์‹ค, ์šฐ๋ฆฌ๋Š” js-ipfs-api ๊ฐ€ JS ๊ตฌํ˜„์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Š” ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๋ช… ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ ๋ชจ๋“  ์ €์žฅ์†Œ์— ๊ฑฐ๋Œ€ํ•œ ๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ์„ ๋•Œ๋งŒ ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. -> https://github.com/ipfs/js-ipfs-api/# --

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

*-ipfs-api ์˜ ์ด๋ฆ„์„ *-ipfs-http-client ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ๋™์˜ํ•˜๋ฉด ์ด ๋Œ“๊ธ€์— ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.

๋ชจ๋“  29 ๋Œ“๊ธ€

Go๋Š” CoreAPI๋ฅผ ์™„๋ฃŒํ•˜๊ณ  ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•  ๋•Œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... (๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ์ค‘๋‹จ๋จ).

์ด๋ฆ„์„ -client ๋กœ ์ง€์ •ํ•˜๋ฉด ์ฃผ์–ด์ง„ ๋ชจ๋“ˆ์ด IPFS ํด๋ผ์ด์–ธํŠธ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค(bitswap/etc๋ฅผ ๋งํ•˜์ง€๋งŒ ์•„๋ฌด ๊ฒƒ๋„ ์ œ๊ณตํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ). ๋ช…ํ™•ํ•œ ์ด๋ฆ„์„ ์›ํ•˜๋ฉด ๋” ๊ธธ๋”๋ผ๋„ -api-client ๋ฅผ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

ํ . ๋„ค, ์ข‹์€ ์ง€์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ ํ•ฉ๋ฆฌ์ ์œผ๋กœ ๋ณด์ธ๋‹ค.

-api-client๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค๋ฉด -http-client๊ฐ€ ๋” ๋ถ„๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

*-ipfs-api ์˜ ์ด๋ฆ„์„ *-ipfs-http-client ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ๋™์˜ํ•˜๋ฉด ์ด ๋Œ“๊ธ€์— ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.

๋‚ด ๊ณ ๊ฐ ์„ ์œ„ํ•ด ํƒ‘์Šนํ–ˆ์Šต๋‹ˆ๋‹ค! ๋‚˜๋Š” ์•„๋ฌด ๊ฒƒ๋„ ๊นจ์ง€์ง€ ์•Š๋„๋ก ๊ฒฝ๊ณ ์™€ ํ•จ๊ป˜ ์ด์ „ ์ด๋ฆ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

image

์ •์กฑ์ˆ˜์— ๋„๋‹ฌํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :) ์ด์ œ ๋ชจ๋“  ๊ณณ์—์„œ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด ๋ฉ๋‹ˆ๋‹ค. :)

PHP ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์†Œ์ผ“๊ณผ๋„ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค... ๊ทธ๋ž˜์„œ ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ ๐Ÿ’ฏ% ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@alanshaw์˜ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ https://blog.ipfs.io/58-http-client-rename/ \o/

๊ทธ๋ƒฅ 'ipfs-api-client'๊ฐ€ ์•„๋‹Œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์„ http์— ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๊ฒƒ์€ ... ๋ฐ˜๋Œ€๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

@whyrusleeping ํ˜„์žฌ๋Š” http ์ „์šฉ์ด๋ฉฐ, ์ฒ˜์Œ IPFS๋ฅผ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ ์‹ค์ œ๋กœ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ˜„์žฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ HTTP ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด ๋ถ„๋ช…ํ•ด์ ธ์„œ ๊ธฐ์ฉ๋‹ˆ๋‹ค.

https://github.com/ipfs/java-ipfs-api ์˜ ์ด๋ฆ„์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋ˆ„๊ตฐ๊ฐ€ ๋‚˜์—๊ฒŒ ๊ทธ๊ฒƒ๋“ค์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ianopolous ๊ฐ€ ๋‹น์‹ ์„ ๊ด€๋ฆฌ์ž๋กœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค :)

๋ฉ€๋ฆฌ ๋–จ์–ด์ง„ ์€ํ•˜๊ณ„์˜ ๋ˆ„๊ตฐ๊ฐ€๋กœ๋ถ€ํ„ฐ 2์„ผํŠธ(์‹ค์ œ๋กœ๋Š” libp2p๊ฐ€ ์•„๋‹˜)...

ipfs-api-client ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ๋‚˜์—๊ฒŒ ์ค‘๋ณต๋ฉ๋‹ˆ๋‹ค. API(์ธํ„ฐํŽ˜์ด์Šค์™€ ์œ ์„  ํ˜•์‹์ด ๋ฌด์—‡์ด๋“  ๊ฐ„์—)๋ฅผ ํ†ตํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค์™€ ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ• ๊นŒ์š”? ํŽธ์ง‘ : ์œ„์˜ @ alexander255 ์˜ ์˜๊ฒฌ์„ ์ฝ์œผ์‹ญ์‹œ์˜ค. ๊ทธ๊ฒƒ๋„ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. -api-client ๋Š” ํด๋ผ์ด์–ธํŠธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๋ผ SDK์ž„์„ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฆ„์— ์‹ค์ œ ์ธํ„ฐํŽ˜์ด์Šค ์œ ํ˜•(http)์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์€ ๊ทผ์‹œ์•ˆ์ ์ธ IMO์ž…๋‹ˆ๋‹ค.

  1. Unix ์†Œ์ผ“, Windows Named Pipes, gRPC ๋“ฑ์— ๋Œ€ํ•œ ์ง€์›์„ ๋„์ž…ํ•œ ํ›„ ๋˜ ๋‹ค๋ฅธ ๋Œ€๊ทœ๋ชจ ์ด๋ฆ„ ๋ณ€๊ฒฝ์„ ์กฐ์ •ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  2. ๋ฏธ๋ž˜์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์ค‘ ์ „์†ก์ด ๋  libp2p RPC ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  3. HTTP, gRPC, Unix ์†Œ์ผ“ ๋“ฑ์„ ํ†ตํ•ด ์ง€์› ์„œ๋น„์Šค์— ๋„๋‹ฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€. ์ „๋ฉด API๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์ƒ์˜ ipfs-api-[ipc/http/grpc]-client ๋ชจ๋“ˆ์€ ๋งŽ์€ ์ฝ”๋“œ๋ฅผ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค.

ipfs-client ๋Š” ์–ด๋Œ‘ํ„ฐ์™€ ๊ฐ™์€ ๋””์ž์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ HTTP, IPC, gRPC ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•˜๋ฉด์„œ ๋™์ผํ•œ ํ”„๋ŸฐํŠธ์—”๋“œ๋ฅผ ๋…ธ์ถœํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ง€๊ธˆ๊นŒ์ง€์˜ ์ œ์•ˆ๊ณผ ์ฃผ์žฅ ์ค‘์—์„œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ฐ€์žฅ ์ข‹์•„ํ•˜์ง€๋งŒ ipfs-client ๋Š” ๋งˆ์น˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ/๋„๊ตฌ์ธ ๊ฒƒ์ฒ˜๋Ÿผ ์ฝ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์ด ํ•ญ์ƒ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋ผ๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ipfs-client-library ๋˜๋Š” ipfs-client-lib ๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

@raulk ๋‚˜์—๊ฒŒ ipfs-client ๋Š” ์‹ค์ œ๋กœ ipfs์˜ ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์„ ํฌํ•จํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋“ค๋ฆฝ๋‹ˆ๋‹ค. ์˜คํ•ด์˜ ์†Œ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ œ๋ชฉ์— http ๋ฅผ ๋„ฃ๋Š” ๊ฒƒ์€ ๊ทผ์‹œ์•ˆ์ ์ด๋ผ๋Š” ๋ฐ ๊ฐ•๋ ฅํžˆ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๊ธฐ ์ „์— ์กฐ๊ธˆ ๋” ๋– ๋Œ์•„๋‹ค๋‹ˆ๋Š” ๊ด‘๋ฒ”์œ„ํ•œ ๊ฒฐ์ •์— ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@whyrusleeping ์ ์–ด๋„ Java http ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ http ํด๋ผ์ด์–ธํŠธ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฏธ http์™€ cmd ๋ผ์ธ ๊ธฐ๋ฐ˜ ํ˜ธ์ถœ์„ ๊ฒฐํ•ฉํ•œ go ํด๋ผ์ด์–ธํŠธ์˜ ๊ฒฝ์šฐ ์ƒํ™ฉ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@ianopolous ๋‚˜๋Š” Java API ํด๋ผ์ด์–ธํŠธ๊ฐ€ websockets๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ž‘๋™ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค์„ ๋ชจ๋‘ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€๋กœ ๋งŒ๋“œ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@whyrusleeping ์›น ์†Œ์ผ“ ์„ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค์— ๋Œ€ํ•ด Java SDK๋ฅผ ๋ณธ ์ ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ผ๋ฐ˜ ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ipfs์— ์œ ์šฉํ•˜๊ณ  http ํด๋ผ์ด์–ธํŠธ์— ๋งŽ์€ ์ฝ”๋“œ ์ค‘๋ณต์ด ์žˆ์—ˆ๋‹ค๋ฉด ๊ฐœ์ธ์ ์œผ๋กœ ๊ณตํ†ต ์ฝ”๋“œ๋ฅผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ œ์™ธํ•˜๊ณ  ์ด์ƒ์ ์œผ๋กœ๋Š” ํ”„๋กœํ† ์ฝœ์— ๊ตฌ์• ๋ฐ›์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋™์ผํ•œ ํด๋ผ์ด์–ธํŠธ์—์„œ ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํ”„๋กœํ† ์ฝœ์„ ํ˜ผํ•ฉํ•˜๋ฉด ํ˜ผ๋ž€๊ณผ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/ipfs/go-ipfs/issues/5784

@ianopolous ์ง€๊ธˆ์€ ์›น ์†Œ์ผ“ ํ† ๋ก ์„ ๋ณด๋ฅ˜ํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค(๋ฌด์—‡์ด๋“  ๊ฐ„์—)๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ SDK๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Java์—์„œ ์ด๊ฒƒ์„ ๋ชจ๋ธ๋งํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์Šค์ผˆ๋ ˆํ†ค, ๊ณต๊ฐœ API, ์ถ”์ƒํ™”, DTO ๋“ฑ์„ ์ •์˜ํ•˜๋Š” core ๋ชจ๋“ˆ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๋ฐฑ์—”๋“œ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทœ์•ฝ. ๋ชจ๋‘ core ์—์„œ ์–ด๋Œ‘ํ„ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ <scope>runtime</scope> (Maven)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ๋กœ ๊ฐ€์ ธ์˜ค๊ณ  core ๋Š” ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋Œ‘ํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด SPI(Service Provider Interface)์™€ ๊ฐ™์€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ์ ์˜ ๊ฒƒ(์–ด๋–ค ์ข…๋ฅ˜์˜ ๋Œ€์ฒด ๋˜๋Š” ํ˜‘์ƒ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„). ๋˜๋Š” ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ์‚ฌ์šฉํ•  ๊ฒƒ์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ์ž์— ์˜์กดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

ipfsClient.setBackend(HttpApiBackend.class);     // public void setBackend(Class<? extends IpfsBackend> clz);

BTW โ€“ web3j ๋Š” ๋™์ผํ•œ Java ๋ชจ๋“ˆ์—์„œ HTTP, IPC ๋ฐ WSS๋ฅผ ์ง€์›ํ•˜๋ฉฐ API๊ฐ€ ๋ฉ‹์ง€๊ฒŒ ๋ชจ๋ธ๋ง๋˜๋Š” ํ•œ ์ด๋กœ ์ธํ•ด ์ถ”๊ฐ€๋˜๋Š” ์œ ์ผํ•œ ๋ถ€๋‹ด์€ ์ž ์žฌ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์ข…์†์„ฑ์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@raulk

์—ฌ๋Ÿฌ ๋ฐฑ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค(๋ฌด์—‡์ด๋“  ๊ฐ„์—)๋ฅผ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ํด๋ผ์ด์–ธํŠธ SDK๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ํ™•์‹คํžˆ ๊ทธ๊ฒƒ์„ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœํ† ์ฝœ์„ ๋™์ผํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋‘๋Š” ๊ฒƒ์€ ๋ช‡ ๊ฐ€์ง€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ชจ๋‘์—์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํฌ๊ธฐ๋ฅผ O(N)์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ N์€ ํ”„๋กœํ† ์ฝœ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ฑฐ์˜ ํ•ญ์ƒ ๋‚˜๋Š” sdk์˜ ๋‹จ์ผ ํ”„๋กœํ† ์ฝœ ๊ตฌํ˜„๋งŒ์„ ์›ํ•˜๊ณ  90%๊ฐ€ ๋‚˜์™€ ๊ด€๋ จ์ด ์—†์–ด ๋‚ด ์•ฑ์„ ๋ถ€ํ’€๋ฆฌ์ง€๋งŒ ์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ–๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณด์•ˆ์— ๊ด€์‹ฌ์ด ์žˆ๊ณ  ๋‚ด ์ข…์†์„ฑ์„ ๊ฐ์‚ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ „ํ˜€ ์ด์œ  ์—†์ด ๋ณต์žก์„ฑ๊ณผ ๋น„์šฉ์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋ณดํŽธ์ ์ธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์กด์žฌํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‚ฌ์šฉ ์‚ฌ๋ก€๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ฐ•์š”ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@ianopolous ๋‚˜๋Š” ๋‹น์‹ ์ด uber-JAR ๋ชจ๋ธ์„ ๊ฐ€์ •ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์€ ๊ทธ ๋ฐ˜๋Œ€์ž…๋‹ˆ๋‹ค. ์ฆ‰, ์ข…์†์„ฑ์ด ๋ชจ๋“ˆ ๊ฐ„์— ๋ˆ„์ถœ๋˜์ง€ ์•Š๊ณ  ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๋ชจ๋“ˆ์„ ๋นŒ๋“œ์— ์ถ”๊ฐ€ํ•  ๋•Œ๋งŒ ๋Œ์–ด์˜ค๋Š” ๋‹ค์ค‘ ๋ชจ๋“ˆ ๋นŒ๋“œ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์— ๋Œ€ํ•ด 200๊ฐœ ์ด์ƒ์˜ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” Apache Camel ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋กœ์„œ ๋‚˜๋Š” camel-core(๋งค์šฐ ์Šฌ๋ฆผํ•จ) + ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ตฌ์„ฑ ์š”์†Œ(camel-mqtt, camel-ftp ๋“ฑ)๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  Maven/Gradle์ด ๋‚˜๋ฅผ ์œ„ํ•ด ํšจ๊ณผ์ ์ธ ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ณ„์‚ฐํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

http-client ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ๋ฐ˜๋Œ€ํ•ฉ๋‹ˆ๋‹ค. php-api-client ๊ฐ€ html ๋์ ์ด๋‚˜ ์†Œ์ผ“๊ณผ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ธฐ ์ „์— ๋งํ–ˆ๋“ฏ์ด. ๋‹ค๋ฅธ ๋“œ๋ผ์ด๋ฒ„ ์ผ ๋ฟ์ด๊ณ  ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋Š” ์™„์ „ํžˆ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ €๋Š” http-* ๊ฐ€ ์›์‹œ๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ž…์žฅ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ LANG-ipfs-client ๋˜๋Š” LANG-ipfs-api-client ๋กœ ์ด๋ฆ„์„ ๋ฐ”๊ฟ”๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

@digitalkaoz ์— ์ „์ ์œผ๋กœ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์–ด์ง„ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋‹ค๋ฅธ ์ „์†ก์„ ์ง€์›ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. (์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ด๋ฏธ ํ”Œ๋Ÿฌ๊ทธํ˜• ์ „์†ก์ด ์žˆ๊ณ  ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด์—์„œ ์„ ํƒ์  ์ข…์†์„ฑ์„ ์‰ฝ๊ฒŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Ÿด ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.)

์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ์‡„.

@Kubuxu ๋‹ค๋ฅธ ๋ชจ๋“  ํŒจํ‚ค์ง€์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ถ”์ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ๋ฌธ์ œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  HTTP API ํด๋ผ์ด์–ธํŠธ ๊ตฌํ˜„์€ ์ด์ œ ipfs-http-client๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ๊ตฌํ˜„์ด ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ด๊ฒƒ์„ ์—ด์–ด ๋‘๋Š” ๊ฒƒ๋„ ํฐ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ด๋ฆ„์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰