전체 글 802

#5_술생연분 드디어 만나다

실제 고객들은 무엇을 중요하게 볼까? 술고라는 서비스는 우리가 하고 싶어서 만들었지만, 그럼에도 가장 중요한 건 결국 고객의 니즈라고 생각한다. 디자인을 배우고 상업예술에서 잠시 일을 했었던 나는 예술과 비즈니스를 가르는 중요한 기준 중에 하나가 바로 이 ‘제작자와 구매자 간 니즈의 일치’라고 생각한다. 고객의 생각이나 니즈와는 무관하게 만들고 싶은 것을 만든다면 그것은 ‘예술’, 구매자가 원하는 것이 무엇인지 파악하고 이를 만족시켜주기위해 만드는 것은 ‘비즈니스’의 영역이라고 생각한다. 물론 이 둘은 함께 공존할 수 있고, 이 둘이 교집합을 이루는 순간을 '덕업 일치'라고 생각한다. 서론이 길었는데 본론으로 들어가자면, 우리는 우리끼리만 만족하기 보다는 고객의 니즈를 확인하고 고객의 만족도를 높여주고 ..

#4_난 당신의 술 취향을 알고 있다.

상대의 술 취향을 알 수 있는 상세페이지? 우리의 서비스는 유저와 유저 간에 술 취향을 매칭 하여 연결시켜주는 매칭 서비스이다. 그렇기 때문에 우리가 유저에게 제공해주는 정보는 다른 유저들의 정보일 수밖에 없다. 나는 상세페이지를 맡았으므로 고객이 선택한 다른 유저의 정보, 즉 상세페이지 뷰를 구현하였다. 내가 프론트에게 넘겨주는 정보는 다음과 같다. 처음에는 디비 테이블에 있는 칼럼명을 그대로 사용하여 반환하였는데, 워낙 정보가 많다 보니 프론트와 상의하여 앞에 'text'와 'alcohol'을 붙여 데이터를 더 쉽게 구분하여 사용할 수 있도록 하였다. #결과 반환값 { "result": { "id": 1, "profile_image_url": "http://www.irobotnews.com/news/..

#3_Faker만 있으면 DB업로드가 두렵지 않아

페이커와의 만남 Faker는 디비에 가짜 데이터를 생성해주는 모듈이다. 맨 아래에 공식 페이지 링크를 남겨놓겠다. 만약 더 쉽게 사용하고 싶다면 구글에 검색해보라. 자주 사용하는 페이커 메서드를 잘 정리해 놓은 블로그들이 많다. 페이커는 1차 때 브랜치 팀에서 데이터를 넣을 때 사용했었다. 그 당시에 우리팀은 모든 상품과 데이터들을 직접 일일이 찾고 직접 입력하는 식으로 진행하였는데 (65개 상품을 입력하는데 하루를 모두 사용했었다..ㅜㅜ) 페이커를 이용한 브랜치 팀은 수십만 개의 데이터를 손쉽게 입력하였다. 그래서 이번에 우리는 페이커를 이용하여 디비에 데이터를 넣기로 하고 여러 글들을 보며 공부를 했다. 그리고 브랜치팀에서 이를 사용했던 도원님에게도 찾아가 조언을 구했다. 페이커는 생각보다 어렵지 않..

#2_모델링 이렇게 해도 되나?

혼돈의 모델링 기존 커머스는 유저가 있고, 카테고리가 있고, 상품이 있고, 장바구니, 주문, 등등으로 나누면 되었는데 매칭 서비스의 경우 기존 커머스 DB 구조와는 맞지 않았다.(테이블은 적지만 더 복잡해진 느낌?) 가장 큰 차이점은 두 가지였다. 하나는 유저와 관련된 정보가 매우 많다는 것이고(사용자의 취향을 모두 저장하므로) 다른 하나는 유저가 곧 상품이라는 것이다. (사람을 '상품'취급하는 것이 이상해 보일 수도 있지만 사람과 사람을 이어주는 것이므로 그런 의미로 서로 받아주시면 감사하겠다) 우리는 우선 유저의 회원가입정보와 함께 가입 시 유저가 작성한 취향 정보도 모두 하나의 테이블에 넣었다.(이때의 결정이 이후 디비를 갈아엎는 원흉이 되었다.) 그리고 중복선택이 가능한 항목들은 모두 다대다 테이..

#1_코딩하다 지친 당신.. 술 GO?

2차 프로젝트의 시작 2차 프로젝트가 시작되었다. 새로운 인원들과 조를 이루었고 우리가 받은 과제는 고수를 찾아 매칭 해주는 서비스 '숨고'였다. 일단 우리는 '숨고' 사이트를 살펴보기 시작했다. 나는 사용자가 직접 입력한 선택지들을 통해 누군가와 연결시켜주는 매칭 서비스가 인상적이었는데, 이 외에도 상대방과의 채팅 기능, 자신을 홍보하는 포스팅, 등 다양한 기능들이 있었다. 우리가 하기에 난이도가 너무 높아 보였다. 우리 팀 PM인 유진님이 숨고 싶다고 표현할 정도..ㅎ 우리는 우리가 할 수 있는 선까지만 하기로 하였고 이왕이면 재밌게 해보고 싶어서 기존 컨셉을 완전히 바꾸기로 했다. 그중에는 여러 가지 아이디어가 있었다. 숨고 싶다 : 심리상담사 매칭 서비스 만나고 : 소개팅 매칭 서비스 숨고 : 술..

정수 제곱근 판별

문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다 해결 방법 1. n의 제곱근을 구한다. 2. 제곱근이 정수로 나누어 떨어진다면 1을 더하고 제곱을 구한다. 3. 제곱근이 정수로 나누어 떨어지지 않으면 -1을 반환한다. def solution(n): a = n ** (1 / 2) ret..

소프트웨어는 80% 이상이 '유지보수'다

제목 : 클린 코드 저자 : 로버트 C. 마틴 범위 : 추천사 ~ 들어가면서 기억하고 싶은 것 소프트웨어는 80% 이상이 소위 "유지보수"다. 사소한 것에 정직해야 한다. (중략) 자신에게 정직하라는 뜻이다. 깨끗한 코드를 작성하는 방법은 배우기 어렵다. (중략) 고생을 해야한다. 떠오르는 생각이나 질문 유지보수를 즐길 수 있어야 개발을 더 즐길 수 있겠구나 자신에게 정직한 것은 코드 외에 삶에서도 정말 중요한 것 같다 이론을 배우면 반드시 코드로 구현해보자. 반드시! 더 알아보고 싶은 것 인터페이스는 무엇이고, 인터페이스가 프로그램이라는 것은 어떤 의미일까? 참고 : https://enjoyplaying.tistory.com/33 설계가 코드 속에 존재한다는 것은 어떤 의미일까?

if 사용하지 않고 제일 작은 수 제거하기

문제 설명 정수를 저장한 배열, arr에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴하고, [10] 면 [-1]을 리턴합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. 추가조건 >>> if는 사용하지 않습니다. 해결 방법 1. 리스트에서 최소 값을 구한다. 2. 구한 최소 값을 리스트에서 지운다. 3. 논리 연산자를 활용하여 최소 값을 지운 리스트를 반환한다. 4. 만약 리스트가 비어있다면 [-1]을 반환한다. * or은 첫 번째가 참이면 첫 번째 ..

짝수와 홀수 3가지 풀이법(if, dict, list) 그리고 bitwise

문제 설명 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 해결 방법 def solution(num): # 첫 번째 방법 : if-삼항연산자 return "Odd" if num % 2 == 1 else "Even" # 두 번째 방법 : dict-key return { 1 : 'Odd', 0 : 'Even'}[num % 2] # 세 번째 방법 : list-index return ["Even", "Odd"][num & 1] # or [num % 2] 이 문제는 보자마자 1분 만에 풀었다. (홀짝? 이건 너무 쉽잖아!) 처음 푼 방법은 if-삼항연산자였다. % 연산자를 이..

cs에 대한 생각

기업 협업이 내일이면 마지막이다. 기업 협업을 4주간 진행하면서 느낀 점은 cs지식이 실제 실무와 많이 연결되어 있다는 것이다. 예를 들어 나는 개발에서 데이터 저장은 DB만 사용하는 줄 알았는데, 문제를 어떻게 바라보느냐에 따라 DB 외에도 메모리, 파일, 등을 사용할 수 있어야 한다는 것을 알게되었다. 내가 이번에 다룬 주식 호가 데이터는 전형적인 '스트리밍 데이터'로 그 양이 어마어마하다. 이렇게 방대한 데이터를 DB에 그대로 저장하는 것은 좋은 방법이라고 할 수 없다. 왜냐하면 하나의 테이블에 매일 수백만 개의 데이터를 쌓는 것은 데이터 관리나 활용 측면에서 매우 비효율적이기 때문이다. 하지만 이런 데이터를 특정 기준에 따라 여러 파일로 분산 저장한다면 어떨까? 데이터를 관리하기도, 활용하기도 매..