묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[코드팩토리] [초급] 8시간만에 끝내는 코드팩토리의 Typescript 완전정복 풀코스
Generic in Function 강의 instantiator 질문입니다.
Generic in Function (함수에서 제너릭 사용하기) 강의 내용에서의 질문입니다.class Car { brand: string; codeName: string; constructor(brand: string, codeName: string) { this.brand = brand; this.codeName = codeName; } } function instantiator<T extends { new(...args: any[]): {} }>(classObject: T, ...args: any[]) { return new classObject(...args); } console.log(instantiator(Car, 'BMW', 1111));Car의 경우 생성자의 codeName 인자의 타입이 string인데...args의 타입을 any[]로 지정했기 때문에instantiator(Car, 'BMW', 1111)에서 codeName에 number값을 넣어도 오류가 발생하지 않았습니다.물론 단순히 할당하기만 하는 코드이기 때문에 런타임에서도 오류가 발생하지는 않을 것 입니다.좀 더 정확한 타입 체킹을 할 수 있도록 위 케이스에서 클래스 생성자의 인자 타입까지 반영해서 체크하는 instantiator를 작성할 수 있을까요?
-
미해결프로그래밍 시작하기 : 웹 입문 (Inflearn Original)
화면 오른쪽 스크롤이 넘어가질 않아요!
<html> <head> <meta charset="utf-8"> <title>인스타그램</title> <link rel = "stylesheet" href = "styles/card.css"> </head> <body> <section class = "container"> <article class = "card"> <header> <div class = "circle-image"> <img src = "images/profile.png"/> </div> <div class = "card-username"> <span>taeyun_kwon1118</span> </div> <div class = "option-more"> <button class = "transparent-button"><img src = "images/icons/mark.png"/></button> </div> </header> <main> <div class = "carousel" data = "0"> <div> <ul> <li><img src = "images/mountain1.jpg"/> </li><li><img src = "images/mountain2.jpg"/> </li><li><img src = "images/mountain3.jpg"/> </li><li><img src = "images/mountain4.jpg"/></li> </ul> <div class = "slide slide-left"> <button class = "transparent-button"><img src = "images/icons/arrow-left.png"/></button> </div> <div class = "slide slide-right"> <button class = "transparent-button"><img src = "images/icons/arrow-right.png"/></button> </div> </div> <footer> <div class = "active"></div> <div></div> <div></div> <div></div> </footer> </div> <div class = "card-container"> <div class = "card-buttons"> <div> <button class = "transparent-button"> <img src = "images/icons/heart.png"/> </button> </div> <div> <button class = "transparent-button"> <img src = "images/icons/chat.png"/> </button> </div> <div> <button class = "transparent-button"> <img src = "images/icons/paper-plane.png"/> </button> </div> <div class = "last-card-button"> <button class = "transparent-button"> <img src = "images/icons/bookmark.png"/> </button> </div> </div> <div class = "card-likes"> taeyun_kwon1118님 외 여러 명이 좋아합니다 </div> <div class = "card-contents"> <ul> <li> <div> <span>taeyun_kwon1118</span> 여행 사진 올립니다. 좋아요 부탁 드려요 !!! </div> </li> <li class = "comment"> <div> <span>taeyun_kwon1118</span> 댓글 1 <button class = "transparent-button"> <img src = "images/icons/heart.png"/> </button> </div> </li> <li class = "comment"> <div> <span>taeyun_kwon1118</span> 댓글 2 <button class = "transparent-button"> <img src = "images/icons/heart.png"/> </button> </div> </li> </ul> </div> <div class = "card-time"> 7일 전 </div> </div> </main> <footer class = "card-comment"> <input type = "text" placeholder = "댓글 달기..." name = "comment"> <div> <button class = "transparent-button"> 게시</button> </div> </footer> </article> </section> <script type = "text/javascript" src = "scripts/carousel.js"></script> <script type = "text/javascript" src = "scripts/smoothscroll.min.js"></script> </body> </html>!function(){"use strict";function o(){var o=window,t=document;if(!("scrollBehavior"in t.documentElement.style&&!0!==o.__forceSmoothScrollPolyfill__)){var l,e=o.HTMLElement||o.Element,r=468,i={scroll:o.scroll||o.scrollTo,scrollBy:o.scrollBy,elementScroll:e.prototype.scroll||n,scrollIntoView:e.prototype.scrollIntoView},s=o.performance&&o.performance.now?o.performance.now.bind(o.performance):Date.now,c=(l=o.navigator.userAgent,new RegExp(["MSIE ","Trident/","Edge/"].join("|")).test(l)?1:0);o.scroll=o.scrollTo=function(){void 0!==arguments[0]&&(!0!==f(arguments[0])?h.call(o,t.body,void 0!==arguments[0].left?~~arguments[0].left:o.scrollX||o.pageXOffset,void 0!==arguments[0].top?~~arguments[0].top:o.scrollY||o.pageYOffset):i.scroll.call(o,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:o.scrollX||o.pageXOffset,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:o.scrollY||o.pageYOffset))},o.scrollBy=function(){void 0!==arguments[0]&&(f(arguments[0])?i.scrollBy.call(o,void 0!==arguments[0].left?arguments[0].left:"object"!=typeof arguments[0]?arguments[0]:0,void 0!==arguments[0].top?arguments[0].top:void 0!==arguments[1]?arguments[1]:0):h.call(o,t.body,~~arguments[0].left+(o.scrollX||o.pageXOffset),~~arguments[0].top+(o.scrollY||o.pageYOffset)))},e.prototype.scroll=e.prototype.scrollTo=function(){if(void 0!==arguments[0])if(!0!==f(arguments[0])){var o=arguments[0].left,t=arguments[0].top;h.call(this,this,void 0===o?this.scrollLeft:~~o,void 0===t?this.scrollTop:~~t)}else{if("number"==typeof arguments[0]&&void 0===arguments[1])throw new SyntaxError("Value could not be converted");i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left:"object"!=typeof arguments[0]?~~arguments[0]:this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top:void 0!==arguments[1]?~~arguments[1]:this.scrollTop)}},e.prototype.scrollBy=function(){void 0!==arguments[0]&&(!0!==f(arguments[0])?this.scroll({left:~~arguments[0].left+this.scrollLeft,top:~~arguments[0].top+this.scrollTop,behavior:arguments[0].behavior}):i.elementScroll.call(this,void 0!==arguments[0].left?~~arguments[0].left+this.scrollLeft:~~arguments[0]+this.scrollLeft,void 0!==arguments[0].top?~~arguments[0].top+this.scrollTop:~~arguments[1]+this.scrollTop))},e.prototype.scrollIntoView=function(){if(!0!==f(arguments[0])){var l=function(o){for(;o!==t.body&&!1===(e=p(l=o,"Y")&&a(l,"Y"),r=p(l,"X")&&a(l,"X"),e||r);)o=o.parentNode||o.host;var l,e,r;return o}(this),e=l.getBoundingClientRect(),r=this.getBoundingClientRect();l!==t.body?(h.call(this,l,l.scrollLeft+r.left-e.left,l.scrollTop+r.top-e.top),"fixed"!==o.getComputedStyle(l).position&&o.scrollBy({left:e.left,top:e.top,behavior:"smooth"})):o.scrollBy({left:r.left,top:r.top,behavior:"smooth"})}else i.scrollIntoView.call(this,void 0===arguments[0]||arguments[0])}}function n(o,t){this.scrollLeft=o,this.scrollTop=t}function f(o){if(null===o||"object"!=typeof o||void 0===o.behavior||"auto"===o.behavior||"instant"===o.behavior)return!0;if("object"==typeof o&&"smooth"===o.behavior)return!1;throw new TypeError("behavior member of ScrollOptions "+o.behavior+" is not a valid value for enumeration ScrollBehavior.")}function p(o,t){return"Y"===t?o.clientHeight+c<o.scrollHeight:"X"===t?o.clientWidth+c<o.scrollWidth:void 0}function a(t,l){var e=o.getComputedStyle(t,null)["overflow"+l];return"auto"===e||"scroll"===e}function d(t){var l,e,i,c,n=(s()-t.startTime)/r;c=n=n>1?1:n,l=.5*(1-Math.cos(Math.PI*c)),e=t.startX+(t.x-t.startX)*l,i=t.startY+(t.y-t.startY)*l,t.method.call(t.scrollable,e,i),e===t.x&&i===t.y||o.requestAnimationFrame(d.bind(o,t))}function h(l,e,r){var c,f,p,a,h=s();l===t.body?(c=o,f=o.scrollX||o.pageXOffset,p=o.scrollY||o.pageYOffset,a=i.scroll):(c=l,f=l.scrollLeft,p=l.scrollTop,a=n),d({scrollable:c,method:a,startTime:h,startX:f,startY:p,x:e,y:r})}}"object"==typeof exports&&"undefined"!=typeof module?module.exports={polyfill:o}:o()}();window.addEventlistener('load', function(){ var carousels = document.getElementsByClassName('carousel'); for(var i = 0; i < carousels.length; i++) { addEventToCarousel(carousels[i]); } }); function addEventToCarousel(carouselElem){ var ulElem = carouselElem.querySelector('ul'); var liElems = ulElem.querySelectorAll('li'); //너비 값 조정 var liWidth = liElems[0].clientWidth;//600px var adjustedWidth = liElems.length * liWidth; ulElem.style.width = adjustedWidth + 'px'; //슬라이드 버튼 이벤트 등록 var slideButtons = carouselElem.querySelectorAll('.slide'); for(var i = 0; i < slideButtons.length; i++) { slideButtons[i].addEventlistener('click', createListenerSlide(carouselElem)); } } function createListenerSlide(carouselElem){ return function(event){ var clickedButton = event.currentTarget; var liElems = carouselElem.querySelectorAll('li'); var liCount = liElems.length; var currentIndex = carouselElem.attributes.data.value; if(clickedButton.className.includes('right') && currentIndex < licount - 1){ currentIndex ++; scrollDiv(carouselElem, currentIndex); } else if(clickedButton.className.includes('left') && currentIndex > 0){ currentIndex --; scrollDiv(carouselElem, currentIndex); } // indicator update // slide button 보여줌 여부 update // 새롭게 보여지는 이미지 인덱스 값을 현재 data값으로 업데이트 carouselElem.attributes.data.value = currentIndex; } } function scrollDiv(carouselElem, nextIndex){ var scrollable = carouselElem.querySelector('div'); var liWidth = scrollable.clientWidth; var newLeft = liWidth * nextIndex; scrollable.scrollTo({left: newleft, behavior: 'smooth'}); }
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
Switch 경로설정시 메트릭과 라우팅테이블
Switch가 경로선택 (인터페이스 선택후 스위칭) 작업을 한다고 하셨는데, 이때 예시로 든 L3의 경우 라우팅 테이블이 존재해서 이걸 참고해서 경로를 설정하는걸로 이해했습니다.그런데 뒤에 메트릭값이 낮은쪽으로 경로가 결정된다는 개념이나와서 조금 헷갈립니다. 라우팅테이블도 참고하고 메트릭값도 참고해서 최적의 경로를 찾는건가요 ?
-
미해결스프링과 JPA 기반 웹 애플리케이션 개발
안녕하세요 압축프로그렘을 다운받은후에 compile해보니 오류가 발생해서 질문드립니다
이유가 뭘까요 사진 첨부해드릴게요 이거는 다른 글을 보니 추가해주니 해결되었다던데 저는 여젼히 컴파일에서 오류가 발생하네요
-
미해결Flutter 중급 3편 - 의존성 주입 가이드
소스코드 공유
늘 좋은 강의 주셔서 감사드립니다.잘 따라가다가,, Bad state: GetIt: Object/factory with type LocationPermissionHandler is not registered inside GetIt. 해당 에러가 떠서 로케이션퍼미션핸들러 주입과 관련해서 확인을 해도 문제가 없는데..헤매고 있습니다. 혹시 예제 소스도 같이 공유가 가능하실까요?잘못된 부분들을 찾아보고 싶습니다.
-
해결됨[게임 프로그래머 도약반] DirectX11 입문
normal 을 월드계로 바꿀때 worldinvtranspose
대학교수업때나 물방울책에서 배울때 normal 은 worldinvtranspose 를 곱하라고 배웠는데어떤 셰이더 책이나 선생님께서는 world 를 곱하라고 하셔서요보통 SRT = (SRT)^-t 라서 상관없나요?어짜피 normalize될때 상쇄될까요?
-
미해결[리뉴얼] 파이썬입문과 크롤링기초 부트캠프 [파이썬, 웹, 데이터 이해 기본까지] (업데이트)
12분 9초 질문드립니다.
먼저 좋은 강의 제공해주신 강사님께 감사의 말씀 드립니디.12분 9초 질문드립니다. 강의에서 'NoneType' object has no attribute 'get_text' 해당 오류가 나온 이유가 list_item안에 단순히 뭐가 있냐 없냐를 따지는게 아니라 list_item안에 뭐가 있더라도 span subject_fixed 가 없으면 해당 오류가 뜨는거아닌가요? 수업시간에 강사님께서 말씀주신걸로 이해해 보면 list_item에 span subject_fixed가 아닌 어떤것이 있기만 하면 넘어가는 식으로 하셔서 헷갈려서 문의드립니다 ㅠ
-
해결됨자바 ORM 표준 JPA 프로그래밍 - 기본편
@JoinTable 기본키, 복합키
안녕하세요 @JoinTable 사용 중 궁금증이 생겨서 질문 남깁니다.연습중에 course와 category를 다대다로 연결하기 위해 @JoinTable을 사용했습니다. 추가적인 필드가 필요없다 생각해서 우선 다대다 관계를 풀어주는 엔티티를 만들지 않고 @JoinTable을 사용했습니다. 여기서 질문 입니다. 검색을 해본 결과 @JoinTable은 들어온 fk를 복합키로 사용한다고 보았습니다. 그렇다면 제 생각에는 예를들면 @JoinTable인 course_category에 (course_id = 1 , category_id = 1)인 데이터가 존재하면 (course_id = 1 , category_id = 1)라는 데이터가 중복될 수 없다고 생각했습니다. 하지만 중복된 데이터가 저장되는 것이 가능했습니다. 이 이유가 왜인지 궁금합니다!! @ManyToMany @JoinTable(name = "COURSE_CATEGORY", joinColumns = @JoinColumn(name = "course_id"), inverseJoinColumns = @JoinColumn(name = "category_id")) private List<Category> categoryList = new ArrayList<>(); @Id 필드를 사용하기 위해 category_course 엔티티를 따로 만드는 방법으로 수정 중에 있는데 위의 질문 내용을 짚고 넘어가고 싶어서 질문 남깁니다!
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
4.9실습관련 질문
4.9 실습에서1.처음 xgb_clf 객체를 생성할때, n_estimators 나 learning rate같은 파라미터 값들은 어떤값을 줘도 상관이 없을까요? 처음 분류기 모델을 생성할때 어떤값을 줘도 상관없는지 궁금합니다!그다음줄 코드 xgb_clf.fit(X_tr, y_tr, early_stopping_rounds=100, eval_metric='auc', eval_set=[(X_tr, y_tr), (X_val, y_val)]) 에서 eval_metric 을 이전 xgb실습때에는 'logloss'값을 줬는데 이번 실습에서는 roc_score를 평가지표로 사용한건가요? 학습을 시킬때, 어떤경우에는 평가지표를 어떤값을 줘야하는지 궁금합니다!목적함수 설정 부분에서 kfold방식으로 x_train을 나눈 이유가 궁금합니다!
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
다르게 적용해보는 Feature Engineering2 강의 질문입니다
다르게 적용해보는 Feature Engineering2 강의의 15:13 부분에서 질문입니다강의에서는 mean_survival_rate = np.mean(df_train['Survived'])와 같이 df_train 데이터프레임 Survived 컬럼의 값에 대해 평균을 구하고이를 생존할 확률 이라고 정의하였습니다. 저는 Survived 컬럼의 값은 0과 1로만 이루어져 0은 사망, 1은 생존 이라는 의미를 나타내는 명목 척도로 이해하였는데요,이에 대해 평균을 내면서 값을 구하는 것이 확률로써의 의미를 가질 수 있다는 것이 조금 이해가 되지 않습니다.제가 잘못 받아들이고 있는 것인지 좀 더 보충 설명 해주시면 너무 감사할 것 같습니다!
-
해결됨실전! Querydsl
@Deprecated
안녕하세요 queryDsl의 기본 문법에 대해서 듣고 있는데요.현재 기준, fetchResults(), fetchCount() 가 deprecated 되었네요.(자바11, springboot 2.7 버전에 맞는 queryDsl)강의 끝부분에서 말씀하신, 복잡한 페이징 & 쿼리 부분에서는 coun와 select 쿼리가 다르니까 따로 작성해서 해야된다는 말씀 것과 연관되어서 그런 것 맞을까요? 그러면 @Deprecated 된 현재는 fetchResults(), fetchCount() 는 사용을 지양하고 별개의 쿼리로 각각의 값들을 얻어 조합해서 response 해주는 것이 맞죠?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F 시간 초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/9be2e49bafe64797b19ed75db1b6ac7c 재귀로 이 문제를 구현해봤는데 시간 초과가 발생하였습니다. 어떤 부분에서 시간초과가 발생하였는지와 개선할 점에 대해 알려주셨으면 좋겠습니다. 또한 코드 자체는 맞은것 같은데 혹시 반례가 있다면 알려주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[초기화값] 1e9에 관한 질문입니다
안녕하세요 선생님, int 초기화값에 관해 궁금한 부분이 생겨 질문을 드립니다.int형 INF를 1e9로 초기화하는 기본적인 이유는 이해하였습니다. - INF끼리 더했을 때 범위가 넘어가는 것 등을 방지할 수 있다는 것과- 이상한 문제가 아니라면 1e9로 초기화해도 풀린다는 것그러나 만약 면접에서 1e9로 초기화한 이유를 질문받는다면 제대로 된 이유를 대답하지 못할 것 같습니다. 위의 두가지 대답은 풀이의 편의를 위해 1e9 이하의 답이 나올 것이라는 자체적인 판단 하에 마음대로 설정했다고 보일 듯 합니다. 문제에서 1e9를 넘어가는 답이 나오지 않을거라고 명시한 적이 없는데 왜 마음대로 1e9를 한계선으로 설정했냐는 질문을 받는다면 어떻게 대답하는 것이 맞을까요? 이런 질문은 들어오지 않는다고 봐야할까요?
-
미해결코딩테스트 [ ALL IN ONE ]
안녕하세요 강사님!
강사님 수업 강의 모두 결제해서 틈틈히 잘보고있는 개발자입니다 :)코테 강의 시청하다가혹시 cs강의 노션에 pdf파일 만들어주신거처럼개발자취업비밀노트코딩테스트이렇게 2개의 노션으로 공유해준 사이트에도 각각 pdf파일로 올려주실생각은 없으실까요ㅠ?ipad에 넣어서 밑줄치면서 공부하기가 편했던 기억이 있어서 궁금합니다! 만약 있으시면 일정도 알 수 있을까요!! :)
-
미해결[리뉴얼] 처음하는 파이썬 머신러닝 부트캠프 (쉽게! 실제 캐글 문제 풀며 정리하기) [데이터분석/과학 Part2]
다르게 적용해보는 Feature Engineering2 강의에서 질문입니다
다르게 적용해보는 Feature Engineering2 강의의 15:11 부분부터 궁금한 점이 있어 질문 올립니다.해당 강의에서는 다음과 같이 2개의 리스트를 작성하였는데요family_survival_rate = list() family_survival_rate_NA = list()동승자가 있는지/없는지를 기준으로 2개의 리스트에 값을 각각 넣어준다는 전체적인 과정은 이해했지만, 사실 family_survival_rate_NA 리스트는 어떤 이유로 존재하는 것인지에 대한 설명이 조금 필요한 것 같습니다. family_survival_rate = list() mean_survival_rate = np.mean(df_train['Survived']) # 0.3838383838383838 for i in range(len(df_all)): if df_all['Family_Name'][i] in family_rates: # 동승자가 있는 경우 family_survival_rate.append(family_rates[df_all['Family_Name'][i]]) # family_rates[df_all['Family_Name'][i]] -> family_rates 딕셔너리에서 위의 이름들을 키 값으로 하고, 이에 해당하는 Survived 값을 찾음 else: # 동승자가 없는 경우 family_survival_rate.append(mean_survival_rate) 동승자가 있으면 family_survival_rate 리스트에 Survived 컬럼의 생존 확률을 넣고, 동승자가 없으면 family_survival_rate 리스트에 생존 확률의 평균값을 넣어주면 충분한 것 아닌가 하는 생각이 드는데요, family_survival_rate_NA 리스트가 어떤 용도로 사용되는 것인지, 그리고 왜 값은 0과 1만을 넣는 것인지 조금 더 설명해 주시면 감사할 것 같습니다!!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
gets 관련 질문드립니다
7번 문제 (영어단어복구)에서 gets를 사용하였는데gets를 사용하면 오류가 떠서 사용을 못하게 되어서 찾아보니gets가 위험하여 fgets나 gets_s를 사용하라고 하던데fgets를 사용하니 개행문자까지 들어가서 for(i=0; arr[i]!='\n'; i++) 이렇게 사용하여 풀었는데혹시 공백이 포함된 문자열을 입력받을때 다른 좋은 방법이 있을까 질문드립니다! 그리고 대문자를 소문자 변환하여 다른 새 배열에 넣고 한번에 출력하셨는데혹시 for문 안에서 해당될때마다 문자 하나씩 출력하는것과 성능 차이가 있을까요? 감사합니다
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
map을 공부하던중.. m.insert(pair<int, int>(i, i * 100));
안녕하세요. 오늘 map 을 공부하던중..pair<int,int>(i,i*100) -> 이 부분이 도대체 무슨 소리인지 모르겠더라구요.. 이름이 없어서 생성자도 아니고 operator도 아니고 1시간 구글링 결투끝에 임시객체라는 표현을 알게되었어요.Q1임시객체가 무엇을 반환하는지가 궁금합니다..!코드상으로는 key 랑 value를 반환하는 것 같긴한데..내부를 살펴볼려해도 외계어가 난무해서 물어봅니다 ㅠㅠ 제가 너무 깊게 알려는건지 아니면 기초지식이 부족한건지 잘모르겠네요 하하..
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
프록시 서버는 자신이 private인지 public 인지 어떻게 아는걸까요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]뭔가 서버 구성할 때 설정하고 뭐 그런걸까요?
-
해결됨실전! Querydsl
생성자
안녕하세요jpa 인강 다 듣고 querydsl 강의 듣고 있습니다. 다름이 아니라 기본생성자의 접근제한자를 PROTECTED 로 제한한 이유가 있을까요? 기본생성자 자체가 필요한 이유는 프록시 객체 생성시 필요하다고 알고 있는데요, 굳이 PROTECTED 로 설정한 이유를 알고 싶습니다. 감사합니다.
-
해결됨디지털포렌식전문가 2급 필기 핵심 요약집[전자책]
혹시 올려주신 자료를 가지고 블로그에 정리해놓는 것이 가능할까요?
안녕하세요 이번에 디지털포렌식전문가 2급을 따기 위해 공부하기 시작한 학생입니다.다름이 아니라 올려주신 자료로 따로 공부를 하면서 블로그에 정리를 하고자 하는데 혹 이것이 문제가 되지 않는지 여쭙고자 글을 올립니다.