[Git] 잘못된 머지 커밋 되돌리기: Revert Wrong Merge Commit 개발 이것저것

방법은 아주 간단하다.
문제가 발생한 브랜치를 checkout 한 다음에 아래 명령어를 순차적으로 입력한다.

local 에서 먼저 revert 한다음에 커밋,
그리고 해당내용을 remote 로 푸시 하는 명령어이다.

git revert -m 1 <commit-hash> 
git commit -m "Reverting the last commit which messed the repo."
git push -u origin master

그런데 revert 할때 주의할점이 있다.

먼저 예제 상황....
1. 현재 A 브랜치에 있다
2. A branch 에서 최근에 커밋한 sha1 를 revert 했다
3. 나~~중에 B branch 로 A branch 를 머지 하였다.
-------------- 이떄 B 의 상태는?!?!?!

이때 B 의 상태는 A 의 revert 된 변경사항까지 같이 적용이 된다.
즉, A에서 merge 할때 새로이 추가된 파일이나 변경사항들이 revert를 하면서
"삭제 커밋" 으로 남아있기때문에 !!!

A를 머지한 B 도 그 삭제 커밋의 영향을 받는것이다.
그래서~~~ Merge 커밋을 Revert 하는것은 꽤나 위험한 일이드아...


[결혼준비 후기] 스드메 + 결혼식 + 신혼여행 + 혼수 까지의 모든 지출&비용 정리 양파개발자

안녕하세요~!

오늘은 개발 관련 포스팅이  아닌 !!! 제 이야기를 좀 하고자 합니다.
내용도 나름 조금 실용적이고 많은 분들이 흥미로워 하실만한 걸로 준비했어요.ㅋ

저는 2017.6.17 에 결혼을 하였는데요,
결혼을 준비하면서 참 .... 돈쓸일이 많았죠,
개인적으로 쓸데없는 소비하는걸 굉장히 싫어해서 무지 철저히 정리했습니다 ㅋㅋ
모든 결정을 아내와 함께 어떻게 하면 좋을지 많은 고민을 했지요,,,, (싸우기도 많이 했...)

어쨋든 이 모든것이 끝난 지금,,,
나름 2천만원 초반대로 이 모든걸 이루어(?) 내었다는 것이 꽤 잘한편이 아닌가 하는 생각이 듭니다. 
하.하.하...

그냥 버릴수도 있는 데이터 이지만...
혹여 결혼을 준비하시는 분들에게 조금이나마 도움이 될까 하여..
제가 그 당시 정말 정성스럽게 작성하였던,, 지출 도표를!!
아내의 허락을 받고 공개합니다 !!! ㅎㅎ

지출항목지출항목 설명가격
스드메 패키지from 웨덱스웨딩
스튜디오-ST정우
드레스-후보3개중 최저가 기준
메이크업-히엘
₩1,230,000
ST정우 추가금from 웨덱스웨딩₩200,000
드레스 투어
피팅비
샵마다 3만씩 세군대 돌았음
그중 하나는 결정하면 면제
₩60,000
드레스샵 추가금from 레이첼웨딩₩100,000
웨딩 촬영
원본 데이터 CD
from 스튜디오
25만원 부터
₩253,000
부케from 웨덱스웨딩
(패키지포함)
₩0
헬퍼비
(드레스샵)
웨딩촬영 & 본식
각 15만원
₩300,000
웨딩홀 대관료더모스트 웨딩홀
식사 보증인원 250이상 시 무료
₩0
본식 스냅 촬영사계절(봄)
by 웨딩플레너소개
₩450,000
본식 혼주 메이크업장모님, 시어머니, 시누이 3명
from 웨딩홀 (인당 15만)
₩450,000
폐백 음식기본세트,,, from 웨딩홀₩200,000
폐백 의상 준비
= 한복 대여료
이미옥 한복₩400,000
폐백 수모비from 웨딩홀₩70,000
청첩장 + 식권총 500장
from 바른손
₩230,000
결혼 반지금 반지 2개 - 고터 귀금속타운
(신부 지인찬스)
₩480,000
웨딩카그냥 우리가 직접 운전하고 집으로... ㅋㅋ₩0
한복 구매장모님??? (신부가 알아서)
예단현금??? (신부 부모님이 알아서)
예단 답례현금
(받은 돈의 일부를 돌려드림)
??? (신랑 부모님이 알아서)
축가1, 2 답례-₩240,000
주례 답례-₩150,000
사회자 답례돈 싫다고 하셔서
카카오 인형 선물 드림
₩100,000
회사 결혼 답례떡집 근처 떡집
- 떡마당 (따로 스티커 출력)
₩180,000
결혼식 연회 식비
(인당 38000)
하객 수가 보증했던 330 보다 적은 327명 옴
결국 330 명 치 개인 하객수만큼 각자 계산
₩1,254,000
신혼여행
2인 왕복 비행기값
from 모두투어
(인천 > 바르셀 + 리스본 > 인천)
₩2,930,800
바르셀로나 숙박비(4박)
by Booking.com
₩493,340
2인 중간 이동 비행기값
by Orbitz
(바르셀 > 리스본)
₩122,000
리스본 숙박비(5박)
by Booking.com
₩616,675
가우디 현지투어 2명
from 마이리얼트립
₩96,605
와이파이 도시락(11일) + 보조배터리 1개₩102,630
디너+플라멩고 공연₩200,000
유로 환전
8일x6만원x2명
₩1,000,000
여행자보험 (10일)₩40,000
혼수
삼성 무풍 에어컨 세트₩2,520,000
에어컨 설치비₩80,000
에몬스 쇼파 (반절만 천연가죽)₩519,300
삼성 스마트 TV 42인치 + 스피커
(신랑 지인 찬스)
₩800,000
시몬스 침대 + 침대옆 선반장 1개
from 산본 롯데 피트인
₩2,000,000
삼성 냉장고 4도어
(신랑 지인 찬스)
₩2,200,000
신부가 알아서 고른
거실장 (우드 화이트)
₩200,000
수납 가구 (한샘)
- TV 다이 2개
- 서랍장 1개
₩134,700
옷방에 사용할 왕자 행거
- 행거 선반 2개
- 일반 행거 2개
₩139,600
4인 식탁 from 한샘₩369,000
비용 총계₩20,911,650




[Algorithm] LeetCode - Valid Number (using automata) Algorithm

아으어어 ~~~ 올만에 알고리즘 문제 하나 어려운고 풀고 신나서 올림.
대학교때나 배웠던 오토마타를 되새김질 할수 있었던 좋은 문제였다.

난이도: Hard

유한 상태 기계 (Deterministic Finite Automata) 그래프를 아래와 같이 그렸더니!

Accept 뙇!!!

끗.. !!


[Linux 리눅스] 터미널 단축키를 마스터 해보자 (Mac iTerm 설정법 포함) 개발 이것저것

리눅스의 일반적인 터미널에서 우리는 많은 작업을 하는데.
커서이동 단축키를 알아두면 쉽게 작업을 할수 있겟져..??

자 일단 그럼~~~ 아래 그림을 보도록 하자.
cp 명령어인데 커서가 저어기 한가운데 "c" 에 있다고 생각하고
이동 & 삭제 에 관련된 단축키들을 쭉~ 한번 보도록하자.



자, 그런데 맥에서는 Alt 가 option 키이다. 옵션을 누른채로 저 단축키를 따라해보면 먹히질 않는데..
맥에서 이미 잘 알려진 터미널 프로그램 iTerm 을 기준으로 설정법을 간단히 적어보았다.

iTerm 을 켜고 상단 메뉴에서
iTerm2 > Preference > Profiles > Keys 로 간다음 아래 화면을 참조하여 Left options key의 설정을 하도록하자.


그럼.. 이제 iTerm 을 켜고 테스트를 한번 해보자 !!!

- 끝 -




풀스택(Full stack) 웹 개발 후기 #3 : 서비스 개발

이 글은 혼자서 웹서비스를 만들어본 내 경험의 후기를 적은 것이다.
사실 글을 적기시작한지는 한참 전인데...
ㅋㅋㅋ 이제서야 포스팅을 완료 하게 됨;;;
이전 글들은 아래의 목차링크를 눌러 볼 수 있다.

<목차>

4. 프론트엔드 서비스 개발
5. 백엔드 서비스 개발
6. 서비스 테스트와 유지보수
7. 느낀점

이번 포스팅에서는 4, 5번을 다루고자 한다.

※ 혹시라도 제가 미숙하여 잘 모르고 적은 글이 있다면 지적 부탁드립니다.

======================================================
들어가기 전에...

아마 대부분의 서비스가 마찬가지 이겠지만, 고객들이 사용하는 프로그램이 있다면, 
관리자가 사용하는 프로그램이 따로있다. 이것은 마치 하나의 세트처럼 움직이기 마련이다.

나도 마찬가지였다. 고객용 웹 서비스가 있었고, 이것으로 유입되거나 노출시켜야 하는 데이터를 관리하는 직원용 웹 서비스 있었다. 그래서 엄격히 말해 프론트엔드+백엔드를 통합한 2개 프로젝트를 한 셈이다.

프로젝트의 진행일정은 이전 포스팅에서 적은바와 같이 딱 2달이 걸렸다.

백엔드와 프론트엔드의 개발을 극명하게 구분하는 요소가 나는 "설계의 대상" 이라고 생각한다.
그리고 그것은 아래와 같다.

백엔드의 경우 : Database, API (URL)
프론트엔드의 경우 : UI (User Interface), UX (User eXperience)

그 이외에도 신경써야할 것들은 많지만, 가장 대표적인 것들은 이렇다.


4. 프론트엔드 서비스 개발

Front-End 는 사람에 비유했을때, 외모라고 볼 수 있다.
즉, 내가만든 서비스가 최초로 사용자와 직접 상호작용하는 부분을 말한다.

그래서, 웹 서비스의 경우 주소창에 URL 을 치고 들어가면 볼수 있는 모든 화면,
게임의 경우, 사용자들이 자신의 PC 혹은 모바일에서 구동시켜 사용하는 프로그램을 일컫는다

프론트엔드에 보여지는 모든것들(텍스트, 이미지, 동영상)은 대부분 API 서버(=백엔드) 라는 것으로부터 가져온다.
클라이언트에서 자체적으로 저장하고있는 로컬 리소스도 존재하긴 하겠으나,
이것에만 의존하는 프로그램은 사실상 요즘같은 세상에는 거의 없다고 생각하면 되겠다.

프론트엔드 개발에서는 기술적인 요소 만큼, 혹은 그보다 더 중요하게 여겨지는 것이 디자인 요소이다
그래서 이와 관련하여 중요하다고 생각하는 2 가지를 적어보았다..

1. 내가 제작한 화면이 서비스의 기획이 의도한 바를 명확히 담아내었는가?
2. 내가 만든것이 사용자들 입장에서 수긍할 수 있는 것인가?

이와같은 사항들 때문에 프론트엔트 개발자들은 항상 디자이너, 기획자들과 많은 커뮤니케이션을 하고, 또 그들이 요구하는 UI, UX구현을 위해 그 많은 시간동안 삽질?을 하는 것이다.

화려한 컬러, 이펙트, 사운드도 중요하지만, 그 외에 프론트 개발자들이 더 중요하게 신경써야 하는부분이 있다.

- 어플리케이션 크래쉬 핸들링 : 에러 리포팅, 사용자에게 적절한 에러 안내 문구 OR 화면 제공
- 기기별 소프트웨어별 호환성 체크 : 요새는 하나의 앱을 여러 Device 에서 접속하여 사용하는 경우가 있다. 앱 화면이 일그러지는 경우도 있고, 간혹 기능이 제대로 동작하지 않는 경우도 발생한다. 이것에 대한 테스트 및 예외처리는 필수. 멀티 플랫폼 호환성이 좋은 오픈소스를 가져다 쓰는것도 한 방법이겟다.



5. 백엔드 서비스 개발

Back-End 는 사람에 비유했을때... 뇌(=생각)?! 라고 보면 된다.
ㅋㅋㅋ 비유가 좀 그렇긴 한데.... 백엔드는 프론트 엔드에서 사용자에게 보여줄 모든 데이터를 설계, 생성, 관리, 하며 "안정적으로" 공급하는 역할을 한다. 즉, 서비스의 실질적인 로직과 데이터를 제공하는 원천이 되는 것이다.

간혹, 백엔드가 필요없는 서비스가 있다. 즉, 어플리케이션을 설치하기만 하면 인터넷사용 가능 여부와 상관 없이 사용자가 혼자서 오프라인으로 즐길수 있는 서비스 말이다. 이런 형태의 소프트웨어는 옛날의 CD 게임이라던가,,, 오프라인 사전 이라던가.. 등등...이 있을것이다. 이런것들은 서버가 필요 없다. 하지만 근래 대부분의 서비스는 앱을 키고, 인터넷을 이용하여 매 화면마다 서버와 "통신"하여 특정 정보를 불러온다. 이러한 서비스들은 서버가 없으면 죽은 껍데기나 다름이 없는 것이다.

어떻게 생각해보면... 백엔드 프로그램은 중요한거 같기도, 안중요한것 같기도... 하다.
일단 서비스를 런칭 하기 위해서 프론트는 선택이 아닌 필수이지만 백엔드는 그렇지 않기때문에...
그리고 백엔드 서포트가 필요한 서비스의 경우, 서버가 없으면 서비스가 아예 불가능하기 떄문에...

어쩃든,, 백엔드 개발이 해야할 일들을 간단히 살펴보면 아래와 같다.
서버 종류는 다양하지만 여기서는 웹개발에 필요한 백엔드 개발을 이야기 한다.

- 데이터베이스 설계
- 서버 발주 및 세팅 = 서비스 인프라 구축
- (대량 트래픽 예상 시) 스트레스 테스트
- 데이터 load > processing > 전달 + 비즈니스 로직
- API 설계 및 개발

========================================================

내가 했던 대략적인 전체 작업 진행방식

- 세부 기획서 작성 및 필요 기능 명

- 전체 서비스 Flow 설계 및 데이터 베이스 구축

- 인증 API (= Authentication, User 관리) 개발 : 로그인, 로그아웃, 비밀번호 찾기 / 변경, 사용자 정보 추가 / 편집 / 삭제

- 서비스 화면에 따라 아래와 같은 순서로 개발 진행
1. 운영툴 페이지 UI 개발
2. 운영툴 DB Access Object 개발
3. 운영툴 페이지 기능 테스트
4. Client 페이지 UI 개발
5. Client DB Access Object 개발
6. Client 페이지 기능 테스트 
7. 운영툴 액션에 따른 Client 변경사항 반영

- 특정 기능을 담당하는 운영툴이 완료되었으면 그것의 Client 웹페이지 서비스 개발

- View 단 개발 할 때, 필요한 Ajax API 는 그때그때 추가해 나가며 개발

- 전체적으로 개발 단계에서는 프론트 엔드 쪽 화면 설계와 개발이 하나씩 진행될때마다,
   그것을 위해 필요한 Backend 개발(API, DAO 등)을  같이 진행했다.

- 디자인 시안을 프로젝트 사정 상, 좀 늦게 받아서, API 혹은 웹페이지 별로 단위테스트를 만들지는 못했다. 

기획 과 디자인 작업은 원래 프로젝트 개발에 들어가기전, 기획안 flow 에 의해 선행 되어있어야 한다.
내 경우에는 신규서비스 였기 때문에  더욱이 고객용 서비스의 주요 웹페이지(메인홈 등)만 전문 디자이너로부터 직접 화면 시안과 리소스를 받아 디자인을 하였다.
그래서 중간에 계속 시안이 변경되고.. 나는 또 계속 업데이트 하고.. 참... 작업 자체가 번거로웠다기 보다는 정신적으로 힘들었던것 같다;;ㅋㅋ
나 같은 경우에는 백엔드 개발 시, Front 개발을 같이 병행하며 개발을 진행해 나갔지만, 근래에는 웹 프론트 기술이 좋아져서 백엔드코드를 프로젝트에서 온전히 독립적으로 가져가 API 형태로만 제공하고 이를 호출하여 서비스 UI에만 집중하는 프론트 엔드 프로젝트를 따로 개발할 수도 있다.
개인적으로는 백엔드와 프론트 엔드 코드를 확실하게 분리하여 가져가는법도 코드의 유지보수성에 있어서 나쁘지 않은 방법이라고 생각함...


1 2 3 4 5 6 7 8 9 10 다음


통계 위젯 (블랙)

1146
462
146049

GoogleAdsenseResponsive

Cluster map