이야기를 나눠요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
파이널 코딩테스트 : 프론트엔드
이떄부터 따라가지 못해 코딩쇼를 보는거같았어요 ..
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 중간에 수정하는 내용이 많아 흐름이 끊키고 따라가질 못하겠어요
-
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
도커 사용시 온프레미스 환경과 클라우드환경차이
안녕하세요 강사님 강의를 듣다 문득 궁금한 점이 생겨 질문 남깁니다. 도커 사용시, 클라우드 리눅스에서 부르는 것 처럼 리눅스 OS 온프레미스 환경에서도 도커가 사용가능한 것으로 생각이 되는데 그렇다면 왜 도커는 보통 클라우드 환경에서 많이 쓰이는 것인가요? 온프레미스 환경에서도 기본 도커를 쓸 수 있으니 온프레미스 리눅스 환경에서 도커를 사용하는 것도 장점이라면 장점일 것 같다는 생각이 들어서요. 클라우드 사용시 사용비용도 계속 들어가고 있어서 ... 그냥 문득 궁금해져서 질문 남깁니다!!
-
프론트엔드 개발환경의 이해와 실습 (webpack, babel, eslint..)
webpack5에서는 'clean-webpack-plugin' 설치가 필요없습니다.
module.exports = { output: { filename: '[name].bundle.js', path: path.resolve(__dirname, 'dist'), clean: true, }, };
-
Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
너무 재밌습니다 ㅋㅋㅋ
강의 2회차입니다. 2년전인가 들었던거 같은데 한동안 vue 쓸일이 없었다가 다음 프로젝트에 vue가 쓰인다고해서 듣고 있는데 너무 재밌습니다. 기효님 짱 💯
-
Watch Me Code: React x Typescript로 Slack 클론코딩하기
webpack 실행 시 404 에러가 발생하는 분들 참고
webpack-dev-server 3버전을 기준으로 되어있는 영상인데, github에는 4버전으로 되어있어요. 이 과정에서 변경사항이 생긴 것 같습니다. devServer: { // ... publicPath: "/dist/", } 위 코드를 아래와 같이 변경하세요. devServer: { // ... devMiddleware: { publicPath: "/dist/" }, static: { directory: path.resolve(__dirname) }, }, 그리고 서버를 실행하면 됩니다.
-
학생 ios 앱 개발팀, 설문조사 부탁드립니다!
안녕하세요! 저희는 전남대학교 재학생으로 이루어진 어플리케이션 개발팀입니다. 현재 저희는 자기계발 / 취미생활 분야의 모바일 지식 공유 ios 어플리케이션을 개발하고 있습니다. 보다 완성도 있는 서비스를 제공하기 위해, 여러분들의 의견을 구하고자 설문조사를 준비하게 되었습니다. 설문조사는 5분 이하의 시간이 소요될 예정이며, 여러분의 응답이 저희에겐 큰 도움이 됩니다. 설문에 응답해주신 분들중, 추첨을 통해 스타벅스 아메리카노 기프티콘도 제공해드릴 예정이니, 많은 참여 부탁드립니다. 감사합니다. https://docs.google.com/forms/d/e/1FAIpQLScqJCu3cnEGdMSPGmLKAB2HjOlYqXsFj0q5ClfXXuhAN48urQ/viewform
-
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
멈추지 말고 완전정복
몇 년을 쉬고 오랜만에 공부하러 들어왔는데 좋은 강의 감사합니다. 늦게 시작한 만큼 오래해서 완전정복 할께요~!
-
안녕하세요! ios 어플리케이션 개발팀입니다! 여러분들의 관심이 큰 힘이 됩니다.
안녕하세요! 저희는 전남대학교 재학생으로 이루어진 어플리케이션 개발팀입니다. 안녕하세요! 저희는 전남대학교 재학생으로 이루어진 어플리케이션 개발팀입니다. 현재 저희는 자기계발 / 취미생활 분야의 모바일 지식 공유 ios 어플리케이션을 개발하고 있습니다. 보다 완성도 있는 서비스를 제공하기 위해, 여러분들의 의견을 구하고자 설문조사를 준비하게 되었습니다. 설문조사는 5분 이하의 시간이 소요될 예정이며, 여러분의 응답이 저희에겐 큰 도움이 됩니다. 설문에 응답해주신 분들중, 추첨을 통해 스타벅스 아메리카노 기프티콘도 제공해드릴 예정이니, 많은 참여 부탁드립니다. 감사합니다. https://docs.google.com/forms/d/e/1FAIpQLScqJCu3cnEGdMSPGmLKAB2HjOlYqXsFj0q5ClfXXuhAN48urQ/viewform
-
스프링 배치
수업자료 관련 질문입니다!
강사님 강의 너무 잘 듣고 있습니다! 반복하여 설명해주시고, 디버거를 찍어가며 설명해주시는 덕분에 이해가 정말 수월하게 잘 되는 것 같습니다. 혹시 해당 수업자료를 제가 운영하고 있는 블로그에 사용해도 괜찮을까요~? 물론 출처는 남겨놓고 사용하겠습니다
-
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
잼이있네요.
이펙티브 C++하고 STL 책 읽고와야 여기 기초 개념들을 이해하겠네요. ㅎㅎㅎ 그거 안 읽고 오시는 분들은 낭패 볼 듯~
-
자바스크립트 제대로 배워볼래?
강의 너무 좋아요
이해도 쏙쏙되고 2일만에 거의 완강했습니다...
-
안녕하세용요용
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
코딩으로 학습하는 GoF의 디자인 패턴
예제가 잘 못 된 듯하여 리포트 드립니다.
강의 1:40경에 예제가 잘 못 된 듯 합니다. user2는 "디자인패턴" subject에 register된 user가 아닌데, unregister 예제로 user2를 사용하셨네요^^;;; 사소한 거지만, 리포트드립니다~ 언제나 좋은 강의 감사합니다.
-
테스트
삭제된 글입니다
-
안녕하세요
인프런 처음 사용하는데 되게 괜찮은거같아요!
-
코딩으로 학습하는 GoF의 디자인 패턴
가장 인간미 느껴지는 회차입니다!!
싱글패턴 2부 기선님의 인간미가 느껴지네요!! 늦은 밤에도 언제나 좋은 강의 너무 감사합니다!!
-
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
도커 컨테이너 복사에 관해
안녕하세요 강사님, 도커 컨테이너를 한꺼번에 많이 만들 수 있다고 그러셨는데 그럼 똑같은 컨테이너의 설정을 한번에 복사해서 만들게 되면 외부에서 접속시에 어떻게 되나요? 예를 들어 도커안에 몇몇개의 같은 컨테이너에 9999 포트를 허용해놓고 접속을 허용하게 된다면, 외부에서 들어올때 모든 도커의 컨테이너에 접속을 하게되는지 말씀하신 Compose라는 관리 툴로 관리를 하게되는지 궁금합니다. 도커끼리의 네트워크 연결을 안하게 된다면 이와같은 상황에서 어떻게 될까요?
-
솔리디티 깨부수기
추천드립니다!!
고민하시는분은.. 무조건 들어보세요!!!
-
스프링 핵심 원리 - 고급편
콘솔 로그를 테스트하는 방법에 대해 알아봤습니다.
void 메서드는 어떻게 테스트해야할 지 고민해본 적은 있었는데, 콘솔 로그가 원하는대로 나오는지 테스트는 해본적이 없는 것 같습니다. 좋은 것 배워갑니다. class LogTrackerV1Test { @Test void begin_end() throws Exception { // given ListAppender<ILoggingEvent> listAppender = new ListAppender<>(); Logger logger = (Logger) LoggerFactory.getLogger(LogTrackerV1.class); logger.addAppender(listAppender); listAppender.start(); LogTrackerV1 tracker = new LogTrackerV1(); // when TraceStatus status = tracker.begin("hello"); tracker.end(status); // then List<ILoggingEvent> testLogs = listAppender.list; assertThat(testLogs).hasSize(2); assertThat(testLogs.get(0).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello"); assertThat(testLogs.get(0).getLevel()).isEqualTo(Level.INFO); assertThat(testLogs.get(1).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello\\stime=[0-9]*ms"); assertThat(testLogs.get(1).getLevel()).isEqualTo(Level.INFO); } @Test void begin_exception() throws Exception { // given ListAppender<ILoggingEvent> listAppender = new ListAppender<>(); Logger logger = (Logger) LoggerFactory.getLogger(LogTrackerV1.class); logger.addAppender(listAppender); listAppender.start(); LogTrackerV1 tracker = new LogTrackerV1(); // when TraceStatus status = tracker.begin("hello"); tracker.exception(status, new IllegalArgumentException()); // then List<ILoggingEvent> testLogs = listAppender.list; assertThat(testLogs).hasSize(2); assertThat(testLogs.get(0).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello"); assertThat(testLogs.get(0).getLevel()).isEqualTo(Level.INFO); assertThat(testLogs.get(1).getFormattedMessage()).matches("\\[[a-z0-9]{1,8}\\]\\shello\\stime=[0-9]*ms ex=[a-zA-Z.]*"); assertThat(testLogs.get(1).getLevel()).isEqualTo(Level.INFO); } }
-
스프링 핵심 원리 - 고급편
CountDownLatch가 뭔지 궁금해서 찾아봤습니다.
첨듣는 키워드였는데 좋은 것 알아갑니다 ! @Slf4j public class FieldServiceTest { private FieldService service = new FieldService(); @Test void service() throws Exception { log.info("Main start"); int count = 5; CountDownLatch countDownLatch = new CountDownLatch(count); ExecutorService executorService = Executors.newFixedThreadPool(processors()); Stream.generate(() -> { String user = UUID.randomUUID().toString().substring(0, 8); return new Thread(new FieldServiceWorker(countDownLatch, service, user)); }) .limit(count) .collect(Collectors.toList()) .forEach(executorService::submit); countDownLatch.await(); // countDownLatch의 카운트가 0이 될 때까지 대기 log.info("Finished"); } private int processors() { return Runtime.getRuntime().availableProcessors() + 1; } } @Slf4j public class FieldService { private String nameStore; public String service(final String name) { String threadName = Thread.currentThread().getName() + Thread.currentThread().getId(); log.info("{}: 입력 name={}", threadName, name); log.info("{}: 저장 name={} -> nameStore={}", threadName, name, nameStore); nameStore = name; TimeUtils.sleep(1000); log.info("{}: 조회 nameStore={}", threadName, nameStore); return nameStore; } @RequiredArgsConstructor public static class FieldServiceWorker implements Runnable { private final CountDownLatch countDownLatch; private final FieldService service; private final String name; @Override public void run() { service.service(name); TimeUtils.sleep(1000); countDownLatch.countDown(); // countDownLatch의 카운트를 하나 감소시킴. } } }