Plots2: "# of People"์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ํ† ํ”ฝ ์นด๋“œ์˜ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜ ์•ž์— "-" ์ œ๊ฑฐ

์— ๋งŒ๋“  2020๋…„ 05์›” 28์ผ  ยท  25์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: publiclab/plots2

๋ฌธ์ œ๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

"# of People" ์ •๋ ฌ ์˜ต์…˜์„ ํด๋ฆญํ•˜๋ฉด ํ† ํ”ฝ ์นด๋“œ์˜ ๊ฒŒ์‹œ๋ฌผ ์ˆ˜ ์•ž์— ์ž‘์€ "-"๊ฐ€ ํ‘œ์‹œ๋˜์–ด ๊ฒŒ์‹œ๋ฌผ ์ˆ˜๊ฐ€ ์Œ์ˆ˜์ธ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฐ์ƒท ์ฐธ์กฐ:

Screen Shot 2020-05-20 at 10 36 42 AM (1)

๋‹น์‹ ์€ ๋‹น์‹ ์ด ๋ณด์ง€ ๋ชปํ•œ ๊ฒƒ์„๋ณด๊ณ  ๋ฌด์—‡์„ ๊ธฐ๋Œ€ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์–‘์˜ ์ •์ˆ˜๋ฅผ ๋ณผ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ณผ ๊ณณ์„ ์•Œ๋ ค์ฃผ์„ธ์š”

https://publiclab.org/tags?sort=followers&order=asc

๊ท€ํ•˜์˜ PublicLab.org ์‚ฌ์šฉ์ž ์ด๋ฆ„์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

๋ฆฌ์ฆˆ

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

์•ˆ๋…•ํ•˜์„ธ์š” @ebarry ์ €๋Š” ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :sweat_smile: https://github.com/publiclab/plots2/pull/7609 ์—์„œ ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ž˜๋ชป๋œ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ๊ฐ :disappointed: @jywarren ์—์„œ ๋ฐ˜๋ณต ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋„์›€์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :sweat_smile:

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

์—ฌ๊ธฐ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ ๋งํฌ๊ฐ€ ์žˆ๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @ebarry ์ €๋Š” ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค :sweat_smile: https://github.com/publiclab/plots2/pull/7609 ์—์„œ ์ด๊ฒƒ์„ ๋ณ€๊ฒฝํ–ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๊ทธ๊ฒƒ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“ค๊ณ  ์ž˜๋ชป๋œ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ–ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ๊ฐ :disappointed: @jywarren ์—์„œ ๋ฐ˜๋ณต ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋„์›€์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :sweat_smile:

@Tlazypanda ์•ˆ๋…•ํ•˜์„ธ์š”, Tag.counter ์œ ํ˜• ์ฝ”๋“œ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค๋ฅธ ์žฅ์†Œ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ํ•ด๋‹น ์ฝ”๋“œ๋กœ ์ „ํ™˜ํ•ด ๋ณผ๊นŒ์š” ?

https://github.com/publiclab/plots2/pull/7609/files#diff -8fe92870a7f027a46eed82a51c5c16bcR118

๊ทธ๋Ÿฌ๋‚˜ ์นด์šดํŠธ๋Š” ๋งค์šฐ ์•ฝ๊ฐ„ ๋–จ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ŠคํŒธ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ณ  ์ˆ˜ํ•™์— ์•ฝ๊ฐ„ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๋ฌธ์ œ์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์นด์šดํŠธ ๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

image

image

236 ์นด์šดํŠธ๊ฐ€ ๊ณ„์‚ฐ๋˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ์•„ ๊ทธ ๊ฐ’์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ปจํŠธ๋กค๋Ÿฌ ์ƒ์„ฑ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/views/tag/show.html.erb#L58

๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ณ„์‚ฐ๋˜๋Š” ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L551 -L560

์•ˆ๋…•ํ•˜์„ธ์š” @jywarren , tag / : id์—์„œ ๋ณผ ์ˆ˜์žˆ๋Š” ๊ฒƒ, ์ฆ‰ ํƒœ๊ทธ์˜
๊ทธ๋ž˜์„œ, ์šฐ๋ฆฌ๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ tag#show ์—์„œ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•˜๊ณ  ํ† ํ”ฝ ์นด๋“œ์˜ ๋งจ ์•„๋ž˜์— ๊ฐœ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ์ˆ˜ํ•™ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
ํƒœ๊ทธ ์ด๋ฆ„์ด ์žˆ๋Š” ๋ฉ”๋ชจ ์ˆ˜-ํ† ํ”ฝ ์นด๋“œ์— ํ‘œ์‹œ๋œ ๋ฉ”๋ชจ ์ˆ˜

tag#show์—์„œ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”๋ชจ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ๋งž์Šต๋‹ˆ๋‹ค! https://github.com/publiclab/plots2/issues/6855#issuecomment -578331475์—์„œ "๋‹จ์ผ ์†Œ์Šค ์†Œ์Šค"์˜ ๊ฐœ๋…์— ์ฃผ๋ชฉํ•˜์‹ญ์‹œ์˜ค.

https://github.com/publiclab/plots2/pull/7476(#6855 ๊ธฐ์ค€)์—์„œ ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@urvashigupta7 ์ฐธ์—ฌ ํ•ด์ฃผ์…”์„œ

๋˜ํ•œ https://github.com/publiclab/plots2/pull/7476/ ์—์„œ ์ŠคํŒธ์„ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ค„์— .where(status: 1) ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L551 -L560

์ด ์ฝ”๋“œ๋Š” ์ŠคํŒธ์„ ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š๋Š” ์ด๊ฒƒ์—๋„ ์˜์กดํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/f4dfdcbae4dfa60b0ec357081ee1fae6f2089436/app/models/node.rb#L609 -L618

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด ์ฝ”๋“œ๋Š” ๋™์ผํ•œ ํ•„ํ„ฐ๋กœ ์ŠคํŒธ์„ ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/f4dfdcbae4dfa60b0ec357081ee1fae6f2089436/app/models/tag.rb#L118 -L124

ํ . /after/ ๋‹ค์Œ ํ–‰์„ ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— @total_posts ๊ณ„์‚ฐ์—์„œ ์ŠคํŒธ์„ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/c056cb0b97ebc6b34184ec3dfa9a83e1096395f9/app/controllers/tag_controller.rb#L204 -L218

๊ทธ๋Ÿฌ๋‚˜ Tag.counter ๋ฐ Node.for_tagname_and_type ํ•„ํ„ฐ๋งํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ถˆ๊ทœ์น™์ด ์•„๋‹๊นŒ?

์—ฌ๊ธฐ์˜ ๊ณ„์‚ฐ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์˜ณ์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด https://stable.publiclab.org/tags๋Š” ์ด์ œ balloon-mapping ๋Œ€ํ•œ 692๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์„ ๋‚˜์—ดํ•˜์ง€๋งŒ ๋‹ค์Œ์€ ํ•ด๋‹น ํƒœ๊ทธ์— ๋Œ€ํ•œ ํ†ต๊ณ„์ž…๋‹ˆ๋‹ค(์•ˆ์ • ์ƒํƒœ).

image

์ด ์ˆ˜์ • ์‚ฌํ•ญ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. https://github.com/publiclab/plots2/pull/8245

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์‹œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ์žฌ๊ฐœ๋ด‰...์†๊ฐ€๋ฝ ๐Ÿคž

์ด์ œ https://github.com/publiclab/plots2/pull/8245 ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ๊ทธ๋ฆฌ๊ณ  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ์–ด์„œ ๋„ˆ๋ฌด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๊ฒƒ์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค...

์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. 573 posts ยป -- ํ 

์—ฐ๊ตฌ๋…ธํŠธ 469
์งˆ๋ฌธ 37
์œ„ํ‚ค ํŽ˜์ด์ง€ 77
์‚ฌ๋žŒ๋“ค 346

๋‚ด ๋ง์€, ๋ฉ”๋ชจ + ์œ„ํ‚ค = 546...? ๊ทธ๋ฆฌ๊ณ  ํ”Œ๋Ÿฌ์Šค ์งˆ๋ฌธ์€ 583์ž…๋‹ˆ๊นŒ?

์ด์ œ ์•ˆ์ •์—์„œ tests ํƒœ๊ทธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ์บ์‹ฑ์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ์˜์‹ฌ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํƒœ๊ทธ๋ฅผ ์ƒˆ ๋ฉ”๋ชจ https://stable.publiclab.org/notes/aidanswope/05-21-2019/angel-s-point-balloon-map-updated ์— ์ถ”๊ฐ€ํ•ด๋„ ๋ฉ”๋ชจ ํƒญ์ด ์ƒ์„ฑ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. 7์—์„œ 8, tag.count ๋Š” tag.run_count ์˜ ๊ฒฐ๊ณผ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 8์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ

https://stable.publiclab.org/tag/tests

์ข‹์•„์š”, ํƒญ ์ˆ˜๋ฅผ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/e97eff7464a544a97f4b38f169f76250600b3148/app/models/node.rb#L621 -L630

Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').where.not(nid: qids).count => 470

์ฃผ์ œ ์นด๋“œ ์ˆ˜์™€ ๋น„๊ต:

NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').where.not(nid: qids).count => 467

๐Ÿ˜ญ

์ด ์„ธ ๊ฐ€์ง€๋Š” ์ฐจ์ด์ ์ž…๋‹ˆ๋‹ค. [6129, 7236, 7414] --

[#,

,

]

์•„์ฃผ ์ด์ƒํ•œ! 2๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 3๊ฐœ์˜ ๋ฉ”๋ชจ๋Š” 10๊ฐœ์˜ ๋ˆ„๋ฝ๋œ ๋ฉ”๋ชจ์™€ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฉฐ(์•„์ง ์งˆ๋ฌธ์„ ์‚ดํŽด๋ณด์ง€ ์•Š์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•จ), ์ด 3๊ฐœ์˜ ๋ฉ”๋ชจ๋Š” 2013๋…„ 2์›”์— ํ•˜๋‚˜๊ฐ€ ์žˆ๊ณ  2013๋…„ 5์›”์— 2๊ฐœ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๊ณ ๋Š” ์ •์ƒ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

(์—…๋ฐ์ดํŠธ: ์ค‘๋ณต๋œ ํƒœ๊ทธ ์ด๋ฆ„์€ ์•„๋ž˜ ์ฐธ์กฐ)

๋˜ํ•œ ํฅ๋ฏธ๋กœ์šด ์ :

Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').where(nid: qids).count => 29

์ด๊ฒƒ์€ ๋‹ค์Œ์— ๋™์˜ํ•ฉ๋‹ˆ๋‹ค.

NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').where(nid: qids).count

๋Œ€ 37์€ ํƒญ์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

https://github.com/publiclab/plots2/blob/e97eff7464a544a97f4b38f169f76250600b3148/app/models/node.rb#L640 -L646

์•„ํ•˜! ๋งˆ์ง€๋ง‰ ์„น์…˜์€ question:balloon-mapping ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ๊ฒŒ์‹œ๋ฌผ์ด ๊ธฐ๋ณธ balloon-mapping ํƒœ๊ทธ๊ฐ€ ์—†๋”๋ผ๋„ ํ•ด๋‹น ๊ฐœ์ˆ˜์— ํฌํ•จ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค!!!

๋‹ค์Œ 8๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์—๋Š” question:balloon-mapping ์žˆ์ง€๋งŒ balloon-mapping ๊ฐ™์Šต๋‹ˆ๋‹ค.

[13556, 15762, 16426, 18994, 20694, 11301, 12251, 19625]

์ข‹์•„์š”, 2๊ฐœ์˜ ๋…ธ๋“œ ๋‚ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ˆ˜๋™์œผ๋กœ ๋น„๊ตํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

irb(main):040:0> NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').count
=> 496
irb(main):041:0> Node.where(status: 1, type: 'note').includes(:tag).references(:term_data).where('term_data.name = ?', 'balloon-mapping').count
=> 499
irb(main):022:0> Node.where(status: 1, type: 'note').includes(:revision, :tag).references(:term_data, :node_revisions).where('term_data.name = ? OR term_data.parent = ?', 'balloon-mapping', 'balloon-mapping').collect(&:nid)
=> [146, 253, 254, 268, 403, 511, 724, 732, 743, 913, 1482, 1489, 1620, 1626, 1627, 1632, 1715, 1849, 1968, 1994, 2126, 2138, 2144, 2476, 2589, 2930, 3115, 3325, 4649, 4952, 5038, 5220, 5250, 5978, 6934, 7050, 7189, 7294, 7314, 7491, 7577, 7593, 7995, 8189, 8907, 8913, 8914, 8950, 9019, 9032, 9042, 9086, 9417, 9434, 9742, 9888, 9977, 10541, 11019, 11100, 11223, 11574, 11582, 11827, 12201, 12240, 12491, 12619, 12708, 13095, 13424, 13945, 14022, 14095, 14183, 14185, 14219, 14515, 14572, 14587, 14597, 14600, 14611, 14620, 14813, 14907, 14909, 14983, 15545, 15568, 16591, 16653, 16746, 16877, 18316, 19153, 19272, 19462, 19558, 19578, 19620, 19762, 20331, 23549, 24101, 24102, 1795, 6635, 347, 369, 439, 444, 792, 861, 1665, 1668, 1962, 2135, 2143, 2152, 2245, 2277, 2783, 2784, 3563, 3635, 3670, 4482, 4516, 4755, 4760, 4923, 4925, 6059, 7641, 10181, 10489, 11101, 11724, 13243, 13880, 13948, 17322, 64, 166, 202, 344, 1666, 1816, 1818, 1819, 2919, 3354, 3736, 3821, 4087, 8020, 8947, 9301, 11199, 11260, 11261, 11755, 12161, 1544, 1739, 1742, 1892, 2006, 5494, 9353, 10705, 828, 1515, 1786, 1877, 1926, 1949, 2121, 2625, 2666, 2677, 2846, 2892, 2961, 4092, 4907, 5394, 5415, 5664, 7132, 7367, 7368, 7717, 7964, 8400, 10243, 6175, 9507, 4636, 6293, 3014, 6624, 9806, 10289, 10554, 11278, 11391, 12104, 12622, 12894, 13143, 9935, 10036, 10196, 10450, 11283, 11719, 11769, 12237, 10246, 10605, 2462, 9497, 1889, 2131, 2443, 3026, 4127, 4252, 4673, 5538, 5893, 6608, 8034, 8902, 8959, 9644, 9707, 10045, 10162, 10335, 10336, 10337, 10373, 10540, 10570, 11107, 11110, 11112, 11124, 11143, 11175, 11298, 11336, 12053, 12203, 12590, 16984, 19515, 19580, 23822, 2163, 3634, 7620, 10166, 11056, 11319, 11589, 1541, 1652, 1676, 1677, 1746, 2154, 2237, 2275, 2311, 2623, 2785, 3454, 3652, 3822, 4014, 4691, 4720, 4950, 5161, 7785, 8866, 8926, 8928, 8937, 8958, 8986, 9759, 9915, 10101, 10230, 10244, 10302, 10311, 10374, 10523, 10602, 11021, 11078, 11103, 11253, 11726, 11988, 12686, 12752, 12757, 13400, 13845, 14116, 14660, 14713, 14756, 1716, 2660, 7191, 7192, 1743, 1636, 1900, 9317, 10651, 1741, 13904, 3096, 2352, 2824, 4091, 2715, 6080, 6082, 2732, 3801, 3908, 4545, 7121, 10284, 13791, 10631, 4921, 6751, 9429, 9743, 11577, 17331, 6073, 9858, 10711, 11118, 6525, 10267, 9034, 11252, 11268, 8033, 8868, 10159, 10214, 9027, 9785, 9033, 9076, 9299, 14501, 14508, 14562, 21733, 10282, 9909, 11178, 11738, 10024, 12667, 11262, 11343, 11978, 11983, 11992, 11826, 11061, 10227, 10428, 11077, 11131, 11137, 11280, 11281, 11518, 11551, 11807, 11812, 11947, 12039, 14158, 14729, 14943, 15641, 16273, 16349, 18560, 19269, 19286, 21547, 10343, 14852, 14901, 15352, 15387, 10612, 10638, 10986, 10994, 20181, 11002, 11127, 11128, 11183, 12166, 11342, 11494, 11955, 11673, 11707, 11711, 12190, 18839, 13802, 14595, 12227, 15912, 14007, 13093, 13096, 12981, 13102, 13160, 13194, 13196, 13227, 13242, 13267, 13278, 13281, 13298, 14168, 15161, 23143, 14058, 14766, 13748, 13839, 15603, 14241, 14179, 14239, 14246, 14240, 14255, 14488, 14487, 14245, 14785, 15160, 14703, 14995, 16571, 15172, 15179, 15424, 15713, 15732, 16141, 16284, 16334, 16382, 17387, 17498, 17499, 18498, 16960, 19689, 17815, 19394, 19464, 19650, 19955, 19476, 19477, 23203, 6129, 7236, 7414]

๋Œ€:


irb(main):024:0> NodeTag.joins(:node).where(tid: 10).where('node.status = 1 AND node.type = "note"').collect(&:nid)
=> [146, 253, 254, 268, 403, 511, 724, 732, 743, 913, 1482, 1489, 1620, 1626, 1627, 1632, 1715, 1849, 1968, 1994, 2126, 2138, 2144, 2476, 2589, 2930, 3115, 3325, 4649, 4952, 5038, 5220, 5250, 5978, 6934, 7050, 7189, 7294, 7314, 7491, 7577, 7593, 7995, 8189, 8907, 8913, 8914, 8950, 9019, 9032, 9042, 9086, 9417, 9434, 9742, 9888, 9977, 10541, 11019, 11100, 11223, 11574, 11582, 11827, 12201, 12240, 12491, 12619, 12708, 13095, 13424, 13945, 14022, 14095, 14183, 14185, 14219, 14515, 14572, 14587, 14597, 14600, 14611, 14620, 14813, 14907, 14909, 14983, 15545, 15568, 16591, 16653, 16746, 16877, 18316, 19153, 19272, 19462, 19558, 19578, 19620, 19762, 20331, 23549, 24101, 24102, 1795, 6635, 347, 369, 439, 444, 792, 861, 1665, 1668, 1962, 2135, 2143, 2152, 2245, 2277, 2783, 2784, 3563, 3635, 3670, 4482, 4516, 4755, 4760, 4923, 4925, 6059, 7641, 10181, 10489, 11101, 11724, 13243, 13880, 13948, 17322, 64, 166, 202, 344, 1666, 1816, 1818, 1819, 2919, 3354, 3736, 3821, 4087, 8020, 8947, 9301, 11199, 11260, 11261, 11755, 12161, 1544, 1739, 1742, 1892, 2006, 5494, 9353, 10705, 828, 1515, 1786, 1877, 1926, 1949, 2121, 2625, 2666, 2677, 2846, 2892, 2961, 4092, 4907, 5394, 5415, 5664, 7132, 7367, 7368, 7717, 7964, 8400, 10243, 6175, 9507, 4636, 6293, 3014, 6624, 9806, 10289, 10554, 11278, 11391, 12104, 12622, 12894, 13143, 9935, 10036, 10196, 10450, 11283, 11719, 11769, 12237, 10246, 10605, 2462, 9497, 1889, 2131, 2443, 3026, 4127, 4252, 4673, 5538, 5893, 6608, 8034, 8902, 8959, 9644, 9707, 10045, 10162, 10335, 10336, 10337, 10373, 10540, 10570, 11107, 11110, 11112, 11124, 11143, 11175, 11298, 11336, 12053, 12203, 12590, 16984, 19515, 19580, 23822, 2163, 3634, 7620, 10166, 11056, 11319, 11589, 1541, 1652, 1676, 1677, 1746, 2154, 2237, 2275, 2311, 2623, 2785, 3454, 3652, 3822, 4014, 4691, 4720, 4950, 5161, 7785, 8866, 8926, 8928, 8937, 8958, 8986, 9759, 9915, 10101, 10230, 10244, 10302, 10311, 10374, 10523, 10602, 11021, 11078, 11103, 11253, 11726, 11988, 12686, 12752, 12757, 13400, 13845, 14116, 14660, 14713, 14756, 1716, 2660, 7191, 7192, 1743, 1636, 1900, 9317, 10651, 1741, 13904, 3096, 2352, 2824, 4091, 2715, 6080, 6082, 2732, 3801, 3908, 4545, 7121, 10284, 13791, 10631, 4921, 6751, 9429, 9743, 11577, 17331, 6073, 9858, 10711, 11118, 6525, 10267, 9034, 11252, 11268, 8033, 8868, 10159, 10214, 9027, 9785, 9033, 9076, 9299, 14501, 14508, 14562, 21733, 10282, 9909, 11178, 11738, 10024, 12667, 11262, 11343, 11978, 11983, 11992, 11826, 11061, 10227, 10428, 11077, 11131, 11137, 11280, 11281, 11518, 11551, 11807, 11812, 11947, 12039, 14158, 14729, 14943, 15641, 16273, 16349, 18560, 19269, 19286, 21547, 10343, 14852, 14901, 15352, 15387, 10612, 10638, 10986, 10994, 20181, 11002, 11127, 11128, 11183, 12166, 11342, 11494, 11955, 11673, 11707, 11711, 12190, 18839, 13802, 14595, 12227, 15912, 14007, 13093, 13096, 12981, 13102, 13160, 13194, 13196, 13227, 13242, 13267, 13278, 13281, 13298, 14168, 15161, 23143, 14058, 14766, 13748, 13839, 15603, 14241, 14179, 14239, 14246, 14240, 14255, 14488, 14487, 14245, 14785, 15160, 14703, 14995, 16571, 15172, 15179, 15424, 15713, 15732, 16141, 16284, 16334, 16382, 17387, 17498, 17499, 18498, 16960, 19689, 17815, 19394, 19464, 19650, 19955, 19476, 19477, 23203]

์•„ํ•˜. ์•„๋งˆ๋„ ์ด๊ฒƒ์€:

Tag.where(name: 'balloon-mapping').length => 4
Tag.where(name: 'balloon-mapping').collect(&:tid) => [10, 3205, 3591, 4032]

์˜ˆ, ์ด๊ฒƒ์ด ๋ถˆ์ผ์น˜์ž…๋‹ˆ๋‹ค.

irb(main):045:0> NodeTag.joins(:node).where(tid: [10, 3205, 3591, 4032]).where('node.status = 1 AND node.type = "note"').count
=> 499
irb(main):046:0> Node.where(status: 1, type: 'note').includes(:tag).references(:term_data).where('term_data.name = ?', 'balloon-mapping').count
=> 499

irb(main):050:0> Tag.where(name: 'balloon-mapping').collect(&:count)
=> [574, 1, 1, 1]

๊ทธ๋Ÿฌ๋‚˜ ํŠนํžˆ #7334์˜ method ๋˜๋Š” project ๋ฒ„๊ทธ๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

irb(main):047:0> Tag.where(name: 'method').collect(&:tid)
=> [14474]
irb(main):048:0> Tag.where(name: 'project').collect(&:tid)
=> [14751]

์ž, ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ํƒœ๊ทธ๋ฅผ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

irb(main):053:0> NodeTag.where(tid: [3205, 3591, 4032]).each do |nt|
irb(main):054:1* nt.tid = 10
irb(main):055:1> nt.save
irb(main):056:1> end

๊ทธ๋Ÿฌ๋‚˜ DB์— ๋” ๋งŽ์€ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋” ํฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์›ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์˜ˆ, 28๊ฐœ์˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

irb(main):063:0> Tag.count
=> 18532
irb(main):065:0> Tag.all.collect(&:name).uniq.count
=> 18504


irb(main):069:0> (Tag.all - Tag.all.group(:name)).collect(&:name)
=> ["fold-up", "gulf-coast", "kite-mapping", "gulf-coast", "brooklyn", "new-york-city", "balloon-mapping", "spectrometer", "farmhack", "white-balance", "fresh-kills", "balloon-mapping", "balloon-mapping", "kite-mapping", "newsletter", "newsletter", "passenger-pigeon", "jamaica-bay", "mobile-spectrometer", "infragram-sandbox", "mailing-lists", "diy-kite", "water-sensing", "carbon-arc", "diy-kite", "diy-kite", "workplace", "emergencies"]

์ง€๊ธˆ ๋‚ด ์ถ”์ฒœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ๋งŽ์ด ์ขํ˜”๊ณ  ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. "๊ณ ์ŠคํŠธ" ํƒœ๊ทธ - ํƒœ๊ทธ ์ด๋ฆ„์ด ์ค‘๋ณต๋˜์–ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ผ๋ถ€๋Š” ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(ํ•ด๊ฒฐ๋˜์—ˆ์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋‹ค๋ฅธ ํƒœ๊ทธ์— ๋Œ€ํ•ด ~15๊ฐœ์˜ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๊ฐ€ ์žˆ์Œ).
  2. question:_____ ํ˜•์‹ ํƒœ๊ทธ๋Š” /tag/____ ํŽ˜์ด์ง€์˜ ์งˆ๋ฌธ ํƒญ์—์„œ ๊ณ„์‚ฐ๋˜์ง€๋งŒ ์ž์ฒด ๊ธฐ๋ณธ ํƒœ๊ทธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์ฃผ์ œ ์นด๋“œ์—๋Š” ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ: 8๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์—๋Š” question:balloon-mapping ์žˆ์ง€๋งŒ balloon-mapping ๊ฐ€ ์—†์œผ๋ฏ€๋กœ 8๋งŒํผ ์นด์šดํŠธ๋ฅผ ๋˜์ง‘๋‹ˆ๋‹ค.

(2)์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฒฌํ•ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ทธ๊ฒƒ์„ ๊ธฐ๋กํ•˜๊ณ  ์ธ์‹ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๊ฒƒ์„ ํ•ด๊ฒฐํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(์–ด์จŒ๋“  ๊นจ๋—ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์ƒ๊ฐ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ชจ๋“  ํŒŒ๊ธฐ ํ›„์—๋„ balloon-mapping ๋Œ€ํ•ด ์—ฌ์ „ํžˆ 1์˜ ๋ถˆ์ผ์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ํฐ ํƒœ๊ทธ ์ค‘ ํ•˜๋‚˜์ด๊ณ  ํ•ด๋‹น ๋ฌธ์ œ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น  ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๋ณธ์งˆ์ ์œผ๋กœ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๊ดœ์ฐฎ์•„์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ๋„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค!

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