묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결SCSS(SASS)+FLEX 실전 반응형 웹 프로젝트 with Figma
섹션 4. SCSS 핵심 이론(Essential Theory) 완성예제는 따로 없을까요?
다운받는 곳에 없어서요
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
회원목록 조회가 안됩니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]https://drive.google.com/file/d/1jGfTDdd_dfIXWe6kq_FvMFFKNI1nxWcc/view?usp=sharing수 차례 확인하고 다시 해봤지만 회원목록 조회가 안됩니다.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
This quest has already been registered
안녕하세요 좋은 강의 잘 보고 있습니다!2장의 QuestSystem 부분까지 다 듣고 난 후, 마지막 테스트하는 부분에서 This quest has already been registered. 라는 에러가 나옵니다.강의를 돌려보면서 스크립트를 다르게 작성한 부분이 있나 확인해봤는데도 도저히 해결되지 않아 글을 작성하게 되었습니다. 제가 작성한 스크립트입니다.<Quest>public enum QuestState{ Inactive, Running, Complete, Cancel, WaitingForCompletion}[CreateAssetMenu(menuName = "Quest/Quest", fileName = "Quest_")]public class Quest : ScriptableObject{ #region Event public delegate void TaskSuccessChangedHandler(Quest quest, Task task, int currentSuccess, int prevSuccess); public delegate void CompletedHandler(Quest quest); public delegate void CancelHandler(Quest quest); public delegate void NewTaskGroupHandler(Quest quest, TaskGroup currentTaskGroup, TaskGroup prevTaskGroup); #endregion public event TaskSuccessChangedHandler onTaskSuccessChandged; public event CompletedHandler onCompleted; public event CancelHandler onCanceled; public event NewTaskGroupHandler onNewTaskGroup; public void OnRegister() { // Assert는 인자로 들어온 값이 false면 뒤의 문장을 에러로 띄움.(버그검출용) Debug.Assert(!IsRegistered, "This quest has already been registered."); foreach (var taskGroup in taskGroups) { taskGroup.Setup(this); foreach (var task in taskGroup.Tasks) task.onSuccessChanged += OnSuccessChanged; } State = QuestState.Running; CurrentTaskGroup.Start(); } public Quest Clone() { var clone = Instantiate(this); clone.taskGroups = taskGroups.Select(x => new TaskGroup(x)).ToArray(); return clone; } public void ReceiveReport(string category, object target, int successCount) { Debug.Assert(!IsRegistered, "This quest has already been registered."); Debug.Assert(!IsCancel, "This quest has been canceld"); if (IsComplete) return; if (CurrentTaskGroup.IsAllTaskComplete) { if (currentTaskGroupIndex + 1 == taskGroups.Length) { State = QuestState.WaitingForCompletion; if (useAutoComplete) Complete(); } else { var prevTasKGroup = taskGroups[currentTaskGroupIndex++]; prevTasKGroup.End(); CurrentTaskGroup.Start(); onNewTaskGroup?.Invoke(this, CurrentTaskGroup, prevTasKGroup); } } else State = QuestState.Running; } public void Complete() { CheckIsRunning(); foreach (var taskGroup in taskGroups) taskGroup.Complete(); State = QuestState.Complete; foreach (var reward in rewards) reward.Give(this); onCompleted?.Invoke(this); onTaskSuccessChandged = null; onCompleted = null; onCanceled = null; onNewTaskGroup = null; } public virtual void Cancel() { CheckIsRunning(); Debug.Assert(IsCancelable, "This quest can't be canceled"); State = QuestState.Cancel; onCanceled?.Invoke(this); } private void OnSuccessChanged(Task task, int currentSuccess, int prevSuccess) => onTaskSuccessChandged?.Invoke(this,task,currentSuccess, prevSuccess); [Conditional("UNITY_EDITOR")] private void CheckIsRunning() { Debug.Assert(!IsRegistered, "This quest has already been registered."); Debug.Assert(!IsCancel, "This quest has been canceld"); Debug.Assert(!IsCompleatable, "This quest had already been completed"); }} <QuestSystem>public class QuestSystem : MonoBehaviour{ #region Events public delegate void QuestRegisteredHandler(Quest newQuest); public delegate void QuestCompletedHandler(Quest quest); public delegate void QuestCanceledHandler(Quest quest); #endregion private static QuestSystem instance; private static bool isApplicationQuitting; public static QuestSystem Instance { get { if (!isApplicationQuitting && instance == null) { instance = FindObjectOfType<QuestSystem>(); if (instance == null) { instance = new GameObject("Quest System").AddComponent<QuestSystem>(); DontDestroyOnLoad(instance.gameObject); } } return instance; } } private void Awake() { questDatabase = Resources.Load<QuestDatabase>("QuestDatabase"); achievementDatabase = Resources.Load<QuestDatabase>("AchievementDatabase"); foreach (var achievement in achievementDatabase.Quests) Register(achievement); } public Quest Register(Quest quest) { var newQuest = quest.Clone(); if (newQuest is Achievement) { newQuest.onCompleted += OnAchievementCompleted; activeAchievements.Add(newQuest); newQuest.OnRegister(); onAchievementRegistered?.Invoke(newQuest); } else { newQuest.onCompleted += OnQuestCompleted; newQuest.onCanceled += OnQuestCanceled; activeQuests.Add(newQuest); newQuest.OnRegister(); onQuestRegistered?.Invoke(newQuest); } return newQuest; } public void ReceiveReport(string category, object target, int successCount) { ReceiveReport(activeQuests, category, target, successCount); ReceiveReport(activeAchievements, category, target, successCount); } public void ReceiveReport(Category category, TaskTarget target, int successCount) => ReceiveReport(category.CodeName, target.Value, successCount); public bool CantainsInActiveQuests(Quest quest) => activeQuests.Any(x => x.CodeName == quest.CodeName); public bool CantainsInCompletedQuests(Quest quest) => completedQuests.Any(x => x.CodeName == quest.CodeName); public bool CantainsInActiveAchievements(Quest quest) => activeAchievements.Any(x => x.CodeName == quest.CodeName); public bool CantainsInCompletedAchievements(Quest quest) => completedAchievement.Any(x => x.CodeName == quest.CodeName); private void ReceiveReport(List<Quest> quests, string category, object target, int successCount) { foreach (var quest in quests.ToArray()) quest.ReceiveReport(category, target, successCount); } #region Callback private void OnQuestCompleted(Quest quest) { activeQuests.Remove(quest); completedQuests.Add(quest); onQuestCompleted?.Invoke(quest); } private void OnQuestCanceled(Quest quest) { activeQuests.Remove(quest); onQuestCanceled?.Invoke(quest); Destroy(quest, Time.deltaTime); } private void OnAchievementCompleted(Quest achievement) { activeAchievements.Remove(achievement); completedAchievement.Add(achievement); onAchievementCompleted?.Invoke(achievement); } #endregion} 파일을 따로 올리는 곳이 없어 어쩔 수 없이 스크립트 전체를 올렸고 너무 길어서 변수 부분은 생략했습니다!감사합니다.
-
해결됨[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지
setCookie 질문입니다.
안녕하십니까 제로초님 질문이 있어 글을 올립니다.현재 next.js를 이용하여 localhost:3000 포트를 이용해 front를 진행하고 있고, back은 제로초님의 강의를 이용하여 localhost:8001 포트로 서버를 만들어 진행하고 있습니다. 그러다, express passport 로그인 후 setCookie로 쿠키에 값을 저장하는 과정에서, front 서버 localhost:3000 포트에서는네트워크 탭에는 위와 같이 Set-Cookie로 명시 되어 있으나, 애플리케이션 탭의 쿠키에는 저장이 되지 않았습니다. 그래서 postman으로 실험을 해본 결과 postman에서는 정상적으로 쿠키가 저장된 모습을 확인할 수 있었습니다. 때문에 이와 같은 경우를 계속 찾아보고, 검색을 해보았는데, 브라우저의 쿠키 정책에 따라, 서로 다른 도메인 간에는 쿠키를 공유할 수 없습니다. 이를 해결하기 위해서는 서버에서 쿠키를 설정할 때 samesite 옵션을 none으로 설정 후 https 를 이용해 통신해야 한다고 나왔었습니다. 위와 같은 설명 때문에 localhost:3000 에서는 쿠키값이 저장이 안 된 것이 맞는 지 궁금합니다.
-
미해결실전! Querydsl
페이징, 정렬 다시 정리해서 질문드립니다.
1.이렇게 했을 때 페이지 처리와 정렬이 되었습니다. 여기서 정적으로 하려면 지금 작성한 것처럼 지정해주고 orderBy를 동적으로 처리하려면 동적쿼리 where절 처럼 메소드를 만들어서 MemberSearchCondition같은 곳에 정렬을 받아서 메소드로 만들고 orderBy에 넣어주면 되나요?? 2.Querydsl4RepositorySupport@Repository public abstract class Querydsl4RepositorySupport { private final Class domainClass; private Querydsl querydsl; private EntityManager entityManager; private JPAQueryFactory queryFactory; public Querydsl4RepositorySupport(Class<?> domainClass) { Assert.notNull(domainClass, "Domain class must not be null!"); this.domainClass = domainClass; } @Autowired public void setEntityManager(EntityManager entityManager) { Assert.notNull(entityManager, "EntityManager must not be null!"); JpaEntityInformation entityInformation = JpaEntityInformationSupport.getEntityInformation(domainClass, entityManager); SimpleEntityPathResolver resolver = SimpleEntityPathResolver.INSTANCE; EntityPath path = resolver.createPath(entityInformation.getJavaType()); this.entityManager = entityManager; this.querydsl = new Querydsl(entityManager, new PathBuilder<>(path.getType(), path.getMetadata())); this.queryFactory = new JPAQueryFactory(entityManager); } @PostConstruct public void validate() { Assert.notNull(entityManager, "EntityManager must not be null!"); Assert.notNull(querydsl, "Querydsl must not be null!"); Assert.notNull(queryFactory, "QueryFactory must not be null!"); } protected JPAQueryFactory getQueryFactory() { return queryFactory; } protected Querydsl getQuerydsl() { return querydsl; } protected EntityManager getEntityManager() { return entityManager; } protected <T> JPAQuery<T> select(Expression<T> expr) { return getQueryFactory().select(expr); } protected <T> JPAQuery<T> selectFrom(EntityPath<T> from) { return getQueryFactory().selectFrom(from); } protected <T> Page<T> applyPagination(Pageable pageable, Function<JPAQueryFactory, JPAQuery> contentQuery) { JPAQuery jpaQuery = contentQuery.apply(getQueryFactory()); List<T> content = getQuerydsl().applyPagination(pageable, jpaQuery).fetch(); return PageableExecutionUtils.getPage(content, pageable, jpaQuery::fetchCount); } protected <T> Page<T> applyPagination(Pageable pageable, Function<JPAQueryFactory, JPAQuery> contentQuery, Function<JPAQueryFactory, JPAQuery> countQuery) { JPAQuery jpaContentQuery = contentQuery.apply(getQueryFactory()); List<T> content = getQuerydsl().applyPagination(pageable, jpaContentQuery).fetch(); JPAQuery countResult = countQuery.apply(getQueryFactory()); return PageableExecutionUtils.getPage(content, pageable, countResult::fetchCount); } } 여기서 보면 fetchCount를 사용하고 있는데 deprecated가 뜹니다. 이거를 어떻게 수정해줘야 할까요? Querydsl4RepositorySupport을 사용해서 public Page<Member> applyPagination(MemberSearchCondition condition, Pageable pageable) { return applyPagination(pageable, query -> query.selectFrom(member) .leftJoin(member.team, team) .where(userNameEq(condition.getUserName()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ) ); } public Page<Member> applyPagination2(MemberSearchCondition condition, Pageable pageable) { return applyPagination(pageable, contentQuery -> contentQuery.selectFrom(member) .leftJoin(member.team, team) .where(userNameEq(condition.getUserName()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ), countQuery -> countQuery .select(member.id) .from(member) .where(userNameEq(condition.getUserName()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe())) ); }이렇게 구현한 거에도 1번과 같이 메소드로 orderBy에 넣으면 되는건가요? 1번과 3번의 차이는 코드를 더 가독성있게 하려고 하는건가요 아니면 성능상의 차이점이라던지 더 큰 장점이 있나요?
-
미해결실전! Querydsl
Querydsl 페이징, 정렬 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]페이징, 정렬에 대해서 질문이 있습니다. 1.이렇게 했을 때 페이지 처리와 정렬이 되었습니다.2.OrderSpecifier로 변환 3.Querydsl4RepositorySupport 질문 1 : 1~3의 차이점이 궁금합니다.질문 2 : 상황에 따라서 다르겠지만 1~3중 실무에서는 주로 어떤 것을 사용하나요?질문 3 : 1번과 3번의 차이는 1번으로 했을 때 루트 엔티티 범 위를 넘어가는 동적 정렬 기능이 필요할 때 orderBy에는 한계점이 있어서 Querydsl4RepositorySupport을 선택해서 사용하는 것인가요?질문 4 : Querydsl4RepositorySupport에서 fetchCount들이 있는데 곧 지원이 끊기는데 여기서는 어떻게 변화시켜야할지 잘 모르겠습니다...질문 5이렇게 사용했을 때 정렬을 사용하려고 하면 .orderBy를 사용하면 되는건가요? 아니면 다른 방법이 있나요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
정렬에 대한 질문
안녕하세요,postman으로 테스트해보다가 궁금한것이 있어 질문 올려요. 질문 전에 base-pagination.dto.ts 에서order__createdAt의 기본값은 없앤 상태일 때 likeCount DESC 같은것으로 정렬한다면, where__id__... 를 어떻게 해야할지.. 테스트해보니 생각한것처럼 나오지 않아서요.커서 페이지네이션은 이렇게 쓰면 안되는것인지.. 궁금합니다. 예) 배달비 순으로 정렬, 금액 순으로 정렬 이런것들이요. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
같은 위치를 눌렀을 때 idle에서 run으로 애니메이션만 바뀌는 문제에 대해 질문합니다.
안녕하세요.강의를 다 듣고 이리저리 만져보고 있는 학생입니다. 그런데 포인팅 된 터레인으로 이동한 뒤, 같은 위치를 한번 더 클릭하면 애니메이션이 RUN 상태로 바뀝니다. 해당 문제를 해결해 보고 싶어 디버깅을 해 봤습니다.마우스가 클릭 된 이벤트에서 State를 Moving으로 바꿔 줍니다. 하지만 UpdateMoving 함수에서는 다시 State를 Idle로 바꿈에도 불구하고 애니메이션만 RUN을 유지하고 있습니다. 혹시나 싶어 선생님 프로젝트를 열어 실행해 봐도 같은 문제가 있어 어느 부분을 수정하면 좋을지 여쭤봅니다.
-
미해결
spring boot security 적용시 currentUser에 null값 들어가는 이유
안녕하세요인프런 강의 들으면서 모르는 부분들은 찾아가면서 공부하고 있는 학생입니다.security 강의 듣고 프로젝트를 생성해서 연습하다가 로그인하는 것까지는 구현이 된 것 같은데스프링필터 설정에서 한 /memo/** 주소에 접근이 가능해졌다면 시큐리티 로그인이 잘 작동한 게 맞을까요 ?..그리고 memoForm 페이지로 입장하면 currentUser가 null로 확인되고 메모를 저장하려고 시도하면당연히 currentUser에 null이 들어가있어서 NullPointerException 오류가 나게 돼요.왜 로그인은 되었는데 currentUser에 아무 값도 들어 있지 않은 건지 이유를 잘 모르겠습니다.저와 비슷한 문제를 해결하신 경험이 계신 분이 있다면 어느 부분에서 수정을 해야 할 지 힌트라도 알려주시면 감사하겠습니다 ( •_ •̥ ˳ ˳ )
-
미해결따라하며 배우는 노드, 리액트 시리즈 - 기본 강의
model.findone() no longer accepts a callback
더이상 저 문법을 지원하지 않는다고 해서 이것저것 코드 수정해 봤는데...비밀번호가 일치해도 일치한다는 메세지가 포스트맨에 나오지 않고에러도 뜨고 있습니다[에러 메세지] cb(null, isMatch); ^TypeError: cb is not a function at C:\Users\wwww\Documents\boiler-plate\models\User.js:69:5 index.js와 user.js를 첨부합니다 혹시 해결방법을 알 수 있을까요?// http://localhost:5000/ const express = require("express"); const app = express(); const port = 5000; const bodyParser = require("body-parser"); const cookieParser = require("cookie-parser"); const config = require("./config/key"); const { User } = require("./models/User"); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(cookieParser()); const mongoose = require("mongoose"); mongoose .connect(config.mongoURI) .then(() => console.log("MongoDB Connected...")) .catch((err) => console.log(err)); app.get("/", (req, res) => { res.send("Hello World!~~안녕 새해복"); }); app.post("/register", async (req, res) => { try { const user = new User(req.body); await user.save(); return res.status(200).json({ success: true, }); } catch (err) { return res.json({ success: false, err: err.message, }); } }); app.post("/api/users/login", async (req, res) => { try { // 요청된 이메일을 데이터베이스에서 찾기 const user = await User.findOne({ email: req.body.email }); if (!user) { return res.json({ loginSuccess: false, message: "제공된 이메일에 해당하는 유저가 없습니다.", }); } const isMatch = await user.comparePassword(req.body.password); if (!isMatch) { return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다.", }); } // 비밀번호가 일치하면 토큰 생성 const userWithToken = await user.generateToken(); // 토큰 저장 res .cookie("x_auth", userWithToken.token) .status(200) .json({ loginSuccess: true, userId: userWithToken._id }); } catch (err) { return res.status(400).send(err); } }); app.listen(port, () => { console.log(`Example app listening on port ${port}`); }); const mongoose = require("mongoose"); // 몽구스 모듈을 가져와 몽고DB와 연결 const bcrypt = require("bcrypt"); const saltRounds = 10; const jwt = require("jsonwebtoken"); // 몽구스를 이용해 스키마 생성(필드들 작성) const userSchema = mongoose.Schema({ name: { type: String, maxlength: 50, }, email: { type: String, trim: true, unique: true, }, password: { type: String, minlength: 5, maxlength: 100, }, lastname: { type: String, maxlength: 50, }, role: { type: Number, default: 0, }, image: String, token: { type: String, }, tokenExp: { type: Number, }, }); userSchema.pre("save", function (next) { var user = this; if (user.isModified("password")) { bcrypt.genSalt(saltRounds, function (err, salt) { if (err) return next(err); bcrypt.hash(user.password, salt, function (err, hash) { if (err) return next(err); user.password = hash; next(); }); }); } else { next(); } }); // comparePassword userSchema.methods.comparePassword = function (PlainPassword, cb) { bcrypt.compare(PlainPassword, this.password, function (err, isMatch) { if (err) return cb(err); cb(null, isMatch); }); }; userSchema.methods.generateToken = function () { var user = this; return new Promise((resolve, reject) => { var token = jwt.sign(user._id.toHexString(), "secretToken"); user.token = token; user .save() .then((user) => resolve(user)) .catch((err) => reject(err)); }); }; const User = mongoose.model("User", userSchema); module.exports = { User };
-
해결됨C개발자를 위한 최소한의 C++
안녕하세요. Deep Copy 부분관련해서 질문 사항이 있습니다.
안녕하세요. 해당 두코드의 차이에 대해서 여쭙고 싶어 CMystring 클래스에는 operator 함수를 구현하지 않은 상황에서 아래 두 코드의 실행 결과가 달라 질문드립니다. 1번 코드CMystring String3 = String2;2번 코드CMystring String3; String3 = String2; 1번 코드에서는 복사가 호출되어 String3에 새로운 메모리가 할당이되고.2번 코드에서는 단순 대입, 즉 shallow copy 가 일어나는 것을 확인하여 String2와 같은 메모리를 참조하는 것을 확인했습니다. 두코드의 동작 방식을 확인하여 둘의 차이를 간접적으로 확인했으나 정확한 이유를 알고싶어 이렇게 질문게시판에 글을 남깁니다.
-
미해결오픈 소스 도구를 활용한 웹 해킹 및 스노트 분석(침해대응)
배포자료 있다고 강의중에 말씀하시는데요
학습자료는 강의실에 진입하셔서 우측 상단의 다운로드 버튼이나 커리큘럼의 각 수업 옆에 있는 구름모양의 다운로드 버튼 아이콘을 클릭하시면 확인하실 수 있습니다. 우측상단 다운로드 버튼 없고요쿠리큘럼 수업 옆에 구름모양 다운로드 아이콘도 없습니다.;;;어디서 받나요?
-
해결됨Vue3 완벽 마스터: 기초부터 실전까지 - "기본편"
ESlint.cjs 설정 관련 error 표시가 계속됩니다.
/* eslint-env node */ require('@rushstack/eslint-patch/modern-module-resolution') module.exports = { root: true, extends: [ 'plugin:vue/vue3-essential', 'eslint:recommended', '@vue/eslint-config-prettier/skip-formatting' ], parserOptions: { ecmaVersion: 'latest' }, rules: { 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 'prettier/prettier': [ 'error', { singleQuote: true, semi: true, useTabs: true, tabWidth: 2, trailingComma: 'all', printWidth: 80, bracketSpacing: true, arrowParens: 'avoid' } ] } }강의설명란을 참고해서 parserOption은 그대로 두고 나머지 부분을 추가하고, format on save 와 settings.json 파일도 수정하고, prettier 확장프로그램도 작업 영역에서 사용하지 않기를 설정 했는데도 저장만 하면 아래처럼 빨간 줄이 가득합니다 ㅠㅠ 어떻게 해야 할까요? { // eslint 적용할 파일 종류 "eslint.validate": [ "javascript", "javascriptreact", "typescript", "typescriptreact", "html", "vue", "markdown" ], // 저장시 eslint 스타일 적용 "editor.codeActionsOnSave": { "source.fixAll.eslint": true }, "editor.tabSize": 2 }
-
미해결따라하며 배우는 도커와 CI환경 [2023.11 업데이트]
docckerrun.aws.json 파일에서 name과 hostname의 차이가 궁금합니다.
안녕하세요. 알찬 강의 잘 듣고 있습니다.Dockerrun.aws.json 파일의containerDefinitions안의 container를 정의할 때,"name"과 "hostname"의 차이가 궁금합니다. 감사합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
NextJS 14와 Styled-Components를 같이 이용할 때 질문
NextJS의 공식 문서에 따라 styled-components를 설치하고 적용하는거에는 성공했습니다.다만 styled-components를 사용하기 위해서는 page.tsx에서도 "use client"로 사용해야지만 오류가 나지 않았는데요! 스타일링을 위해서 page를 client로 고정해야만 하는거면 서버사이드의 장점이 없어지다보니 고민이 됩니다. nextJS 14와 styled-components를 같이 사용할 때 이러한 고민을 어떻게 해결하면 좋을까요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
형 변환(후반전)
오류가 왜 뜰까요 ..?? 알려주세용 ,, 감사합니다
-
미해결
DB관련
DB에 관한 질문을 드립니다. 영한님 로드맵을 봤는데요 DB 기초 후 Spring DB로 넘어가던데 어떤 DB에 관한 것을 공부해야하는지 알 수 있을까요? 제가 잘 몰라서 그러는데 SQL에 관한 것인가요?만약 SQL에 관한 것이면 MySQL인건가요??
-
해결됨홍정모의 따라하며 배우는 C언어
3분 11초경 질문
교수님이 마치 os가 된 것 처럼이라고 하셨는데 이게 무슨 뜻인가요?os가 변수의 주소값을 정해줘야하는데프로그래머가 os처럼 변수의 주솟값을 정해줘서 os가 된것처럼 이라고 말씀하시는건가요?
-
미해결JavaScript 비동기 프로그래밍 완벽 가이드 - Promise, await, async
안녕하세요. await async 강의 7분31초 부분에서 질문입니다. 7분 31초 부분에서 질문있습니다.
안녕하세요. const p = add(1,2);console.log(p); 여기서 Promise { <pending> } 이 출력되는데요.add 함수 내부에서 await setTimeout 호출되면 add 함수는 더 진행되지 않는다고 하셨습니다. 그럼 return 도 못한건데 왜 p 에 값이 Promise 가 들어왔는지 궁금합니다..
-
해결됨스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
제코드좀 봐주세요 ㅠㅠ
https://drive.google.com/file/d/19EdcpxnIZQKKAeCSlucWIrX8HVv4bCtf/view?usp=drive_link 머리아프네요..17강까지 잘되었습니다..