다음과 같은 양식으로 남겨주세요. 질문을 한 배경 : 부트캠프 선택 고민입니다. 위코드와 제로베이스 백엔드 스쿨 둘 중에서 고민중 입니다. 질문 내용 : 안녕하세요 저는 현제 4학년 2학기 컴공 학생입니다. 원래는 대학원 준비하다가 어쩌다 보니 나오게 돼서 웹쪽 준비가 미흡한 상태입니다. 그렇다 보니 부트 캠프를 통해 빠르게 공부해 취준하려 합니다. 여러 부트캠프를 찾아봤고 위에 언급한 둘 중에서 고민 중입니다. 간략하게 두 부트캠프에 대해 설명하면 위코드: 3개월 과정, 오프라인, Node.js, 기업 협업 프로젝트 제로베이스: 6개월 과정, 온라인, Spring, 코테, cs 준비, 우수 수강생 일시 협업 프로젝트 고민되는 이유는 위 코드는 3개월이란 짧은 기간 동안 여러 프로젝트를 빠르게 해볼 수 있는 게 장점인 거 같은데 Spring이 아닌 Node.js를 사용하고 따로 CS나 코테는 없는 것 같고 제로베이스는 Spring 사용한다는 점과 코테나 CS에 대해 자세히 해준다는 게 장점이고 기간이 6개월로 다소 길고 우수 수강생 아닐 시 협업 프로젝트 참여를 못해 애매할 수 있다 생각이 듭니다. 짧게나마 조언 해주시면 감사하겠습니다! 긴 글 읽어주셔서 감사합니다!!
안녕하세요. 워니님 강의 잘보고 많은 도움이 되고 있습니다. 다름이 아니라 저는 SI업체를 3년차 다니고 있는 백엔드 개발자인데요 . 저는 업무특성상 속도를 개선했다거나 , 서비스의 보안을 강화했다거나 하는 성과는 전혀없고 단순히 매일 사용하는 Spring 과 전자정부 프레임워크로 CRUD만 3년내내 만들어 왔어요. 물론 개인적인 공부도 계속하곤 있지만 회사의 경력란에 워니님께선 어떤 업무를 하여 어떤 성과를 내었다, 라고 적으라 하셨는데 아무리 생각을 해도 고객이 제시한 시간안에 CRUD를 반복해서 만든 것 말고는 특징이 없는데 저 같은 경우는 어떤 이야기를 적어야 할까요?
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 활용할 때는 유의해야할 것 같습니다.
안녕하세요 제가 이번에 OOO 기업에 스마트팩토리 IT 직무에 지원하게 됐습니다. 어제 코딩테스트 3문제중 3솔로 마무리하였고, 다음으로 1차 면접이 남아 있습니다. 1차면접 후 인턴생활을 하고 2차면접에서 최종 채용이 결정이 되는 구조입니다. 1차 면접은 6월 초 예정으로 1~2주정도 남아있을 것 같습니다. 제가 면접 경험이 없고 CS지식이 부족해서 큰돌님의 CS 지식의 정석을 1주일 안에 전부 수강할 예정인데 괜찮은 방법일까요?? 그리고 스마트팩토리 IT 직무인데, 여기 강의에 있는 CS 지식안에서 대부분 나오는게 맞을까요? (명확한 프론트엔드직군, 백엔드직군 이런 것이 있는 게 아니라 스마트팩토리 IT 직무 채용이라서 궁금한 내용입니다.) 외적인 질문은 제가 따로 준비하고 있는데, 기술 질문이 들어오는 게 걱정입니다ㅠㅠ
안녕하세요 선생님 항상 좋은 강의를 제공해 주셔서 잘 공부하고 있습니다. 다름이 아니라 복싱을 배울 때 줄넘기와 달리기를 통해 기초체력을 단련하는 것처럼 개발자에게도 근본적으로 단련해야 하는 기초체력이 있을까요 요즘 개발 공부를 하면서 뭔가 모래 위에 성을 쌓아가는 느낌이 들어 이렇게 질문드립니다.
안녕하세요 큰돌님 다름이 아니라 2달내 수강완료시 포폴첨삭 이벤트를 진행하시잖아요? 근데 포폴 첨삭을 어느 시기에 부탁드리는게 맞는지 고민되어 질문드립니다 일단 저는 웹 프론트엔드를 지망하고있습니다 그리고 저는 지금 js강의를 듣고 있고 1달후엔 대략적으로 react를 다룰 수 있을 것 같아 실질적으론 3월 중순부터 포폴제작에 들어갈 것 같습니다 그래서 포폴제작은 4월 중후반쯤에 대략적인 완성이 되리라 예측합니다 다만 저는 1개의 포폴을 기반으로 node js ,mongo db등을 학습해나가며 간단한 백엔드 시스템 구축 및 알고리즘 학습하며 코드 리팩토링등 1개의 포폴을 계속 업그레이드 해나가며 완성도 높은 포폴 만드는것을 목표로하고 있는데 제 생각엔 하반기쯤 되어서야 제대로 된 포폴을 완성할 것 같아서 그 때 큰돌님께 검수를 받고 개선점을 찾는게 맞는지 react로 대략적인 구성을 한 다음 검수를 받고 대략적인 방향을 가이드 받는것이 맞는지 고민되어서 질문드립니다
현재 국비 학원을 수료하며 프로젝트를 마친 뒤에 김영한님 강의를 듣고 있으며 spring에 대해 이제서야 이해하려 하는 취준생입니다. 문득 제가 어떤 개발을 하고 싶은지 방향성에 대해 생각해보게 되었습니다. ->어떤 개발을 하고 싶은지 방향성에 대해 되짚어 보고 있었다 ->SQL문을 짜면서 효율적인 방법은 무엇이 있을까 고민하는 과정이 스스로 가치 있는 고민을 하고 있다는 생각이 들었다. ->데이터 처리 속도 개선에 관하여 고민하는 개발자가 되고 싶다. ->대용량 트래픽을 다루는 서비스 회사에서 성장하고 싶다. 질문 ==> 위의 4문장을 설득력 있게 말하기 위해서 취준에 뛰어드는 예비 백엔드 개발자 수준에서 할 수 있는 "공부 방향"은 무엇이 있을지 조언 해주실 수 있을까요? (특정 개념이나 강의를 추천해주셔도 감사할 것 같습니다. )
따라하며 배우는 노드, 리액트 시리즈 - 레딧 사이트 만들기(NextJS)(Pages Router)
// tsconfig.json { "compilerOptions": { // 옵션 형식으로 구성되어 있습니다. // "모듈 키": 모듈 값 /* 설명: 사용가능 옵션 (설명이 "~ 여부"인 경우 'true', 'false') */ /* 기본 옵션 */ // "incremental": true, /* 증분 컴파일 설정 여부 */ "target": "es5" /* 사용할 특정 ECMAScript 버전 설정: 'ES3' (기본), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', 혹은 'ESNEXT'. */, "module": "commonjs" /* 모듈 불러오는 코드 방식 설정: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, // "lib": [], /* 컴파일에 포함될 라이브러리 파일 목록 */ // "allowJs": true, /* 자바스크립트 파일 컴파일 허용 여부 */ // "checkJs": true, /* .js 파일의 오류 검사 여부 */ // "jsx": "preserve", /* JSX 코드 생성 설정: 'preserve', 'react-native', 혹은 'react'. */ // "declaration": true, /* '.d.ts' 파일 생성 여부. */ // "declarationMap": true, /* 각 '.d.ts' 파일의 소스맵 생성 여부. */ // "sourceMap": true, /* '.map' 파일 생성 여부. */ // "outFile": "./", /* 단일 파일로 합쳐서 출력합니다. */ // "outDir": "./", /* 해당 디렉토리로 결과 구조를 보냅니다. */ // "rootDir": "./", /* 입력 파일의 루트 디렉토리(rootDir) 설정으로 --outDir로 결과 디렉토리 구조를 조작할 때 사용됩니다. */ // "composite": true, /* 프로젝트 컴파일 여부 */ // "tsBuildInfoFile": "./", /* 증분 컴파일 정보를 저장할 파일 */ // "removeComments": true, /* 주석 삭제 여부 */ // "noEmit": true, /* 결과 파일 내보낼지 여부 */ // "importHelpers": true, /* 'tslib'에서 헬퍼를 가져올 지 여부 */ // "downlevelIteration": true, /* 타겟이 'ES5', 'ES3'일 때에도 'for-of', spread 그리고 destructuring 문법 모두 지원 */ // "isolatedModules": true, /* 각 파일을 분리된 모듈로 트랜스파일 ('ts.transpileModule'과 비슷합니다). */ /* 엄격한 타입-확인 옵션 */ "strict": true /* 모든 엄격한 타입-체킹 옵션 활성화 여부 */, // "noImplicitAny": true, /* 'any' 타입으로 구현된 표현식 혹은 정의 에러처리 여부 */ // "strictNullChecks": true, /* 엄격한 null 확인 여부 */ // "strictFunctionTypes": true, /* 함수 타입에 대한 엄격한 확인 여부 */ // "strictBindCallApply": true, /* 함수에 엄격한 'bind', 'call' 그리고 'apply' 메소드 사용 여부 */ // "strictPropertyInitialization": true, /* 클래스의 값 초기화에 엄격한 확인 여부 */ // "noImplicitThis": true, /* 'any' 타입으로 구현된 'this' 표현식 에러처리 여부 */ // "alwaysStrict": true, /* strict mode로 분석하고 모든 소스 파일에 "use strict"를 추가할 지 여부 */ /* 추가적인 확인 */ // "noUnusedLocals": true, /* 사용되지 않은 지역 변수에 대한 에러보고 여부 */ // "noUnusedParameters": true, /* 사용되지 않은 파라미터에 대한 에러보고 여부 */ // "noImplicitReturns": true, /* 함수에서 코드의 모든 경로가 값을 반환하지 않을 시 에러보고 여부 */ // "noFallthroughCasesInSwitch": true, /* switch문에서 fallthrough 케이스에 대한 에러보고 여부 */ /* 모듈 해석 옵션 */ // "moduleResolution": "node", /* 모듈 해석 방법 설정: 'node' (Node.js) 혹은 'classic' (TypeScript pre-1.6). */ // "baseUrl": "./", /* non-absolute한 모듈 이름을 처리할 기준 디렉토리 */ // "paths": {}, /* 'baseUrl'를 기준으로 불러올 모듈의 위치를 재지정하는 엔트리 시리즈 */ // "rootDirs": [], /* 결합된 컨텐츠가 런타임에서의 프로젝트 구조를 나타내는 루트 폴더들의 목록 */ // "typeRoots": [], /* 타입 정의를 포함할 폴더 목록, 설정 안 할 시 기본적으로 ./node_modules/@types로 설정 */ // "types": [], /* 컴파일중 포함될 타입 정의 파일 목록 */ // "allowSyntheticDefaultImports": true, /* default export이 아닌 모듈에서도 default import가 가능하게 할 지 여부, 해당 설정은 코드 추출에 영향은 주지 않고, 타입확인에만 영향을 줍니다. */ "esModuleInterop": true /* 모든 imports에 대한 namespace 생성을 통해 CommonJS와 ES Modules 간의 상호 운용성이 생기게할 지 여부, 'allowSyntheticDefaultImports'를 암시적으로 승인합니다. */, // "preserveSymlinks": true, /* symlik의 실제 경로를 처리하지 않을 지 여부 */ // "allowUmdGlobalAccess": true, /* UMD 전역을 모듈에서 접근할 수 있는 지 여부 */ /* 소스 맵 옵션 */ // "sourceRoot": "", /* 소스 위치 대신 디버거가 알아야 할 TypeScript 파일이 위치할 곳 */ // "mapRoot": "", /* 생성된 위치 대신 디버거가 알아야 할 맵 파일이 위치할 곳 */ // "inlineSourceMap": true, /* 분리된 파일을 가지고 있는 대신, 단일 파일을 소스 맵과 가지고 있을 지 여부 */ // "inlineSources": true, /* 소스맵과 나란히 소스를 단일 파일로 내보낼 지 여부, '--inlineSourceMap' 혹은 '--sourceMap'가 설정되어 있어야 한다. */ /* 실험적 옵션 */ // "experimentalDecorators": true, /* ES7의 decorators에 대한 실험적 지원 여부 */ // "emitDecoratorMetadata": true, /* decorator를 위한 타입 메타데이터를 내보내는 것에 대한 실험적 지원 여부 */ /* 추가적 옵션 */ "skipLibCheck": true /* 정의 파일의 타입 확인을 건너 뛸 지 여부 */, "forceConsistentCasingInFileNames": true /* 같은 파일에 대한 일관되지 않은 참조를 허용하지 않을 지 여부 */ } } 도포자료에서 못찾으신분은 이거 복붙하세요~ (주석은 다름)
누구보다 뛰어난 개발자 되는 법, 하루에 하나씩 CS 정복하기! 개발 한 스푼 https://adevspoon.page.link/XJYS https://adevspoon.page.link/XJYS 개발 공부, CS 공부 등등 개발자가 되기까지 해야할 공부가 너무 많지 않나요? 개발자 취업, 면접, 이직 어떻게 준비해야할지, 비전공 개발자인데 어디서부터 시작해야할지 모르겠다구요? 개발 한 스푼이 도와드립니다! 하루에 하나씩 IT 기술면접 질문 제공받고 공부해가며 Computer Science 정복해봐요! 자료구조, 알고리즘, 네트워크, 운영체제, 데이터베이스까지 방대한 CS 지식을 가볍게 차근차근! 질문에 답변하고, 도움이 된 답변을 모아보고, 받은 질문을 모아보며 복습까지. 오늘부터 하루에 딱 하나씩만! 지금 바로 시작해보세요
https://adevspoon.page.link/XJYS 개발 공부, CS 공부 등등 개발자가 되기까지 해야할 공부가 너무 많지 않나요? 개발자 취업, 면접, 이직 어떻게 준비해야할지, 비전공 개발자인데 어디서부터 시작해야할지 모르겠다구요? 개발 한 스푼이 도와드립니다! https://adevspoon.page.link/XJYS 하루에 하나씩 IT 기술면접 질문 제공받고 공부해가며 Computer Science 정복해봐요! 자료구조, 알고리즘, 네트워크, 운영체제, 데이터베이스까지 방대한 CS 지식을 가볍게 차근차근! 질문에 답변하고, 도움이 된 답변을 모아보고, 받은 질문을 모아보며 복습까지. 오늘부터 하루에 딱 하나씩만! 지금 바로 시작해보세요
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 으로 빼버리는 거 만들어주지 않을까 하는 기대가 있긴 합니다.
저는 일단 정보통신공학 2학년인데 소프트 커리를 타려고 생각중이에요 2학기에 C++ 자료구조론을 배우는데 여론으로는 C++은 게임 개발이나 인공지능? 쪽에서 많이 쓰인다고 하고 제가 생각하는 프론트/백엔드의 웹 개발자는 java나 python이 주 프로그래밍 언어이고 IT기업 쪽에서도 java를 활용한 툴(Spring 등)을 선호하고 있다고 들어서 C++은 학점 챙기는 용으로 공부하고 진로를 위해서는 java를 중점적으로 공부하려고 하는데 1. 지금 java와 C++ 자료구조를 병행해서 공부를 하는 것이 나은지(공부 비중은 C++을 더 높게) 2. 일단은 C++ 자료구조를 중점적으로 공부할지 고민되어 질문글 올립니다 ㅠㅠ - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
블록체인 분야 기술을 배우고싶은 분들 or 블록체인 분야 취업을 원하시는 분들 주목! 서울시에서 뉴딜일자리사업 일환으로 IT 블록체인과정으로 3개월 인턴십 (급여 월 260) 보내주는 프로그램 진행중인데 신청해보세요! https://blog.naver.com/kjc_sh/222745988610 자세한 내용은참고해주세요 오픈카카오톡 문의 [ https://open.kakao.com/o/stkiOIhe ]