merefield
(Robert)
1192
์ด ํ๋ฌ๊ทธ์ธ์ ์์ง ์๊ธ ์ง์์ ๋ฐ์ง ๋ชปํ๊ณ ์์ด ๊ทธ ๋ฏธ๋๊ฐ ๋ค์ ๋ถํ์คํฉ๋๋ค. ํ์ง๋ง ๋น๋ถ๊ฐ ๋ค์ ํญ๋ชฉ๋ค์ ์ถ๊ฐํ์ต๋๋ค:
@viddekla ์ด ๋ณ๊ฒฝ ์ฌํญ์ผ๋ก ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
Locations๊ฐ ํ๋ฅญํ๊ณ ์ ๊ฐ ์ฌ๊ธฐ์ ์ข์ ์ผ์ ํ๋ค๊ณ ์๊ฐํ์ ๋ค๋ฉด ์ปคํผ ํ ์์ ์ฌ์ฃผ์ธ์ 
5๊ฐ์ ์ข์์
merefield
(Robert)
1193
์์น ์ ํ๊ธฐ์์ ์์น ์
๋ ฅ ํ๋๋ฅผ ๋นํ์ฑํํ๋ฉด, ํ์ฌ ์์น๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ๋ ์ ๋ฒํผ์ด ์ฃผ์ ์์น์๋ ์๋ํฉ๋๋ค. 
์คํ์ผ๋ง๋ง ์กฐ๊ธ ์กฐ์ ํ๋ฉด ๋ฉ๋๋ค โฆ
4๊ฐ์ ์ข์์
merefield
(Robert)
1194
์ค์ํ ๋ฒ๊ทธ ์์ , ์
๋ฐ์ดํธ๋ฅผ ์งํํด ์ฃผ์ธ์:
(์ด๋ฒ ์ฃผ๋ง ํจ์น ์ดํ ์
๋ ฅ๋ ์ฌ์ฉ์ ์์น์๋ง ์ํฅ์ ๋ฏธ์น๋ฉฐ, ํด๋น ์์น๋ฅผ ๋ค์ ์
๋ ฅํ๋ฉด ๋ฉ๋๋ค)
4๊ฐ์ ์ข์์
์ํ์
จ๋ค์! ์ฌ์ฉ์ ์ด๋ฆ ์๋์ ๊นจ์ง ํ๋๊ทธ๊ฐ ํ๋ ๋ ๋ณด์ธ๋ฐ, ํน์ ์ด์ ๊ฐ ์์๊น์?
2๊ฐ์ ์ข์์
Moin
1196
์ด๊ฒ์ด Locations Plugin ๐ ์์ ์จ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.
5๊ฐ์ ์ข์์
merefield
(Robert)
1197
๋ค, ์ด์ ๋ ๋ค ์คํํ ํ์๊ฐ ์์ต๋๋ค. Locations ํ๋ฌ๊ทธ์ธ์์๋ ๊ตญ๊ฐ ์ฝ๋๋ฅผ ํ์
ํ๋ ๊ฒ์ด ๋งค์ฐ ์ฝ๊ธฐ ๋๋ฌธ์, ์ด์ ๋ง์ถฐ ๊ตญ๊ธฐ๋ฅผ ํจ๊ป ์ ๊ณตํ๋ ๊ฒ์ ์ด๋จ๊น์?
3๊ฐ์ ์ข์์
RGJ
(Richard - Communiteq)
1198
@merefield ๊ตญ๊ฐ ์ฝ๋๋ฅผ ์๋ฌธ์๋ก ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค
2๊ฐ์ ์ข์์
merefield
(Robert)
1199
Locations์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๊ตญ๊ฐ ์ฝ๋(country codes)๋ ์๋ฌธ์์
๋๋ค. ์๋ง๋ ์๋ํํฐ ๋ฐ์ดํฐ ์ ๊ณต์
์ฒด์ ๊ด๋ จ์ด ์์ ์ ์์ต๋๋ค.
๋ ์์ธํ ํ์ธ์ด ํ์ํ์ ๋ถ๊ป๋ ์ ๋ฃ ์ง์์ ์ ๊ณตํ๋ฉฐ, PR๋ ํ์ํฉ๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ๋ก ๊ทธ๊ฑฐ์์. ์๋ฌธ์๋ก ์๋์ผ๋ก ๋ณ๊ฒฝํ๋ ๋ก๋๋์ด์. Mapquest์ Mapbox๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ์ต๋๋ค. Rob, ๊ฐ์ธ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ฒ ์ต๋๋ค.
2๊ฐ์ ์ข์์
gilles
1202
์๋
ํ์ธ์, ์ ๋ง ๋ฉ์ง ํ๋ฌ๊ทธ์ธ ๊ฐ์ฌํฉ๋๋ค.
์ง๋์ ๋ด ์ฃผ์ ์ ์ด๋ฆ์ ํ์ํ๊ณ ์ถ์๋ฐ, ํ์ฌ๋ ์์น๋ง ํ์๋๊ณ ์์ต๋๋ค.
ํ์ฑํํด์ผ ํ ์ค์ ์ด ์์๊น์?
๊ฐ์ฌํฉ๋๋ค
1๊ฐ์ ์ข์์
merefield
(Robert)
1203
์ผ๋ถ ์
๋ฐ์ดํธ ๋ด์ฉ์
๋๋ค:
@Renato ๋์ด ์นดํ
๊ณ ๋ฆฌ ์ค์ ์ ๋ฌธ์ ๋ฅผ ์น์ ํ๊ฒ ์์ ํด ์ฃผ์
จ์ต๋๋ค:
๋ฌ์์์ด ๋ฒ์ญ์ ๋ํ ๊ธฐ์ฌ๊ฐ ์์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
๋ง์ง๋ง์ผ๋ก, '๊ทผ์ฒ(Nearby)'๋ผ๋ ์คํ์ ์ธ ์๋ก์ด ํ ํฝ ๋ชฉ๋ก ํํฐ๋ฅผ ์ถ๊ฐํ์ต๋๋ค:
์ด ํํฐ๋ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๊ฐ ์ ๊ณตํ ์์น์์ x km(์ค์ ๊ฐ) ์ด๋ด์ ๋ชจ๋ ํ ํฝ์ ๋ชฉ๋ก์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
@Barney_Lodge ๋์ ์ฌ์ฉ ์ฌ๋ก์์ ์๊ฐ์ ๋ฐ์ ์ด ๊ธฐ๋ฅ์ ๋ง๋ค์๊ณ , ์ผ์์ผ ๋๋ถ๋ถ์ ์ด ์์
์ ๋ณด๋์ต๋๋ค 
์ด ์
๋ฐ์ดํธ๋ก ์ธํด ๋ชจ๋ฌ์์ ํ ํฝ์ ์ธ๋ผ์ธ ์์น ์ ํ๊ธฐ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋๋ก ์์ ๋์์ต๋๋ค.
8๊ฐ์ ์ข์์
์คํธ!! Discourse๊ฐ ์ ๋ง ๋ง์์ ๋ค์ด์!
๊ฐ์ฌํฉ๋๋ค
Barney Lodge
3๊ฐ์ ์ข์์
merefield
(Robert)
1205
๊ณผ๊ฑฐ์ ์ต๊ทผ ๋ฆด๋ฆฌ์ค์์ UserLocation ์์ฑ ๋ก์ง์ ๋ฒ๊ทธ๊ฐ ์์์ต๋๋ค. ์ด์ ์์ ๋์์ง๋ง, ์ผ๋ถ ๋ฐ์ดํฐ์ ์ํฅ์ ๋ฏธ์ณค์ ์ ์์ต๋๋ค.
ํ์ฌ๋ ํฐ ๋ฌธ์ ๊ฐ ๋์ง ์์ง๋ง, ํฅํ ์ง๋์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
Rails ์ฝ์์์ ๋ค์ ์ฝ๋๋ฅผ ์คํํ์ฌ ํด๋น ๋ฌธ์ ๊ฐ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค:
array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
๊ฒฐ๊ณผ๊ฐ ๋น์ด ์์ง ์๋ค๋ฉด, ๋ค์ ์ฝ๋๋ฅผ ์คํํ์ญ์์ค:
array_for_fix.each do |id|
Locations::UserLocationProcess.upsert(id)
end
๋ ๋ค๋ฅธ ์์ ๋ฐฉ๋ฒ์ ์ฌ์ฉ์ ์ง๋ ์์น๋ฅผ ์๋์ผ๋ก ๋ค์ ์
๋ ฅํ๋ ๊ฒ์
๋๋ค. ์ฆ, ํฅํ ์ฌ์ฉ์ ์์น ํธ์ง ์ ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ๋จ์ํ ๋ฎ์ด์ฐ๊ธฐ๋ฉ๋๋ค.
๋ถํธ์ ๋๋ ค ์ฃ์กํฉ๋๋ค.
๋ง์ด๊ทธ๋ ์ด์
๋๋ ๋ ์ดํฌ ํ์คํฌ๋ฅผ ์์ฑํด ์ฃผ์ค ๋ถ์ด ์๋ค๋ฉด, PR์ ํ์ํฉ๋๋ค.
6๊ฐ์ ์ข์์
์ด ๊ธฐ๋ฅ์ด ๊ตฌํ ๊ฐ๋ฅํ๊ฐ์?
์ฌ์ฉ์๊ฐ ์ค๋ ๋๋ ๋ต๋ณ์ ๊ฒ์ํ๋ฉด, ํ์ฌ IP ์ฃผ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์น๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ์ฌ ์ค๋ ๋/๊ฒ์๋ฌผ์์ ์๋ฐํ ์๋์ ํ์ํ๋ ๊ฒ์
๋๋ค. ์ฌ์ฉ์๊ฐ ์๋์ผ๋ก ์์น๋ฅผ ์ ํํ๊ฑฐ๋ ํ๋กํ์์ ์ค์ ํ ํ์๊ฐ ์๋๋ก ํ๋ ๋ฐฉ์์
๋๋ค.
์ด๋ฅผ ์ํด ์ ๋ฃ ์ง์์ ์ ๊ณตํ ์ํฅ์ด ์์ต๋๋ค.
์งํ(ZHIHU)์ ๊ฐ์ ๋ฐฉ์์
๋๋ค.
1๊ฐ์ ์ข์์
merefield
(Robert)
1207
์ฌ์ฉ์ ์์น์ ๋น์๋ฐ์ ์
๋ฐ์ดํธ๋ ์ด ํ๋ฌ๊ทธ์ธ์๊ฒ๋ ํฐ ๋ณํ๊ฐ ๋ ๊ฒ์
๋๋ค. ์ง๊ธ๊น์ง๋ ์๋ฐ์ ์ธ ์ ์ถ์ ์์กดํด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ ์ฌ์ฉ์์ ๋์๊ฐ ํ์์ ์ด์๊ฑฐ๋ ์.
ํ์ง๋ง ๊ทธ ํ์์ฑ์ ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ฌ์ฉ์ ์์น ์์ง์ด ํจ์ฌ ๋ ์ ๋ขฐํ ์ ์๊ฒ ๋๊ณ , ์ฌ์ฉ์ ํ๋์ ๋ํ ์์กด๋๋ ์ค์ด๋ค ๊ฒ์
๋๋ค.
์ฌ์ค ๋ชจ๋ ๊ฒ์๋ฌผ์๋ ์ด๋ฏธ ์ฌ์ฉ์ ์์น๋ฅผ ๋ํ๋ด๋ ๊ฒ์๋ฌผ ๋ผ๋ฒจ์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด ๋ถ๋ถ์ ์ด๋ฏธ ์ฒ๋ฆฌ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
๊ฒ์ ์์ฑ ์ ์ฌ์ดํธ ์ต์
์ผ๋ก ์ฌ์ฉ์ ์์น๋ฅผ ์๋์ผ๋ก ์
๋ฐ์ดํธํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ค๋ฉด ์คํ ๊ฐ๋ฅํ๊ณ ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค:
- ์ฌ์ดํธ๊ฐ ์ฝ๊ด(T&C)์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
- ์์น๋ ์ถฉ๋ถํ ๋๋ต์ ์ธ ์์ค์ด์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๊ฐ์ฅ ๊ฐ๊น์ด ๋์ ์์ค๊น์ง? ์ ์๊ฐ์ ์ฌ์ฉ์๋ฅผ ๊ฑฐ๋ฆฌ ๋จ์๋ก ์ถ์ ํ๋ ๊ฒ์ ์ฌ์ดํธ์ ํธ๊ฐ๋๋ฅผ ๋จ์ด๋จ๋ฆด ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ๋ฐ์ดํฐ์ ์ผ๋ฐ์ ์ผ๋ก ์คํ ๊ฐ๋ฅํ๋ค๋ฉด ๋์, ์ฃผ(์ฑ), ๋๋ ๊ตญ๊ฐ ์์ค์ผ๋ก ์ธ๋ถํ(granularity)๋ฅผ ์ค์ ํ ์ ์๋ ์ต์
์ด ์์ผ๋ฉด ์ข๊ฒ ์ต๋๋ค. ์ด ๋ฌธ์ ์ ๋ํด ๋ค๋ฅธ ๊ด๋ฆฌ์๋ถ๋ค์ ์๊ฒฌ๋ ๊ถ๊ธํฉ๋๋ค.
Discourse ์ฝ์ด์ ๋ด์ฅ๋ ํ์ค IP ์ง์คํ ๋ ์ด์
์๋น์ค์ธ MaxMind๋ฅผ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ด์์ ์ผ ๊ฒ์
๋๋ค.
์ฌ์ดํธ ์ต์
์ผ๋ก ๋ฐฑ์๋ ์๋ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํ ์คํฐ์์ญ์ ๊ณ ๋ คํด ๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ํฉ์์ ์ ์ฐพ์ ์ ์๋์ง ํ์ธํ๊ธฐ ์ํด ๊ฐ์ธ ๋ฉ์์ง๋ก ์ฐ๋ฝ๋๋ฆฌ๊ฒ ์ต๋๋ค.
4๊ฐ์ ์ข์์
๋์ ์์ค๊น์ง๋ง ์ ํํ๋ฉด ๋ฉ๋๋ค. ๊ฑฐ๋ฆฌ๊น์ง ์ ํํ ์๋ฉด ๋๋ฌด ๋ฌด์ญ์ต๋๋ค.
4๊ฐ์ ์ข์์
nathank
(Nathan Kershaw)
1209
์ฌ์ดํธ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ธ๋ถ ์ ๋ ์ต์
์ ์ ๊ณตํ๋ ๊ฒ์ ํ๋ฅญํ ๊ฒ์
๋๋ค. ์ฌ์ฉ์๊ฐ ์ธ๋ถ ์ ๋๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ตํธ์์ํ ์ ์๋ ๊ธฐ๋ฅ๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
์ ๊ฐ ์ด์ํ๋ 2๊ฐ์ ์ ๊ตญ ํฌ๋ผ์๋ ์ฃผ(ๅท) ๋จ์ ์ธ๋ถ ์ ๋๊ฐ ์ ํฉํ ๊ฒ์
๋๋ค. ์ง์ญ ํฌ๋ผ์๋ ๋๋ค ๋จ์ ์ธ๋ถ ์ ๋๊ฐ ์ ํฉํ ๊ฒ์
๋๋ค.
๋ชจ๋ ์ต์
์ ์ฌ์ฉํ๋ ์ฌ์ดํธ๋ค์ ์ฝ๊ฒ ์์ํ ์ ์์ต๋๋ค.
3๊ฐ์ ์ข์์
Roi
1210
๊ฐ์ฌํฉ๋๋ค. ์คํํด ๋ณด๋ ๋ฌด์ธ๊ฐ๋ฅผ ์ฐพ์์ต๋๋ค:
discourse(prod)> array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
=> [175, 12, 578, 1347, 1355, 1, 590]
discourse(prod)* array_for_fix.each do |id|
discourse(prod)* Locations::UserLocationProcess.upsert(id)
discourse(prod)> end
=> [175, 12, 578, 1347, 1355, 1, 590]
๊ทธ ํ ์ฒซ ๋ฒ์งธ ๋ช
๋ น์ด๋ฅผ ๋ค์ ์คํํ๋๋ฐ ์ฌ์ ํ 590์ด ๋ฐ๊ฒฌ๋์๊ณ , ๋ ๋ฒ์งธ ๋ช
๋ น์ด๋ฅผ ์คํํด๋ ์ฌ๋ผ์ง์ง ์์์ต๋๋ค:
discourse(prod)> array_for_fix = Locations::UserLocation.where(state: "state").pluck(:user_id)
=> [590]
discourse(prod)* array_for_fix.each do |id|
discourse(prod)* Locations::UserLocationProcess.upsert(id)
discourse(prod)> end
=> [590]
์ด๋ป๊ฒ ํด์ผ ํ๋์? 
merefield
(Robert)
1211
IP๋ฅผ ํตํ ์ฌ์ฉ์ ์์น ์ค์ ์์
์ @็ฅๅไผ ์ @nathank ๋์ด ์คํฐ์๋ก ๋์์ฃผ์
จ๋ค๋ ์์์ ์ ํ๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค 
์ด ์์
์ ๋น๋ถ๊ฐ ์คํ์ ์ธ ๋จ๊ณ์ ๋จธ๋ฌผ๊ฒ ์ง๋ง, ์ด๋ฏธ PR์ด ์ฌ๋ผ์ ์๋ค๋ ์ ๋ ๊ธฐ์ ๋ง์์ผ๋ก ์๋ ค๋๋ฆฝ๋๋ค:
์ด๊ฒ์ ๋จ์ํ ์กฐํ๊ฐ ์๋๋๋ค. ๊ทธ ์ด์์ ์ํํฉ๋๋ค. ์ฌ์ฉ์ ํ๋ผ์ด๋ฒ์๋ฅผ ๋ณดํธํ๋ฉด์ ์ปค๋ฎค๋ํฐ์ ์ ๋ขฐ๋ฅผ ๋์ด๊ธฐ ์ํด, ์๋์ผ๋ก ๊ฒฐ์ ๋ ๋ชจ๋ ์์น์ ํน์ ์ธ๋ถํ ์์ค(์: ๋์)์ ์ค์ ํ ์ ์๋๋ก ํฉ๋๋ค.
(๋ค, VPN๊ณผ ๊ด๋ จํ์ฌ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ์
๋๋ค).
์ด ๊ธฐ๋ฅ์ด ์ถฉ๋ถํ ์ ์๋ํ๋ค๊ณ ํ๋จ๋๋ฉด ๋ณํฉ(merge)ํ ์์ ์
๋๋ค.
์ด์จ๋ ์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ ํ๋๊ทธ(feature flag) ๋ค์ ๋ฐฐ์น๋์ด ์์ต๋๋ค.
์ง์์ ์ผ๋ก ์
๋ฐ์ดํธ๋ฅผ ์๋ ค๋๋ฆฌ๊ฒ ์ง๋ง, ์ค๋ ๋ ์๊ฐ์
๋๋ค. ์ด๋ ์๋ง๋ ์ค๋ซ๋์ Locations ํ๋ฌ๊ทธ์ธ์ ์ถ๊ฐ๋ ๊ธฐ๋ฅ ์ค ๊ฐ์ฅ ํ๋ฅญํ ๊ฒ ์ค ํ๋๊ฐ ๋ ๊ฒ์
๋๋ค.
๋ค์ ํ๋ฒ @็ฅๅไผ ๋๊ณผ @nathank ๋๊ป ๊ฐ์ฌ๋๋ฆฝ๋๋ค !!
๊ทธ๋ฆฌ๊ณ ๋ค, ๊ธฐ์กด ๋ชจ๋ ์ฌ์ฉ์๋ฅผ ์ํด ์ด ์์
์ ์ํํ๋ rake ํ์คํฌ๋ ๋ ์ถ๊ฐ๋ ๊ฒ์
๋๋ค โฆ
12๊ฐ์ ์ข์์
Canapin
(Coin-coin le Canapin)
1212
์ด๋ฐ ๊ฒฝ์ฐ์ ํ๋ฌ๊ทธ์ธ์ ํตํด Discourse ๋ฐฑ์๋์์ ๊ณต์ง์ฌํญ์ ํ์ํ ์ ์์๊น์?
์ฌ๋ฌ๋ถ์ ๊ฒ์๋ฌผ์ ๋์ณค์ ์๋ ์๊ฒ ์ต๋๋ค. 
1๊ฐ์ ์ข์์