묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모두를 위한 대규모 언어 모델 LLM(Large Language Model) Part 1 - Llama 2 Fine-Tuning 해보기
GPT3모델 리뷰
안녕하세요! GPT1,2,3 논문들 리뷰 잘 보았습니다!GPT3모델은 아직 리뷰가 다 끝나지 않은거 같은데, 언제쯤 영상이 업로드될 지 알 수 있을까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
CanGo()의 검증이 다중인 이유가 있을까요?
루키스님 안녕하세요?본 강의 Hit 판정 #1에서 CanGo()로 플레이어 이동간 검증을 해주셨는데요,GameRoom.cs의 HandleMove()에서 CanGo()를 이미 사용했는데HandleMove()가 ApplyMove()를 호출함으로써 ApplyMove() 내에서 CanGo()를 다시 호출하고 있습니다.코스트낭비지 않을까?하고 의문이 들어 질문 올리게 되었습니다.//GameRoom.cs의 HandleMove() public void HandleMove(Player player, C_Move movePacket) { // ...생략 // CanGo 호출 1 // 다른 좌표로 이동할 경우, 갈 수 있는지 체크 if (movePosInfo.PosX != info.PosInfo.PosX || movePosInfo.PosY != info.PosInfo.PosY) { if (_map.CanGo(new Vector2Int(movePosInfo.PosX, movePosInfo.PosY)) == false) return; } // ...생략 // ApplyMove() 호출함으로써 CanGo 호출2 _map.ApplyMove(player, new Vector2Int(movePosInfo.PosX, movePosInfo.PosY)); // ...생략 } //Map.cs의 ApplyMove() public bool ApplyMove(Player player, Vector2Int dest) { // ...생략 if (CanGo(dest, true) == false) return false; // ... 생략 } 강의 재밌게 듣고 있습니다.미리 답변 감사합니다.수강자 올림.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
5:34 24bit 범위가 192.168.0 부분까지인지요?
1111 1111 .1111 1111 .1111 1111 . 0000 00002^8(8bit).2^8(8bit).2^8(8bit).2^8(8bit) 해서 총 32bit이며,이 중 /24 -> 24bit가 192. 168. 0 까지가 아닌가 싶어서 질문드립니다.! Network ID가 이 부분까지라고 이 전 학습에서도 말씀해주셔서요! 감사합니다.
-
미해결Next + React Query로 SNS 서비스 만들기
회원가입이 되지 않습니다.
안녕하세요. 회원가입을 하려고 할 때 이상한 점이 몇 가지 있어 질문을 남겨봅니다. 삽질을 하다가 다른 분의 질문을 보고 npm i next-auth@5.0.0-beta.3 이건 적용을 해본 상태입니다. [auth][error] UnknownAction: Cannot parse action at /api/auth/session localhost:3000으로 접속하고 나면 잠시 뒤에 콘솔에 이런 에러가 뜹니다. 회원가입이 되지 않는 문제아이디, 닉네임, 비밀번호, 이미지를 넣고 회원가입을 하면 [auth][error] UnknownAction: Cannot parse action at //callback/credentials .Read more at https://errors.authjs.dev#unknownaction at parseActionAndProviderId (webpack-internal:///(action-browser)/./node_modules/@auth/core/lib/utils/web.js:87:27) at toInternalRequest (webpack-internal:///(action-browser)/./node_modules/@auth/core/lib/utils/web.js:32:40) at Auth (webpack-internal:///(action-browser)/./node_modules/@auth/core/index.js:82:103) at signIn (webpack-internal:///(action-browser)/./node_modules/next-auth/lib/actions.js:55:71) at signIn (webpack-internal:///(action-browser)/./node_modules/next-auth/index.js:82:75) at $$ACTION_0 (webpack-internal:///(action-browser)/./src/app/(beforeLogin)/_lib/signup.ts:53:60) at async /Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:406 at async t0 (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:5773) at async rh (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:23636) at async doRender (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1391:30) at async cacheEntry.responseCache.get.routeKind (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1552:28) at async DevServer.renderToResponseWithComponentsImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1460:28) at async DevServer.renderPageComponent (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1843:24) at async DevServer.renderToResponseImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1881:32) at async DevServer.pipeImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:909:25) at async NextNodeServer.handleCatchallRenderRequest (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/next-server.js:266:17) at async DevServer.handleRequestImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:805:17)TypeError: Invalid URL at new URL (node:internal/url:775:36) at signIn (webpack-internal:///(action-browser)/./node_modules/next-auth/lib/actions.js:61:19) at async $$ACTION_0 (webpack-internal:///(action-browser)/./src/app/(beforeLogin)/_lib/signup.ts:53:9) at async /Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:406 at async t0 (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:38:5773) at async rh (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/compiled/next-server/app-page.runtime.dev.js:39:23636) at async doRender (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1391:30) at async cacheEntry.responseCache.get.routeKind (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1552:28) at async DevServer.renderToResponseWithComponentsImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1460:28) at async DevServer.renderPageComponent (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1843:24) at async DevServer.renderToResponseImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:1881:32) at async DevServer.pipeImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:909:25) at async NextNodeServer.handleCatchallRenderRequest (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/next-server.js:266:17) at async DevServer.handleRequestImpl (/Users/moonhyunjun/Desktop/study/frontend/z.com/node_modules/next/dist/server/base-server.js:805:17) { code: 'ERR_INVALID_URL', input: 'undefined'}이런 에러가 뜨며 회원가입이 되지 않습니다. 그런데 npm i next-auth@5.0.0-beta.3 이걸 적용하기 전에는 1번에서 언급한 에러는 떠 있어도 회원가입은 정상적으로 됐었는데 beta.3 버전을 설치한 이후에는 회원가입이 아예 안 되네요. 회원가입 후 로그아웃 버튼이 보이지 않는 문제이건 회원가입이 정상적으로 됐을 때 궁금했던 부분입니다.회원가입이 되면 /home으로 리다이렉트가 됐었는데 그런데 전 로그아웃 버튼이 보이지가 않더라구요.useSession() 으로 데이터를 받아오지 못 해 null 을 리턴해서 그랬던 것이 맞을까요?
-
해결됨빠르게 git - 핵심만 골라 배우는 Git/Github
git branch 관련 질문
git branch를 나누어도 repository에 들어있는 즉, 커밋이 완료된 파일들만 나뉘는게 맞나요? 테스트 해봤는데 branch를 나누어도 working area랑 stage area는 공통인듯하여 질문드립니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
서버의 쿨타임 계산 방식이 이해가 가지 않습니다.
루키스님 안녕하세요?본 강의 스킬#2에서스킬 쿨타임은 서버, 클라이언트 둘다 계산을 하는게 맞고,클라이언트는 코루틴 등을 사용해 쿨타임을 계산하는건 이해가 됐습니다. 그런데 제가 이해한게 맞다면,서버에서 쿨타임을 계산하기 위해 CheckUpdateFlag()를 재활용 한다고 하셨습니다. (그 안에 State Info.가 포함되어 있으므로) 그런데 그게 서버가 쿨타임을 계산하는 것과 무슨 상관이 있는지 모르겠습니다.쿨타임 계산이라는 것이 시간 계산에 국한된게 아닌, State 검증을 통해 조건을 확인한다는 말씀일까요? 강의 재밌게 듣고 있습니다미리 답변 감사합니다.수강자 올림
-
미해결쉽게 시작하는 쿠버네티스(v1.30) - {{ x86-64, arm64 }}
가상환경 이미지 넣는것도 안되어요
[질문 하기]강의 8.010 쿠보네티스 실습랩을 이미지로 구성하는 방법에서 따라하는 와중에 The virtual machine 'm-k8s-1.25.0(github_SysNet4Admin)' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005). More details may be available in 'C:\Users\USER\VirtualBox VMs\k8s-C1.25.0-ctrd-1.6(github_SysNet4Admin)\m-k8s-1.25.0(github_SysNet4Admin)\Logs\VBoxHardening.log'. 결과 코드:E_FAIL (0X80004005)구성 요소: MachineWrap인터페이스: IMachine {300763af-5d6b-46e6-aa96-273eac15538a} 이렇게 나오면서 전혀 실행이 되지 않습니다. 뭘 어떻게 해야하나요 ...
-
미해결프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
강의자료 부탁드립니다
안녕하세요 오늘부터 입문강좌를 수강하게 되었습니다. 강의자료 부탁드립니다 ceciliakmj@daum.net
-
해결됨프로그래밍 시작하기 : 파이썬 입문 (Inflearn Original)
mac os 에서 test.py 실행 시 콘솔에 에러가 납니다.
안녕하세요 선생님. 파이썬 기본환경설정 MacOS 편에 있는 내용중 test.py에 헬로 파이썬 치는 부분에서 콘솔에 에러가 발생합니다. 구글에서 찾아보니 importlib-metadata 를 설치해야 한다고 하는데, 설치 방법을 잘 모르겠습니다. 조언 좀 부탁드리겠습니다.
-
미해결홍정모의 따라하며 배우는 C++
코드 clone 문의
현재 따라배우는 c++ 수강중인데, 선생님이 작성하신 코드는 어디서 clone 할 수 있나요 ?선생님 github이나 질문 도우미분 github에는 없어서 여쭤봅니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
자동으로 소스코드가 불러와진 것 같은데
인텔리제이 설치 전에 다운로드를 미리 받아놨는데요, 강사님께서 불러오라는 대로 하면 상기 이미지와 같은 화면이 뜹니다그러다보니여기에도 하나만 뜨는데 이대로 강의 진행해도 문제 없나요?
-
미해결AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)
배포용 workflow만들기 deploy.yml 에러 질문입니다
해당 강좌에서 secrets key도 github에정상 등록했으나 github action시 SSH and deploy 동작에서 아래와 같은 에러가 발생합니다 deploy.yml
-
해결됨홍정모의 따라하며 배우는 C언어
2분 13초경 if (new_line)이 있어야 하는 이유
new_line = strchr(line, '\n'); 에서 line 문자열에서 '\n'을 찾으면new_line에 포인터를 대입하고 못 찾으면 NULL 캐릭터를 대입하는데포인터를 대입하고 *new_line = '\0';을 실행시키면 의도대로 되는 것이고널 캐릭터를 대입하고 *new_line '\0'을 실행시켜도 문제는 생기지 않을거 같아서if (new_line) 이라는 문장이 없어도 괜찮을 거 같은데 왜 있는 건가요?널 캐릭터를 대입하고 *new_line '\0'을 실행시키면 문제가 되서 그런건가요?아니면 다른 이유가 있는 건가요?
-
해결됨김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 다운로드
이전에 설치할 때는 다른 프로그램 설치할 때와 똑같았는데 이번에는 파일이 이런 형태로 뜨면서 다운이 되는지 안 되는 건지 모르겠어요첫 강의때 알려주신 홈페이지로 접속해서 그대로 한건데 ,,다운로드 되지 않으면 클릭하라고 돼있는 버튼 눌러도 똑같은 게 뜨네요혹시 해결법 아실까요?
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
처음 requirements.txt 폴더, 문의 드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! (스크린샷이 있으면 더더욱 좋습니다)- 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 말그대로 아나콘다3 깔려있는 폴더에 파일을 넣었는데.계속 에러가 납니다. 어떻게 해야할까요 아나콘다 폴더가아닌 다른 폴더에 넣어야할까요? vs코드로 파이썬 공부하다가 이걸로하려니 어지럽네요ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 메모리 초과가 나는 이유에 대하여 궁금합니다.
3-D Fire! 다음 코드 제출시 메모리 초과가납니다. 혼자 생각해봐도 고민이 해결되지않아 질문 올립니다. 코드:http://boj.kr/7b447402e3e04302bdc04ebb1e2c0105 좋은 강의 감사합니다.
-
미해결실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍
온라인 ide
The terminal process failed to launch: Access was denied to the path containing your executable "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe". Manage and change your permissions to get this to work.방금 vs code를 이용하여 터미널을 이용하려고 했는데 다음과 같은 오류가 나와 터미널 실행이 안되는 것 같습니다 오류를 보니 군대 보안특성상 powershell에서 사용을 막은 것 같습니다.그래서 이런 온라인 ide를 이용하려고 하는데 괜찮을까요?? 가상환경은 설치 만들 수 있는걸로 알고 있습니다.레플릿: https://replit.com/구름: https://ide.goorm.io/?_gl=1*1oawf9g*_ga*ODI1MzYwNDc5LjE3MDc4Mjg2MTg.*_ga_7BMX792Y7W*MTcwNzgyODYxOC4xLjEuMTcwNzgyOTc4Mi42MC4wLjA.&_ga=2.209210519.446475569.1707828619-825360479.1707828618
-
해결됨홍정모의 따라하며 배우는 C언어
strstr 함수 구현 질문
함수들을 직접 구현해보는 게 좋다고 하셔서 sprintf() 함수를 제외하곤 전부 구현하려고 노력해봤는데strstr함수는 어떻게 해야 할지 모르겠어서 구글링을 해봤는데https://blog.naver.com/tipsware/221371715770이런 글을 발견했어요코드를 따라치다 이해가 안되는 부분이 생겼는데while (*p_find_pos != 0 && *p_pos != 0 && *p_pos == *p_find_pos)에서 *p_find_pos != 0와 *p_pos != 0이 둘 다 존재하는 이유가 궁금합니다.strstr함수가 어떤 문자열에 특정 문자열이 포함되어있는지 확인하는 함수인데만약 어떤 문자열과 특정 문자열이 완전히 똑같다면 while의 조건문에서*p_pos == *p_find_pos 만 있으면 while문이 멈추지 않고 무한히 돌게 되니널 캐릭터를 만나면 멈출 수 있게 *p_find_pos != 0나 *p_pos != 0 둘 중에 하나는 있어야 한다는 건 알겠는데왜 둘 다 조건문에 있어야 하는지 잘 모르겠습니다.강의 내용이 아니라 질문하기가 좀 그랬지만 이런 질문글을 올릴만한 곳을 찾지 못해 여기에 올립니다. 답변 항상 감사합니다.
-
해결됨Airflow 마스터 클래스
docker-compose up 이후 웹서버가 뜨지 않습니다
안녕하세요 도커&에어플로우 설치 부분 강사님 강의보며 실습하던 중에 크롬창에서 웹서버 접속이 되지 않아 문의드립니다.환경은 mac os 입니다.sudo docker-compose up airflow-initsudo docker-compose up 명령어 사용해서 진행했습니다.로그 중에 permission denied가 나는 부분이 있는데 이 부분 때문일까요?airflow-init-1 | chown: changing ownership of '/sources/logs': Permission denied airflow-init-1 | chown: changing ownership of '/sources/dags': Permission denied airflow-init-1 | chown: changing ownership of '/sources/plugins': Permission denied 로그 전문 공유드립니다.(airflow-dockercompose) jeremy 😹 ~/dev/airflow-dockercompose sudo docker-compose up airflow-init Password: [+] Running 44/3 ✔ postgres 13 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 72.8s ✔ redis 6 layers [⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 84.6s ✔ airflow-init 22 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 68.5s [+] Running 3/3 ✔ Container airflow-dockercompose-redis-1 Created 0.3s ✔ Container airflow-dockercompose-postgres-1 Created 0.3s ✔ Container airflow-dockercompose-airflow-init-1 Created 0.0s Attaching to airflow-init-1 airflow-init-1 | chown: changing ownership of '/sources/logs': Permission denied airflow-init-1 | chown: changing ownership of '/sources/dags': Permission denied airflow-init-1 | chown: changing ownership of '/sources/plugins': Permission denied airflow-init-1 | The container is run as root user. For security, consider using a regular user account. airflow-init-1 | airflow-init-1 | DB: postgresql+psycopg2://airflow:***@postgres/airflow airflow-init-1 | Performing upgrade to the metadata database postgresql+psycopg2://airflow:***@postgres/airflow airflow-init-1 | [2024-02-13T12:36:11.330+0000] {migration.py:216} INFO - Context impl PostgresqlImpl. airflow-init-1 | [2024-02-13T12:36:11.332+0000] {migration.py:219} INFO - Will assume transactional DDL. airflow-init-1 | [2024-02-13T12:36:11.344+0000] {db.py:1616} INFO - Creating tables airflow-init-1 | INFO [alembic.runtime.migration] Context impl PostgresqlImpl. airflow-init-1 | INFO [alembic.runtime.migration] Will assume transactional DDL. airflow-init-1 | OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k airflow-init-1 | Database migrating done! airflow-init-1 | /home/airflow/.local/lib/python3.8/site-packages/flask_limiter/extension.py:336 UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. airflow-init-1 | OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k airflow-init-1 | airflow already exist in the db airflow-init-1 | 2.8.1 airflow-init-1 exited with code 0 (airflow-dockercompose) jeremy 😹 ~/dev/airflow-dockercompose sudo docker-compose up [+] Running 7/7 ✔ Container airflow-dockercompose-postgres-1 Running 0.0s ✔ Container airflow-dockercompose-redis-1 Running 0.0s ✔ Container airflow-dockercompose-airflow-init-1 Created 0.0s ✔ Container airflow-dockercompose-airflow-worker-1 Created 0.1s ✔ Container airflow-dockercompose-airflow-scheduler-1 Created 0.1s ✔ Container airflow-dockercompose-airflow-triggerer-1 Created 0.1s ✔ Container airflow-dockercompose-airflow-webserver-1 Created 0.1s Attaching to airflow-init-1, airflow-scheduler-1, airflow-triggerer-1, airflow-webserver-1, airflow-worker-1, postgres-1, redis-1 airflow-init-1 | chown: changing ownership of '/sources/logs': Permission denied airflow-init-1 | chown: changing ownership of '/sources/dags': Permission denied airflow-init-1 | chown: changing ownership of '/sources/plugins': Permission denied airflow-init-1 | The container is run as root user. For security, consider using a regular user account. airflow-init-1 | airflow-init-1 | DB: postgresql+psycopg2://airflow:***@postgres/airflow airflow-init-1 | Performing upgrade to the metadata database postgresql+psycopg2://airflow:***@postgres/airflow airflow-init-1 | [2024-02-13T12:37:00.495+0000] {migration.py:216} INFO - Context impl PostgresqlImpl. airflow-init-1 | [2024-02-13T12:37:00.496+0000] {migration.py:219} INFO - Will assume transactional DDL. airflow-init-1 | [2024-02-13T12:37:00.509+0000] {db.py:1616} INFO - Creating tables airflow-init-1 | INFO [alembic.runtime.migration] Context impl PostgresqlImpl. airflow-init-1 | INFO [alembic.runtime.migration] Will assume transactional DDL. airflow-init-1 | OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k airflow-init-1 | Database migrating done! airflow-init-1 | /home/airflow/.local/lib/python3.8/site-packages/flask_limiter/extension.py:336 UserWarning: Using the in-memory storage for tracking rate limits as no storage was explicitly specified. This is not recommended for production use. See: https://flask-limiter.readthedocs.io#configuring-a-storage-backend for documentation about configuring the storage backend. airflow-init-1 | OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k airflow-init-1 | airflow already exist in the db airflow-init-1 | 2.8.1 airflow-init-1 exited with code 0 airflow-triggerer-1 | airflow-worker-1 | airflow-webserver-1 | airflow-scheduler-1 | airflow-webserver-1 | [2024-02-13T12:37:28.080+0000] {configuration.py:2065} INFO - Creating new FAB webserver config file in: /opt/airflow/webserver_config.py airflow-triggerer-1 | ____________ _____________ airflow-triggerer-1 | ____ |__( )_________ __/__ /________ __ airflow-triggerer-1 | ____ /| |_ /__ ___/_ /_ __ /_ __ \_ | /| / / airflow-triggerer-1 | ___ ___ | / _ / _ __/ _ / / /_/ /_ |/ |/ / airflow-triggerer-1 | _/_/ |_/_/ /_/ /_/ /_/ \____/____/|__/
-
미해결CSS Flex와 Grid 제대로 익히기
강의에 나오는 html 자동으로 만들어주는 편집기에 대해 알 수 있을까요?
css 셀렉터 처럼 쓰면 예를 들어ul.menu하면 자동으로 html 완성되는 기능입니다.html 작성이 매우 편한거 같아서요!가르쳐주시면 감사하겠습니다.