자율주행자동차



1. 자율주행자동차의 개요

 1-1. 정의 

   - 사람이 간섭하지 않고, 오로지 기계로만 자동차의 운행을 하게 되는 차세대 기술

   - 실제 기술은 예전부터 있었으나 센서와, 카메라, AI의 발전으로 인해 사람 없이 운행 가능한 기술을 테스트 중이다.


 1-2. 기술개발 단계

  1단계: 선택적 능동제어 단계, 차선이탈경보장치, 크루즈 컨트롤 등

  2단계: 통합적 능동제어 단계, 운전대와 페달을 이용하지 않고 운전

  3단계: 제한적 자율주행 단계, 특정 상황에서만 운전자 개입 필요

  4단계:  완전 자율주행 단계, 모든 상황에서 운전자 개입 필요 없음


2. 자율주행자동차 구성도 및 주요기술

 2-1. 자율주행자동차 구성도

- 참고자료: 자율주행자동차 작동 구조 (출처 : 슈어소프트테크)


 2-2 자율주행자동차 주요기술

  1) ADAS센서 (Advanced Driver Assistance Systems)

    - 첨단 감지 센서와 GPS, 통신, 지능형 영상장비 등을 이용하여 주행 중 일부 상황을 차량 스스로 인지하여 상황을 판단, 자동차를 제어하거나 운전자가 미리 위험요소를 감지할 수 있도록 소리, 불빛, 진동 등으로 알려주는 운전자 보조 시스템.

  2) V2X (Vehicle to X, X:Everything)
    - 자동차 내에서만 정보를 주고 받는 인포테인먼트와 달리 다른 차량이나 주변 환경 등과 정보를 주고 받는 기술 (V2X는 V2V, V2I, V2N등으로 구분됨)
    - V2V : 일정 범위 내에 있는 차량들끼리 무선 통신을 통해 각자의 위치 정보와 교통 상황 정보 등을 주고 받는 시스템
    - V2I ; 차량과 신호등, 도로 내 설치된 기지국 등으로부터 다양한 정보를 수집하고 분석해 교통 상황 정보 등을 알려주는 기술
    - V2N : 차량과 각종 문선 기기를 연결하는 기술로써, 차량과 개인이 정보를 교환하는 기술

  3) 정밀지도
    - 도로의 모든 고정 물체의 위치/형태를 포함한 지도

  4) HMI (Human Machine Interface) 
    - 운전자와 차량간 정보를 교환하는 모든 채널/방식

3. 자율주행자동차 동향

  - 국내 : 서울-강릉 고속도로 완전 자율주행 자동차 테스트 완료 하였으나, 아직 안전면에서 완벽한 테스트가 되었다고 볼 수 없다.

  - 미국 : 시내 자율주행 자동차 테스트 중 인명사고 발생, 현재 센서에서는 인지 하였으나, 차량제에 반응 없었다고 함.

  - 기술적인 측면에선 많은 발전있으나, 아직은 안전성 면에서는 부족하다고 판단됨.


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle DBMS_SCHEDULER 백업 설정 스크립트



1. create_program 


BEGIN

  -- Shell Script.

  DBMS_SCHEDULER.create_program (

    program_name        => 'hotbackup_executable_prog',

    program_type        => 'EXECUTABLE',

    program_action      => '/backup/hotbackup/test.sql',

    number_of_arguments => 0,

    enabled             => TRUE,

    comments            => 'Program to gather SCOTT''s statistics us a shell script.');

        END;

/


2. create_schedule 


BEGIN

  DBMS_SCHEDULER.create_schedule (

    schedule_name   => 'test_min_schedule',

    start_date      => SYSTIMESTAMP,

    repeat_interval => 'freq=MINUTELY; INTERVAL=30',

    end_date        => NULL,

    comments        => 'Repeats hourly, on the hour, for ever.');

END;

/


3. create_job 


BEGIN

  DBMS_SCHEDULER.create_job (

    job_name      => 'test_prog_sched_job_definition',

    program_name  => 'hotbackup_executable_prog',

    schedule_name => 'test_min_schedule',

    enabled       => TRUE,

    comments      => 'Job defined by an existing program and schedule.');

            END;

/


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle Hot Backup 스크립트



SELECT    'alter tablespace '

         || t.tablespace_name

         || ' begin backup;'

         || CHR (10)

         || '!cp -p '

         || d.file_name

         || ' /oradata_backup/HOT/ '

         || CHR (10)

         || 'alter tablespace '

         || t.tablespace_name

         || ' end backup;'

         || CHR (10)

    FROM dba_tablespaces t, dba_data_files d

   WHERE t.TABLESPACE_NAME = d.TABLESPACE_NAME

ORDER BY t.tablespace_name;




블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,


Oracle 테이블스페이스 용량확인 스크립트



SELECT TABLESPACE_NAME,

       TOTAL_BYTES,

       USED_BYTES,

       FREE_BYTES,

       USED_RATE

FROM   (SELECT X.TABLESPACE_NAME,

               X.TOTAL_BYTES,

               X.USED_BYTES,

               X.FREE_BYTES,

               X.USED_RATE

        FROM   (SELECT A.TABLESPACE_NAME TABLESPACE_NAME,

                       SUBSTR(To_Char(Round(A.TOTAL_BYTES/1024000), '999,999,999'),2,11)||' MB ('||

                       SUBSTR(To_Char(Round(A.TOTAL_BYTES/1024000000, 2), '990.99'),2,6) ||' GB)' TOTAL_BYTES,

                       SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/1024000), '999,999,999'),2,11)||' MB ('||

                       SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/1024000000,2), '990.99'),2,6) ||' GB)' USED_BYTES,

                       SUBSTR(To_Char(Round(B.FREE_BYTES/1024000), '999,999,999'),2,11)||' MB ('||

                       SUBSTR(To_Char(Round(B.FREE_BYTES/1024000000, 2), '990.99'),2,6) ||' GB)' FREE_BYTES,

                       SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/A.TOTAL_BYTES*100,2), '90.99'),2,5)||'%' USED_RATE

                FROM   (SELECT TABLESPACE_NAME, Sum(BYTES) TOTAL_BYTES

                        FROM   DBA_DATA_FILES

                        WHERE  TABLESPACE_NAME LIKE UPPER(DECODE('%','','%', '%'))

                        GROUP  BY TABLESPACE_NAME

                       )    A,

                       (SELECT TABLESPACE_NAME, Sum(BYTES) FREE_BYTES

                        FROM   USER_FREE_SPACE

                        WHERE  TABLESPACE_NAME LIKE UPPER(DECODE('%','','%', '%'))

                        GROUP  BY TABLESPACE_NAME

                       )    B

                WHERE  A.TABLESPACE_NAME = B.TABLESPACE_NAME

               )    X

        ORDER  BY DECODE('&TS_ORDER_BASE', '1', X.TABLESPACE_NAME, '', X.TABLESPACE_NAME, '2', X.USED_RATE) DESC

       )

       UNION ALL

       SELECT '------------------------------ ' TABLESPACE_NAME,

              '-------------------------- ' TOTAL_BYTES,

              '-------------------------- ' USED_BYTES,

              '-------------------------- ' FREE_BYTES,

              '----------' USED_RATE

       FROM   DUAL

       UNION ALL

       SELECT '전체' TABLESPACE_NAME,

              SUBSTR(To_Char(Round(A.TOTAL_BYTES/1024000), '999,999,999'),2,11)||' MB ('||

              SUBSTR(To_Char(Round(A.TOTAL_BYTES/1024000000, 2), '990.99'),2,6) ||' GB)' TOTAL_BYTES,

              SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/1024000), '999,999,999'),2,11)||' MB ('||

              SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/1024000000,2), '990.99'),2,6) ||' GB)' USED_BYTES,

              SUBSTR(To_Char(Round(B.FREE_BYTES/1024000), '999,999,999'),2,11)||' MB ('||

              SUBSTR(To_Char(Round(B.FREE_BYTES/1024000000, 2), '990.99'),2,6) ||' GB)' FREE_BYTES,

              SUBSTR(To_Char(Round((A.TOTAL_BYTES-B.FREE_BYTES)/A.TOTAL_BYTES*100,2), '90.99'),2,5)||'%' USED_RATE

       FROM   (SELECT Sum(BYTES) TOTAL_BYTES

               FROM   DBA_DATA_FILES

               WHERE  TABLESPACE_NAME LIKE UPPER(DECODE('%','','%', '%'))

              )     A,

              (SELECT Sum(BYTES) FREE_BYTES

               FROM   USER_FREE_SPACE

               WHERE  TABLESPACE_NAME LIKE UPPER(DECODE('%','','%', '%'))

              )     B

;


Select ts.tablespace_name, ts.status, ts.contents, ts.extent_management, ts.bigfile,

       size_info.megs_alloc, size_info.megs_free, size_info.megs_used,

       size_info.pct_free, size_info.pct_used, size_info.max

From

      (

      select  a.tablespace_name,

             round(a.bytes_alloc / 1024 / 1024) megs_alloc,

             round(nvl(b.bytes_free, 0) / 1024 / 1024) megs_free,

             round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) megs_used,

             round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_Free,

            100 - round((nvl(b.bytes_free, 0) / a.bytes_alloc) * 100) Pct_used,

             round(maxbytes/1048576) Max

      from  ( select  f.tablespace_name,

                     sum(f.bytes) bytes_alloc,

                     sum(decode(f.autoextensible, 'YES',f.maxbytes,'NO', f.bytes)) maxbytes

              from dba_data_files f

              group by tablespace_name) a,

            ( select  f.tablespace_name,

                     sum(f.bytes)  bytes_free

              from dba_free_space f

              group by tablespace_name) b

      where a.tablespace_name = b.tablespace_name (+)

      union all

      select h.tablespace_name,

             round(sum(h.bytes_free + h.bytes_used) / 1048576) megs_alloc,

             round(sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / 1048576) megs_free,

             round(sum(nvl(p.bytes_used, 0))/ 1048576) megs_used,

             round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100) Pct_Free,

             100 - round((sum((h.bytes_free + h.bytes_used) - nvl(p.bytes_used, 0)) / sum(h.bytes_used + h.bytes_free)) * 100) pct_used,

             round(sum(f.maxbytes) / 1048576) max

      from   sys.v_$TEMP_SPACE_HEADER h, sys.v_$Temp_extent_pool p, dba_temp_files f

      where  p.file_id(+) = h.file_id

      and    p.tablespace_name(+) = h.tablespace_name

      and    f.file_id = h.file_id

      and    f.tablespace_name = h.tablespace_name

      group by h.tablespace_name

      ) size_info,

      sys.dba_tablespaces ts

where ts.tablespace_name = size_info.tablespace_name

;



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

소프트웨어 가시화 (Software Visualization)



1. 소프트웨어 가시화 (Software Visualization)의 개요

 1-1. 정의

   - SW의 비가시성을 극복함으로써 SW 개발의 전체 과정을 파악할 수 있도록 하며 이를 통하여 효율적인 SW의 개발 관리를 실현하기 위한 방안


  1-2. 배경

   - SW 개발 비가시성 : SW의 구체적인 모습, 결과물의 확인이 개발 도중에는 어려움

   - 품질체계, 프로세스 측면 : 다양하게 변환하는 고객요구사항에 따른 정해진 프로세스만으로는 품질확보 불가

   - 정책적 측면: SW 공생발전정책추진에 따른 중소 SW 기업입장의 품질관리 대응책 필요

   

2. 소프트웨어 가시화 (Software Visualization)

 2-1. 소프트웨어 가시화 (Software Visualization)의 구성도   


 2-2. 소프트웨어 가시화 (Software Visualization)의 구성요소

  1) 요구사항 

     - 요구사항, 변경관리

     - 고객요구사항 및 변경관리, 변경에 따른 설계, 구현, 검증, 테스트 이슈 트레킹, 검증 지원


  2) 일정관리

     - 개발수명주기, 개발 진척도 관리

     - 개발공정의 기시성, 개발단계의 짧은 반복공정지원

     - 프로그램 코드량, 빌드 횟수, 결함율, 요구사항 매치율


  3) 품질관리

     - 품질제어기술, 품질관리기술

     - 결함율, 재사용율, 복잡도 등의 지표운영, 자동 측정

     - 요구수준의 품질척도 정의, 운영, 확보지원, 개선점 식별


  4) 유지보수성

      - 재사용성, Core Asset

      - SW 가변부, 고통부 식별체계 지원, 설계/아키텍쳐 지원

      - 요구사항 ~ 코드 ~ 테스트 등의 Asset화 지원


3. 소프트웨어 가시화 (Software Visualization)

 1) 개발상태 실시간 파악

 2) 객관적, 정량적 분석

 3) 개발의 투명성

 4) 자동화 편의성

 5) 문서 작업 간소화

 6) 품질기반 개발문화

블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

Oracle 권한확인 스크립트



set verify off

set linesize 120

set pagesize 60

column sort_id noprint

column priv_type format a35

column priv format a60

column grantable heading "ADM" format a3

column default_role heading "DEF" format a3

spool showAllPrivs.txt

 select

    1 as sort_id,

    'ROLE' as priv_type,

    a.granted_role as priv,

    a.admin_option as grantable,

    a.default_role as default_role

  from

    DBA_ROLE_PRIVS a

  where

    grantee = '&&enter_username'

union

 select

    2 as sort_id,

    'SYS PRIV' as priv_type,

    b.privilege as priv,

    b.admin_option as grantable,

    null as default_role

  from

    DBA_SYS_PRIVS b

  where

    grantee = '&&enter_username'

union

 select

    5 as sort_id,

    'TAB PRIV (ROLE "' || c.granted_role || '")' as priv_type,

    d.privilege || ' on "' || d.owner ||

       '"."' || d.table_name || '"'

       as priv,

    d.grantable as grantable,

    c.default_role as default_role

  from

    DBA_ROLE_PRIVS c,

    DBA_TAB_PRIVS d

  where

    c.grantee = '&&enter_username'

    and d.grantee = c.granted_role

union

 select

    7 as sort_id,

    'COL PRIV (ROLE "' || e.granted_role || '")' as priv_type,

    f.privilege || ' on "' || f.owner ||

       '"."' || f.table_name || '" ("' || f.column_name || '"

;)'

       as priv,

    f.grantable as grantable,

    e.default_role as default_role

  from

    DBA_ROLE_PRIVS e,

    DBA_COL_PRIVS f

  where

    e.grantee = '&&enter_username'

    and f.grantee = e.granted_role

union

 select

    4 as sort_id,

    'TAB PRIV' as priv_type,

    g.privilege || ' on "' || g.owner ||

       '"."' || g.table_name || '"'

       as priv,

    g.grantable as grantable,

    null as default_role

  from

    DBA_TAB_PRIVS g

  where

    g.grantee = '&&enter_username'

union

 select

    6 as sort_id,

    'COL PRIV' as priv_type,

    h.privilege || ' on "' || h.owner ||

       '"."' || h.table_name || '" ("' || h.column_name || '"

;)'

       as priv,

    h.grantable as grantable,

    null as default_role

  from

    DBA_COL_PRIVS h

  where

    h.grantee = '&&enter_username'

union

 select

    3 as sort_id,

    'SYS PRIV (ROLE "' || i.granted_role || '")' as priv_type,

    j.privilege as priv,

    j.admin_option as grantable,

    i.default_role as default_role

  from

    DBA_ROLE_PRIVS i,

    DBA_SYS_PRIVS j

  where

    i.grantee = '&&enter_username'

    and j.grantee = i.granted_role

order by 1, 2, 3 ;

undefine enter_username

clear columns

spool off

set linesize 80


set verify on



블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

아두이노 (Arduino)



1. 아두이노 (Arduino)의 개요

 1-1. 정의

   - 사물인터넷 기반의 개방형 플랫폼으로 오픈 소스를 기반으로 한 단일 보드 마이크로 컨트롤러

   - 유연하고, 사용하기 쉬운 하드웨어와 소프트웨어로 구성된 예술가, 디자이너, 하비스트, 기타 인터렉티비 장비와 환경을 만들고 싶은 사람들을 위한 오픈 소스 전자 프로토타입 플랫폼


 2-1. 특징

  - 통합환겅(IDE) 제공

  - 다양한 I/O 장치 지원

  - 아두이노 커뮤니티

  - 오픈소스 기반 (GPL Licence)

  - 피지컬 컴퓨팅


2. 아두이노 (Arduino)의 구성도, 구성요소, 개발 사이클

 2-1. 아두이노 (Arduino)의 구성도


 2-2 아두이노 (Arduino)의 구성요소

  1) 개발환경 : 개발용 PC, 아두이노 IDE(통합개발환경), USB 케이블 (아두이노 본체와 연결)

  2) 스케치 : 아두이노 보드에서 실행되는 작성된 프로그램

  3) 아두이노 본체 : 마이크로 컴퓨터 보드, 다양한 아두이노 제조사에서 호환 보드를 제작하여 판매

  4) 다양한 I/O : 아두이노 본체와 연결되어 상호작용하는 다양한 I/O장치 스위치, LED램프, 센서, 액츄에이터 등을 연결하여 다양한 용도 확장


 2-3. 아두이노 (Arduino)의 개발 사이클 

    - edit -> commpile -> upload -> run -> done

    - edit : 아두이노에서 실행될 프로그램을 작성 또는 수정

    - compile : 작성된 프로그램을 보드에서 실행할 수 있도록 컴파일 수행

    - upload : 컴파일 된 실행 프로그램을 USB를 통해 보드로 전송


3. 아두이노 (Arduino)의 활용, 장단점

 3-1. 활용

   - 피지컬 컴퓨팅 프로토타입 구현 및 학습에 활용

   - 단수한 동작이 필요한 분야 (예술, DIY)등 적용


 3-2. 장단점

   - 장점: 마이크로컨트롤러를 쉡게 동작시킬 수 있음, 다른 모듈에 비해 비교적 저렴 등, 여러 OS에서 사용이 가능

   - 단점: 극단적인 기상조건에 활용 제한, 성능제약, IO 제약, 멀티미디어 플레이어 인 동작(메모리의 한계)





블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,

라즈베리파이 (Raspberry Pi)



1. 라즈베리파이 (Raspberry Pi)의 개요

 1-1. 정의

  - 영국의 라즈베리파이 재단이 기초 컴퓨터 과학 교육 증진과 취미를 위해 만든 ARM 기반의 싱글 보드 컴퓨터


  1-2. 특징

   - 그래픽 성능이 뛰어나며, 가격은 저렴하다.

   - SD 카드에 설치된 데미안 리눅스 실행이 가능하다. 


2. 라즈베리파이 (Raspberry Pi) 구성도


- 운영체제(OS)는 일반적으로 리눅스를 탑제, 또는 안드로이드 탑재


3. 라즈베리파이 (Raspberry Pi)의 활용

 1) 물리적 컴퓨팅

    - 소프트웨어로 센서, 모터, 광원등의 하드웨어를 직접 제어 가능하다.

    - 어린이를 대상으로 하는 다양한 물리적 컴퓨팅 프로젝트가 진행 중이다.

 2) 미디어 센터로 활용

 3) 게임 개발 플랫폼  

    - 강력한 멀티미디어, 3D 그래픽 성능이 세팅되어 있어 개발에 용이하다.

    - 스크래치를 이용한 손쉬운 게임 개발이 가능하다.

-> 기존의 PC가 담당한 역할을 대체하면서 영역을 확장중에 있다.

* 라즈베리는 매우작은 범용 컴퓨터라는 점에서 큰 장점일 가지고 있다.


블로그 이미지

운명을바꾸는자

IT와 함께 살아가는 삶

,