Android ๋ฐ iOS์ฉ. ์ธํฐํ์ด์ค๋ ์น UI(๋จธํฐ๋ฆฌ์ผ ๋์์ธ)์ ์ ์ฌํด์ผ ํฉ๋๋ค.
์ด๊ฒ์ด ์ค์ํ ์ฃผ์ ์ด์ : ํนํ PhotoPrism์ด ์ง์์ ํธ์คํ ๋๋ ๊ฒฝ์ฐ ์ฅ์น์ ์ ์ฅ๋ ์ฌ์ง์ ์๋ ์ ๋ก๋/๋๊ธฐํ(์ฅ์น๋ ๋์ผํ Wi-Fi ๋คํธ์ํฌ์ ์์ด์ผ ํจ).
์๋ง๋ NativeScript๋ฅผ ์ฌ์ฉํ์๊ฒ ์ต๋๊น? https://www.nativescript.org/
์๋ง๋ ํ๋ฌํฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค :)
๊ฐํธํ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๋ด์ฅ!
Flutter๋ ๊ด์ฌ ๋ชฉ๋ก์ ์์ต๋๋ค. ์ค์ ๋ก https://godoc.org/golang.org/x/mobile & flutter๋ก ์ฑ ๋น๋๋ฅผ ์๋ํ์ง๋ง ์ปดํ์ผ/์คํ ์ค๋ฅ๋ก ์ธํด ์๋ํ์ง ์์์ต๋๋ค.
๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ ๊ฒฝํ์ด ์๋ ๋๊ตฐ๊ฐ๊ฐ ์ฐ๋ฆฌ๋ฅผ ๋์ธ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์ ๋๋ค!
golang์ด ๋ชจ๋ฐ์ผ ์ฑ์ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ๋ณธ ์ ์ด ์์ต๋๋ค ๐
๊ฐ์ง ์๊ณ ๋ ์ฝ๊ฒ flutter๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค ...
์คํ์ด์์ต๋๋ค. ์ ์ฒด ํ๋ก์ ํธ๋ ์คํ์ ๋๋ค. ํ์ ์ ์ง์ ๋ง์กฑํ์ง ์์ต๋๋ค.
@lastzero ์์งํ '์ข์ 1ํธ' ์น๊ณ ๋ ์ข ํฐ ๊ฒ ๊ฐ์์ ๐
๊ทธ๊ฒ์ ์ฌ์ค ์ฒซ ๋ฒ์งธ ์์ด๋์ด์ ๋๋ค ;) ์์ง ์๋ฌด ๊ฒ๋, ๋ ์ ์๋ ๊ทธ๋ฆฐ ํ๋๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ข์ต๋๋ค.
๊ทธ ๋ถ๋ถ์ ๋ํด์๋ ๋์ํฉ๋๋ค. ๊ทธ๋ฌ๋ API imo๋ฅผ ์ ์์์ผ ํฉ๋๋ค.
๋น๋ ๋ฐฉ๋ฒ์ ์ด๋ฏธ ์๊ณ ์๋ค๋ฉด ๊ทธ๋ ์ต๋๋ค. ์ด๋ค ๊ธฐ์ ์ ์ฌ์ฉํ ์ง ์์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ฐ๋จํ๊ณ ์ ์ง ๊ด๋ฆฌ๊ฐ ์ข์์ผ ํฉ๋๋ค. ํ์คํฐ ๊ธฐ์ ์ด ์ ์ฉ๋ 10๊ฐ์ ํฌ์ฅ๋ ์ปจํ ์ด๋์๋ ๋ค๋ฆ ๋๋ค. ์น ๊ธฐ์ ๋ก ์์ ํ๋ ๊ฒ์ ์ฝ๋ ์ฌ์ฌ์ฉ์ผ๋ก ์ธํด ํ๋ฅญํ ์ ์์ง๋ง ์๋ง๋ ํ์คํฐ ๊ธฐ์ ์ผ ๊ฒ์ ๋๋ค. ์ ์์ ์ด๋ ค ์์ต๋๋ค.
์๊ฒ ์ต๋๋ค. ์ธ ๊ฐ์ง ์ต์ ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
1) ReactNative ํฌ๋ก์ค ํ๋ซํผ, ํ๋ ์๋์์ JS ๋ฅผ ์ฌ์ฉํ๊ณ ๊ตฌ์ฑ ์์ ํจ๋ฌ๋ค์ ์์ ๊ตฌ์ถ๋์์ต๋๋ค( Vue ์ ๋์ผ). Flutter ์ ๋ฌ๋ฆฌ RN ์๋ ๋ชจ๋ ์ทจํฅ์ ๋ง๋ ๋ฐฉ๋ํ ๊ธฐ์กด ๊ตฌ์ฑ ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค.
2) Flutter ํฌ๋ก์ค ํ๋ซํผ, ์ธ๊ธฐ ์๋ Google ์ Dart ์์ฒด ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๊ฐ๋จํ ๋งํด์ ์ฑ์ ๋น๋ํ๊ธฐ ์ํด React ์ ์ ์ฌํ ๊ตฌ์ฑ ์์๊ฐ ์์ต๋๋ค(_Widgets_ ํธ์ถ). ์ ์ ํ๋ ์์ํฌ์ด์ง๋ง ๋น ๋ฅด๊ฒ ์ธ๊ธฐ๋ฅผ ์ป๊ณ ์์ผ๋ฉฐ ๊ธฐ์กด์ ํ๋ก๋์ ์ค๋น ์์ ฏ ์์์ ํจ์ฌ ์ด๋ฑํฉ๋๋ค.
3) ๋ชจ๊ตญ์ด ๋ฐ ํ๋ซํผ๋ณ SDK. iOS์ฉ Swift ๋ฐ Android์ฉ Kotlin . _๊ฐ๋จํ๊ณ ์ ์ง ๊ด๋ฆฌํ๊ธฐ ์ข์_ ๊ฒ์ Objective-c ๋ฐ Java ์ ๊ดํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ํ NativeScript ๋๋ Vue Native ์ ๊ฐ์ ์๋ง์ ์ต์ ์ด ์์ต๋๋ค. ํ์ง๋ง ์ ๋ฅผ ๋ฏฟ์ผ์ธ์. ์ ๋ React Native ์ ๋ํ ๊ฒฝํ์ด ์์๊ณ "_Hello World_" ํํ ๋ฆฌ์ผ๋ณด๋ค ๋ ๋ณต์กํ ๊ฒ์ ํ๋ ค๊ณ ํ ๋๋ง๋ค ๋ง์ ๋ฌธ์ ๋ฅผ ๊ฒช์ต๋๋ค. ๋ฐ๋ผ์ ์ด _SOMETHING-NATIVE_ ๋ฅผ ๋ชจ๋ ์ฌ์ฉํ๋ฉด ์ฌ์ธต ๋ถ์์์ ํฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก . ํ์คํฐ๊ฐ ๋๊ณ ์ถ๊ณ _์ฝ๋ ์ฌ์ฌ์ฉ์ ๋ํ ์์ด๋์ด_๋ฅผ ๋ฏฟ๋๋ค๋ฉด ReactNative ๋ฅผ ์ฌ์ฉํ์ธ์. ๊ทธ๊ฒ์ ์ข์ ์ปค๋ฎค๋ํฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ง์ pull ์์ฒญ์ ๊ธฐ๋ํ ์ ์์ต๋๋ค.
์ฌ๋ฏธ์๊ณ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด Flutter ๋ฅผ ์ฌ์ฉํ์ธ์. ์ด๊ฒ์ ํฐ ๋์ ์ด ๋ ๊ฒ์ ๋๋ค. BTW, Dart ๋ ๋งค์ฐ ๊ฐ๋จํ๋ฉฐ JS ๋ฐ TS ์ ๋์์ผ๋ก ๋ง์์ ๋ค์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋น์ ์ด ์ข์ ์ฌ๋์ด๊ณ ๋ง์๋๋ก ํ ์ ์๋ ์์ ์๊ฐ์ด ๋ง๋ค๋ฉด Swift ์ Kotlin ์ ์ฌ์ฉํ์ธ์. ์ด๊ฒ์ "_Hello World_" ํํ ๋ฆฌ์ผ๋ณด๋ค ์ด๋ ค์ด ๋ชจ๋ ํ๋ก์ ํธ์ ๊ฐ์ฅ ์ ํฉํ ์๋ฃจ์ ์ด ๋ ๊ฒ์ ๋๋ค. Swift ์ Kotlin ์ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ํ๋ ์ธ์ด๋ก ๋ชจ๋ ์์ ์ ๋งค์ฐ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค.
์ด์จ๋ , ์ด ์ธ ๊ฐ์ง ๊ฒฝ์ฐ ์ค ํ๋๋ฅผ ๋์๋๋ฆด ์ ์์ด ๊ธฐ์ฉ๋๋ค.์๋๋จ:
๋๋ ๋ํ ๊ฑฐ๊ธฐ์ ์ธ ๊ฐ์ง๋ฅผ ๋์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ์ค์ ๋ก ์ฌ์ฉํ์ง ์์ ๋ค์ดํฐ๋ธ ๋ฐ์ : D
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ ๋ก๋ํ๊ณ ์ฌ์ง ๋ฉํ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๋ฐ์ํ์ด๋ ํ๋ฌํฐ๋ก ๊ทธ๊ฒ ๊ฐ๋ฅํ๊ฐ์?
์ด ๊ฒฝ์ฐ์๋ ๊ธฐ๋ณธ ์๋น์ค๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. Flutter์ React Native๋ ๋ณด๊ธฐ ์ ์ฉ์ ๋๋ค.
๋๋ ์ด๊ฒ์ด ๋๋ฌด ์ผ๋ฐ์ ์ด์ด์ API/๊ตฌ์ฑ ์์๋ฅผ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์ด ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ์ด์จ๋ ๋ค์ดํฐ๋ธ ์ ๊ทผ ๋ฐฉ์์ ํผํ ์ ์๋ ๊ฒ์ฒ๋ผ ๋ค๋ฆฌ๋๋ฐ, ์ฐ๋ฆฌ๊ฐ ํ ์ ์๋ ์ต์ ์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ JS์ ํผํฉํ๋ ๊ฒ์ ๋๋ค. ์ ์ง ๊ด๋ฆฌ๊ฐ ๋ ๊ฐ๋จํด ์ง๋์ง ํ์คํ์ง ์์ต๋๋ค ...
๋ํ ๊ธฐ๋ณธ Google ๋ผ์ด๋ธ๋ฌ๋ฆฌ์๋ Google์์ ์ ์ธ๋๊ฑฐ๋ ์ ๊ณต๋๋ ๋ ๋์ ๋์์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. React Native์๋ ์ข์ Material Design ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. Flutter๋ง์ด ์ ๋ง ์ ์๋ํ๋ ์ข์ ๋์์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
Flutter๋ ๋ชจ๋ ์ค๋งํธํฐ์์ ์ข์ ๋์์ธ๊ณผ ์ ํ์ ์ ๊ณตํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค. ๋ค์ดํฐ๋ธ๋ก ๋์ผํ ์์ ์ ์ํํ๋ ค๋ ๊ฒฝ์ฐ ํน์ ๊ตฌ์ฑ์์ ์ถฉ๋ํ๋ ์ฅ์น์ ์ง๋ฉดํ ์ ์์ต๋๋ค... ์ด๊ฒ์ ์ฑ๊ฐ์ค ์ ์์ต๋๋ค.
@danieldaeschle Flutter๋ก UI๋ฅผ ์ํํ ๋ iOS ์ฑ์์ Dart ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค. UI๋ ๋ ํ๋ซํผ ๋ชจ๋์์ ๊ฑฐ์ ๋์ผํ๊ฒ ๋ณด์ด๋ฉฐ ํ๋ซํผ๋ณ ์ฝ๋๋ง Swift ๋๋ Kotlin์ผ๋ก ์์ฑํ๋ฉด ๋ฉ๋๋ค.
์, ์ ํํ
๊ณํ ๊ฐ์ ์๋ฆฌ. ํ ๋๋ ํ ๋ฆฌ์ ๊ณต์ Dart/Flutter ์ฝ๋๋ฅผ ํฌํจํ๊ณ ๋ค๋ฅธ ๋ ๋๋ ํ ๋ฆฌ์ iOS ๋ฐ Android์ฉ ํ๋ซํผ๋ณ ์ฝ๋๋ฅผ ํฌํจํ๋ photoprism-mobile
๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๊น?
Flutter ํ๋ก์ ํธ๋ ์ด๋ฏธ ์ด ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๊ณํ ๊ฐ์ ์๋ฆฌ. ํ ๋๋ ํ ๋ฆฌ์ ๊ณต์ Dart/Flutter ์ฝ๋๋ฅผ ํฌํจํ๊ณ ๋ค๋ฅธ ๋ ๋๋ ํ ๋ฆฌ์ iOS ๋ฐ Android์ฉ ํ๋ซํผ๋ณ ์ฝ๋๋ฅผ ํฌํจํ๋
photoprism-mobile
๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ๋ง๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๊น?
๊ทธ๋ ์ง ์์ต๋๋ค. ๋จผ์ _์ฌ์ง ๋ฉํ ๋ฐ์ดํฐ์ ์ก์ธ์ค_, _๋ณ๋ ฌ ๋ฐฐ๊ฒฝ ์ ๋ก๋_(์ฌ๋ฌ ๊ฐ์ฒด)์ ๊ฐ์ ๊ธฐ๋ฅ์ ๋ํด Google์์ ๊ฒ์ํด์ผ ํฉ๋๋ค. _์ฌ์ง ํธ์ง_, _๋ชฉ๋ก ๊ตฌ์ฑ ์์ ์ฑ๋ฅ_ ๋ง์ ์์ ์ด๋ฏธ์ง ๊ฐ์ฒด ๋ฑ์ผ๋ก ์์ ํ๋ ๊ฒ์ด ์ฌ์ด์ง ์ฌ๋ถ ๋ฑ.
UI ํคํธ ๋๋ ํ๋ก์ ํธ ์ํคํ ์ฒ์ ๊ฐ์ ์ฌ์ํ ์ธ๋ถ ์ฌํญ์ ์ฌ์ํ ์ฌํญ์ ๋๋ค. ์ด ์ฃผ์ ์์ ๋ ผ์ํ ๋ชจ๋ ๊ธฐ์ ์ด ์ ์๋ํฉ๋๋ค.
์ด์์ ์ผ๋ก๋ ๊ฒฝํ์ด ์๋ ์ฌ๋์ด ์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ฅผ ๋์ธ ์ ์์ต๋๋ค. ๋ด๋ ์ด์ ์๋ ์ด๋ฌํ ๊ธฐ์ ์ ์ฌ๋ ์๊ฒ ์คํํ ์๊ฐ์ด ์์ ๊ฒ์ ๋๋ค. ๊ธฐ๊ปํด์ผ ๊ฐ๋จํ ํ๋น์ฑ ์กฐ์ฌ๋ฅผ ํ ์ ์์ต๋๋ค.
Flutter๋ฅผ ์ฌ์ฉํ๋ฉด ์ง์ฐ ๋ก๋ฉ ๋ณด๊ธฐ๋ฅผ ๋งค์ฐ ์ฝ๊ฒ ์ํํ ์ ์์ต๋๋ค. ์ฌ์ง ํธ์ง์ Dart๋ก ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
๋ณ๋ ฌ ์
๋ก๋๋ kotlin/swift๋ก ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค.
@lastzero ๋๋จธ์ง API ๋ฌธ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์์ต๋๊น?
@santoshgistto ์ฒซ ๋ฒ์งธ ๋จ๊ณ๋ก Wiki์ ํ์ด์ง๋ฅผ ์ถ๊ฐํ๊ณ ์ธ๋ผ์ธ ๋ฌธ์์ ๊ฒฝ๋ก์ ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ์ต๋๋ค.
https://godoc.org/github.com/photoprism/photoprism/internal/api
๋ด ์ฝ๋๊ฐ GOPATH ์ธ๋ถ์ ์๊ณ godoc ์๋ฒ๊ฐ ์์ง ์๋ํ์ง ์๋ ๊ฒ ๊ฐ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ์ฝ๊ฐ ์ฑ๊ฐ์ ์ผ์ด์์ต๋๋ค. ๊ทธ๋์ ํ ์คํธ๋ฅผ ์ํด ๋ณ๊ฒฝ ์ฌํญ์ ํธ์ํด์ผ ํ์ต๋๋ค...
@lastzero๋ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค.
๋๋ API๋ฅผ ํ
์คํธํ๋ค
http://localhost:2342/api/v1/photos?count=1
The response missing thumbnail url
[{"ID":19,"CreatedAt":"2018-11-06T07:31:22Z","UpdatedAt":"2018-11-06T07:31:22Z","DeletedAt":"0001-01-01T00:00:00Z","TakenAt":"2018-08-11T10:51:32Z","PhotoTitle":"Handkerchief / 2018","PhotoDescription":"","PhotoArtist":"","PhotoKeywords":"","PhotoColors":"chocolate, coral, darkorange, gray, grey, lightslategray, lightslategrey, orangered, slategray, slategrey, tomato","PhotoVibrantColor":"#f76f1f","PhotoMutedColor":"#925b97","PhotoCanonicalName":"20180811_105132_2FFDA64D425B","PhotoLat":0,"PhotoLong":0,"PhotoFavorite":false,"CameraID":2,"CameraModel":"Unknown","CameraMake":"","LensID":3,"LensModel":"Unknown","LensMake":"","CountryID":"","CountryName":"","LocationID":0,"LocDisplayName":"","LocName":"","LocCity":"","LocPostcode":"","LocCounty":"","LocState":"","LocCountry":"","LocCountryCode":"","LocCategory":"","LocType":"","FileID":19,"FilePrimary":true,"FileMissing":false,"FileName":"2018/08/20180811_105132_2FFDA64D425B.jpg","FileHash":"2ffda64d425b0f9ca49318bc0b951d1a7c081266","FilePerceptualHash":"adb5","FileType":"jpg","FileMime":"image/jpeg","FileWidth":564,"FileHeight":414,"FileOrientation":1,"FileAspectRatio":1.36,"Tags":"handkerchief"}]
md5-78e4f1074b633c5137445e8cd1ef760d
http://localhost:2342/api/v1/thumbnails/square/500/df54169be1f0c93805dccc82b753153c30d1c1c0
์ธ๋ค์ผ์ ํฌ๊ธฐ ๋ฐ ํ์๊ณผ ๊ฐ์ ๋งค๊ฐ๋ณ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์์ฑ๋๋ฉฐ ๋จ์ผ ์์ URL์ ์์ต๋๋ค. ๋์์ด ๋๋ ๊ฒฝ์ฐ ๊ฒ์ ๊ฒฐ๊ณผ์ ๊ธฐ๋ณธ/์์ ์ธ๋ค์ผ URL์ ์ถ๊ฐํ ์ ์์ต๋๊น?
@lastzero ๋๋ถ์ ๋์์ด ๋์์ต๋๋ค.
์จ๋ฒ ๋ฐ ํ๊ทธ ์ธ๋ถ ์ ๋ณด ๋ฑ์ ์ป๋ ๊ฒ๊ณผ ๊ฐ์ ๋ ๋ง์ API๊ฐ ํ์๋์ง ์์ต๋๋ค.
๋๋ ์์ง ๊ฐ๋ฐ ์ค์ด๋ผ๊ณ ๋ฏฟ์ต๋๋ค.
์, ํ์ฌ ๋ฌธ์ํ ๋ฑ์ผ๋ก ๋ฐ์๋ค - ์๋ฃ๋๋ฉด ์๋ก์ด ๊ธฐ๋ฅ/api ์ถ๊ฐ
์ข์, ํ์ฌ ๋๋ ๋ํ ํ๋ฌํฐ๋ฅผ ์ฐพ๊ณ ์์ต๋๋ค. ๊ธฐ์กด API๋ฅผ ์ฌ์ฉํ์ฌ POC ์ฑ์ ๋น๋ํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ์ฌ ํด์,
@santoshgistto ๊ธฐ์ฌ์ ๋ชฉ๋ก์ ์์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
@santoshgistto ์์ ์ฑ์ ๋ํ ๋งํฌ๋ฅผ ํฌํจํ์ฌ ๋ชจ๋ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ฌ๊ธฐ์ ์ ๋ ฅํ์ญ์์ค: https://github.com/photoprism/photoprism/wiki/Mobile-Apps
๋๋ react-native๋ฅผ ์ฌ์ฉํ๊ณ ๋ณด๊ธฐ์ ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ํ ๊ธฐ๋ณธ ์ฑ ์ฝ๋์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด ์ฌ์ด ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ง ๋ชจ๋ ๊ฒ์ด ์ฃผ์ ๋ชฉํ๊ฐ ๋ฌด์์ธ์ง์ ๋ฌ๋ ค ์์ต๋๊น?
์๋ฅผ ๋ค์ด, ์ฌ์ง์ ํ์ํ ์ ์๋ ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๋๋ ๊ฒ๋ง์ผ๋ก๋ ์ฌ๋๋ค์ด ํฌํ ํ๋ฆฌ์ฆ ์ฌ์ฉ์ ๊ด์ฌ์ ๊ฐ๋๋ก ํ๋ ํ๋ฅญํ ์ฒซ ๋จ๊ณ๊ฐ ๋ ๊ฒ์ด๋ฉฐ, ์ดํ์๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์์ต๋๋ค(์
๋ก๋ ๋ฐ ๊ธฐํ ์ํ๋ ๊ฒ).
์งํ ์ค์ธ ์์ , https://github.com/photoprism/photoprism-mobile ์ฐธ์กฐ
์ฌ๊ธฐ์์ ๋ซ๊ฒ ์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์๋ง๋ ํ๋ฌํฐ๋ฅผ ์ฌ์ฉํ์ญ์์ค :)
๊ฐํธํ ๋จธํฐ๋ฆฌ์ผ ๋์์ธ ๋ด์ฅ!