#ble

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

5일 전 · aigoia 님의 답변 업데이트

저 중소 si에서 중견/대기업 si로 이직 할 수 있을까요?

안녕하세요. 앞으로의 진로가 너무 고민인 5년차 남자입니다! 좀 긴 글이라서 미리 양해를 부탁 드립니다.. 자격증 x (정처 필o, 실기 준비중 7월 시험) 현재 4년 좀 넘게 다니던 중소si 회사를 퇴사하고, 프리로 전향해서 초까지 하다 현재는 쉬면서 이직 준비를 하려고 하고 있어요. 핑계지만, 몸도 그렇고 정신적으로도 그렇고 일하면서 병행하면 너무 힘들 거 같아서 쉬면서 준비하려고 합니다. 아래는 해온 일들 입니다. ###. [통신사 B2C 오더처리 시스템 si/sm] (통신사 k*) 대략 2년 K*망 기반 블*** 연계 서비스의 개통·해지·번호 변경 등 다양한 오더 업무를 담당하며, 시스템 운영 및 기능 개선 수행 통신사 업무 특성상, 도메인 지식 없이는 개발이나 유지보수가 어려워 초반에는 업무 이해도를 높이는 데 집중해야 했습니다 1. 요구사항 분석 - 운영팀과의 화상회의 주 1회 참여 - 업무 흐름 및 요청사항에 대해 정의서 및 분석 문서 작성 2. 개발 및 문서화 - 기능 개발 및 단위 테스트 수행 - 개발 문서 및 QA 문서 작성 3. 코드 검토 및 공유 - 코드 리뷰 진행 - IA(Information Architecture) 문서 작성 및 발표 - 개발/QA 문서 발표 4. 운영 이관 및 배포 - 테스트 완료 후 운영 이관 작업 수행 - 정기 배포 일정에 맞춰 배포 완료 개발보다는 요구사항 분석 빡세게 하고, 설계는 사수 도움 좀 받으면서 개발하고 테스트하고 모든 걸 문서화해서 운영팀이 참석한 회의에서 발표했었네요. 연동 테스트 시나리오 같은 건 직접 짜고, 일정 협의해서 진행했습니다. 상세 업무까지는 기억 나지 않는 상태입니다. ###. [건설 ERP 인사/채용 시스템 구축](포*코 E**) 9개월 - 인사/채용 관리 ERP 시스템 화면 및 연동 기능 개발 1. 인사·채용 화면 개발 2. 사용자 편의성 중심 UI 개선 및 외부 연동 모듈 적용(프린트:외부 출장 대응 - 더*) 외부 연동 모듈은 메뉴얼 및 가이드 문서 요청해서 받고 문서 토대로 적용 시키고 테스트 했습니다. ###. [통신사 대용량 파일 처리 시스템 개발] (K*) · 4개월 1. 기존 레거시 소스 분석 후 Runnable 기반 멀티스레드 구조로 개선 2. 수천만 건 규모의 데이터를 스레드 단위로 분할 조회하여 파일 생성 및 압축 처리 구현 3. 생성된 파일을 SFTP를 통해 외부 시스템으로 전송하는 크론탭 기반 배치 스케줄링 적용 ###. [공공기관 시스템 운영 및 유지보수] (수*시*) 1년 - 혼자 공공기관 포털 시스템 유지보수 및 운영 전반 업무 수행 1. 시스템 화면 생성, API 연동, 기초 DB 스키마 설계 및 생성 2. 외부 시스템 연동 및 협의, 타 시스템 API 개발 및 문서 제공 3. 인증서 갱신, 라이선스 관리, 취약점 분석 및 조치 4. 주간 보고서 작성 및 관리 업무 수행 5. CentOS → Rocky Linux 신규 서버 환경에서 애플리케이션 폴더 구조 및 구성 요소 재설정, 운영 환경 이관 작업 수행 6. 서비스 장애 대응 AWS EC2 서버에 GitHub 연동 CI/CD 자동 배포 파이프라인 구축해서 도메인 연결까지 한 상태로 사이드 프로젝트를 현재 진행 중이고, 깃허브와 velog에 정리 하면서 부족한 개발 역량을 키우고 있습니다. 아무래도 이제까지 해 온 걸 토대로 녹여내면서 공부하고 정리할 거 같습니다. 하지만 그 전에 조언을 듣고 좀 더 나은 방향을 잡는데 참고하고 싶어서 이렇게 글을 적었습니다. 개발 역량은 턱없이 부족하다고 느끼고 있고, 알고리즘, 자료구조 지식 또한 낮다고 생각합니다. 코딩 테스트 준비 해본 적은 없습니다... 막상 회사를 목표로 이직 하려고 하니 막막합니다... 잠도 줄이면서 깨어있을 때 전부 공부하면서 준비할 자신 있습니다. 대기업은 고사하고, 중견기업 si/sm 라도 갈 수 있을까요? 개발 뿐만이 아니라, 문서 작업, 관리 쪽으로도 생각을 하고 있습니다.

개발자

#이직

#중견si

#대기업si

답변 1

댓글 0

조회 72

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

신입 백엔드 포트폴리오 이렇게 작성하는게 맞을까요???

안녕하세요 백엔드 직군을 준비하는 신입 개발자입니다. 포트폴리오를 작성했는데, 다음과 같이 구성을 했습니다. 아래는 대략적인 내용 구성입니다. 제목 : "스스로 문제 해결하는 " 신입 개발자 <팀 프로젝트> - Out Of Memory : unable to create native thread 크롤링 과정 thread가 500개 정도 비정상적으로 생성되는 것을 visualVM으로 분석하고, 모니터링 로그를 분석한 결과 데몬 스레드가 백그라운드에서 종료되지 않음을 발견함. 따라서, 자원 회수 및 공통 객체를 싱글톤으로 등록해서 스레드 수 40~60개로 유지 -> 운영 문제 해결 <개인 프로젝트> - Accept 큐 overflow해결 10000명 부하테스트에서 에러율 2~3% 포착함. 로그 분석한 결과, TCP Zerowindow로 서버 버퍼 오버플로우로 추측 톰캣 accept 큐 100 -> 200으로 증가하니 에러율 0% -> 문제 해결 - redis 캐싱 웹 사용자 80%가 최신글에만 방문한다는 논문을 발견함. 따라서, 이에 맞게 redis를 사용해서 해당 page 부근만 캐싱을 함. 부하테스트 결과 throughtput 40% 개선, latency 30% 개선 포트폴리오를 이런식으로 내용 구성을 했는데 괜찮을까요??? 다른 분들 포트폴리오를 보니 기능 구현이 위주던데 이런식으로 구성해도 괜찮을지 솔직히 잘 모르겠습니다... 분량은 7장 정도입니다. 조언 부탁드립니다.

개발자

#포트폴리오

#백엔드

#java

#신입

#이력서

답변 2

댓글 2

조회 248

한 달 전 · 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

조회 22

3달 전 · 흔꽃샴 님의 질문

데이터분석가는 개발자처럼 야근이 많나요..?

데이터분석가를 꿈꾸고 있는 대학생입니다. 개발도 재미있지만, 야근이 정말 싫어서 그나마 나을것같은 데이터분석가를 진로로 정했습니다. 1) 분석가는 야근이 많은지 궁금합니다. 어딜가나 어쩔 수 없는 한두번의 추가근무는 괜찮습니다. 그러나 잦은 야근은 힘들것같네요. 2)포트폴리오를 어쩧게 짜야할 지 고민입니다ㅠ (사이언티스트× 분석가○) 또, sql,데이터분석, 퍼널분석,tableau 정도만 알고있는데 또 공부해야 할 것이 있을까요?

PM/PO/기획자

#데이터-분석가

#마케팅

#야근

#개발자

답변 0

댓글 0

조회 117

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

조회 83

5달 전 · Learning by Doing 님의 새로운 답변

퇴사한 회사에서 수행했던 데이터 분석 작업물, 이직시 포트폴리오 자료로 사용할 수 있나요?

안녕하세요, 신입 데이터 분석가입니다. 외국계 기업에서 계약직 신분으로, 데이터 분석 직무를 수행하다가 최근에 계약이 끝났습니다. 첫 경력이었던 만큼, 이를 잘 발판 삼아서 취업 준비를 다시 하려고 하는데요. 직무가 데이터 분석인 만큼, 경력을 업데이트한 이력서뿐만 아니라 포트폴리오 준비도 중요하다고 생각합니다. 서류 제출과 면접 단계에서 직무 성과와 전문성을 어필하기 위해, 재직했던 회사에서 수행한 데이터 분석 작업물을 정리해서 포트폴리오로 만들려고 하는데요. Q. 재직했던 회사의 작업물을 포트폴리오로 제작하여 이직시 서류와 면접에서 활용하는 것이 통상적인지 궁금합니다. Q. 만약 통상적이라면, 시각화 자료와 대시보드를 포트폴리오에 포함시키되, 회사 관련 모든 데이터(명칭, 수치 등)는 블러/픽셀 처리하면 충분한지 궁금합니다. ※ 이전 직장에서 데이터 분석을 수행한 2개의 작업물이 있고, 특징은 다음과 같습니다. [작업물 A] - 제 개인 PC 상에서 전담하여 수행 - Python으로 데이터 처리, 모델링, 시각화 등을 수행 - 회사의 매출 데이터(유통 채널별/일별/상품 카테고리별) 사용 [작업물 B] - 회사 PC 상에서 전담하여 수행 - Tableau로 대시보드를 제작 - 회사의 매출 데이터(유통 채널별/일별/상품 카테고리별) 사용 ※ 제가 날인한 사직원에 다음과 같은 조항이 있었습니다. “재직시 지득한 업무내용이나 각종 정보 기타 제반 비밀사항을 타인에게 누설할 경우 회사의 경영에 막대한 손해와 피해를 준다는 사실을 이해하고 일체 이를 누설, 공개하지 않겠습니다. 상기 사항을 위반할 시, 이유 여하를 막론하고 서약에 의거 민, 형사상의 모든 책임을 지며 회사가 요구하는 손해배상의 의무를 지겠습니다”

PM/PO/기획자

#데이터분석

#회사작업물

#포트폴리오

답변 1

댓글 0

조회 407

5달 전 · 익명 님의 질문

React 리렌더링 질문있습니다.

안녕하세요. React를 사용하는 프로젝트에서 테이블을 생성하여 editable 가능하도록 개발하고 있습니다. 해당 테이블에 input도 있고 switch 기능도 있습니다. editable 테이블의 경우 전체 테이블 값을 다 받아서 업데이트 하는 형식입니다. 원래는 ref를 사용해서 진행하려고 했는데 input 과 switch 가 동시에 있어서 row 단위에 값을 받을 때 문제가 발생됩니다..(rows state 와 ref 와 데이터 불일치가 발생됨) 저는 input 에 1글자 쓸 때마다 리렌더링 되는게 안좋다고 생각해서 ref를 사용한건데 그냥 rows state만 사용하고 memo로 리렌더링을 줄이는게 맞을까요? 고견부탁드리겠습니다(_ _)

개발자

#react

답변 0

댓글 0

추천해요 1

조회 40

6달 전 · 상현 님의 새로운 답변

invalidateQueries가 실행되지 않습니다.

mutate 함수 내부에서 onSuccess:()=>{ queryClient.invalidateQueries({ queryKey: ["USERINFO"] }) navigate("/") } 를 실행하는데 mutate함수는 잘 실행되고 이후에 경로 이동도 잘되는데 useQuery훅 네트워크 요청 자체가 가질 않습니다. refetchType, refetchOnMount, enabled, refetchQueries, prefetchQueries등등 다 시도해 봤는데 안됩니다..! 거의 100번 정도 테스트해봤을때 2번정도? 우연치않게 됐던거같은데 이때 빼고는 전부 안됐습니다ㅜㅜ 어떻게 해야할까요??

개발자

#invalidatequeries

답변 3

댓글 1

조회 91

7달 전 · 강정진 님의 질문

안녕하세요 초보 개발자 입니다. 오라클 데이터베이스 백업 오류좀 도와주세요 !!

기존 데이터베이스 서버를 외장하드에 백업 하려고 하는데 UNDO TABLESPACE 인 UNDOTBS01.DBF 라는 파일을 읽을 수 가 없다고 떠서 UNDO TABLESPACE 인 UNDO_NEW01.DBF를 만들고 UNDO_NEW01.DBF가 UNDO 역할을 하게끔 만들어 놓고 기존에 쓰던 UNDOTBS01.DBF 파일을 삭제하였습니다. 그랬더니 계속 RMAN-06056 : 3 데이터를 엑세스 할 수 없습니다. 라면서 RMAN으로 백업이 안되는데 도와주실분..!

개발자

#데이터베이스

#database

#oracle

#db

답변 0

댓글 0

조회 40

8달 전 · 성민형 님의 질문

피드백 부탁드리겠습니다!!!

안녕하십니까! 주니어, 시니어 개발자 선배님들 저는 20대중반 비전공자 고졸 국비 출신인 웹 백엔드 개발자를 목표하고 있는 취준생입니다. 바쁘시겠지만 부디 저의 포트폴리오와 깃허브를 봐주시고 앞으로의 공부 방향성과 포트폴리오 피드백 등 선배님들이 이렇게 했으면 좋겠다하는 것들을 말씀해주시면 감사하겠습니다. 이제 기초수준이 될랑 말랑한 실력과 지식이지만 저는 꼭 개발자가 되고싶습니다! 비난이나 욕도 겸허히 받아드리겠습니다. 피드백 꼭 부탁 드립니다!!! [GitHub](https://github.com/MungDon) [노션포트폴리오](https://possible-orangutan-464.notion.site/MungDon-10f4cc2b92238026a59dd15fd2beb0bb)

개발자

#백엔드개발

#개발자-도전

#개발자-취업

답변 0

댓글 0

조회 83

8달 전 · 최성우 님의 질문

프로덕트 디자이너 클래스 수강생 모집합니다!

도프디 신청하기 👉 https://swooparupa.framer.website/pdchallenge 단순히 분석 단계에서 그치지 않고 문제 해결자(Problem solver)가 될래요. 문제를 직접 발견하고 주도적으로 해결책을 제시할 수 있는 프로덕트 디자이너가 되기까지. 진심으로 성장하고 싶은 분들만 신청하세요. 도프디, 어떤 곳인가요?🙋‍♂️ - 다양한 사람들이 모여 서로 자극받으며 프로덕트 그리고 디자인에 대해 고민하고 성장하는 곳이에요. - 이곳에서는 화려한 이력이 중요하지 않아요. 다만, 성장하고자 하는 의지와 배워서 남주는 것을 좋아하는 마음가짐이 필요해요. - 자유로운 피드백을 통해 건강한 성장을 지향해요. 확증편향을 갖고 자신의 신념과 다른 정보를 무시하거나 비난하지 않아요. 이런 점이 좋아요!🥰 - 프로덕트 디자이너가 일하는 방식을 간접적으로 경험할 수 있어요. - 100% 실무 기반으로 다양한 산업과 서비스에 대해 깊게 고민해 볼 수 있어요. - 같은 문제를 가지고 나와 다른 다양한 관점의 문제 해결 방식을 확인해 볼 수 있어요. - 매주 제공되는 챌린지를 활용하여 본인 블로그 혹은 브런치 콘텐츠로 활용해 보세요. - 블로그와 브런치가 없다면 이참에 개설해 보세요. 반드시 좋은 기회가 생길 거예요. 이런 분들 너무 반가워요!🤝 - 프로덕트 디자이너 직무로 취업 혹은 이직을 원해요. - 프로덕트 디자이너가 실무에서 어떤 일을 어떻게 하는지 잘 모르겠어요. - 프로덕트 디자이너로 일하고 있고 성장을 위한 동기부여가 필요해요. - 다양한 업계 사람들과 지속 가능한 네트워킹을 하고 싶어요. 이런 것들을 함께 해요!👨‍👩‍👦‍👦 - 매주 월요일 모더레이터가 하나의 서비스의 가상 데이터 혹은 내/외부 피드백(VOC)을 통해 프로젝트 배경을 제공해요. - 해당 배경을 통해 토요일 23:59까지 가설 정의부터 문제 해결 방식을 공유해요. - 문제에 따라 시각화 작업물이 필요하다면, 시각화 작업물까지 공유해요. - 문제 해결 시, 개선 전(AS-IS)과 개선 후(TO-BE)를 확인할 수 있다면 매우 좋아요. - 도프디원들이 공유한 작업물을 보며 자유롭게 의견을 나눠요. 이곳에서는 틀린 것은 없고 다름을 인정하고 서로의 관점을 배우고 성장해요. 학습이 습관이 될 수 있도록 밀착 관리해요!💪 - 모든 공유글에 모더레이터가 실제 현업에서 발생할 수 있는 피드백과 질문을 드려요. 질문에 대한 답변을 통해 논리가 더욱 날카로워 질 수 있어요. - 챌린지를 진행하지 않고 다른 도프디원들의 작업물만 가져가는 행위를 방지하고자 참여율이 떨어지는 분들은 함께할 수 없어요. (진심으로 성장하고 싶은 분들만 신청하세요) 월회비는 어떻게 쓰이나요?👻 - 커뮤니티가 지속 가능하고 발전하는 데에 쓰일 예정이에요. - 업계에서 영감을 주실 수 있는 분들을 초빙하여 무료 강연을 한다든지, 감명 깊게 본 책이나 강의를 선물 해드린다든지 다양한 이벤트를 기대해 주세요. 도프디 신청하기 👉 https://swooparupa.framer.website/pdchallenge

디자이너

#디자이너

#디자인

#ux/ui

#프로덕트디자인

#ux디자인

답변 0

댓글 0

조회 60

8달 전 · Roman Furman 님의 질문

1시간 안에 네이티브로 웹사이트를 iOS 및 Android용 네이티브 모바일 앱으로 변환하세요.

비즈니스용 모바일 앱을 만드는 데 얼마나 비용이 들까요? 제 경험상, 안드로이드와 iOS 앱을 개발하려면 최소 1만 달러부터 시작합니다. 하지만 한 달에 단 35달러로 모바일 앱을 만들 수 있는 매우 효과적인 방법이 있습니다. 혼자서도 할 수 있고, 팀을 고용할 수도 있는데, 이 방법은 몇 개월이 아닌 며칠 만에, 수천 달러가 아닌 수십 달러로 가능합니다. 제가 말하는 것은 Natively입니다. 이 서비스는 어떤 웹사이트나 웹 애플리케이션도 손쉽게 네이티브 앱으로 변환해 줍니다. 귀하의 웹사이트/웹 앱이 JavaScript 프레임워크로 구축되었든, Bubble, Webflow, Wix, WordPress, Shopify와 같은 노코드 플랫폼을 활용하든, Natively는 모바일 앱으로의 전환을 매끄럽고 간단하게 만들어 줍니다. Natively의 사용은 매우 간편합니다. 사용자 친화적이고 자동화된 프로세스로 인해 기술적 전문 지식 없이도 누구나 몇 분 안에 앱을 만들 수 있습니다. Natively는 푸시 알림, 헬스 키트, 위치 추적, 카메라, 갤러리, 인앱 결제 등 다양한 네이티브 모바일 기능을 설정할 수 있게 해줍니다. 그리고 새로운 기능이 지속적으로 추가되고 있습니다. 1년 전 처음 출시된 이후로 Natively 덕분에 800개 이상의 애플리케이션이 App Store와 Google PlayMarket에서 성공적으로 자리 잡았습니다. Natively의 웹사이트, 리뷰 및 사례는 여기에서 확인하세요: https://www.buildnatively.com/ 오늘날의 디지털 시대에서 네이티브 애플리케이션을 보유하는 것은 사용자를 끌어들이고 유지하는 데 필수적이며, 비즈니스 성장에 큰 도움이 됩니다. 그래서 저는 Natively가 특히 무료로 시작할 수 있다는 점에서 꼭 시도해볼 가치가 있다고 믿습니다. 🌍

개발자

#모바일

#앱

#android

#ios

답변 0

댓글 0

조회 83

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

조회 114

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

조회 564

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

조회 69

10달 전 · 김준석 님의 새로운 댓글

Next.js 코드 가독성..

안녕하세요 프론트앤드 1년차에 다가가고 있는 신입 개발자입니다. 현재 Next14를 사용하고 있으며 코드의 가독성, 효율성을 많이 고려하면서 코드를 짜려고하는데 너무 고민이 되네요 저보다 앞서서 달려가고 있는 개발자 선배님의 생각을 듣고싶습니다 ㅠㅠ... 2가지가 궁금합니다. 먼저 첫번째 이미지처럼 Version에 관련된 파일을 저렇게 분리했을 때 저는 Version의 최상위 Layout.tsx에서 모든 것을 선언하기가.. 너무 오히려 가독성이 안좋다고 생각을 하고 있습니다 즉, 변수나 함수를 모두 최상위 Layout.tsx에서 선언 및 정의를 해두고 props로 내려주는게 이상하다고 생각을 합니다. 변수, 함수, useEffect 모두 직접 해당 변수나 함수를 컨트롤하는 부분에서 선언 및 가공을 하는게 맞다고 생각을 합니다. 최상위 Layout.tsx가 너무 무거우면 오히려 나는 VersionDataTable에 관련된 변수나 함수만 보려고 하였으나 최상위 Layout.tsx를 보고 아 이게 VersionDataTable에 필요하구나 뭐가 필요없구나, useEffect의 의존성 배열까지 고려하는것이 불필요하다고 생각을 하고 있습니다.. 근데 같이 프론트 앤드 개발하시는 분께서는 '단기적으로 절대 코드가 변하지 않는다고 생각하면 그 말씀이 맞는데 그건 아니잖아요? 우리는 계속 유지보수를 할거고 그러면 결과적으로 A에서만 사용하던 변수나 함수들을 A,B,C에서 같이 사용할 수 있게 변경하게 되면 그때 변경하면 유지보수 측면에서 너무 안좋습니다. 최상위에 모두 선언이나 정의를 해두고 props로 내려주는게 맞다 이런 형식으로 코드를 작성하면 몇개월 뒤에 코드를 수정할 때 A가서 수정했다가 C가서 수정했다가 D가서 수정하실 거에요? 바로 알아보실 수 있겠어요?' 라고 말씀을 하시더라구요.. 물론 몇개월 뒤에 코드를 보거나 하면 제가 작성한 코드인데도 저는 헷갈리는 경우가 많습니다. 그러나 최상위에 모두 선언 및 정의해둬도 마찬가지 아닌가..? 유지보수 측면에서 뭐가 안좋은거지..? 라고 생각되게 됩니다.. 선배님의 말씀을 따라가고는 싶은데 이해가 안돼서요 제가 아직 기본기가 많이 부족한 상황이라 이 상황에서 말씀드리면 이론부터 말하며 설득시키기가 부족하다고 생각하기 때문에 말씀드리면 오히려 '저는 이렇게 생각해요 틀렸는데요?' 라고 말하는 것 같아 말다툼이 될 것 같습니다. 2. 밑 사진을 보면 modalTemplate라는 폴더, ConfirmTemplate이라는 폴더가 존재하는데요 이것에 대해서 저는 사용하는 용도에 따라서 Create면 Create Create와 Update를 동시에 할 수 있는거면 BundleCreateAndUpdate 이런 형식으로 각각의 파일을 생성을 하고 문법상 공유되는 부분은 중복이 되어서 실제로 보여주는 부분을 영역으로 나눠서 BasicOptions, SelectList, VersionDetail, VersionOptions로 나누고 각각의 파일에서 사용하는 부분만 불러와서 쓰는 형식으로 코드를 작성했습니다. 그러나 이렇게 용도에 따라 구분하지 않고 최상위 Layout.tsx파일 하나만 만들고 ModalType이라는 props를 받아서 ModalType이 create, update, create&update, delete ... 등 JSX에서 삼항 연산자를 써서 처리를 할수도 있습니다. 저는 ModalType으로 처음에 구분하다보니 나는 'create' 속성일 때 어떤 형식으로 되는지 코드로 보고싶은데.. 그러면 너무 뜯어서 봐야하더라구요 그래서 용도에 맞게 파일을 만들고 거기서 form을 불러오기만해서 중복 코드를 줄이는 방식을 택했습니다.. (더 나은 코드라고 생각했습니다.) 그랬지만 선배님께서 'ModalType으로 나누는게 더 좋아요 저렇게 지으면 가독성이 너무 떨어지고 파일의 이름이 너무 길어지잖아요 이상하지 않나요?' 라고 말씀을 하시더라구요... 물론 가독성은 사람마다 다른거 알고있습니다. 그러나 ModalType으로 나누기 시작하면 한도 끝도없이 나누고 ModalType이 delete일 때만 사용하는 함수, create일 때만 사용하는 함수 등 필요없는 함수도 너무 많아져서 용도에 맞게 파일을 구분하고 거기서 중복 코드만 최대한 줄이자! 라고 생각하여 코드를 작성했는데 이 내용도 말씀드려 봤지만 '가독성' 이라는 이유 하나만으로 너무 안좋다고 합니다.. 진짜 안좋은건가요..? Next 도 그렇고 프론트 앤드 너무 어렵습니다..

개발자

#react

#next.js

#front-end

#code-review

답변 2

댓글 2

추천해요 1

조회 686

10달 전 · 익명 님의 질문 업데이트

프론트엔드 - Docker-Compose 문제

docker-compose를 세팅 중 빌드 오류가 있어 질문 드립니다. 문제의 원인이 prod 환경의 compose.yml라고 예상되어지는데 dev 환경의 compose에서는 env 파일을 정상 인식하지만 prod 환경의 compose에서는 env 파일을 인식하지 못하는 문제인데요. docker-compose 명령어를 실행할 때, .env 파일이 있는 경로에서 실행을 하고있고 docker-compose.prod.yml과 .env 파일에 정의된 변수 이름도 오탈자는 없습니다. 어떻게 해야 docker build시, prod에서는 args를 사용할 때 production.env(= multiple .env)파일을 인식하게 할 수 있을까요? 혹시 제가 놓치고 있는 부분이 있을까요? 추가로, 관련된 코드와 설정은 Stack Overflow에 업로드를 해뒀는데요, 답변 주시면 정말 감사하겠습니다! https://stackoverflow.com/questions/78857841/docker-compose-not-recognizing-environment-variables-in-next-js-application-pro

개발자

#docker

#docker-compose

#도커

#에러

#프론트엔드

답변 1

댓글 0

조회 74

일 년 전 · 익명 님의 질문

패스트캠퍼스 ios 강의 추천

안녕하세요 ! 백엔드를 공부하다 최근, ios 개발에 관심을 가진 컴공 3학년 학생입니다. ios 개발 강의를 찾아보다 패스트캠퍼스 강의들이 눈에 들어왔는데요, 사이트에 후기가 안 보여서 질문글을 올립니다. (강의가 20만원이 넘어서 무작정 결제를 못하겠어요🥲) 1. 왕초보를 위한 한 번에 끝내는 iOS 앱 개발 바이블 초격차 패키지 ( https://fastcampus.co.kr/dev_online_iosbible ) 2. 네카라쿠배 5개 앱으로 완성하는 iOS 앱 개발 초격차 패키지 ( https://fastcampus.co.kr/dev_online_ios ) 중에 고민입니다! 클론코딩을 제대로 안 해보기도 했고, 저번 학기에 코틀린을 한 학기 동안 공부해서 저는 2번 강의가 더 끌리는데, 아무래도 스위프트는 처음이다보니 초보자를 위한 강의가 더 나을지 잘 모르겠습니다. 조언 부탁드립니다!! 감사합니다! 🙇‍♀️

개발자

#패스트캠퍼스

#ios

#swift

#앱개발

#강의추천

답변 0

댓글 0

조회 139

일 년 전 · 문정동개발자 님의 새로운 답변

웹폰트 나눔스퀘어네오 윈도우 크롬 적용안되는 현상

React 프로젝트이며, 웹폰트로 나눔스퀘어네오 cdn방식으로 가져오고 있습니다. 맥에서는 잘 적용되는데, 윈도우 크롬 콘솔에 에러 뜨고 네트워크탭 - 폰트 확인 시 404가 뜨는데, 혹시 저와 같은 현상인 분 있으신가요?? 콘솔 에러 OTS parsing error: Unable to instantiate font face from font data. ``` @font-face { font-family: 'NanumSquareNeo-Variable'; src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_11-01@1.0/NanumSquareNeo-Variable.woff2') format('woff2'), url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_11-01@1.0/NanumSquareNeo-Variable.woff') format('woff'); font-weight: normal; font-style: normal; } ``` 나눔스퀘어네오 폰트 https://noonnu.cc/font_page/1053

개발자

#프론트엔드

#react

#fronted

#font

#웹폰트

답변 1

댓글 0

보충이 필요해요 1

조회 227

일 년 전 · 익명 님의 질문

next js 프로젝트 mfa 구축 질문.

안녕하세요, next js프로젝트로 mfa를 구축중입니다. 모노레프 기반으로 구축중인데요, 타입스크립트를 적용하기 위해서 @module-federation/typescript 모듈설치후 next.config설정을 했는데, 아래와 같은 에러로그가 발생하면서 @mf-types폴더가 자동으로 생성되지않고있습니다.. 덕분에 리모트 파일은 타입에러를 뱉고 있는 상황이구요, 혹시 next js프로젝트로 mfa구축하신분들중 저와같은 사례가 있으신분 계신가요? 에러 내용 [1] <e> [FederatedTypesPlugin] Unable to download 'container' remote types index file: timeout of 3000ms exceeded [1] <e> [FederatedTypesPlugin] Unable to download types from remote 'container'

개발자

#react

#nextjs

#mfa

답변 0

댓글 0

조회 126

일 년 전 · 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

일 년 전 · 익명 님의 질문 업데이트

react-query,

안녕하세요. 리액트쿼리 최신v5를 사용하면서 어려움에 처해 글을 남기게 되었습니다. 제가 만든 코드는 아래와 같습니다. Home.jsx (맨처음 데이터를 받아서 List에 뿌려주는 역할) const { data, error, isLoading } = useFilteredApartmentData(); console.log('home data',data) <List data={data.speechCommands} /> Search.jsx (사용자 검색) const { updateFilters } = useFilteredApartmentData(); //커스텀훅 const handleSubmit = (filter) => { updateFilters(filter); }; useFilteredApartmentData .jsx (훅) const useFilteredApartmentData = () => { const [filters, setFilters] = useState({ skip: 0, take: 15 }); const { data, error, isLoading } = useQuery({ queryKey: ["apartments", filters], queryFn: () => fetchFilteredApartmentData(filters), placeholderData: keepPreviousData, enabled: !!filters, }); console.log("훅안에서 새로운데이터", data); const updateFilters = (newFilters) => { console.log(newFilters); setFilters((prevFilters) => ({ ...prevFilters, ...newFilters, })); }; return { data, error, isLoading, updateFilters, }; }; export default useFilteredApartmentData; 저의 계획은 search.jsx에서 사용자의 검색을 받으면 훅의 updateFilters 를 실행시키고 useState가 바뀌니 useQuery의 재 시작과 함께 새로운 데이터를 받아 List에서 새로운 데이터를 뿌리는 것이었습니다. 그런데 console.log("훅안에서 새로운데이터", data); 이 부분도 새로운 데이터로 잘 찍히는데 문제는 Home.jsx 에서 console.log('home data',data) 이부분은 안찍히네요 결과적으로, 리스트의 변동이 없습니다. 혹시 아시는분 답변주시면 정말 감사하겠습니다 ㅠㅠ

개발자

#react

#react-query

답변 0

댓글 0

조회 80

일 년 전 · 포크코딩 님의 새로운 댓글

리액트쿼리 데이터 리패칭 이렇게 하는거 아닌가요?

home.jsx const { data, error, isLoading } = useFilteredApartmentData(); <List data={data.result} /> 훅.jsx const useFilteredApartmentData = () => { const queryClient = useQueryClient(); const [filters, setFilters] = useState({ skip: 0, take: 15 }); const { data, error, isLoading } = useQuery({ queryKey: ["aaa", filters], queryFn: () => fetchFilteredApartmentData(filters), placeholderData: keepPreviousData, enabled: !!filters, }); const mutation = useMutation({ mutationFn: (filter) => { fetchFilteredApartmentData(filter); }, onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["aaa", filters] }); }, }); const updateFilters = (newFilters) => { console.log(newFilters); setFilters(newFilters); mutation.mutate(newFilters); }; return { data, error, isLoading, updateFilters, }; }; export default useFilteredApartmentData; 여기서 처음에 데이터 패칭은 잘 이루어 지는데 fillter가 바뀌면 훅의 updateFilters 가 동작하여 새로운 데이터를 list에 다시 뿌리려고하는데 화면에 변화가 없습니다 ㅜㅜ 이렇게 하는거 아닌가요??

개발자

#react

#react-query

답변 1

댓글 2

조회 71

일 년 전 · 익명 님의 질문

Paging 관련 질문 있습니다.

jpa, pageable 활용하면 findall로 페이지에 속하는 데이터를 가져올 수 있다고 알고 있는데요. 1. repository 데이터가 변경돼서 예전 1페이지가 시간이 흐른 뒤 1페이지를 호출하면 다른 데이터가 나오게 돼서 데이터베이스 상태가 바뀌지 않도록 해야 된다고 GPT가 가르쳐 주는데 DATE 타입의 컬럼을 활용해서 소팅 하는 알고리즘의 경우는 어떻게 데이터베이스 상태가 바뀌지 않도록 하나요? 2. 유저1(최신순)과 유저2(추천순)가 서로 다른 알고리즘으로 Paging을 수행 할 때 Paging 객체를 유저 객체에 넣어서 기억 하나요?

개발자

#spring

#jpa

#pagable

답변 0

댓글 0

조회 44

일 년 전 · 프레드윰 님의 댓글 업데이트

오픈 api 사용 할 때 cors 에러 어떻게 해결하시나요?

공공데이터 포털에서 오픈 api를 사용하고 있는데 cors 에러가 떠서 해결하고 싶은데, 직접 서버를 건드릴 수 없어서 어떻게 해결해야 할지 모르겠습니다..ㅠㅠ 배포 이후에도 그대로 동작할 수 있는 방법을 찾고 있습니다! 오류 내용 : Access to fetch at '<endpoint url>' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. 현재 아래 사이트를 통해 막아보긴 했는데 중간중간 cors에러가 계속 뜨더라구요 https://allorigins.win/

개발자

#cors

#corserror

#openapi

#프론트엔드

답변 1

댓글 2

조회 151

일 년 전 · 지원 님의 질문

[DB 설계] postreSQL 주소 저장

대학 4학년 재학중이고 현재 스타트업 초기 개발자로 근무를 시작했습니다. 프론트는 flutter, DB는 postresql, 백 프레임워크는 python Django를 이용해 하이브리드 어플리케이션을 개발하고자 합니다. 장소 table을 만들면서 주소 column을 만들어야 하는데, 서울/부산/울산 등 지역별 필터링이 가능하도록 설계해야 합니다. 1. 단순히 textfield 를 하기엔 필터링마다 모든 row의 주소 column에서 해당 단어들을 찾아야 하는 부담이 있고, arrayfield(char)을 하기엔 프론트에서 받아와서 처리하는 것에 어려움이 있을 것 같습니다. 2. 프론트에서 주소 입력하는 형태가 아직 정해지지 않았는데, 아마 도로명 주소 검색해서 선택하고 상세주소를 입력하는 방법을 도입할 것 같습니다. 이 기능을 구현해본 적이 없어 어떤 식으로 DB를 설계하고 입력/저장/출력을 관리하면 좋을지 조언을 구하고 싶습니다. 덧붙여서, 혹시 지도 api 등을 연결해서 주소를 등록하게 되더라도 DB 설계에는 변함이 없는게 맞는건지 궁금합니다. 감사합니다.

개발자

#postgresql

#db설계

#주소

#지도api

답변 0

댓글 0

조회 81

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

타입스크립트 타입지정

리액트 쿼리로 OptimisticUpdate 를 구현했는데 onError 에서 context 타입 지정을 어떻게 해야할지 모르겠습니다 ㅠㅠ context : 타입 하면 오류나고, data : 타입 = context 해도 오류나고 as 를 쓰면 해결되긴 하는데 더 좋은 방법 없을까요? ㅠㅠㅠ 'use client'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { usePostLikeCount } from '@/hooks'; interface LikeContextType { previousLikeCount: number; previousIsLike: boolean; } export const useOptimisticLike = ( boardId: number, initialLikeCount: number, initialIsLike: boolean, refetch: () => void ) => { const [optimisticLikeCount, setOptimisticLikeCount] = useState(initialLikeCount); const [optimisticIsLike, setOptimisticIsLike] = useState(initialIsLike); const { mutate: postMutate } = usePostLikeCount(boardId, { onMutate: async (): Promise<LikeContextType> => { setOptimisticLikeCount((prev) => optimisticIsLike ? prev - 1 : prev + 1 ); setOptimisticIsLike((prev) => !prev); return { previousLikeCount: optimisticLikeCount, previousIsLike: optimisticIsLike, }; }, onError: (err, variables, context) => { const data: LikeContextType = context; if (data) { setOptimisticLikeCount(data.previousLikeCount); setOptimisticIsLike(data.previousIsLike); } toast.error('좋아요 업데이트에 실패했습니다.'); }, onSuccess: () => { refetch(); }, }); const uploadLike = () => { postMutate(); }; return { optimisticLikeCount, optimisticIsLike, uploadLike, }; };

개발자

#react-query

#typescript

답변 1

댓글 1

조회 63

일 년 전 · 익명 님의 질문 업데이트

React-query로 실시간 데이터 반영

리액트를 통해 버스 위치 데이터를 받아서 버스 위치를 실시간으로 보여주는 앱을 개발하고 있는데요, 리액트 쿼리를 활용해 10초마다 refetch하여 데이터를 업데이트하려고 하는데 계속 자동으로 캐싱되어 처음 가져온 데이터만 10초마다 가져오네요 ㅠ (개발자 도구에서 disable cache를 하면 잘 가져옴) 새로고침를 해도 마찬가지 입니다. const { data, isLoading, error, refetch } = useQuery(["busPos"], getData, { refetchIntervalInBackground: true, refetchInterval: 10000, cacheTime: 10000, }); 어떻게 하면 데이터를 잘 업데이트할 수 있을까요?? Open api 사용 중인데 요청 헤더에 캐시 컨트롤을 노 캐시로 하면 cors 에러가 뜹니다 ㅠ

개발자

#react

#react-query

#cache

답변 1

댓글 0

조회 219

일 년 전 · 털먹는토끼 님의 댓글 업데이트

리액트 쿼리 에러 핸들링 이슈

react query를 활용한 에러 핸들링이 안돼서 질문 올립니다... //mainpage.tsx const { data, refetch, isFetching } = FetchData(url); const handleSearch = () => { refetch(); } <QueryErrorResetBoundary> {({ reset }) => ( <ErrorBoundary onReset={reset} FallbackComponent={FallbackUI}> {resultVisible ? ( <Result searchData={searchData} isFetching={isFetching} /> ) : ( <EmptyResult /> )} </ErrorBoundary> )} </QueryErrorResetBoundary> react-error-boundary 라이브러리를 이용해 ErrorBoundary 컴포넌트를 가져왔습니다. ErrorBoundary 하위 컴포넌트 내에서 에러가 발생하면 FallbackComponent의 FallbackUI 컴포넌트가 렌더링 되도록 했습니다. //FallbackUI 컴포넌트 //에러가 발생히면 이 컴포넌트가 렌더링되어야합니다. const FallbackUI = ({ error, resetErrorBoundary }) => { return ( <div> <span>{error.message}...</span> <button onclick={resetErrorBoundary} /> 돌아가기 버튼 </div> ); }; export default FallbackUI; FallbackUI 에서 QueryErrorResetBoundary 에서 제공하는 resetErrorBoundary를 받아와 에러 발생 후 '돌아가기 버튼'을 클릭하면 쿼리오류를 처리하고 리셋해주도록 구현했습니다. //url을 파라미터값으로 받아와 api호출하는 함수 //위에 있는 mainpage.tsx 에서 사용하는 함수입니다. const FetchData = (url: string) => { const { error, data, refetch, isFetching } = useQuery({ queryKey: ["repoData"], queryFn: async () => { const res = await axios.get(url); console.log(res.data); return res.data; }, refetchOnWindowFocus: false, enabled: false, }); return { error, data, refetch, isFetching }; }; 리액트 쿼리를 이용해 api를 호출하는 함수입니다. //main.tsx const queryClient = new QueryClient({ defaultOptions: { queries: { retry: 0, throwOnError: true, }, }, }); ReactDOM.createRoot(document.getElementById("root")!).render( <React.StrictMode> <QueryClientProvider client={queryClient}> <BrowserRouter> <GlobalStyles /> <Provider store={store}> <App /> </Provider> </BrowserRouter> </QueryClientProvider> </React.StrictMode> ); 마지막으로 전역으로 에러 관리를 하도록 세팅해놨습니다. 그리고 QueryClient에 throwOnError 속성이 있어야 에러를 ErrorBoundary로 전달할 수 있다해서 추가해줬습니다. 이렇게 세팅해놨는데 에러발생하면 그냥 하얀색 화면만 나오고 fallbackUI가 나오지 않습니다... 원인이 뭘까요...ㅠㅠㅠ 혹시 몰라서 콘솔 에러코드도 올립니다.. 추가로 궁금한 점 1. useQuery 에서 반환하는 객체중 error 객체는 어떤 존재인지 궁금합니다. 2. useQuery 속성과 QueryClient 속성 모두 throwOnError : true 를 가지고 있던데 어떤 차이점인지 궁금합니다. 답변주시면 정말 감사하겠습니다!!!

개발자

#react

#react-query

#error-handler

#error-boundary

답변 1

댓글 1

조회 227

일 년 전 · 익명 님의 새로운 답변

react-hook-form 및 react-table을 사용하면서 문제가 풀리지 않아서 질문드려요..

캠페인 데이터 안에 매체 데이터들이 있는데요. 매체 데이터의 이름으로 테이블을 만들고 테이블의 행을 클릭하면, 해당 행에 연관된 데이터를 보여주고, 수정이 가능한 폼?을 만들고있는데요. 캠페인 폼을 서브밋할 경우 매체에서 변경된 값은 정상적으로 콘솔에 찍히는데 테이블의 다른 매체를 선택해도 생성일이 변경되지 않는 문제가 있는데요.. 어떤게 문제인지 잘 모르겠습니다.. 첨부한 스크린샷에서 처럼 예를 들어.. 매체명11 - 생성일 5월1일 매체명22 - 생성일 5월2일 매체명33 - 생성일 5월3일... 이런식으로 데이터가 있다고하면 매체를 선택할때마다 생성일도 같이 변해야 되는데 변경이 안됩니다..ㅠ 폼 하나로 캠페인 및 캠페인 안에 있는 매체들의 데이터를 한번에 서브밋 하고싶어서 저런식으로 구성을했어요.. 뭐가 문제인지 도무지 모르겠어요.. 도와주세요!..

개발자

#react

답변 3

댓글 0

보충이 필요해요 1

조회 94