#rn

질문 3
해시태그 없이 키워드만 일치하는 질문은 개수에 포함되지 않아요.

25일 전 · Luke 님의 질문

What Should I Do Here?

I’m at a point in my career where I’m seriously considering making a switch to a field I’m genuinely passionate about. The problem is it’s not the most financially secure or socially validated option. On the other hand, my current job is stable and pays well, but I don’t feel fulfilled or excited about what I’m doing. I’ve been reading stories about people who took the leap into something they love and ended up thriving, but I also know that not everyone lands on their feet. That makes me hesitate. I have responsibilities and can’t afford to make a reckless decision. So I’m curious how have you personally approached this kind of decision? Have you prioritized your passion or stuck with a practical choice? Or did you find a way to do both? What factors helped you make your decision, and what do you wish you knew earlier? I’d really appreciate any honest insights, lessons learned, or even regrets. I think hearing real experiences from others in the community would help me (and maybe others here too) gain perspective. Thanks in advance!

PM/PO/기획자

#career

답변 0

댓글 0

조회 20

한 달 전 · 포크코딩 님의 새로운 댓글

react, rn 리스트 엔트리 구현시 원본 리스트를 수정하는 함수 최적화가 고민됩니다..

리스트 A 엔트리 컴포넌트 B A를 수정하는 함수 C 이렇게 있을 때 B에서 A를 수정해야 하는 상황입니다. 모바일 환경이라 최대한 엔트리 B를 최적화 하고 싶은데 memo를 해야할 때 함수C는 어떻게 최적화 해야할까요 A에 선언하면 A의 최신 값을 얻기 위해 C가 변경될 때 마다 B또한 C의 변경에 의해 재렌더링 될 것이니 기존에는 이런 재렌더링을 막기위해 setA( (prevA) => { ... } ) 와 같은식으로 setA 내부의 callback으로 A의 최신값을 사용해서 A를 C의 의존성 배열에 추가하는 것을 피해왔는데 수정시 api의 res data를 사용할 일이 생기니 setState내에서는 async await 사용이 불가능해서 질문드립니다... 바보같은 저에게 단비 같은 가르침을 내려주세요..

개발자

#react

#react-native

답변 1

댓글 1

조회 90

3달 전 · 익명 님의 질문

ios 개발자 지망 졸업프로젝트 고민

4학년이 되면서 약 8개월짜리 프로젝트로 앱 개발을 하게되었습니다. ios개발자를 희망하고있어서 스위프트 이용해 네이티브 개발을 하려다가, 주제의 특성상 React Native를 이용하여 개발하려고 하는데요 ios 개발자를 희망하고 있다면 RN으로 프로젝트를 한 경험이 도움이 될까요? 아니면 swift로 개발하는게 더 나을까요? +) 코테 언어도 추천부탁드립니다..

개발자

#ios

#swift

#react-native

답변 0

댓글 0

조회 106

3달 전 · 성대규 님의 질문 업데이트

Django serializer 현업에서는 어떻게 설계를 어떻게 하시나요?

안녕하세요 RN 개발을 진행하면서 백엔드로 Django를 사용하고 있고, Django를 공부한지 몇개월 되지 않았습니다. 개발을 진행하면서 아래의 문제가 생겼는데, 혹시 애초에 serializer와 model을 잘못 설계한 것은 아닌지, 또한 현업자 분들은 어떻게 시리얼라이저를 사용하시는지 궁금합니다. [문제 설명] 프로젝트의 모델에는 하위 게시글 모델이 여러 개 올 수 있습니다. 모델 구조는 아래와 같습니다. Project { id: number, posts: Post[], } Post { id: number, project: number, <- 무한 참조를 방지하기 위해 id } 앱 개발을 하다가 Post 데이터에서 Project까지 UI를 그려야하는 상황에서 또 프로젝트를 불러오는 API를 사용하니까 (프로젝트 id에서 프로젝트 오브젝트 불러오기, fetchProjectAPI). UI 지연이 되어서 프로젝트 오브젝트를 불러오고 싶은데, 프로젝트 시리얼라이저 내에서 또 포스트 오브젝트가 나오고 거에서 또 프로젝트가 나오는 문제가 생기더라구요. 이와 같은 경우에는 어떻게 해결하면 좋을까요? posts를 제외한 ProjectSummarySerializer를 새로 생성하면 되겠지만 근본적인 해결책은 아니라고 생각합니다 (제외하고 싶은 필드가 생길때마다 시리얼라이저를 만들어야하니깐요). 혹시 애초에 모델을 잘못 설계한걸까요? 또한 애초에 오브젝트로 반환하는 것을 잘 안하나요? (DB 와 송수신 로드를 줄이기 위해서 아이디로만 반환한다던지)

개발자

#django

#serializer

#model

답변 0

댓글 0

보충이 필요해요 1

조회 75

3달 전 · 익명 님의 질문

MacBook에서 Windows Docker 서버 접속 시 sudo가 필요한데 원인이 뭘까요?

문제 현재 Windows 데스크톱과 MacBook을 사용 중이며, 두 기기는 동일한 로컬 네트워크에 연결되어 있습니다. - 데스크톱(Windows): 유선 랜(Ethernet)으로 연결 - MacBook: Wi-Fi로 연결 Windows 데스크톱에서 Docker를 이용해 로컬 웹 서버(포트 9000)를 실행 중입니다. 컨테이너는 -p 9000:9000 옵션으로 실행되었으며, 0.0.0.0:9000에서 요청을 받을 수 있도록 설정되어 있습니다. 데스크톱에서는 Chrome를 통해 정상적으로 웹 인터페이스에 접속할 수 있습니다. 그러나 MacBook의 Chrome에서 접속하면 페이지를 찾을 수 없다고 합니다. 이상하게도,,, Chrome을 sudo로 실행하면 페이지가 정상적으로 로드됩니다. 추가 정보 - 데스크톱(Windows)과 MacBook은 같은 서브넷에 속해 있습니다. - 웹 서버는 0.0.0.0:9000에서 요청을 받을 수 있도록 설정되어 있어, 다른 기기에서도 접근 가능해야 합니다. - MacBook에서 nc -zv <데스크톱-IP> 9000을 실행하면 포트가 열려 있음을 확인했습니다. - Python 코드에서 requests.get("http://<데스크톱-IP>:9000")을 실행하면, 일반 실행 시 실패하지만 sudo로 실행하면 정상적으로 작동합니다. - MacBook에는 단 하나의 사용자 계정만 존재하며, 해당 계정은 관리자(Admin) 권한을 가지고 있습니다. - macOS 방화벽은 비활성화되어 있으며 (/usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate로 확인), sudo pfctl -d로 pf 방화벽을 꺼도 문제가 해결되지 않았습니다. 현재까지 파악한 내용 sudo로 실행하면 정상적으로 동작하기 때문에, 현재 문제는 네트워크 연결 자체의 문제가 아니라 macOS의 보안 정책 또는 네트워크 제한과 관련된 것이 아닐까,, 생각하고 있습니다. 해결하고 싶은 질문 - 왜 Chrome을 sudo로 실행해야만 웹 서버에 접속할 수 있을까요? - 왜 일반 사용자 권한으로 실행한 Python의 requests.get() 요청이 차단되고, sudo를 사용해야만 정상적으로 동작할까요? - macOS에서 일반 사용자 프로세스의 네트워크 접근을 제한하는 정책이 있는 걸까요? 있다면 어떻게 해결할 수 있을까요? 스크립트에 모두 sudo를 붙이면 문제가 해결되긴 합니다만,, 명확한 원인이 궁금합니다. 혹시 비슷한 경험을 하신 적이 있는 분이 계시다면 조언 부탁드립니다! 혹은 힌트 키워드라도 던져주시면 감사하겠습니다!

개발자

#mac

#docker

#local-network

답변 0

댓글 0

조회 73

3달 전 · 포크코딩 님의 새로운 답변

CS 전공 4학년 진로고민 조언 부탁드립니다..!

안녕하세요, 생성형 비전 ai를 연구 중인 전공자 4학년 학부 인턴입니다. 요즘 제가 생각보다 연구에 대한 끈기가 부족하다는 것을 깨달아서 (빨리 성과가 나오지 않으면 답답하고 몇개월을 갈아넣은 연구 성과가 학문/이론에서 그치는 것도 답답하더라구요) 랩실을 나오고 취준을 해볼까 고민 중입니다. 연구 자체가 엄청 거부감 들고 싫은건 아니지만.. 결국은 연구를 해도 나중에 리서처나 개발 직군으로 취업을 해야하는데 회사에서 리서치 직군을 애초에 많이 뽑지는 않는데 저보다 탐구/실험하는 과정을 정말 잘 하는 주변 사람들을 보며 제가 충분히 경쟁력을 가질 수 있을지 잘 모르겠더라구요... 지금 fe be ai 다 한 번씩 건들여봤는데 이 중에서 취업할만큼 전문성을 가진 분야는 없는거 같아요. 그래서 빠르게 결단을 내리고 랩실을 나오고 취준을 할지, 랩실에 계속 있을지 고민 중인데 취준을 한다면 fe/be/데이터분석+데이터 엔지니어 중에 고민 중에 있습니다. (ai 엔지니어도 고려 중인데 학위에 대해서는 의견이 분분하긴 하지만석사를 따는게 유리하다고 하네요. 그리고 MLOps 분야는 신입을 잘 안 뽑는다고 알고 있어서..) 결정을 내린 다음 대학원을 안 가고 취준을 한다면 1~1.5년 정도 한 분야에 더 집중할 생각입니다. 그리고 지금은 학사/석사 취업 모두 어느 분야를 취업하든 다 경쟁이 매우 치열한거 같더라구요... 만약 fe를 하게 된다면 제가 시각적인 것을 좋아해서 장기적으로 보았을 때 인터랙티브 미디어 아트쪽으로 커리어를 쌓고 싶다는 생각이 있긴한데, 이게 현실적으로 가능한 것인지는 잘 모르겠습니다... FE는 제가 얕게나마 react, react native를 파본 경험이 있는데 화면에 보여지는게 즐겁긴 하지만 공들여서 만든걸 많이 수정할 때 좀 마음이 아팠던 경험이... 그리고 쏟아지는 기술들을 계속 배워야 한다는 것에 없지않아 피로감을 느꼈던거 같습니다. (그런데 이건 IT쪽이면 연구/개발 어느 분야든 똑같이 적용되긴 하는거라...) BE는 제가 django나 flask로 CRUD 위주로만 구현한..야매로밖에 경험을 안 해봤고 spring은 김영한님 강의 듣다가 중간에 너무 알아야할게 많은거 같아 포기했던 경험이 있습니다. 데이터 분석 + 데이터 엔지니어 같은 경우에는 통계 베이스/데이터 파이프라인 stack 기반이 부족해서 더 공부를 해봐야 할거 같습니다. 관련 공모전 경험도 아직 없고요.. ai 엔지니어 경험으로는 2~3개 정도 프로젝트 형식으로 flask로 ai 모델 서비스에 야매로 연결해본 경험이 전부입니다. (MLOps 역량을 가진 사람을 뽑으려는 추세인거 같은데 kubernetz, docker, 클라우드는 따로 또 공부를 해봐야 합니다) 결국에는 어떤 분야든 다 넘어야 하는 산이 있는 느낌이라 이에 대한 각오는 되어 있는데, 어떤 분야로 더 나아가는게 현명하고 후회없는 선택일지 너무 고민이 됩니다..ㅠㅠㅠ 어떤 직무든 다 힘들고 고된 점들이 있기에 제 성향을 고려하고 각각의 직무의 현실(?)을 보고 제가 이건 정말 오랫동안 하루종일 못 하겠다 싶은 같은 일들을 위주로 가지치기를 하면 좋을거 같다는 조언을 들었습니다. 그래서 각각 직무의 실제 업무 생활이 어떠한지, 그리고 실제 실무에서는 어떤 역량이 중요할지, 어떤 성향을 가진 사람이 어떤 상황을 감내해야 오래 버틸 수 있을거 같은지 알려주시면 감사하겠습니다! 직간접적으로나마 아시는 각각의 직무에 대한 정보 알려주시면 감사하겠습니다 🙇‍♀️ 조언해주시면 제 스스로 현명한 선택을 하는데 큰 도움이 될 것 같습니다!! :)

개발자

#진로

#커리어

#고민

#진로고민

답변 1

댓글 0

조회 175

4달 전 · CP 님의 새로운 댓글

neo4j로 데이터 가져올 때 속도가 너무 느려요

neo4j 를 도입해 연관성을 찾는 작업을 하고 있어요 데이터가 얼마 없을 경우 문제가 없었지만 현 기준 노드 200만개 관계 6000만 건 으로 한번 검출 할 때 속도가 너무 느려서요 그래서 apoc를 도입을 했고요 메모리, heap 등 용량도 늘려줬습니다. 쿼리도 MATCH (first:Keyword {name: '마우스'}) CALL apoc.path.expand(first, 'RELATED_TO', 'Keyword', 1, 6 ) YIELD path WHERE ANY(n IN nodes(path) WHERE n.name = '게이밍마우스') RETURN path LIMIT 500; 이렇게 apoc와 LIMIT를 적용 했고요 추가로 profile을 찍어보니 한번 검사를 할 경우 500만~1억 번 노드를 조회를 하고 있어요 방법이 없을까요? ps. 데이터는 아직 1%만 쌓였습니다

개발자

#neo4j

#디비저장

답변 2

댓글 3

추천해요 1

조회 45

4달 전 · 익명 님의 질문

웹소켓 + Stomp로 채팅 기능을 구현하며

RabbitMQ를 도입하였습니다. 도입의 이유는 스프링 내장 메시지 브로커를 이용하게 되면 인메모리 기반의 동작 방식으로 인해 서버 문제 발생 시 메시지가 유실되거나 확장에도 제한이 있다고 판단하여 도입하였습니다. 현직자 분들이 보기에 이 이유가 적합한 근거가 될까요? 추가로 JMeter로 RabbitMQ를 사용했을 때와 사용하지 않았을 때의 성능을 비교했는데 사용자 100명 기준 성능도 사용하지 않았을 때가 우세했고, RabbitMQ를 사용했을 때는 오히려 아래와 같은 오류가 가끔 발생하며 메시지또한 약 90퍼센트 정도만 저장된걸 확인할 수 있었습니다. 무엇이 문제이며 해결 방안이 있을까요?? java.net.SocketException: Connection reset at java.base/sun.nio.ch.SocketChannelImpl.throwConnectionReset(SocketChannelImpl.java:394) ~[na:na] at java.base/sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:426) ~[na:na] at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:255) ~[netty-buffer-4.1.114.Final.jar:4.1.114.Final] at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-buffer-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:356) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.114.Final.jar:4.1.114.Final] at java.base/java.lang.Thread.run(Thread.java:842) ~[na:na]

개발자

#채팅

#구현

답변 0

댓글 0

조회 82

4달 전 · 세혁 님의 질문 업데이트

시스템 폰트 사이즈에 의한 RN 어플 레이아웃 변경

안녕하세요 선배님들 처음으로 어플리케이션 프로젝트를 진행중입니다... 웹으로 할 때는 극적으로 작게 줄인 브라우저 창 및 극적인 스케일링을 반응형으로 적절히 조절했었는데 스마트폰이라는 환경상 너무 작은 디스플레이에 많은 정보가 존재하고 시력이 약한 노년층의 경우 스마트폰 자체의 폰트사이즈가 커서 레이아웃 조절에 어려움을 겪고 있습니다... 폰트 사이즈를 계산해서 레이아웃을 변경한다는 엄청나게 복잡한 생각을 하다가 스마트폰의 폰트 사이즈를 따르지 않게 고정하고 앱을 처음으로 실행할 때 사용자가 원하는 폰트 사이즈 선택에 맞춰 레이아웃을 설정시키는 초기 세팅 모달을 띄우는 것이 훨씬 간단하다는 생각이 들어서 이 방향으로 굳어지는 중입니다. 혹시 선배님들은 작은 디스플레이에서의 사용자의 폰트 사이즈 설정에 따른 레이아웃 조절을 어떻게 구현하시는 지 궁금합니다... 두서없는 질문을 읽어주셔서 감사합니다.

개발자

#reactnative

#android

#app

#app-dev

#layout

답변 0

댓글 0

조회 30

5달 전 · 익명 님의 질문

서버 배포 시기 및 협업

안녕하세요, Django와 RN을 이용해서 팀프로젝트를 진행하고 있습니다. 아직 경험이 많이 없는 학생이라 AWS 배포는 처음입니다. (무료 호스팅만 이용해봤습니다) 현재 개발 초기 단계이고, 회원가입 로그인 정도만 API 개발된 상태입니다. 프론트에서 서버를 요청해서 AWS서버를 구축하려 하는데, 1. 지금 이 시기가 AWS 서버 구축을 하는 게 맞는지?(프리 티어여도 개발이 진행 중인 상황에서 서버를 벌써 시작하는 게 맞는 지 궁금합니다) 2. AWS 실제 서버를 구축하지 않고도 프론트와 백엔드의 연결 즉 API요청을 프론트 측에서 할 수 있는지? -> 서치해 본 결과로는 ngrok 등을 이용해서 서버를 구축하지 않고도 프론트가 백엔드의 코드에서 테스트 해볼 수 있다는 것 같은데 이 방법을 더 자주 이용하는 편인지, 다른 방법이 있는지 가 궁금합니다! 프론트도 백엔드의 코드를 받아볼 수는 있으나 RN개발 환경과 백엔드의 코드를 둘 다 띄우기에 컴퓨터 자체가 어렵다고 하여 서버 배포를 고민 중에 있었습니다.. 많이 헤매고 있지만 여기서 많은 도움 받고 있습니다! 경험해보신 분들의 조언 부탁드립니다!

개발자

#서버

#aws

답변 0

댓글 0

조회 55

5달 전 · 익명 님의 질문

웹 프론트 개발자가 웹뷰 앱 서비스를 하는게 도움이 될까요?

안녕하세요 ! 제가 대학생 창업 초기 멤버로 서비스를 운영하고 있는데 기존에는 리액트로 웹을 만들고 RN으로 웹뷰를 띄워서(거진 웹을 그대로 띄우는 수준)앱도 같이 서비스 하고 있었습니다 그러나 점점 방향성이 b2c 에서 b2b2c로 바뀌고 서비스도 앱쪽으로 기우는 것 같습니다. (웹도 운영은 할 것 같지만 서브 개념) 물론 빠른 배포가 가능하고 제가 익숙한 리액트로 계속 개발 후 웹뷰로 띄우는 방식으로 이어갈 예정이기는 하나 저는 이후 웹 프론트엔드 커리어를 희망하는 터라 아무래도 앱 위주 서비스를 지속적으로 하는게 커리어에 부정적인 영향을 미치게 될지 고민입니다 ㅠ 여러분들이 봤을 땐 크게 지장이 없다고 생각하시나요?

개발자

#프론트엔드

#웹뷰

#커리어

답변 0

댓글 0

조회 42

5달 전 · 허니 님의 새로운 답변

현실적인 취업 가능성 조언 부탁드립니다

안녕하세요 지방 사립대 졸업예정인 전공자입니다 우선 제 상황에 대해 말씀 드리겠습니다 학점 평범하고 포폴도 프론트(RN + TS) 하나 백(Java + Springboot) 있는데 둘 다 평범한 CRUD 수준으로 있습니다 자격증은 정처기 sqld 있고 대외활동은 아이디어+구현방안 발표하는 경진대회에서 장려상 받은 것 있습니다 목표는 최대한 빨리 취직해서 경력 쌓는 것입니다 뭔가를 바랄 수준은 아니지만 가능하면 사원 두 자릿수의 수도권 쪽으로요.. 취직이 된 이후에 사이드 프로젝트와 공부하고 싶었던 것들, 어학 등을 준비할 계획입니다 현실적으로 이정도 수준에 취업이 가능한걸까요.. 하려던 것들을 모두 끝내고 하기엔 시간이 너무 오래 걸릴 것 같고 경제적으로도 부담이 되어서 빠르게 취직하려고 합니다 제가 봐도 힘들어보여서 여쭤봅니다 현실적인 조언 부탁드립니다

개발자

#취업고민

#취업

답변 1

댓글 0

조회 122

7달 전 · 익명 님의 질문

React에서 React native 개발 전환 경력

안녕하세요, 프론트엔드 3년차 개발자입니다. React로 웹개발을 주로 했고 새 회사에는 웹이 없고 RN으로 개발을 시작했습니다. React를 이제 좀 알겠고 웹을 구현만 하는 것에서 넘어 고도화 하는 단계가 필요하다고 생각했는데 RN으로 넘어오면서 앞으로의 경력이 걱정이 됩니다. 리액트와 비슷하지만 앱은 웹과는 다른 부분들을 처리해야하는 게 많아서 다르더라고요. RN을 계속하게되면 웹 React 경력으로는 볼 수 없는건지 아니면 호환 가능할지 의견을 구합니다.

개발자

#react-native

#react

#경력

#프론트

답변 0

댓글 0

조회 51

7달 전 · 익명 님의 질문

물경력 2년차 개발자 이직에 대해서

비전공자 국비로 시작해서 어느덧 2년차 개발자가 됐습니다. 프론트 개발자(react)를 준비하던 중 작은 기업에서 Java 백엔드를 가르쳐주겠다 하여 입사했지만 들어가서 처음 접한 언어는 php... 회사 내 개발자는 cto, 신입인 저 2명뿐이였는데 cto분도 제가 입사한지전공자 국비로 시작해서 어느덧 2년차 개발자가 됐습니다. 프론트 개발자(react)를 준비하던 중 작은 기업에서 Java 백엔드를 가르쳐주겠다 하여 입사했지만 들어가서 처음 접한 언어는 php... 회사 내 개발자는 cto, 신입인 저 2명뿐이였는데 cto분도 제가 입사한지 한달만에 퇴사... 어찌저찌 프리랜서를 구했는데 그 프리랜서도 3개월 하고 퇴사 비전공자고 인문학 출신인 내가 이직을 위해서는 경력이 필요하다 생각해서 군대 재입대 했다 생각하고 버티면서 이 회사에서 이것저것 다 했습니다. php로 웹 유지보수 하면서, RN로 webview 개발 및 android, ios 앱 배포, flutter 앱 개발하다가 자바공화국에서 이직을 하려면 java를 해야겠다 싶어서 java프로젝트에 제발 껴달라고 해서 작년9월쯤 java프로젝트에 합류하게 됐습니다. java spring boot로 자사 서비스 개발 및 유지보수, 지자체 프로젝트 이것저것 어찌저찌 주먹구구식으로 구글링하면서 개발하다보니 어느세 2년이 됐네요... 누구한테 제대로 배운 적이 없어서 저 혼자 서버 세팅이나 개발도 할 수 있을지... 2년 동안 한 것처럼 구글링 하다보면 어찌저찌 하겠지만 그게 과연 옳은 길인지 의심이 들던 중 대표의 밥 먹듯이 하는 가스라이팅과 깨끗하지 않은 제안에 이제 그만둬야겠다는 결심을 하게 됐습니다.. 그런데 요즘 취업 시장만 봐도 경기가 너무 안좋은데, 비전공자/인문학도인 제가 2년의 물 경력으로 이 험난한 취업 시장에서 살아남을 수 있을까요... 아님 1년만 더 견뎌볼까요... 두서 없이 쓴 긴 글을 읽어주셔서 감사합니다..

개발자

#이직

답변 0

댓글 0

조회 238

7달 전 · 문종호 님의 새로운 답변

RAG 를 짜는 중에 도무지 어떤 부분이 문제인지 모르겠습니다.

# JSON 파일에서 FAQ 데이터를 로드하는 함수 def load_faq_data_from_json(file_path): with open(file_path, 'r', encoding='utf-8') as f: faq_data = json.load(f) return faq_data # FAQ 데이터 로드 json_file_path = '' faq_data = load_faq_data_from_json(json_file_path) # ChromaDB 클라이언트 및 Embedding 설정 chroma_client = chromadb.Client() # ChromaDB 클라이언트 생성 # 고유한 컬렉션 이름 생성 collection_name = "faq_data_" + datetime.datetime.now().strftime("%Y%m%d_%H%M%S") collection = chroma_client.create_collection(collection_name) # LangChain의 Text Splitter 설정 text_splitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=50 ) # OpenAI 임베딩 설정 openai_api_key = '' embedding_function = OpenAIEmbeddings( model="text-embedding-ada-002", openai_api_key=openai_api_key ) # 텍스트 스플리팅 및 임베딩 생성 함수 def split_and_embed_text(text): splitted_texts = text_splitter.split_text(text) print(f"Splitted texts: {splitted_texts}") try: # OpenAIEmbeddings는 embed_documents를 사용합니다. embeddings = embedding_function.embed_documents(splitted_texts) except Exception as e: print(f"임베딩 생성 중 오류 발생: {e}") return None # 임베딩이 제대로 생성되었는지 확인합니다. if embeddings is None or len(embeddings) == 0: print("임베딩 생성 실패") return None # 임베딩을 numpy 배열로 변환 embeddings = np.array(embeddings) print(f"Embeddings shape: {embeddings.shape}") # 임베딩 벡터의 차원을 확인하고 처리합니다. if embeddings.ndim == 1 and embeddings.shape[0] == 1536: # 임베딩이 1차원 배열이고 길이가 1536인 경우 final_embedding = embeddings elif embeddings.ndim == 2 and embeddings.shape[1] == 1536: # 임베딩이 2차원 배열이고 두 번째 차원이 1536인 경우 final_embedding = np.mean(embeddings, axis=0) else: print("임베딩 벡터의 차원이 예상과 다릅니다.") return None print(f"Final embedding shape: {final_embedding.shape}") return final_embedding # FAQ 데이터를 Vector DB에 저장 def store_faq_data_in_vector_db(faq_data, collection): for faq in faq_data: # 'question'과 'answer'가 있는지 확인하고, 'answer'가 None이 아닌지 확인 if 'question' not in faq or 'answer' not in faq or faq['answer'] is None: print(f"누락된 'question' 또는 'answer'로 인해 항목을 건너뜁니다: {faq}") continue # 다음 항목으로 넘어감 # 텍스트 스플리팅 및 임베딩 생성 question_embedding = split_and_embed_text(faq['question']) if question_embedding is None: print(f"Embedding generation failed for question: {faq['question']}") continue # 임베딩이 없으면 다음 질문으로 넘어감 print(f"Generated embedding for question '{faq['question']}': {question_embedding}") # 각 질문에 고유한 ID 생성 faq_id = str(uuid.uuid4()) # 메타데이터에서 None 값을 제거 metadata = {k: v for k, v in {"answer": faq['answer']}.items() if v is not None} # Vector DB에 저장 collection.add( documents=[faq['question']], metadatas=[metadata], ids=[faq_id], embeddings=[question_embedding] ) # 추가 후 임베딩 확인 (저장된 후 곧바로 확인) stored_results = collection.get(ids=[faq_id], include=["embeddings"]) if stored_results['embeddings'] is not None and len(stored_results['embeddings']) > 0: print(f"Embedding for question '{faq['question']}' successfully stored.") else: print(f"Failed to store embedding for question '{faq['question']}'") # FAQ 데이터를 JSON에서 로드하고 저장 store_faq_data_in_vector_db(faq_data, collection) 이렇게 데이터를 저장하고 # 환경 변수에서 API 키 로드 openai_api_key = os.getenv("OPENAI_API_KEY") if not openai_api_key: raise ValueError("OpenAI API 키가 설정되지 않았습니다. 환경 변수 OPENAI_API_KEY를 설정하세요.") # OpenAI 임베딩 설정 embedding_function = OpenAIEmbeddings( model="text-embedding-ada-002", openai_api_key=openai_api_key ) # LangChain의 Text Splitter 설정 (일관성 유지) text_splitter = RecursiveCharacterTextSplitter( chunk_size=512, chunk_overlap=50 ) # ChromaDB 클라이언트 및 컬렉션 설정 chroma_client = chromadb.Client() collection_name = "faq_data_collection" try: # 이미 존재하는 컬렉션인지 확인하고, 있으면 가져옴 collection = chroma_client.get_collection(name=collection_name) except chromadb.errors.CollectionNotFoundError: # 컬렉션이 존재하지 않을 경우에만 생성 collection = chroma_client.create_collection(name=collection_name) # Vector DB에서 유사 질문 검색 (ChromaDB) def find_similar_question_in_vector_db(new_question_embedding, collection, k=5): results = collection.query(query_embeddings=[new_question_embedding], n_results=k, include=['documents', 'metadatas', 'embeddings']) best_similarity = 0 best_question = None best_answer = None # 검색 결과에서 각 질문의 유사도와 답변을 처리합니다. if 'documents' in results and 'metadatas' in results: documents = results['documents'][0] metadatas = results['metadatas'][0] embeddings = results['embeddings'][0] for i in range(len(documents)): stored_embedding = embeddings[i] metadata = metadatas[i] if stored_embedding is not None: # 코사인 유사도를 통해 유사도를 계산합니다. similarity = cosine_similarity([new_question_embedding], [stored_embedding])[0][0] print(f"유사도: {similarity} for {documents[i]}") # 유사도가 가장 높은 결과를 선택하며, 임계값 이상일 경우에만 선택 if similarity > best_similarity and similarity >= SIMILARITY_THRESHOLD: best_similarity = similarity best_question = documents[i] if isinstance(metadata, list): metadata = metadata[0] best_answer = metadata.get('answer') if isinstance(metadata, dict) else None return best_question, best_answer # Fine-tuned GPT를 사용해 새로운 답변 생성 def gpt_generate_response_from_finetuned_gpt(question, style="의사 A 말투"): prompt = f"다음은 환자의 질문입니다: \"{question}\". 아래 말투를 사용하여 질문에 대해 성실하고 정확한 답변을 작성해주세요.\n\ 말투: {style}" response = client.chat.completions.create( model="", # Fine-tuned된 GPT 모델 ID messages=[ {"role": "system", "content": "You are a helpful medical assistant."}, {"role": "user", "content": prompt}, ], max_tokens=300, temperature=0.7, # 답변의 다양성을 조절합니다. ) return response.choices[0].message.content.strip() # 새로운 질문 처리 및 최종 응답 생성 def generate_final_response(new_question, collection): # 텍스트 스플리팅 및 임베딩 생성 splitted_texts = text_splitter.split_text(new_question) new_question_embedding = np.mean(embedding_function.embed_documents(splitted_texts), axis=0) # ChromaDB에서 유사 질문 검색 similar_question, answer = find_similar_question_in_vector_db(new_question_embedding, collection) if similar_question and answer: final_response = f"질문: {new_question}\n유사 질문: {similar_question}\n기본 답변: {answer}" else: generated_answer = gpt_generate_response_from_finetuned_gpt(new_question) final_response = f"질문: {new_question}\nGPT로 생성된 답변: {generated_answer}\n(이 답변은 벡터데이터에서 유사한 답변을 찾을 수 없어 GPT에 의해 생성되었습니다.)" return final_response # 사용자로부터 새로운 질문 입력 받기 new_question = input("새로운 질문을 입력하세요: ") # 최종 응답 생성 response = generate_final_response(new_question, collection) print(response) 로 데이터베이스에서 유사한 질문-답변 쌍을 끌어오려는데 정확히 같은 질문을 넣어도 (이러면 유사도가 1인데) 저장되어있는 답변이 끌어와지질 않네요...

개발자

#llm#rag

답변 1

댓글 0

조회 101

9달 전 · 익명 님의 질문

앱 개발자 취업에 대해 궁금합니다!

지금 대학교4학년 25살 남 졸업 예정자 입니다. 취업에 대해 많은 고민이 있습니다. 일단 제가 하고 싶은건 프론트엔드 개발자입니다. 그리고 지금까지 해 왔던 프로젝트 총 3개가 안드로이드 앱 프로젝트 입니다. 1. 카카오와 관광공사 공모전에서 장려상을 받았으며 이 프로젝트는 지도를 이용하여 자신이 지니고 있는 알레르기릉 통하여 음식점을 추천해 주는 어플입니다. (스토어에 출시까지 해봤습니다.) 2.3은 한이음 참여한것 입니다.(상x) 2. 딥러닝을 이용한 회인식 어플을 만들었습니다. (스토어에 출시까지 해봤습니다.) 3. gpt기반 챗봇 아파트 가격 알려주는 어플 만들었습니다. 이런 상황이라 앱 프론트엔드 쪽으로 가면 어떨까? 라는 생각을 하고 있습니다. 지금까지 프로젝트에서 사용한 기술은 flutter, RN입니다. 가지고 있는 자격증은 정처기(필기)이며 실기 공부 중입니다. 이렇게 준비 해봤는데 어떤식으로 준비해봐야하나요.. 졸업하고 좀 빨리 취직하고 싶은데 괜찮을까요? 더 준비를 해야하는 상황일까요??

개발자

#취업

#취업고민

#flutter

#react-native

#앱개발자

답변 0

댓글 0

조회 56

9달 전 · 익명 님의 질문

NavigationContainer 중첩 오류

안녕하세요, RN(Expo)로 React Navigation을 적용하다 오류가 해결되지 않아서 질문드립니다. expo를 통해 다음과 같이 index.js에 React Navigation을 적용했습니다. import { store } from "@/redux/store"; import MainScreen from "./screens/MainScreen"; import { Provider } from "react-redux"; import { NavigationContainer } from "@react-navigation/native"; import { createNativeStackNavigator } from "@react-navigation/native-stack"; import LoginScreen from "./screens/LoginScreen"; export default function HomeScreen() { const Stack = createNativeStackNavigator(); return ( <Provider store={store}> <NavigationContainer> <Stack.Navigator> <Stack.Screen name="Main" component={MainScreen} /> <Stack.Screen name="Login" component={LoginScreen} />{" "} </Stack.Navigator> </NavigationContainer> </Provider> ); } 그러나 다음과 같은 오류가 뜨며 빈화면만 보이더라구요ㅠ Error: Looks like you have nested a 'NavigationContainer' inside another. Normally you need only one container at the root of the app, so this was probably an error. If this was intentional, pass 'independent={true}' explicitly. Note that this will make the child navigators disconnected from the parent and you won't be able to navigate between them. 찾아보니 NavigationContainer가 중첩되었다는 것 같은데, 저는 계속해서 그대로 강의를 따라가고 있었고, 따로 NavigationContainer를 적용한 파일이 존재하지 않습니다 ㅠ 다음 속성을 추가해도 오류가 해결되지 않습니다 ㅠ 아마 어디선가 부모에서 NavigationContainer가 적용된 것 같은데 찾을 수가 없네요 ㅠㅠ independent={true} 조금 더 찾아보니 expo-router랑 충돌이 난 거일 수도 있다는데 정확하게 모르겠네요 ㅠ

개발자

#react-native

#react-navigation

#expo

#navigationcontainer

답변 0

댓글 0

조회 109

9달 전 · 노원재 님의 답변 업데이트

ReactNative ios build 에러 3일째 해결을 못했습니다.

시뮬레이션을 실행하려고 해도 스크립트 문제, iPhone 버전 범위 문제, 시뮬레이터 문제가 계속 발생합니다. 어떤 도움이라도 감사합니다. ReactNative를 처음 접했습니다. 저희 팀에서 저를 도울 수 있는 사람이 없습니다. #프로젝트 환경 mac M2 ruby -v ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin23] node -v v20.10.0 pod --version 1.15.2 package.json { "name": "labts", "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-community/async-storage": "^1.12.1", "@react-native-community/cli": "13.6.9", "@react-navigation/bottom-tabs": "^6.6.0", "@react-navigation/native": "^6.1.17", "@react-navigation/native-stack": "^6.10.0", "@tanstack/react-query": "^5.51.5", "@types/react-native-vector-icons": "^6.4.18", "axios": "^1.7.2", "date-fns": "^3.6.0", "immer": "^10.1.1", "react": "18.2.0", "react-native": "0.74.3", "react-native-calendars": "^1.1305.0", "react-native-date-picker": "^5.0.4", "react-native-dotenv": "^3.4.11", "react-native-get-random-values": "^1.11.0", "react-native-image-crop-picker": "^0.41.2", "react-native-image-zoom-viewer": "^3.0.1", "react-native-paper": "^5.12.3", "react-native-permissions": "^4.1.5", "react-native-safe-area-context": "^4.10.8", "react-native-screens": "^3.32.0", "react-native-splash-screen": "^3.3.0", "react-native-tab-view": "^3.5.2", "react-native-vector-icons": "^10.1.0", "react-native-vision-camera": "^4.5.1", "uuid": "^10.0.0", "yarn": "^1.22.22" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/preset-env": "^7.20.0", "@babel/runtime": "^7.20.0", "@react-native/babel-preset": "0.74.85", "@react-native/eslint-config": "0.74.85", "@react-native/metro-config": "0.74.85", "@react-native/typescript-config": "0.74.85", "@types/react": "^18.2.6", "@types/react-native-dotenv": "^0.2.2", "@types/react-test-renderer": "^18.0.0", "babel-jest": "^29.6.3", "babel-plugin-module-resolver": "^5.0.2", "eslint": "^8.19.0", "jest": "^29.6.3", "prettier": "2.8.8", "react-test-renderer": "18.2.0", "typescript": "5.0.4" }, "engines": { "node": ">=18" } } PodFile require Pod::Executable.execute_command('node', ['-p', 'require.resolve( "react-native/scripts/react_native_pods.rb", {paths: [process.argv[1]]}, )', __dir__]).strip platform :ios, '12.0' use_frameworks! #use_modular_headers! prepare_react_native_project! linkage = ENV['USE_FRAMEWORKS'] if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end target 'nexlabts' do config = use_native_modules! use_react_native!( :path => config[:reactNativePath], # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) target 'nexlabtsTests' do inherit! :complete # Pods for testing end post_install do |installer| # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 react_native_post_install( installer, config[:reactNativePath], :mac_catalyst_enabled => false, # :ccache_enabled => true ) end end 제가 아래 에러 3가지에 대해 제가 해본 방법들입니다. 1. node 재설치 node_module 폴더 삭제, package-rock.json 삭제 후 재설치 npm install --legacy-peer-deps yarn install 2. Xcode가 node 읽을 수 있도록 설정 sudo ln -s "$(which node)" /usr/local/bin/node 3. Podfile 내 platform 설정 수정 platform :ios, '12.0' or platform :ios, '14.0' 4. Pods 재설치 rm -rf ~/Library/Developer/Xcode/DerivedData or rm -rf ~/Library/Developer/Xcode/DerivedData/* rm -rf Pods rm Podfile.lock pod install --repo-update Xcode \> Product \> Clean Build Folder. cd ./ios pod cache clean -all pod install --repo-update cd ../ npx react-native run-ios --no-packager --simulator="iPhone 15" or npx react-native run-ios --simulator="iPhone 15" or yarn start > i(run ios) Err 1. cocoaPods 설치할 때 [!] CocoaPods could not find compatible versions for pod "React-RuntimeHermes": In Podfile: React-RuntimeHermes (from ../node_modules/react-native/ReactCommon/react/runtime) Specs satisfying the React-RuntimeHermes (from ../node_modules/react-native/ReactCommon/react/runtime) dependency were found, but they required a higher minimum deployment target. Err2. iOS 실행할때 run-ios --no-packager --simulator="iPhone 15" Build description signature: fc1341421f84b87c5245d346c2c17b66 Build description path: /Users/nowonjae/Library/Developer/Xcode/DerivedData/nexlabts-argvodqcybjfcybstpulfpghnzvm/Build/Intermediates.noindex/XCBuildData/fc1341421f84b87c5245d346c2c17b66.xcbuilddata /Users/nowonjae/Desktop/project/NeXLabRN/ios/nexlabts.xcodeproj:1:1: error: Unable to open base configuration reference file '/Users/nowonjae/Desktop/project/NeXLabRN/ios/Pods/Target Support Files/Pods-nexlabts/Pods-nexlabts.release.xcconfig'. (in target 'nexlabts' from project 'nexlabts') warning: Unable to read contents of XCFileList '/Target Support Files/Pods-nexlabts/Pods-nexlabts-resources-Release-output-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') warning: Unable to read contents of XCFileList '/Target Support Files/Pods-nexlabts/Pods-nexlabts-frameworks-Release-output-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') error: Unable to load contents of file list: '/Target Support Files/Pods-nexlabts/Pods-nexlabts-frameworks-Release-input-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') error: Unable to load contents of file list: '/Target Support Files/Pods-nexlabts/Pods-nexlabts-frameworks-Release-output-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') warning: Run script build phase 'Bundle React Native code and images' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'nexlabts' from project 'nexlabts') warning: Run script build phase '[CP] Embed Pods Frameworks' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'nexlabts' from project 'nexlabts') error: Unable to load contents of file list: '/Target Support Files/Pods-nexlabts/Pods-nexlabts-resources-Release-input-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') error: Unable to load contents of file list: '/Target Support Files/Pods-nexlabts/Pods-nexlabts-resources-Release-output-files.xcfilelist' (in target 'nexlabts' from project 'nexlabts') warning: Run script build phase '[CP] Copy Pods Resources' will be run during every build because it does not specify any outputs. To address this warning, either add output dependencies to the script phase, or configure it to run in every build by unchecking "Based on dependency analysis" in the script phase. (in target 'nexlabts' from project 'nexlabts') --- xcodebuild: WARNING: Using the first of multiple matching destinations: { platform:iOS Simulator, id:B5AA2E84-4F83-4749-A986-A1FCE5E398A3, OS:17.5, name:iPhone 15 } { platform:iOS Simulator, id:B5AA2E84-4F83-4749-A986-A1FCE5E398A3, OS:17.5, name:iPhone 15 } ** BUILD FAILED ** ] Err3. Xcode 로 Build 할때 (Any iOS Simulator Device (arm64, x86_64)) Command PhaseScriptExecution failed with a nonzero exit code

개발자

#reactnative

#xcode

#reactnative-run-ios

답변 1

댓글 0

조회 553

9달 전 · 백승훈 님의 답변 업데이트

졸업 앞두고 부트캠프 준비 고민

안녕하세요 이제 4학년 막학기 다니고 있는 컴퓨터 전공 취준생입니다. 현재 나이 25살로 여학생치고는 적지 않은 편입니다. 그래도 IT쪽은 덜하다곤 하지만, 취업 시장에서 여자는 24, 25, 26세 안에 취업을 빨리 하는게 유리하다고 하셔서 괜히 마음도 조급해지는 상황입니다. 첫 직장이지만 그래도 최대한 대기업 목표로 취업 준비하려 합니다. 저는 현재 부트캠프 경험이 없는 상황인데 앞서 취업한 선배들 이야기나 주변 사람들을 보면 전공자라 하더라도 주요 부트캠프에 참여하면 확실히 이력서에 어필할 수 있는 내용이 훨씬 많다고 느꼈습니다. 그래도 그동안 여러 프로젝트를 진행하면서 기계식으로 코드만 짜지 않으려 노력했고, 그 과정에서 CS 지식을 프로젝트에 적용한 경험도 몇 번 있긴 하지만.. 주요 부트캠프 활동 내용과 비교하면 자소서에 매력적으로 어필하기에는 아직 턱없이 부족한 것 같습니다. 현재 스펙은 아래와 같은데 이 상태 그대로 취준(면접, 코테, 이력서 자소서)에 집중하고 어디든 빨리 취업을 하는게 나을지, 아니면 취업을 1년 미루더라도 부캠을 지원해서 스펙을 더 보충한 후에 본격적으로 취준에 뛰어드는게 나을지 너무 고민됩니다. - 대기업 방학 단기 체험형 인턴 - 교내 창업 아이템 개발 관련 대회 수상 2회 - IT 연합 동아리 (해커톤 경험 유) - 그 외 주요 프로젝트 경험 2개(웹, 앱 - RN) (오픽 성적은 아직 없고 시험 응시 신청해둔 상태입니다) 정리하자면 현재 스펙도 조금 아쉬운 것 같고(그래서 이력서나 자소서에도 확신이 안 듭니다), 무엇보다 직무 면접과 코테에도 자신이 없습니다. 어떻게든 내년에 진행될 부트캠프에 참여해서 스펙을 더 보완하고 1년 후에 본격적으로 취준에 뛰어드는게 나을지, 아니면 현재 스펙으로 빨리 취업에 집중(코테, 면접 준비 등)해야할지 잘 모르겠습니다. 짧은 조언이라도 좋으니 답변 남겨주시면 감사드리겠습니다. 감사합니다.

개발자

#취업

#신입

#부트캠프

답변 1

댓글 0

조회 531

10달 전 · 석정도 님의 질문

리액트 네이티브 릴리즈로 배포 시 build.gradle 설정대로 동작 안하는 이유가 뭔지 궁긍합니다.

안녕하세요. 현재 리액트 네이티브로 프로젝트를 진행하고 있습니다. 막바지 단계에 거의 도달해서 이제 배포 준비를 하려고 하는데요, 마지막으로 테스트를 하기 위해 stagingRelease 로 apk 를 만들어서 테스트를 하려고 하니, .env.staging 을 읽지를 못하고 있네요. 이상한건 stagingDebug 로 할 때에는 이런 문제가 없었습니다. 지금 환경변수는 루트 디렉토리에 env 폴더가 있고, 해당 폴더 내에는 3개의 환경변수 파일이 존재합니다. .env.development .env.staging .env.production 이렇게 3개 입니다. project.ext.envConfigFiles = [ productiondebug: "env/.env.production", productionrelease: "env/.env.production", developmentrelease: "env/.env.development", developmentdebug: "env/.env.development", stagingrelease: "env/.env.staging", stagingdebug: "env/.env.staging" ] 위의 코드는 제가 설정한 환경변수 매핑하는 부분입니다. 실제로 stagingrelease 로 빌드 시에 flavor 값이 stagingrelease 로 뜨는 걸 확인했습니다. node_modules 에서 react-native-config 폴더를 찾아서 dotenv.gradle 에서 찍으니까 확인이 가능하더라고요. 제가 궁금한 점은 왜 루트에서 .env 파일만을 읽어서 BuildConfig.java 에서 사용하려고 하는걸까요? .env.staging 을 참조하지 않는 이유가 궁금합니다. 아래는 dotenv.gradle 파일입니다. import java.util.regex.Matcher import java.util.regex.Pattern def getCurrentFlavor() { Gradle gradle = getGradle() def pattern = Pattern.compile("(?:.*:)*[a-z]+([A-Z][A-Za-z0-9]+)") def flavor = "" gradle.getStartParameter().getTaskNames().any { name -> Matcher matcher = pattern.matcher(name) if (matcher.find()) { flavor = matcher.group(1).toLowerCase() return true } } println "Current flavor: $flavor" return flavor } def loadDotEnv(flavor = getCurrentFlavor()) { def envFile = project.hasProperty("defaultEnvFile") ? project.defaultEnvFile : ".env" if (System.env['ENVFILE']) { envFile = System.env['ENVFILE'] } else if (System.getProperty('ENVFILE')) { envFile = System.getProperty('ENVFILE') } else if (project.hasProperty("envConfigFiles")) { project.ext.envConfigFiles.any { pair -> if (flavor.startsWith(pair.key.toLowerCase())) { envFile = pair.value return true } } } println "Reading env from: $envFile" def env = [:] File f = new File("$project.rootDir/../$envFile"); if (!f.exists()) { f = new File("$envFile"); } if (f.exists()) { println "Found env file: $f" f.eachLine { line -> def matcher = (line =~ /^\s*(?:export\s+|)([\w\d\.\-_]+)\s*=\s*['"]?(.*?)?['"]?\s*$/) if (matcher.getCount() == 1 && matcher[0].size() == 3) { env.put(matcher[0][1], matcher[0][2].replace('"', '\\"')) // 각 환경 변수 키-값 쌍 출력 println "Loaded env variable: ${matcher[0][1]} = ${matcher[0][2]}" } } } else { println("**************************") println("*** Missing .env file ****") println("**************************") } project.ext.set("env", env) } loadDotEnv() android { defaultConfig { project.env.each { k, v -> def escaped = v.replaceAll("%","\\\\u0025") buildConfigField "String", k, "\"$v\"" resValue "string", k, "\"$escaped\"" println "Set buildConfigField and resValue: $k = $v" } } } 안드로이드 스튜디오 터미널에서 ./gradlew assembleStagingRelease 명령어를 치게 될 경우, Current flavor: stagingrelease Reading env from: .env.staging ************************** *** Missing .env file **** ************************** 이런 로그가 뜨고 있습니다.

개발자

#react-native

#react-native-config

#다중환경변수

#release

답변 0

댓글 0

조회 67

10달 전 · 성지수 님의 새로운 답변

환경변수 주입 및 빌드(모노레포)

모노레포 프로젝트 환경 및 요구사항 - 프로젝트는 front(React), back(Node), common 패키지로 구성되어 있으며, 모노레포로 되어있음 - Dockerfile 스크립트에서는 build → run 순서로 실행되도록 구현되어 있음 - 서버 배포 시에는 하나의 포트만 사용해야 하므로 back(Node)에서 front의 정적 파일(index.html)을 실행해야 함 - Docker 빌드 시, front(webpack 빌드)와 back 둘 다 build 스크립트를 실행하고, 이미지 실행 시에는 back만 run 스크립트를 실행하여 back에서 front의 정적 파일을 실행해야 함 - 환경변수는 이미지 실행 시 docker-compose.yml의 env_file 속성을 사용해 외부에서 주입해야 함(환경변수가 바뀌는 상황이 있다면 .env 파일을 수정한 후 다시 빌드해야 합니다.) 예외 상황 Docker 빌드할 때 .env 파일을 포함하지 않고 run 스크립트를 실행(이미지 실행) 시 주입하는데, front 패키지에는 run 스크립트가 존재하지 않습니다. (back에서 front의 정적 파일을 실행) 즉, 환경변수가 주입되지 않고 있음 해결 방법 첫번째는 back에서 front의 dist 파일 호출 시 환경변수 객체를 만들어 value 값을 key 값으로 치환해서 함께 넘기고, index.html의 head에서 window 객체를 활용해 값을 받는 방법 하지만 이 방법은 개발자 도구에서 환경변수 값이 노출되고, window 객체를 활용하기 때문에 새로운 브라우저를 생성할 때마다 사이드 이펙트가 발생할 수 있음 두번째는 모노레포 root 패키지에서 prerun 스크립트로 front의 build 스크립트를 실행하는 방법 스크립트 -> "prerun": "lerna run build --parallel --scope @projectname/front --stream", 이 방법은 빌드를 두 번 실행하므로 자원을 많이 소모하지만, 예외 상황이 없는 것으로 보임 질문 받은 내용 Q. 환경변수를 바꾸는 상황이 존재할까요? A. 회사의 인프라 환경에 따라 다르지만, 포트나 IP가 변경될 수 있는 상황이 있음 예를 들어, 외부 서버에 요청을 보낼 경우 그 서버의 정보가 바뀌면 설정을 변경해야 하며, 다른 서버에 요청할 때 인증 정보를 입력해야 하는데, 토큰이나 사용자 패스워드 값이 변경될 경우에도 수정이 필요함 고민되는 부분 다른 해결 방법이나 비슷한 상황이 있다면 함께 논의하고 싶습니다. ㅎㅎ *프로젝트 구조 root ├── packages │ ├── back │ │ ├── package.json │ │ ├── index.ts │ │ ├── .babelrc │ │ └── ... │ ├── common │ ├── front │ │ ├── public │ │ │ └── index.html │ │ ├── package.json │ │ ├── src │ │ │ └── index.js │ │ ├── src │ │ ├── webpack.config.js │ │ └── ... ├── package.json ├── lerna.json ├── docker-compose.yml ├── Dockerfile * 프로젝트의 중요 정보는 제외했습니다.

개발자

#환경변수주입

#모노레포

#빌드

#node.js

#react

답변 1

댓글 0

조회 105

10달 전 · 김영민 님의 새로운 답변

비밀번호검증 질문 (백엔드 프론트엔드 연동 )

저는 컴퓨터공학과 학생이지만 개발이 처음입니다. 프론트엔드를 맡아 리액트 네이티브 앱을 개발하는 중입니다. 기초 지식은 있지만 학교 수업만 들어봤기 때문에 실제로 서비스를 어떻게 만드는지는 몰라, 이번 프로젝트에서는 사실상 GPT가 다 짜줬다고 해도 무방한 정도였어요. 프로젝트가 거의 다 끝나가는데, 백에서 비밀번호에 암호화를 걸면서 수정사항이 생겼습니다. if (existingProfile.password !== profile.oldPassword) { Alert.alert('비밀번호 오류', '기존 비밀번호가 올바르지 않습니다.'); return; } 기존에는 위와 같이 단순하게 비교를 했었는데, 백에서 암호화가 되어버려서 저런 단순한 로직을 사용할 수 없게 되었습니다. 대신 백에서 currentPassword(클라이언트에서 입력받은 비밀번호), getPassword함수(암호화되지 않은 사용자 계정의 기존 비밀번호를 받아오는 함수)를 bcrypt를 이용해서 알아서 다 처리하도록 코드를 다 짜주셨다고 하더라고요. 백엔드 코드는 사진으로 올려두었는데, if (passwordEncoder.matches(currentPassword, user.getPassword()))를 통해서 두 비밀번호가 일치하는 경우에만 정보가 수정되도록 코드가 작성되어 있습니다. 로직은 충분히 이해가 가는데, 이를 프론트엔드 코드에 어떻게 적용해야하는지 전혀 모르겠습니다. 구글링을 어떻게 해야 이런 경우의 풀이가 나오는지도 모르겠고, 찾아봐도 백엔드에서 암호화를 하는 방법이나 해시를 하는 방법 같은 것만 나오네요. 이 문제를 해결하기 위해 일주일 내내 노트북만 붙잡고 있었는데 멘탈만 부서지고, 코드는 아무것도 나아지지 않았습니다. 부디 많은 조언과 도움 부탁드립니다.

개발자

#비밀번호

#프론트엔드

#react-native

#front-end

#javascript

답변 1

댓글 0

조회 187

10달 전 · 익명 님의 새로운 댓글

애플리케이션 프론트엔드 프레임워크 추천

백엔드 개발자로써 개발경험을 쌓고 싶어서 개인 프로젝트를 진행하려고 합니다. springboot를 사용할 생각이고 ios, android 모두 가능하게 개발하고자 합니다 Vue.js나 Rn을 생각하고 있었는데 선배님들이 생각하시는 괜찮은 프론트엔드 프레임워크 추천해주시면 감사하겠습니다.

개발자

#back-end

#front-end

#vue.js

#reactnative

#spring-boot

답변 1

댓글 1

추천해요 1

조회 70

일 년 전 · 이상래 님의 새로운 답변

MERN 스택 신입 개발자도 취업이 잘 될까요?

https://fullstackopen.com/en/ 이 사이트에서 공부를 할예정인데 과정을 보니 MERM 스택인 것 같습니다. 한국은 자바 공화국이라는 말을 많이 들어서 걱정이 되서 질문 드립니다. 만약 취업이 괜찮다면 지금부터 바로 열심히 할 예정인데 현업자분들의 의견이 듣고 싶습니다!

개발자

#javascript

#react

#mern

#mernstack

#fullstack

답변 1

댓글 0

조회 147

일 년 전 · 익명 님의 새로운 댓글

군대에서 웹 공부를 시작하려고 합니다. 도움을 구합니다.

컴퓨터공학과 1학년을 마치고 입대한 군인입니다. 1학년 1학기때 Python, 2학기때 C언어 수업 들었습니다. 기억이 많이 남아있지는 않습니다. 군대에서 웹 프론트엔드 공부를 시작하려고 합니다. 로드맵을 참고해서 Internet > HTML > CSS > JavaScript 으로 공부하려고 합니다. 1. HTML, CSS, JS 입문서에 대한 추천을 구합니다. - 직접 사용해보신 책이나, 지인들의 경험담도 모두 감사히 읽겠습니다. 2. 제가 생각하는 공부 순서가 맞는지 여쭙고 싶습니다. - 웹 프론트엔드를 공부하기로는 확실히 결정한 상태고, Internet>HTML>CSS>JS 으로 진행하는 것이 맞는지. 아니면 동시에 진행을 해야하는 것이 있는지 여쭙습니다. 3. 혹시 군대에서 개발공부를 시작해보신 분의 조언을 구합니다. - 현재 저는 싸지방에서 정보를 찾아보고, 개발공부 환경을 만들어보려고 여러가지를 찾아보고 있습니다. 혹시 이와 비슷한 경험이 있으시다면 감히 조언을 구합니다. 4. 그 외로 해주시고 싶은 말씀이 있으시면 남겨주시면 정말 감사히 읽겠습니다. - 저는 무엇을 질문할지도 아직 잘 모르는 사람입니다. 오지랖이라고 생각마시고 어떤 조언이든지 남겨주시면 정말 감사하겠습니다.

개발자

#프론트엔드

#웹

#자바스크립트

#html-css-js

#군대

답변 1

댓글 1

조회 61

일 년 전 · 개발새발 님의 질문 업데이트

@nestjs/cli로 설치한 프로젝트는 yarn berry설정이되어있나요?

안녕하세요, 제목그대로 @nestjs/cli 로 설치한 프로젝트는 yarn berry 설정이 되어있는건가요? yarn로 선택하여, 보일러플레이트를 다운받아왔고 yarn install 해줬는데 사진처럼 구조가 되었습니다. ( 사진을 클릭하시면 .yarn 폴더도 생성되어있는걸 확인하실수 있습니다.) 그러면 yarn berry 설정이 되어있는걸까요? yarn set version berry 를 입력해주지않아도되는건가요? 1. yarn berry 설정이 되어있으니 yarn set version berry를 안해줘도 된다. 1-1. 그러면 pnp (제로인스톨)옵션이 적용되어있는건가요? 2. .yarnrc.yml파일이 없으니 적용이안되어있는거다. yarn set version berry를 해줘야한다. 2-1 .yarnrc.yml에 nodeLinker: pnp 를 적어서 pnp 옵션도 제대로 적용시켜줘야한다. 혹시 1번과 2번중 어떤게 맞는걸까요? 혹시 2번이라면 @nestjs/cli로 설치한 프로젝트는 yarn install해줘도 node_modules 폴더가 생성되지않고 .yarn 폴더안에unplugged 폴더가 설치되어있고 여기에@nestjs-core나 prettier 폴더들이 되어있는데.. 이거는 왜 그런건지 알고싶습니다

개발자

#yarn-berry

답변 0

댓글 0

조회 59

일 년 전 · 익명 님의 새로운 댓글

React Native 포트폴리오로 React 개발자로 지원해도 될까요?

원래는 리액트 개발자를 준비하다가 사이드프로젝트에서 RN 개발자들만 구하셔서 RN쪽 포트폴리오를 준비하게 되었습니다. 요즘 취업사이트를 들어가보니 RN은 신입을 잘 구하지 않더라구요🥲 그래서 예전에 React 개발자로 인턴경력 + RN 포폴 경력으로 다시 중고신입으로 지원서 넣어보려고 하는데 포폴이 React Native여도 React 개발자로 지원해도 될까요..?

개발자

#react-native

#이직

#취업

#신입

#react

답변 1

댓글 1

추천해요 1

조회 182

일 년 전 · nationdistributors00 님의 질문

United Distributors

At NationDistributor, quality is our first concern. We select our goods from reliable producers to guarantee that each item lives up to our exacting standards. You may be sure you're receiving the greatest items available when you pick us to be your wholesale supplier. With your consumers, our dedication to quality helps you establish a reliable reputation usa wholesale suppliers. https://nationdistributor.com/

개발자

#united

#distributors

답변 0

댓글 0

조회 22

일 년 전 · 삭제된 사용자 님의 댓글 업데이트

안녕하세요.. 정말 이것저것 다 해봤는데 안되네요 ㅠ

안녕하세요. 리액트와 리액트 쿼리를 이용해 프로젝트를 진행 중 입니다. 저는 일단. src/hooks/useProduct.jsx 라는 커스텀 훅 을 만들었습니다. 제 계획은 1. 맨 처음 최상단 Home.jsx 에서 useProduct 라는 커스텀 훅 호출 2. 자식컴포넌트에 data를 전달 3. Search.jsx에서 받은 filter값으로 커스텀 훅 안의 query 재실행 4. 바뀐 상태는 Home.jsx 가 다시 받고 자식 컴포넌트에게 전달. 1~3까지는 콘솔찍어가면서 잘 되는데 4.는 되지 않습니다. (쿼리 데이터가 바뀌어도 4이 재 실행이 안됨..) ㅠㅠㅠㅠㅠㅠㅠ 쿼리 옵션도 줘보고 전역 상태도 만들어보고 이것저것 다 해봤는데 ㅠㅠ 혹시 아시는분 계신가요..? 어떠한 답변도 정말 감사히 받겠습니다 간략 코드첨부) Home.jsx const Home = ()=>{ const { data, error, isLoading } = useProduct(); return ( <Search /> <List data={data?.product} /> ); }; export default Home; Search.jsx const Search = () => { ```일부코드생략``` const { updateQuery } = useProduct (); const handleSubmit = () => { const searchData = { productId }; updateQuery(productId); }; } return( ```일부코드생략``` <button onClick={handleSubmit}> 조회 </button> ) } export default Search; useProduct.jsx const useProduct = () => { const [queryData, setQueryData] = useState(); const { data, error, isLoading } = useQuery({ queryKey: ["product", queryData], queryFn: () => fetchProduct(queryData), }); const updateFilters = (queryData) => { setQueryData(() => (queryData); }; return { data, error, isLoading, updateQuery , }; export default useProduct ;

개발자

#react

#react-query

#react-query-v5

답변 3

댓글 6

조회 116

일 년 전 · 김민식 님의 새로운 답변

대학생 진로고민.. 조언 부탁드립니다.

안녕하세요, 저는 현재 4년제 서울 중하위권 대학교 컴퓨터학과에 재학 중인 학생입니다. 졸업도 슬슬 준비해야하고 방학때 공부를 좀 하면서 개인 프로젝트를 할까 준비 중에 선배님들의 조언을 받고자 글을 씁니다! 현재 학부생 레벨이지만 c/c++/java/python 기본정도 다룰 수 있고, 웹 백엔드(Spring & mysql)로 토이프로젝트 2번 정도 한 상태입니다. 졸업은 내년까지 다니고 26년에 할 것 같습니다. 웹이 재미가 없는 건 아니지만, 앱쪽에 흥미가 더 있어, SwiftUI로 앞서말한 토이프로젝트를 진행하면서 따로 공부하여 작은 메모가 가능한 앱을 만들어봤습니다. 공부를 하면서 구현도 해보니 흥미나 관심이 iOS쪽에 있는 것 같아 각종 정보나 전망, 각종 구직 사이트에 들어가 열심히 찾아봤습니다. 검색해본 결과 대체적으로 전망이 많이 안좋더군요.. iOS신입을 뽑는 자리도 없고, 네이티브 쪽은 무조건 경력자를 뽑고, 신입으로는 플러터나 RN을 뽑는 것 같은데 그마저도 적거나 경력자를 뽑는 것 같습니다. 처음에는 마음을 접고 그냥 백엔드를 계속 공부해야하는 건가 싶었지만 자꾸 관심이 iOS(Swift)쪽으로 관심이 갑니다. (안드로이드가 아닌 iOS를 말씀드리는 이유는 제가 사용하는 기기들이 전부 애플 제품이라 iOS쪽에 더 마음이 갑니다.) 그래서 현재 생각한 계획이 올해 여름/겨울방학에는 Swift를 공부하면서 개인프로젝트도 하고 겨울방학쯤에는 기회가 된다면 팀을 꾸려 팀단위 토이프로젝트를 진행하고 싶습니다. 그리고 내년에는 Swift + 플러터를 공부하면서 취업 준비를 해볼까합니다. 아무래도 네이티브만 다룰 수 있는 것 보단 둘다 할 줄 아는게 경쟁력이 생길 것 같아 준비해보려해요. 선배님들이 보시기에 괜찮은 계획일지 궁금합니다! 다만, 사실 제일 걱정이 되는건 현재 개발자 시장이 엄청 안좋은데 과연 제가 취업을 할 1-2년 후에는 신입 iOS 개발자가 설 자리가 있을지 걱정됩니다… 물론 진짜 잘한다면 취업은 되겠지만.. 아무래도 학교를 늦게 들어와서 나이도 찼고, 막연하게 하고 싶은걸 진로로 잡기에는 걱정이 앞서네요. 쓴소리도 좋고 현실적인 얘기도 좋습니다. 선배님들의 생각이나 조언을 해주시면 감사하겠습니다!

개발자

#앱개발

#swift

#ios

#앱

#진로고민

답변 2

댓글 0

추천해요 1

조회 348