묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨빠른 취업을 위한 프론트엔드 로드맵
포트폴리오에 대해 질문있습니다.
안녕하세요 강의 영상 잘 보고 있습니다 다름이 아니라 포트폴리오에 대해 기능들도 확인을 했는데 어떤 포트폴리오를 만들어야 할지 생각이 잘 나지 않더라구요. 투두리스트는 뭔가 기본중에 기본인것 같아 포트폴리오로 사용하기엔 부적절한 것같고 다른 걸 생각해보고 있지만 어떠한 걸 만들어야 할지 생각이 나지 않습니다.
-
미해결만들면서 배우는 리액트 : 기초
빌드할때 dist 폴더가 만들어지는데요,
마지막에 빌드를 하려고 하는데요,저는 vite를 이용해서 했구요,깃허브에 페이지 올리고 pages까지 오픈을 했습니다. 그리고 나서 npm run build 를 하면 강사님하고 다르게 build 폴더가 아니고 dist폴더가 만들어지는데요,혹시 그럴경우엔 깃허브에 배포할때 명령어가 혹시 강의내용과 다르게 해야 하는 부분이 있는지요? npm install gh-pages package.json 파일에서 소스 추가할때"deploy": "gh-pages -d build" 위의 파일을 수정한 후 다시 npm run buildnpm run deploy여기까지 해도 깃허브 저장소에서 gitpages가 생기기 않습니다...
-
해결됨개발자라면 알아야 할 리눅스(linux-ubuntu) 기본
실행환경 질문
제가 시놀로지 나스를 사서.. 더 활용해보고자 강의를 들으려고 합니다. 비전공자라서 필요한 지식에 구멍난 부분이 많아서요. 나스에서 container manager(docker)로 ubuntu이미지를 받았는데, 이걸로 돌려봐도 될까요?? 혹시 추가적으로 고려해야 할 사항이 있을까요??
-
해결됨한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지
12.11) Home 페이지 구현하기 2. 기능
해당 챕터에서 강의대로 진행했고 몇번을 다시 확인해봐도차이점을 도통 찾지 못해서 문의드립니다.Home.jsx에서 데이터를 필터걸어도 걸리지않는 상황DiaryList.jsx에서 DiaryItem으로 데이터를 보내도 받는쪽에서 받지 못하는 상황(개발자도구에서는 워닝으로 hook.js:608 Warning: Each child in a list should have a unique "key" prop) 발생 이하 소스첨부 드립니다. App.jsximport './App.css' import { useReducer, useRef, createContext } from 'react'; import { Routes, Route } from 'react-router-dom'; import Home from './pages/Home'; import Diary from './pages/Diary'; import New from './pages/new'; import Edit from './pages/Edit'; import Notfound from './pages/Notfound'; const mockData =[ { id : 1, createdDate : new Date("2024-12-6").getTime(), emotionId : 1, content : "1번 일기내용", }, { id : 2, createdDate : new Date("2024-12-5").getTime(), emotionId : 2, content : "2번 일기내용", }, { id : 3, createdDate : new Date("2024-11-15").getTime(), emotionId : 3, content : "3번 일기내용", }, ] function reducer(state, action){ switch(action.type){ case 'CREATE' : return [action.data, ...state] case 'UPDATE' : return state.map((item)=> String(item.id) === String(action.data.id) ? action.data : item) case 'DELETE' : return state.filter((item) => String(item.id) !== String(action.id)); default : return state; } } export const DiaryStateContext = createContext(); export const DiaryDispatchContext = createContext(); function App() { const [data, dispatch] = useReducer(reducer, [mockData]); const idRef = useRef(3); const onCreate =(createdDate, emotionId, content) => { dispatch({ type:"CREATE", data : { id : idRef.current++, createdDate, emotionId, content, }, }) } const onUpdate = (id,createdDate , emotionId, content) => { dispatch( { type : "UPDATE", data : { id, createdDate, emotionId, content, }, } ) } const onDelete = (id) => { dispatch( { type : "DELTE", data : { id, } } ) } return ( <> <DiaryStateContext.Provider value={data}> <DiaryDispatchContext.Provider value={{ onCreate, onUpdate, onDelete, }} > <Routes> <Route path="/" element={<Home />}></Route> <Route path="/new" element={<New />}></Route> <Route path="/diary/:id" element={<Diary />}></Route> <Route path="/edit/:id" element={<Edit />}></Route> <Route path="*" element={<Notfound />}></Route> </Routes> </DiaryDispatchContext.Provider> </DiaryStateContext.Provider> </> ); }; export default App Home.jsximport { useState, useContext } from "react"; import { DiaryStateContext } from "../App"; import Button from "../components/button"; import Header from "../components/Header" import DiaryList from "../components/DiaryList"; const getMonthlyData = (pivotDate, data) =>{ const beginTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth(), 1, 0, 0, 0 ).getTime(); const endTime = new Date( pivotDate.getFullYear(), pivotDate.getMonth() + 1, 0, 23, 59, 59 ).getTime(); console.log('필터시작일자 : ' + beginTime + '필터종료일자' + endTime) return data.filter((item)=> beginTime <= item.createdDate <= endTime); } const Home = () => { const data = useContext(DiaryStateContext); const [pivotDate,setPivotDate] = useState(new Date()); const monthlyData = getMonthlyData(pivotDate, data); console.log(monthlyData); const onIncreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() + 1) ); }; const onDecreaseMonth = () => { setPivotDate(new Date(pivotDate.getFullYear(), pivotDate.getMonth() - 1) ); }; return <div> <Header title = {`${pivotDate.getFullYear()} 년 ${ pivotDate.getMonth()+ 1 }월`} leftChild={<Button onClick={onDecreaseMonth} text="<" />} rightChild={<Button onClick={onIncreaseMonth} text=">" />} /> <DiaryList data={monthlyData} /> </div>; } export default Home;DiaryList.jsximport './DiaryList.css' import Button from "./button"; import DiaryItem from './DiaryItem'; import { useNavigate } from 'react-router-dom'; import { useState } from 'react'; const DiaryList = ({data}) => { const nav = useNavigate(); const [sortType, setSortType] = useState("latest"); const onChangeSortType = (e) => { setSortType(e.target.value); }; const getSortedDate = () => { return data.toSorted((a, b) => { if(sortType ==='oldest'){ return Number(a.createdDate) - Number(b.createdDate); } else { return Number(b.createdDate) - Number(a.createdDate); } }); } const sortedData = getSortedDate(); return ( <div className="DiaryList"> <div className="menu_bar"> <select> <option value={"latest"}>최신순</option> <option value={"oldest"}>오래된순</option> </select> <Button onClick = {() => nav("/new")} text={"새 일기 쓰기"} type={"POSITIVE"} /> </div> <div className="list_wrapper"> {sortedData.map((item)=><DiaryItem key={item.id} {...item}/>)} </div> </div> ); }; export default DiaryList;DiaryItem.jsximport getEmotionImage from "../util/get-emotion-image" import Button from "./button"; import "./DiaryItem.css"; import { useNavigate } from "react-router-dom"; const DiaryItem = ({id, emotionId, createdDate, content}) => { const nav = useNavigate(); return ( <div className="DiaryItem"> <div onClick={()=>nav(`/diary/${id}`)} className={`img_section img_section_${emotionId}`} > <img src={getEmotionImage(1)} /> </div> <div onClick={()=>nav(`/diary/${id}`)} className="info_section"> <div className="created_date"> {new Date(createdDate).toLocaleDateString()} </div> <div className="content">{content}</div> </div> <div className="button_section"> <Button onClick={()=>nav(`/edit/${id}`)} text={"수정하기"} /> </div> </div> ) }; export default DiaryItem;
-
미해결TailwindCSS 완벽 마스터: 포트폴리오부터 어드민까지!
빈 화면에서 tail 만 쳤을때 팝업도움말 나오게 하는 법 알려주세요.
컬러 및 배경, 보더 처리00:43여기보면 tail 만 쳐도 emmit 이라고 해야 되나요. 팝업도움말이 뜨는데 저는 저런게 전혀 뜨지 않는데요.어떻게 해야 저런 도움말 팝업이 뜰 수 있나요?tailwind css intellisense 플러그인은 설치해놓은 상태입니다.
-
미해결카프카 완벽 가이드 - 커넥트(Connect) 편
Debezium cdc source for MSSQL-Server [등록오류]
MSSQL-Server 용도로 Debezium cdc source를 등록해서 사용하고 싶습니다만, 아래와 같이 config 등록 시{ "name": "mssql_cdc_oc_source_01", "config": { "connector.class": "io.debezium.connector.sqlserver.SqlServerConnector", "database.encrypt": "false", "database.hostname": "***.***.***.***", "database.port": "1433", "database.user": "userid", "database.password": "password", "database.names": "dbname", "topic.prefix": "MSSQL", "schema.history.internal.kafka.bootstrap.servers": "192.168.56.101:9096", "schema.history.internal.kafka.topic": "sh-history", "schema.history.internal.store.only.captured.tables.ddl": "true", "schema.history.internal.store.only.captured.databases.ddl": "true" } } 아래와 같은 에러가 납니다.,ㅠㅠ HTTP/1.1 400 Bad RequestContent-Length: 280Content-Type: application/jsonDate: Mon, 16 Dec 2024 02:16:43 GMTServer: Jetty(9.4.44.v20210927){ "error_code": 400, "message": "Connector configuration is invalid and contains the following 3 error(s):\nA value is required\nA value is required\nA value is required\nYou can also find the above list of errors at the endpoint /connector-plugins/{connectorType}/config/validate"} 문제 해결 방법이나, SQL-Server용 예제 소스를 제공해 주실 수 있는지요???회신 메일주소는 : sentrino@naver.com입니다. 감사합니다!
-
미해결[2025 리뉴얼]플러터플로우로 코딩 없이 한달 안에 앱 만들기
트윗 나열해보기 강좌중 users 콜렉션 세팅 문제
트윗 나열해보기 강좌중 2:36초 post콜렉션을 템플릿으로 생성후,자동으로 생성된 users콜렉션을 선택해서 다시 템플릿을 선택하는 부분이 있습니다. 실제로 해보면 users가 자동으로 생기긴 하는데 선택해도 users 템플릿을 선택하는 곳이나 컬럼을 수정하는 곳이 나오지 않습니다. 정확히는 users를 선택해도 아무런 변화가 없습니다. 엣지와 크롬에서 동일 합니다.이거 어떻게 해결해야 할까요 ㅠㅠ
-
해결됨코틀린 고급편
Generic Func 질문이 있습니다
강사님 Generic Func에서// origin fun <T> List<T>.hasIntersection(other: List<T>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() } // error fun <T> List<T: Any>.hasIntersection(other: List<T>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() } // error fun <T> List<T>.hasIntersection(other: List<T : Any>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() } // error fun <T> List<T: Any>.hasIntersection(other: List<T : Any>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() } // ok fun <T : Any> List<T>.hasIntersection(other: List<T>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() }이렇게 되더라구요! 맨 앞에 <T>가 반환타입(List<T>)과 인자타입(other: List<T>) 까지 함께 선언해주는 declaration-site variance의 형태를 띄고 있어서 그런건가요?생각해보면 들어갈 수 있는 타입은 nullable인데 반환타입은 not null이거나 그 반대가 되면 헷갈릴 것 같아요. 그것을 막아둔것같기도 하구요!이렇게 제네릭 메서드를 만드는 경우에도 generic 제약을 줄 수 있는거죠!?좀 더 실 사용에 가깝게 타입가드까지 하려면fun <T : Number> List<T>.hasIntersection2(other: List<T>): Boolean { return (this.toSet() intersect other.toSet()).isNotEmpty() }이런 느낌으로 쓰일것같은데.. 맞나요? 코틀린 고급편 잘 듣고있습니다 ~_~
-
해결됨한 입 크기로 잘라먹는 Next.js(v15)
fetch() 사용 관련 질문입니다.
안녕하세요.강의를 전부 수강한 수강생입니다. 강사님의 강의를 보다가 궁금한 것이 있어서 질문 남깁니다. 강의에서는 API 요청 방식을 fetch를 사용하여 전부 Next 서버에서 요청을 보내는 방식이던데 클라이언트 컴포넌트에서 fetch를 사용하여 브라우저를 통해 요청하는 방법과 강의와 같이 사용하는 방법, API Route(Handle) 방식을 사용하는 방법의 차이를 알 수 있을까요?? 또한 Next 서버의 부하는 괜찮은지 궁금합니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
ui 생성 질문 있습니다.
ui 생성할 때 메모리 관련 질문 있습니다. 강의를 쭉 듣는 중입니다. UI 생성시에는프리팹 제작, Instantiate(Resources.Load<>("UI/xxxx"))로 ui 생성하고팝업 안에 아이템이 있는 경우에는 전부 생성 사용 종료 후 destroy 하는 방식 으로 이해했습니다. gameObject 생성 때 Object Pool 방식 구현 강의에서 메모리 관련해서 얘기 주셨는데요, 이런 ui 생성,destroy사용방식이 메모리 부하는 따로 없을까요?방치형 게임에서 유아이도 많이 눌러서 많이 일어날거라 생각이 들어서요. SetActive로 관리하면 어떤지.. 다른 방법이 없나?? 궁금하여 문의드립니다.
-
미해결비전공자도 이해할 수 있는 CI/CD 입문·실전
branch 분기
지금은 branch 분기 하지 않고 main 브런치 하나만 하지만dev cicdprod cicd 돌리게 될때 분기처리는 어떻게 하시나요 ?간단히하면 그냥 github actions 파일을 두개 만들면 될것같은데강사님은 어떻게하시나요 ?
-
해결됨독하게 시작하는 C 프로그래밍
[필수연습문제] 합격, 불합격 여부 판단하기 질문있습니다.
정답에서 3항 연산결과를 바로 printf 로 뽑아내는것을 보여주셨는데, 그렇다면 연산결과("합격,불합격" 문자열)은 어디에 저장되어서 출력하는건가요?? 제 생각에는 버퍼나 특정저장공간을 만들어 넣은다음에 뽑을것 같은대.. 디버그 모드에서도 보이지가 않아서 궁금합니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Create의 GetOrAddComponent
Poolable Create(){ GameObject go = Object.Instantiate<GameObject>(Original); go.name = Original.name; return go.GetOrAddComponent<Poolable>();}유틸에서 만들었던 GetOrAddComponent가 아닌 비쥬얼 스크립팅의 GetOrAddComponent로 연결이 되더라구요. UI 실습때는 Util.GetOrAddComponent<T>(go) 이런식으로 사용했었는데 괜찮을지 모르겠네요
-
미해결iOS 개발 찍먹하기 - SwiftUI
동영상 플레이 에러
안녕하세요? '개발할 때 도움이 되는 맥앱 추천' 강의부터 'Sign in to confirm you're not a bot' 메세지와 함께 플레이가 안됩니다. 확인 부탁드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
빈 게임 오브젝트에서 바인드가 실패하는 케이스
Text나 Button같은 실체가 있는 오브젝트들은 바인드가 성공이 되는데 빈 게임 오브젝트를 바인드할 경우 바인드 실패가 계속 뜹니다.
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
model과 repository
memberRepository.save(member); 회원 정보를 repository(DB)에 담는건 이해가 됐습니다. 제 질문은 2가지입니다. 이게 비즈니스 로직인데 너무 짧아서 그냥 컨트롤러 로직에 함께 쓴 것인가요?실무에서도 model을 주로 request.setAttribute()로 사용하고 여기에 데이터를 담아서 쓰나요??
-
미해결파이썬 동시성 프로그래밍 : 데이터 수집부터 웹 개발까지 (feat. FastAPI)
book_scraper.py 에서 import get_secret 관련 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. from app.config import NAVER_API_ID, NAVER_API_SECRET가 아닌from app.config import get_secret로 import 한 이유가 궁금합니다. 클래스 내에 NAVER_API_ID = get_secret("NAVER_API_ID") NAVER_API_SECRET = get_secret("NAVER_API_SECRET")로 변수 선언한 이유가 있을까요?get_secret은 config 파일에서 이미 수행해 NAVER_API_ID와 NAVER_API_SECRET을 변수로 가지고 있으니,위처럼 클래스 내에 변수롤 또 선언하면 config 파일에서 get_secret 함수를 이용해 변수를 만든 이유가 없다고 생각이 들었습니다. from app.config import NAVER_API_ID, NAVER_API_SECRETconfig 파일에서 NAVER_API_ID와 NAVER_API_SECRET을 import해서 바로 사용하면 어떤 차이가 있나요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
코틀린 val 질문
클래스 속성에 val로 정의할 경우 속성 값을 외부로 반환할 때 getter 메소드를 만들어서 반환하시나요? 아니면 속성 그대로 인스턴스.속성 으로 바로 반환하시나요??만약에 후자일 경우 캡슐화 위반이 아닌지 생각이 듭니다...
-
해결됨게임 프로그래머 취업 전략 가이드
ai 공학과 게임 개발자 커리큘럼 질문
이번에 ai학과에 진학하게 되었는데 커리큘럼이 통신공학이라는 얘기가 있어 ai도 할줄아는 게임개발자라는 제 이상이 틀어질까 겁이나 질문남깁니다.1. 커리큘럼이 sw개발자가 되기에 부실한지1-1 부실하다면 어떤 부분을 채워야 하는지2. 통신공학 커리큘럼에 따른 저희과 졸업생들에 게임 회사가 불이익을 부여할지가 궁금합니다
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 2024에서는 한글 문서 열기가 안되는데 다른 방법을 써야 하나요?
한글2024 버전에선 이 코드로 한글 문서가 안열리는데 다른 방법을 써야 하나요?import win32com.client as win32 hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject") hwp.XHwpWindows.Item(0).Visible = True