묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
LogTemp 가 로그창에서 안보입니다 ㅠ
검색창에 LogTemp로 쳐봐도 안보이고 카테고리에도 없는데 따로 설정해야 할것이 있었나요?
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
값에 0대신 입력을 안해도 문제없나요?
border: 2px solid blue;box-shadow: inset 0 0 100px #000이렇게 여러 값 한번에 쓰는 속성에서 기본정보를 사용할때 0이나 black같은거는 입력안해도 라이브화면에서 원하는대로 보이는데 나중에 오류가 나거나 그러지않으면 아예 안적어도 되나요?
-
미해결스프링 핵심 원리 - 기본편
싱글톤 @Configuration
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]class StatefulServiceTest { @Test void statefulServiceSingleton() { ApplicationContext ac = new AnnotationConfigApplicationContext(TestConfig.class); StatefulService statefulService1 = ac.getBean(StatefulService.class); StatefulService statefulService2 = ac.getBean(StatefulService.class); // Thread A : A 사용자 10000원 주문 // statefulService1.order("userA", 10000); int userAPrice = statefulService1.order("userA", 10000); // Thread B : B 사용자 10000원 주문 // statefulService2 .order("userB", 20000); int userBPrice = statefulService2.order("userB", 20000); // Thread A : A 사용자 주문 금액 조회 // int price = statefulService1.getPrice(); // System.out.println("price = " + price); System.out.println("userAPrice = " + userAPrice); System.out.println("userBPrice = " + userBPrice); } static class TestConfig { @Bean public StatefulService statefulService() { return new StatefulService(); } } }이 코드에서 TestConfig는 @Configuration 어노테이션을 붙이지 않았는데 어떻게 싱글톤이 보장된건가요?
-
미해결Jenkins를 이용한 CI/CD Pipeline 구축
명령어..안돼요 ㅠ
sudo amazon-linux-extra install epel -y라고 명령어 내리면 command not found라고 나옵니다 ㅠ
-
미해결기초부터 따라하는 디지털포렌식
FTK 설치 질문
D드라이브를 만들어서 해보려고 해도 되지 않고 배경화면에 저장하려해도 되지 않습니다. 어떻게 해야하나요..?
-
미해결블렌더 입문 : UX/UI 디자이너를 위한 3D 아이콘으로 배우는 블렌더!
[아이콘 10,11 컵 모델링 및 룩뎁] 빨대 끝이 납작해져요
선생님이 작업하신 이미지에서는 빨대 두께가 일정하게 보이는데요 제가 따라하면 빨대 끝이 납작해집니다ㅠㅠsubdivide 해서 모양을 조정해봐도 다시 빨대만 새로 만들어봐도 해결되지 않네요빨대 두께를 일정하게 만드는 법이 있을까요?
-
미해결김영한의 실전 자바 - 기본편
객체지향 프로그래밍 - 코드 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.다음 코드에서 멤버 변수 amount 의 선언이 메서드의 매개변수 자리에서 이뤄져도 충분한 건가요? 왜 그런지 이유를 알고 싶습니다!
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
최근 DatePicker의 textColor prop이 제거되었고, theme 사용이 권장됩니다.
버그나 에러 질문은 아니구요! react native date picker 패키지를 이용해 DatePicker를 구현하는 단계있는데요,textColor prop을 타이핑할 때 자동완성이 안되어 찾아보니 올해 3월 23일에 릴리즈한 5.0.0에서 제거되었네요. https://github.com/henninghall/react-native-date-picker/releases/tag/5.0.0대신 theme을 사용하라고 하는데, 기본값인 auto를 쓰거나 혹은 light로 설정하면 강의와 같이 text가 검은색으로 잘 나옵니다.강의 들으시다가 저처럼 띠용하시는 분 계실까봐 참고차 남겨놓습니다! 좋은 강의 감사드립니다!
-
해결됨김영한의 실전 자바 - 중급 2편
Generate로 hash 생성시, hash()와 hashCode()
Generate를 이용해서Hash 생성시@Override public int hashCode() { return Objects.hashCode(id); }와 같이 영상과는 달리 hash()가 아닌 hashCode()가 생성되어 결과물이 미묘하다 다릅니다.검색해보니, hash가 hashCode 배열 처리된 걸로 알고 있어서 차이가 있다는 건 알겠는데@Override public int hashCode() { return Objects.hash(id); }일부러 Code를 삭제해서 영상처럼 위와 같이 실무에서도 hash를 기반으로 사용할지, 아니면 IDE에서 기본으로 제공하는 대로 hashCode를 사용해도 딱히 상관이 없나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2- I segmentation fault
안녕하세요 선생님 해당 코드는 정답코드입니다. 그러나 제가 주석처리한부분으로 코드를 짰을때는 segmentation error가 나와서 그 이유를 여쭤보고 싶습니다.또한 선생님께서는 size()를 사용하셨고 저는 length()를 사용했는데 size()와 length()의 장단점도 알고싶습니다 http://boj.kr/df71a1d8b94a49cca8ed3d2cbb104d78감사합니다
-
미해결[Lv.1] 누구나 할 수 있는 - SwiftUI Basic with iOS 17
유튜브 영상 플레이시 워닝 이슈 문의
시뮬레이터나 디바이스에서YoutubeView 에 로딩된 유튜브화면플레이버튼 누르면 아래처럼 워닝이 쭉 뜹니다.어떻게 해결 해야 할까요 ?(영상이 플레이는 되는데, 로그에 저렇게 나오네요) Snapshotting a view (0x106f3acb0, _UIButtonBarStackView) that is not in a visible window requires afterScreenUpdates:YES.https://www.youtube.com/embed/IRRCX1ZQdVYError acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}>0x178060270 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'WebKit Media Playback' for process with PID=10,676, error: Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}>0x1780603b0 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'WebKit Media Playback' for process with PID=10,512, error: Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}Error acquiring assertion: <Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}>0x178060cc0 - ProcessAssertion::acquireSync Failed to acquire RBS assertion 'WebKit Media Playback' for process with PID=10,678, error: Error Domain=RBSServiceErrorDomain Code=1 "(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)" UserInfo={NSLocalizedFailureReason=(originator doesn't have entitlement com.apple.runningboard.assertions.webkit AND originator doesn't have entitlement com.apple.multitasking.systemappassertions)}Visual isTranslatable: NO; reason: observation failure: noObservationsRequest to remove background on an unsupported device. Error Domain=com.apple.VisionKit.RemoveBackground Code=-8 "(null)"Error generating mask only remove background image for analysis: <VKCImageAnalysisResult: 0x104b69d80> - Error Domain=com.apple.VisionKit.RemoveBackground Code=-8 "(null)"[MADService] Client XPC connection invalidatedLaunchServices: disconnect event interruption received for service com.apple.lsd.open 강의 관련된 질문은 언제나 환영입니다 😄코드 관련 상세하게 작성해주시면 더 좋아요! (상세코드를 붙여넣기 해주세요)마크다운을 사용해서 편리하게 글을 작성하세요먼저 유사한 질문이 있었는지 먼저 검색 해보는 습관~인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
BottomNavigationBar 질문
검색 방법이 잘못된건지 모르지만 구글에 검색해도 해결법이 나오지않아 질문 올립니다. bottomNavagtionBar: GestureDetector( onTap: (){ Navigator.push(context, MaterialPageRoute(builder: (context) => CommentRegisterScreen( id: widget.id))); }, child: TRoundedContainer( height: 60, backgroundColor: const Color(0xffF8F8FA), padding: const EdgeInsets.all(TSizes.defalutSpace), radius: 0, child: Text( '댓글을 남겨보세요.', style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: Colors.grey), ), ), ), child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(TSizes.defalutSpace), child: Column( children: [ const SizedBox(height: TSizes.spaceBtwItems), SizedBox( height: MediaQuery.of(context).size.height, child: Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: PaginationListViewV2( model: state, id: widget.id, provider: commentProvider(widget.id), itemBuilder: <Comment>(_,index,comment){ if(index == 0){ return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ /// 제목 Text(state.title, style: Theme.of(context).textTheme.headlineMedium), const SizedBox(height: TSizes.spaceBtwItems), /// 닉네임 Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ const TRoundedImage( width: 24, height: 24, fit: BoxFit.fill, imageUrl: 'asset/img/no_image.png', borderRadius: 100, ), const SizedBox(width: TSizes.sm), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( state.creator, style: Theme.of(context).textTheme.bodyLarge, ), ], ), ], ), const SizedBox(height: TSizes.spaceBtwItems), /// 날짜, 좋아요 Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( state.createDate.split("T")[0], style: Theme.of(context).textTheme.bodyMedium!.copyWith(color: Colors.grey), ), GestureDetector( onTap: button.disable==false ? () async { //버튼 비활성화 await button.change(); await check == -1 ? ref.read(communityProvider.notifier).clickFavorite(widget.id) : ref.read(communityProvider.notifier).downFavorite(widget.id); await ref.read(favoriteProvider.notifier).updateFavorites(widget.id); //버튼 활성화 await button.change(); } : null, child: check == -1 ? TRoundedContainer( showBorder: true, padding: const EdgeInsets.all(TSizes.sm), borderColor: Colors.redAccent, radius: 10, child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Text( '좋아요', style: Theme.of(context).textTheme.labelMedium!.copyWith(color: Colors.redAccent), ), const SizedBox(width: TSizes.xs), Text( state.favorite.toString(), style: Theme.of(context).textTheme.labelMedium!.copyWith(color: Colors.redAccent), ), ], ), ) : TRoundedContainer( padding: const EdgeInsets.all(TSizes.sm), backgroundColor: Colors.redAccent, radius: 10, child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ child: SizedBox( height: 120, child: ListView.separated( shrinkWrap: true, scrollDirection: Axis.horizontal, itemCount: imgs.length, separatorBuilder: (_, __) { return const SizedBox(width: TSizes.spaceBtwItems / 2); }, itemBuilder: (_, int index) { return TRoundedImage( imageUrl: imgs[index].toString().trim(), width: 120, height: 120, fit: BoxFit.fill, borderRadius: 12.0, isNetworkImage: true, ); }, ), ), ), ], ) : const SizedBox(), const SizedBox(height: TSizes.spaceBtwSections), /// 글 내용 Text( state.content.trim(), style: Theme.of(context).textTheme.bodyMedium!.copyWith(height: 1.5), ), /// 댓글 0이 아닐 경우 Row( children: [ Text('댓글', style: Theme.of(context).textTheme.bodySmall), const SizedBox(width: TSizes.spaceBtwItems / 2), Text(state.commentCnt.toString(), style: Theme.of(context).textTheme.bodySmall), ], ), const SizedBox(height: TSizes.spaceBtwItems), CommentCard( comment:comment, recomments:comment.commentList, board_id: widget.id ) ], ); } return CommentCard( comment:comment, recomments:comment.commentList, board_id: widget.id ); }), ), Container( height: 210 ) ] ), ), // Center(child: Text('첫 댓글을 남겨주세요.', style: Theme.of(context).textTheme.bodySmall)), ], ), ), ),위 코드와 같이 BottomNavigationBar와 SinglechildScrollView를 같이 사용하고 있습니다. 가장 하단의Container( height: 210 )위 코드를 넣어주지 않을 시 화면 스크롤이 모두 안되고 짤리는 현상이 발생합니다. 혹시 이러한 경험이 있어 해결방법이 있다면 알려주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요! 버퍼 플러싱 관련하여 질문드립니다.
교안 32p에 cin을 사용해서 반복횟수를 입력 받고 getline을 사용시에 정수 입력 => 엔터 => 문자열 입력의 흐름이 되고 cin은 개행문자 전까지 입력을 받기 때문에 버퍼에 \n이 남아서 버퍼 플러싱이란걸 해야 함으로 이해했습니다. 그리고 버퍼플러싱이 임시저장소인 버퍼의 데이터를 프로그램에서 사용하기 위해 영구저장소로 가져가는 것임도 확인했습니다. 이 과정에서 2가지 여쭙고싶습니다. 위의 문제로 입력 버퍼에 개행 문자가 남아있다면 이후에 데이터를 입력할 때 남아있는 개행문자에 걸려서 오류가 날 것으로 생각합니다. 그래서 따로 남아있는 개행문자를 처리해야되는 것으로 이해했습니다. 제가 이해한게 맞는지 궁금합니다!32p의 버퍼 플러싱 코드에서string bufferflush; getline(cin, bufferflush);의 코드로 남아있는 개행문자를 버퍼 플러싱 해주는것으로 사료되는데, 위 코드가 어떤 원리로 남아있는 개행문자를 처리해주는지 이해가 가지않습니다.. ㅠ
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
len과 sum의 차이
조건에 len을 쓰면 조건 값의 길이가 아닌 전체 행의 길이가 나오는데 len은 sum과 같이 조건식 계산 출력이 안되나요??조건의 합을 구하려면 sum만 가능한가요?print(sum(df['qsec'] >0.5)) -> 9print(len(df['qsec'] >0.5)) -> 32
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL
lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답
안녕하세요 선생님~해당 문제를 윈도우함수로 풀었는데, submit을 하니 일부 테스트케이스에서 오답으로 되어 질문드립니다. 아래 input에서 id 3이 존재하지 않아, 해당 테이블의 num컬럼을 1,1,null,1,1,2,1 로 정의하고 풀어야 할 것 같습니다.(실제로 expected output에 아무 값도 나오지 않아야 함) 강의에 나오는 쿼리로는 id가 빠져있는 경우를 처리하지 않고, 명시적으로 나와있는 데이터의 연속성만 판단하고 있습니다. 아래와 같은 예외케이스를 포괄할 수 있는 쿼리를 어떻게 짜야할지 조언주시면 감사하겠습니다.제가 작성한 쿼리도 첨부합니다!
-
미해결Vue3 완벽 마스터: 기초부터 실전까지 - "실전편"
페이징 구현 질문드려요!
페이지 구현을 모두 완료했지만 게시글이 나오지 않습니다.여기저기 찾아봐도 알 수가 없네요.뭔가 문제인 건가요?.. Axios API, 컴포넌트 매핑도 확인했고 dev서버, db서버도 모두 확인했습니다. { path: '/posts', name: 'PostList', component: PostListView, },import axios from 'axios'; export function getPosts(params) { return axios.get('http://localhost:5000/posts', { params }); }// PostListView.vue <template> <div> <h2>게시글 목록</h2> <hr class="my-4" /> <form @submit.prevent> <div class="row g-3"> <div class="col"> <input v-model="params.title_like" type="text" class="form-control"> </div> <div class="col-3"> <select v-model="params._limit" class="form-select"> <option value="3">3개씩 보기</option> <option value="6">6개씩 보기</option> <option value="9">9개씩 보기</option> </select> </div> </div> </form> <hr class="my-4" /> <div class="row g-3"> <div v-for="post in posts" :key="post.id" class="col-4"> <PostItem :title="post.title" :content="post.content" :createdAt="post.createdAt" @click="goPage(post.id)"> </PostItem> </div> </div> <nav class="mt-5" aria-label="Page navigation example"> <ul class="pagination justify-content-center"> <li class="page-item" :class="{ disabled: !(params._page > 1) }"> <a class="page-link" href="#" aria-label="Previous" @click.prevent="--params._page"> <span aria-hidden="true">«</span> </a> </li> <li v-for="page in pageCount" :key="page" class="page-item" :class="{ active: params._page === page }"> <a class="page-link" href="#" @click.prevent="params._page = page">{{ page }}</a> </li> <li class="page-item" :class="{ disabled: !(params._page < pageCount) }"> <a class="page-link" href="#" aria-label="Next" @click.prevent="++params._page"> <span aria-hidden="true">»</span> </a> </li> </ul> </nav> <hr class="my-5" /> <AppCard> <PostDetailView :id="1"></PostDetailView> </AppCard> </div> </template> <script setup> import PostItem from '@/components/posts/PostItem.vue'; import PostDetailView from './PostDetailView.vue'; import AppCard from '@/components/AppCard.vue'; import { getPosts } from '@/api/posts'; import { ref, watchEffect } from 'vue'; import { useRouter } from 'vue-router'; import { computed } from '@vue/reactivity'; const router = useRouter() const posts = ref([]) const params = ref({ _sort: 'createdAt', _order: 'desc', _page: 1, _limit: 3, title_like: '' }) // Pagination const totalCount = ref(0) const pageCount = computed(() => { Math.ceil(totalCount.value / params.value._limit) }) const fetchPost = async () => { try { const { data, headers } = await getPosts(params.value); posts.value = data; totalCount.value = headers['x-total-count'] } catch (error) { console.error(error) } } watchEffect(fetchPost) const goPage = (id) => { router.push({ name: 'PostDetail', params: { id } }) } </script> <style lang="scss" scoped></style>
-
미해결Practical Testing: 실용적인 테스트 가이드
동시성 이슈 - 3회 이상 재시도를 자동으로 하게 하는 방법
안녕하세요,동시성 이슈에 대한 이야기를 해주시면서 "등록 시도를 했는데 유니크에서 튕겼다면 누군가 먼저 신규 번호를 선점했다는 뜻이니 3회 이상 재시도를 자동으로 하게 하는 방법으로 풀 수 있다"란 말씀을 해주셨습니다.그래서 아래 예시 코드처럼 DataIntegrityViolationException 을 try-catch로 잡아서 재시도를 하라는 뜻으로 이해했습니다. (하지만 로컬에서 동시성 문제를 발생시키는 방법을 찾지 못해 맞는 코드인지 모르겠습니다.. @Transactional이 있다면 DataIntegrityViolationException 를 잡기 위해서 try-catch 블럭 내부에서 flush()를 호출하기 위해 saveAndFlush() 를 사용한다는 말도 있더라구요?)public ExampleEntity save(ExampleEntity entity) { for (int i = 0; i < 3; i++) { try { // 저장 시도 return repository.save(entity); } catch (DataIntegrityViolationException e) { // 유니크 제약 조건 위배 예외 처리 log.info("저장 실패"); } } throw new RuntimeException("저장에 실패했습니다."); }이러한 방법이 맞다면 더 좋은 방법이 있는지, 혹시 만약 이 방법이 아니라면 어떤 방법으로 해결할 수 있는지 알려주시면 감사하겠습니다. 좋은 강의 항상 감사드립니다.
-
미해결15일간의 빅데이터 파일럿 프로젝트
hue 설치 중 psycopg2 설치 오류
휴 설치 강의에서 실습 중 psycopg2 설치 오류가 발생합니다. 해결방법이 있을지 문의드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D (백준2573 영역구하기) 백터사용시 메모리 초과
안녕하세요!(질문글 올리다가 제코드를 다시보니 왜 메모리초과가 나는지.. 알게돼서 글쓴게 아까워서 정보공유차 남깁니다)요즘 코딩테스트에 vector를 넘겨받는 케이스가 많아서연습삼아 함수인자로 vector를 넘겨주는 방식으로 문제를 풀고있습니다. 전역배열로 문제를 풀면, 메모리초과가 안나는데, vector를 넘기니 메모리초과가 발생하네요. ----------- 함수 선언은 아래와 같이 했습니다.-----void dfs(vector<vector<int>> map, vector<vector<int>>& visited, int x, int y, int num)----------------------------원인 ) 재귀호출하면서 매번 map이 복사가 되면서 메모리를 잡아먹는게 원인 이였습니다. & 참조 연산 붙여주니 바로 통과되네요. 다른 분들은 이런 실수 안하시길.. 수정) void dfs(const vector<vector<int>>& map, vector<vector<int>>& visited, int x, int y, int num)교안대로 전역변수쓰는게 확실히 실수를 줄여줘서 좋긴하지만 이것도 좋은 경험이라고 생각하고 넘어가게습니다.
-
미해결김영한의 실전 자바 - 중급 1편
안녕하세요 작은 질문 하나 드립니다!
혹시 영한님께서 강의 진행하실 때 아래에 단축키 어떤 걸 사용했는지 나타내주는? 플러그인 이름을 좀 알 수 있을까요..?