Skip to content

Latest commit

Β 

History

History
100 lines (89 loc) Β· 3.56 KB

File metadata and controls

100 lines (89 loc) Β· 3.56 KB

Boj GitHub Upload Automation

  1. selenium 을 μ‚¬μš©ν•˜μ—¬ λ°±μ€€ μ‚¬μ΄νŠΈμ— 둜그인 및 ν•΄λ‹Ή λ‚˜μ˜ ν‘Ό λ¬Έμ œλ“€λ‘œ λ“€μ–΄κ°„λ‹€
  2. λ‚˜μ˜ ν‘Ό 문제 λͺ©λ‘λ“€μ„ jsoup 을 μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή λ¬Έμ œλ“€μ„ parse ν•œλ‹€
  3. λ‚˜μ˜ λ¬Έμ œλ“€μ„ parse ν•œ ν›„ ν•΄λ‹Ήλ¬Έμ œμ˜ problemNumber, SourceCode, Extension, AlgorithmTag 등을 μΆ”μΆœ
  4. μΆ”μΆœν•œ λ¬Έμ œλ“€μ„ ProblemInfo class 에 λ‹΄λŠ”λ‹€
  5. κ·Έ ProblemInfo λ₯Ό μ‚¬μš©ν•˜μ—¬ 깃헙에 push ν•œλ‹€

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ νŒ¨ν‚€μ§€μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ νŒ¨ν‚€μ§€κ°„μ— μ„œλΉ„μŠ€λ‘œμ§μ„ ν†΅ν•©μ‹œν‚¨λ‹€

─ java
    β”œβ”€β”€ LoggerTest.java
    β”œβ”€β”€ application
    β”‚   β”œβ”€β”€ dto
    β”‚   β”‚   β”œβ”€β”€ PageElements.java
    β”‚   β”‚   └── ProblemInfoDto.java
    β”‚   β”œβ”€β”€ service
    β”‚   β”‚   β”œβ”€β”€ ServiceTask.java
    β”‚   β”‚   β”œβ”€β”€ ServiceTaskFactory.java
    β”‚   β”‚   β”œβ”€β”€ TaskManger.java
    β”‚   β”‚   β”œβ”€β”€ UserService.java
    β”‚   β”‚   β”œβ”€β”€ extract
    β”‚   β”‚   β”‚   └── ExtractPageElementsFactory.java
    β”‚   β”‚   β”œβ”€β”€ login
    β”‚   β”‚   β”‚   β”œβ”€β”€ LoginService.java
    β”‚   β”‚   β”‚   └── LoginServiceManage.java
    β”‚   β”‚   └── profile
    β”‚   β”‚       β”œβ”€β”€ ProfileManage.java
    β”‚   β”‚       └── ProfileService.java
    β”œβ”€β”€ controller
    β”‚   └── Application.java
    β”œβ”€β”€ domain
    β”‚   β”œβ”€β”€ algorithm
    β”‚   β”‚   └── problem
    β”‚   β”‚       β”œβ”€β”€ AlgorithmTag.java
    β”‚   β”‚       β”œβ”€β”€ Extension.java
    β”‚   β”‚       β”œβ”€β”€ Problem.java
    β”‚   β”‚       β”œβ”€β”€ ProblemNumber.java
    β”‚   β”‚       └── SourceCode.java
    β”‚   β”œβ”€β”€ cookie
    β”‚   β”‚   └── SeleniumCookie.java
    β”‚   └── user
    β”‚       └── User.java
    β”œβ”€β”€ infrastructure
    β”‚   β”œβ”€β”€ github
    β”‚   β”œβ”€β”€ parse
    β”‚   β”‚   β”œβ”€β”€ CookieManager.java
    β”‚   β”‚   β”œβ”€β”€ ExtractorManager.java
    β”‚   β”‚   β”œβ”€β”€ LinkExtractor.java
    β”‚   β”‚   β”œβ”€β”€ PageLinks.java
    β”‚   β”‚   β”œβ”€β”€ Parse.java
    β”‚   β”‚   β”œβ”€β”€ ProblemExtractor.java
    β”‚   β”‚   └── ProblemLinkExtractionManage.java
    β”‚   β”œβ”€β”€ selenium
    β”‚   β”‚   β”œβ”€β”€ Driver
    β”‚   β”‚   β”‚   β”œβ”€β”€ Driver.java
    β”‚   β”‚   β”‚   β”œβ”€β”€ DriverController.java
    β”‚   β”‚   β”‚   β”œβ”€β”€ DriverSetting.java
    β”‚   β”‚   β”‚   β”œβ”€β”€ WaitDriver.java
    β”‚   β”‚   β”‚   └── WaitDriverController.java
    β”‚   β”‚   └── css
    β”‚   β”‚       └── BySelector.java
    β”‚   └── url
    β”‚       └── Url.java
    β”œβ”€β”€ ui
    β”‚   └── OutputView.java
    └── util
        └── DotenvUtil.java

κ΅¬ν˜„ 및 λ―Έκ΅¬ν˜„ λͺ©λ‘

  • User
  • UserService
  • Problem
  • Options class required for the Problem
  • ProblemDTO
  • DotenvUtil
  • LoginUrl
  • Using Selenium For Login
  • Extract For Jsoup
  • Problem Service Logic For ProblemDTO Input
  • Dto use push for github
  • Github upload refactor
  • Use Parallel Processing
  • logging
  • OutputView

아이디어

  1. 병렬 μ…€λ ˆλ‹ˆμ›€μ„ μ΄μš©ν•˜μ—¬ λ‚΄μ œμΆœμ—μ„œ λ§žμ•˜μŠ΅λ‹ˆλ‹€ λ§ν¬λž‘ μ•Œκ³ λ¦¬μ¦˜ νƒœκ·Έ μΆ”μΆœ
    1. LinkAndAlgorithmTag class λ₯Ό λ§Œλ“ ν›„ λ„£λŠ”λ‹€
  2. κ·Έ μΆ”μΆœλœ Link λ₯Ό μ‚¬μš©ν•˜μ—¬ 별렬 jsoup을 μ΄μš©ν•˜μ—¬ μ†ŒμŠ€μ½”λ“œ,μ–Έμ–΄,문제번호 μΆ”μΆœ
  3. μΆ”μΆœν•˜κ³  λ°”λ‘œ Problme class 에 λ„£κ³  λ‚˜μ€‘μ— ProblemInfoDto λ₯Όμ‚¬μš©ν•˜μ—¬ λ„£μ–΄μ€€λ‹€
  4. DTOλ₯Ό μ‚¬μš©ν•˜μ—¬ 병렬화 κΉƒν—™ 등둝