#map

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

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

이직 시 단독 작업한게 걸림돌이 될까요?

프론트엔드 3년차 입니다. 디자이너,백엔드 개발자와 작업은 같이 했지만 프론트엔드 파트는 혼자 전부 진행하였습니다. 회사에서 보낸 시간이 너무 많아서 1년반정도가 인생에서 사라진 느낌이 들 정도였습니다. 그동안 트러블 슈팅, 혼자서 해결한 문제들이 너무 많아서 그런것들 보단 ( 알고보면 단순한 내용들이거나 시니어가 있었다면 금방 해결될 문제들입니다. ) 어려운 전제조건 하에 개발한 기능, 수치적으로 표현 가능한 기능에 대해서 이력서에 기입했습니다 허나 기입한 기능들 자체가 글로 적으면 대단해 보이지가 않는다는게 문제입니다. 오히려 단독으로 했다고 하면 과장해서 적어놓은 사기꾼같아보일까봐 걱정입니다. 이력서에 적힌걸 보면 정렬,최적화,구조 변경 이런것들이거든요... 근대 그것들을 클라이언트 단에서 디자인 패턴까지 쓰지않으면 안될정도의 복잡한 로직을 구현한거긴합니다만 결과 자체는 단순히 필터링 정렬 표기 그런것들입니다.. , 그걸 이력서에 다 기입할 수가 없어서 고민입니다. (react , next를 사용하였습니다) 또한 혼자서 서비스와 백오피스를 다 작성했다보니 효율적으로 수정 가능하게 진행했다, 다른 프로젝트에서 사용하기 용이하게 코드구조를 변경했다. 정도만 적을 수 밖에없었습니다. 어렵기 보단 얼마나 효율적으로 구조를 잡고 진행하냐의 문제였거든요. 이력상으로 봤을때 화려한 기능이나 서비스를 만든건 아니라서 더 더욱 차반 취급받을까봐 고민입니다.. 혼자서 많은 고민과 문제를 해결했지만 3자입장에서 봤을때 전혀 볼게 없는 심각한 상황입니다.. (시간만주면 3d든 스트리밍 chart든 브라우저 api 활용이든 map api든 canvas든 다 금방 배워서 할 자신이 있지만 그런 종류의 작업들은 회사 일로선 전혀 하질 못했습니다.. ) 연봉을 대거 낮춰서 신입 자리라도 지원해야할까요..? 최근엔 회사에서 먹고 자지 않아도 될정도라 알고리즘도 공부하고있고 트러블 슈팅이나 개발하면서 문제해결에 도움되었던 것들을 적으려고 블로그도 만들고 있긴합니다만. 너무나도 부족하고 모자라 보입니다.. 개발 실력도 올랐고 배포,운영 경험도 쌓였지만 작업내용 특성상 죄다 공개를 하지 못하니 어떻게해야할지 고민입니다..

개발자

#프론트엔드

#이직

#이력서

#경력기술서

답변 1

댓글 0

조회 202

5달 전 · tiptok 님의 질문

스프링부트 레이어드 아키텍쳐는 어떤 방식을 권장/선호 하나요?예시있습니다!

전형적인 걸로는 1. Controller > Service > ServiceImpl > Dao > DaoImpl(xml 호출) 이러한 방식이 있습니다. 이번에 변경을 위하여 몇가지를 생각해보았는데 2. Controller > Service > ServiceImpl(mapper 호출 + 비즈니스 로직) 3. Controller > Service > ServiceImpl(Dao 호출 + 비즈니스 로직) + Dao(mapper 호출) 이렇게 2개를 생각하고 있습니다 . 2번의 경우는 dao역할과 비즈니스 로직이 전부 serviceImpl에 들어가있다보니 gpt도 권장하지 않는 방식이고 저도 마음에 잘 들진 않는데 파일이나 소스의 양이 줄어든다는 장점이 있긴 해보입니다. 솔직히 Controller > Service > ServiceImpl > Dao > DaoImpl 처럼 극단적으로 계층을 나누는 것도 생각해보았는데 이렇게 극단적인 것보다는 3번이 나아보이긴 합니다. 다들 몇 번을 권장하나요? 참고로 개인프로젝트입니다! 기존엔 Controller > Service > ServiceImpl > Dao > DaoImpl(sqlSession.~ 호출) 방식을 사용했습니다. 안정성을 위하여 mapper 방식으로 변경할 겸 구조도 변경하는 게 나아보여 질문드립니다! 한가지더, Dao나 DaoImpl 명칭을 Repository.java, RepositoryImpl.java 로 변경하는 거에 대해선 어떻게 생각하시나요?

개발자

#스프링부트

#구조

#레이어드-아키텍처

답변 0

댓글 0

조회 110

6달 전 · 익명 님의 질문

웹소켓 + 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

조회 94

9달 전 · 말랑트립 님의 질문

말랑트립을 유니콘 기업으로 함께 만들어갈 혁신적인 동료들을 기다립니다.

**1. 프로젝트의 시작 동기** 말랑트립은 뚜벅이 여행자들을 위한 저렴한 택시 카풀 여행 플랫폼입니다. 여행 중 교통수단의 불편함을 해소하기 위해 시작되었으며, 여러 명이 관광택시를 나눠 탈 수 있도록 하는 시스템을 도입해 경제적 부담을 덜어주고 있습니다. 우리 프로덕트의 목표는 뚜벅이 여행자들에게 저렴하고 편리한 여행 경험을 제공하는 것입니다. 사용자가 여행 계획과 함께 택시를 나눠 이용하고, 동행자를 쉽게 구할 수 있는 플랫폼을 만들고자 합니다. 실시간 예약과 결제 시스템을 통해 여행 중 발생하는 불편함을 최소화하고자 합니다. 주 타겟은 교통이 불편한 국내 및 해외 여행지를 탐험하려는 뚜벅이 여행자들입니다. 특히, 운전을 하지 않거나 지방의 대중교통 이용에 불편을 겪는 여행자들을 위한 서비스로, 새로 만나는 사람들과의 동행을 통한 특별한 경험을 제공하고자 합니다. 대중성과 차별성 기존의 택시 예약 서비스와 차별화되는 말랑트립의 핵심은 1/N 결제 시스템입니다. 사용자는 동행자와 함께 비용을 분담하여 경제적 부담을 줄일 수 있으며, 플랫폼 내 말랑챗, 커뮤니티를 통해 여행 동행자를 쉽게 모집할 수 있는 기능을 제공합니다. 이 차별화된 기능은 뚜벅이 여행자들에게 여행 비용의 경제성과 교통이 열악한 지역의 여행 만족도를 극대화합니다. **2. 회의 진행/모임 방식** 회의 진행 - 주 1~2회 온라인 미팅 예정입니다. 정확한 시간은 현재 미정입니다. 소통 방식 - 구글챗을 통해 소통을 나눕니다. **3. 모집 포지션 및 역할** 1) 대외협력 (1명) - 말랑트립 고객 및 드라이버 CS 담당, - 타 기업 및 공무원 MOU 탐색 및 대외협력 2) 마케터 (1명) - 말랑트립 마케팅 전반 ※ 퍼포먼스 마케터는 이미 합류한 상태로, 다양한 마케팅 분야 경험이 있는 분 환영합니다. 3) 네이티브 앱 개발자 ※ 안드로이드 스튜디오 개발자 또는 스위프트 개발자 4. 이력 2023.03: 말랑트립 프로젝트 시작 2023.08: 경기콘텐츠진흥원 주관 PRE-MAP 지원금 1,000만원 유치 2024.03: 안양산업진흥원 주관 2024 관광 액셀러레이팅 프로그램 참여기업 선정 2024.04: 한국관광공사 주관 관광기업 혁신바우처 지원사업 수혜기업 2,000만원 선정 2024.06: MVP 서비스 출시 및 운영 중 2024.09: 경기 청년기회 여행감독 육성사업 선정(최대 500만원)

PM/PO/기획자

#협업

#사이드-프로젝트

#팀원모집

#구인구직

답변 0

댓글 0

조회 83

9달 전 · 한종원 님의 질문

<항공/기후산업의 혁신을 함께할 프론트엔드 개발자 모집>

주식회사 노바에어는 고가의 장비 인프라 없이 항공기 상태 변화 기반으로 난기류를 진단하고, AI 기술을 적용하여 운항관리사와 조종사에게 최적화된 실시간 난기류 대응책 도출 프로세스를 자동화하는 솔루션을 개발하고 있습니다. 이 솔루션을 통해 더욱 안전하고 효율적인 항공/모빌리티 운항 환경 구현을 목표로 합니다. ★ 대표자 - UAM/항공 분야 프로젝트 및 연구 다수 진행 - 총 3회 수상 이력 (국토교통부 장관상. 한국공항공사 사장상. 한국교통안전공단 이사장상) ★ 팀원 - 리서치/운영 지원 1명, PO/PM 1명, 웹 풀스택/네트워크 개발 1명, 안드로이드 개발 1명, 디자인 1명 - 항공기상 빅데이터융합, 대기과학 인공지능 분야에서 20년 이상의 경험과 노하우를 갖춘 해외 대학 박사학위 보유자 두 분 (Adviser) 우리 팀과 함께 기술 고도화와 시장 확장을 이끌어갈 아래에 해당하는 신규 팀원을 모집하고 있습니다. 글로벌 항공시장을 혁신하고 지속 가능한 하늘길을 만들고자 하는 열정적인 분들의 많은 지원을 기대합니다. I. 프론트엔드 개발자 (1명) : 파트타임 및 인턴 직무 내용 - 항공 운항 관리 및 통제용 난기류 실시간 모니터링 및 대응 솔루션 웹 플랫폼의 사용자 인터페이스(UI) 개발 요구 사항 - Kepler.gl 등 Map GL을 사용한 개발 경험 필수 - React에 능숙하신 분 주도적인 마인드로 가슴 설레는 일을 하고 싶으신 분들은 나이, 전공, 경력 등 불문하고 연락 주십시오. 학/석/박사학위자 및 과정 중, 직장이 있으신 분도 환영합니다. 관심 있으신 분들은 아래 오픈 카톡방으로 입장해주세요! https://open.kakao.com/o/s66vjKgg

개발자

#항공

#기상

#react

#맵gl

#mapgl

답변 0

댓글 0

조회 114

일 년 전 · hwajin 님의 새로운 답변

함수에서 다중반환은 잘 사용 안하나요?

코딩하다가 여러 값을 반환해야할때 클래스로 만들거나 map으로 만드는게 귀찮아서 다중반환을 사용해보려고 하는데, 보통 잘 사용하지 않나요?

개발자

#프로그래밍

#아키텍처

답변 2

댓글 1

조회 71

일 년 전 · 익명 님의 질문

ArcGIS Maps SDK for JavaScript 써보셨나요?

ESRI 라는 해외업체에서 만든 ArcGIS Maps에 대해 국내에서는 많이 안써보신거같은데요. Relive라는 앱에서 다양한 야외활동(달리기, 바이크, 운전, ... )에 대해 기록하는 앱인데요. 이 앱에서 esri ArcGIS Map을 활용해서 기록에 대한 영상을 제작하여 멋지게 기록을 확인할 수 있게 하고 있더라구요. 그래서 ArcGIS Maps SDK가 있어서 영상과 비슷하게 map 위에서 animation 효과를 넣어 구현해보는 중인데요.. 이게 공식 사이트 문서만 보고 하기에는 한계가 좀 있더라구요. 3D지도를 로딩하고, tilt를 75 정도 적용하고, 주어진 위경도 배열을 사용해서 지도위에 line을 애니메이션으로 그려지도록 하기까지는 했는데요. 현재 잘 안되는 부분이 그려지는 line의 끝부분을 map 중심에 두고 map이 따라가도록 하고 싶은데, 아무리 해봐도 잘 따라가지질 않네요. 공식 사이트 sample은 너무 방대한 기능에 대한 설명만 늘어놓고 있어서 꼭 필요한 기능구현에 대한 내용은 많지가 않네요.. 이게 sdk의 기능이라기 보단 수학 계산과 javascript를 정교하게 활용해야 가능해보이긴하네요.. 경험있는 분이 있을까요?

개발자

#esri

#arcgis

#map

#sdk

#relive

답변 0

댓글 0

조회 39

일 년 전 · 백승훈 님의 새로운 답변

react-query로 이미지를 가져올 때, 이미지가 깜빡거리는 문제를 해결하고 싶어요.

React 프로젝트에서 차량 데이터 목록(차량 모델 사진, 차량명, ....등)을 보여주는 웹 프로젝트를 진행하고 있습니다. 차량 데이터 목록 화면에서 react-query를 통해 가져온 데이터는 (예시 데이터) const data = [{id: number, car_name: string, model_name, car_model_image: number...}, {.....} ] 이런식으로 가져와서 map을 통해 CarCard 컴포넌트에 데이터를 props로 보내어 현재 출력하고 있습니다. 여기서 이미지 같은 경우는 백엔드에서 차량 모델 이미지를 가져오는 api를 따로 만들어놓아서, props로 전달받은 car_model_image 즉, 차량 모델 이미지의 id를 통해서 차량 모델 이미지 api에 데이터를 요청해서 이미지를 출력하고 있습니다. 이때. 페이지를 전환하거나, 한 페이지에서 아무동작을 하지 않아도 게속 이미지가 깜빡거리면서 재렌더링이 되고, 계속 무한정으로 이미지를 호출하는 문제가 발생하였습니다. map을 통해 CarCard를 호출하고 CarCard 안에서 이미지를 호출함에 따라서 계속 이미지가 깜빡깜빡 거리는 것 같은데, 컴포넌트 안에서 이미지를 호출할 때 어떻게 하면 무한정으로 이미지를 불러오지 않도록 하고 깜빡거림을 없앨 수 있을까요 ?...어떻게 해결해야 할지 감이 안 잡혀요.... //차량 목록 페이지 한 부분 ... const { data } = useGetCarList(); //useQuery를 통해 서버에서 데이터 전달받음 // const data = [{id: number, car_name: string, model_name, car_model_image: number...}, {.....} ] 이런식 .... return ( <div> data.map((data: CarData) => { return ( <Carcard ascCarData={data} key={Math.random()} handleClick={() => handleClick(data)} isActive={true} /> ); }) </div> ) //Carcard 컴포넌트 const { data: carImage } = useGetCarModeImage(ascCarData.car_model_image); // 이미지 데이터 가져오기

개발자

#react

#vite

#react-query

#typescript

#react-query-v3

답변 4

댓글 0

조회 359

일 년 전 · 익명 님의 질문

React Spring 배포과정 중 의문의 404

react + spring boot로 진행하는 프로젝트가 현재 cloudtype이라는 플랫폼으로 배포중에 있습니다. 문제는 정확한 서버주소를 호출하는 것 같음에 불구하고 404 에러가 발생하여 해결하지 못하고 있습니다. 현재, 아래 사진과 같은 로그가 클라이언트, 서버에 각각 발생합니다. 서버에서는 다음과 같이 구성되어있고 @RestController @RequestMapping("/v1/login") @RequiredArgsConstructor @CrossOrigin(origins = "https://web-secondchance-front-bug-1cupyg2klvnmgdft.sel5.cloudtype.app") public class KakaoController { private final KakaoService kakaoService; private final Logger LOGGER = LoggerFactory.getLogger(KakaoController.class); @PostMapping("/kakao-login") public ResponseEntity<UserDto> kakaoLogin(@RequestBody KakaoLoginDto kakaoLoginDto) { String code = kakaoLoginDto.getCode(); LOGGER.info("Get Code from FrontEnd : {}", code); LOGGER.info("Request getAccessToken()"); kakaoLoginDto = kakaoService.getAccessToken(code); String accessToken = kakaoLoginDto.getAccess_token(); LOGGER.info("access_token : {}", accessToken); if(accessToken != null){ UserDto userDto = kakaoService.getUserInfo(accessToken); return ResponseEntity.ok(userDto); } else { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); } // accessToken이 null임에도 getUserInfo를 부름. // 안부르게 끔 위의 방법을 포함하여 // 1. map에서 true, false를 사용하여 해봄 // 2. getAccessToken을 map객체로 반환하게끔 하여 accessToken이 있으면 true, 없으면 false로 하여 isEmpty 함수로 체크하여 부름 // 위의 두 방법 전부 소용없음. 그냥 getUserInfo를 부름. } @PostMapping("/kakao-logout") public String kakaoLogout(){ return "ok"; } } 현재 리액트에서는 다음과 같이 axios.post로 접근하여 code를 전달합니다. 무엇이 문제일까요?

개발자

#react

#spring-boot

#배포

#404

답변 0

댓글 0

추천해요 1

조회 167

일 년 전 · 디큐 님의 새로운 답변

데이터 엔지니어(및 사이언티스트) 로드맵에 관한 질문

안녕하세요, 저는 모 부트캠프에서 소속되어 데이터 엔지니어를 준비 중인 교육생입니다. 최근들어 부트캠프에서 필요한 기술 스택들을 하나씩 공부하다 문득 되돌아 봤을 때, 너무 중구난방으로 공부하고 있는게 아닌가 하는 생각이 들었습니다. 공부하는 입장에서 머릿 속에서 체계화된 로드맵을 숙지하고, 기술 스택들에 대한 개념들이 명확하게 그려져야 조금 더 효율적인 학습이 가능하다고 판단했습니다. https://github.com/hindernislauf/obsidian.git 제 깃허브에 올린 옵시디언의 폴더는 구글에 'Data Engineer Roadmap'을 검색하면 나오는 이미지의 2022년 버전을 기반으로 만들었습니다. 해당 캔버스를 모두 채워넣을 생각보다는, 하나씩 배워가면서 기초 정리/필기장으로 사용하고, 부트캠프 동기 교육생들과 공유할 수 있는 아카이브를 만들어 지속적으로 업데이트할 생각입니다. 현재 깃허브를 열고 부트캠프 내에서 스터디원 모집 중에 있습니다. 제가 질문드리는 이유는 두 가지입니다. 1. '이 로드맵이 제공하는 정보가 신뢰성이 있는가?' 2. '신뢰성이 있다면, 현재 동향에서 이 순서가 유의미한가?' 다소 구체적인 답변을 구하는 질문일 수도 있습니다만, 모든 공부에 있어서 계획이 필요하듯 저에게는 이 계획 수립 과정이 정말 중요하다고 생각하기에 조언이 절실합니다....... 현재까지 구성된 로드맵에서 추가, 삭제가 필요하거나, 누락 또는 최근 JD에서 요구하는 내용과 부합하지 않아 최신화가 필요한 항목이 있다면 폴더 목차를 참고하시어 가능하신 만큼만이라도 조언 부탁드립니다....!

개발자

#데이터-엔지니어

#로드맵

#옵시디언

답변 1

댓글 0

조회 168

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

리액트 투두리스트 체크박스

리액트로 투두리스트를 만들어보고 있는데 삭제 기능은 filter() 메서드로 구현하였고, 체크박스는 input에 css :checked로 구현하였습니다. 문제는 첫번째 항목을 체크하고 난 후에 리스트 앞부분에 새로운 항목을 추가해도 체크박스는 항상 첫번째 항목에 체크되어 있습니다... 인풋 박스를 독립적으로 빼서 컴포넌트로 사용하면 개별로 적용될거 같았는데 결과는 같았고, state로 체크 된 항목을 따로 관리해봤는데 그거또한 결과가 같았습니다...ㅠㅠ 리스트의 key는 map의 index로 사용하고 filter()로 삭제 기능을 구현하니 키는 마지막 순서만 삭제되면서 재렌더링으로 리스트가 변경되서 체크박스가 개별로 적용이 안되는것으로 예상이 됩니다만 너무 어렵네요ㅠ.. 구체적으로 도와주시면 감사하겠습니다ㅠㅠㅠ코드는 첨부했습니다!

개발자

#리액트

#투두리스트

답변 1

댓글 1

추천해요 1

조회 81

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

스프링부트 ServiceInterface에 요청문 작성

안녕하세요 MSA아키텍처를 적용한 개인프로젝트 진행중에 궁금한 사항이 생겨서 글 작성합니다 회원정보 수정을 한 뒤 수정이 정상적으로 완료되었을 때 클라이언트에 완료되었다는 메세지와 함께 로그아웃 메서드를 실행시키고 싶어서 public interface IUserInfoService { @PostMapping(value = "security/v1/logout") void logout(); } 이렇게 서비스 인터페이스에 작성을 해두고 컨트롤러에서 userInfoService.logout(); 으로 호출하여 실행하는데 권장되는 방법인지, 더 좋은 방법이 있는지 궁금해서 질문드립니다

개발자

#springboot

#java

#spring-security

#msa

답변 1

댓글 0

추천해요 1

조회 340

일 년 전 · 익명 님의 댓글 업데이트

앱(Flutter)에서 JSON데이터를 검색하려고 합니다

안녕하세요 Flutter를 이용하여 식단 및 체성분 관리 앱을 개발 중인 대학생입니다! json형식의 식품영양성분 공공데이터 안에서 사용자가 입력한 식품명 검색어를 기준으로 데이터를 불러오려고 합니다. DB는 Google Firebase를 사용 중이며, 위와 같은 목적으로 데이터를 사용 할 때에 적합하지 않다면 다른 DB를 사용 할 의향도 있습니다. 사용자의 검색어로 시작하는 특정 데이터만이 아니라, 검색어를 "포함"하는 데이터도 불러오고 싶습니다. 현재 어느 정도 그려 본 방법입니다. 영양성분 JSON 다운로드 ↓ Python을 이용하여 필요한 데이터만 가공 ↓ Firebase Realtime Database / Storage에 저장 ↓ 저장된 JSON을 API 호출을 통해 String으로 불러옴 / 앱 내부에 .json 파일로 저장 ↓ Map으로 변환 후 캐싱 ↓ 사용자가 검색어 입력 ↓ 검색어를 포함하는 데이터만 별도 리스트에 추가 여기서 데이터를 불러오는 과정에서 필터링을 거치지 않는 이유는 Firebase Realtime Database에서는 검색어를 "포함"하는 것이 아닌, 사전 순으로 검색어 기준 뒤에 있는 데이터만 가능하다고 합니다.. 그래서 결국 JSON파일로 직접 사용하기로 했습니다 혹시나 저의 부족함이 보이시는 분들의 조언과 피드백을 듣고 싶습니다! 더 나은 방법이 있다면 무차별 폭격 및 질문 부탁드립니다! 미리 감사드립니다 (_ _)

개발자

#json

#flutter

#query

#쿼리

#data

답변 1

댓글 1

조회 123

일 년 전 · 익명 님의 질문

안드로이드 스튜디오 지도 API

ㅠㅠㅠㅠ여기서 Unresolved class ‘MapFragment' 오류가 나오는데 chatgpt한테 물어봐도 해결이 안대야 ㅠㅠ뭐가 문제인거죠?!?

개발자

#안드로이드스튜디오

#api

#app

#naver-api

#java

답변 0

댓글 0

조회 63

일 년 전 · 장성호 님의 답변 업데이트

여기서 의존성 주입이 어떻게 이뤄질 수 있는 지 궁금합니다.

안녕하세요 이제 막 스프링부트 공부를 시작한 3학년 학생입니다. 다름이 아니라 스프링부트를 공부하던 중 아래와 같은 의문이 생겨 질문드립니다. @SpringBootApplication @ConfigurationPropertiesScan public class SburRestDemoApplication { public static void main(String[] args) { SpringApplication.run(SburRestDemoApplication.class, args); } } @ConfigurationProperties(prefix = "greeting") class Greeting { private String name; private String coffee; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCoffee() { return coffee; } public void setCoffee(String coffee) { this.coffee = coffee; } } 제가 이해하기로는 @Component(service, repository, controller 등) 어노테이션이 클래스에 부착되어 있어야 해당 클래스의 객체를 스프링 컨테이너에 의해 의존성 주입을 할 수 있다고 알고 있는데, @ConfigurationProperties 어노테이션은 내부를 아무리 찾아도 위에서 언급한 어노테이션을 가지고 있지 않았습니다. 하지만, @RestController @RequestMapping("/greeting") class GreetingController { private final Greeting greeting; public GreetingController(Greeting greeting) { this.greeting = greeting; } @GetMapping String getGreeting() { return greeting.getName(); } @GetMapping("/coffee") String getNameAndCoffee() { return greeting.getCoffee(); } } @RestController 에 의해(@RestController는 내부에 controller 어노테이션이 있더라구요) 스프링 컨테이너로부터 의존성 주입을 받을 수 있는 GreetingController는 greeting 객체를 받아서 생성자 메서드를 실행하므로 스프링 컨테이너에서 Greeting 클래스의 객체를 의존성 주입 받을 수 있는 지 확인해보고 위에서 언급한대로 Greeting은 등록되어 있지 않으므로 오류가 날거라 예상했습니다. 하지만, 아무런 문제없이 자동으로 public GreetingController(Greeting greeting) { this.greeting = greeting; } greeting 객체가 주입이 되었고 실행되었습니다. 제가 이해한 내용이 어디서 틀렸는 지 궁금합니다.

개발자

#spring-boot

#java

답변 2

댓글 0

조회 632

일 년 전 · 이경도 님의 답변 업데이트

Jpa 커스텀 리포지토리 다중 상속 문제

커스텀 리포지토리 사용중 문제가 발생하여 질문 드립니다. @Repository public interface UserRepository extends JpaRepository<User, Long>, CustomRepository { Optional<User> findByUserId(String userId); } public interface CustomRepository { Long search(User user); } public class ACustomRepositoryImpl implements CustomRepository { @Override public Long search(User user) { return 1L; } } 이런식으로 코드를 작성하고 실행 시키면 아래와 같은 에러 메시지가 나옵니다. 그런데 ACustomRepositoryImpl 구현체 이름을 CustomRepositoryImpl 이렇게 바꾸면 정상적으로 실행됩니다. 명명규칙이 그저 개발자들 간의 약속 인줄 알았는데 규칙을 무조건 지켜야 하는 건지 궁금하여 질문 드렸습니다. Caused by: org.springframework.data.mapping.PropertyReferenceException: No property 'search' found for type 'User' at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:90) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:443) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:419) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:372) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) ~[na:na] at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:354) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:332) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:259) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na] at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na] at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:260) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:389) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na] at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na] at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:390) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:100) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:100) ~[spring-data-jpa-3.2.2.jar:3.2.2] ... 79 common frames omitted

개발자

#spring-boot

#java

#interface

#jpa

답변 2

댓글 0

조회 183

일 년 전 · 장성호 님의 새로운 답변

JpaRepository 다중상속 오류

JpaRepository에 다중상속으로 CustomRepository를 상속하려고 합니다. 근데 자꾸 에러가 나서 질문 드립니다. @Repository public interface UserRepository extends JpaRepository<User, Long>, CustomRepository { Optional<User> findByUserId(String userId); } public interface CustomRepository { void search(); } 에러 메시지 ========================================================= Caused by: org.springframework.data.mapping.PropertyReferenceException: No property 'search' found for type 'User' at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:90) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:443) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.create(PropertyPath.java:419) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.lambda$from$0(PropertyPath.java:372) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.concurrent.ConcurrentMap.computeIfAbsent(ConcurrentMap.java:330) ~[na:na] at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:354) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.mapping.PropertyPath.from(PropertyPath.java:332) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.Part.<init>(Part.java:81) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree$OrPart.lambda$new$0(PartTree.java:259) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na] at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na] at org.springframework.data.repository.query.parser.PartTree$OrPart.<init>(PartTree.java:260) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree$Predicate.lambda$new$0(PartTree.java:389) ~[spring-data-commons-3.2.2.jar:3.2.2] at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) ~[na:na] at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179) ~[na:na] at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992) ~[na:na] at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na] at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na] at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na] at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na] at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na] at org.springframework.data.repository.query.parser.PartTree$Predicate.<init>(PartTree.java:390) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.repository.query.parser.PartTree.<init>(PartTree.java:100) ~[spring-data-commons-3.2.2.jar:3.2.2] at org.springframework.data.jpa.repository.query.PartTreeJpaQuery.<init>(PartTreeJpaQuery.java:100) ~[spring-data-jpa-3.2.2.jar:3.2.2] ... 79 common frames omitted

개발자

#spring-boot

#java

답변 1

댓글 0

조회 137

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

프론트 배포 관련 구글 검색에 노출 질문

안녕하세요 프론트엔드 개발자 입니다 이번에 사이드 프로젝트로 Next.js로 프로젝트를 만든 이후 vercel에 배포하였습니다 해당 프로젝트에 sitemap.xml과 robots.txt 파일 모두 설정하고 meta 태그에 title과 description도 모두 설정하였는데 구글에 검색해도 노출이 되지 않네요 혹시 또 다른 설정이 필요한지 궁금합니다!

개발자

#seo

답변 1

댓글 3

조회 168

일 년 전 · 장성호 님의 새로운 답변

컴공 특기자전형 평균 수준

올해 막 고3이 된 코딩 새내기입니다. 고1때 알고리즘에 흥미를 느껴 C++로 알고리즘 공부를 시작해 이 특기를 살려 SW특기자 전형을 써 보고 싶은데, 인문계 고등학교에서 저처럼 알고리즘을 공부한 친구가 없어 평균 수준을 잘 모르겠습니다... 제 수준은 map/set, heap, st/qu/dq 수준의 자료구조를 활용할 수 있고, 그래프에 관해서는 dfs/bfs, 다익스트라/벨만-포드/플로이드-워셜 알고리즘을 이해했고 구현/응용할 수 있으며, 기타 분할 정복/투 포인터/초급 수준의 dp 등의 문제를 풀 수 있는 정도입니다. (Solved.ac 골드1) 올해 koi를 준비하고 있는데 특기자 전형으로 대학을 노려볼 만 할까요..?

개발자

#algorithm

#대입

답변 1

댓글 0

추천해요 1

조회 192

일 년 전 · 강재은 님의 질문

[STS] mybatis mapper 사이즈 큰(?) xml 파일을 XML Editor로 열면 30초 이상 걸리는 현상 해결법 질문

[STS] mybatis mapper 사이즈가 큰(60KB정도) xml 파일을 XML Editor로 열면 STS가 이상없음 뜨면서 30초 이상 걸리고 난 후 (정확히 45초 정도 걸렸음) 열리는 현상이 있는데 해결 방법 있을까요? 사이즈 작은 xml 파일은 안그러고 50KB 이상? 정도인 xml 파일을 XML Editor로 열면 오래 걸리면서 열리더라고요.. 구글링 해결법 검색해도 잘 안나오고 STS Heap Size 1024M에서 2048M로 늘려도 똑같은 현상이고 폐쇄망이라 STS 써야됩니다.. 겨우 사이즈도 60KB이고 소스 줄도 1300줄 정도인데 왜이러는걸까요? XML Editor로 열고 싶은데 따로 방법이 없을까요?

개발자

#sts

#mybatis

#xml

답변 0

댓글 0

조회 89

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

자바 대용량 txt파일 update, insert 처리

안녕하세요. 초보 자바 개발자 입니다 회사에서 대용량 수신파일에 대한 update, insert 처리 건을 업무로 받아서 개발 중에 있는데 대용량 파일에 대한 처리 업무는 처음이라 어떤 방식이 제일 베스트인가에 대한 결정이 어려워 질문 드립니다. 원본테이블에 존재하는 정보(소속, 이름, 주민, 회차(1~4 중 하나))를 수신받은 파일(주민, 회차(1~4중 하나), 회차에 대한 정보)을 읽어 원본테이블에 존재하는 정보의 회차와 수신 받은 파일의 회차가 같으면 update, 다른경우 insert해 한 명 당 4건의 정보(원본update 1건, insert 3건)를 가지게 해야합니다. 처음엔 PL로부터 약 10만명에 대한 정보만 입력되면 된다고 들어서 자바로 원본테이블 정보를 select 후 수신파일을 읽어 list<map>에 담고 for문을 통해+ 비교 후 원본에 존재하면 updateList에 존재하지 않으면 insertList에 담아 1000건씩 bulk insert, update 처리했습니다. 그런데 최대 40만명까지 늘어날 수 있다고 말이 바껴서... 그럼 수신 파일정보가 160만건인데 제 생각에는 temp table을 만들어서 수신파일정보를 전부 insert 후 원본테이블과 join하여 update, insert하는게 맞지 않을까하는데 조언 부탁드리겠습니다.

개발자

#java

답변 1

댓글 1

조회 226

일 년 전 · 익명 님의 질문

nextjs에서 랜더링 시점 바꾸기

안녕하세요! nextjs 프로젝트 진행중에 궁금증이 생겼습니다. 현재 Sidebar 컴포넌트에서 카카오맵이 불러와져야 작업을 할 수 있는 상태입니다. 카카오 맵은 children 에서 랜더링되기 때문에 아래와 같이 코드작성시, Sidebar 랜더링 시점에 kakao is not defined 라는 오류가 뜹니다. 혹시 Sidebar를 좀 늦게 랜더링 할 수 있을까요? export default function RootLayout({ children, }: { children: React.ReactNode; }) { return ( <html lang="en"> <body className={inter.className}> <div id="login-modal" /> <section className="flex h-screen"> <nav className=" h-full bg-slate-100"> <Sidebar /> </nav> {children} </section> </body> <Script src={`//dapi.kakao.com/v2/maps/sdk.js?appkey=${APIKEY}&libraries=services,clusterer`} strategy="beforeInteractive" /> </html> ); }

개발자

#nextjs

#reactjs

답변 0

댓글 0

조회 68

일 년 전 · Angela 님의 새로운 댓글

숙소등록시 숙소테이블,객실정보테이블 을 동시에 넣어서 외래키 null값 오류

완전신입입니다.. 몇일를찾아보고 해도 제가 로직을 잘못짠건지 모르겠어서 질문을 남깁니다 숙소등록을 구현중인데 숙소테이블accommodation, 객실정보테이블room_info 두개를 나눴고 객실정보테이블에 aid(숙소테이블 기본키) 외래키로 설정을 했습니다 그리고 마이바티스에 각 테이블별로 insert로 넣었고 MySql 자동키 부분 설정도하였습니다. 서비스단을 각 두개의 클래스를 묶고 roominfo에 aid를 받아서 저장하는 로직으로 넣었습니다 그리고 컨트롤단에서 PostMapping으로 두개를묶은 클래스를 파라미터로 넣었습니다 ㅠㅠ 여기서 궁금한게 1. 테이블을 나눠서 한번에 저장할 때 다른분들은 어떻게 처리하는지 궁금합니다. 2. 숙소등록을 입력할때 필드값이 동시에 진행되는부분이라 객실테이블에 지정된 외래키aid 가 아직 없으니까 null값으로 들어가서 자꾸 aid를 찾을수없다는오류가 나오는데 이 부분을 어떤식으로 처리해야하는지 키워드를 말씀해주시면 감사하겠습니다...

개발자

#스프링부트

#외래키

#null

#마이바티스

답변 1

댓글 1

조회 183

일 년 전 · 익명 님의 질문

백엔드 개발자 선배님들의 조언을 듣고싶습니다!

안녕하세요 선배님들 현재 신입 개발자로 수습기간 3개월, 곧 4개월이 되가는 사회생활을 하고있는 중 입니다. 다름이 아니라 저는 백엔드 개발자를 목표로 Spring Fremework 나 Spring Boot 를 좀더 집중적으로 활용하면서 실력을 늘리고 싶은데 현재 회사에서는 솔루션 회사이다 보니 백엔드 부분은 건드릴 일이 없고 화면단(jsp , javascript)과 쿼리 부분만 하게될 거 같습니다... 제대로 된 자바스크립트를 이용한다면 좋겟지만 자체 프레임워크를 사용하고 있어서 이게 이도저도 아닌 느낌이라 물경력만 쌓을거 같다는 느낌이 듭니다. 또한 서비스단 코드를 조금씩 봤더니 vo나 dto 객체도 없고 map으로만 모든 걸 해결하는 느낌입니다. 졸업 한지 얼마 안된 신입이라 경험이 없어서 여러가지 알아보고는 있지만 먼저 경험을 해보신 선배님들의 의견을 여쭈어보고 싶습니다. 저는 신입이라면 많은 걸 경험하면서 실력을 쌓아야 할 때라고 보는 입장입니다. 회사에 다니면서 다시 백엔드 개발 쪽으로 구직 활동을 하는 게 맞는 판단일까요?

개발자

#개발자

#백엔드-개발자

#back-end

#spring-framework

#spring-boot

답변 0

댓글 0

조회 117

2년 전 · 김태현 님의 새로운 댓글

sql문 부적합합니다..

spring boot 4 에서 웹개발프로젝트를 진행중입니다.. jsp페이지에서 받아온 searchText값을 쿼리문으로 비교 후 foodinfolist를 반환해주는데 sql developer에서는 SELECT * FROM foodinfolist WHERE food_name LIKE '%' || '치킨' || '%'; 해당 코드가 정상동작 돼서 잘 검색하지만 mapper.xml에서 <mapper namespace="com.springproj.dietwebservice.repository.IFoodInfoDAO"> <select id="findfoodinfo" parameterType="java.lang.String" resultType="com.springproj.dietwebservice.domain.FoodInfoVO">> <![CDATA[ SELECT * FROM foodinfolist WHERE food_name LIKE '%' || #{searchText} || '%' ]]> </select> </mapper> 해당 코드를 실행하면 sql문이 부적합합니다 라고 에러가 발생합니다.. 뭐가 문제인지 모르겠습니다.. searchText: 치킨 으로 데이터도 잘 담겨오는데.. 2024-01-31T16:24:22.500+09:00 ERROR 8208 --- [nio-8090-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet]  : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: ORA-00900: SQL 문이 부적합합니다 선배님들 조언부탁드립니다..

개발자

#sql

#spring-boot

답변 4

댓글 2

추천해요 1

조회 593

2년 전 · 백승훈 님의 답변 업데이트

Url to state or url and state

흰색 배경의 button group이 있고 각각의 button은 클릭할 시 url을 변경시킵니다. 또한 현재 선택된 button은 색상이 칠해집니다. 이러한 상황에서 useState를 통해서 button의 state를 관리하고 있었고, button을 클릭했을때 1. setState를 통해 button의 값을 변경함 2. router을 통해 url 경로를 변경함 이렇게 두가지 액션을 취했었습니다. 그 때 생겼던 궁금중은 어차피 url과 button은 mapping 할 수 있으니까, 버튼을 클릭하면 url만 변경시키고, url을 읽어서 button에 다시 값을 주면 기능적으로 똑같지 않나? 그러면 하나의 액션으로 기존의 두가지 액션을 대체할 수 있지 않나? 라고 생각했습니다. 그래서 조금 찾아보니까 url을 바꾸고 그 값을 통해 button의 상태 관리를 다시 하는건 즉각적인 반응이 아니고, 영상에서 봤던 것 처럼 url과 button state를 각각 바꾸는게 더 인터랙티브하다 라는 글을 읽었습니다. (신빙성이 있는 글은 아닙니다.) 실제로 이러한 이유 때문에 url만 바꾸고, 그 값을 받아와 button 값을 할당하는게 아니라, 두가지를 모두 동시에 바꾸는게 더 좋은 방법이 맞는건지 궁금합니다.

개발자

#nextjs

답변 1

댓글 0

조회 53

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

유학생 국내 취업 준비

안녕하세요 신검에서 예상치 못하게 재검 - 보충역 판정 루트를 밟고 덕분에 산업기능요원을 준비중인 대학생입니다. 현재 국내 개발자 취업시장이 겨울을 넘어서 투모로우 실사판을 찍는 중인 것은 알고 있으나 제가 해외에서 공부하는 중이라 얼마나 준비를 해야할지 감이 잡히지 않아 선배님들께 질문 올립니다. 스펙: 학력: 미국 아이비리그 중 한 곳에서 컴퓨터 사이언스 2학년 재학 중. 학점 3.7/4.0 경력: 국내 시드 스타트업 올라운더 1년, 미국 데이팅앱 서비스회사 백엔드 인턴 4개월(node.js 마이크로 서비스 개발, 레거시 코드 리팩터링), 현재 국내 대기업 금융회사에서 상품개발 리모트 백엔드 인턴 중(3개월 예정) 기타: 뉴욕시 crime map visualization, 전공 1학년 학생 대상 수업 조교, 현재 스타트업 프로젝트 진행 중. CS 지식: oop 개념, 자료구조 알고리즘, 이산수학, 시스템 프로그래밍 일부. 비고: 보충역 산업기능요원 가능* 혹시나 상황 전달이 애매하게 될까 가급적 자세히 적었습니다. 우선 제가 학교 공부보다도 실재로 일해보고 프로그래밍 하는 것을 즐기다보니 학년에 비해 경력이나 경험은 조금 많은 것 같습니다. 그리고 학교 간판이 주는 기대감(?) 덕분에 그나마 유리한 부분도 있다는 것도 인지하고 있습니다. 하지만 정식으로 국내 취업을 준비해본 적이 없고 지금부터 정식 구직까지 약 일년간 어떻게 준비하는 것이 좋을지 확신이 서질 않습니다. 우선, 보충역 산업기능요원은 중소기업에서만 가능하기 때문에 대기업 지원을 할 수 없습니다. 그리고 너무 업무 환경이 좋지 않거나 시니어가 없는 회사는 피하려고 합니다. 결국 최대한 좋은 중견/스타트업을 노리는데… (1) 국내 스타트업의 경우 코딩테스트 보다는 포트폴리오 위주로 본다는 이야기를 들었습니다. 이에 제가 코테 준비보다는 실무와 프로젝트 위주로 해왔어서 지금 이대로 가도 좋을지, 아니면 코딩테스트를 준비하는게 대기업을 노리지 않더라도 좋은 선택인지가 궁금합니다. (2) 남은 일년간의 기간동안 학업과 인턴쉽 외에 어떤 준비를 부가적으로 하면 좋을지 선배님들 의견을 여쭙고 싶습니다. 현재 스타트업 프로젝트가 mvp 완성이 되었고 마켓출시를 앞두고 있습니다. 당 어플리케이션을 서비스하면서 DevOps를 하는게 좋을까요, 아니면 새로운 프로젝트로 넘어가는 게 좋을까요? 프로젝트 외에 선배님들이 준비하신다면 따로 이건 해놔야 겠다고 생각하시는 게 있으실까요? (3) 미국에서 대학을 다니는 중인데 토익 성적을 따두는 게 좋을까요? 사람이 지원서를 확인한다면 괜찮겠지만 혹여 기계적인 스크리닝에 걸릴까 하는 걱정이 있습니다. 보통 어떤 식으로 첫 서류를 검토할까요? 경험해보신 분이 계시다면 정보 알려주시면 감사하겠습니다! (4) 정보처리기사가 필요할까요? 정보처리기능사는 올 하반기 안에 딸 예정인데(산기요 요건 때문에) 기사를 따라는 다른 글을 본 적이 있어서요. (5) 혹시 괜찮은 스타트업이나 중견기업을 어떻게 찾을 수 있을까요? 이전에 산업기능요원이 됐던 유명 스타트업들은 이미 유니콘이 돼버려서 산기요가 안됩니다 ㅠㅠ (토스, 두나무, 당근, 등등…) 그래서 새로 찾으려고 하는데 국내 기업에 대해서 잘 알고 있지 않고 국내에서 취준하는 친구도 없다보니 너무 까막눈입니다. 혹시 알음알음 입소문이 퍼지는 커뮤니티나 공간이 있을까요? (6) 마지막 질문입니다. 한국은 특성상 자바 개발자 수요가 많다고 들었는데 정부가 지정한 어떤 프로그램 때문이라고 들었습니다. 이게 자체 서비스 제공하는 스타트업과 중견 규모 기업에서도 해당하는 내용일까요? Node가 개인적으로 가장 편해서 가능하다면 여기서 숙련도를 더 올리고 싶은데 혹시 자프링 쪽이 더 유리하다면 가급적 일찍 옮기려고 합니다. 질문이 너무 많은 것 같네요. 여기까지 읽어주신 선배님들 모두 감사합니다!

개발자

#백엔드

#취업

#node.js

#대학생

#산업기능요원

답변 0

댓글 0

추천해요 2

조회 200

2년 전 · 김태우 님의 답변 업데이트

카카오맵 api 사용 ㅠㅠㅠ

안녕하세요~!!!! 프로젝트를 만드는 와중에 궁금한게 있어서 질문드립니다 ㅠㅠ 페이지 3개로 구성된 조그만 웹사이트를 리액트를 사용하여 만들고 있습니다. 그런데 문제가 생겼습니다.... 페이지 A에서는 지도 api를 사용하지 않고 B에서만 사용을 하고싶은데 제가 index.html 파일에 지도를 그리는것과 지도에 표시할 마커인 2개의 script를 불러와서 페이지 A에서도 카카오맵이 불러와져 성능에 문제가 생기는 것을 알게 되었습니다. 그래서 첫 번째 사진처럼 지도를 그리는 script를 script에 담아 헤더에 넣고, 마커를 그리는 script를 makerscript에 담아 헤더에 넣었습니다. 결과는 지도만 그려지고 마커가 안 떠서 어덯게 하면 마커가 뜰지 궁금합니다 ㅜㅜ 도와주세요 ...!! 🥲🥲🥲 1-2 사진: Map.jsx 3 사진: 마커 positions을 불러오는 MarkPosition.jsx 4 사진: 마커를 표시하는 위치, 사진 등이 있는 EventMarker.jsx

개발자

#api

#react

답변 1

댓글 0

조회 123

2년 전 · 다형 님의 답변 업데이트

사이드프로젝트와 이직으로 고민중인 주니어 개발자입니다.

선배 개발자분들 안녕하세요. 현재 si회사에서 파견나와서 약 1년정도 다 되어가는 주니어개발자입니다. 현재 제가 일하고 있는 프로젝트의 구조는 myBatis를 사용하며 도메인 객체 즉 엔티티를 만들지 않고 간단하게 프론트엔드와의 데이터 옮기는 작업을 map으로 하고 있는 구조입니다. 테스트코드도 작성하지 않는 프로젝트입니다. 현재 서비스회사로서의 이직을 꿈꾸며 열심히 깃 푸쉬만 안하며 저 혼자 단위 테스트코드를 작성을 해봤지만 Map으로 증명을 하려니 너무 힘들구 바꿔야 할것들이 너무 많아서 몇십개 정도만 작성하고 현재 다시 멈춰있는 상태입니다... 쿼리튜닝도 공부를하면서 나중에해야지 하면서 생각중이고 현재는 그래도 내가 직접 만든 객체지향프로그래밍을 해보고싶은 마음에 사이드프로젝트를 생각하며 아이디어를 찾고있는 상태입니다. 원래 제가 생각한 아이디어는 취미가 독서인지라 무료전자도서관의 api를 사용하며 만들어볼생각이었지만 제가 원하는 api들의 지원이 정부에서나 기업에서나 지원을 하지않더라구요... 다른 사이드프로젝트의 아이디어가 너무 안 떠오르고 스트레스만 받는 요즘입니다... 그냥 강의를 보며 만든 카페키오스크 프로젝트를 OOP와 테스트코드를 공부를 하는용도로 가상의 시나리오로 비즈니스로직을 만들면서 이 프로젝트로 평상시에 사용해보고싶었던 스프링배치나 레디스같은 기술들을 사용하며 하나의 프로젝트를 깊게 만들어볼까도 생각해보고 있습니다. 당연히 이직시 주니어개발자이기떄문에 제가 작성한 코드가 깃허브에 있어야한다고 제 자신이 생각을 하고있는 상태입니다. 정말 이력서에도 현재일하는 곳에서의 한 일을 어떻게 작성해야 할지 고민이 되고 이런 고민을 겪으신분이거나 이럴떄 어떻게해야 좋을지 생각나시는 분들께 여쭈어봅니다!!

개발자

##java

##spring

#주니어개발자

#사이드프로젝트

#이직

답변 1

댓글 0

추천해요 1

조회 442

2년 전 · 익명 님의 질문

타입스크립트 recoil 타입선언에 대한 질문입니다.

안녕하세요. redux를 recoil로 변경하면서 typescript도 같이 사용해보고 있는데 감이 잘 잡히지 않네요 타입스크립트에서 다른타입의 값을 가져와서 비교후 처리해야한다면 어떻게 해야할지 모르겠어서 질문을 드리게 되었습니다. 애초에 이러한 경우는 성립을 하지가 않는걸까요? 컴포넌트에서 deleteTagHandler에서 Tag타입으로 값을 받아와서 setRemoveToNoteTags()로 Tag타입의 매개변수 tag를 전달해주는데요 selector에서는 NotesList의 타입을 지원하고 있어서 그런거 같습니다... 가르침 부탁드리겠습니다 ㅠㅠㅠ 컴포넌트``` const setRemoveToNoteTags = useSetRecoilState(removeTagsSelector); const deleteTagHandler = (tag: Tag): void => { setTagsState({ type: "delete", tagsList: [tag] }); setRemoveToNoteTags(tag); }; ``` selector``` interface NotesList { mainNotes: Note[]; archiveNotes: Note[]; trashNotes: Note[]; editNote: null | Note; } const initialState: NotesList = { mainNotes: [...notes], archiveNotes: [], trashNotes: [], editNote: null, }; export const notesListState = atom({ key: "notesListState", // 고유한 키 default: initialState, // 초기 상태 }); export const removeTagsSelector = selector({ key: "removeTagsSelector", get: ({ get }) => {}, set: ({ get, set }, newValue: Tag) => { const notesList = get(notesListState); const removeTagFromNotes = (notes: Note[]) => { return notes.map((note) => { return { ...note, tags: note.tags.filter(({ tag }) => tag !== newValue.tag), }; }); ...... ```

개발자

#recoil

#react

#typescript

답변 0

댓글 0

조회 46