묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
구매버튼 클릭 시 soldout 구현 부분(상품 블러 처리)
상품 상세 페이지에서 구매 버튼을 누르게 되면,해당 상품의 soldout값이 1로 바뀌게고 적용 완료.그 이후 자동으로 구매 버튼이 회색으로 다시 바뀌겠끔도 구현 완료 그 이후 뒷 페이지로 돌아갔을 때, 상품 목록에서 blur처리 되는 기능이 구현되지 않아 이 방법이 궁금합니다.뒤로가기 버튼을 눌렀을 때는 해당 페이지가 새로 불러와지는 로직이 아닌가요? // Main페이지 코드 import { StatusBar } from "expo-status-bar"; import { StyleSheet, Text, View, Image, ScrollView, Dimensions, TouchableOpacity, Alert } from "react-native"; import React, {useEffect, useState} from "react"; import axios from "axios"; import dayjs from "dayjs" import relativeTime from "dayjs/plugin/relativeTime" import "dayjs/locale/ko" import Carousel from "react-native-reanimated-carousel" import { API_URL } from "../config/constants"; import AvatarImage from "../assets/icons/avatar.png"; dayjs.extend(relativeTime); dayjs.locale("ko"); export default function MainScreen(props) { const [products, setProducts] = useState([]); const [banners, setBanners] = useState([]); const getProduct = () => { axios .get(`${API_URL}/products`) .then((result) => { console.log(result); setProducts(result.data.products) }) .catch((error) => { console.error(error); }); } useEffect(() => { getProduct(); axios .get(`${API_URL}/banners`) .then((result) => { setBanners(result.data.banners); }) .catch((error) => { console.error(error); }) }, []); return ( <View style={styles.container}> <ScrollView> <Carousel data={banners} width={Dimensions.get("window").width} height={200} autoPlay={true} sliderWidth={Dimensions.get("window").width} itemWidth={Dimensions.get("window").width} itemHeight={200} renderItem={(obj) => { return ( <TouchableOpacity onPress={() => { Alert.alert("배너 클릭"); }} > <Image style={styles.bannerImage} source={{ uri: `${API_URL}/${obj.item.imageUrl}`}} resizeMode="contain" /> </TouchableOpacity> ); }} /> <Text style={styles.Headline}>판매되는 상품들</Text> <View sytle={styles.productList}> {products.map((product, index) => { return ( <TouchableOpacity onPress={() => { props.navigation.navigate("Product", { id: product.id }) }}> <View style={styles.productCard}> {product.soldout === 1 && ( <View style={styles.productBlur} /> )} <View> <Image style={styles.productImage} source={{ uri: `${API_URL}/${product.imageUrl}`, }} resizeMode={"contain"} /> </View> <View style={styles.productContents}> <Text sytle={styles.productName}> {product.name} </Text> <Text sytle={styles.productPrice}> {product.price}원 </Text> <View style={styles.productFooter}> <View style={styles.productSeller}> <Image style={styles.productAvatar} source={AvatarImage} /> <Text style={styles.productSellerName} > {product.seller} </Text> </View> <Text style={styles.productDate}> {dayjs(product.createdAt).fromNow()} </Text> </View> </View> </View> </TouchableOpacity> ); })} </View> </ScrollView> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff", padding: 32, }, productCard: { width: 320, borderColor: "rgb(230,230,230)", borderWidth: 1, borderRadius: 16, backgroundColor: "white", marginBottom: 8, }, productImage: { width: "100%", height: 210, }, productContents: { padding: 8, }, productSeller: { flexDirection: "row", alignItems: "center", }, productAvatar: { width: 24, height: 24, }, productFooter: { flexDirection: "row", justifyContent: "space-between", alignItems: "center", marginTop: 12, }, productName: { fontSize: 16, }, productPrice: { fontSize: 18, fontWeight: "600", marginTop: 8, }, productSellerName: { fontSize: 16, }, productDate: { fontSize: 16, }, productList: { alignItems: "center", }, Headline: { fontSize: 24, fontWeight: "800", marginBottom: 24, }, productBlur: { position: "absolute", top: 0, bottom: 0, left: 0, right: 0, backgroundColor : "#ffffffa6", zIndex: 999 }, bannerImage: { width: "90%", height: 200, }, safeAreaView: { flex: 1, backgroundColor: "#fff" } }); // Product 화면 코드 import axios from "axios"; import React, { useEffect, useState } from "react" import {Image, ActivityIndicator, StyleSheet, View, Text, TouchableOpacity, Alert, ScrollView} from "react-native" import { API_URL } from "../config/constants"; import Avatar from "../assets/icons/avatar.png" import dayjs from "dayjs" export default function ProductScreen(props){ const {id} = props.route.params; const [product, setProduct] = useState(null); const getProduct = () => { axios.get(`${API_URL}/products/${id}`) .then((result) => { console.log("product result : ", result.data); setProduct(result.data.product); }) .catch((error) => { console.error(error); }) } useEffect(() => { getProduct(); }, []); const onPressButton = () => { if(product.soldout !== 1) { axios.post(`${API_URL}/purchase/${id}`) .then((result) => { Alert.alert("구매가 완료되었습니다."); getProduct(); }) .catch((error) => { Alert.alert(`에러가 발생했습니다. ${error.message}`); }) } } if(!product){ return <ActivityIndicator /> } return ( <View style={styles.container}> <ScrollView> <View> <Image style={styles.productImage} source={{uri: `${API_URL}/${product.imageUrl}`}} resizeMode="contain" /> </View> <View style={styles.productSection}> <View style={styles.productSeller}> <Image style={styles.avatarImage} source={Avatar} /> <Text>{product.seller}</Text> </View> <View style={styles.divider} /> <View> <Text style={styles.productName}>{product.name}</Text> <Text style={styles.productPrice}>{product.price} 원</Text> <Text style={styles.productDate}>{dayjs(product.createAt).format("YYYY년 MM월 DD일")}</Text> <Text style={styles.productDescription}>{product.description}</Text> </View> </View> </ScrollView> <TouchableOpacity onPress={onPressButton}> <View style={product.soldout ===1 ? styles.purchaseDisabled : styles.purchaseButton}> <Text style={styles.purchaseText}>{product.soldout === 1 ? "구매완료" : "구매하기"}</Text> </View> </TouchableOpacity> </View> ) } const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: "#fff" }, productImage: { width: "100%", height: 300 }, productSeller: { flexDirection: "row", alignItems: "center" }, avatarImage: { width: 50, height: 50, }, productSection: { padding: 16 }, divider: { backgroundColor: "#e9ecef", height: 1, marginVertical: 16 }, productName: { fontSize: 20, fontWeight: "400" }, productPrice: { fontSize: 18, fontWeight: "700", marginTop: 8 }, productDate: { fontSize:14, marginTop: 4, color: "rgb(204,204,204)" }, productDescription: { marginTop : 16, fontSize: 17 }, purchaseButton: { position: "absolute", bottom: 0, left: 0, right: 0, height: 60, backgroundColor: "rgb(255,80,88)", alignItems : "center", justifyContent: "center" }, purchaseText : { color: "white", fontSize: 20, }, purchaseDisabled: { position: "absolute", bottom: 0, left: 0, right: 0, height: 60, backgroundColor: "gray", alignItems : "center", justifyContent: "center" } })
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
수업 진행중 이 그랩마켓 상세 페이지 만들던중 농구공 이미지
안녕하세요.그랩마켓 상세페이지 만들기 중에서 농구공 이미지 하고postman에서 만든 products/1 내용이 안나오기에 MOCK SEVER를 다시 생성해서 .GET에 복사 붙여 넣기를 했습니다.그랬더니 에러가 나면서 아무것도 안보이게 됐습니다.그래서 lean-all-with -java 페이지로 가서 INDEX.HTML로 에 있는 axios.get ( "https://831a8e94-7b7a-4354-9e1a-eb37becbc7ad.mock.pstmn.io/products"에 가서 보니 예전에 만들은 것들은 그대로 더군요. 그래서 이것도 지우고 새로 만든 mock주소를 넣었더니 이것도 에러가 납니디.원래 mock서버 새로 만들어서 붙여 놓으면 안되나요? 몇일동안 매달려도 안되네요.도와주세요.선생님
-
해결됨[개정판] 딥러닝 컴퓨터 비전 완벽 가이드
Oxford Dataset RCNN Inerence 질문
저는 mmdetection oxford Dataset의 품종에 대한 inference를 수행하였습니다.의문점이 너무 많이 겹치는 bounding box가 있다는 것입니다. 제가 첨부한 2번 4번 7번 사진의 경우 하나의 개사진에 매우 겹치는 2가지 bounding box가 있음을 알 수 있습니다. 제가 알기로는 RPN 네트워크에서 마지막에 NMS를 수행해 Confidence Score가 높은 순으로 정렬하고 Confidence Score가 가장 높은 bbox와 IOU가 큰 박스는 삭제하는 걸로 알고 있습니다만 제가 잘못 알고 있는 건지 여쭙고 싶습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
산탄대르 실습질문
산탄데르 은행 고객 만족 예측 실습-1에서ID 컬럼을 드롭하는데 특별한 이유가 있으신가요. 식별자라고 해서 삭제한다고 영상에서 말씀하셨는데 이유가 궁급합니다.!
-
미해결딥러닝 CNN 완벽 가이드 - TFKeras 버전
Upstream Gradient, Local Gradient의 의미를 제대로 이해했는지 몰라서요.
안녕하세요. Upstream Gradient와 Local Gradient를 제대로 이해했는지 몰라 질문드립니다.세터1의 가중치를 업데이트하려고 할 때Local Gradient는 구하고자 하는 가중치(세터1)가 직접 곱해지는 레이어의 gradient를 가리키는 것이고Upstream Gradient는 세터1이 직접 곱해지는 레이어 이전까지(역방항기준) 모든 레이어의 gradient를 가리키는 것이 맞나요? 상세하고 명쾌한 강의 감사드립니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
windows에서 발생하는 경로 \ 관련 문의드립니다.
"상품 업로드 기능 구현-2" 강의 중 잘 따라가다가 후반부에서 경로 문제로 인해 문의드립니다.업로드 페이지에서 업로드는 잘 되나, 업로드 후 메인 페이지에서 등록된 이미지가 나오지 않아 확인해보니 "/" 대신에 콘솔에는 캡처1과 같이 "\\" 가 나오고 DB Browser에서는 캡처2와 같이 "\"가 나옵니다. : 캡처1 입니다. : 캡처2 입니다.원인을 찾아보니 windows에서 파일 경로를 다룰 때 "\\"로 하기 때문에 생기는 문제라고 하는데요...어떻게 해결하면 좋을지 모르겠습니다.해결방법을 알려주시면 감사하겠습니다.
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
군집화 실습 - 고객 세그멘테이션
파일을 받았는데 안열리는데 왜 그럴까요..? ㅠㅠ책으로는 군집화에서 소챕터 06입니다 ㅠㅠ
-
해결됨딥러닝 CNN 완벽 가이드 - TFKeras 버전
Sigmoid 함수의 특성
안녕하세요 교수님!섹션 2의 딥러닝 모델에서 활성화 함수의 적용 강의에서 의문점이 생겨서 작성합니다.Sigmoid 함수의 특성에서 평균값이 0.5, 즉 0이 아니라서 Gradient Update가 지그재그 형태로 발생한다고 하셨는데.. 이 부분이 이해가 잘 되지 않습니다.입력값의 크기가 양으로 크거나 음으로 클 때 기울기가 0에 가까워서 Gradient Update가 적어진다는 것은 알겠습니다. 하지만 입력값을 넣었을 때의 시그모이드 출력값의 평균과 Gradient Update가 어떤 관계인지가 이해가 되지 않습니다ㅜ시그모이드를 미분한 함수가 시그모이드 출력값을 입력값으로 넣는게 아닌데... 왜 지그재그로 발생하는 것인가요.....?감사합니다!
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
import { Switch, Route } from "react-router-dom"; 모듈을 찾을수 없다고 뜹니다.
선생님 수업 따라서 열심히 따라 왔는데 여기서 막히네요.해결 좀 부탁드립니다.제가 나이가 53인데 사다리차 운전 하면서 자영업 하는데 다른길좀 가보려고 공부하는 중이거든요. 다른 분들한테는 쉬운걸 텐데 저한테는 어렵네요.구글링 해보고 네이버 도 찾아봣는데 찾을수가 없네요.이걸 해결해야 앞으로 나갈수 있을것 같은데 도와주세요.감사합니다
-
미해결실리콘밸리 엔지니어에게 배우는 파이썬 아파치 스파크
colab에 하둡이 설치되어 있는 걸까요?
Colab에 pyspark가 미리 설치되어 있지는 않지만!pip install pyspark명령으로 설치 후 사용 가능하더라구요.Colab에 자바와 하둡, 스파크가 이미 설치되어 있는 것으로 생각해도 될까요? 제가 강의로 이해하기로는하둡에 있는 일부 기능- 맵리듀스를 스파크가 대체할 수 있는데,기존 하둡과 호환성을 위해 다른 부분은 하둡 그대로 두고 그 부분만 스파크로 대체해야 하고그래서 하둡도 필요하고 스파크는 자바로 되어 있으니 자바도 필요하고,스파크 설치 후 이것을 파이썬으로 래핑한 pyspark를 실행하는 것으로그렇게 생각하고 있는데 이게 맞는지 모르겠습니다. SparkContext가 생성되면서 내부적으로 스파크 어플리케이션이 실행되나요? 아니면 데몬같은 것이 실행중인 상태인 걸까요? 너무 모른 채로 질문드려서 죄송합니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
main/index.js과 product/index.js에서 setProduct 관련 문의드립니다.
main/index.js 에서는setProducts(result.data.products); 로 써야하고product/index.js 에서는setProducts(result.data); 로 써야하는데두 파일에서 return문에서는 동등하게 {product.name} , {product.price} 등으로 사용됩니다. 둘의 차이를 알려주시면 감사하겠습니다.
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
import시 {} 유무의 차이는 무엇인가요?
import axios from 'axios'; 에서는 중괄호가 없고import {Link} from 'react-router-dom' 에서는 중괄호가 있는데 차이가 뭔지 잘 모르겠습니다.axios는 'axios' 안에 있는 함수를 import 하는 것이고 {Link} 는 'react-router-dom' 안에 많은 컴포넌트 중 Link만 import 하기 위함인가요?
-
해결됨비전공자를 위한 진짜 입문 올인원 개발 부트캠프
useState를 사용하는 이유가 무엇인가요?
빈 배열을 선언해서 빈 배열에 (axios 통신을 통해 전달받은) result.data를 대입해서 사용하는 것이 아니라 useState를 사용하는 이유는 무엇인가요?제가 이해한 것은 서버에 새로운 데이터가 업로드되면 그때마다 바로바로 업로드 된 데이터를 화면에 보여주기 위함인 것 같은데(예를 들어 상품이 3개로 보이다가 관리자가 상품을 한 개 추가하면 새로고침을 안해도 4개로 보임), 올바르게 이해한 것이 맞을까요?
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3] - 지금까지 익힌 이론과 미니배치까지 적용된 딥러닝 코드 구현해보기 에서 질
9분 20초쯤에 indices = torch.randperm(x.size(0)) print(indices) x_batch_list = torch.index_select(x, 0, index=indices) y_batch_list = torch.index_select(y, 0, index=indices) indices를 랜덤한 순서로 넣었다고 하셨는데그리고x_batch_list = torch.index_select(x, 0, index=indices) 이걸사용하는 이유가뭔가요?어차피 지금 랜덤하게 바뀐순서라면x_batch_list = x[indices] 이걸통해서 바로 넣어도 되는게 아닌가요? torch.index_select 이건 인덱스로 원하는 데이터만 선택적으로 추출하기에 적합하다고 알고있습니다. 이번에 굳이 x_batch_list = x[indices] 이게아닌 x_batch_list = torch.index_select(x, 0, index=indices) 이걸 사용한 이유를 알고 싶습니다.제가 아는것이 전부가 아닌 또다른게 있는가해서요
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
hostname 페이지 접속 실패
그랩님 안녕하세요 현재 depoly가 완료되었습니다.그런데 hostname페이지로 접속이 안되고 아래와 같이 실패하고있습니다.어떤부분이 문제인지 문의드립니다.git 링크: https://github.com/sunghankwon/grab-market-server 다른 수강생분들에게도 문제 해결에 도움을 줄 수 있도록 좋은 질문을 남겨봅시다 :) 1. 질문은 문제 상황을 최대한 표현해주세요.2. 구체적이고 최대한 맥락을 알려줄 수 있도록 질문을 남겨 주실수록 좋습니다. 그렇지 않으면 답변을 얻는데 시간이 오래걸릴 수 있습니다 ㅠㅠex) A라는 상황에서 B라는 문제가 있었고 이에 C라는 시도를 해봤는데 되지 않았다!3. 먼저 유사한 질문이 있었는지 꼭 검색해주세요!
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
3장 마지막 부분 오류 ㅠㅠㅠㅠ
이 코드 왜 오류날까요 ㅠㅠㅠ 이런 식으로 오류가 나요 ㅠㅠㅠㅠㅠ
-
해결됨처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 (쉽게! 기본부터 챗GPT 핵심 트랜스포머까지) [데이터분석/과학 Part3]
처음하는 딥러닝과 파이토치(Pytorch) 부트캠프 [데이터과학 Part3]에 파이토치(PyTorch) 텐서 연산 관련 수학과 구현 정리 (이론+실습) 파이토치(PyTorch) 텐서 연산 관련 수학 정리 강의 질
5분 50초쯤에data1 = torch.FloatTensor([1,2]) # 1,2 원소를 가진 1D 텐서 선언이걸 가르키면서 정확히 말하면 2차원 벡터라고 말씀하셨는데 그럼 data1 = torch.FloatTensor([1,2,3,4])print(data1)tensor([1., 2. ,3., 4.])이렇게 된다면 4차원이 되는건가요? 다른 블로그나 구글링을 해보면2. 벡터(1D Tensor)숫자들의 배열을 벡터라고 하며 1차원 텐서라고 한다.벡터의 축의 개수는 1개이다.vector = np.array([1, 2, 3, 4, 5]) print(vector) print(vector.ndim) print(vector.shape)[1 2 3 4 5] 1 (5,)이렇게 말하고 있습니다. 또 강사님의 02_tensor.md 파일을보면벡터(1D 텐서)벡터(1D 텐서): 숫자 여러 개가 특정 순서대로 모여 있는것을 의미함 (배열이라고 이해하면됨)하나의 벡터가 이루는 데이터의 갯수가 n개이면 n-차원 벡터라고함벡터는 열 벡터, 행 벡터 둘다 가리키지만, 열 벡터로 표현하는것이 일반적임이라고 하는데 갯수가 n개이면 n-차원 벡터 이말과 저위의 다른 누군가의 블로그(구글링)의 말에 혼동이 좀 생기는것 같습니다. 아마 강사님께서 차원의 대한 얘기가 혼동될 수 있다고 수차례 말씀하셨는데 이부분인가 싶기도합니다.아니면 제가 잘못 생각하고 있는부분이 있는지 알려주시면 감사하겠습니다
-
미해결비전공자를 위한 진짜 입문 올인원 개발 부트캠프
axios error
안녕하세요 그랩님! 바로 아래 질문과 같이 axios error가 콘솔창에 뜨는데 포스트맨으로 다른 api 연결 확인 다 되었고 app.use(cors()); 역시 서버의 index.js 에 기재되어 있는데도 여전히 오류가 뜨고 있어 혹시 이런경우엔 어떻게 해결이 가능할지 문의드리고자 합니다!
-
미해결[개정판] 파이썬 머신러닝 완벽 가이드
강의자료는 다운받을수 없나요?
안녕하세요. 강의를 잘 듣고 있습니다.유익한 강의를 해주셔서 감사합니다.강의 자료는 다운 받을 수 없나요?
-
해결됨[개정판] 파이썬 머신러닝 완벽 가이드
classification을 통한 cluster 해석
안녕하십니까 교수님 cluster 해석과 관련하여 질문이 있어 글을 작성하게 되었습니다. 각 cluster별로 명확하게 어떤 feature가 많이 고려되었다는 것을 확인할 수 있는 방법이 있을까요? clustering을 진행한 뒤 다음과 같은 방법으로 cluster를 해석하려 하였습니다.1) 군집화를 진행하여 0, 1, 2, 3 의 cluster가 도출됨2) cluster를 label 데이터로 하여 classification을 진행3) feature importance를 활용하여 기술적으로 cluster를 해석 여기서 질문드리고 싶은 점은.. 각 군집별로 feature importance를 도출할 방법이 없을까요? (또는 XAI등 다른 방법이 있을까요??)현재 feature importance는 cluster 0, 1, 2, 3을 모두 반영한 feature importance를 도출해 명확하게 cluster의 특징을 해석하기 어려운 것 같습니다.. 각 cluster별로 어떤 feature가 많이 고려되었다는 것을 확인할 수 있는 방법이 있는 지가 궁금합니다. 항상 감사드립니다.