묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[하루 10분|Web Project] HTML/JS/CSS로 나만의 심리테스트 사이트 만들기
select 배열 이해를 도와주세요!
안녕하세요, 알고리즘 개선하기 강의를 들은 이후, 새로 짜여진 알고리즘의 원리(?)에 대해 공부하는 중입니다. 그런데, select 부분에 대한 이해가 어려워 질문 올려봐요 ㅠㅠ answer.addEventListener("click", function(){ //'answer' 버튼을 클릭했을 때 4 var children = document.querySelectorAll('.answerList'); for(let i = 0; i < children.length; i++){ children[i].disabled = true; // 버튼 비활성화 children[i].style.WebkitAnimation = "fadeOut 0.5s"; // 0.5초동안 main 섹션이 사라지면 children[i].style.animation = "fadeOut 0.5s" // 사용자가 어떤 한 버튼만 클릭해도, 다른 버튼들은 다 무시가 되고 모든 버튼들이 사라진다. } setTimeout(() => { var target = qnaList[qIdx].a[idx].type; // 우리가 선택한 버튼이 가지고 있는 타입이 target에 할당됨. //버튼을 클릭하는 순간에 바로 값 증가 for(let i = 0; i < target.length; i++){ select[target[i]] += 1; // 이 반복문이 돌고나면 사용자가 버튼을 클릭하였을 때, 12간지의 순서대로 해당하는 type의 값이 1씩 증가 } for(let i = 0; i < children.length; i++){ children[i].style.display = 'none'; // 버튼이 보이지 않게 } goNext(++qIdx); console.log(target); console.log(children.length); },450); //450 경과 시 }, false); 저는 이 for문 안에 들어있는 select[target[i]] += 1; 이 부분을 이해하기 위해calResult() 부분에 console.log(select);를 작성하였고, 임의로 선택된 모든 버튼에 대한 select값을 받을 수 있었습니다. // console.log(select); [2, 4, 3, 4, 4, 3, 4, 4, 2, 5, 1, 6]우선 저는 처음에 이 숫자들이 select 값이라는 것은 알고 있었으나 진짜 무엇을 의미 하는 지 알 수 없어 수기로 디버깅을 해보았습니다. 모든 버튼에 대한 type 값을 추적해가며 적어보았는데 qIdx 선택한 버튼 type 0 a [1, 2, 4, 9] 1 c [7, 4, 9, 11] 2 b [7, 9 ,11] 3 c [0, 3, 6, 5] 4 c [2, 5, 8] 5 b [0, 3, 6, 10] 6 a [1, 7, 11] 7 c [1, 7, 11] 8 b [1, 3, 6, 11] 9 a [4, 9, 11] 10 c [2, 5, 8] 11 a [3, 6, 4, 9]선택한 버튼에 대한 type 값의 누계를 도출해보니 [2, 4, 3, 4, 4, 3, 4, 4, 2, 5, 1, 6] // select console에 제가 요청했던 select 값과 동일한 배열이 나왔습니다. 또한 0~11까지의 띠 순서 그대로 오름차순으로 배정된 것을 발견할 수 있었습니다.제가 부족한 지식을 동원하여 생각한 바로는 type값을 누계할 때 오름차순으로 정렬하라는 어떤 메세지가 있지 않으면 [4, 2, 3, 4, 4, 3, 1, 4, 2, 6, 4, 5] 이런식으로 순서에 상관없이 해당 값에 대한 누계만 select에 담길 것으로 예상하였으나 오름차순으로 배열이 정리되어 정렬 원리가 궁금하였습니다. select[target[i]] += 1; 이 부분에서 자동으로 저희가 선택한 버튼들의 type을 select 배열에 넣을 때, 각 누계 값이 0 부터 11까지의 오름차순으로 자동 정렬되나요? const select = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];아니면 저희가 초반에 select에 0값으로 총 12개의 빈자릿수를 만들어 주었을 때부터각 자리당 0부터 11까지의 인덱스 주소가 자동 배정되는 건가요?아니면 이 배열(select)의 정렬방식에 대하여 놓친 부분이 있을까요? 도와주세요 ㅠㅠ
-
해결됨장애 없는 서비스를 만들기 위한 Resilience4j - CircuitBreaker
n 대의 서버간 서킷 브레이커의 상태를 동기화 시키려면 어떻게 해야 될까요?
가상의 상황외부 연동의 책임을 가진 external-interface 서버기상청에서 제공하는 api 로부터 오늘의 날씨 를 가져올 수 있습니다.n 대로 스케일 아웃 될 수 있습니다.현재 구성은 각 서버별로 독립적으로 서킷 브레이커를 관리하고 있습니다.ex)기상청 api 장애 상황에서1번 서버로 요청이 집중되어 1번 서버는 open 되었지만2번 서버는 요청이 별로 들어오지 않아 아직 close 상태일 수 있습니다.이 때 n 대의 서버간 서킷 브레이커의 상황을 필수적으로 공유해야 된다면 어떻게 할 것 인가? 생각하는 안redis pub/sub 기능을 통해 구현한다.1번 서버는 외부 연동 실패로 서킷브레이커가 open 되었다.1번 서버는 onStateTransition 의 로직으로 open 상태를 redis 에 pub 한다.2번 서버는 sub 하여 자신의 상태를 open 으로 동기화 한다.하지만 우려되는 맹점이 있습니다.pub, sub 방식은 서버간 동기화의 간극이 있습니다.결과적 일관성은 보장될지 언정 이 간극은 또 다른 이슈를 유발할 수 있습니다.ex)1번 서버는 open 상태를 pub 했습니다.2번 서버는 open 상태를 pub 했습니다. (1번 서버의 open 을 sub 하기 전에)1번 서버는 close 상태가 되었지만 (외부 연동이 정상적으로 복구되었음에도 불구하고)2번 서버에서 pub 한 open 정보에 의해 자신을 open 상태로 변경하였습니다. 동기화의 간극으로 인해 서로의 open 상태를 공유하는 것이 무한히 반복 됩니다.물론 실제 실패로의 event 만 pub/sub 하고,redis 의 상태 공유는 pub/sub 하지 않으면 될 것 같기도 합니다.하지만 가능/불가능 여부를 떠나 여전히 위험할 것 같다는 직감이 듭니다.redisson 과 같은 공유락까지도 생각을 해보았는데, 배보다 배꼽이 큰 것 같다는 생각이 듭니다.그외만약 actuator api 호출을 통해 명시적인 변경을 하고 싶다면실무라면 대표 도메인에 elb 나 ingress 등을 설정할 것 입니다.그러면 n 대의 서버에 상태 변경 명령을 어떻게하면 api 로 보낼 수 있나요?혹시 이건 아예 불가능한 생각일까요?사실 실무라면 굳이 서버간 서킷 브레이커의 상태를 공유하지 않을 것 같습니다.장애 상황이 자주 발생하지도 않을 것이거니와서킷 브레이커 발동을 위한 window 크기를 충분히 작게 설정한다면회복을 방해할 정도의 트래픽이 더 들어가지는 않을 것이라고 생각하기 때문 입니다.오히려 이런 공유 로직으로 인해 복잡도만 높아질 것이라고 생각해서 입니다. 하지만 실무를 떠나 기술적인 방법은 무엇이 있을까 인사이트가 궁금합니다.
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
build 가 되지 않습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 빌드하려는 과정에서 해당 폴더에 접근할 수 없다고 뜹니다.어떻게 하면 접근할 수 있는지 궁금합니다.
-
해결됨AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드립니다.
다른 자격증과 병행하여 준비하다보니 준비기간이 모자르네요.. 연장 부탁드립니다.
-
해결됨Next + React Query로 SNS 서비스 만들기
로그인 모달 리다이렉트를 다른 방식으로 구현했는데 문제 없을까요?
강의에서 알려주신 router.replace() 를 사용하지 않고// @/app/(beforeLogin)/@modal/(.)login/page.tsx import { redirect } from "next/navigation"; export default function Login() { redirect("/i/flow/login"); }기존의 이 코드를 인터셉트 라우팅으로 줘서홈페이지 -> 인터셉트 라우팅된 /login -> 인터셉트 라우팅된 /i/flow/login 으로 이동하도록 폴더를 구성해서 구현해 봤습니다. 이 방식으로 구현해도 문제 없을까요?
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
자바 버전이 다르게 나옵니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 현재 윈도우를 사용하고 있습니다. jdk21 을 intellij 내에서 설치하고, 커뮤니티에 있는 질문을 살펴보며 환경변수를 설정하고, 빌드하려고 했습니다. 그런데 전 분명 환경 변수에 jdk21을 설정했는데 cmd 창에 java -version 을 입력하면 openjdk11u ~~ 가 나옵니다. 예전에 다운 받았던 것이 잘못 나왔나 싶어 모두 찾아 삭제해봤는데 여전히 있습니다. intellij 에서 확인해봤을 때도 build.gradle 은 자바 버전이 21이고, 그에 따라 jdk 버전 21을 설정해놨었습니다. 어떻게 해야 자바 버전이 21로 나올까요?환경변수로 지정해놓은 JAVA_HOME을 눌러 해봤는데도 자바 버전이 21로 나오지 않습니다.
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
도메인 대신 탄력적 ip연결 후, 프론트 ip가 연결이 안되는 문제
상황)도메인 연결하면 돈이 나간대서 탄력적 ip만 연결헤줘도 원래 로그인까지 화면은 잘 나왔었는데요, s3연결하기부터 따라하기 전에 강의를 보았는데 prepare에 레파지토리 한개만 연결하길래, 기존에 front, back 경로에 레파지토리를 각각 만들어서 커밋중이여가지고 기존 레파지토리를 다 지우고 초기화한 다음 새 레파지토리와 새 인스턴스를 연결해서 s3까지 따라했거든요. 그런데 그 뒤로 back ip는 화면에 hello express라고 잘 나오는데 front탄력적 ip를 입력하니까 화면이 연결이 안되는 상황입니다. (DB 테이블 대소문자 잘 되어있습니다, env는 ubuntu에도 비밀 엑세스키까지 4가지 똑같이 입력해놓았습니다, S3에 나오는 내용까지 설치는 완료한 상태입니다. img관련 코드에서 backUrl 지워주었습니다. ubuntu에서도 git pull, npm i , npm run build해주었습니다.) 질문)프론트 ip가 화면에 안나오는데 log와 콘솔에 아무것도 안떠서, 이럴 때 화면이 안나오는 원인과 해결방법이 어떻게 되는지 궁금합니다. 질문)보안자격증명의 액세스키에 선생님거는 리전, 서비스가 나와있는데 제거는 코드에 작성한 내용과 연결이 안되서 N/A라고 나오는게 맞나요?시도해본 것)back에서 배포용일 때 if문에 도메인 주소를 빼고 실행해보기도 하고, 도메인 주소 대신 origin front 탄력적 ip를 넣어서 실행도 해보았지만 연결이 되지 않았습니다.if(process.env.NODE_ENV === 'production'){ app.use(morgan('combined')); app.use(hpp()); app.use(helmet()); // app.use(cors({ // origin: 'http://nodebird.com', // credentials: true, // })); } else { app.use(morgan('dev')); }작성한 코드 일부) app.jsconst express = require('express'); const cors = require('cors'); const session = require('express-session'); const cookieParser = require('cookie-parser'); const passport = require('passport'); const dotenv = require('dotenv'); const morgan = require('morgan'); const postRouter = require('./routes/post'); const postsRouter = require('./routes/posts'); const userRouter = require('./routes/user'); const hashtagRouter = require('./routes/hashtag'); const db = require('./models'); const passportConfig = require('./passport'); const path = require('path'); const hpp = require('hpp'); const helmet = require('helmet'); dotenv.config(); const app = express(); db.sequelize.sync() .then(() => { console.log('DB 연결 성공'); }).catch(console.error); passportConfig(); if(process.env.NODE_ENV === 'production'){ app.use(morgan('combined')); app.use(hpp()); app.use(helmet()); // app.use(cors({ // origin: 'http://nodebird.com', // credentials: true, // })); } else { app.use(morgan('dev')); } app.use(cors({ origin: ['http://localhost:3060', 'http://nodebird.com', 'http://13.125.122.77'], credentials:true })); app.use('/', express.static(path.join(__dirname, 'uploads'))); app.use(express.json()); app.use(express.urlencoded({extended:true})); app.use(cookieParser(process.env.COOKIE_SECRET)); app.use(session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, // cookie: { // httpOnly: true, //자바스크립트로 접근하지못하게 // secure: false, //일단 false로 하고 https적용할 땐 ture // domain: process.env.NODE_ENV = 'production' && '.nodebirdcom' //도메인 사용할 경우 // }, })); app.use(passport.initialize()); app.use(passport.session()); app.get('/', (req, res) =>{ res.send('hello express'); }); app.use('/posts', postsRouter); app.use('/post', postRouter); app.use('/user', userRouter); app.use('/hashtag', hashtagRouter); app.listen(80, () => { console.log('서버 실행 중'); }); routes/post.jsconst express = require('express'); const {Post, Image, Comment, User, Hashtag} = require('../models'); const {isLoggedIn} = require('./middlewares'); const router = express.Router(); const multer = require('multer'); const path = require('path'); const fs = require('fs'); const multerS3 = require('multer-s3'); const AWS = require('aws-sdk'); try { fs.accessSync('uploads'); } catch(error) { console.error('uploads폴더가 없으므로 생성합니다.'); fs.mkdirSync('uploads'); } AWS.config.update({ accessKeyId: process.env.S3_ACCESS_KEY_ID, secretAccessKey: process.env.S3_SECRET_ACCESS_KEY, region: 'ap-northeast-2', }); const upload = multer({ storage: multerS3({ s3: new AWS.S3(), bucket: 'react-saga-nodebird-s3', key(req, file, cb){ cb(null, `original/${Date.now()}_${path.basename(file.originalname)}`) } }), limits: {fileSize: 20 * 1024 * 1024} //20MB }); router.post('/images', isLoggedIn, upload.array('image'),(req, res, next) => { //POST /post/images res.json(req.files.map((v) => v.location)); });backUrl남아있는 부분 config.jsexport const backUrl = 'http://13.209.144.99';profile.jsimport { backUrl } from '../config/config'; const Profile = () => { const { data: followersData, error:followerError } = useSWR(`${backUrl}/user/followers?limit=${followersLimit}`, fetcher); const { data: followingsData, error:followingError } = useSWR(`${backUrl}/user/followings?limit=${followingsLimit}`, fetcher); export default Profile;sagas/indeximport { backUrl } from '../config/config'; axios.defaults.baseURL = backUrl;back/package.json{ "name": "react-nodebird-back", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "cross-env NODE_ENV=production pm2 start app.js" }, "author": "luckyhaejin", "license": "ISC", "dependencies": { "aws-sdk": "^2.1538.0", "bcrypt": "^5.1.1", "cookie-parser": "^1.4.6", "cors": "^2.8.5", "cross-env": "^7.0.3", "dotenv": "^16.3.1", "express": "^4.18.2", "express-session": "^1.17.3", "helmet": "^7.1.0", "hpp": "^0.2.3", "morgan": "^1.10.0", "multer": "^1.4.5-lts.1", "multer-s3": "^3.0.1", "mysql2": "^3.6.5", "passport": "^0.7.0", "passport-local": "^1.0.0", "pm2": "^5.3.0", "sequelize": "^6.35.2", "sequelize-cli": "^6.6.2" }, "devDependencies": { "nodemon": "^2.0.22" } } front/package.json{ "name": "react-nodebird-front", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "npx browserslist@latest --update-db && NODE_OPTIONS=--openssl-legacy-provider next -p 3060", "build": "cross-env ANALYZE=true NODE_ENV=production next build", "start": "cross-env NODE_ENV=production next start -p 80", "lint": "eslint ." }, "author": "luckyhaejin", "license": "ISC", "dependencies": { "@ant-design/icons": "^4.2.1", "@next/bundle-analyzer": "^14.0.4", "antd": "^4.2.1", "axios": "^1.6.2", "babel-plugin-styled-components": "^2.1.4", "cross-env": "^7.0.3", "eslint-config-airbnb": "^19.0.4", "immer": "^10.0.3", "moment": "^2.30.1", "next": "^9.5.5", "next-redux-wrapper": "^6.0.2", "pm2": "^5.3.0", "prop-types": "^15.8.1", "react": "^16.14.0", "react-dom": "^16.14.0", "react-redux": "^7.2.9", "react-slick": "^0.29.0", "redux": "^4.2.1", "redux-devtools-extension": "^2.13.9", "redux-saga": "^1.3.0", "saga": "^4.0.0-alpha", "shortid": "^2.2.16", "styled-components": "^6.1.1", "swr": "^2.2.4" }, "devDependencies": { "babel-eslint": "^10.1.0", "eslint": "^8.56.0", "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", "faker": "^5.5.3" } } 사용중인OS) macOS
-
미해결HTML+CSS+JS 포트폴리오 실전 퍼블리싱(시즌1)
제이쿼리 연결을 어떻게 하라는건지 이해를 전혀 못했습니다.
제이 쿼리 연결, 제일 처음 강의에서 파일을 왜 새로 만들고, 왜 첫번째 파일 이름은 3.2어쩌구고 Custom파일에 왜 쓰는건지,연결은 아래 바디 맨 마지막에 3.어쩌고를 먼저 쓰고그 다음에 custom 쓰라는 부분만 이해하고인터넷 찾아보니 무슨 링크를 찾아서 넣고 뭐 방법이 여러가지인데 무슨 말인지 당췌 이해가 안갑니다…설명이 좀 필요할 것 같아요…도와주세요
-
해결됨독하게 시작하는 C 프로그래밍
이 부분에 오류가 있는지 궁금합니다.
제가 문제를 풀다 보니 이런 식으로 항A 값에 식을 만들어 버렸습니다.오류 없이 잘 진행되고 값도 잘 나오고 해서 문제 없다고는 생각합니다만혹시 제가 모르는 오류가 있을까봐 질문드립니다.미리 감사드립니다 ^^
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
request.getAttribute(ERROR_STATUS_CODE) 관련 질문이 있습니다
위 코드에서 result.put에는 ERROR_STATUS_CODE를 그대로 사용하였는데, return문 바로 윗줄에서는 RequestDispatcher.ERROR_STATUS_CODE를 사용하는 이유가 궁금합니다. 둘 사이에 어떤 차이가 있는건가요?감사합니다.
-
미해결호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS)
dto 변환
회원가입과 비밀번호 암호화 - 1에 5분 10초 정도 쯤에 dto를 서비스 계층으로 바로 넘기는 것이 안 좋다고 호돌님께서 말씀하셨습니다. 그래서 궁금증을 해결해 보고자 검색을 해봤습니다. 근데 dto를 컨트롤러 계층에서 엔티티로 변환하고 서비스 계층으로 넘겨야한다는 의견도 있고 컨트롤러에서 변환하고 넘기는 것보다 서비스 계층에서 dto를 변환해야 한다는 의견이 있는데 호돌님께서 말씀하신 것이 제가 고민하고 있는 것이 맞는지 알고 싶고 호돌님께서는 왜 dto를 서비스 단에 바로 넘기는 것이 안 좋다고 했는지 궁금합니다.!! 의견이 너무 갈려서 뭐가 맞는 방법인지 헷갈리네요
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
네트워크 프로그래밍 언리얼 3 4 5 차이
현재 강의는 언리얼5 기준으로 진행이 되는데 네트워크 시스템 구성이나 커넥션 핸드셰이킹 같은 방식이 다른 버전도 똑같은지 궁금합니다.현재 강의를 듣는게 나중에 언리얼3 4 작업을 할 때도 도움이 될까요?
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
아이패드에서 보는 중인데 링크나 파일들은 어디서 받을 수 있나요?
아이패드로 보는 중입니다!링크는 댓글을 검색하여 찾았는데, 파일들은 어디서 받을 수 있을까요? 아이패드로 보는거라 링크가 안나오는걸까요ㅠㅠ
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
pfsense 패키지 관련 질문 있습니다.
pfsense 에서 squid 패키지 설치하려고 system -> packagemanager 화면에서 Available packages 클릭하면 unable to retrieve package information 이라고 나오고 강의 영상 처럼 search 하는 화면으로 나오지 않아 질문 드립니다.현재 pfsense version은 2.7.0-RELEASE로 확인 됩니다.어떻게 해결을 해야할까요??감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
프로젝트를 로딩중에 75%에서 무한로딩에 걸리는 현상이 발생해요
여기저기 찾아봐도 해결방법을 찾지못해서 이렇게 올려봅니다 ㅠㅠ현상은 버전상관없이 발생하는것같구요단지 작업중 저장하고 언리얼프로젝트를 닫았다 다시 열게되면 한번씩 75%에서 무한로딩이 걸려 움직이질 않습니다.. CPU랑 프로세스 메모리도 변화가 없구요파일로드중 혹은 초기화중 무한로딩 걸리는 시점도 제각각인데진행도만 항상 75%에서 멈추네요..해결방법이나 최소한 원인을 찾을방법이 전혀 없을까요..?그냥 처음부터 다시 프로젝트를 만들어야 할까요??
-
해결됨홍정모의 따라하며 배우는 C언어
3분 15초 경에 제 생각이 맞는 건가요?
int arr[5] = { 100, 200, 300, 400, 500 }; int* ptr1, * ptr3; ptr1 = arr; ptr3 = ptr1 + 4;일 때배열의 이름은 배열의 첫 번째 공간의 주소이다. 라고 한다면ptr1은 arr[0]을 가리킨다.ptr1 = arrarr == &arr[0]이라서 ptr1 + 4는 &arr[0] + (arr[0]의 자료형인 int의 크기) * 4 이고 배열의 이름은 배열의 첫 번째 공간의 주소를 가리키는 포인터와 비슷한 무언가이다. 라고 한다면ptr1은 arr을 가리키고 arr은 arr[0]을 가리킨다.ptr1 = &arr&arr != &arr[0]라서 ptr1은 arr[0]을 직접 가리키는 게 아니라 arr을 직접 가리키는거고ptr1 + 4는 &arr + (arr의 자료형의 크기) * 4인데 arr은 포인터와 비슷한거지 포인터가 아니라주소도 없고 자료형도 없는데 여기서 뭔가 말이 모순되는 것 같고 계산 결과를 보면 후자는 절대로 아닌거 같은데배열의 이름은 배열의 첫 번째 공간의 주소를 가리키는 포인터와 비슷한 무언가이다.라는 표현은 맞는 표현 아닌가요?맞는 표현인데도 불구하고 포인터와 비슷한 무언가라고 생각하고ptr1 + 4를 하면 결과가 잘못되는 게 뭔가 아닌거 같아요. 제 생각의 어떤 부분이 뭐가 잘못된 거죠?
-
미해결모두를 위한 ChatGPT Part 3 - ChatGPT로 퀀트 투자 전략 만들기
kospi_plus_kosdaq_list = fdr.StockListing('KRX')
# 코스피 + 코스닥 + 코넥스 리스트 kospi_plus_kosdaq_list = fdr.StockListing('KRX') 실행시 수업시 보여지는 리스트의 숫자가 차이가 많습니다. 제가 실행한 것은 2784개입니다. 이유가 무엇인가요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
UIManager의 SetCanvers() 부분에서
안녕하세요..UIManager 의 SetCanvas 에서public void SetCanvas(GameObject go, bool sort = true, int sortOrder = 0) { Canvas canvas = Util.GetOrAddComponent<Canvas>(go); if (canvas == null) { canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvas.overrideSorting = true; }"if (canvas == null)" 부분이 "canvas != null" 이 되어야 될 것 같은데 설명 부탁드립니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 약수 문제 질문
1번 질문: 2번 문제와 백준의 14232번이 어떻게 같은 문제인지 이해가 가지 않습니다.다음은 강의 자료입니다:문제 2. 약수 빠르게 구하기 ( #1978, #11653, #14232 )숫자 N이 주어진다.이 숫자의 약수가 총 몇 개가 포함되어 있는지 계산하고 싶다.약수의 개수와, 약수들을 모두 출력하는 프로그램을 작성하시오.15 23 5입력값과 출력값을 보면 백준 14232번을 가져오신 것 같은데 약수를 출력하는 문제가 해당 백준의 문제와 어떻게 같은 출력값이 나오는지 이해가 가지 않습니다. 14232번은 다음과 같습니다:희대의 도둑 효빈이는 세계 최고의 보석가게 영선상에 잠입할 계획이다. 이 영선상은 최고의 보석가게답게 최고의 보안장치를 두고 있는데, 이 보안장치를 해제하지 않는다면 보석을 여러 개 훔쳐갈 시, 보석끼리 달라붙으며 무게가 모든 보석들의 곱으로 늘어난다.효빈이는 이 보안장치를 해제할 수 없기 때문에, 차라리 곱해진 대로 최대한 많은 보석들을 가져오기로 계획했다. 효빈이는 한번에 k라는 무게를 들 수 있으므로, 딱 k만큼의 무게만큼의 보석을 가져오고 싶은데, 그 때 보석들의 최대 개수를 알고싶다.영선상에는 세계 최고의 보석가게답게 모든 무게의 보석들이 매우 많이때문에, 훔쳐가는 보석이 부족할 일은 없다. 다만 모든 보석들은 무게가 1보다 크다.효빈이는 이제 영선상에 잡입할 계획을 다 세웠다. 하지만 무슨 보석들을 훔쳐올지 결정하지 못하였는데, 효빈이를 대신하여 훔쳐올 보석들을 결정해주자.제가 생각하기로는 한번에 또한 강의자료에 있는 2번 문제의 정답이 해당 문제에 해당하지 않는 것 같은데 이 코드는 어디에 해당하는 코드인지 궁금합니다. 감사합니다
-
해결됨실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
Book 정적 생성 메서드 사용 시, 수정 X
Book 객체 인스턴스를 생성할 때, Setter로 값을 세팅하는 것이 아니라, 이전에 배운 '정적 생성 메서스' 방식을 활용해보았습니다. 그런데, 이 방식으로 진행할 경우에는 수정 시, item.getId() ==null 이 ture가 되어 em.persist를 해버립니다.(즉, 수정을 위한 merge가 동작하지 않습니다.)[Book.class] [ItemController.class] ※이후의 Repository 관련한 코드는 모두 강의 내용과 동일합니다!!그래서 ItemRepository의 if 구문에 break point를 찍고 디버깅을 해보았는데,상품 등록 시, Item의 Id값이 세팅이 안되었더라고요. DB 테이블을 확인해보니 Item_id 값은 잘 들어가 있는데, 왜 아래와 같이 수정 시에도 id = null 인지 짧은 지식으로 이해가 안갑니다..!