inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

172만명의 커뮤니티!! 함께 토론해봐요.

macOS에서 docker 설치

미해결

Airflow 마스터 클래스

안녕하세요 mac에서 docker 설치하려고 하는데 apt-get command not found가 뜹니다. 찾아보니 apt 명령어는 macOS에서 동작 안한다고 하는데 어떻게 진행하면 될까요?

  • python
  • airflow
wonseok.choi 댓글 2 좋아요 0 조회수 124

커리큘럼문의

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

언어과목에서 다 맞는 목표가 아니면 커리큘럼 중에 섹션 7, 10, 12는 안봐도 될까요?

  • python
  • java
  • c
  • 정보처리기사
댓글 1 좋아요 0 조회수 55

검색기능 질문

해결됨

남박사의 파이썬으로 실전 웹사이트 만들기

from flask import Flask from flask import request from flask import render_template from flask_pymongo import PyMongo from datetime import datetime from bson.objectid import ObjectId from flask import abort from flask import redirect from flask import url_for import time import math app = Flask(__name__) app.config["MONGO_URI"] = "mongodb://localhost:27017/myweb" mongo = PyMongo(app) @app.template_filter("formatdatetime") def format_datetime(value): if value is None: return "" now_timestamp = time.time() offset = datetime.fromtimestamp(now_timestamp) - datetime.utcfromtimestamp(now_timestamp) value = datetime.fromtimestamp((int(value) / 1000)) + offset return value.strftime('%Y-%m-%d %H:%M:%S') @app.route("/list") def lists(): #페이지 값(값이 없는 경우 기본값은 1) page = request.args.get("page", 1, type=int) #한페이지당 몇개의 게시물을 출력할지 limit = request.args.get("limit", 7, type = int) search = request.args.get("search", -1, type=int) keyword = request.args.get("keyword", type=str) #최종적으로 완성된 쿼리를 만들 변수 query = {} #검색어 상태를 추가할 리스트 변수 search_list = [] if search == 0: search_list.append({"title":{"$regex": keyword}}) elif search ==1: search_list.append({"contents":{"$regex": keyword}}) elif search ==2: search_list.append({"title":{"$regex": keyword}}) search_list.append({"contents":{"$regex": keyword}}) elif search == 3: search_list.append({"name":{"$regex": keyword}}) #검색 대상이 한개라도 존재할 경우 query 변수에 $or 리스트를 쿼리 합니다. if len(search_list) > 0: query = {"$or": search_list} print(query) board = mongo.db.board datas = board.find(query).skip((page - 1)*limit).limit(limit) #게시물의 총 갯수 tot_count = board.find(query).count() #마지막 페이지의 수를 구합니다. last_page_num = math.ceil(tot_count / limit) #페이지 블럭을 5개씩 표기 block_size = 5 #현재 블럭의 위치 block_num=int((page-1)/ block_size) #블럭의 시작 위치 block_start = int((block_size * block_num) +1) #블럭의 끝 위치 block_last = math.ceil(block_start +(block_size - 1)) return render_template( "list.html", datas = datas, limit=limit, page=page, block_start=block_start, block_last=block_last, last_page_num=last_page_num, search=search, keyword=keyword) @app.route("/view/<idx>") def board_view(idx): # idx = request.args.get("idx") if idx is not None: board = mongo.db.board data = board.find_one({"_id": ObjectId(idx)}) if data is not None: result = { "id" : data.get("_id"), "name" : data.get("name"), "title" : data.get("title"), "contents" : data.get("contents"), "pubdate" : data.get("pubdate"), "view" : data.get("view"), } return render_template("view.html", result=result) return abort(400) @app.route("/wirte", methods = ["GET", "POST"]) def board_wirte(): if request.method == "POST": name = request.form.get("name") title = request.form.get("title") contents = request.form.get("contents") print(name, title, contents) current_utc_time = round(datetime.utcnow().timestamp() * 1000) board = mongo.db.board post = { "name" : name, "title" : title, "contents" : contents, "pubdate" : current_utc_time, "view" : 0, } x = board.insert_one(post) print(x.inserted_id) return redirect(url_for("board_view", idx=x.inserted_id)) else: return render_template("wirte.html") if __name__ == "__main__": app.run(debug = True) <script> function search() { var v_search = document.getElementById("search").value; var v_keyword = document.getElementById("keyword").value; if(v_search == "" || v_keyword == ""){ return false; } else{ self.location.href="{{url_for('lists')}}?search=" + v_search + "&keyword=" + v_keyword; } } </script> {% if datas.count() > 0%} <table> <thead> <tr> <td>번호</td> <td>제목</td> <td>이름</td> <td>날짜</td> <td>조회수</td> </tr> </thead> <tbody> <!--반복되는 구간--> {%for data in datas%} <tr> <td>{{loop.index + (page - 1) * limit}}</td> <td><a href="{{url_for('board_view', idx=data._id, page=page, search=search, keyword=keyword)}}">{{data.title}}</a></td> <td>{{data.name}}</td> <td>{{data.pubdate | formatdatetime}}</td> <td>{{data.view}}</td> </tr> <!--반복되는 구간 끝--> {%endfor%} </tbody> </table> {%if block_start -1 > 0%} <a href="{{url_for('lists', page=block_start - 1, search=search, keyword=keyword)}}">[이전]</a> {%endif%} {%for i in range(block_start, block_last + 1)%} {% if i > last_page_num%} {%else%} {%if i == page%} <b>{{i}}</b> {%else%} <a href="{{url_for('lists', page=i, search=search, keyword=keyword)}}">{{i}}</a> {%endif%} {%endif%} {%endfor%} {%if block_last < last_page_num%} <a href="{{url_for('lists', page=block_last+ 1, search=search, keyword=keyword)}}">[다음]</a> {%endif%} <select name="search" id="search"> <option value="">검색대상</option> <option value="0">제목</option> <option value="1">내용</option> <option value="2">제목 + 내용</option> <option value="3">작성자</option> </select> <input type="text" name="keyword" id="keyword"> <input type="button" value="검색" onclick="search()"> {% else %} <h3>데이터가 없습니다.</h3> {%endif%} 분명 똑같이 했는데 왜 검색이 안되고 무반응인지 잘 모르겠어요. 뭐가 문제일까요?

  • python
양성현 댓글 2 좋아요 0 조회수 97

데브옵스로 전향하고자하는 백엔드 개발자인데..

미해결

비전공자도 이해할 수 있는 Docker 입문/실전

1년차 개발자이고 도커인강 지금까지 듣는거는 다 이해가갑니다.. 다만 현실적으로 궁금한게 있어요 JSCODE님 인강중에 도커, 쿠버네티스, CI/CD만 들어도 전향이 가능한건지 그외에 어떤게 더 필요한건지 그리고 저같은 저연차도 전향 가능한건지도 궁금합니다.

  • docker
  • docker-compose
  • docker-volume
  • docker-image
  • container
  • ecr
sh hhyeogi365 댓글 2 좋아요 0 조회수 281

code deploy 배포입니다.

미해결

비전공자도 이해할 수 있는 CI/CD 입문·실전

배포까지 잘 끝났고, s3파일 업로드로 잘됬습니다. 여기도 문제없는것같고요... 그런데...java구동이 안되는것 같습니다.. 이유가 뭘까요??

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
뒤안길 댓글 3 좋아요 0 조회수 135

Context 분리하기

해결됨

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

76. 11.3) Context 분리하기 useMemo 를 이용해서 onCreate, onUpdate, onDelete 를 한번만 생성이 되게 한거는 이해 하는데요, 그럼 이 경우에 기존에 사용했던 useCallback 은 삭제 해도 무방 한가요? const onCreate = (content) => { dispatchFunc({ type : "CREATE", data : { id : idRef.current++, isDone : false, content: content, date : new Date().getTime(), }, }); };

  • javascript
  • react
  • node.js
반승우 댓글 2 좋아요 0 조회수 106

디스코드 채널 문의

미해결

한 입 크기로 잘라 먹는 리액트(React.js) : 기초부터 실전까지

안녕하세요, 강사 및 강의 소개 영상에서 디스코드 채널을 운영하고 계신다고 했는데 관련 링크를 어디서 확인해야 할지 모르겠어서 문의 드립니다!

  • javascript
  • react
  • node.js
산독기 댓글 1 좋아요 0 조회수 60

템플릿 변수에 대한 오류

미해결

Airflow 마스터 클래스

안녕하세요 CLI로 Trigger 기능을 수행하는 부분 강의를 듣던 중에, Web UI에서 Trigger를 누르면 정상적으로 수행 되지만, 쉘 스크립트 커맨드로 airflow dags trigger <DAG 이름>이라는 명령어를 실행했을 때 아래와 같은 실패 로그가 나타나서 문의드립니다. 혹시 커맨드라인으로 실행하면 {{data_interval_end}} 와 같은 템플릿을 적용할 수 없나요?

  • python
  • 데이터-엔지니어링
  • airflow
덕인떡집 댓글 2 좋아요 0 조회수 77

b374K 세션 끊김

미해결

도커 컨테이너 인프라 이해와 해킹/보안

안녕하세요 B374K-V2.8 에디터 수정 후 비밀번호 입력하면 정상적으로 로그인되지만 후에 작업을 진행하게 되면 세션이 끊겨 다시 패스워드 입력 화면으로 돌아오게 됩니다. 이후 실습(리버스쉘)을 진행하기 힘든점이 있는데 어떻게 해결할 방법이 있을가요??

  • 모의해킹
  • 네트워크
  • docker
  • 보안-교육
hahwa 댓글 1 좋아요 0 조회수 67

ConnectionRefusedError: [WinError 10061]

해결됨

실전! Django 입문 [최신 5.2 버전]

ConnectionRefusedError: [WinError 10061] Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte 에러가 발생했는데 찾아보니 EMAIL_USE_TLS = False EMAIL_USE_SSL = True EMAIL_PORT = 465 위의 코드로도 시도를 해보라해서 해봤지만 계속 동일한 에러가 발생했습니다. 강의에서 사용된 운영체제는 맥 os이고 저는 윈도우 환경에서 실행했는데 윈도우환경에서 자주 발생하는 에러라고 하는데 해결방법을 찾기가 어려워서 문의남깁니다.

  • python
  • django
  • aws
  • rest-api
  • drf
M2CL 댓글 2 좋아요 0 조회수 147

CSRF_COOKIE_NAME에러

미해결

실전! Django 입문 [최신 5.2 버전]

settings.CSRF_COOKIE_NAME이라는게 존재하지 않는다고 나와요

  • python
  • django
  • aws
  • rest-api
  • drf
개브라운 댓글 2 좋아요 0 조회수 110

Router 궁금증

미해결

타입스크립트로 배우는 리액트(React.js) : 기초부터 최신 기술까지 완벽하게

<BrowserRouter> <Routes> <Route path="home" element={<AdminHome />} /> <Route path="post" element={<AdminPost />} /> <Route path="update/:id" element={<AdminUpdate />} /> </Route> </BrowserRouter> Q1. 저는 항상 app.js 위에 코드와 같이 작성하는 편인데 강의에서는 주로 CreateBrowserRouter를 따로 이용하시는데 특별한 이유가 있나요? Q2. 간혹 프로젝트 중간중간 Header나 Footer 컴포넌트를 몇몇 페이지에서는 안보이거나 다른 header, footer 컴포넌트가 보이게끔 하고 싶은데 이런 경우 주로 어떻게 하실지 생각(?) 아이디어(?) 가 궁금합니다. 저는 안보이게 하고 싶은 페이지를 url로 구분하는 편인데 다른 좋은 방법이 있을까요?

  • react
  • react-router
  • redux-toolkit
  • zustand
  • react.js
5647kr 댓글 2 좋아요 0 조회수 65

제본

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

제본을하려고 합니다! 총 매수가 어느정도 나오나요??

  • python
  • java
  • c
  • 정보처리기사
boll1235 댓글 2 좋아요 0 조회수 131

18강에서 Blog-Image-Maker 연결시에 에러가 납니다.

해결됨

수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화

JSON parameter needs to be valid JSON 위와 같은 에러가 발생하여 이미지 생성에 실패합니다. JSON 내용은 아래와 같습니다. { "image_prompt": "A clear and inviting workspace showing a modern laptop displaying a simple Python code editor with 'print(\"Hello, Python!\")' and a friendly terminal window ready for input. Bright, high-definition, realistic style.", "image_alt": "파이썬 첫 코드 실행 환경을 보여주는 현대적인 노트북 작업 공간" } Blog-Image-Maker에서 같은 image_prompt로 실행시에는 문제 없이 진행되고 있습니다.

  • docker
  • n8n
  • 인공지능(ai)
  • 프롬프트엔지니어링
  • ai-활용-(ax)
한재훈 댓글 2 좋아요 0 조회수 82

피그마 수업자료

해결됨

[VOD] 6주 완성! 개발 실무를 위한 고농축 바이브코딩 (Cursor AI, Figma)

피그마 소스파일을 복사해서 붙여 넣어도 그림은 안나오는데 어떻게 하는지 알려주세요

  • react
  • next.js
  • cursor
  • 프롬프트엔지니어링
  • 바이브코딩
windzero 댓글 2 좋아요 1 조회수 107

사용자 삭제가 안되는 이유

미해결

비전공자도 이해할 수 있는 CI/CD 입문·실전

그림 보시면 사용자 삭제 버튼이 활성화 안되는 이유는 뭘까요? ?하위 정책도 없습니다.

  • aws
  • docker
  • ci/cd
  • github-actions
  • aws-code-deploy
  • infrastructure
  • aws-ec2
뒤안길 댓글 2 좋아요 0 조회수 127

google.py

해결됨

남박사의 파이썬으로 실전 웹사이트 만들기

강사님께서 알려주신 from googlesearch import search query = "파이썬 강좌" for r in search(query, num_results=10, advanced=True): title = r.title contents = r.description url = r.url print(f"Title: {title}") print(f"Contents: {contents}") print(f"URL: {url}") print("-" * 40) 요 코드대로 해보았으나 출력이 안됩니다. 뭐가문제일까요?? ''' 게시판 리스트 테스트를 위한 Google 검색어 크롤링 프로그램 설치 해야하는 라이브러리 pip install --upgrade BeautifulSoup4 requests lxml pymongo googlesearch-python ''' import requests from bs4 import BeautifulSoup from pymongo import MongoClient from datetime import datetime import random from googlesearch import search # 몽고DB client = MongoClient(host="localhost", port=27017) # myweb 데이터베이스 db = client.myweb # board 컬렉션 col = db.board # 구글 검색시 헤더값을 설저하지 않으면 브라우저에서 보이는것과 다른 결과가 나옴 header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"} # 검색 결과 30개 수집 query = "파이썬 강좌" for r in search(query, num_results=30, advanced=True): # 구글 검색 URL, 검색어는 파이썬 # 게시물 작성시간 기록을 위해 현재시간 저장 (utc 타임) current_utc_time = round(datetime.utcnow().timestamp() * 1000) try: title = r.title contents = r.description # 몽고DB에 저장 # 작성자와 writer_id 설정 필요 col.insert_one({ "name": "테스터", "writer_id": "", "title": title, "contents": contents, "view": random.randrange(30, 777), "pubdate": current_utc_time }) except: pass 이것도 수업자료에 있었던 코드입니다. 이대로 해도 진행이 안되네요..

  • python
양성현 댓글 2 좋아요 0 조회수 90

.

미해결

React Native with Expo: 제로초에게 제대로 배우기

.

  • react
  • react-native
  • 하이브리드-앱
  • typescript
  • expo
이영훈 댓글 2 좋아요 0 조회수 138

20강질문입니다.

해결됨

수익형 AI Agent n8n 전문가 강의, 블로그·쇼츠 자동화

안녕하세요! 20강에서 막혀 질문드립니다. nginx-proxy manager에서 Hosts 에 들어가 wordpress-wordpress-1 (포르테이너에서복사) 하고 인증서 후 새로고침했는데 502 Bad Gateway openresty 라고 뜨더라구요... 그래서 다시 해보려고 nginx-proxy manager 로 들어가려고하는데 사이트에 보안 연결할 수 없음 aiproject.kr에서 잘못된 응답을 전송했습니다. ERR_SSL_PROTOCOL_ERROR 라고 뜨며 현재는 포르테이너까지 접속이 안됩니다 ㅠㅠ 이럴땐 어떻게 해야할까요?

  • docker
  • n8n
  • 인공지능(ai)
  • 프롬프트엔지니어링
  • ai-활용-(ax)
재유니즘 댓글 2 좋아요 0 조회수 153

1:03:00 node

해결됨

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

func 매서드에서 while문 마지막 실행문인 node = node -> next -> next; 가 이해가 잘 안되었는데요. 해당 실행문 위에 있는 다른 실행문은 node->value 또는 node->next를 통해서 n1메모리에 참조해서 그 값을 가르키기 때문에 =을 통해 값변화가 일어난다. 하지만 node = node -> next -> next; 의 경우에 node는 func메서드가 가지고 있는 지역변수이기 때문에 main에서부터 참조받은 n1 변수를 변경하지 않는다. 이게 맞을까요? 저말고도 다른분들도 여럿 같은 질문을 했는데 정확한 답변이 없어서 제가 이해한게 맞는지 올려봅니다.. 그럼에도 확실하게 개념이 잡히지 않네요. node -> value 또는 node -> next조차도 func메서드 안에 있는 지역변수의 요소들인 건 매한가지 아닌가요...ㅠㅠ node도 메모리주소.. node->next->next도 메모리주소인데.. 왜 지역변수로 얕은복사(?)가 되는 것인지..ㅠㅠ

  • python
  • java
  • c
  • 정보처리기사
민혁 댓글 2 좋아요 0 조회수 92

인기 태그

인프런 TOP Writers

주간 인기글