본문 바로가기
728x90

개발/일지 8

시니어 개발자처럼 함수를 만들어보자 미디엄에 좋은 글이 있어서 참고차 정리한다. 1. 하나의 기능만! 그리고 잘 만들어라! 2. switch문 같은 건 low level class(base class) 같은데에 넣고 다형성을 이용해서 반복사용을 줄여라. 3. 함수 arguments는 최소한으로! 4. flag arguments는 사용하지 마라! (true/false 에 따라서 다른 로직이 실행되는 것은 보기 안 좋다. 1번에서 언급한 것 처럼 하나의 기능만 하도록 함수를 만들고 그 상위에 flag로 각각 실행되도록) 5. object를 arguments로 넘기자. (3번과 겹침. 가능하면 object로 담아서 arguments를 최소화) 6. error code보다는 exception 발생을 사용해라.(에러코드를 반환하기보다는 바로 exc.. 2022. 4. 4.
개발 원칙 피라미드 미디엄에서 글을 읽다가 개발 원칙 관련 좋은 글이 있어서 간단하게 해석한 것을 공유해본다. 원문은 여기서 확인 간단히 설명하면 아래와 같다. 작동하게 하기 You Aren't goona need it 의 약자 : 더 이상 사용 안하는 코드 지우기 Keep it simple stupid 의 약자 : 복잡한 코드를 간단하게 리팩토링하기 Don't repeat yourself 의 약자 : 반복코드 제거하기 클린코드 : 엉클밥 책따라 작업 거인의 어깨위에 서기 : 기존 산업(거인)의 스탠다드를 잘 이용하라는 의미. 컨벤션이나 보일러플레이트 코드를 줄이는 방법이나 등등 기존에 많은 사람들이 논의해서 가장 좋은 답안을 제시한 것들을 내가 새롭게 할 필요가 없다는 의미(그것보다 잘할 자신 있으면 하고 아니면 스탠다드.. 2022. 3. 29.
20.06.04.(목) 채팅 구현 with 서비스-2 오늘은 작업하면서 신기한 것들을 적어보겠다. 채팅서비스를 TCP/IP로 구현하고 있다. AWS의 EC2 T2-micro 를 사용하고 있었기에, TCP 소켓에 관련된 코드도 여기에 올려서 활성화를 했다. 이 코드는 멀티쓰레드로 작동하게 되어있는데, 그 이유는 소켓을 계속 연결해주는 쓰레드가 하나 있고 열린 소켓이 계속 데이터를 받는 쓰레드가 하나 있고, 필요할 때마다 데이터를 보내는 쓰레드가 있다. 안드로이드 단도 어느정도 마무리가 되었기에 드디어 대망의 테스트를 해봤는데, 자꾸 데이터 받는 쓰레드가 실행되지 않는 것이다. 이유를 찾아보니 T2-micro가 지원하는 vCPU가 1개이기 때문에, 내가 구현한 멀티 쓰레드를 처리할 수 없는 것이었다... 허거걱 (내껀 소켓 커넥트를 해주는 것도 block 이었.. 2020. 6. 4.
20.06.01.(월) 채팅 구현 with 서비스 TCP 소켓 통신을 통해 채팅을 구현하고 있다. 안드로이드 4대 컴포넌트 중 하나인 service를 이용해서 백그라운드에서도 채팅을 받아보고 알림을 뿌려주는 등의 기능을 하려고 한다. 문제는 어떻게 구현할 것인가.. 서비스는 먼저 3가지로 나뉜다. 포어그라운드, 백그라운드, 바인드 서비스 포어그라운드는 사용자에게 뭔가 전시되어야할 때 사용한다. 알림을 띄워놓고 있어야하는게 특징이다. 예를 들어 뮤직앱을 볼 수 있다. 알림창에 계속 띄워지면서 어디서든 실행은 계속되고, 사용자와 상호작용을 할 수 있다. 백그라운드 사용자에게 보이지 않는 서비스. 예를 들어 다운로드 같은 행위가 될 수 있다. 바인드 사용자와 상호작용을 할 때 주로 사용된다. 특정 액티비티/프래그먼트가 서비스와 바인딩 된다고 보면 된다. 바인.. 2020. 6. 1.
20.05.06.(수) NearBuy 댓글, 대댓글 당근마켓을 모티브로 해서 안드로이드 앱 NearBuy 개발중. 무한댓글을 불러오는 sql 구문 SELECT * FROM comments ORDER BY IF(ISNULL(parent), num, parent), sequence SELECT * // 모두 뽑아와라 FROM comments // comments 라는 테이블에서 ORDER BY IF(ISNULL(parent), num, parent), sequence // 크게 두 가지 기준으로 정렬을 하는데 1. parent 컬럼이 null이면 num 순서로, null이 아니면 parent 순서로.. 2. sequence 순서 또한 마지막 줄은 mysql 의 경우 아래처럼도 사용할 수도 있다.(ms-sql, oracle 은 다르다) ORDER BY IFNU.. 2020. 5. 6.
20.05.02.(토) NearBuy 댓글, 대댓글 당근마켓을 모티브로 해서 안드로이드 앱 NearBuy 개발중. 대댓글을 저장할 때 sequence 값을 매번 +1 해줘야할 일이 있었다. 문제는 같은 부모를 가진 대댓글 중에서 seq 최대값을 구하고 이 값에 +1을 해준 결과값을 insert 해야하는 상황이다. 그래서 insert 문 안에 seq의 최대값을 구하기 위한 select 문을 넣어주었다. 게시글번호와 부모댓글을 이용해 해당 대댓글을 추려내고, 이 대댓글 중 MAX(sequence)를 구해낸 다음 +1 을 붙여줬다. 쿼리문은 아래와 같다. INSERT INTO comments(phonenum, postnum, comment, parent, sequence) VALUES (:phoneNum, :postNum, :comment, :parent, (.. 2020. 5. 2.
728x90