묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코딩테스트 [ ALL IN ONE ]
완전 탐색
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.완전탐색부터는 강의가 없는데 해당 강의는 업데이트가 되는건가요? 아니면 추가로 결제를 해야할까요??
-
미해결[2025년 출제기준] 웹디자인기능사 실기시험 완벽 가이드
넣지 않은 패딩이 있고 해당부분을 해결할 수 없어요
■ 질문 남기실 때 꼭! 참고해주세요.- 먼저 유사한 질문이 있었는지 검색해주세요.- 궁금한 부분이 있으시면 해당 강의의 타임라인 부분을 표시해주시면 좋습니다.- HTML, CSS, JQUERY 코드 소스를 텍스트 형태로 첨부해주시고 스크린샷도 첨부해주세요.- 다운로드가 필요한 파일은 해당 강의의 마지막 섹션에 모두 있습니다.<보고 있던 강의제목>3. 상단 드롭다운 네비게이션(3가지 타입) – HTML+CSS+JQUERY강의시점 23:09아래는 작성한 cssbody { display: flex; justify-content: center; } .container { border: 1px solid #000; width: 1200px; } header { display: flex; justify-content: space-between; position: relative; } header>div { border: 1px solid #000; height: 100px; } .header-logo { width: 200px; } .navi { width: 600px; } .slide {} .slide div { border: 1px solid #000; height: 300px; } .items { display: flex; } .items>div { border: #000 1px solid; height: 200px; } .news { width: 400px; } .banner { width: 400px; } .shortcut { width: 400px; } footer { display: flex; } footer>div { border: #000 1px solid; height: 100px; } .footer-logo { width: 200px; } .copyright { width: 800px; } .sns { width: 200px; } /* navi */ .menu { list-style: none; margin-top: 67px; } .menu li { /* border: #000 1px solid; */ float: left; width: 25%; box-sizing: border-box; text-align: center; } .sub-menu { border: #000 1px solid; /* display: none; */ } .sub-menu a { display: block; text-decoration: none; padding: 5px; background-color: #fff; transition: 0.5s; } .sub-back { width: 100%; height: 200%; background-color: #000; position: absolute; right: 0; } .sub-menu a:hover { background-color: #000; color: #fff; } .menu li>a { border: #000 1px solid; display: block; padding: 5px; text-decoration: none; } .menu li:hover>a { background-color: #000; color: #fff; }
-
해결됨ElasticSearch Essential
ES 데이터노드의 적합한 인스턴스 타입이 궁금합니다.
안녕하세요.사내에서 검색엔진으로 k8s에 ES를 운영하고 있는 와중에 강진우님의 Elasticsearch 강의가 있는 것을 알게되어 하루만에 빠르게 완강했습니다.한가지 문의사항이 있어서 문의드리게 되었는데요..!저희 사내 검색엔진 ES의 데이터 노드가 하루 중 사용량이 많은 시간대에는 CPU가 85~95%까지 치고 평소에는 3~40%를 유지중입니다.현재 데이터노드의 인스턴스타입은 RAM(메모리 타입)인데요. 하나의 노드가 하나의 샤드와 레플리카들을 가지고 있습니다.별다른 장애는 없었지만 매일 CPU가 95%까지 육박하고, Load average는 cpu core 수의 2~3배를 치고 있어서 개선할 수 있는 방법을 고민해보고 있는데요.JVM 힙메모리는 맥스 30G 중 21G 정도를 상시 유지중이고, ES의 캐싱메모리를 쓰는 탓인지 Pod의 메모리는 상시 90~95%를 유지중입니다.하여,,Q. ES를 운영할 때 어떤 인스턴스 타입으로 운영하는게 좋을지 궁금하여 자문을 드리게 되었습니다ㅠㅠCPU 타입으로 하는게 좋을지,, 중간 타입으로 하는게 좋을지,, RAM(메모리) 타입으로 그대로 하는게 좋을지 잘 감이 안서네요.. 우선 RAM 타입으로 하였습니다.감사합니다!
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
model.findone() no longer accepts a callback 오류
findOne()도 save()와 마찬가지로 몽구스 5.0부터는 콜백함수를 지원하지 않기 때문에 기존에 app.post('/api/users/login',(req, res) =>{ // 요청된 이메일을 데이터베이스 찾기 User.findOne({email: req.body.email}, (err, docs) =>{ if(!docs){ return res.json({ loginSuccess: false, messsage: "제공된 이메일에 해당하는 유저가 없습니다." }) } // 요청된 이메일이 DB에 있다면 Password가 일치한지 확인 user.comparePassword(req.body.password, (err, isMatch) => { if(!isMatch) return res.json({loginSuccess: false, messsage: "비밀번호가 틀렸습니다."}) // Password가 일치하다면 토큰 생성 user.generateToken((err, user)=>{ if(err) return res.status(400).send(err); // 토큰을 저장 res.cookie("x_auth", user.token) .status(200) .json({loginSuccess: true, userId: user._id}) }) }) }) })에서 콜백함수가 들어가 있기 때문에 callback을 쓰지 않고 promise 또는 async/await로 수정해서 사용하시면 됩니다.저같은 경우는 promise로 수정해서 .then .catch로 수정을 했습니다.app.post('/api/users/login',(req, res) =>{ // 요청된 이메일을 데이터베이스 찾기 User.findOne({email: req.body.email}) .then(docs=>{ if(!docs){ return res.json({ loginSuccess: false, messsage: "제공된 이메일에 해당하는 유저가 없습니다." }) } docs.comparePassword(req.body.password, (err, isMatch) => { if(!isMatch) return res.json({loginSuccess: false, messsage: "비밀번호가 틀렸습니다."}) // Password가 일치하다면 토큰 생성 docs.generateToken((err, user)=>{ if(err) return res.status(400).send(err); // 토큰을 저장 res.cookie("x_auth", user.token) .status(200) .json({loginSuccess: true, userId: user._id}) }) }) }) .catch((err)=>{ return res.status(400).send(err); }) })참고하시고 수정하시면 될 것 같습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 예외처리 질문입니다.
안녕하세요 선생님! 강의 항상 잘 보고 있습니다. 저는 이 문제 예외처리를 합해서 생각한 게 아니라 나눠서 비교해도 될 것 같아서 그렇게 로직을 짰는데, 실패했고 '내 코드보기'를 하면 Error를 뱉고 있더라고요 혹시 어떤 문제일까요?강의 보고 합한 걸로 처리하니까 통과 됐고, 합해서 하는 게 더 좋은 거라는 생각은 했는데, 나눠서 생각한 게 왜 틀린지를 잘 모르겠습니다. 33~36 line 입니다. 링크 첨부합니다~https://www.acmicpc.net/source/57441252
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GetComponent 함수 관련 질문이 있습니다!
선생님 언제나 좋은 강의 잘 보고 있습니다.싱글톤패턴 복습과정 중 이것저거 테스트하다s_instance에 값을 넣어 줄 때 저렇게 그냥 바로 GetComponent<>(); 해버려도 작동이 되더라구요GetComponent 함수가 특정 게임오브젝트에 있는 Component 를 가져오는것인 줄 알고 사용했는데 위 코드는 왜 동작하는지 이유를 알려주실 수 있을까요?
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
상품 주문 submit 버튼 누룰 시 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported https://drive.google.com/file/d/1SPT29SzTIZ-E-f3aJrRZ8IvxPyXhJVtR/view?usp=sharing
-
미해결성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
환율 강의 테이블뷰에서 데이터 관련 질문있습니다.
안녕하세요 강의진행하면서 궁금한게있어서 질문드립니다.저의 경우 처음 Picker 뷰에서 rates배열에 url로 데이터 파싱한 데이터를 Table탭에서 delegate패턴을 이용해서 가져오는식으로 데이터를 가져오려 했습니다.먼저 Picker코드입니다. // // ViewController.swift // Exchange Rate // // // import UIKit class PickerViewController: UIViewController { @IBOutlet weak var usdTextField: UITextField! @IBOutlet weak var selectedCurrency: UITextField! @IBOutlet weak var selectedCurrencyName: UILabel! @IBOutlet weak var currencyPicker: UIPickerView! var rates: [(String,Double)]? // table data delegate weak var delegate: tableDataDelegate? // picker row변화에 따른 observer property 계산 var selectedRow = 0 { didSet { selectedCurrencyName.text = rates?[selectedRow].0 selectedCurrency.text = calculateCurrency() } } func calculateCurrency() -> String { let selectedValue = rates?[selectedRow].1 ?? 0 let usdValue = Double(usdTextField.text ?? "") ?? 0 let resultValue = String(format: "%.2f", (selectedValue * usdValue)) return resultValue } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.navigationItem.title = "Currency Converter Picker" fetchJson() //picker 연결 currencyPicker.delegate = self currencyPicker.dataSource = self // textField delegate usdTextField.delegate = self // porotcol delegate } func fetchJson() { let urlString = "https://open.er-api.com/v6/latest/USD" guard let url = URL(string: urlString) else {return} // data task URLSession.shared.dataTask(with: url) { data, res, err in guard let data = data else {return} do { let currencyModel = try JSONDecoder().decode(CurrencyModel.self,from: data) // rates: [key:value] 형태 // let rates = currencyModel.rates?.map { [$0 : $1] } // let rates2 :[(String,Double)]? = currencyModel.rates?.sorted(by: { dic1, dic2 in // dic1.key < dic2.key // sorted같은걸하면 Dictionary.Element가되서 tuple로 바뀜 // }) self.rates = currencyModel.rates?.sorted{ $0.key<$1.key } // picker 새로고침해야 데이터 내용이 보임 DispatchQueue.main.async { self.currencyPicker.reloadAllComponents() } // get table data print("rate: ",self.rates!) self.delegate?.getData(data: self.rates! ) // print("currentModel",currencyModel) } catch { print(err!) } }.resume() } } extension PickerViewController:UIPickerViewDelegate,UIPickerViewDataSource { func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return rates?.count ?? 0 } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { let key = rates?[row].0 ?? "" let value = rates?[row].1.description ?? "" return key + " " + value } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { selectedRow = row } } extension PickerViewController:UITextFieldDelegate { func textFieldDidChangeSelection(_ textField: UITextField) { selectedCurrency.text = calculateCurrency() } } 저의 경우 DispatchQueue.main.async { self.currencyPicker.reloadAllComponents() } // get table data print("rate: ",self.rates!) self.delegate?.getData(data: self.rates! )여기서 rates가 전부불어와지면 delegate를 이용해서 해당데이터를 table뷰로 가져오려고 의도했습니다. table데이터입니다.// // ListViewController.swift // Exchange Rate // // import UIKit protocol tableDataDelegate:AnyObject { func getData(data:[(String,Double)]) } class ListViewController: UIViewController { // Data list var conData = [(String,Double)?]() @IBOutlet weak var udsLabel: UILabel! @IBOutlet weak var costTextField: UITextField! @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.navigationItem.title = "Currency Converter Table" self.udsLabel.text = "UDS" // table // tableView.delegate = self tableView.dataSource = self let sb = UIStoryboard(name: "Main", bundle: nil) guard let detailVC = sb.instantiateViewController(withIdentifier: "PickerViewController") as? PickerViewController else {return} detailVC.delegate = self tableView.rowHeight = 100 } } extension ListViewController:UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { print("cor: ",conData) return 10 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = self.tableView.dequeueReusableCell(withIdentifier: "MyTableViewCell") as! MyTableViewCell cell.currencyLabel.text = "good" cell.valueLabel.text = "allaal" return cell } } extension ListViewController: tableDataDelegate{ func getData(data: [(String,Double)]) { print("data: ",data) self.conData = data // print(self.conData) } } 여기서 delegate프로토콜을 만들고 Picker뷰에서 가져온 데이터를 conData라는 배열에 담아서 저는 담겨진 데이터를 이용해서 테이블뷰에 데이터를 뿌리는식으로 작업하려했는데 이런식으로 하니 프로토콜이 제대로 안되서인지 conData에 데이터가 담기지 않고 빈배열이 나옵니다.. 저의경우 table뷰에서 델리게이트를 사용한다고 위임하는 코드를 let sb = UIStoryboard(name: "Main", bundle: nil) guard let detailVC = sb.instantiateViewController(withIdentifier: "PickerViewController") as? PickerViewController else {return} detailVC.delegate = self이렇게 Main에있는 스토리보드를 가져와서 권환을 위임했는데 이게 틀린걸까요?어디가 잘못됐는지 잘모르겠습니다.. 답변 부탁드립니다!
-
해결됨웹플로우(Webflow) 시작하기 - 코딩 없이 자유도 높은 프로토타입 만들기
웹플로우로 마이페이지 구현이 가능한가요?
안녕하세요 :)웹플로우 강의 수강 중이고, 회원들이 마이페이지에 메모를 남길 수 있는 기능을 구현하고 싶습니다. 관련하여 아래 2가지 기능 구현이 가능할지 문의드립니다.마이페이지 구현마이페이지에 로그인한 회원이 메모(텍스트, 이미지, 동영상 등)를 남길 수 있는 기능 구현
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
데이터베이스와 파일업로드
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 본 강의를 수강중인 학생입니다.외부 데이터베이스 대신 데이터를 보관하는 역할을 ItemRepository 클래스의 map이 하고있다는 것은 이해했습니다.만약 mysql같은 외부 데이터베이스에 이미지를 저장하고 싶다면 ItemRepository 클래스를 수정하는게 맞나요?강의 로직에서 이미지를 업로드하면 map과 로컬 저장소에 저장되는데 이때 map은 저장되는 setID가 URL에서 /items/{Id}로 표현되는 것 말고는 무슨 역할인지 잘 모르겠습니다. 업로드한 이미지를 보여주는 것에 관여를 하나요? 그리고 로컬 저장소인 폴더없이 map으로만 이미지를 웹에서 보여줄 수 없나요?
-
해결됨[코드캠프] 훈훈한 Javascript
섹션7-newSpan.textContent = todoContents; 에 관해
const createTodo = function (storageData) { let todoContents = todoInput.value; if (storageData) { todoContents = storageData.contents; } const newLi = document.createElement("li"); const newSpan = document.createElement("span"); const newBtn = document.createElement("button"); newBtn.addEventListener("click", () => { newLi.classList.toggle("complete"); saveItemsFn(); }); newLi.addEventListener("dblclick", () => { newLi.remove(); saveItemsFn(); }); if (storageData?.complete) { newLi.classList.add("complete"); } newSpan.textContent = todoContents; newLi.appendChild(newBtn); newLi.appendChild(newSpan); todoList.appendChild(newLi); todoInput.value = ""; saveItemsFn(); };잘 이해가 되지않는 부분이 있어 질문남깁니다!newSpan.textContent = todoContents;이곳에서 todoContents대신 todoInput.value로 할당했을 때 localstorage의 content에 값이 정상적으로 전달되지않고 ""로 빈 값이 저장되는 지 궁금합니다.
-
미해결스프링 부트 웹 개발 입문 - 따라하며 배우기
DB Table 생성, 데이터 입력 외래키 생성 문의
DB table 생성, 데이터 입력 문의jdbc 연결 부분에서 계속 문제가 발생해 maridb 버전을 5점대로 다시 깔고 지금 학습 중입니다. 영상에서 cust_info 테이블에 cust_id를 unique 키로 만들면 외래 키가 만들어지는데 전 안 만들어져서 문의 드립니다?
-
미해결지금 당장 NodeJS 백엔드 개발 [사주 만세력]
격국 질문 드립니다
본인 사주의 격국을 찾는 로직이나 알고리즘도 있을까요? 수강중인데 그부분에 대해서는 안나와 있는건가해서요!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 관련 질문 드립니다!
안녕하세요 큰돌님! 다름이 아니라 1-K를 이런 식으로 풀어봤습니다. 하지만 자꾸 틀리는데 반례를 못찾겠어서 질문 드려봅니다. <코드 설명>저 같은 경우 map을 이용해 <한 문자, 문자 개수>를 만들어 개수가 홀수인 문자가 2개 이상이면 "I' m sorry Hansoo"를 출력하며 종료하고 그 외에는 팰린드롬을 만듭니다. 팰린드롬은 다시 문자의 개수가 홀수인 문자가 존재하는 경우와 아닌 경우로 나뉘는데, 존재하는 경우 tmp에 잠시 저장해놓고 나머지는 ret에 철자순으로 저장합니다그리고 tmp를 ret에 붙인 다음에 substr로 해당 문자열을 복사한 뒤 temp에 저장합니다. 마지막으로 temp를 reverse로 역순배치를 하여 ret에 이어붙입니다.최종적으로 이를 출력하는 로직입니다.(문자의 개수가 모두 짝수인 경우는 tmp를 ret에 붙이는 과정만 없고 나머진 동일합니다)정말 열심히 생각해서 풀었는데 왜 틀렸는지 조차 몰라서 매우 속상합니다...반례나 틀린 부분이 어디인지 알려주신다면 정말 정말 감사하겠습니다...! #include <bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); map<char, int> mp; string word, ret; bool isOdd = false; int cnt = 0; char tmp; cin >> word; for(int i = 0; i < word.size(); i++) { mp[word[i]]++; } for(auto it : mp) { if((it).second % 2 == 1) { cnt++; if(cnt > 1) { cout << "I'm Sorry Hansoo"; break; } tmp = (it).first; isOdd = true; for(int i = 0; i < (it).second / 2; i++){ ret += (it).first; } } else { for(int i = 0; i < (it).second / 2; i++){ ret += (it).first; } } } string word2 = ret; if(isOdd) { word2 += tmp; string temp = ret.substr(0, temp.size() - 1); reverse(temp.begin(), temp.end()); word2 += temp; } else { string temp = ret.substr(0, temp.size()); reverse(temp.begin(), temp.end()); word2 += temp; } if(cnt < 2) cout << word2; return 0; }
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제 해설 pdf 파일
안녕하세요 강사님, 실전문제풀이 해설 pdf 받을 수 있는지 문의 드립니다! 이메일 : kbm17@naver.com감사합니다.
-
미해결스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
생성자가 하나인경우 자동으로 스프링 bin 등록?
스프링 JdbcTemplate 강의 2분 17초 내용 관련하여 질문이 있습니다.생성자가 딱 하나 있으면 자동으로 스프링 bin 에 등록이 되어서 @autowire를 생략할 수 있다고 하는데, 그럴려면관리하고 싶은 객체 클래스에 @Controller, @service, @Repository 혹은 자바로 등록하는 방법인 @Configuration 과 @bean 이 필요하잖아요하지만 2분 17초 화면에서는 위와 같은 애노테이션을 찾아 볼 수 없고, 상속받은 MemberRepostiory 가 자바로 빈에 등록 되어있는 것을 볼 수 있습니다.내가 스프링 bin에 등록하여 관리하고 싶은 객체가 클래스위에 직접 선언 혹은 implements 로 상속받은 클래스가 bin으로 등록 되어 있다면 위의 경우 모두 똑같이 생성자가 딱 하나 있다면, @autowire를 생략할 수 있다고 생각하면 되는지 궁금합니다. 만약 틀리다면 아닌 이유에 설명 부탁드립니다. 또한 @Override 를 붙이는 이유에 대해서도 설명 부탁드립니다.
-
해결됨웹 게임을 만들며 배우는 React
제로초님 안녕하세요!! setInterval clearInterval 실행위치 부탁드립니다.
제로초님 안녕하세요!! setInterval clearInterval 실행위치 부탁드립니다. import { useRef, useEffect } from 'react';function useInterval(callback, delay) {const savedCallback = useRef();useEffect(() => {savedCallback.current = callback;});useEffect(() => {function tick() {savedCallback.current();}if (delay !== null) {let id = setInterval(tick, delay);return () => clearInterval(id); 요부분!!}}, [delay]);return savedCallback.current;}export default useInterval;질문1. if문에서 return에 단지 익명함수를 작성하고 그 익명함수의 return으로 clearInterval 을 적어준건데 왜 익명함수가 실행되어 clearInterval이 등록이되는건가요?? if의 함수의 리턴값이 익명함수의 주소아닌가요?질문2. if에서 reutnrn에 익명함수가 실행되었고 clearinterval이 등록되었다고 치면 왜 delay가 빠꼈을때 실행되는거에요?? ㅠㅠ부탁드립니다. 이해하고싶어요 4시간째 구글링하고 찾아봐도 이해가안되네요..다른분답변에서 setInterval 500으로 실행되면서 return쪽 clearInterval 코드도 등록됩니다. 이 부분도 왜 등록이 되는건가요?ㅠ
-
해결됨모의해킹 실무자가 알려주는, SQL Injection 공격 기법과 시큐어 코딩 : PART 1
검색 기능 sql인젝션 질문이 있습니다.
안녕하세요. 강의해주셔서 감사합니다.가끔씩 연습을 하다보면 % 만 입력했을 시 전체데이터가 뱉어지는 경우가 있는데,배운대로,SELECT * FROM board WHERE title like '%검색어%' 라면SELECT * FROM board WHERE title like '%%%'가 될 것 같습니다.이게 어떤 원리로 전체 데이터가 출력이 되는 건지 궁금합니다. 입력한 %가 메타문자(와일드카드)로 인식되어 전체출력이 되는 걸까요?그리고 싱글쿼터만 넣어도 전체 데이터가 출력되는 경우도 있던데 이것도 어떤 원리인지 너무 궁금합니다...! 알려주시면 감사하겠습니다.
-
해결됨토비의 스프링 부트 - 이해와 원리
THIS!
안녕하세요, 자바 기본 적인 질문 한가지만 드릴게요...! public class HellobootApplication { public static void main(String[] args) { GenericWebApplicationContext applicationContext = new GenericWebApplicationContext() { @Override protected void onRefresh() { super.onRefresh(); ServletWebServerFactory serverFactory = new TomcatServletWebServerFactory(); WebServer webServer = serverFactory.getWebServer(servletContext -> { servletContext.addServlet("dispatcherServlet", new DispatcherServlet(this)) .addMapping("/*"); }); webServer.start(); } }; applicationContext.registerBean(HelloController.class); applicationContext.registerBean(SimpleHelloService.class); applicationContext.refresh(); }} 여기서 this는 HellobootApplication class가 아닌, applicationContext 를 지칭 하는게 맞을까요..?매번 this가 조금씩 헷갈리네요 ,,,, 이상한 질문 죄송합니다....!
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
선생님 UDP 관련 질문입니다.
혼자서 공부를 하다보니 UDP를 사용하는 예시로서 DNS에 질의를 보내는것 있다는 것을 알게되었습니다.혹시 DNS에 UDP를 사용하는 이유에 대해서 알려주실 수 있으실까요?