-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_dummy_data.py
More file actions
192 lines (167 loc) Β· 20.2 KB
/
generate_dummy_data.py
File metadata and controls
192 lines (167 loc) Β· 20.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
#!/usr/bin/env python3
"""
λλ―Έ λ°μ΄ν° SQL μμ± μ€ν¬λ¦½νΈ
μ¬μ©μ 50λͺ
, κ²μκΈ 350κ° μμ±
"""
import random
from datetime import datetime, timedelta
# BCrypt ν΄μ (password123)
BCRYPT_HASH = "$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy"
# μ¬μ©μ μ΄λ¦ 리μ€νΈ
USER_NAMES = [
'κΉλ―Όμ', 'μ΄μ§μ', 'λ°μ€νΈ', 'μ΅μμ§', 'μ νμ', 'νμμ', 'μ€μ±λ―Ό', 'κ°λ―ΈλΌ', 'μ‘°νμ°', 'μλ€ν',
'μ‘μ¬ν', 'μ€μ§ν', 'μ λμ±', 'λ₯νλ', 'λ°°μμ§', 'μ λ―Όμ', 'νμλ¦°', 'κ³ μμ', 'λ¬Έμ±μ', 'μμ€ν',
'ꡬ민μ§', 'λ¨λν', 'λμμ°', 'λΌνμ°', 'λ§μ§ν', 'λ°±μμ€', 'μλμ±', 'μμ§ν', 'μ μΉλ―Ό', 'μνλ',
'μΈμ§ν', 'μ₯λ―Όμ', 'μ μ μ§', 'μ νλ', 'μ°¨λ―Όμ€', 'μ΅μμ°', 'νλ―Όμ', 'νμ€μ', 'νμ§μ', 'νμλΉ',
'ν©λ―Όμ§', 'κ°λμ', 'κΉν리', 'μ΄λ³ν', 'λ°λ³΄μ', 'μ΅μ°μ', 'μ μ λ―Έ', 'νμ§λ―Ό', 'κΉμν', 'μ΄λ―ΌνΈ'
]
# μΉ΄ν
κ³ λ¦¬λ³ κ²μκΈ ν
νλ¦Ώ
POST_TEMPLATES = {
'κ°λ°': [
('Spring Bootλ‘ REST API κ°λ°νκΈ°', 'Spring Bootλ₯Ό μ¬μ©ν΄μ REST APIλ₯Ό κ°λ°νλ λ°©λ²μ 곡μ ν©λλ€. λ¨Όμ νλ‘μ νΈλ₯Ό μμ±νκ³ μμ‘΄μ±μ μΆκ°ν΄μΌ ν©λλ€. build.gradleμ spring-boot-starter-webμ μΆκ°νμλ©΄ λ©λλ€. κ·Έ λ€μ Controllerλ₯Ό λ§λ€μ΄μ @RestController μ΄λ
Έν
μ΄μ
μ μ¬μ©νλ©΄ κ°λ¨νκ² REST APIλ₯Ό λ§λ€ μ μμ΄μ.', 'Spring Boot,Java,REST API,JPA'),
('React Hooks μλ²½ κ°μ΄λ', 'React Hooksλ₯Ό μ¬μ©νλ©΄μ λλ μ λ€μ 곡μ ν©λλ€. useStateλ μν κ΄λ¦¬λ₯Ό, useEffectλ μ¬μ΄λ μ΄ννΈλ₯Ό μ²λ¦¬νλλ° μ λ§ μ μ©ν©λλ€. νΉν 컀μ€ν
ν
μ λ§λ€μ΄μ μ¬μ¬μ© κ°λ₯ν λ‘μ§μ λΆλ¦¬νλ©΄ μ½λκ° ν¨μ¬ κΉλν΄μ§λλ€.', 'React,JavaScript,Hooks,Frontend'),
('PythonμΌλ‘ μΉ ν¬λ‘€λ§ λ°°μ°κΈ°', 'Pythonμ BeautifulSoupκ³Ό requests λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©ν΄μ μΉ ν¬λ‘€λ§μ ν΄λ³΄μμ΅λλ€. λ¨Όμ requests.get()μΌλ‘ μΉνμ΄μ§λ₯Ό κ°μ Έμ€κ³ , BeautifulSoupμΌλ‘ HTMLμ νμ±ν©λλ€. λ°μ΄ν°λ₯Ό μμ§ν νμλ pandasλ‘ μ 리νκ±°λ CSV νμΌλ‘ μ μ₯ν μ μμ΅λλ€.', 'Python,ν¬λ‘€λ§,BeautifulSoup,λ°μ΄ν°μμ§'),
('Dockerλ‘ κ°λ° νκ²½ ꡬμΆνκΈ°', 'Dockerλ₯Ό μ¬μ©ν΄μ κ°λ° νκ²½μ ꡬμΆνλ λ°©λ²μ μ 리νμ΅λλ€. Dockerfileμ μμ±ν΄μ μ΄λ―Έμ§λ₯Ό λ§λ€κ³ , docker-compose.ymlλ‘ μ¬λ¬ μλΉμ€λ₯Ό νλ²μ κ΄λ¦¬ν μ μμ΄μ. λ°μ΄ν°λ² μ΄μ€, λ°±μλ, νλ‘ νΈμλλ₯Ό κ°κ° 컨ν
μ΄λλ‘ λ§λ€μ΄μ μ€ννλ©΄ λ‘컬 νκ²½κ³Ό νλ‘λμ
νκ²½μ μ°¨μ΄λ₯Ό μ€μΌ μ μμ΅λλ€.', 'Docker,DevOps,컨ν
μ΄λ,μΈνλΌ'),
('TypeScriptλ‘ νμ
μμ ν μ½λ μμ±νκΈ°', 'TypeScriptλ₯Ό μ¬μ©νλ©΄μ λλ μ₯μ λ€μ 곡μ ν©λλ€. νμ
μ λͺ
μν΄μ μ»΄νμΌ νμμ μλ¬λ₯Ό μ‘μ μ μμ΄μ κ°λ° ν¨μ¨μ΄ μ λ§ μ’μμ‘μ΄μ. μΈν°νμ΄μ€μ νμ
λ³μΉμ μ¬μ©ν΄μ μ½λμ κ°λ
μ±λ λμμ§κ³ , 리ν©ν λ§ν λλ μμ ν©λλ€.', 'TypeScript,JavaScript,νμ
μμ€ν
,Frontend'),
('MySQL 쿼리 μ΅μ ν ν', 'MySQL 쿼리 μ±λ₯μ κ°μ νλ λ°©λ²λ€μ μ 리νμ΅λλ€. μΈλ±μ€λ₯Ό μ μ ν μ¬μ©νλ©΄ 쿼리 μλκ° ν¬κ² ν₯μλ©λλ€. EXPLAINμΌλ‘ μ€ν κ³νμ νμΈν΄μ μΈλ±μ€κ° μ λλ‘ μ¬μ©λλμ§ νμΈνμΈμ. JOINμ μ¬μ©ν λλ μμ ν
μ΄λΈμ λ¨Όμ μ‘°μΈνκ³ , WHERE 쑰건μ λ¨Όμ νν°λ§νλ κ²μ΄ μ’μ΅λλ€.', 'MySQL,λ°μ΄ν°λ² μ΄μ€,쿼리μ΅μ ν,SQL'),
('Git λΈλμΉ μ λ΅κ³Ό νμ
μν¬νλ‘μ°', 'Git Flowμ GitHub Flow κ°μ λΈλμΉ μ λ΅μ μ€μ νλ‘μ νΈμ μ μ©ν κ²½νμ 곡μ ν©λλ€. main λΈλμΉλ νμ λ°°ν¬ κ°λ₯ν μνλ‘ μ μ§νκ³ , feature λΈλμΉμμ μ κΈ°λ₯μ κ°λ°ν©λλ€. Pull Requestλ₯Ό ν΅ν΄ μ½λ 리뷰λ₯Ό λ°κ³ , CI/CD νμ΄νλΌμΈμΌλ‘ μλ ν
μ€νΈλ₯Ό μ€νν©λλ€.', 'Git,λ²μ κ΄λ¦¬,νμ
,DevOps'),
('Node.jsλ‘ μ€μκ° μ±ν
μλ² λ§λ€κΈ°', 'Socket.ioλ₯Ό μ¬μ©ν΄μ μ€μκ° μ±ν
μλ²λ₯Ό λ§λλ λ°©λ²μ μ 리νμ΅λλ€. WebSocketμ μ¬μ©νλ©΄ μλ²μ ν΄λΌμ΄μΈνΈκ° μλ°©ν₯ ν΅μ μ ν μ μμ΄μ. λ°©(room) κ°λ
μ μ¬μ©ν΄μ μ¬λ¬ μ±ν
λ°©μ λ§λ€ μ μκ³ , μ¬μ©μ μΈμ¦λ μΆκ°ν μ μμ΅λλ€.', 'Node.js,Socket.io,WebSocket,μ€μκ°ν΅μ '),
('Vue.js 3 Composition API μ¬μ©κΈ°', 'Vue.js 3μ Composition APIλ₯Ό μ¬μ©ν΄μ νλ‘μ νΈλ₯Ό μ§νν κ²½νμ 곡μ ν©λλ€. setup() ν¨μ μμμ reactive, refλ₯Ό μ¬μ©ν΄μ λ°μν λ°μ΄ν°λ₯Ό λ§λ€ μ μμ΄μ. computedμ watchλ‘ νμ μνμ μ¬μ΄λ μ΄ννΈλ₯Ό μ²λ¦¬ν μ μκ³ , λΌμ΄νμ¬μ΄ν΄ ν
λ μ¬μ©ν μ μμ΅λλ€.', 'Vue.js,JavaScript,Composition API,Frontend'),
('AWS EC2μ μΉ μ ν리μΌμ΄μ
λ°°ν¬νκΈ°', 'AWS EC2 μΈμ€ν΄μ€λ₯Ό μμ±νκ³ μΉ μ ν리μΌμ΄μ
μ λ°°ν¬νλ κ³Όμ μ μ 리νμ΅λλ€. λ¨Όμ EC2 μΈμ€ν΄μ€λ₯Ό μμ±νκ³ , 보μ κ·Έλ£Ήμμ νμν ν¬νΈλ₯Ό μ΄μ΄μ€λλ€. SSHλ‘ μ μν΄μ μλ² νκ²½μ μ€μ νκ³ , Nginxλ₯Ό μ€μΉν΄μ 리λ²μ€ νλ‘μλ‘ μ¬μ©ν©λλ€.', 'AWS,EC2,λ°°ν¬,μΈνλΌ,DevOps'),
],
'μ격μ¦': [
('μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ° ν©κ²© νκΈ°', 'μλ
νμΈμ! μ 보μ²λ¦¬κΈ°μ¬ μ€κΈ° μνμ ν©κ²©ν΄μ νκΈ°λ₯Ό λ¨κΉλλ€. λ¨Όμ μν ꡬμ±μ μκ³ λ¦¬μ¦ 3λ¬Έμ , SQL 2λ¬Έμ , μ
무νλ‘μΈμ€ 1λ¬Έμ λ‘ κ΅¬μ±λμ΄ μμ΅λλ€. μκ³ λ¦¬μ¦μ κΈ°μΆλ¬Έμ λ₯Ό λ§μ΄ νμ΄λ³΄λ κ²μ΄ μ€μν΄μ. νΉν μ λ ¬, νμ, μ¬κ· κ΄λ ¨ λ¬Έμ κ° μμ£Ό λμ΅λλ€.', 'μ 보μ²λ¦¬κΈ°μ¬,ITμ격μ¦,ν©κ²©νκΈ°'),
('SQLD μκ²©μ¦ κ³΅λΆ λ°©λ²', 'SQLD(SQL κ°λ°μ) μ격μ¦μ μ€λΉνλ©΄μ μ 리ν λ΄μ©μ 곡μ ν©λλ€. μνμ μ£Όκ΄μκ³Ό λ¨λ΅νμΌλ‘ ꡬμ±λμ΄ μκ³ , λ°μ΄ν° λͺ¨λΈλ§κ³Ό SQL κΈ°λ³Έ/νμ©μ΄ μ£Όμ λ΄μ©μ
λλ€. λ°μ΄ν° λͺ¨λΈλ§μμλ μ κ·ν, μν°ν°, κ΄κ³ λ±μ μ΄ν΄ν΄μΌ νκ³ , SQLμμλ SELECT, JOIN, μλΈμΏΌλ¦¬ λ±μ μ μμμΌ ν΄μ.', 'SQLD,λ°μ΄ν°λ² μ΄μ€,μ격μ¦'),
('μ»΄ν 1κΈ μ€κΈ° ν©κ²© λ
Ένμ°', 'μ»΄ν¨ν°νμ©λ₯λ ₯ 1κΈ μ€κΈ° μνμ ν©κ²©ν νκΈ°λ₯Ό λ¨κΉλλ€. μνμ μμ
κ³Ό μ‘μΈμ€ λ κ³Όλͺ©μΌλ‘ ꡬμ±λμ΄ μκ³ , κ°κ° 40λΆμ© μ£Όμ΄μ§λλ€. μμ
μμλ ν¨μ, νΌλ²ν
μ΄λΈ, μ°¨νΈ λ±μ λ€λ£° μ μμ΄μΌ νκ³ , μ‘μΈμ€μμλ 쿼리μ νΌ, λ³΄κ³ μλ₯Ό λ§λ€ μ μμ΄μΌ ν΄μ.', 'μ»΄ν1κΈ,μμ
,μ‘μΈμ€,μ격μ¦'),
('ν μ΅ 900μ λ¬μ± νκΈ°', 'ν μ΅ μνμμ 900μ μ λ°μμ΅λλ€! κ³΅λΆ λ°©λ²μ 곡μ ν©λλ€. λ¨Όμ LCλ λ§€μΌ 1μκ°μ© λ£κΈ° μ°μ΅μ νμ΄μ. νΉν ννΈ 3, 4λ λ¬Έμ λ₯Ό λ¨Όμ μ½κ³ λ£λ κ²μ΄ μ€μν©λλ€. RCλ λ¬Έλ²κ³Ό μ΄νλ₯Ό κΎΈμ€ν 곡λΆνκ³ , μκ° μμ ν μ μλλ‘ μ°μ΅νμ΅λλ€.', 'ν μ΅,μμ΄,μ΄νμ격μ¦'),
('리λ
μ€λ§μ€ν° 2κΈ ν©κ²© νκΈ°', '리λ
μ€λ§μ€ν° 2κΈ μνμ ν©κ²©νμ΅λλ€! κ³΅λΆ λ°©λ²μ 곡μ ν©λλ€. μνμ νκΈ°μ μ€κΈ°λ‘ λλμ΄μ Έ μκ³ , νκΈ°λ κ°κ΄μ, μ€κΈ°λ μμ νκ³Ό μ€λ¬΄νμ
λλ€. νκΈ°μμλ 리λ
μ€ κΈ°λ³Έ λͺ
λ Ήμ΄, νμΌ μμ€ν
, λ€νΈμν¬ μ€μ λ±μ μμμΌ ν΄μ.', '리λ
μ€λ§μ€ν°,리λ
μ€,μ격μ¦'),
],
'μμ΄': [
('μμ΄ νν μ€ν°λ λͺ¨μ§ν©λλ€', 'μλ
νμΈμ! μμ΄ νν μ€λ ₯μ ν₯μμν€κ³ μΆμ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό νμμΌ μ λ
7μμ μ¨λΌμΈμΌλ‘ λ§λμ μμ΄λ‘ λνλ₯Ό λλλ μκ°μ κ°μ§ μμ μ
λλ€. μ£Όμ λ λ§€μ£Ό μ ν΄μ νλ μ ν
μ΄μ
μ νκ³ , μμ λ‘κ² ν λ‘ νλ νμμΌλ‘ μ§ννλ €κ³ ν΄μ.', 'μμ΄νν,μ€ν°λ,μ¨λΌμΈ'),
('ν μ΅ μ€νΌνΉ μν μ€λΉ μ€ν°λ', 'ν μ΅ μ€νΌνΉ μνμ μ€λΉνλ λΆλ€κ³Ό ν¨κ» 곡λΆνκ³ μΆμ΅λλ€. λ§€μ£Ό λͺ©μμΌ μ λ
μ λ§λμ λͺ¨μκ³ μ¬λ₯Ό νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. κ° ννΈλ³λ‘ μ°μ΅νκ³ , λ°μκ³Ό μ΅μλ ν¨κ» κ°μ ν΄λκ°μ.', 'ν μ΅μ€νΌνΉ,μμ΄,μ€ν°λ'),
('μμ΄ μμ μ½κΈ° λͺ¨μ', 'μμ΄ μμλ₯Ό ν¨κ» μ½κ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό μΌμμΌ μ€νμ λ§λμ ν μ±ν°μ© μ½κ³ , λ΄μ©μ μμ΄λ‘ ν λ‘ νλ μκ°μ κ°μ§ μμ μ
λλ€. μ΄λ°μλ μ¬μ΄ μ±
λΆν° μμν΄μ μ μ°¨ λμ΄λλ₯Ό λμ¬λκ°μ.', 'μμ΄μμ,λ
μ,ν λ‘ '),
('μ€ν½ μν μ€λΉ μ€ν°λ', 'μ€ν½ μνμ μ€λΉνλ λΆλ€κ³Ό ν¨κ» 곡λΆνκ³ μΆμ΅λλ€. λ§€μ£Ό μμμΌ μ λ
μ λ§λμ λͺ¨μκ³ μ¬λ₯Ό νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. κ° μ νλ³λ‘ μ°μ΅νκ³ , μμ°μ€λ¬μ΄ ννμ μ΅νλ κ²μ΄ λͺ©νμ
λλ€.', 'μ€ν½,μμ΄,μ€ν°λ'),
('μμ΄ μλ¬Έ μ€ν°λ λͺ¨μ§', 'μμ΄ μλ¬Έ μ€λ ₯μ ν₯μμν€κ³ μΆμ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό κΈμμΌ μ λ
μ λ§λμ μ£Όμ λ₯Ό μ ν΄μ μμΈμ΄λ₯Ό μ°κ³ , μλ‘ μ²¨μνλ μκ°μ κ°μ§ μμ μ
λλ€. λ¬Έλ²κ³Ό ννμ ν¨κ» 곡λΆνκ³ , λ€μν μ£Όμ λ‘ μ°μ΅ν΄λκ°μ.', 'μμ΄μλ¬Έ,μμΈμ΄,μ€ν°λ'),
],
'λ
μ': [
('μ 1κΆ λ
μ λͺ¨μ λͺ¨μ§', 'μλ
νμΈμ! λ§€μ ν κΆμ© μ±
μ μ½κ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό ν μμΌ μ€νμ λ§λμ μ½μ μ±
μ λν΄ μ΄μΌκΈ° λλλ μκ°μ κ°μ§ μμ μ
λλ€. μμ€, μμΈμ΄, μκΈ°κ³λ°μ λ± λ€μν μ₯λ₯΄λ₯Ό μ½μ΄μ.', 'λ
μ,ν λ‘ ,λͺ¨μ'),
('κ²½μ/κ²½μ λμ μ€ν°λ', 'κ²½μκ³Ό κ²½μ κ΄λ ¨ λμλ₯Ό ν¨κ» μ½κ³ ν λ‘ νλ μ€ν°λλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό μΌμμΌ μ€μ μ λ§λμ ν μ±ν°μ© μ½κ³ , λ΄μ©μ μ 리νκ³ ν λ‘ νλ μκ°μ κ°μ§ μμ μ
λλ€. μ€μ μ¬λ‘μ μ°κ²°ν΄μ μκ°ν΄λ³΄κ³ , μλ‘μ μ견μ λλλ©΄μ κΉμ΄ μκ² κ³΅λΆν΄μ.', 'κ²½μ,κ²½μ ,λ
μ,μ€ν°λ'),
('μ² νμ ν¨κ» μ½κΈ° λͺ¨μ', 'μ² νμλ₯Ό ν¨κ» μ½κ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό μμμΌ μ λ
μ λ§λμ ν μ±ν°μ© μ½κ³ , λ΄μ©μ μ 리νκ³ ν λ‘ νλ μκ°μ κ°μ§ μμ μ
λλ€. μμ μ² νκ³Ό λμ μ² νμ λ²κ°μκ°λ©° μ½μ΄μ.', 'μ² ν,λ
μ,ν λ‘ '),
('μμ¬μ μ½κΈ° μ€ν°λ', 'μμ¬μλ₯Ό ν¨κ» μ½κ³ ν λ‘ νλ μ€ν°λλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό λͺ©μμΌ μ λ
μ λ§λμ ν μ±ν°μ© μ½κ³ , λ΄μ©μ μ 리νκ³ ν λ‘ νλ μκ°μ κ°μ§ μμ μ
λλ€. νκ΅μ¬μ μΈκ³μ¬λ₯Ό λ²κ°μκ°λ©° μ½μ΄μ.', 'μμ¬,λ
μ,μ€ν°λ'),
('κ³Όν λμ μ½κΈ° λͺ¨μ', 'κ³Όν λμλ₯Ό ν¨κ» μ½κ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό κΈμμΌ μ λ
μ λ§λμ ν μ±ν°μ© μ½κ³ , λ΄μ©μ μ 리νκ³ ν λ‘ νλ μκ°μ κ°μ§ μμ μ
λλ€. 물리, νν, μλ¬Ό λ± λ€μν λΆμΌλ₯Ό μ½μ΄μ.', 'κ³Όν,λ
μ,ν λ‘ '),
],
'μ·¨μ
': [
('IT κΈ°μ
λ©΄μ μ€λΉ μ€ν°λ', 'IT κΈ°μ
λ©΄μ μ μ€λΉνλ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό μμμΌ μ λ
μ λ§λμ λ©΄μ μ§λ¬Έμ μ°μ΅νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. κΈ°μ λ©΄μ κ³Ό μΈμ± λ©΄μ μ λͺ¨λ μ€λΉν΄μ.', 'λ©΄μ ,IT,μ·¨μ
μ€λΉ'),
('ν¬νΈν΄λ¦¬μ€ μμ± μ€ν°λ', 'ν¬νΈν΄λ¦¬μ€λ₯Ό μμ±νλ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό νμμΌ μ λ
μ λ§λμ ν¬νΈν΄λ¦¬μ€λ₯Ό 곡μ νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. λμμΈκ³Ό λ΄μ©μ λͺ¨λ κ°μ ν΄λκ°μ.', 'ν¬νΈν΄λ¦¬μ€,μ·¨μ
μ€λΉ'),
('μμμ μμ± μ€ν°λ', 'μκΈ°μκ°μλ₯Ό μμ±νλ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό μμμΌ μ λ
μ λ§λμ μμμλ₯Ό 곡μ νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. κ° κΈ°μ
λ³λ‘ λ§μΆ€ μμμλ₯Ό μμ±νλ λ°©λ²μ ν¨κ» 곡λΆν΄μ.', 'μμμ,μ·¨μ
μ€λΉ'),
('μ½λ© ν
μ€νΈ μ€λΉ μ€ν°λ', 'μ½λ© ν
μ€νΈλ₯Ό μ€λΉνλ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό λͺ©μμΌ μ λ
μ λ§λμ μκ³ λ¦¬μ¦ λ¬Έμ λ₯Ό νκ³ , μλ‘μ νμ΄λ₯Ό 곡μ νλ μκ°μ κ°μ§ μμ μ
λλ€. λ°±μ€, νλ‘κ·Έλλ¨Έμ€ λ¬Έμ λ₯Ό ν¨κ» νμ΄μ.', 'μ½λ©ν
μ€νΈ,μκ³ λ¦¬μ¦,μ·¨μ
μ€λΉ'),
('곡기μ
μ·¨μ
μ€λΉ μ€ν°λ', '곡기μ
μ·¨μ
μ μ€λΉνλ λΆλ€κ³Ό ν¨κ» μ€ν°λλ₯Ό νκ³ μΆμ΅λλ€. λ§€μ£Ό κΈμμΌ μ λ
μ λ§λμ μν λ¬Έμ λ₯Ό νκ³ , μλ‘ νΌλλ°±μ μ£Όκ³ λ°λ μκ°μ κ°μ§ μμ μ
λλ€. μΈμ μ± κ²μ¬μ μ 곡 μνμ λͺ¨λ μ€λΉν΄μ.', '곡기μ
,μ·¨μ
μ€λΉ'),
],
'κΈ°ν': [
('μκ° μ€ν°λ λͺ¨μ§', 'μκ°λ₯Ό ν¨κ» λ°°μ°κ³ μ€μ²νλ μ€ν°λλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό μΌμμΌ μ€μ μ λ§λμ μκ°λ₯Ό ν¨κ» νλ μκ°μ κ°μ§ μμ μ
λλ€. μ΄λ³΄μλ νμν©λλ€! μλ‘ λμκ°λ©° μ€λ ₯μ ν€μλκ°μ.', 'μκ°,μ΄λ,건κ°'),
('μ리 μ€ν°λ λͺ¨μ§', 'μ리λ₯Ό ν¨κ» λ°°μ°κ³ μ€μ²νλ μ€ν°λλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό ν μμΌ μ€νμ λ§λμ μ리λ₯Ό ν¨κ» νλ μκ°μ κ°μ§ μμ μ
λλ€. λ€μν μ리λ₯Ό λ§λ€μ΄λ³΄κ³ , λ μνΌλ₯Ό 곡μ ν΄μ.', 'μ리,μ·¨λ―Έ'),
('μ¬μ§ 촬μ μ€ν°λ', 'μ¬μ§ 촬μμ ν¨κ» λ°°μ°κ³ μ€μ²νλ μ€ν°λλ₯Ό λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό μΌμμΌ μ€νμ λ§λμ μ¬μ§μ ν¨κ» μ°λ μκ°μ κ°μ§ μμ μ
λλ€. λ€μν μ₯μλ₯Ό λ°©λ¬Έν΄μ μ¬μ§μ μ°κ³ , μλ‘μ μνμ 곡μ ν΄μ.', 'μ¬μ§,μ·¨λ―Έ'),
('μμ
κ°μ λͺ¨μ', 'μμ
μ ν¨κ» κ°μνκ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό κΈμμΌ μ λ
μ λ§λμ μμ
μ ν¨κ» λ£κ³ , κ°μμ λλλ μκ°μ κ°μ§ μμ μ
λλ€. λ€μν μ₯λ₯΄μ μμ
μ λ€μ΄λ³΄κ³ , μλ‘μ μκ°μ 곡μ ν΄μ.', 'μμ
,μ·¨λ―Έ'),
('μν κ°μ λͺ¨μ', 'μνλ₯Ό ν¨κ» κ°μνκ³ ν λ‘ νλ λͺ¨μμ λ§λ€κ³ μΆμ΅λλ€. λ§€μ£Ό ν μμΌ μ λ
μ λ§λμ μνλ₯Ό ν¨κ» λ³΄κ³ , κ°μμ λλλ μκ°μ κ°μ§ μμ μ
λλ€. λ€μν μ₯λ₯΄μ μνλ₯Ό λ³΄κ³ , μλ‘μ μκ°μ 곡μ ν΄μ.', 'μν,μ·¨λ―Έ'),
]
}
# μΉ΄ν
κ³ λ¦¬λ³ κ²μκΈ μ
POST_COUNTS = {
'κ°λ°': 100,
'μ격μ¦': 70,
'μμ΄': 70,
'λ
μ': 50,
'μ·¨μ
': 40,
'κΈ°ν': 20
}
def generate_users():
"""μ¬μ©μ 50λͺ
μμ±"""
sql = "-- ============================================================\n"
sql += "-- 1. μ¬μ©μ κ³μ 50κ° μμ±\n"
sql += "-- ============================================================\n\n"
sql += "SET FOREIGN_KEY_CHECKS = 0;\n\n"
sql += "INSERT INTO `users` (`real_name`, `birth_date`, `email`, `password`, `email_verified`, `role`, `created_at`, `updated_at`) VALUES\n"
users = []
# νκΈ μ΄λ¦μ μλ¬Έ μ΄λ©μΌλ‘ λ³ννλ λ§€ν
name_to_email = {
'κΉλ―Όμ': 'kim.minsu', 'μ΄μ§μ': 'lee.jieun', 'λ°μ€νΈ': 'park.junho', 'μ΅μμ§': 'choi.sujin', 'μ νμ': 'jung.taeyoung',
'νμμ': 'han.soyoung', 'μ€μ±λ―Ό': 'yoon.sungmin', 'κ°λ―ΈλΌ': 'kang.mira', 'μ‘°νμ°': 'cho.hyunwoo', 'μλ€ν': 'lim.dahye',
'μ‘μ¬ν': 'song.jaehyun', 'μ€μ§ν': 'oh.jihye', 'μ λμ±': 'shin.dongwook', 'λ₯νλ': 'ryu.haneul', 'λ°°μμ§': 'bae.sujin',
'μ λ―Όμ': 'jeon.minseok', 'νμλ¦°': 'hong.yerin', 'κ³ μμ': 'go.youngsu', 'λ¬Έμ±μ': 'moon.chaewon', 'μμ€ν': 'yang.junhyuk',
'ꡬ민μ§': 'gu.minji', 'λ¨λν': 'nam.dohyun', 'λμμ°': 'do.seoyeon', 'λΌνμ°': 'ra.hyunwoo', 'λ§μ§ν': 'ma.jihun',
'λ°±μμ€': 'baek.seoyoon', 'μλμ±': 'seo.dongwook', 'μμ§ν': 'an.jihye', 'μ μΉλ―Ό': 'yu.seungmin', 'μνλ': 'eun.haneul',
'μΈμ§ν': 'in.jihun', 'μ₯λ―Όμ': 'jang.minseo', 'μ μ μ§': 'jeon.yujin', 'μ νλ': 'jung.haneul', 'μ°¨λ―Όμ€': 'cha.minjun',
'μ΅μμ°': 'choi.seoyeon', 'νλ―Όμ': 'tae.minsu', 'νμ€μ': 'ha.junyoung', 'νμ§μ': 'heo.jiwon', 'νμλΉ': 'hyun.subin',
'ν©λ―Όμ§': 'hwang.minji', 'κ°λμ': 'kang.dongwon', 'κΉν리': 'kim.taeri', 'μ΄λ³ν': 'lee.byunghun', 'λ°λ³΄μ': 'park.boyoung',
'μ΅μ°μ': 'choi.woosik', 'μ μ λ―Έ': 'jung.yumi', 'νμ§λ―Ό': 'han.jimin', 'κΉμν': 'kim.soohyun', 'μ΄λ―ΌνΈ': 'lee.minho'
}
for i, name in enumerate(USER_NAMES):
year = random.randint(1994, 1999)
month = random.randint(1, 12)
day = random.randint(1, 28)
email = name_to_email.get(name, f'user{i+1}') + '@example.com'
days_ago = random.randint(1, 180)
users.append(f"('{name}', '{year}-{month:02d}-{day:02d}', '{email}', '{BCRYPT_HASH}', 1, 0, NOW() - INTERVAL {days_ago} DAY, NOW() - INTERVAL {days_ago} DAY)")
sql += ',\n'.join(users) + ';\n\n'
sql += "SET FOREIGN_KEY_CHECKS = 1;\n\n"
return sql
def generate_posts():
"""κ²μκΈ 350κ° μμ±"""
sql = "-- ============================================================\n"
sql += "-- 2. κ²μκΈ 350κ° μμ±\n"
sql += "-- ============================================================\n\n"
post_id = 1
all_posts = []
for category, count in POST_COUNTS.items():
templates = POST_TEMPLATES.get(category, [])
for i in range(count):
if i < len(templates):
title, content, tags = templates[i]
else:
# ν
νλ¦Ώμ΄ λΆμ‘±νλ©΄ λ³νν΄μ μμ±
base_idx = i % len(templates)
base_title, base_content, base_tags = templates[base_idx]
title = f"{base_title} ({i+1})"
content = f"{base_content}\n\nμ΄λ²μλ {i+1}λ²μ§Έλ‘ μμ±νλ κ²μκΈμ
λλ€. μ€μ νλ‘μ νΈμμ κ²½νν λ΄μ©μ λ°νμΌλ‘ μμΈνκ² μ 리νμ΅λλ€. κΆκΈν μ μ΄ μμΌλ©΄ λκΈλ‘ λ¨κ²¨μ£ΌμΈμ!"
tags = base_tags
user_id = random.randint(1, 50)
view_count = random.randint(10, 500)
like_count = random.randint(1, 50)
days_ago = random.randint(1, 180)
# SQL μ΄μ€μΌμ΄ν
title = title.replace("'", "\\'")
content = content.replace("'", "\\'").replace('\n', '\\n')
tags = tags.replace("'", "\\'")
all_posts.append(f"({user_id}, '{title}', '{content}', '{category}', '{tags}', {view_count}, {like_count}, NOW() - INTERVAL {days_ago} DAY, NOW() - INTERVAL {days_ago} DAY)")
post_id += 1
sql += "INSERT INTO `posts` (`user_id`, `title`, `content`, `category`, `tags`, `view_count`, `like_count`, `created_at`, `updated_at`) VALUES\n"
sql += ',\n'.join(all_posts) + ';\n\n'
return sql
def generate_footer():
"""μλ£ λ©μμ§"""
sql = "-- ============================================================\n"
sql += "-- μλ£ λ©μμ§\n"
sql += "-- ============================================================\n"
sql += "SELECT 'λλ―Έ λ°μ΄ν° μμ± μλ£!' AS message;\n"
sql += "SELECT COUNT(*) AS total_users FROM users;\n"
sql += "SELECT COUNT(*) AS total_posts FROM posts;\n"
sql += "SELECT category, COUNT(*) AS count FROM posts GROUP BY category;\n"
return sql
def main():
"""λ©μΈ ν¨μ"""
sql = "-- ============================================================\n"
sql += "-- Study With Me λλ―Έ λ°μ΄ν° μμ± μ€ν¬λ¦½νΈ\n"
sql += "-- μ¬μ©μ 50λͺ
, κ²μκΈ 350κ° (κ° μΉ΄ν
κ³ λ¦¬λ³ λΆλ°°)\n"
sql += "-- ============================================================\n\n"
sql += generate_users()
sql += generate_posts()
sql += generate_footer()
with open('dummy_data.sql', 'w', encoding='utf-8') as f:
f.write(sql)
print("dummy_data.sql νμΌμ΄ μμ±λμμ΅λλ€!")
print(f"- μ¬μ©μ: 50λͺ
")
print(f"- κ²μκΈ: 350κ°")
for category, count in POST_COUNTS.items():
print(f" - {category}: {count}κ°")
if __name__ == '__main__':
main()