묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
배포 강의 중 질문있습니다.
강의 마지막 부분에서 막혀서 문의 드립니다. 배포 강의를 따라서 진행했는데 AWS에서 S3, EC2, RDS 까지 다 연결하고 난 뒤에 또 뭘 해야하나요? 어플 빌드했을때 로그인, 회원가입해도 알 수 없는 에러가 발생했다고 뜨면서 안되서요 ㅠ
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
react-native-reanimated:compileDebugJavaWithJavac :( instanceof is not supported in -source 11) 오류 문의
강사님 navigation 6버전 변경후 다른 이슈로 재 문의 드립니다. 1.OS: window2.이슈 : react-native-reanimated 이슈로2.x 버전으로 사용하면 - 빌드는 되지만createDrawerNavigator를 찾을수 없다는 오류3.x 버전을 사용으로 사용했을때는 아래와 같은 오류가 납니다. 3.dependencies 버전에러react-native-reanimated:compileDebugJavaWithJavac :( instanceof is not supported in -source 11) java 11버전을 지원하지 않는 버전으로 이슈가 있습니다. 강사님이 빌드하신 gradle 버전이랑 자바 버전 알려주시면 동일 환경해서 다시 해보겠습니다. > Task :react-native-reanimated:compileDebugJavaWithJavac FAILEDDeprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/8.0.1/userguide/command_line_interface.html#sec:command_line_warnings64 actionable tasks: 2 executed, 62 up-to-dateinfo 💡 Tip: Make sure that you have set up your development environment correctly, by running react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctorC:\project\base-react-native\MatzipApp\front\node_modules\react-native-reanimated\android\src\main\java\com\swmansion\reanimated\layoutReanimation\AnimationsManager.java:356: error: pattern matching in instanceof is not supported in -source 11if (props.get(Snapshot.TRANSFORM_MATRIX) instanceof ReadableNativeArray matrixArray) {^(use -source 16 or higher to enable pattern matching in instanceof)C:\project\base-react-native\MatzipApp\front\node_modules\react-native-reanimated\android\src\main\java\com\swmansion\reanimated\NodesManager.java:440: error: switch rules are not supported in -source 11case "opacity" -> {^(use -source 14 or higher to enable switch rules)2 errorsFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':react-native-reanimated:compileDebugJavaWithJavac'.> Compilation failed; see the compiler error output for details.* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 17sinfo Run CLI with --verbose flag for more details. ❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
basic, bearer 토큰 관련 문의
안녕하세요basic, bearer 토큰을 이미 범용적으로 널리 사용된다고 하셨는데 궁금한점이로그인할 때 id/pw 를 header 에 넣어서 보낸다고 하셨는데패킷을 탈취하면 너무 취약할 것 같아서요. 제가 웹개발자가 아니라 실무에선 실제로 어떻게 쓰는지 알고싶어서 질문남깁니다.
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
debug 강의 질문입니다.
강의 내용처럼 그대로 따라 했을 때 다음과 같이 됩니다.1. 아래 사진 처럼 breakpoint 설정 시 빨간색이 아니라 빈원이 나옵니다. 실제 실행하였을 경우 break가 걸리긴 하는데 ts파일이 아닌 compile된 js 파일로 넘어갑니다. 인터넷 찾아보고 sourceMap 관련된거 같아서 tsconfig 파일에 sourceMap: true 넣고 launch.json에 sourceMaps: true 넣어봤는데도 변함이 없네요 어떤 부분을 확인해봐야할까요?
-
미해결맛집 지도앱 만들기 (React Native + NestJS)
TypeError: Cannot read property 'Never' of undefined 에러 문의
강사님 [2-5]Drawer Navigation 오류 관련으로 문의드립니다. 오류 관련으로 커뮤니티와 공식문서에 했고 답변내용으로 해결보려고 했는데 잘안되네요.. 확인 부탁드립니다. 1.npm i react-native-reanimated@3.3.0 변경2.'react-native-reanimated/plugin', 넣기 yarn start --reset-cache 3.node모듈 폴더 삭제후 재 설치 ERROR TypeError: Cannot read property 'Never' of undefinedThis error is located at: in Drawer (created by DrawerViewBase) in DrawerViewBase (created by DrawerView) in RNCSafeAreaProvider (created by SafeAreaProvider) in SafeAreaProvider (created by SafeAreaProviderCompat) in SafeAreaProviderCompat (created by DrawerView) in DrawerView (created by DrawerNavigator) in PreventRemoveProvider (created by NavigationContent) in NavigationContent in Unknown (created by DrawerNavigator) in DrawerNavigator (created by MainDrawerNavigator) in MainDrawerNavigator (created by RootNavigator) in RootNavigator (created by App) in ThemeProvider in EnsureSingleNavigator in BaseNavigationContainer in NavigationContainerInner (created by App) in App in RCTView (created by View) in View (created by AppContainer) in RCTView (created by View) in View (created by AppContainer) in AppContainer in MatzipApp(RootComponent), js engine: hermes ❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.
-
미해결[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
08-06
docker-compose build가 안되요!ㅠㅠㅠㅠㅠ도커라 도커컴포즈 삭제하고 다시 까는거는 5시간동안 했는데...챗gpt가 하라는데로 5시간동안 했는데 해결이 안되네요!Traceback (most recent call last):File "urllib3/connectionpool.py", line 677, in urlopenFile "urllib3/connectionpool.py", line 426, in makerequestFile "<string>", line 3, in raise_fromFile "urllib3/connectionpool.py", line 421, in makerequestFile "http/client.py", line 1369, in getresponseFile "http/client.py", line 310, in beginFile "http/client.py", line 271, in readstatusFile "socket.py", line 589, in readintoConnectionResetError: [Errno 104] Connection reset by peerDuring handling of the above exception, another exception occurred:Traceback (most recent call last):File "requests/adapters.py", line 449, in sendFile "urllib3/connectionpool.py", line 727, in urlopenFile "urllib3/util/retry.py", line 410, in incrementFile "urllib3/packages/six.py", line 734, in reraiseFile "urllib3/connectionpool.py", line 677, in urlopenFile "urllib3/connectionpool.py", line 426, in makerequestFile "<string>", line 3, in raise_fromFile "urllib3/connectionpool.py", line 421, in makerequestFile "http/client.py", line 1369, in getresponseFile "http/client.py", line 310, in beginFile "http/client.py", line 271, in readstatusFile "socket.py", line 589, in readintourllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))During handling of the above exception, another exception occurred:Traceback (most recent call last):File "docker/api/client.py", line 214, in retrieveserver_versionFile "docker/api/daemon.py", line 181, in versionFile "docker/utils/decorators.py", line 46, in innerFile "docker/api/client.py", line 237, in _getFile "requests/sessions.py", line 543, in getFile "requests/sessions.py", line 530, in requestFile "requests/sessions.py", line 643, in sendFile "requests/adapters.py", line 498, in sendrequests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))During handling of the above exception, another exception occurred:Traceback (most recent call last):File "docker-compose", line 3, in <module>File "compose/cli/main.py", line 81, in mainFile "compose/cli/main.py", line 200, in perform_commandFile "compose/cli/command.py", line 70, in project_from_optionsFile "compose/cli/command.py", line 153, in get_projectFile "compose/cli/docker_client.py", line 43, in get_clientFile "compose/cli/docker_client.py", line 170, in docker_clientFile "docker/api/client.py", line 197, in initFile "docker/api/client.py", line 222, in retrieveserver_versiondocker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', ConnectionResetError(104, 'Connection reset by peer'))[119730] Failed to execute script docker-compose 챗 gpt에 물어보고 똑같이 해봐도 해결이 안됩니다. ㅜㅜㅜㅜㅜ
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
[이슈]리액트 네이티브 0.76 버전 쓰지마세요
앱 처음제작시 0.76 버전으로 진행하였는데 지금https://github.com/react-native-maps/react-native-maps/issues/5206위 이슈를 보시면 신규 ui 엔진인 fabric을 라이브러리에서 지원 안하고 있습니다 제가 예전에 올린글인 맵 터치시 마커가 다음렌더링에 표시되는 이유가 이것 때문이였습니다. 버전 낮춰서 하세요~
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
구조랑 패턴 관련해서 질문
현재 실무에서 ORM(Prisma)을 채택해서 백엔드를 만들고 있어요.ORM으로 할 수록 Repository패턴과 조합이 좋지않다고 생각이 들고 실제 팀리더도 Repository패턴을 같이 쓰는거에 부정적이고 실제로 사용하지 않아요. 그렇다고 service 하나에 몰아 넣으니 저는 코드 읽기가 점점 힘들어지는거 같아요.대체할만한걸 검색해보니 CQRS패턴이나 Query Object가 나오는데 아니면 서비스파일을 여러개 두거나... 강사님 같은 경우에는 실무에서 어떻게 대처하시는지 궁금합니다.
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
2-3 강의를 듣는 도중 패키지 설치 후 오류가 떴습니다..
해당 오류가 떠서 해결을 못하고 있는 상황인데요.package.json 내에 설치되어 있고 build.gradle 도 다 확인해봤는데 해결이 안됩니다 ㅠㅠ... 모바일에서는 다음과 같은 오류로 뜹니다....
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
1-5 프로젝트 생성문제
❗질문 작성시 꼭 참고해주세요현재 문제(또는 에러)와 코드(또는 github)를 첨부해주세요. 맥/윈도우, 안드로이드/iOS, ReactNative, Node 버전 등의 개발환경을 함께 적어주시면 도움이 됩니다. 에러메세지는 일부분이 아닌 전체 상황을 올려주세요. (일부만 자르거나 복사하지말아주세요.) 개발환경/코드에 대한 정보가 없을경우 답변이 어렵습니다.[문제 상황]npx react-native@0.72.6 init MatzipApp --version 0.72.6 해당 명령어를 입력했을 때 반응이 전혀 없고 파일생성이 되지 않습니다. [현재상황]터미널에 npm list -g --depth=0 명령어를 입력했을 때 나타나는 패키지 목록들입니다. node와 npm 버전 그리고 chocolatey 정상 설치된 부분입니다.adb 명령어 입력시 정상 작동되고 있는 부분입니다.Andriod Studio 환경변수 설정 또한 sdk 파일 위치 확인 후 c브라이느/Andriod App 경로로 정상적으로 환경변수 설정되어있습니다. [해결하기위한 실행한 방안들]npm uninstall -g react-native-cli 명령어를 통해 react-natice-cli 제거 후 npm install -g react-native 전역으로 설치 후 버전 확인 (버전확인이 뜨지 않음 첫 문제와 같은 상황)node.js 재설치andriod studio 최신버전으로 재설치andriod studio 패키지 설치 모두 완료npm cache clean --force 명령어를 통해 캐시 초기화 후 진행 관리자 권한으로 실행 후 진행블로그와 커뮤니티를 확인하면서 해결을 시도하였는데 해결이 되지 않아 질문드립니다 ㅠㅠnpx react-native 가 들어간 명령어는 하나도 먹질 않고 있습니다... 섹션1에서 멈춰있어요.. 도와주세요 ㅠ
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
🥳완강🥳
2024-04-02 시작으로..2024-12-08 강의 완강하였습니다ㅠㅠ앱, 프론트 개발이 완전 처음이라 얼마나 헤맸는지..강사님과 수강자분들의 도움이 없었으면 다음 생에도 완강을 못했을 수도 있지 않았을까 생각이 드네요....수많은 질문 속에서도 답변 주셔서 이렇게 마무리하게 되었습니다.강의 듣는동안 너무 재밌게 진행하였고 다음 강의가 나온다면 결제 준비하겠습니다 ㅎ0ㅎ고생하셨습니다 강사님그리고 감사합니다~~! 🙇♂
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
코드팩토리님, 강의 질문 있습니다.
패스트 캠퍼스에서 올린 강의에 대한 질문을 어디에 올려할지 모르겠어서 여기에 남깁니다.아키텍처 대통합은 언제 올라나요?
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
JWT refresh 에대해 질문이 있습니다.
jwt refresh 토큰은 access 토큰이 만료되었을때 재발급을 위한 토큰이라고 알고있는데요보통 refresh 는 시간을 길게주고 access 토큰은 짧게 줘서 관리하는것으로 알고있습니다.근데 강의를 다듣고 정리하는데 refresh에 대해 궁금증이 생겼습니다. 강의에서는 따로 DB에 저장안한거 같은데 DB에 저장하지않고 관리하는거라면 refresh도 만료시간이 있을텐데 이걸 어떻게 관리하는것인지요?http only cookie로 클라이언트에 건내줘서 클라이언트가 만료될때마다 서버쪽으로 던지는것인지아니면 DB에 저장해서 관리하는것인지 궁금합니다. 어떤것이 정답이라고 할수 없겠지만보통 실무에서는 어떻게 관리할까요
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
WINDOWS로 강의 수강
제가 MacOS가 아니라 Windows인데 강의를 원활하게 수강할 수 있나요?
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
Matzip.fig 관련 문의
방금 강의 결제해서 시작하고 있는데, 처음부터 안 되네요.사진 첨부합니다!
-
미해결탄탄한 백엔드 NestJS, 기초부터 심화까지
emit() broadcast.emit() 질문있습니다
두 함수의 차이는 해당 메시지를 발행하는 client 를 포함하고 않하고로 알고 있습니다. 그럴때 socket.emit('user_conneted', username);다음 코드를 통해서도 상대방에게 보여진다고 생각했는데 실제로는 메시지 발행 client 의 console에만 나오는 것을 확인했습니다. 왜 상대방쪽의 console에서는 메시지가 보이지 않는지 궁금합니다
-
미해결[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core
http Exception filter 적용
http Exception filter 적용이 안됩니다. import { ArgumentsHost, Catch, ExceptionFilter, HttpException, } from '@nestjs/common'; import { Response } from 'express'; @Catch(HttpException) export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { console.log('exception', exception); const ctx = host.switchToHttp(); const response = ctx.getResponse<Response>(); const status = exception.getStatus(); const err = exception.getResponse() as | string | { error: string; statusCode: number; message: string | string[] }; console.log('err', err); if (typeof err !== 'string' && err.error === 'Bad Request') { return response.status(status).json({ ok: false, statusCode: status, data: err.message, }); } response.status(status).json({ ok: false, statusCode: status, data: err, }); } } 위처럼 하고난뒤에 main.ts 파일에 app.useGlobalFilters(new HttpExceptionFilter());추가했는데 위처럼 에러 포맷이 안나옵니다. const foundUser = await this.dataSource.getRepository(UserEntity).findOne({ where: { id } }); if (!foundUser) { console.log('User not found'); throw new BadRequestException('User not found'); }{ "response": { "message": "User not found", "error": "Bad Request", "statusCode": 400 }, "status": 400, "options": {}, "message": "User not found", "name": "BadRequestException"}
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
3-8. 로그아웃 에러
안녕하세요 강사님. 그동안 로그인 구현을 해본적이 없어서 정말 유익한 강의였습니다. 3-8 강의를 듣던 중 강의대로 했는데 로그아웃이 안 되더라구요. 혼자 해결해보려고 다양한 방법으로 해서 결국 로그인과 로그아웃이 동작은 하는데 로그아웃 버튼을 두 번 클릭해야지 AuthStackNavigator로 네비게이팅이 되는 문제가 있습니다.https://github.com/G0MTENG/MatzipApp-project/tree/3-8 깃허브에 3-8 브랜치에 올려두었습니다. src/hooks/queries/useAuth에 이에 대한 구현이 있고 추가적으로 useAuth 코드를 올려두겠습니다. 감사합니다. import { getAccessToken, postLogin, postSignUp, getProfile, logout, } from '@/apis'; import {queryClient} from '@/apis/queryClient'; import {authQueryKeys, storageKeys, numbers} from '@/constants'; import {UseMutationCustomOptions, UseQueryCustomOptions} from '@/types'; import { removeEncryptStorage, removeHeader, setEncryptStorage, setHeader, } from '@/utils'; import {useMutation, useQuery} from '@tanstack/react-query'; import {useEffect} from 'react'; export const useSignUp = (mutationOptions?: UseMutationCustomOptions) => { return useMutation({ mutationFn: postSignUp, ...mutationOptions, }); }; export const useLogin = (mutationOptions?: UseMutationCustomOptions) => { return useMutation({ mutationFn: postLogin, onSuccess: ({accessToken, refreshToken}) => { setEncryptStorage('refreshToken', refreshToken); setHeader('Authorization', `Bearer ${accessToken}`); }, onSettled: () => { queryClient.refetchQueries({ queryKey: [authQueryKeys.AUTH, authQueryKeys.GET_ACCESS_TOKEN], }); queryClient.invalidateQueries({ queryKey: [authQueryKeys.AUTH, authQueryKeys.GET_PROFILE], }); }, ...mutationOptions, }); }; export const useGetRefreshToken = () => { const {data, isSuccess, isError} = useQuery({ queryKey: [authQueryKeys.AUTH, authQueryKeys.GET_ACCESS_TOKEN], queryFn: getAccessToken, staleTime: numbers.ACCESS_TOKEN_REFRESH_TIME, refetchInterval: numbers.ACCESS_TOKEN_REFRESH_TIME, refetchOnReconnect: true, refetchIntervalInBackground: true, }); useEffect(() => { if (isSuccess) { setHeader('Authorization', `Bearer ${data.accessToken}`); setEncryptStorage(storageKeys.REFRESH_TOKEN, data.refreshToken); } }, [isSuccess, data]); useEffect(() => { if (isError) { removeEncryptStorage(storageKeys.REFRESH_TOKEN); removeHeader('Authorization'); } }, [isError]); return {isSuccess, isError}; }; export const useGetProfile = (quryOptions?: UseQueryCustomOptions) => { return useQuery({ queryKey: [authQueryKeys.AUTH, authQueryKeys.GET_PROFILE], queryFn: getProfile, ...quryOptions, }); }; export const useLogout = (mutationOptions?: UseMutationCustomOptions) => { return useMutation({ mutationFn: logout, onSuccess: async () => { await removeEncryptStorage(storageKeys.REFRESH_TOKEN); removeHeader('Authorization'); }, onSettled: () => { queryClient.resetQueries({queryKey: [authQueryKeys.AUTH]}); queryClient.invalidateQueries({queryKey: [authQueryKeys.AUTH]}); }, ...mutationOptions, }); }; export const useAuth = () => { const signupMutation = useSignUp(); const refreshTokenQuery = useGetRefreshToken(); const getProfileQuery = useGetProfile({ enabled: refreshTokenQuery.isSuccess, }); const isLogin = getProfileQuery.isSuccess; const loginMutation = useLogin(); const logoutMuatation = useLogout(); return { signupMutation, loginMutation, isLogin, getProfileQuery, logoutMuatation, }; };
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
mydocker
mongoose.connect("mongodb://my-database:27017/mydocker").then(()=> console.log("db접속성공")).catch((err)=>console.log("db접속실패",err))저는 이 부분이 터미널에 db접속이나 db접속 실패가 터미널창에 안 떠요. 터미널창에 왜 안뜰까요??우분투라서 sudo docker-compose build sudo docker-compose up 하면 선생님은 db접속유무가 뜨는데 저는 터미널창에 안 떠요그리고 mydocker이부분은 docker-compass에 들어가면 선생님은 databases에 admin config local 에네랑 같이 있던데 강의에서 언제 생성을 했었나요?
-
해결됨맛집 지도앱 만들기 (React Native + NestJS)
2-5 강의 에러 (react-native-reanimated 설치 후 에러)
환경 : 맥, 안드로이드버전 : react-native 0.72.6node 22.11.0깃허브 : https://github.com/taeyun01/react-native-map안녕하세요!2-5 강의 질문도 보고 구글에도 쳐보고 했지만 계속 해결이 안되어 문의 드립니다 ㅠ시도해본것node_modules 삭제Drawer Navigator 패키지 삭제 후 재설치설치 후 npx react-native run-iosyarn installreact-native-reanimated/plugin 추가npx react-native start --reset-cache터미널 에러 전체 (에러가 너무 길어 작성이 안되어 메모장 링크로 첨부드립니다.)https://n.lrl.kr/NkN4aH 안드로이드 에뮬레이터 화면 에러package.json{ "name": "foodMap", "version": "0.0.1", "private": true, "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "lint": "eslint .", "start": "react-native start", "test": "jest" }, "dependencies": { "@react-native-masked-view/masked-view": "^0.3.2", "@react-navigation/drawer": "^7.0.11", "@react-navigation/native": "^7.0.4", "@react-navigation/stack": "^7.0.6", "react": "18.2.0", "react-native": "0.72.6", "react-native-gesture-handler": "^2.21.2", "react-native-reanimated": "^3.16.2", "react-native-safe-area-context": "^4.14.0", "react-native-screens": "^4.3.0" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.11", "@tsconfig/react-native": "^3.0.0", "@types/react": "^18.0.24", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.2.1", "eslint": "^8.19.0", "jest": "^29.2.1", "metro-react-native-babel-preset": "0.76.8", "prettier": "^2.4.1", "react-test-renderer": "18.2.0", "typescript": "4.8.4" }, "engines": { "node": ">=16" } }
주간 인기글
순위 정보를
불러오고 있어요