Hash에서 값을 얻는 방법(feat. try, fetch, dig) (How to use try, fetch and dig for getting value from hash) ### Hash에서 값을 얻는 방법 데이터를 다루다 보면 자주 Hash (다른 언어에선 Dictionary 라고도 하는)를 사용하게 되는데, Hash에서 데이터를 얻을 때, 어떻게 뽑아내는지와 주의해야할 점에 대해 적으려고 한다. 예제를 통해 알아보자. --- #### fetch 일단 간단한 Hash를 하나 만들어본다. ```ruby hash = {:apple=>{:color=>"red"}, :banana=>"yellow", :melon=>"gree "} # => {:apple=>{:color=>"red"}, :banana=>"yellow", :melon=>"green"} ``` 그 다음 [] 으로 값을 얻어보자. banana 키의 yellow 라는 값을 얻고 싶다면, ```ruby hash[:banana] #=> "yellow" ``` 아주 간단하다. 하지만 banana이라는 key가 없거나 오타가 있다면 어떻게 될까? ```ruby hash[:banaan].upcase # NoMethodError (undefined method `upcase' for nil:NilClass) ``` 위와 같이 에러가 뜬다. 이런 상황을 방지하기 위해 `fetch`를 사용한다. ```ruby hash.fetch(:banaan, "yellow").upcase # => "YELLOW" ``` --- #### try 이번엔 red의 값을 찾아보자. ```ruby hash[:apple][:color] # => "red" ``` 하지만 만약 apple 의 값이 nil 이거나 apple이 아니라 오타가 난다면 ? 아래와 같이 에러가 난다. ```ruby hash[:appl][:color] # => NoMethodError (undefined method `[]' for nil:NilClass) ``` 이를 방지하기 위해 try를 사용할 수 있다. 아래와 같이 사용하면 nil을 return 한다. ```ruby hash.try(:[], :appl).try(:[], :color) # => nil ``` 만약 depth 가 길어진다면 계속 try try ... 하게 될텐데 이 때 사용하는 함수가 dig 다(~~디그다디그다닥트닥트닥트~~) --- #### dig ```ruby hash.dig(:apple, :color) # => "red" hash.dig(:appl, :color) # => nil ``` 이렇게 Hash 에서 값을 얻는 방법을 알아봤다.
5 Whys - 문제의 근본 원인을 파악하는 방법
## 5 Whys - 문제의 근본 원인을 파악하는 방법 --- ### ✅ 5 Whys 필요성 우리는 **고객의 문제**를 **해결**해야합니다. 문제의 근본 원인을 파악해 해결하지 않으면 고객의 문제는 해결되지 않습니다. 따라서 **문제의 근본 원인을 파악**하는 것이 중요합니다. **5 whys** 는 **문제의 근본 원인을 파악**하는 방법입니다. **눔(Noom) 사례: 비만 문제를 해결하자** - 비만 문제 → 칼로리 조절 → 칼로리 계산을 도와주는 앱 → 비만 해결 안됨 - 비만 문제를 해결하자 → 먹는 칼로리를 줄이면 된다 - 얼만큼 먹었는지(칼로리 섭취량 계산)를 어떻게 알려주지? → 칼로리 트래커 앱 개발 - 결과 → **비만 문제 해결 안 됨**. 비만의 근본 원인이 칼로리 계산에 있는 것이 아니기 때문 - 근본 원인은 비만의 습관, 행동 패턴을 개선하는 것 ⇒ 현재의 눔 코치 서비스 --- ### 🤔 5 Whys 란? 5 Whys는 문제 발생 시 “왜?“를 5번 반복해 근본 원인을 찾는 간단한 기법입니다. 1930년대 Toyota 창업자 Sakichi Toyoda가 개발했으며, 생산성 향상을 위해 사용됐습니다. - 도요타 사례 - 문제: 용접 로봇에 고장이 나서 생산에 차질이 생기는 문제 1. 용접 로봇이 왜 멈추었나? → 회로에 과부하가 걸려 퓨즈가 나갔다. 2. 회로에 왜 과부하가 걸렸나? → 기계작동을 담당하는 축의 베어링이 충분히 미끄럽지 않았다. 3. 베어링이 왜 충분히 미끄럽지 않았나? → 용접 로봇의 오일펌프가 충분한 오일을 순환시키지 못했다. 4. 오일펌프가 왜 오일을 순환시키지 못했나? → 펌프의 흡입구가 금속 부스러기로 막혔다. 5. 흡입구에 왜 금속 부스러기가 막혔나? → 펌프에 필터가 장착되어 있지 않았다. - 해결 방법: 노후된 오일펌프와 필터를 교체 - 토머스 제퍼슨 기념관 사례 ...
댓글
댓글 쓰기