이야기를 나눠요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
@시코 - Java 제대로 배우기 (완벽한 기본기)
저작권?? 문의 드립니다
안녕하세요.강의 내용들을 정리 및 복습차원에서 간략하게나마 Tistory에 올리고있습니다.현재는 카테고리 전체를 비공개로 해 둔 상태이기도하고 공개로 돌릴 생각도 없습니다.다만 종종 구직중일때 다른 개발소스나 학습데이터들을 토대로 깃허브와 함께 포토폴리오로 사용하게 될때 단기간 공개로 바꾸어야할 경우가 있습니다.그 기간중 강의자료로 작성하신 소스코드나 학습 내용들이 단기간동안 공개되어도 괜찮으신지 여쭙고 싶습니다.출처는강의제목 / 강의자명 으로 간략하게 표기해둔 상태입니다상세하고 좋은강의 감사합니다..!
-
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
Spring Boot 3.0.2를 사용 중이신 분들이 설정하면 좋은 것
application.properties에 다음 설정을 추가해주세요.logging.level.org.springframework.core.LocalVariableTableParameterNameDiscoverer = error이 것은 Controller가 처음 실행될 때 나오는 로그인,WARN 10382 --- [nio-8080-exec-1] ocalVariableTableParameterNameDiscoverer : Using deprecated '-debug' fallback for parameter name resolution. Compile the affected code with '-parameters' instead or avoid its introspection: hello.springcoremvc211.controller.SpringUploadController를 없애줍니다.이것의 대한 자세한 내용은 https://github.com/spring-projects/spring-framework/issues/29612 에 있으며, Spring 6.0.3에서 고쳐지는 내용입니다.
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
안녕하세요 김영한 강사님 봐주실수있을까요 절실해요ㅠ
삭제된 글입니다
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
Filter를 등록하는 4가지 방법
안녕하세요. 정리 강의를 들으면서 Filter를 스프링 빈으로 등록하는 방법을 따라하다 버전 차이인지, 스프링 부트의 설정 차이인지, 에러가 발생하더군요.The bean 'logFilter', defined in class path resource [hello/springcoremvc26/config/FilterConfig.class], could not be registered. A bean with that name has already been defined in file [/project/java/spring/spring-core-mvc2-6/out/production/classes/hello/springcoremvc26/web/filter/LogFilter.class] and overriding is disabled.이유를 읽어보니, logFilter가 이미 빈으로 등록되어서 중복 등록이 안된다고 써져있었습니다.그래서 이에 대해 찾아본 결과를 공유하고자 글을 작성합니다. 아래 글은 제 블로그에도 정리되어 있습니다. (홍보...ㅎㅎ..)@ConfigurationLogFilter - 로그 필터@Slf4j public class LogFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LogFilter init()"); } @Override public void destroy() { log.info("LogFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LogFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LogFilter doFilter End", requestURI); } } }LoginCheckFilter - 로그인 필터@Slf4j public class LoginCheckFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LoginCheckFilter init()"); } @Override public void destroy() { log.info("LoginCheckFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LoginFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LoginFilter doFilter End", requestURI); } } }FilterConfig - Filter 등록@Configuration public class FilterConfig { @Bean public FilterRegistrationBean<Filter> logFilter() { FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(); bean.setFilter(new LogFilter()); bean.setOrder(1); bean.addUrlPatterns("/*"); return bean; } @Bean public FilterRegistrationBean<Filter> loginCheckFilter() { FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>(); bean.setFilter(new LoginCheckFilter()); bean.setOrder(2); bean.addUrlPatterns("/*"); return bean; } }실행 결과[/] LogFilter doFilter Start [/] LoginFilter doFilter Start [/] LoginFilter doFilter End [/] LogFilter doFilter End특징강의에서 나온 방법입니다.설정을 위한 별개의 파일(@Configuration 이 붙은 객체)이 필요합니다.setOrder() 를 통해 순서를 정할 수 있습니다.addUrlPatterns() 을 통해 베이스 URL 및 Whitelist를 설정할 수 있습니다.@ComponentLogFilter@Slf4j @Component @Order(1) public class LogFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LogFilter init()"); } @Override public void destroy() { log.info("LogFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LogFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LogFilter doFilter End", requestURI); } } }LoginCheckFilter@Slf4j @Component @Order(2) public class LoginCheckFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LoginCheckFilter init()"); } @Override public void destroy() { log.info("LoginCheckFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LoginFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LoginFilter doFilter End", requestURI); } } }실행 결과[/] LogFilter doFilter Start [/] LoginFilter doFilter Start [/] LoginFilter doFilter End [/] LogFilter doFilter End특징컴포넌트 스캔을 이용하기 때문에 설정을 위한 별개의 파일이 필요하지 않습니다.@Order 애노테이션을 이용해 순서를 설정할 수 있습니다.기본 URL Pattern이 /* 이며 설정할 수 없습니다.@WebFilter + @ServletComponentScanLogFilter@Slf4j @WebFilter public class LogFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LogFilter init()"); } @Override public void destroy() { log.info("LogFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LogFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LogFilter doFilter End", requestURI); } } } LoginCheckFilter@Slf4j @WebFilter public class LoginCheckFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LoginCheckFilter init()"); } @Override public void destroy() { log.info("LoginCheckFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LoginFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LoginFilter doFilter End", requestURI); } } } MainApplication@ServletComponentScan @SpringBootApplication public class MainApplication { public static void main(String[] args) { SpringApplication.run(SpringCoreMvc26Application.class, args); } } 실행 결과[/] LogFilter doFilter Start [/] LoginFilter doFilter Start [/] LoginFilter doFilter End [/] LogFilter doFilter End 특징설정을 위한 별개의 파일이 필요하지 않습니다.대신, 애플리케이션 실행되는 메인 객체위에 @ServletComponentScan 을 사용해야 합니다.@Order를 이용한 순서 등록을 사용할 수 없습니다.각 필터에 대한 순서를 보장할 수 없습니다.@WebFilter 의 value 나 urlPatterns 파라미터를 이용해 whitelist 방식으로 베이스 URL을 설정할 수 있습니다.@WebFilter("/filter/*")@WebFilter({"/login", "/items"})@WebFilter(urlPatterns = "/filter/*")@WebFilter(urlPatterns = {"/login", "/items"})@WebFilter + @ComponentLogFilter@Slf4j @WebFilter @Component @Order(1) public class LogFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LogFilter init()"); } @Override public void destroy() { log.info("LogFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LogFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LogFilter doFilter End", requestURI); } } } LoginCheckFilter@Slf4j @WebFilter @Component @Order(1) public class LoginCheckFilter implements Filter { @Override public void init( FilterConfig filterConfig ) throws ServletException { log.info("LoginCheckFilter init()"); } @Override public void destroy() { log.info("LoginCheckFilter destroy()"); } @Override public void doFilter( ServletRequest request, ServletResponse response, FilterChain chain ) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; String requestURI = req.getRequestURI(); log.info("[{}] LoginFilter doFilter Start", requestURI); try { chain.doFilter(request, response); } finally { log.info("[{}] LoginFilter doFilter End", requestURI); } } } 실행 결과[/] LogFilter doFilter Start [/] LoginFilter doFilter Start [/] LoginFilter doFilter End [/] LogFilter doFilter End 특징두 번째 방법과 세 번째 방법을 모두 사용하는 방법입니다.설정을 위한 별개의 파일이 필요하지 않습니다.컴포넌트 스캔 방식을 사용하기 때문에 @ServletComponentScan 도 필요없습니다.@Order 애노테이션을 이용해 순서를 설정할 수 있습니다.@WebFilter 의 value 나 urlPatterns 파라미터를 이용해 베이스 URL이나 Whitelist 방식으로 설정할 수 있습니다.@WebFilter("/filter/*")@WebFilter({"/login", "/items"})@WebFilter(urlPatterns = "/filter/*")@WebFilter(urlPatterns = {"/login", "/items"})애노테이션이 기본으로 3개가 필요합니다.정리결론필터를 사용하기 위한 4가지 방식을 알아보았습니다.첫 번째 방법(@Configuration + FilterRegistrationBean)과 두 번째, 세 번째 방법을 합친 네 번째 방법(@WebFilter + @Component) 중에서 고려하면됩니다.저의 경우에는 @Configuration + FilterRegistrationBean을 더 맘에 드는데, 이유는 Filter Class 위에 애노테이션을 여러개 붙이는 것 보다, 별도의 생성 파일을 하나 만들어서 관리하는게 더 편할 것 같아서였습니다.하지만, @WebFilter + @Component은 스프링 빈으로 등록하는 방법이기에, 다른 스프링 빈을 의존성 주입 받을 수 있습니다. 그런 경우에는 첫 번째 방법으론 할 수 없으니, 네 번째 방법을 사용하면 될 것 같습니다.
-
스프링 DB 2편 - 데이터 접근 활용 기술
내부 트랜잭션이 여러 개 있을 때 롤백 실험
내부 트랜잭션이 여러 개 있을 때 앞쪽 내부 트랜잭션이 롤백될 경우 이후의 내부 트랜잭션은 로직을 수행하는지, 아니면 이후 로직은 수행되지 않고 바로 물리 트랜잭션을 롤백시키는지 의문이 들어 확인해보았습니다. 구조외부 트랜잭션내부 트랜잭션 1내부 트랜잭션 2 코드: 내부 트랜잭션1 - 롤백, 내부 트랜잭션2 -커밋결과결과를 확인해보면 내부 트랜잭션1을 롤백하는 코드가 실행될 때 물리 트랜잭션을 rollback-only로 마킹하고 해당 내부 트랜잭션이 실패합니다. -> 트랜잭션 동기화 매니저에 마킹을 합니다.(이후 강의 내용)하지만 이후 로직을 수행하러 갑니다.수행하러 가서 내부 트랜잭션2 커밋 호출문을 만나면 글로벌(물리) 트랜잭션이 rollback-only로 마킹되어있기 때문에 커밋할 수 없다고 합니다. 계속 가서 마지막에 외부 트랜잭션 커밋이 호출되면 UnexpectedRollbackException 예외가 발생하면서 "rollback-only로 마킹되어있기 때문에 해당 트랜잭션은 롤백되었다"는 로그가 뜹니다. 해당 예외의 조상에는 발생시 트랜잭션이 롤백되는 RuntimeException 예외가 있었습니다. 결론내부 트랜잭션 수행 중 롤백 발생시에 바로 물리 트랜잭션이 롤백되는게 아니다.물리 트랜잭션 -> 트랜잭션 동기화 매니저가 rollback-only의 체크 유무로 롤백 여부를 판단하고, 예상치 못한 상황(rollback-only 마킹돼 있는데 물리 트랜잭션을 커밋하려고 할 때)에서 UnexpectedRollbackException을 발생시켜 롤백을 수행한다. 아직 모르는게 많아서 결론이 맞지 않을 수도 있습니다! 이후 강의를 수강하면서 부족한 점을 채우러 가겠습니다~!
-
✨스위그(SWYG)에서 메타 콘텐츠를 찾습니다✨
메타 콘텐츠 공유 및 호스팅 플랫폼 스위그(SWYG)에서 메타 콘텐츠를 찾습니다!*메타 콘텐츠는 심리테스트, 온라인 방탈출, 인터랙티브 웹, 온라인 전시, 미니게임 등 코딩을 기반으로 만들어진 웹 콘텐츠입니다.‘스위콘’ 이란?제작해 둔 메타 콘텐츠가 있지만 아직 배포하지 않았거나 자체 도메인이 없는 메타 콘텐츠를 SWYG에서 복잡한 절차와 비용 없이 쉽고 빠르게 배포할 수 있는 프로그램입니다. SWYG에서는 위와 같은 메타 콘텐츠를 깃허브 연동 후 ‘배포 버튼’ 클릭 한 번으로 배포가 가능합니다. 또 원하는 도메인을 제공하고, 광고를 부착할 수 있어 수익 창출까지 가능합니다.이런 콘텐츠도 가능한지 고민이 되신다구여❓- 처음 만들어본 것도 가능할까?- 한 페이지인데 상관없을까?- 디자인이 예쁘지 않은데 괜찮을까?- 콘텐츠가 별로인 것 같은데 괜찮을까?- 콘텐츠로 수익을 창출할 수 있을까?위에 해당되는 콘텐츠도 모두 오케이 👌※ 선정적이거나 폭력성, 사행성 요소가 많이 포함된 콘텐츠는 출시가 불가능할 수 있습니다.🤷왜 스위그에서 출시를 해야 하나요?🔥콘텐츠 출시 Benefit🔥- 웹 호스팅 및 도메인 제공- 복잡한 심사 절차 없이 광고 부착 가능- 트래픽이 많이 발생할 수 있도록 전담 마케팅 제공- 사용자 유입 데이터 제공- 스위그의 자동 SEO를 통한 검색엔진 최상단 노출 가능- 콘텐츠의 고도화를 위한 인프라 지원👉 혜택 자세히 알아보기 https://swyg.link/h5j_0📅 일정- 지원 마감: ~ 2/21(화)- 콘텐츠 등록 결과 안내 : 2/23(목) 15:00📌 지원서https://swyg.link/A5YV9✨[SWYG 요약 소개]✨SWYG에서 심리테스트, 미니게임, 인터랙티브 콘텐츠와 같은 특색 있는 메타 콘텐츠를 즐기고, 직접 만든 콘텐츠를 호스팅하여 많은 사용자들을 유입시킬 수 있습니다.🔗SWYG 홈페이지https://www.swygbro.com🔗SWYG 인스타그램https://www.instagram.com/swyg_official🙋문의Kakao: https://open.kakao.com/me/swyg_contentEmail: shlee@swygbro.com
-
2023 USG+ AI·데이터 문제해결 제조혁신 경진대회 ~ 3월 6일 접수마감
○ 참가 안내- 대회 및 참가 안내 : https://aifactory.space/competition/detail/2261 ○ 개요- USG+ 참여대학 소속 학생들을 대상으로 제조혁신을 위한 제조 AI·데이터를 활용하여 제조현장의 제조성공 여부, 불량률 예측분석 등 제조 ICT 모델 개발 및 적용 과제를 운영합니다.- USG+ (University System of Gyeongnam + Ulsan)는 경남과 울산지역의 대학, 기업, 지자체가 협력하여 만든 공유형 대학으로 학교·학과의 장벽을 없애고 모든 대학을 하나의 캠퍼스처럼 공유하는 교육시스템- 소속대학(17개) : 경상국립대학교, 경남대학교, 창원대학교, 인제대학교, 울산대학교, 영산대학교, 경남도립거창대학교, 경남도립남해대학교, 창원문성대학교, 마산대학교, 거제대학교, 동원과학기술대학교, 연암공과대학교, 진주보건대학교, 김해대학교, 한국승강기대학교, 울산과학대학교 ○ 추진배경- 울산∙경남 지역의 제조업 혁신을 위한 제조ICT 산업의 육성을 위해 ICT/SW융합 응용 기술을 개발할 수 있는 직무역량, 현장 문제해결 역량의 실무 능력을 갖춘 혁신 인재를 육성하고자 합니다. ○ 대회 목적- 울산∙경남의 제조혁신을 위해 AI·데이터를 발굴하고 USG+ 참여대학 소속 참가자들이 AI·데이터 기술을 활용해 제조 현장의 문제를 해결하고자 합니다. ○ 주최/주관/운영- 주최·주관: (재)경남테크노파크, 울산·경남지역혁신플랫폼 스마트제조ICT사업단- 운영: 인공지능팩토리 ○ 참가대상- 참가대상: USG+ 소속대학을 포함한 울산∙경남 지역 대학 재학생 누구나 (대학원생 포함)- 팀(2인 이상 최대 4인), 최소 2인 이상 (✽팀 빌딩은 참가신청 이후에 태스크 내에서 진행하실 수 있습니다)- (필수) 팀 구성시 USG+ 소속대학 학생 2인 이상 참여 필수- 대회 문제 : 출제 문제 및 평가지표는 경진대회 오픈 시 공개 ○ 기간 및 일정 (UTC+ 9(한국) 기준)- 접수기간: 2. 20.(월) ~ 3. 6.(월) 20:00 까지- 온라인설명회: 3. 7.(화) 17:00- 온라인설명회 링크: https://youtube.com/live/PL9CKeFIiXk?feature=share- 대회기간: 3. 8.(수) 15:00 ~ 3. 13.(월) 17:00 까지- 심사기간: 3. 14.(화) ~ 3. 21.(화)- 수상 발표: 3. 21.(화) 17:00 이후- 시상식: 4. 13.(목)(예정)※ 상기일정은 원활한 대회운영을 위해 일부 조정될 수 있습니다. ○ 시상내역 (총 8개팀 선발, 참가자 모두에게 기념품 제공)- 대상(1팀): 경남대학교 총장상- 최우수상(2팀): 경남대학교 총장상- 우수상(2팀): 울산·경남지역혁신플랫폼 총괄운영센터장상- 장려상(3팀): 울산·경남지역혁신플랫폼 총괄운영센터장상 ○ 문의- 울산·경남지역혁신플랫폼 스마트제조ICT사업단: oouooya@kyungnam.ac.kr / ☏ 여성일 T. 055-259-5983
-
CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
포트폴리오 첨삭 이벤트 신청했습니다!
삭제된 글입니다
-
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
PathPattern에 대한 몇가지 예시입니다.
설명PathPattern 공식 문서?: 한 문자 일치/pages/t?st.htmlYES: /pages/test.html, /pages/tXst.htmlNO : /pages/toast.html*: 경로(/) 안의 모든 문자 일치/resources/*.pngYES: /resources/photo.pngNO : /resources/favority.ico**: 하위 경로 모든 문자 일치/resources/**/resources/image.png, /resources/css/spring.css{spring}: spring 이라는 변수로 캡처/resources/{path}/resources/robot.txt -> path변수에 "robot.txt" 할당@PathVariable("path")로 접근 가능{*spring}: 하위 경로 끝까지 spring변수에 캡쳐/items/{*path}/items/1/add -> path변수에 "/1/add" 할당{spring:[a-z]+}: 정규식 이용/items/{path:[a-z]+}YES: /items/robotsNO : /items/123 예제 1 - {*spring}@GetMapping("/hello/{*name}") @ResponseBody public String handleTest( @PathVariable String name ) { log.info("name = {}", name); return name; }GET http://localhost:8080/hello/path-test -> name = /path-test === GET http://localhost:8080/hello/path-test/other -> name = /path-test/other 예제 2 - 정규식@GetMapping("/static/{name:[a-z-]+}-{version:\\d\\.\\d\\.\\d}{ext:\\.[a-z]+}") @ResponseBody public String handle( @PathVariable String name, @PathVariable String version, @PathVariable String ext ) { log.info("name = {}", name); log.info("version = {}", version); log.info("ext = {}", ext); return "/" + name + "/" + version + "/" + ext; }GET http://localhost:8080/pathtest-1.0.0.jar -> name = pathtest version = 1.0.0 ext = .jar 잘못된 사용@GetMapping("/static/{*fullpath}{name}") @ResponseBody public String runtimeError( @PathVariable String fullpath, @PathVariable String name ) { log.info("fullpath = {}", fullpath); log.info("name = {}", name); return name; } Description: Invalid mapping pattern detected: /static/{*fullpath}{name} ^ No more pattern data allowed after {*...} or ** pattern element{*...} 또는 ** 패턴 요소 다음에는 다른 패턴 데이터를 사용할 수 없습니다.
-
실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용
동적 페이지의 크롤링 강의도 추가될 계획이 있으신가요??
실무에서 하다보니 상당히 많은 사이트들이 동적 페이지라서 셀레니움을 사용해야만 하는 경우가 많습니다그런데 셀레니움 반복적으로 사용하니 컴퓨터가 느려지는 효과를 경험하고 있습니다...json 데이터를 가져오는 법을 배워보고 싶은데 향후 강의에 추가될 계획이 있으신지요? :))
-
UIKit - iOS14 실무 가이드 <iOS앱 진짜 개발자 되기>
MovieApp 빌드 시 UISearchDisplayController... 에러 나시는 분들 참고
MovieApp 빌드 할 때UISearchDisplayController is unavailable when deploying to iOS 13.0 or later이런 에러 나온다면,storyboard에서 해당 아이콘 중에 'UISearchDisplayController'이 있는지 보시고 삭제하시면 빌드 됩니다.(삭제는 storyboard오른쪽에 View Controller Scene 하단에 있는 'UISearchDisplayController'을 클릭하고 back space 누르시면 됩니다.) 에러의 이유는 13이후 버전에서는 아예 없어진 것인데 붙어있어서 빌드가 안되는 것 같았습니다. 혹시 나중에 터질지는 모르겠지만, 제가 찾아봤을 때 뾰족한 해결법이 없어서 일단 공유 해봅니다.
-
선배님들, 부트캠프 하차 후 국비지원... 괜찮을까요?
현재 온라인 부트캠프에서 구르고 있는 백수입니다.사전에 아무런 준비도 없이 무턱대고 부트캠프에 들어가서 한달 넘게 식겁했습니다.지금은 겨우 적응해서 중상위권 성적으로 간신히 버티는 중 입니다.그런데 진도가 너무 빨라서 머리에 남는게 없을까봐 너무 두렵습니다.이대로면 취업하고도 일을 돕기는 커녕 민폐나 끼치지 않을까 걱정이 앞섭니다. 그래서 일부를 제한 수강료를 환불 받고 현재 부트캠프에서 하차한 후에3월이나 4월에 시작하는 온라인 국비지원 부트캠프로 옮기는 것을 고려하고 있습니다.취업이 다소 늦어지더라도 국비지원을 받을테니 비용 측면에서는 피차일반이지만,제가 온전히 공부만 할 수 있는 기간을 조금 더 늘릴 수 있다는 이점이 있습니다. 한 달 남짓 기간이 있는 만큼 독학으로 기본기를 좀 더 다지고 싶다는 마음이 커지고 있습니다.이런 이유로 인프런 강의를 통한 독학과 국비지원 부트캠프를 병행하고자 합니다. 제가 어린 나이라면 고민없이 후자를 택하겠지만,나이도 먹을 만큼 먹은 상태여서 올해 하반기 취업시장을 놓치는데 대한 아쉬움도 큽니다.그래서 결정을 내리지 못 하고 고민을 거듭하고 있습니다. 선배님들이 보시기엔 어떤가요?이러한 전학(?)은 미친 짓일까요?진심 어린 조언을 간곡히 부탁드립니다. (_ _)
-
CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
순수(바닐라) 자바스크립트에서 외부 api key를 은닉할 수 없을까요?
open api 강의를 듣고, open api 찾아서 간단한 앱을 만들어 보려고 하는데, api key가 있더라구요. 그래서 회원가입을 하고 키를 발급받은 후 fetch 를 통해서 데이터를 받아와서 만들긴 했는데, 갑자기 이 생각이들더라구요. api key는 은닉이 되어야 하는게 맞지 않나? 라는거요 (사실 리액트 ,뷰 같은 라이브러리 혹은 프레임워크를 사용하면 배운대로 자연스레 하는 것이지만, 자바스크립트 자체적으로 건드려 본 적은 없다는 사실을 깨달았어요.). 그 후 은닉을 어떻게 하면 할 수 있는가 찾아봤는데, 서버 측에서 가능한 dotenv 를 다운 받아서 쓰거나 아니면 무료로 도메인을 등록해주는 사이트 자체의 옵션을 건드려서 하는 방법(서버리스?)은 있는데, 순수 자바스크립트 자체적으로 하는 방법은 안 보이더라구요. 결론적으로 순수 자바스크립트 자체만으로 , 발급 받은 api key를 은닉할 수는 없는 걸까요?
-
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
코팩님 지도 관련 재밌어요!!!
지도 강의에서 재밌으면 댓 남겨달라고 하신걸 듣고댓글 남겨요더 추가 원해요!아주 api사용 하는거 재밌어요
-
엑셀로 끝내는 보고서 차트 실무 강의
좋은 강의,,,,
정말 좋은 강의였습니다.다음에도 좋은 강의 부탁드립니다.
-
[입문] Qt 6 프로그래밍 2편
내부에서 사용할 용도로 만들면 라이센스가 어떻게 되는지요
그냥 단순 궁금해서 질문합니다.만약에 회사에서 판매 목적이 아니고 내부에서만 사용할 용도로 만든 프로그램은 라인센스가 어떻게 되는지 문의합니다.
-
결제 서비스 개발할 때 쓰이는 기술
전 아임포트API로 기능 연동 정도만 경험해본 교육생입니다.구현한 기능 수준은 결제 정보에 대한 검증이나 보안과정이 없는 수준인데요.자소서를 쓸 때 결제 서비스 구현에 대한 역량을 고도화하고 싶다는 말을 설득력있게 하고 싶습니다. 이를 위해 결제 파트 맡으시는 현업자분들이 따로 공부하는 것은 어떤게 있을까요? (특정 툴? 특정 라이브러리? 특정 개념?) ex) 성능 테스트를 위해 ngrinder를 사용한다던지, 보안을 위해 spring security 공식문서를 읽어본다던지
-
1
1
-
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
손코딩 이후 코드 작성하는 방법
안녕하세요! 강의 잘 듣고 있는 학생입니다. 선생님 저 같은 경우 코딩 테스트 문제를 풀때, 컴퓨터(IDE)에 바로 작성하지 않고 노트에 solution 부분의 코드를 전부 손코딩으로 작성 해본 뒤에 컴퓨터로 작성합니다. 이런 방식이 코딩테스트 시험 볼때는 시간제한이 있으니,, 비효율적인지 궁금합니다. (현재는 코드가 짧아서 상관 없다고 생각하지만, 어려운 문제들.. 즉, 코드가 길어 지는 문제들을 풀때 문제가 되지 않을까? 생각하여 이렇게 질문을 남깁니다) 이렇게 하게 된 이유는, 펜으로 작성해보지 않고 바로 코드를 타이핑 하려니 생각이 잘 떠오르지 않아 이렇게 하게 되었습니다.
-
함수형 프로그래밍과 JavaScript ES6+
세상에서 제일 신기한 기본기..
이것도 모르고 js를 써왔던 내 인생이 레전드네요..