전체보기

    애자일(Agile)

    애자일 방법론은 SW 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 애자일에는 4가지 선언과 12가지의 원칙이 있다. 4가지 선언 우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법을 찾아가고 있다. 이 작업을 통해 우리는 다음을 가치있게 여기게 되었다. 공정과 도구보다 개인과 상호작용을 포괄적인 문서보다 작동하는 소프트웨어를 계약 협상보다 고객과의 협력을 계획을 따르기보다 변화에 대응하기를 가치 있게 여긴다. 12가지 원칙 1. 가치 있는 소프트웨어를 조기에 지속적으로 제공함으로써 고객을 만족시키는 것을 최고 우선순위로 한다. 2. 개발 작업 후반부일지라도 요구사항 변경을 기꺼..

    프로세스와 방법론

    프로세스와 방법론

    프로세스는 단계적인 작업의 틀을 정의하는 것이다. 반면 방법론은 프로세스의 구체적인 구현에 이른다. 프로세스의 특징으로는 무엇(What)을 하는가에 중점이며 결과물이 표현에 대하여 언급이 없다. 또한, 패러다임에 독립적이며 각 단계가 다른 방법론으로도 실현 가능하다. 프로세스의 사례로는 폭포수, 나선형, 프로토타이핑, Unified, 애자일 프로세스가 존재한다. 방법론의 특징은 어떻게(How) 하는가에 중점이며 결과물을 어떻게 표현하는지에 표시한다. 또한, 패러다임에 종속적이며 각 단계의 절차, 기술, 가이드라인을 제시한다. 방법론을 통해 다른 누군가가 가이드라인을 통해 직무를 수행할 수 있도록 한다. 방법론의 예시로는 (구조적 분석, 설계), 객체지향, 컴포넌트, 애자일 방법론이 존재한다.

    서울시 심야버스 데이터 의사결정 사례

    서울시 심야버스 데이터 의사결정 사례

    서울시는 심야 버스에 노선에 대한 최적화를 KT와 MOU를 통해 휴대전화 이력 데이터에서 유동인구 통계 정보를 바탕으로 노선을 정하였다. 서울시의 데이터 마이닝 기법은 이렇다. 우선, 서울시를 1km 반경의 1,250개 헥사셀 단위로 구분을 통해 한달 동안의 KT 휴대전화 이력 데이터로 오전 0시부터 5시 통화량을 분석을 통해 구역별 유동신우. 밀집도를 분석하고 이를 헥사셀 단위로 시각화하였다. 유동인구 밀집도 분석을 통해 기존 노선의 시간/요일별 패턴을 분석하고, 노선 부근의 유동인구 통계로 가중치를 계산하여, 노선을 최적화한다. 또한, 서울시는 유동인구 데이터를 기반으로 정류장 단위로 통행량을 추정하고 통행량을 선의 굵기로 표현하여 헥사셀로 구분된 맵에 시각화함으로써 최종적으로 요일별 배차간격을 조정..

    v-for와 v-if 동시사용

    v-for와 v-if의 동시사용을 금지하는 이유는 우선순위에 있다. 2.x버전에서는 v-for가 더 높은 우선순위를 가진다. 3.x버전에서는 v-if가 더 높은 우선순위를 가진다. 따라서, 두 디렉티브를 같이 사용하는 것을 지양하도록 가이드라인이 정해져있다. 하지만, v-for와 v-if를 동시사용해야 한다면 우회해서 사용하는 방법은 존재한다. 첫번째, 목록의 항목을 필터링 할 경우 (v-for="user in users" v-if="user.isActive") users를 활성 사용자를 반환하는 새로운 computed 속성(예:activeUsers)으로 대체한다. {{ user.name }} 두번째, 숨김 목록의 렌더링을 피할 때 (v-for="user in users" v-if="shouldShowU..

    methods 와 computed 의 차이

    두개의 차이 점은 캐싱(casing)이다. vue.js 공식 홈페이지에 있는 예제를 보면 뒤집힌 메시지: "{{ reversedMessage() }}" reversedMessage()를 통해서 뒤집힌 메세지를 출력하고 있다. 이를 methods형식으로 구현할 경우, methods: { reversedMessage: function () { return this.message.split('').reverse().join('') } } 이를 computed로 구현할 경우, computed: { reversedMessage: function () { return this.message.split('').reverse().join('') } } 두 코드 모두 구조가 비슷하지만 method는 랜더링을 할때마다 항..