tg_send_zon 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tg_send_zon.rb +115 -73
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ae6550d47b01219b01eab762905c79dcb56b83764354f60b955eacee0680a641
4
- data.tar.gz: 448dc9d1cdb95423614a2a09fc54e53209107f4bbfd2029fa200e15bb825151a
3
+ metadata.gz: ecc986791e229ed38c94fe2c59d53c5694ab765fdfd3dd2f048ee8aa74a5b829
4
+ data.tar.gz: e6f5c5fd5610306a4b9df6442eb5917b14c45534846961a3542cda6c4a277363
5
5
  SHA512:
6
- metadata.gz: 98b700ebdcdb31a5d58fbf2848b6ef6ab694904e732b92b895551cf50b1cb74511cf9c953cd8b9fecba02e1d694178486d49f17494c6ac0de44d7a5663ba67e0
7
- data.tar.gz: 145896e5d9c8131b7f7464a2400ef68fa2337fab918b864080c66973ccab6f6823e773625d8bfc60d675827e0ac88c75b86bbf34a8df14d20db677da9f2ba41e
6
+ metadata.gz: 868324a6b0d36fd844a529faf6e1f22d42f91178fe662fd92184799ffaabebf8637c72550e2b164d5ab0a602ac1f3360fc87e7e4618727ceff46d0ca64850eaf
7
+ data.tar.gz: 9b72108eb9b06d46b6a37071ee18fe71c1d00528a09e1f41d8e4feac099c9f8054a8dba157511efa8e5e34f3c4809ff18e302bdab0e9559c7ad5a343c378f432
data/lib/tg_send_zon.rb CHANGED
@@ -1156,68 +1156,106 @@ class Wordpress
1156
1156
  @data['table'].pop
1157
1157
  }
1158
1158
  }
1159
- button(' 그룹 URL 불러오기 '){
1159
+ button('그룹 URL 불러오기 ') {
1160
1160
  top 0
1161
1161
  left 2
1162
- on_clicked{
1162
+ on_clicked {
1163
1163
  file = open_file
1164
1164
  if file != nil
1165
- file_data = File.open(file, 'r', :encoding => 'utf-8').read()
1166
- file_data.split("\n").each do |i|
1167
- i3 = i.to_s.force_encoding('utf-8').to_s
1168
- i2 = i3.split(',')
1169
- @data['table'] << [false, i2[0].to_s, 1,1,0,0]
1170
- @data['table'] << [false, i2[0].to_s, 1,1,0,0]
1171
- @data['table'].pop
1165
+ Thread.new do
1166
+ begin
1167
+ # 생성: 스레드에서 메인 스레드로 데이터를 전송
1168
+ queue = Queue.new
1169
+
1170
+ # 파일을 번에 읽어들임
1171
+ file_data = IO.readlines(file, chomp: true)
1172
+
1173
+ # 100줄씩 배치로 처리
1174
+ batch_size = 1000
1175
+ total_lines = file_data.size
1176
+
1177
+ threads = [] # 스레드 배열
1178
+ (0..total_lines - 1).step(batch_size) do |i|
1179
+ batch = file_data[i, batch_size] # 배치 크기만큼 처리
1180
+
1181
+ # 각 배치마다 새로운 스레드로 처리
1182
+ threads << Thread.new do
1183
+ batch.each do |line|
1184
+ i3 = line.to_s.force_encoding('utf-8')
1185
+ i2 = i3.split(',')
1186
+
1187
+ # 데이터를 큐에 추가
1188
+ queue << [false, i2[0].to_s, 1, 1, 0, 0]
1189
+ end
1190
+ end
1191
+ end
1192
+
1193
+ # 모든 스레드가 끝날 때까지 대기
1194
+ threads.each(&:join)
1195
+
1196
+ # 메인 스레드에서 큐에 있는 데이터를 처리
1197
+ Thread.new do
1198
+ # 큐에서 데이터를 하나씩 꺼내어 @data['table']에 추가
1199
+ until queue.empty?
1200
+ item = queue.pop
1201
+ @data['table'] << item
1202
+ end
1203
+
1204
+ # 테이블에서 마지막 데이터 삭제
1205
+ @data['table'].pop
1206
+
1207
+ # UI 갱신 (메인 스레드에서 UI 업데이트)
1208
+
1209
+ end
1210
+ ensure
1211
+ file_data.clear
1212
+ end
1172
1213
  end
1173
1214
  end
1174
1215
  }
1175
1216
  }
1176
1217
 
1177
-
1178
1218
 
1179
1219
 
1180
1220
 
1181
-
1182
- button('그룹 전체 선택'){
1183
- top 0
1184
- left 3
1185
- on_clicked{
1186
- for n in 0..@data['table'].length-1
1187
- @data['table'][n][0] = true
1188
- @data['table'] << []
1189
- @data['table'].pop
1190
- end
1191
- }
1221
+ button('그룹 전체 선택') {
1222
+ top 0
1223
+ left 3
1224
+ on_clicked {
1225
+ # @data['table']의 모든 항목을 선택 상태로 변경
1226
+ @data['table'].map! { |row| row[0] = true; row }
1227
+
1228
+ # UI 갱신 (필요에 따라 호출)
1229
+ # 예시: UI 업데이트 코드가 필요하다면 호출
1230
+ # update_ui
1192
1231
  }
1193
- button('그룹 선택 해제'){
1194
- top 0
1195
- left 4
1196
- on_clicked{
1197
- for n in 0..@data['table'].length-1
1198
- @data['table'][n][0] = false
1199
- @data['table'] << []
1200
- @data['table'].pop
1201
- end
1202
- }
1232
+ }
1233
+
1234
+ button('그룹 선택 해제') {
1235
+ top 0
1236
+ left 4
1237
+ on_clicked {
1238
+ # @data['table'] 모든 항목을 선택 해제 상태로 변경
1239
+ @data['table'].map! { |row| row[0] = false; row }
1240
+
1241
+ # UI 갱신 (필요하다면 추가)
1242
+ # 예시: UI 업데이트 코드가 필요하다면 호출
1243
+ # update_ui
1203
1244
  }
1204
- button('그룹 선택 삭제'){
1205
- top 0
1206
- left 5
1207
- on_clicked{
1208
- del_list_number = Array.new
1209
- for n in 0..@data['table'].length-1
1210
- if @data['table'][n][0] == true
1211
- del_list_number << n
1212
- end
1213
- end
1214
-
1215
- del_list_number.reverse.each do |i|
1216
- @data['table'].delete_at(i)
1217
- end
1218
- @data.delete(nil)
1219
- }
1245
+ }
1246
+
1247
+ button('그룹 선택 삭제') {
1248
+ top 0
1249
+ left 5
1250
+ on_clicked {
1251
+ # 선택된 항목을 제외한 새로운 배열을 만들어서 빠르게 삭제
1252
+ @data['table'].reject! { |row| row[0] == true }
1253
+
1254
+ # UI 갱신 (필요하다면 추가)
1255
+ # 예시: UI 업데이트 코드가 필요하다면 호출
1256
+ # update_ui
1220
1257
  }
1258
+ }
1221
1259
  }
1222
1260
  }
1223
1261
 
@@ -1253,34 +1291,38 @@ class Wordpress
1253
1291
 
1254
1292
 
1255
1293
 
1256
- grid{
1257
- stretchy false
1258
- @data['table_counter_input'] = entry{
1259
- text '그룹 당 발송 수 ex) 300'
1260
- top 1
1261
- left 0
1262
- }
1263
- @data['table_delay_input'] = entry{
1264
- text '발송 딜레이(초 단위) ex)3'
1265
- top 1
1266
- left 1
1267
- }
1268
-
1269
-
1270
- button(' 전체 그룹 적용하기 '){
1271
- top 1
1272
- left 2
1273
- on_clicked{
1274
- for n in 0..@data['table'].length-1
1275
- @data['table'][n][2] = @data['table_counter_input'].text.to_i
1276
- @data['table'][n][3] = @data['table_delay_input'].text.to_i
1277
- @data['table'] << []
1278
- @data['table'].pop
1279
- end
1294
+ grid {
1295
+ stretchy false
1296
+ @data['table_counter_input'] = entry {
1297
+ text '그룹 당 발송 수 ex) 300'
1298
+ top 1
1299
+ left 0
1300
+ }
1301
+ @data['table_delay_input'] = entry {
1302
+ text '발송 딜레이(초 단위) ex)3'
1303
+ top 1
1304
+ left 1
1280
1305
  }
1281
- }
1282
1306
 
1283
- }
1307
+ button(' 전체 그룹 적용하기 ') {
1308
+ top 1
1309
+ left 2
1310
+ on_clicked {
1311
+ # 입력값을 한 번만 변수에 저장
1312
+ table_counter_value = @data['table_counter_input'].text.to_i
1313
+ table_delay_value = @data['table_delay_input'].text.to_i
1314
+
1315
+ # @data['table']의 각 항목을 업데이트
1316
+ @data['table'].map! do |row|
1317
+ row[2] = table_counter_value
1318
+ row[3] = table_delay_value
1319
+ row # 수정된 row를 반환
1320
+ end
1321
+ }
1322
+ }
1323
+ }
1324
+
1325
+
1284
1326
  }
1285
1327
  }
1286
1328
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tg_send_zon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - zon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-05 00:00:00.000000000 Z
11
+ date: 2024-12-06 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: File to Clipboard gem
14
14
  email: mymin26@naver.com