선비의 지조

桐千年老恒藏曲(동천년노항장곡) 梅一生寒不賣香(매일생한불매향) 月到千虧餘本質(월도천휴여본질) 柳經百別又新枝(유경백별우신지) 오동나무는 천년이 되어도 가락을 지니고 매화는 일생 추워도 향기를 팔지 않으며 달은 천번 이지러져도 본질이 남아 있으며 버드나무는 백번 꺾여도 새가지가 돋아난다. 상촌 신흠의 7언  절구입니다. 퇴계 선생이 평생 좌우명으로 삼기도 했다네요. 신흠(1566 ~  11628) 선생은 조선 중기의 문인입니다. 동서분당 시절과 임진왜란 등을 겪었네요. 선조의 딸을 며느리로 들었네요. 임금의 사돈이었네요. 

정확하고 빠른 시스템은 사명이다.

2009년 어느날이었습니다. 소방서 상황실에 한통의 신고전화가 걸려왔습니다. 다급한 목소리로 아이의 목에 사탕이 걸렸다는 상황이었습니다. 바로 구급차가 출동하여 아이를 병원으로 이송하였습니다. 하지만 아이는 사경을 헤메다 끝내 사망하였습니다. 그 아이는 제아들과 같은 나이였습니다. 어떻게 하면 이런 상황이 발생하지 않을까? 최초 상황부터 병원이송까지 추적해보았습니다. 최초 신고자가 핸드폰으로 119에 신고를 하였습니다. 핸드폰은 기지국 위치로 가까운 소방서로 연결이 됩니다. 이때 신고자는 ㅇㅇ소방서 관내에 있었는데 기지국은 ㅁㅁ소방서에 위치하고 있었습니다. ㅁㅁ소방서에서는 위치를 파악하여 ㅇㅇ소방서로 관련내용을 바로 이첩하였습니다. 최초 119 콜이 ㅁㅁ소방서에 연결된 시간은 12초 그 후 위치 및 내용파악을 위한 통화는 30초 ㅇㅇ소방서로 이첩시간 2초 다시 ㅇㅇㅇ소방서에서 위치 및 내용파악을 위한 통화 30초 출동시간 약 8분 사람은 기도가 막히고 5분 정도 지나면 뇌사가 된다고 합니다. 기도가 막힌 상황을 인지하고 전화하여 구급차가 출동하여 환자의 목에 구멍을 뚫어 기도삽관을 하면 살수 있습니다. 이 시간까지 5분 이내에 이루어져야 합니다. 관련시간을 줄이기 위한 모든 노력을 다해보았습니다. 신고자의 위치정보를 보다 정확히 나타내어 준다면 또한 자동으로 관할 소방서를 지정해 줄 수 있다면 최초 119콜이 지연시간 12초 없이 바로 연결된다면 지금도 그때의 일을 생각하면 가슴이 아픕니다. 보다 정확하고 빠른 시스템이었다면 한 생명을 살릴수 있었을텐데....., 제가 소방관 생활을 그만둔지 오랜 세월이 흘렀지만 보다 정확하고 빠른 시스템 구축은  어느덧 저의 사명이 되어 버렸습니다. 오늘도 그날의 아픔이 가슴을 찌릅니다.

고층 모기는 상위 1%이다

1층에 살다가 최근에 고층으로 이사를 했다. 고층엔 확실히 모기가 적다. 이를 가지고 애들과 이야기를 했다. "고층이라 그런지 모기가 없다" "그건 모기가 높이 날 수 없어서 그런대요" "그럼 고층의 모기는 어떻게 된거지?" "엘리베이터를 타고 올라 온거대요" "모기도 엘리베이터를 탄다고?!!" "똑똑한 모기군" "무서워서 못타는 사람도 있는데...," "그럼, 고충모기에 물리는 것을 영광으로 알아야겠군" "그건 왜 그런가요?" "왜냐하면 고충모기는 상위 1%인 똑똑한 모기이고 이곳에 오기위해 많은 노력을 했을테니까...,"

GCD sample

dispatch_async ( dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT , 0 ), ^{         int iOctave = div (notes - 23 , 12 ). quot ;         int iclavier = div (notes - 12 , 24 ). rem + 1 ;         self . scOctave . selectedSegmentIndex = iOctave;         [ _soundBankPlayer queueNote :notes gain : volumn ];         [ _soundBankPlayer playQueuedNotes ];                  UIImageView *imgView = ( UIImageView *)[ self . view viewWithTag :iclavier + 100 ];         dispatch_async ( dispatch_get_main_queue (), ^{             if ([ setSharp containsObject :[ NSNumber numberWithInt :iclavier]]) {                 imgView. image = touchSharp ;             } else {                 imgView. image = touchClavier ;             }         });                  [ NSThread sleepForTimeInterval : 0.2 ];         dispatch_async ( dispatch_get_main_queue (), ^{             if ([ setSharp containsObject :[ NSNumber numberWithInt :iclavier]]) {  

How to use of NSSet

1. NSSet define   NSSet *setSharp; 2. Set config setSharp = [ NSSet setWithObjects :[ NSNumber numberWithInt : 2 ], [ NSNumber numberWithInt : 4 ], [ NSNumber numberWithInt : 7 ], [ NSNumber numberWithInt : 9 ], [ NSNumber numberWithInt : 11 ], [ NSNumber numberWithInt : 14 ], [ NSNumber numberWithInt : 16 ], [ NSNumber numberWithInt : 19 ], [ NSNumber numberWithInt : 21 ], [ NSNumber numberWithInt : 23 ], nil ]; 3. set use if ([ setSharp containsObject :[ NSNumber numberWithInt :iclavier]])  {     imgView. image = touchSharp ; } very fast hash calculate

Force generating seque events

// cell is selected - ( void )tableView:( UITableView *)tableView didSelectRowAtIndexPath:( NSIndexPath *)indexPath {     UITableViewCell *cell = [tableView cellForRowAtIndexPath :indexPath]; selectTitle = cell. textLabel . text ;     //NSLog(@"selectTitle : %@", selectTitle);     // custom seque event     [ self performSegueWithIdentifier : @"doneTitleSeque" sender : nil ]; } // view is translate - ( void )prepareForSegue:( UIStoryboardSegue *)segue sender:( id )sender {     //NSLog(@"prepareForSegue: %@", segue.identifier);          if ([segue. identifier isEqualToString : @"doneTitleSeque" ]) {         // openTitle 창을 열때         NSUserDefaults *userDefaults = [ NSUserDefaults standardUserDefaults ];         [userDefaults setObject : selectTitle forKey : @"selectTitle" ];         [userDefaults synchronize ];     } }

tMoon redeem code 리딤 코드 배포

https://itunes.apple.com/kr/app/tmoon/id667314889?mt=8 달 관련 아이폰용 앱을 등록하였습니다. 관심 있으신 분은 아래 리딤 코드를 받아 사용하십시오. 리뷰는 꼭 부탁드립니다. 리딤 코드입니다 74FA7936NXLT E67J6H6K9R7T NEYW6WYXKPXR NH7J4JJ49H6H YYET69NF73JT R473ML9JWPHA Y4HHN4RXENFR 3X7JWFR6AKKK AP37XF3TEMWW FMJXAP9FLJXT JF9AX6FY9YPN L6H7T6WP3Y4J J4P9PXA4M7XP 43KYTLFEMYNH FHYJN74R7N66 KKRTH373LK6M T6MKLELMMNFL FE36NXWW6EX7 9EN3W7TFXNPY WMAH36MRJMTR 9KNNA4LW9E93 HMMMNHET94J3 N6EPK4L99R9M 7TJX3LHLMJW4 7EJ9KPH7KREK NXKTJK7KLH3A LPEENRMEFLJX NN7PLYY6E6J7 RK9XE3EE7J46 KTLKKJKHX9PX