5시간 전 · 개발자H 님의 새로운 답변
컴퓨터공학과 4학년 1학기끝 여름방학 이대로 취업가능한가요..
안녕하세요 4학년 1학기 여름방학이 시작되었는데 앞으로 어떻게 할지가 고민입니다. 대학은 인서울은 아니고 국립대입니다 3학년까지는 백준골드찍고 CS과목 공부 열심히하고(Cs과목만 학점이 좋아요..) 열심히 놀았습니다 올해는 숨고(프리랜서 플랫폼)에서 쉬운 프로그램개발 외주받아서 용돈벌이하고 간간히 백엔드 공부하면서 학기에 정보처리기사 합격하고 학과 전공필수과목인 팀프로젝트에 열중했습니다 주제에 벗어나지만 팀프로젝트 이야기를 좀 적자면 팀을 잘못만났습니다 프론트 1 백엔드 2로 팀프로젝트를 했는데 프론트는 부트캠프, 리액트 경험이 있다더니 피그마밖에 할줄 모르고 백엔드 한명은 api명세서대로 하지않고 지마음대로 기능만 gpt써서 겨우 구현해놓는놈이여서 협업이 어지러워지고.. 그래서 혼자 백 스프링부트 혼자 전부다짜고 프론트도 피그마 준틀만 받아서 결과물은 crud떡작한 개인프로젝트가 되었지만 혼자 공공api사용해보고 git branch 관리도 해보고 git action으로 CICD구축, 도커, aws ec2,rds,s3,vpc~~ 클라우드등등 배포도 해보고 시스템아키텍쳐 부분으로 많은 경험을 해본것은 좋은거같습니다 다시돌아와서 여름방학이 되었는데 일단 방학에sqld, 리눅스마스터를 취득할계획입니다. (정처기 합격하더니 근자감 만땅임) 그리고 학과 형들 말로는 취업시장이 많이 어려우니 특히 백엔드가 진짜 어렵다고 하시더라구요 그래서 방학에 이력서라도 몇번 넣어보라고 하시는데(4학년 2학기는 취업계로 병행가능) 지금 팀프로젝트때 한 포토폴리오, 정보처리기사가 전부라 이력서에 뭐 내밀게 없는거 같습니다;; 이래서 방학에 따로 AI독학을 해두면 좋을거같다는 생각이 들어서 AI개발로 개인프로젝트를 해볼까 고민중인데 혼자하면 또 망한프로젝트가 될거같네요ㅠ 아이디어도 없고 데이터구할 계획도 아직 하나도 없습니다…….. 이력서를 넣어볼지 혼자 역량을 더 키우는데 집중을 해야할지 고민입니다 선택과 집중을 잘하고싶습니다 경력자분들은 어떻게 보시는지 답변해주시면 많은 도움이 될거같습니다!
개발자
#취업
답변 3
댓글 0
조회 32
9일 전 · 익명 님의 새로운 댓글
제 수준이 어느정도인지 궁금합니다
잡코리아에 아래 글을 올렸었는데 “ 우선 대학고 졸업 예정(현 2학년) 입니다! 1인개발 스프링 경험이 있습니다 Jwt랑 Redis로 토큰 기반 로그인 Rest API 관리자, 로그인 페이지등 간단한 프론트엔드 Nginx 활용 certbot, Let`s Encrypt로 https해서 리눅스 서버에 올려서 운영까지 모두 1인 개발입니다 몽고디비도 연동했습니다 Sql injection이랑 CSRF 공격등 보안도 좀 신경 썼습니다! 졸업 후 월급 연봉쪽이 궁금합니다!! 자바는 5년정도 했습니다. + 방학마다 개발 스타트업에서 일하고 있습니다 “ 답변은 요렇게 달렸어요 “ 생노베 비전공 국비 졸업생도 수료 후 3-6개월 더 하면 하는 수준을 나열해주셨어요. 연봉 3천 중소 블랙 si 노려볼만 하겠습니다. “ 정말 노베 졸업생도 이정도 한다니.. 좀 많이 놀라운데 스프링 내부 설계나 이런거 기술 안한것도 많지만.. 정말 주변 대학생이나 누구보다 나름 잘한다 생각했는데 이게 현실인건가요 ㅠㅠㅠ 제 깃허브는 별볼일 없긴 합니다 https://github.com/Teynx
개발자
#백엔드-개발자
#스프링부트
#스프링
#백엔드
#취업
답변 3
댓글 5
조회 713
한 달 전 · Sin88ho 님의 질문
SIN88🥇️SIN88.COM | LINK VÀO NHÀ CÁI SIN88 04/2025
SIN88 là nhà cái uy tín hàng đầu trong lĩnh vực cá cược trực tuyến tại Việt Nam. Với giấy phép hoạt động hợp pháp, SIN88 mang đến môi trường giải trí an toàn, minh bạch. Người chơi có thể tham gia cá độ thể thao, casino online, game slot và nhiều sản phẩm hấp dẫn khác. Giao diện thân thiện, hỗ trợ 24/7 và khuyến mãi lớn là điểm mạnh giúp SIN88 giữ vững vị thế trong thị trường cá cược. Địa Chỉ: 187 Ng. 141 Giáp Nhị, Giáp Nhị, Hoàng Mai, Hà Nội, Việt Nam Phone: 0983 721 968 Email: sin88ho.com@gmail.com #sin88 #sin88hocom #trangchusin88 #dangnhapsin88 #linkvaosin88 Website: https://sin88ho.com/ Social: https://mxoemu.info/forum/member.php?action=profile&uid=20817 https://sin88hocom.yurls.net/en/page/1196371 https://linkfly.to/sin88hocom https://the7thcontinent.seriouspoulp.com/en/user/21740/sin88hocom https://leasedadspace.com/members/sin88hocom/ https://www.nu6i-bg-net.com/user/sin88hocom/ http://linoit.com/users/sin88hocom/canvases/SIN88 https://www.theyeshivaworld.com/coffeeroom/users/sin88hocom https://tawk.to/sin88hocom
디자이너
#sin88
답변 0
댓글 0
조회 12
한 달 전 · 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
조회 23
2달 전 · 익명 님의 새로운 댓글
채팅 애플리케이션에서 Redis 메시지 저장과 RabbitMQ 전송을 안전하게 처리하려면 어떻게 해야하나요?
안녕하세요. 현재 백엔드 개발자를 지망하는 대학생입니다.. 예전에 Springboot를 활용해서 개발한 채팅 애플리케이션 프로젝트를 리팩토링하는 과정에서 문제가 발생하여 질문 드립니다. 아래와 같은 아키텍처 애플리케이션을 구현했습니다. - MySQL: 채팅방 정보(채팅방 이름, 참여 인원수 등등), 사용방 정보 데이터 저장. - Redis: 채팅 메시지 데이터 저장 - RabbitMQ: 채팅 메시지를 전송하기 위한 메시지 브로커 STOMP over WebSocket을 활용해서 클라이언트에서 메시지를 pub해서 메시지 브로커인 RabbitMQ를 거쳐서 구독한 클라이언트에게 메시지(채팅)을 전송하도록 구현했습니다. 그런데 문제가 발생하는 로직이 있습니다. [채팅방 가입 로직] 1. @Transactional 내부에서 MySQL에 채팅방 데이터 저장. (해당 유저가 채팅방에 가입한 것을 저장) 2. Redis에 "User가 채팅방에 들어왔습니다."라는 메세지를 저장. 3. 해당 메시지를 RabbitMQ로 전송. (`rabbitTemplate.convertAndSend(...)`) 이런 상황에서 Redis나 RabbitMQ에서 문제가 발생해서 하나라도 정상적으로 완료되지 않으면 문제가 발생합니다. Redis 서버에 문제가 생겨서 채팅 메시지를 정상적으로 저장하지 않더라도 RabbitMQ를 통해 메시지가 전송되고, RabbitMQ 서버에 문제가 생겨서 정상적으로 전송되지 않더라도 Redis에 채팅 메시지가 저장이 됩니다. 이러한 문제를 해결하기 위해서 2PC, SAGA 패턴, Outbox 패턴 등등을 알아봤고, 그 중 가장 괜찮다고 생각했던 패턴이 Outbox 패턴이었습니다. 근데 또 어려움이 생겼는데, Outbox 패턴을 사용하기 위해 Pulling 기법을 사용 하자니 Redis에 무리가 생길 것 같고, 트랜잭션 로그 테일링 패턴을 사용 하기에는 Redis가 이를 제대로 지원하지 않아 구현이 굉장히 어려워진다는 문제가 생겼습니다. 그래서 MySQL을 Outbox 저장소로 사용할까 고민도 해보았는데, MySQL을 사용하면 속도 면에 불리해지지 않을까라는 생각이 또 들었습니다. 이러한 문제를 어떻게 해결하면 좋을까요...? 제가 궁금한점은 다음과 같습니다. 1. Redis를 활용하는 프로젝트에서 MySQL을 Outbox 저장소로 사용하는 것은 좋지 않은 방법일까요? 2. Outbox 패턴이 최선일까요? 현업에서는 이러한 문제를 어떤 식으로 해결하는지 궁금합니다.
개발자
#spring
#rabbitmq
#redis
#mysql
#transaction
답변 1
댓글 1
조회 139
3달 전 · Tiradadecartasgratis 님의 질문 업데이트
Tiradadecartasgratis
Discover the best love stories across genres – curated and reviewed for you. Address: 27 Mai Thi Luu, Ward Da Kao, District 1, HCMC Phone: 0903978979 Email: contact@tiradadecartasgratis.biz Website: https://tiradadecartasgratis.biz/ Social https://www.facebook.com/tdcgratis/ https://www.youtube.com/@tdcgratis https://x.com/tdcgratis https://www.pinterest.com/tdcgratis/ https://www.linkedin.com/in/tdcgratis/ https://tdcgratis.tumblr.com/ https://vimeo.com/tdcgratis https://www.reddit.com/user/tdcgratis/ https://soundcloud.com/tdcgratis https://band.us/@tdcgratis https://500px.com/p/tdcgratis?view=photos https://cfgfactory.com/user/311721 https://www.motiondesignawards.com/profile/5110 https://contest.embarcados.com.br/membro/truy%e1%bb%87n-tiradadecartasgratis/ https://smf.rcweb.net/index.php?action=profile;u=78728 https://careerly.co.kr/qnas/10213
개발자
#tdcgratis
답변 0
댓글 0
조회 72
5달 전 · 익명 님의 질문
웹소켓 + 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
조회 86
7달 전 · CP 님의 답변 업데이트
RDBMS 실무 관계 연결 등 질문사항
혼자 프론트, 백엔드, DB 공부를 강의 보면서 독학하고 있는데 이번에 토이프로젝트로 쇼핑몰 웹을 하나 만들려고 합니다. 실무에서는 개발을 어떤식으로 하는지 궁금하여 질문 드립니다. 1. mysql 등 과 같은 RDBMS 테이블 관에 관계를 설정 안 하고 즉 외래키 연결 하나도 안 하고 사용할 때 장단점이 무엇인가요? 2. 지인 DBA분(오래 되심)께서 하시는 말씀은 관계 연결하면 DB 부하 심하다, 성능 저하된다 이런식으로 말씀하셨는데 맞나요? 2-1. 성능이 저항된다면 심하게 저하되나요? 3. 쿠팡, G마켓, 무신사, 유튜브 등과 같은 대형 플랫폼들은 RDBMS를 사용할 때 실제로 관계 연결을 안 하나요? 4. DB에서 값을 불러 올 때도 join 하나도 안 하고 소프트웨어적으로 수동으로 연결 한다. 제가 이해 하기로는 사진에 있는 예시 사진 참고 하면서 예를 들면 cart 불러오는데 user이름도 알아야 한다면 DB에 join을 해서 가져오는게 아니라 백엔드에 각 각 user, cart를 따로 호출하고 백엔드에서 if, for, array function 같은 메소드를 사용해 작업을 거쳐 가공 한다는 것 같은데 이러면 실무 적으로 봤을 때 장단점이 무엇인가요? 5. 대형 플랫폼 같은 실무에서는 4번 방식 처럼 하나요? 참고로 테이블이 20개 이상 정도 될 경우의 상황이 궁금합니다 실무에 관해서 민감한 질문 드려서 죄송합니다. 아는 것 없이 질문을 여러번 드려 번거롭게 만들어서 죄송합니다. 답변해 주신다면 열심히 공부하겠습니다.
개발자
#rdbms
답변 2
댓글 0
조회 71
7달 전 · 익명 님의 새로운 답변
리액트에서 브라우저 Intersection Observer 사용 질문,
안녕하세요, 채팅 관련 프로그램을 개발하고 있습니다. 다름이 아니라 Intersection Observer를 통한 화면 최적화를 진행하고 있습니다. 원하는 최적화 방식은 isIntersector의 true/false 여부를 통해 화면에 메시지 컴포넌트를 제공하고 있습니다. 동작은 정상적입니다. 그런데 문제가 있습니다. 부모에 Intersection Observer를 두나 자식에 Intersection Observer를 두나 아래 2가지 버그가 동일하게 나타납니다. 1. 다소 긴 채팅 또는 무거운 채팅 메시지는 화면 영역에 나타났음에도 isIntersector가 가끔 false 인경우가 있습니다. 그래서 부모가 높이는 가지고 있으나 내용이 빈 경우가 종종있습니다. 2. 메시지가 화면에서 딱 사라지는 순간 isIntersector가 무한 루프 되면서 true/false를 번갈아 가면서 반환합니다. 브라우저는 엣지입니다. 크롬은 불가능합니다. 1번 같은 경우는 산발적으로 발생하고, 2번은 저 상태가 되면 무조건 발생하는 에러입니다. 검색을 이리저리 해봤는데 도통 해결방법이 나오지 않아 여기에 문의드립니다.
개발자
#react
답변 1
댓글 0
조회 28
8달 전 · 박태원 님의 질문
ios18 popstate 적용
Ios18 업데이트 이후 popstate 적용 안되는 분 계신가요???... window.addEventListener('popstate', function (event){}
개발자
#프론트엔드
#javascript
답변 0
댓글 0
조회 30
8달 전 · 문종호 님의 새로운 답변
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
조회 104
8달 전 · Eunseon 님의 질문
AI 빅데이터 부트캠프 질문
안녕하세요. 저는 도시공학과 박사 출신입니다. SPSS, AMOS 등으로 연구를 많이 진행했고, Gephi 로 연구를 해봤습니다. 특히 저는 도시 재난 전문 전공입니다. 해외에서 포닥을 2년 하고 지난주에 한국에 돌아와서 다시 취직을 해야하는데, 제가 논문 갯수가 충족이 되지만 모든 교수직이나, 새로 뽑는 연구원 보직이 AI, Big data 하는 사람만 뽑더라고요. 뿐만 아니라 저도 개인적으로 AI 관련 연구를 하고 싶고 빅데이터를 독학 했더니 답답한 점이 많아서 제대로 공부를 하고 싶습니다. 또한 그 동안 정성연구를 주로 해와서 빅데이터나 AI 를 통한 연구도 하고 싶으며 가능하다면 개발도 하고 싶습니다. 파이썬은 안해봤습니다! 하고싶은 연구 저는 가령 예를 들어 * AI를 어떻게 핵사고 대피를 위해 쓸 수 있는지 * 대형 공연장 화재시 빅데이터/ 리모트 센싱을 사람들에게 출구를 안내하는 것 등등 연구를 하고 싶습니다. * 재난 정보를 알려주는 AI 소프트웨어 개발 현재 내일배움카드는 발급이 가능한데 1) AI, Big data 를 함께 배우는 코스를 추천해주시면 감사드리겠습니다 2)대면/ 비대면 부트캠프가 있던데 해보신 분들은 장단점을 알려주실수 있을지요? (참고로 학회 등 때문에 1주 정도는 해외에 가야 함) 제가 괜찮아 보이는 것을 뽑아봤는데 추천 부탁드려요. A. 코드잇 데이터 분석가 트랙 https://sprint.codeit.kr/admissions/31 B. B. 새싹 (서울시) 산업실무 프로젝트 기반 LLM https://sesac.seoul.kr/course/active/detail.do C. LG전자 DX SCHOOL 2기 https://linkareer.com/https://linkareer.com/activity/202590 D. [LG유플러스] Why Not SW Camp 클라우드 활용 데이터 엔지니어링 3기 https://linkareer.com/https://linkareer.com/activity/205710
개발자
#빅데이터
#빅데이터분석기사
#ai
#데이터-분석
#ai개발
#인공지능
#python
답변 0
댓글 0
조회 106
8달 전 · 익명 님의 질문 업데이트
프로젝트 경험이 부족한 4학년 전공자 부트캠프를 해야 할까요?
안녕하세요 경기도권 대학 컴퓨터공학과에 재학중인 4학년 학생입니다. 우선 현재 제 상황을 설명해보겠습니다. 프로젝트는 총 두 번 진행했습니다. 첫 번째 프로젝트는 Django와 chatGPT를 이용한 프로젝트이고 전 이 프로젝트에서 기본적인 API 구현, chatGPT 연동 그리고 rabbitMQ와 celery를 이용하여 chatGPT의 답변을 비동기로 가져오는 기능을 구현했습니다. 두 번째 프로젝트는 Springboot와 Flask와 RVC(음성 변환 AI 오픈소스)를 이용한 프로젝트를 진행했습니다. SpringBoot는 REST API를 작성하는 서버이고 Flask는 RVC AI 모델 서빙만을 위한 서버입니다. 이 프로젝트에서 SpringBoot REST API 구현, CRUD 구현과 Flask 서버 구현을 맡아서 진행했고 AWS EC2 배포, S3, RDS, DOCKER(Compose), Nginx, Github Action(CI/CD)도 구현했습니다. 올해 여름 방학에 알고리즘 스터디를 통해서 주요 자료구조와 알고리즘에 대해 공부하고 공부한 내용을 블로그에 정리했습니다. 코테 문제는 대략 100문제 조금 안되게 풀었습니다. 대충 실력은 실버 4~2까지는 어찌저찌 풀 수 있는데 실버 1 골드 5는 쉬운 건 풀고 어려운 건 못 푸는 수준입니다. 현재는 CS 스터디 진행중이고 이제 시작하는 단계입니다. 자격증은 정처기 있고 올해 11월 SQLD 응시 예정입니다. 첫 번째 프로젝트는 포폴로 쓰기 애매하고.. 두 번째 프로젝트는 Devops 경험은 충분한 것 같은데 Spring으로 구현한 기능은 아주 기본적인 REST API밖에 없고 Flask(AI)가 메인이다 보니 제대로 된 Spring 프로젝트가 없습니다.그래서 제대로 된 Spring 프로젝트를 만드는 게 우선이라 생각합니다. 그럼 혼자서 사이드 프로젝트를 하거나 부트캠프에 들어가서 기초부터 차근차근 배운 후 팀 프로젝트를 진행하는 방법이 있는데 어떻게 해야 할지 고민입니다. 부트캠프는 거의 대부분이 기초부터 하는 커리큘럼이다 보니 최소 6개월은 해야 한다는 단점이 있고 혼자 하는 건 주변에 물어볼 곳도 없고 좀 막막합니다. 대신 결과물이 조그 부족하더라도 6개월보단 덜 걸릴 것 같습니다. 조언 부탁드립니다..
개발자
#부트캠프
#국비
#전공자
#취준
#취업
#전공
답변 0
댓글 0
추천해요 1
조회 223
9달 전 · 익명 님의 질문 업데이트
docker에 redis 오류 질문드립니다
안녕하세요 현재 개인프로젝트를 진행하고있습니다. 문제가 있는데, docker에서 app(springboot) + mysql + redis container를 만들어서 docker-compose.yml로 띄운후 localhost:8080 접속시 <오류 내용> Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: localhost/127.0.0.1:6379 Caused by: java.net.ConnectException: Connection refused 이렇게 오류가 발생하는데 자꾸 redis가 localhost로 뜨는데 docker-compose 설정에는 문제가 없어보이는데 한번 봐주시면 감사하겠습니다 1. docker-compose.yml - db 접속정보와 redis 비밀번호는 지우고 코드를 올렸습니다 - redis 비밀번호는 서버에서 확인했습니다. - redis-cli 명령어로 ping-pong 확인했습니다. - app안에 redis와 db(mysql) 같은 네트워크 보고있음 확인했습니다. - 외부 접속 허용하기 위해 redis,.conf 에 bind 0.0.0.0수정 확인했습니다. - 맥 방화벽도 껐습니다. 2. application.properties -redis 설정정보에 ${SPRING_REDIS_PORT:6379} 이렇게 바인딩도 해봤습니다 -db접속 되는지 확인해봤습니다 아래의 코드를 첨부했습니다. 구글 검색과 gpt검색으로 해결방안 전부 시도해봤지만 자꾸 localhost로 뜨니까 진척도 없고 답답합니다... docker를 처음 사용해보는거라 부족한점이 많은데 어떤 부분에 이해도가 필요한지 봐주시면 정말 감사하겠습니다.
개발자
#springboot
#redis
#docker
#mysql
답변 0
댓글 0
조회 179
10달 전 · 익명 님의 질문
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
조회 116
10달 전 · 익명 님의 질문
투두 앱 기획중인데
OKR 이라는 프레임을 적용해본 앱입니다. 이런 앱에 대한 수요가 얼마나 있는지 궁금해서 올려봅니다. 읽어보시고 어떤지 의견 주시면 감사하겠습니다! 추가로 있으면 좋겠다고 생각되는 기능을 말씀해주셔도 됩니다. 간략하게 기능을 적어보자면 아래와 같습니다! 1. OKR Objective(목표)와 Key Results(핵심 결과)를 정하고 하위 항목을 정함으로써 큰 목표를 세분화 할 수 있습니다. ex. Objective: 독서 습관 기르기, Key Result 1: 한 달에 2권씩 책 읽기, Key Result 2: 책을 읽고 독서 노트 작성하기, 하위항목: 하루에 책 10장 읽기 2.시각화 1번의 목표와 핵심결과를 얼마나 달성했는지 그래프로 보여줍니다. 3. 알림 ToDo 알림 정해진 시간에 오늘 해야할 일을 알림을 통해 보여줍니다.
PM/PO/기획자
#기획
#앱
#아이디어
답변 0
댓글 0
조회 127
10달 전 · 연유 님의 질문
Devexpress schedulercontrol
schedulercontrol에서 전체적으로 배경색을 검은색으로 폰트색을 흰색으로 하려고 CustomDrawTimeCell과 CustomizeDateNavigationBarCaption를 사용해서 셀은 변경됐는데 bapcaption 이벤트 쪽은 코드 objectinfo, viewifo,handled부분에서 오류가 발생해서 변경이 안됩니다. 혹시나 아시는 분은 도움주시면 감사하겠습니다. private void schedulerControl1_CustomDrawTimeCell(object sender, DevExpress.XtraScheduler.CustomDrawObjectEventArgs e) { if (e.ObjectInfo is SchedulerViewCellBase cell) { // 셀의 배경색을 검은색으로 설정 cell.Appearance.BackColor = Color.Black; cell.Appearance.ForeColor = Color.White; // 텍스트 색상도 흰색으로 설정 e.Handled = true; // 기본 그리기 동작을 무시하고 커스텀 스타일을 적용 } } private void schedulerControl1_CustomizeDateNavigationBarCaption(object sender, DevExpress.XtraScheduler.CustomizeDateNavigationBarCaptionEventArgs e) { if (e.ObjectInfo is DevExpress.XtraScheduler.ViewInfo.SchedulerHeaderViewInfo headerViewInfo) { headerViewInfo.Appearance.BackColor = Color.Black; // 배경색을 검은색으로 설정 headerViewInfo.Appearance.ForeColor = Color.White; // 폰트 색상을 흰색으로 설정 e.Handled = true; // 기본 그리기 동작을 무시하고 커스텀 스타일을 적용 } }
개발자
#devexress
#schedulercontrol
#scheduler
답변 0
댓글 0
조회 42
10달 전 · 상현 님의 새로운 답변
next14의 next/headers의 cookies를 이용한 쿠키설정
안녕하세요 현재 데이터시각화 사이트 프로젝트를 진행중입니다. next14와 spring boot(리소스와 인증.인가)를 사용하고 있고, 카카오 소셜로그인을 하면 스프링서버에서 jwt(access 토큰)를 발급해주고 refresh 토큰은 redis를 통해 관리되고 있습니다. 받아온 토큰은 cookie를 통해 관리하고 있습니다. seo를 위해 ssr을 사용하고 있는데, ssr과정에서 데이터를 fetch를 할 때 토큰을 같이 보내고, 만약 액세스 토큰이 만료되고 리프레시 토큰이 살아있다면 응답 헤더에 새로운 액세스토큰을 보내주고 있습니다. 그런데 이때 next/headers의 cookies를 사용하여 쿠키를 세팅하는것이 안됩니다. 데이터 페치중, 혹은 ssr과정중에는 Cookies can only be modified in a Server Action or Route Handler. 라는 오류가 뜨며 cookie를 set 하거나 delete하는게 안됩니다. 이럴 경우는 어떻게 해야할까요?
개발자
#next.js
#cookie
#jwt토큰
답변 1
댓글 0
조회 179
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
조회 70
일 년 전 · L cyan 님의 질문
Expo SQLite WHERE 조건 한글 안됨
React Native Expo에서 앱을 개발중에 sql문이 오류가 뜹니다. 코드는 아래와 같습니다. async function SearchName() { console.log("load data"); try { const db = await SQLite.openDatabaseAsync("MountBedge.db"); const data = await db.getAllAsync(`SELECT * FROM HikingData WHERE Name = '가';`); setLoadedData(data); } catch (error) { console.error("Error testing database connection:", error); } } 문제가 되는 부분은 getAllAsync의 WHERE부분입니다. 한글로 검색한 부분을 영어로 변경하면 오류도 뜨지 않고 검색도 잘 됩니다. 한글로 검색 시 뜨는 오류는 아래와 같습니다. Error testing database connection: [Error: Calling the 'prepareAsync' function has failed → Caused by: Error code 1: near "'ㄱ'": syntax error] 혹시 해결할 방법을 아시는 분이 계시나요? 이게 expo에서는 해결이 가능한건지, 아니면 react native cli로 넘어가야 하는건지 모르겠습니다. 추가로 expo에서 sql문으로 데이터를 저장 시 db가 어디에 있는지 알 수 있는 방법이 있다면 알고싶습니다. 영어를 못해 영어로는 검색을 거의 안해봤지만 자료가 너무 없네요...
개발자
#react-navite-expo
#react-native
#expo
#sql
답변 0
댓글 0
조회 53
일 년 전 · 익명 님의 질문 업데이트
프론트엔드 - 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
조회 75
일 년 전 · 이상래 님의 새로운 답변
NextJs 확장 fetch로 서버 컴포넌트에서 동적으로 api를 받는 방법
안녕하세요. 선배 개발자 선생님들. 오늘도 한 단계 성장하기 위해 질문을 남겨봅니다. 저는 NextJs, App router 방식으로 코드를 구현중이며, 서버 상태는 React-Query로 상태값을 관리하고 있었습니다. 왜 리액트 쿼리를 사용했는가? why? 1. Optimistic update, 무한스크롤에 대해 공부하고 적용해보고 싶었습니다. 2. 클라이언트 상태, 서버 상태를 나눈다는 개념이 너무 좋아서 서버 상태는 React-Query로 다뤘습니다. 3. statleTime, gcTime을 조정하여 캐싱기능이 좋았습니다. 갑자기 문득 나는 NextJS를 잘 쓰고 있는건가? 리액트랑 폴더 구조 말고는 다른게 없는거 아닌가? 라는 생각이 들었고, NextJs의 기능을 최대한 활용하고 나머지 불편한 부분이 생긴다면 외부 라이브러리를 사용하자! 라는 생각이 들었습니다. 그래서 저는 React-Query로 상태를 관리하던걸 NextJs의 확장 fetch로 바꿀려고 합니다. Optimistic update, 무한스크롤 기능을 제외하고 나머지 모든 서버 상태는 확장 fetch로 바꿀려고 합니다. 페이지네이션 페이지네이션 처럼 사용자와 상호 작용하는 부분, 즉 동적으로 데이터를 받아오게 하기 위해 url을 변경한 뒤, [id]/page.tsx에서 param로 받던지 혹은 header()를 통해 params를 받아서 처리를 할 수 있다고 생각하고, 저는 header()로 params를 받아서 처리를 했습니다. 모달에서의 페이지네이션 그런데 문제는 모달을 띄우고, 모달 내부에서 페이지네이션이 있는 경우 어떻게 데이터를 동적으로 받아오는지 고민을 해봐도 방법이 없는 것 같습니다. 1. 모달에서 다음 페이지 클릭시 url을 변경한다. -> 안해봤지만 동작을 할 수 있더라도 뭔가 느낌적으로 아닌 것 같습니다. 2. 클라이언트 컴포넌트에서 상태값을 서버 컴포넌트로 전달한다 -> 불가능 궁금한 점 1. 모달 내부에서 페이지네이션을 처리할때 url을 변경해서 서버 컴포넌트에서 확장 fetch로 데이터를 관리하는 게 적절할까요? 2. 모달 내부에서는 페이지네이션을 처리할 때는 react-query로 데이터를 관리하는 걸 확장 fetch로 바꿀 수 없는 건가요?? 바꿀 필요가 없는 건가요? 3. 더 좋은 방법이 있는 건가요?
개발자
#next.js
#reactquery
답변 2
댓글 0
조회 210
일 년 전 · Booting 님의 질문
리액트네이티브 웹뷰에서 카카오 로그인 관련 질문드려요
안녕하세요. 웹 개발자여서 리액트 네이티브 cli로 웹뷰만 했을 뿐 아무것도 모릅니다.ㅜㅜ 원인: 웹뷰에서 카카오 로그인을 붙였습니다. 하지만 안드로이드에서 카카오 로그인이 되지 않습니다. 이유를 찾아보니 카카오 개발자 문서에 https://developers.kakao.com/docs/latest/ko/javascript/hybrid 안드로이드는 따로 뭘 해줘야 한다고 합니다. 'JavaScript SDK가 카카오톡 실행을 위한 Intent URI를 생성해 호출합니다. 웹뷰에서는 WebViewClient#shouldOverrideUrlLoading 메서드를 오버라이딩(Override)하여 Intent를 파싱(Parsing)하고, 해당 Activity를 실행해야 합니다.' 하지만 저것을 어디에 오바라이딩 해야하는건지 전혀 모르겠습니다. 도와주세요
개발자
#react-native
답변 0
댓글 0
조회 281
일 년 전 · 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
조회 23
일 년 전 · 삭제된 사용자 님의 댓글 업데이트
안녕하세요.. 정말 이것저것 다 해봤는데 안되네요 ㅠ
안녕하세요. 리액트와 리액트 쿼리를 이용해 프로젝트를 진행 중 입니다. 저는 일단. 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
조회 119
일 년 전 · 이양일 님의 답변 업데이트
Spring Unit test @Value
프로젝트 중 외부에 노출되면 안되는 값이 있어 환경변수로 설정한 후 @Value 어노테이션을 사용해서 값을 사용했습니다. 테스트 코드를 작성하며 통합테스트를 진행하기엔 자원소모가 크다 생각하여 유닛테스트로 테스트 코드를 작성했습니다. 그런데 유닛테스트에서는 @Value에 의존성주입이 안되서 해결방법을 찾고있습니다. 제가 찾아본 해결 방법으로는 1. @SpringBootTest 사용 2. Reflection 사용 3. 생성자를 통한 주입 이렇게 3가지 방법이 있는데 2,3번 모두 테스트코드 내에서 직접 값을 입력해줘야해서 환경변수로 값을 보호하는 이점이 사라진다고 생각이 들었습니다. 이런 상황에선 어떻게 하는게 좋을까요? 환경변수가 들어가는 값을 테스트 할때 유닛테스트를 사용하는 접근방식부터 잘못된걸까요..? 현업에선 이런 민감한 정보를 어떻게 처리하는지 궁금합니다!
개발자
#spring
답변 1
댓글 1
보충이 필요해요 1
조회 1,486
일 년 전 · aigoia 님의 답변 업데이트
부트캠프를 어떤걸 고르는 게 맞을까요..
결론부터 말씀드리면 싸피에서 백엔드를 배우고 나중에 ai엔지니어나 mlops로 전환을 시도할지, 네이버 부스트캠프에서 ai프로덕션을 배워서 바로 ai엔지니어 취업을 노릴지 고민입니다. (대학원은 진학하지 않을 예정입니다.) 저는 어느 특정 도메인에서 딥러닝이 활용되는 것에 관심이 있습니다. 그래서 여태 딥러닝쪽 을 공부해오고 있었으나 취업이 너무 힘들어서 일단 백엔드를 배우고 나중에 기회가 되면 다시 ai엔지니어를 도전해보자 라는 생각으로 싸피에 지원했는데 합격을 했습니다. 그런데 막상 붙고보니 좀 아쉽더라구요... 싸피는 ai나 mlops 등을 가르치지 않으니 나중에 직무 전환이 가능할지 의심이 되기도 하구요. 하지만 금융 기업 등과 협력이 있으니 취업면에선 큰 강점이 있다는 게 끌리는 것 같습니다. (이 경우엔 ai쪽은 포기해야겠지만요) 그리고 네이버 부스트캠프 ai tech도 원래 관심이 있었는데 아직 모집중이라서 붙는다고 확신할 수는 없지만 일단 지원은 해놓은 상태입니다. 네부캠은 ai production을 배울 수 있으니 좀 더 끌리는 것 같지만 수료 후에도 취업이 어려울 수 있다는 점이 걸립니다. 어떤 선택을 하는 것이 지금 시기에 현명할까요? 현재 취업 상황이 매우매우 안좋아서 모두가 어디든 취업해서 경력을 쌓으라고들 하십니다. 그래서 마냥 하고싶은걸 하기는 어려운 것 같아 결정하기 참 쉽지 않은 것 같네요... 선배님들의 조언을 듣고 싶습니다.
개발자
#취업고민
답변 1
댓글 0
추천해요 1
조회 284
일 년 전 · 포크코딩 님의 새로운 댓글
HTML의 tagName을 모아둔 타입이 있을까요?
content 분류 - sectioning, phrase, metadata... - 에 따라 tagName이 나뉘어져 있으면 좋겠다는 생각...이었지만 검색한 걸로는 아직 오픈 소스나 @type에 그런 정의가 없는 것 같았습니다. 그래서 한땀한땀 직접 만든 것을 사용하고 있었는데, 제가 못 찾고 있을 걸 수도 있어 질문 남겨봅니다.
개발자
#html
#typescript
답변 1
댓글 2
조회 48
일 년 전 · devwoo 님의 새로운 답변
react-native-config, Cannot locate tasks that match 'app:installDevlop' as task ~
react-native-config 를 활용해서 환경변수를 만들어서 api key를 숨길려고 했는데요, 제목같이 에러가 발생하더라구요. 근데 다 찾아봤는데 저렇게 계속떠가지고 방법이 있을까요? (※ project.ext.envConfigFiles = [ developdebug: ".env.development", productdebug: ".env.production" ] 위 코드처럼 developdebug 이렇게 자세히 써야한다고 하는데 썼는데도 안되더라구요;; )
개발자
#react-native
#react-native-cli
#react-native-config
답변 1
댓글 0
조회 29
일 년 전 · csw 님의 새로운 답변
3년차 인공지능 개발자 연봉 적정선은 어느정도 인가요?
안녕하세요 저는 지방에 있는 ai 스타트업에 입사해서 3년차가 되었습니다 지금까지 각종 정부 민자 사업을 하면서 데이터분석쪽으로는 분류 회귀모델 만드는 것을 수행했고, 이미지 분석에서는 파이토치, yolov5, yolov8 등 이용해서 object detection, segmentation, classification, anomaly detection을 주로 수행했습니다 일이 제법 많은 회사여서 동시에 여러 프로젝트를 수행하면서 고객이 만족스러울만한 성과를 내기도 했습니다 그래서 올해 연봉상승을 내심 기대했으나 너무 적습니다 3년차인데 4천이 안됩니다 원래 이정도가 맞는건가요? 사람마다 능력이 다르기때문에 객관적인 비교는 어렵겠지만 통상적으로 받는 수준이 어느 정도인지 궁금합니다 제가 무리하게 욕심을 내는건가요?
투표
개발자
#데이터분석
#인공지능
#이직
#연봉
답변 3
댓글 0
조회 1,832