inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

이야기를 나눠요

172만명의 커뮤니티!! 함께 토론해봐요.

static변수/전역변수 기능상 차이점...

독하게 시작하는 C 프로그래밍

static변수가 전역변수랑 기능상 동일한거 같은데요,,,구분되서 사용되는 이유가 무언가요?

  • c
  • 컴퓨터-구조
nuyung 댓글 1 좋아요 0 조회수 871

달팽이 배열

독하게 시작하는 C 프로그래밍

안녕하세요 어제부터 수업을 멈추고 달팽이 배열을 풀기 위해 반나절 정도 생각하면서 논리를 텍스트로도 적어보고, 그림으로도 그려봤는데도 결국 답이 나오지 않아 답을 보았습니다. 강사님께서 작성해주신 달팽이 배열 코드를 보면서 제 머릿속에서는 이렇게 접근? 한다는 생각조차 없었던 것 같습니다.. 이제 답을 보면서 이해가 되긴 하지만 막상 다시 풀어보려니까 또 눈 앞이 캄캄해지더군요 ㅜ.ㅜ 재능이 없는건지 아니면 연습량이 부족한건지... ㅜ.ㅜ 자주 문제도 접하다보면 논리사고력도 많이 키워질까요?? 그리고 잘 이해가 되지 않는 실습 문제들은 일단 지나가고 다음 2회독때 다시 한번 보는게 좋을지 아니면 시간이 걸리더라도 지금 머리속에 집어넣고 진도를 나가야하는지 팁이 있으실까요?

  • c
  • 컴퓨터-구조
  • assembly-language
  • vc++
chlgkrud981109 댓글 0 좋아요 0 조회수 499

군 전역전에 코딩을 조금 깔짝거리긴했습니다.

홍정모의 따라하며 배우는 C언어

제목 그대로 좀 깔짝 거리긴해서 if 라던가 swtich나 이런 아주 기초적인 내용은 아는 상태입니다. 근데 스킵하자니 또 완벽하게 아는것도 아닌것같고 또 이와 같이 함수 하나에 대한 수업 시간도 10분 정도되는거 보면 아 이게 여기 안에 뭔가 있어서 이렇게 설명하시려는건가? 라고 싶어서 막상 들으면 8정도는 쉬운부분이라 알고 있고 나머지 2가 생소한 내용이라 처음들어서 오 좋다 이런 상태입니다. 문제는 제가 포인터나 구조체 이런 C 언어에서 누구나 어려워 할 것만한것들을 까먹은게 문제인데요. 그래서 그러한 어려운 부분들로 수업을 스킵하고 싶은데 혹시 조교님들이나 저와 같은 상태로 수업을 들어보신 분들, 이러한 실행방법을 추천하시나요? 감사합니다!

  • c
홍진기 댓글 0 좋아요 0 조회수 386

안녕하세요 선생님 :)

나도코딩의 자바 기본편 - 풀코스 (20시간)

삭제된 글입니다

  • java
  • 객체지향
갈색곰 댓글 1 좋아요 0 조회수 1643

만료된 메서드 fetchResult(), Blaze-persistence 세팅 관련 글 공유드립니다.

실전! Querydsl

QueryDSL 내부 메소드 중 fetchResult() 나 fetchCount()는 만료된 메소드에 대해서는 QueryDSL에서 Blaze-persistence Integration 라이브러리 사용을 권장 하는데요, Blaze-persistence도 QueryDSL 처럼 쿼리 빌더 API 로서 개발자에게 유지보수하기 좋은 객체를 제공해주고 있습니다. 게다가 최신 업데이트 날짜가 글 작성일 기준(2023.06.21) 일주일 이전이라 여전히 유지보수되고 있어서 최신 스프링버전과 호환성도 어느정도 보장되었다고 볼 수 있습니다. 개인적으로 SpringBoot 3.1.0 기준으로 다음과 같이 세팅하니 정상적으로 동작하는 걸 확인했는데요, 혹시 저처럼 deprecated 메소드를 쓰는 것이 신경쓰이시는 분들을 위해 공유드립니다. build.gradle dependencies { //Blaze-Persistence implementation 'com.blazebit:blaze-persistence-integration-querydsl-expressions-jakarta:1.6.9' implementation 'com.blazebit:blaze-persistence-integration-hibernate-6.2:1.6.9' implementation 'com.blazebit:blaze-persistence-core-impl-jakarta:1.6.9' } BlazePersistenceConfiguration.java @Configuration public class BlazePersistenceConfiguration { @PersistenceUnit private EntityManagerFactory entityManagerFactory; @Bean @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON) @Lazy(false) public CriteriaBuilderFactory createCriteriaBuilderFactory() { CriteriaBuilderConfiguration config = Criteria.getDefault(); // do some configuration return config.createCriteriaBuilderFactory(entityManagerFactory); } } QuerydslBasicTest.java ..... JPAQueryFactory queryFactory; @Autowired CriteriaBuilderFactory cbf; BlazeJPAQueryFactory blazeQueryFactory; @BeforeEach public void testEntity(){ queryFactory = new JPAQueryFactory(em); // 이건 동시성 문제를 고민하지 않아도 됨, 해결됨 blazeQueryFactory = new BlazeJPAQueryFactory(em, cbf); ..... 적용 결과 기존 QueryDSL 세팅한 것에 추가로 세팅하시면, 만료된 메소드에 대해 Blaze-persistence 객체로 대체되는데요, 기존 querydsl 클래스를 상속 받는 형태여서 QueryDSL이 제공하는 메소드를 그대로 쓸 수도 있습니다. fetchResults는 fetchPage로 바꿔서 사용할 것을 권장하고 있다는 점 참고하시면 될 것 같습니다. 추가로 내부로직이라든지 설명이 더 필요하시다면 Blaze-persistence 릴리즈 노트 와 Blaze Persistence Document 를 참고하시면 좋을 것 같습니다. 이 글에 대해 지적 및 피드백 해주시면 정말 감사하겠습니다. 감사합니다. 여담 및 고민 : 개인적으로 이 라이브러리의 내부로직을 뜯어보면서 분석하고 검증할 수 있는 역량은 부족한지라 분석 및 검증하는 방법에 대해서 팁이라든지, 아니면 blaze-persistence 사용할 시 주의해야할 점이라든지 조언해주실 수 있으시면 정말 감사드립니다. 강의를 듣던 중에 서브쿼리가 발생하는 부분에서는 정상동작하지 않는 것을 발견했습니다. @Test public void findUserDto(){ QMember memberSub = new QMember("memberSub"); List<UserDto> memberDtoList = queryFactory //이건 blazeQueryFactory가 정상 동작하지 않음 .select(Projections.fields(UserDto.class, //생성자 필드 순서에 맞게 변수를 만들어야 한다. member.username.as("name"), // member.age 대신 서브쿼리로 다 최대 나이로 찍고 싶어 ExpressionUtils.as( JPAExpressions .select(memberSub.age.max()) .from(memberSub), "age") )) .from(member) .fetch(); for (UserDto userDto : memberDtoList) { System.out.println("userDto = " + userDto); } } QueryDSL 쿼리 /* select member1.username as name, (select max(memberSub.age) from Member memberSub) as age from Member member1 */ select m1_0.username, (select max(m2_0.age) from member m2_0) from member m1_0 blaze-persistence 쿼리 /* SELECT member1.username AS name, member1.age AS generatedSubquery_1 FROM Member member1 */ select m1_0.username, m1_0.age from member m1_0 blaze-persistence generatedSubquery라 하여, 서브쿼리를 하나의 alias로 처리를 해버렸는데, 후행으로 이 generatedSubquery 에 대한 정의가 따라오질 않습니다... 왜 이런 차이가 나오는지는 모르겠지만 blaze-persistence 활용할 때는 유의해야할 것 같습니다.

  • java
  • jpa
  • querydsl
  • blaze-persistence
말랑한참깨 댓글 0 좋아요 1 조회수 2806

선생님 안녕하세요!

CUDA 프로그래밍 (1) - C/C++/GPU 병렬 컴퓨팅 - CUDA 커널 kernel

cuda 0번 강의를 보고 마음에 와닿아서 6개의 강의를 동시에 구매했어요! 제가 요즘 비전 프로그램을 개발 중인데 opencl을 이용하여 범용성 있게 프로그램을 구성하고 싶은데요. 혹시 opencl 강의도 찍어주시면 안될까요? 혹은 좋은 강의나 책이 시중에 이미 있다면 추천좀 부탁드려도 될까요? 구글에 너무 자료가 없어요... SYCL 같은 경우는 MSVC와 호환도 안되구요..

  • c
  • c++
  • cuda
  • gpu
  • 병렬-처리
igbtkd 댓글 1 좋아요 0 조회수 773

강의 멈췄다가 재생할때

스프링 핵심 원리 - 기본편

삭제된 글입니다

  • spring
mangs 댓글 1 좋아요 0 조회수 456

idea 명령어가 안먹는 경우해결 방법

토비의 스프링 부트 - 이해와 원리

안녕하세요. 강의를 듣다가 idea 커맨드를 실행하였으나 먹히지 않아 찾아본 결과 Jetbrains Toolbox를 사용하여 설치한 경우에 실행 쉘 스크립트를 지원하는 것 같습니다. https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html#e3487884 툴박스 설치 $ brew install --cask jetbrains-toolbox 툴박스 UI에서 IntelliJ 설치 IntelliJ 설정에서 셸 스크립트 이름 확인 가능 만약 툴박스를 사용하지 않고 수동 설치한 경우 아래와 같이 수동으로 쉘 스크립트를 작성해야 사용 가능합니다. $ sudo vim /usr/local/bin/idea #!/bin/sh open -na "IntelliJ IDEA.app" --args "$@" $ sudo chmod +x /usr/local/bin/idea 저와 같은 고민을 하고 계신분에게 도움이 되었으면 합니다. 감사합니다.

  • spring
  • spring-boot
  • intellij
  • jetbrains
  • toolbox
  • idea
Seunghoon Choi 댓글 1 좋아요 5 조회수 1398

0.4- 진공관 관련 영상첨부

홍정모의 따라하며 배우는 C언어

https://www.youtube.com/watch?v=vmB0_jT5Poc 이해가 더 잘되는 영상 첨부드립니다.

  • c
  • 진공관
이제운 댓글 0 좋아요 0 조회수 426

PathPattern에 대한 몇가지 예시입니다.

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

설명 PathPattern 공식 문서 ? : 한 문자 일치 /pages/t?st.html YES: /pages/test.html , /pages/tXst.html NO : /pages/toast.html * : 경로( / ) 안의 모든 문자 일치 /resources/*.png YES: /resources/photo.png NO : /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/robots NO : /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 {*...} 또는 ** 패턴 요소 다음에는 다른 패턴 데이터 를 사용할 수 없습니다.

  • spring
  • mvc
김회민 댓글 1 좋아요 2 조회수 5313

백엔드 개발자의 방향성에 대해 조언을 얻고자 합니다

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

현재 국비 학원을 수료하며 프로젝트를 마친 뒤에 김영한님 강의를 듣고 있으며 spring에 대해 이제서야 이해하려 하는 취준생입니다. 문득 제가 어떤 개발을 하고 싶은지 방향성에 대해 생각해보게 되었습니다. ->어떤 개발을 하고 싶은지 방향성에 대해 되짚어 보고 있었다 ->SQL문을 짜면서 효율적인 방법은 무엇이 있을까 고민하는 과정이 스스로 가치 있는 고민을 하고 있다는 생각이 들었다. ->데이터 처리 속도 개선에 관하여 고민하는 개발자가 되고 싶다. ->대용량 트래픽을 다루는 서비스 회사에서 성장하고 싶다. 질문 ==> 위의 4문장을 설득력 있게 말하기 위해서 취준에 뛰어드는 예비 백엔드 개발자 수준에서 할 수 있는 "공부 방향"은 무엇이 있을지 조언 해주실 수 있을까요? (특정 개념이나 강의를 추천해주셔도 감사할 것 같습니다. )

  • springboot
  • java
  • spring
  • 백엔드
  • 신입
sky66951 댓글 1 좋아요 3 조회수 5666

swagger 질문입니다 ㅠㅠㅠ

안녕하세요 프로젝트 swagger에 대한 질문입니다 ㅠㅠ아시는분있으면 꼭 답해주시기 바랍니다 코드 게시물 관련 프로젝트입니다. 나의 페이지에서 코드 게시물을 검색할수 있는 필터링 조건과 다른 유저 페이지에서 코드 게시물을 검색할수 있는 필터링 조건이 다른 상황입니다. api 설계시 위 두 api를 모두 "/codebox/{nickname}"으로 동일한 상황이고 @RequestBody로 받는 JSON 데이터들은 다르기 때문에 Controller에서 @GetMapping("/codebox/{nickname}")으로 동일하나 나의 페이지 접속시 토큰을 추가로 hearder에 받게 하여 아래와 같이 분리하여 구현된 상황입니다. 여기서 Swagger를 통해 api명세서를 자동으로 생성하게 되면 같은 리소스(같은 uri)에 대해서는 api가 한개 생성됩니다. 저는 아래 두가지 경우를 모두 api 명세서로 보여지게 생성하고 싶은데 여러가지 방법을 찾아보는데 마땅히 나오지 않아 질문드립니다.ㅠㅠ 아시는 분 있으시면 꼭 좀 댓글달아주시기 바랍니다.ㅠㅠ @GetMapping(value = "/{nickname}", headers = JwtProperties.ACCESS_HEADER_STRING) @UserAuthen @UserAuthor @ApiOperation(...) @ApiResponses({ ... }) @ApiImplicitParams({ @ApiImplicitParam(name = "nickname", value = "회원 닉네임", required = true), @ApiImplicitParam(name = JwtProperties.ACCESS_HEADER_STRING, value = "엑세스 토큰", required = true) }) public DataResponse<PostListResponse> userPage2(@PathVariable("nickname")String nickname, @RequestHeader(JwtProperties.ACCESS_HEADER_STRING) String accessToken, @RequestBody SearchFormAboutOtherUserPost form) { ..... } @GetMapping(value = "/{nickname}", headers = {JwtProperties.ACCESS_HEADER_STRING, JwtProperties.MYSESSION_HEADER_STRING}) @UserAuthen @UserAuthor @ApiOperation(...) @ApiResponses({ ... }) @ApiImplicitParams({ @ApiImplicitParam(name = "nickname", value = "회원 닉네임", required = true), @ApiImplicitParam(name = JwtProperties.ACCESS_HEADER_STRING, value = "엑세스 토큰", required = true), @ApiImplicitParam(name = JwtProperties.MYSESSION_HEADER_STRING, value = "마이페이지 엑세스 토큰", required = true) }) public DataResponse<PostListResponse> userPage3(@PathVariable("nickname")String nickname, @RequestHeader(JwtProperties.ACCESS_HEADER_STRING) String accessToken, @RequestHeader(JwtProperties.MYSESSION_HEADER_STRING) String my_sessionToken, @RequestBody SearchFormAboutSelfUserPost form) { .... }

  • swagger
  • spring
rnqhstlr2297 댓글 0 좋아요 1 조회수 455

Spring Security 관련된 내용도 다뤄 주셨으면 해요~!

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

기술 면접이나 면접 과제 중 인증, 인가 또는 사용자 정보 암호화(jwt) 관련된 과제들도 많이 출제가 되더라구요 프로젝트 진행하면서 회원가입, 로그인 구현 시 코드를 끌어다 사용해 구현은 했었지만 사실 너무 복잡하고 어려워서 사실 그 부분에 대한 질문이 들어오면 입도 못 뗄 것 같아요... 보안 관련 시리즈도 기대 해봅니다!! 영한 튜터님 강의 보면서 정말 즐겁게 공부하고 있어요:)

  • 김영한
  • 강의
  • spring
  • jpa
Wonhyuk Shin 댓글 1 좋아요 0 조회수 511

QueryDsl SpringBoot 2.7의 gradle 설정을 공유합니다.

실전! Querydsl

plugins { id 'org.springframework.boot' version '2.7.4' id 'io.spring.dependency-management' version '1.0.14.RELEASE' id 'java' } group = 'study' version = '0.0.1-SNAPSHOT' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' // queryDSL 설정 implementation "com.querydsl:querydsl-jpa" implementation "com.querydsl:querydsl-core" implementation "com.querydsl:querydsl-collections" annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정 annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드 annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드 } tasks.named('test') { useJUnitPlatform() } // Querydsl 설정부 def generated = 'src/main/generated' // querydsl QClass 파일 생성 위치를 지정 tasks.withType(JavaCompile) { options.getGeneratedSourceOutputDirectory().set(file(generated)) } // java source set 에 querydsl QClass 위치 추가 sourceSets { main.java.srcDirs += [ generated ] } // gradle clean 시에 QClass 디렉토리 삭제 clean { delete file(generated) } 해당 소스는 타사 강의 보다가 본 설정에서 가져왔습니다. 기존 영한님 강의와 다른 점이 3가지 있으니 주의하시기 바랍니다. Querydsl Q파일 생성 위치가 다릅니다. 기존 영한님 강의대로 $build 로 시작하는 설정을 사용하면 테스트 실행 시 Q파일의 위치를 찾지 못해서 테스트가 실패합니다. Gradle -> Tasks -> build -> clean Gradle -> Tasks -> build -> build 혹은 classes 기존 영한님 교안에는 빌드 시 Gradle -> Tasks -> other -> compileQuerydsl 로 Q파일을 생성하지만, 이 방법의 경우 other에 해당 메뉴가 없습니다. 그래서 빌드 시에는 그냥 build 메뉴의 build 혹은 classes 로 빌드하시면 Q파일이 생깁니다. 영한님 강의에서는 gradle build 폴더가 대부분 git 버전관리에 포함되지 않으므로 따로 설정할 필요가 없지만, 이 경우 Q파일이 소스폴더에 들어가므로 .gitignore 에 아래와 같이 별도로 경로를 설정해 주어야 합니다. ### Querydsl /src/main/generated 혹시 저같이 청개구리마냥 강의에 나온 버전 사용 안 하고 최신 버전 사용하시는 분들께 도움이 되었으면 좋겠습니다. 저도 타사 강의에서 가져온 것이고 기초 테스트만 통과한 것이라서 혹시 강의에 맞지 않는 경우 영한님이나 다른 분들이 추가 정보를 주시면 좋을 것 같습니다. 여담인데 QueryDSL은 쿼리 짜긴 확실히 편한데 설정이 버전마다 중구난방이라 불편합니다. 똑똑한 개발자분들이 이런 설정도 그냥 @Configuration 으로 빼버리는 거 만들어주지 않을까 하는 기대가 있긴 합니다.

  • java
  • spring
  • jpa
  • querydsl
박민호 댓글 5 좋아요 20 조회수 11518

진짜 강의 구매하길 잘했다는 생각이 너무 듭니다 🥹

스프링 핵심 원리 - 기본편

- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 아직 강의를 완강한 것도 아니고 로드맵을 전부 구매하지는 않았지만 지금까지의 설명을 들었을 때 사람들이 그렇게 호평한 이유를 알 것 같습니다! 주워들었던 용어들에 불과했던 IoC, DI, SOLID 원칙 등등.. 특히 역할과 구현 분리 부분에서 자동차와 연극 비유는 레전드였습니다 👏👏 사실 저는 그동안 node.js 기반으로만 개발 공부를 하고 있었어서 처음에 스프링 무료 버전을 들었을 때 까지만 하더라도 유료 강의들로 넘어간다고 해서 내가 이해할 수 있을까..? 라는 불안감이 있었는데, 지금처럼 계속 공부한다면 충분히 스프링도 익숙해질 것이라 생각하게 되었습니다! 영한 님이 이 글을 보실지는 모르겠지만.. 진짜 감사드립니다 👍👍👍 모르는 게 생기면 바로 바로 여쭤보겠습니다!

  • 스프링부트
  • 김영한
  • 스프링
  • springboot
  • 객체지향
  • 자바
  • spring
devholic 댓글 2 좋아요 0 조회수 643

소프트웨어 진로 결정 관련 질문

저는 일단 정보통신공학 2학년인데 소프트 커리를 타려고 생각중이에요 2학기에 C++ 자료구조론을 배우는데 여론으로는 C++은 게임 개발이나 인공지능? 쪽에서 많이 쓰인다고 하고 제가 생각하는 프론트/백엔드의 웹 개발자는 java나 python이 주 프로그래밍 언어이고 IT기업 쪽에서도 java를 활용한 툴(Spring 등)을 선호하고 있다고 들어서 C++은 학점 챙기는 용으로 공부하고 진로를 위해서는 java를 중점적으로 공부하려고 하는데 1. 지금 java와 C++ 자료구조를 병행해서 공부를 하는 것이 나은지(공부 비중은 C++을 더 높게) 2. 일단은 C++ 자료구조를 중점적으로 공부할지 고민되어 질문글 올립니다 ㅠㅠ - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

  • java
  • c++
초롱초롱한 랫서팬더 댓글 0 좋아요 0 조회수 320

서울시뉴딜일자리_IT인턴 3개월 [급여월260만]지원사업안내_빅데이터 기반 서비스플랫폼 과정 [스터디,프로젝트,프론트엔드,백엔드,자바,코딩]

서울시에서 뉴딜일자리사업 일환으로 2차 서비스플랫폼개발자 양성과정으로 3개월 인턴십 (급여 월 260) 보내주는 프로그램 진행중인데 신청해보세요! 자세한 내용은 https://blog.naver.com/kjc_sh/222775806456 참고해주세요

  • 깃허브
  • 프로젝트
  • 인턴
  • 백엔드
  • 프론트엔드
  • java
  • spring
  • 자바
  • 스프링
한국취업센터 댓글 0 좋아요 0 조회수 486

인기 태그

인프런 TOP Writers

주간 인기글