2016년 3월 20일 일요일

계기판 꿀팁

자동차 계기판이 건네는 이야기
오토카 코리아2016.03.15

 이미지 1

자동차 계기판은 다양한 기호로 우리에게 경고 메시지를 보낸다. 빨간색은 위험, 노란색과 주황색은 주의를 뜻한다. 초록색은 정상 작동 중임을 나타내고, 파란색은 정상 작동 중이지만 타인에게 피해를 줄 수 있다는 뜻이다.

 이미지 2

1-1 엔진오일 경고

엔진오일 부족으로 유압이 낮아졌다는 뜻이다. 독일차 오너에게는 아주 친숙한 그림일 것이다. 엔진오일 소모의 정상범위는 엔진 특성이나 주행 조건에 따라 다르지만, 일반적으로 2,000km 운행에 1L 소모되는 것은 정상이다. 차량 취급설명서에 명시되어 있다.

1-2 배터리 충전 경고

건전지 모양이어서 배터리 관련 문제라고 쉽게 짐작할 수 있다. 그런데 배터리 방전 외에도 팬벨트가 끊어졌거나 얼터네이터(교류 발전기) 등 충전 장치에 문제가 있을 때도 점등된다. 펜벨트가 끊어졌을 경우, 라디에이터 팬에도 손상이 생겼을 수 있다.

 이미지 3

1-3 에어백 경고

시동을 걸면 약 3~5초 정도 나타났다가 사라진다. 그런데 시간이 지나도 경고등이 꺼지지 않거나, 주행 중에 켜졌다면 에어백 장치에 이상이 생겼다는 뜻이다. 당장 주행하는 데는 문제가 없지만, 안전과 직결된 장치이므로 반드시 점검 받아야 한다.

1-4 브레이크 경고

주차 브레이크가 작동 중이라는 뜻이다. 주차 브레이크를 해제했는데도 경고등이 꺼지지 않으면, 브레이크 패드가 마모돼 교체 시기가 됐거나, 브레이크액이 부족하다는 뜻이다.

 이미지 4

1-5 냉각수 수온 경고

냉각수 온도가 120±3℃ 이상으로 지나치게 뜨거워졌다는 뜻이다. 엔진 과열로 엔진 부품에 치명적인 손상이 발생할 수 있다. 수온 경고등이 켜지면 즉시 차를 안전한 곳에 세운 뒤 보닛을 열고 냉각시켜야 한다.

1-6 EPS 경고

전동식 파워스티어링(EPS) 시스템에 이상이 발생했다는 뜻이다. 이때 스티어링 휠이 매우 무거워질 수 있으나, 조작은 가능하다. 즉시 안전한 곳으로 차를 이동시킨 뒤 운행을 멈춰야 한다.

 이미지 5

2-1 ABS 경고

ABS에 이상이 있다는 뜻이다. 주행 중에 점등된다면, ABS 퓨즈가 끊어진 경우가 많다. 이때는 퓨즈를 갈아 끼우면 해결된다. 그러나 빨간색으로 켜지거나 느낌표 표시와 함께 뜬다면, 브레이크 시스템 이상이므로 즉시 점검을 받아야 한다.

2-2 엔진 경고

엔진 전자제어 장치나 배기가스 제어 관련 센서에 이상이 있을 때나 연료 공급 장치(연료탱크, 연료필터 연결부, 연료라인 등)에 누유가 발생했을 때 켜진다. 가슴을 철렁 내려앉게 만들지만, 의외로 사소한 문제일 수도 있다. 원인이 매우 다양하므로 가급적 빨리 서비스센터에 방문해 점검 받는 것이 좋다.

 이미지 6

2-3 이모빌라이저 경고

이모빌라이저(스마트키)가 실내에 없다는 뜻이다. 도난방지를 위한 장치다. 점등되면 시동이 걸리지 않는다.

2-4 연료 부족 경고

연료탱크 안에 연료가 얼마 남지 않았다는 뜻이다. 차종마다 다르지만, 일반적으로 약 5L의 연료가 남았을 때 주의를 준다. 5L의 연료는 준중형 1.6L 휘발유차 기준으로 60km 이상 이동할 수 있는 양이므로, 초조해 하지 말고 가까운 주유소로 가면 된다. 그러나 경고를 무시하고 연료를 완전히 소모한 채 주행하면 엔진 및 연료장치에 고장을 일으키게 된다.

 이미지 7

2-5 ESP 경고

주행 중에 깜빡인다면 자세제어장치(ESP)가 작동 중인 것이다. 트랙션이 부족한 상황이거나, 운전에 몰입해 신나게 즐기고 있다는 뜻이다. 그러나 꺼지지 않고 계속 켜져 있으면 시스템 이상이므로 점검 받아야 한다.

2-6 타이어 공기압 경고

타이어의 공기압이 일정 기준 아래로 낮아졌다는 뜻이다. 타이어에 펑크가 났거나, 이물질이 박혀 바람이 새고 있는 경우가 대부분이다. 경고등이 켜지면 즉시 속도를 줄이고 가까운 정비소로 가서 타이어 상태를 점검해야 한다.

 이미지 8

2-7 결빙 경고

눈의 결정 모양을 하고 있다. 차종에 따라 다소 차이는 있지만, 일반적으로 외부 기온이 3~4℃ 이하로 떨어지면 점등된다. 도로가 결빙되었을지도 모르니 주의해서 운전하라는 뜻이다.

2-8 예열 플러그 경고

충분히 예열되지 않았다는 뜻이다. 디젤차에만 있는 경고등이다. 충분히 예열했는데도 경고등이 켜져 있다면, 엔진 제어장치나 예열 관련 전기장치 고장을 의심해봐야 한다. 켜진 채로 운행을 계속하면 배기계통에 손상을 줄 수 있다.

 이미지 9

2-9 전구 고장 경고

전구가 고장 났다는 뜻이다. 헤드램프, 테일램프, 안개등을 꼼꼼히 확인해보자.

3-1 오토 스톱/스타트 작동

오토 스톱/스타트 시스템이 작동 중이라는 뜻이다. 노란색 또는 주황색으로 켜지면 시스템에 이상이 발생한 것이다.

 이미지 10

3-2 하향등/상향등 작동

왼쪽이 하향등(로우빔), 오른쪽이 상향등(하이빔) 표시다. 계기판에 파란색 표시가 있다면 남에게 피해를 줄 수 있는 상태임을 잊지 말자.

1주유구는 어느 쪽에 있을까?

 이미지 11

업무용 차나 렌터카를 몰다가 주유구 위치를 미리 확인하지 못한 채 주유소에 진입하는 바람에 당황하는 경우가 있다. 그럴 땐 계기판의 연료계를 보자. 주유기 그림 옆에 삼각형 표기(◀ 또는 ▶)를 볼 수 있다. 주유기를 중심으로 왼쪽에 '◀' 표기가 있다면 주유구가 좌측에 있는 것이다. 반대로, 오른쪽에 '▶' 표기가 있다면 우측에 주유구가 달렸다는 뜻이다. 강제 규정이 아니기 때문에 표시가 없는 차도 있다.

2016년 3월 8일 화요일

Angular JS 제대로 이해하기 Part 1-1. $resource 의 multiple promise 이용하기


$q 의 all 함수를 이용.

$q.all([promise1, promise2,,]).then(function(datalist){
datalist[0] ; promise1,
}, function(errorlist){

});

promise1 = $resource(,,,,).$promise 로 사용해서

2016년 3월 4일 금요일

Angular JS 제대로 이해하기 Part 1-1. Service 초기화시 http request와 같은 promise가 발생하는 경우


비즈니스로직이나 화면에 보여주어야 하는 데이터가 페이지에서 페이지로 혹은 컨트롤러에서 컨트롤러로 전달될 경우 서비스를 이용해서 활용하면 편하다는걸 알았다.

컨트롤러에서 서비스의 데이터를 사용하려면 해당 데이터가 이미 초기화 완료되어 있어야 한다.

하지만 이 데이터가 http request와 같은 시간 차이가 발생하는 promise 혹은 timeout 처럼 결과가 나오는 데 시간이 소요되는 경우 어떻게 활용 할까?

Anguar JS 홈페이지에서 아래와 같은 해결 방법을 알려 준다.

resolve - {Object.<string, function>=} - An optional map of dependencies which should be injected into the controller. If any of these dependencies are promises, the router will wait for them all to be resolved or one to be rejected before the controller is instantiated. If all the promises are resolved successfully, the values of the resolved promises are injected and $routeChangeSuccess event is fired. If any of the promises are rejected the $routeChangeError event is fired. For easier access to the resolved dependencies from the template, the resolve map will be available on the scope of the route, under$resolve (by default) or a custom name specified by the resolveAs property (see below). This can be particularly useful, when working with components as route templates.
Note: If your scope already contains a property with this name, it will be hidden or overwritten. Make sure, you specify an appropriate name for this property, that does not collide with other properties on the scope.
routeProvider 혹은 stateProvider 의 .config 함수 내 resolve 옵션을 이용하면, 컨트롤러가 inject 된 서비스의 promise를 기다릴 수 있도록 설정할 수 있다.

2016년 3월 1일 화요일

Angular JS 제대로 이해하기 Part 1. Service 와 Factory


*한 줄 요약
 - Service : 싱글턴 패턴(하나의 인스턴스)이고 주로 멤버변수와 퍼블릭함수 이용
 - Factory : 비즈니스로직 or 모듈 제공자로 사용하고, 객체나 클로저를 반환


참고 자료 (출처 : http://haruair.com/blog/3223)

AngularJS의 서비스 Services는 여러 코드에서 반복적으로 사용되는 코드를 분리할 때 사용하는 기능으로, 해당 서비스가 필요한 곳에 의존성을 주입해 활용할 수 있다. 서비스는 다음과 같은 특성이 있다.
  • 지연 초기화(Lazily instantiated): 의존성으로 주입하기 전까지는 초기화가 되지 않음.
  • 싱글턴(Singletons): 각각의 컴포넌트에서 하나의 인스턴스를 싱글턴으로 참조함.
AngularJS에서 서비스(Service)와 팩토리(factory)는 서로 상당한 유사성을 갖고 있기 때문에 쉽게 혼동할 수 있다. 특히 JavaScript의 유연한 타입으로 인해 라이브러리의 의도와는 다르게 그냥 동작하는 경우가 많다. 이 두 가지의 차이는 코드에서 확인할 수 있다. Angular의 코드를 보면 service는 factory를 사용해서구현하고 있다.
  function service(name, constructor) {
    return factory(name, ['$injector', function($injector) {
      return $injector.instantiate(constructor);
    }]);
  }
위 코드를 보면 $injector.instaniate()에 생성자를 넣어 반환하는데 이 함수에서 Object.create()로 해당 생성자를 인스턴스화 한다. 이렇게 얻은 인스턴스를 factory에 넣어 나머지는 factory와 동일하게 처리하는 것을 확인할 수 있다. 그래서 라이브러리의 실제 의도와는 다른 구현도 문제 없이 구동될 수 있는 것이다.
Todd Motto의 AngularJS 스타일 가이드 중 Service and Factory을 살펴보면 이 구현의 차이를 다음과 같이 정리한다.

서비스와 팩토리

Angular의 모든 서비스는 싱글턴 패턴이다. .service()메소드와 .factory() 메소드의 차이는 객체를 생성하는 방법에서 차이가 있다.
서비스: 생성자 함수와 같이 동작하고 new 키워드를 사용해 인스턴스를 초기화 한다. 서비스는 퍼블릭 메소드와 변수를 위해 사용한다.
function SomeService () {
  this.someMethod = function () {
    // ...
  };
}
angular
  .module('app')
  .service('SomeService', SomeService);
팩토리: 비지니스 로직 또는 모듈 제공자로 사용한다. 객체나 클로저를 반환한다.
객체 참조에서 연결 및 갱신을 처리하는 방법으로 인해 노출식 모듈 패턴(Revealing module pattern) 대신 호스트 객체 형태로 반환한다.
function AnotherService () {
  var AnotherService = {};
  AnotherService.someValue = '';
  AnotherService.someMethod = function () {
    // ...
  };
  return AnotherService;
}
angular
  .module('app')
  .factory('AnotherService', AnotherService);
왜?: 노출식 모듈 패턴을 사용하면 초기값을 변경할 수 없는 경우가 있기 때문이다. 1

서비스와 팩토리에서 가장 두드러진 차이점을 꼽는다면, 서비스에서는 초기화 과정이 존재하기 때문에 자연스럽게 prototype 상속이 가능하다. 그래서 일반적으로 상속이 필요한 데이터 핸들링이나 모델링 등의 경우에는 서비스를 활용하고, helper나 정적 메소드와 같이 활용되는 경우는 팩토리로 구현을 많이 하는 것 같다.
물론 앞서 살펴본 것과 같이 둘은 아주 유연한 관계이기 때문에 서비스에서 일반 호스트 객체를 반환하면 팩토리와 다를 것이 없게 된다. 그래서 각각의 특징에 맞게 구현하기 위해 가이드라인을 준수하는게 바람직하다. 가이드라인을 따르지 않는다면 적어도 프로젝트 내에서 일정한 프로토콜을 준수할 수 있도록 합의가 필요하다.
서비스와 팩토리처럼 구현의 제한성이 있는 것이 싫다면 강력한 기능을 제공하는 프로바이더(Provider)를 사용할 수 있다. (factory는 provider를 쓴다.) AngularJS에서 흔히 사용하는 $http가 대표적이며 많은 기능이 프로바이더로 구현되어 있다.

  1. 팩토리를 작성하는 방법을 설명하는 글을 보면 노출식 모듈 패턴을 활용하는 경우가 종종 있어서 왜?부분이 추가된 것 같다. 이 패턴은 일부 구현(메소드, 변수)에 대해 외부에서 접근할 수 있는지 없는지 명시적으로 지정할 수 있다는 특징이 있는데 그 특징으로 외부에서 접근할 수 없는 코드에 대해서는 값을 변경할 방법이 없다. 그런 특징 때문에 가이드에서는 호스트 객체로 반환할 것을 권장하고 있다.