일상생활2022. 11. 21. 10:35

소설정보커뮤니티 제주커피(http://jejucoffee.net/) 여기 추천합니다. 보고 싶은 소설 여기 다 있으니까 회원가입만 하고 등업만 하면 다 볼 수 있는 것 같은데 저도 열심히 하고 있습니다 하핫;;

Posted by 달려라곰간지
카테고리 없음2020. 6. 24. 10:56

요즘 보다보니 정규직 전환 관련 이야기가 많은 것 같다.

특히 인천 국제 공항 정규직 전환 관련해서 큰이슈인것 같아보이는데.

일부러 자극적으로 기사가 나오는게 아닌지 싶은 생각이 든다.

 

취업의 기회를 박탈했느니, 뭐 이런등등 이야기 부터 역차별 문제 이야기도

나오고 있긴하던데 실제로 그런지 확인은 다 해보고 글을 쓰는지 의문이다.

 

정규직 전환대상 이야기가 나온 시점 기준으로 2년이상 일한 사람 대상으로

기본적인 대상으로 잡는걸로 알고있다.

우리 회사도 기본적으로 그 기준으로 전환 대상자를 잡았었다.

 

역차별을 막기위해, 대상자에 해당하는 모든 사람들을 새로운 직군으로, 경력 인정없이

급여를 책정했다. 게다가 수당이니 이런부분도 기존의 정규직과는 다르게 책정하도록

하였고, 이와 관련해서도 노동조합과 협의를 봤으며, 이렇게 결정되어 급여가 책정되었다.

 

대부분 기존에 외주업체에서 받는 급여를 모두 파악한 후에, 평균적으로 그것보다는

많이 받는 쪽으로 급여를 책정할 수 있도록 했고,

외주업체에서 몇십년 일해서 급여가 줄어든 케이스인 분들도 있긴하다.

모든 사람에게 좋게, 그렇게 만들기는 어려워서 대부분 이해할 수 있도록 정규직 전환을 했다.

 

게다가 대부분 전환 대상자들은 평원 직원들 정규직으로 일하는 직종과는 다른 직종이 대부분이다.

혹여 같은 직종에서 일하는 경우에는 1호봉으로 시작하되 8년동안 일하면 해당 직종으로 변경해주는

이런 조건을 들여 정규직전환을 했다

 

취준비생들에게 기회를 박탈을 했느니, 뭐 이런이야기들이 자꾸나오는데

지금 열심히 일하는 취업준비생들은 이렇게 정규직전환되는 쪽에 입사할려고 하지도않았을것이다.

왜냐? 급여체계가 달라서 기존의 공사 직원들이랑 월급이 다르다. 기본적인 회사에서 제공해주는 복지정도야

같을지 모르겠지만. 인청공사 같은데서. 역차별 생각 안하고 무조건 정규직 전환해줬을리가 없다.

 

최대한 정규직 전환 안하려고 하다가 하도 국가에서 하라고 하니까 어쩔수 없이 하는 쪽이라. 더더욱 기존 사람과 역차별이 안생기도록 그렇게 일을 한다. 실제로 말대로 그런지 좀더 알아보고 기사가 올라왔으면 좋겠다.

 

 

 

 

 

 

Posted by 달려라곰간지
Rexpert2020. 6. 12. 15:00

렉스퍼트 출력물을 만들때 그리드 형태의 표를 삽입해야하는 경우가 있다.

 

 

 

이런 표를 만들 때, 본문에 표를 새로이 만들게 되면, 하나하나 컬럼의 크기가 바뀔때 마다, 수작업으로 본문의 내용도 같이 사이즈를 변경해야 하는 경우가 생긴다.

사실 만들어진 출력물을 보면, 그런식으로 만들어 놓은 출력물이 무지 많다.

 

렉스퍼트에는 타이틀과 본문의 컬럼 사이즈를 같이 가게끔 하는 기능이 있다.

바로 연결된 표삽입 기능이다.

 

 

 

 

 

 

 

 

 

 

 

 

 

연결된 표 삽입을 선택을 하게되면, 같은 모양의 표를 더 추가할수가있고, 이표를 본문에 추가 한다음 데이터 매핑을 하면 일반 그리드처럼 사용할 수 있다.

이렇게 연결한 후 사이즈를 변경하면, 두개의 연결된 표의 사이즈가 동시에 변경이 되어 표나 리스트를 만들어야하는 레포트의 경우 유용하다.

Posted by 달려라곰간지
Xplatform2020. 5. 22. 08:44

xplatform을 사용하다 보니, 굉장히 불편한 것들 중에 하나가 null값을 체크하는 것이다.

매핑 되어있는 값이 null 값이면 undefined 값을 가져와서 dataset에서 값을 가져올 경우 따로 예외처리를

해야 하는 경우가 굉장히 많다.

 

var a = ds_init.getColumn(0, "a");

 

이와 같이 a값이 없으면 null로 가져오게 되는데 이걸 가지고 값을 사용하게 되면 undefined로 표시된다.

이걸 해결하기 위해서 따로 null인지 체크해서 empty값으로 변경 하는 경우를 많이 하게 된다.

 

Tobe소프트에 문의해도 이게 기본이라, 따로 처리 해야한다는 답변 뿐이다.

 

그래서 따로 함수를 만들어서 쓰는 경우가 많다.

 

function fn_isNull( sValue) {

    if( ("x"+sValue == "xNaN") && ( new String(sValue.length).valueOf() == "undefined")) return true;

    if (sValue == null) return true;

    var v_ChkStr = new String(sValue);

    if (v_ChkStr == null) return true;

    if (v_ChkStr.toString().length == 0 ) return true;

    return false;

}

위와 같이 null값인지를 체크해서 null이면 true, 아니면 false 를 리턴하는 함수이다.

또 막상 이 함수만 쓰려니, 예외 처리로

 

if(fn_isNull(a)) {

    a = "";

}

이런식으로 따로 처리를 해줘야 한다. 이것도 매번 하다보니, 너무 귀찮아져서..

 

function fn_NullToEmpty(sValue)
{
    if( utlf_isNull(sValue) )
    {
        return "";
    }
    return sValue;
}

이런식으로  null일 경우에는 ""으로 바로 처리되게끔 사용한다.

 

 

Posted by 달려라곰간지
DB2020. 5. 21. 17:27

대용량 테이블에서 특정 설명 컬럼에서 값을 조회할 때 사용되는 index다.

 

create index 인덱

스명 on 테이블명(컬럼명) indextype is ctxsys.context;

위와 같은 식으로  text 인덱스를 사용한다.

 

데이터 건수가 엄청 많은 테이블에서 text 내용을 검색할 때 유리하다.

 

총 3400만건의 데이터에서 Dox라는 검색어로 조회를 하니

19초 가량이 걸렸다.

 

contains 함수를 이용하여, Dox 검색어를 조회하니. 0.7초의 조회 결과가 나온다.

생각보다 괜찮은 것 같다.

 

결과값이 달라서 확인해보니, contains 함수는 대소문자 구분없이 검색을 하는 듯 하다.

위에 쿼리에 upper 함수를 사용해서 조회를 해보니 245760이 나왔는데.

시간은 36초 걸렸다.

 

단 요즘에, 18c 오라클에서 같은 트랜잭션 내에서 서로 다른 DB 업데이트를 하는 경우가 있을 때

text index가 설정된 곳에서 분산트랜잭션 오류가 발생하는 경우가 많이 있다.

 

DBA에게 문의도 해보고 하지만 아직 확실한 결과를 얻지 못했다.

대용량 텍스트 검색에서 사용하면 유용할 듯 싶다.

 

'DB' 카테고리의 다른 글

오라클 instr, substr을 이용한 특정문자열 자르기.  (0) 2020.05.21
오라클 merge  (0) 2020.05.21
두 날짜 시간의 차 구하기..  (0) 2013.07.30
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지
DB2020. 5. 21. 10:56

일을 하다보니. 특정 항목이 varchar형이라, 숫자만이 아니라, 숫자(문자) 형식으로 들어오는 경우가 종종 있다.

 

예를 들어 아기 몸무게 항목 값에

g)   1200,  1400,  1500 이런식으로 대부분 입력이 되지만

업무하는 부서 특성상 1200(+30) 이런식으로 증가값을 더 입력해서

업무적으로 눈에 띄게끔 하는 부서들이 가끔 있다.

 

몸무게를 kg으로 변환해서 연동하는 경우에. 오류가 발생한다.

1200(+30)이 문자열이기에 발생한다.

 

이런 경우가 생길 때, 1200(+30) 에서 1200의 값만 잘라야 하는 경우가 생긴다.

 

이런경우에 instr, substr을 이용해서, 데이터를 잘라낼 수 있다.

 

select substr('1200(+30)', 0, instr('1200(+30)', '(') -1)
  dual

;

 

instr함수를 이용해서 '(' 문자열의 위치를 찾아

substr함수로 처음부터 찾은 위치 이전까지의 문자를 잘라, 1200의 값만 가져온다.

'DB' 카테고리의 다른 글

text index, contains  (0) 2020.05.21
오라클 merge  (0) 2020.05.21
두 날짜 시간의 차 구하기..  (0) 2013.07.30
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지
DB2020. 5. 21. 10:27

merge into 테이블명

       using dual

                  on ( deptcd = '1000'

                   and seqno = 1

                 ) -- pk값에 대한 정보

       when matched then

               update

                    set  deptnm = 'A부서'

 

       when not matched then

               inesrt (

                         deptcd

                       , seqno

                       , deptnm

              ) values (

                        '1000'

                       , 1

                       , 'A부서'

              )

 

데이터가 있는지 여부를 체크해서 없을경우에는 insert를 하고

데이터가 있을 경우에는 update를 해야하는 경우가 많을때 사용한다.

 

                         

                                

                                

'DB' 카테고리의 다른 글

text index, contains  (0) 2020.05.21
오라클 instr, substr을 이용한 특정문자열 자르기.  (0) 2020.05.21
두 날짜 시간의 차 구하기..  (0) 2013.07.30
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지
Javascript2013. 12. 10. 16:56

     obj_chart.ClearChart();  // 차트 초기화
     obj_chart.Header.Visible = true;      // Graph Header 정보 사용 여부
     obj_chart.Legend.Visible = true;


     obj_chart.Header.Font.Color = 0x000000;  // 차트 헤더 색깔.
     obj_chart.Header.Font.Size = 15;           // 차트 헤더 font size
     
     obj_chart.Legend.CheckBoxes = true;    //범례 series별 check여부(보였다 안보였다 하는 기능)
     obj_chart.Legend.Alignment = 0;            
     
     obj_chart.Panel.MarginTop = 15           //차트 위족 여백
     obj_chart.Panel.MarginLeft = 15;          // 차트 좌측 여백
     obj_chart.Panel.MarginRight = 0;        // 차트 우측여백
     obj_chart.Panel.MarginBottom = -1;    // 차트 하단여백
     obj_chart.Panel.BevelWidth = 0;        // 주위 테두리 넓이 0으로 설정

     obj_chart.Aspect.View3D  = false;      // 2d 로 표현하기

     obj_chart.Zoom.Enable    = false;        // zoom 사용하지 않기 (마우스 하단으로 드래그 zoomin, 마우스 상단으로 드래그 zoomout)
     obj_chart.Scroll.Enable   = false;      // scroll 사용하지 않기
     obj_chart.Legend.Visible  = true;     // 그래프 참조 박스 띄우지 않기(범례) 우측상단


     obj_chart.Legend.CustomPosition = true; // 범례 custom 위치 지정사용여부.
     obj_chart.Legend.Left = 10;                   // 범례 위치(좌측여백 10)
     obj_chart.Legend.Top  = 0;                   // 범례 위치(우측여백 0)

//      obj_chart.Panel.Gradient.Visible = true;      // 페널에 그라디언트 적용 ( 화면 바탕색 그라디언트)
//      obj_chart.Panel.Gradient.StartColor = 0x000000;  // 그라디언트 시작색깔
//      obj_chart.Panel.Gradient.EndColor = 0x404040;   // 그라디언트 종료색깔
     obj_chart.Environment.MouseWheelScroll = true;   // Graph 마우스 휠 사용 여부 (휠로 y좌표 이동 할건지 여부.)
     
     obj_chart.Axis.Bottom.Labels.Font.Size = 8; //하단축 Label 폰트 사이즈 조절
     obj_chart.Axis.Bottom.Labels.Font.Color = 0xffffff; //하단축 Label 폰트 사이즈 조절
//     obj_chart.Axis.Left.Labels.Font.Color = 0xffffff; //하단축 Label 폰트 사이즈 조절
//     obj_chart.Axis.Left.Labels.Font.Size = 8; //하단축 Label 폰트 사이즈 조절
//     obj_chart.Axis.Left.Labels.Font.Color = 0xffffff; //하단축 Label 폰트 사이즈 조절
//     
     obj_chart.Axis.Left.TicksInner.visible = true; //하단축 눈금 안쪽 표시 설정
     obj_chart.Axis.Bottom.TicksInner.visible = true; //하단축 눈금 안쪽 표시 설정

//     
     obj_chart.Axis.Visible = true;  // 왼쪽에 축..
     
     obj_chart.Axis.Left.Automatic = false;    //하단축 자동 설정(기본값)
     obj_chart.Axis.Left.Labels.Visible = true;   //하단축 Label 설정
     obj_chart.Axis.Left.Labels.multiline = true; //하단축 Label 2줄 설정
     obj_chart.Axis.Left.Labels.Font.Size = 1; //하단축 Label 폰트 사이즈 조절

     //obj_chart.Axis.Bottom.SetMinMax (0, 24);  //하단축 최소, 최대 길이 설정
     obj_chart.Axis.Left.Minimum = -1;
     obj_chart.Axis.Left.Maximum = 16;
     obj_chart.Axis.Left.Increment = 2;    //하단축 증가값 설정
     obj_chart.Axis.Left.MinorTickCount = 0;  //하단축 눈금 갯수 설정
     obj_chart.Axis.Left.TicksInner.visible = true; //하단축 눈금 안쪽 표시 설정
     
     obj_chart.Axis.Bottom.Automatic = false;    //하단축 자동 설정(기본값)
     obj_chart.Axis.Bottom.Labels.Visible = true;   //하단축 Label 설정
     obj_chart.Axis.Bottom.Labels.multiline = true; //하단축 Label 2줄 설정
     obj_chart.Axis.Bottom.Labels.Font.Size = 1; //하단축 Label 폰트 사이즈 조절

     //obj_chart.Axis.Bottom.SetMinMax (0, 24);  //하단축 최소, 최대 길이 설정
     obj_chart.Axis.Bottom.Minimum = 0;
     obj_chart.Axis.Bottom.Maximum = 10;
     obj_chart.Axis.Bottom.Increment = 1;    //하단축 증가값 설정
     obj_chart.Axis.Bottom.MinorTickCount = 0;  //하단축 눈금 갯수 설정
     obj_chart.Axis.Bottom.TicksInner.visible = true; //하단축 눈금 안쪽 표시 설정

for(var i = grd_list.fixedRows; i < grd_list.rows; i++) {
      flag = grd_list.valueMatrix(i, grd_list.colRef("flag"));
      title = grd_list.valueMatrix(i, grd_list.colRef("obspartnm"));
      
      if(flag == "1") {
//        grd_list.rowStyle(i, "all", "background-color") = "#bdddff"
       
      } else {
//        grd_list.rowStyle(i, "all", "background-color") = "#ffffff"
       
       Rnd1 = Math.random();
       Rnd2 = Math.random();
       Rnd3 = Math.random();
       cColor = window.rgb( (255 - 1) * Rnd1 + 1, (255 - 1) * Rnd2 + 1 , (255 -  1) * Rnd3 + 1); //랜덤한 색깔을 가져온다.


       
       var axis = obj_chart.Axis.AddCustom(false);
//        
       obj_chart.Axis.Custom(cnt).AxisPen.Color = cColor;
//        obj_chart.Axis.Custom(cnt).AxisPen.Title.Caption = title;
//        
//        obj_chart.Axis.Custom(cnt).Title.Font.Size  = 4;
//        obj_chart.Axis.Custom(cnt).Title.Font.Bold  = true;
       

       if(cnt == 0) {
        obj_chart.Axis.Custom(cnt).StartPosition   = 0;
        obj_chart.Axis.Custom(cnt).EndPosition     = 100;
        }
       

       //positionpercent 는 새로 axis가 생성될때마다 왼쪽으로 생성되도록 함..
       obj_chart.Axis.Custom(cnt).PositionPercent   = 1 - (3*(cnt+1));  (이것의 값에 따라 그 위치에 생성됨(값이 -여야만.. 차트 좌측 여백쪽에
       obj_chart.Axis.Custom(cnt).Automatic      = false;  // Axis자동생성X
       obj_chart.Axis.Custom(cnt).Maximum        = 17;    //축의 최대값 17
       obj_chart.Axis.Custom(cnt).Minimum        = 0;     // 최소값 0
       obj_chart.Axis.Custom(cnt).Increment    = 2;       // 증가값 2


       obj_chart.AddSeries(0);
       obj_chart.Series(cnt).Color = cColor;
       obj_chart.Series(cnt).Title = title;
       obj_chart.Series(cnt).VerticalAxisCustom = axis; // 혈압
       obj_chart.Series(cnt).Marks.Visible = true;        //값 타이틀 보여주는 것.(점표시위에 Hint명칭)

       obj_chart.Series(cnt).asLine.LinePen.Width = 2;            //해당 시리즈에 대한 선의 굵기
       obj_chart.Series(cnt).asLine.Pointer.Visible = true;       //해당 시리즈에대한 값위치 점.표시여부
       obj_chart.Series(cnt).asLine.Pointer.Style = 1;              //해당 시리즈의 점의 스타일.. 1은 둥근원..그외는 해보시길..
       obj_chart.Series(cnt).asLine.Pointer.VerticalSize = 3;    // 해당 값의 위치점의 세로사이즈
       obj_chart.Series(cnt).asLine.Pointer.HorizontalSize = 3; //해당값의 위치점의 가로사이즈
       
//        
       var total;
       for(var j = grd_list.colRef("total1"); j <= grd_list.colRef("total13"); j++) {
        total = grd_list.valueMatrix(i, j);
        if(total != 0 && total != null && total != "") {
         obj_chart.Series(cnt).AddXY(j-1 , parseInt(total), total, cColor); //Line그래프는 AddXY로 표시
        } else {
         
        }
       }
       cnt++;
       
      }
     } 

 

 

 

'Javascript' 카테고리의 다른 글

트러스트 폼 tchart 관련 정리(작업진행중)  (0) 2013.10.02
Posted by 달려라곰간지
Javascript2013. 10. 2. 13:41

1. tchart object 추가...추가된 오브젝트 명이 Chart1일경우.

 

//차트의 상, 좌, 우, 하의 여백을 설정한다.
     Chart1.Panel.MarginTop = 0;
     Chart1.Panel.MarginLeft = 0;
     Chart1.Panel.MarginRight =0;
     Chart1.Panel.MarginBottom = 0;

   

     Chart1.Panel.BevelWidth = 0;        // 주위 테두리 넓이 0으로 설정

     Chart1.Header.Visible = false;      // Graph Header 정보 사용 여부
     Chart1.Aspect.View3D  = false;      // 2d 로 표현하기

    

    Chart1.Zoom.Enable  = true;        // zoom여부 마우스 하단으로 드래그 zoomin, 마우스 상단으로 드래그 zoomout)
     Chart1.Scroll.Enable   = true;      // scroll 사용하지 않기
     Chart1.Legend.Visible  = true;     // 그래프 참조 박스 띄우지 않기(범례) 우측상단
     

     Chart1.Panel.Gradient.Visible = true;      // 페널에 그라디언트 적용
     Chart1.Panel.Gradient.StartColor = 0x404040;  // 그라디언트 시작색깔
     Chart1.Panel.Gradient.EndColor = 0x404040;   // 그라디언트 종료색깔
     Chart1.Environment.MouseWheelScroll = true;   // Graph 마우스 휠 사용 여부

     //하단축 칸 수 정하기와 눈금 없애기
     Chart1.Axis.Bottom.Automatic = false;    //하단축 자동 설정(기본값)
     Chart1.Axis.Bottom.Labels.Visible = true;   //하단축 Label 설정
     Chart1.Axis.Bottom.Labels.multiline = true; //하단축 Label 2줄 설정
     Chart1.Axis.Bottom.Labels.Font.Size = 1; //하단축 Label 폰트 사이즈 조절

     //Chart1.Axis.Bottom.SetMinMax (0, 24);  //하단축 최소, 최대 길이 설정
     Chart1.Axis.Bottom.Minimum = 0;
     Chart1.Axis.Bottom.Maximum = length + 4;
     Chart1.Axis.Bottom.Increment = 2;    //하단축 증가값 설정
     Chart1.Axis.Bottom.MinorTickCount = 20;  //하단축 눈금 갯수 설정
     Chart1.Axis.Bottom.TicksInner.visible = false; //하단축 눈금 안쪽 표시 설정
     
     Chart1.Axis.Visible = true;
     Chart1.Header.Text.Add("My FirstLine");

 

//차트 생성부분

//차트 생성시에 AddSeries()안의 파라메터의 종류에 따라 추가되는 그래프의 종류가 달라진다.

//0: 라인그래프 1 : 막대그래프. 5: 파이그래프.

for(var i = 0; i < length; i++) {
      Chart1.AddSeries(1);
      Chart1.Series(i).Color = aColor[i]; //생성한 차트축의 색상. ex) 0xff0000

      Chart1.Series(i).asBar.BarStyle = 0; //bar의 모양.
      Chart1.Series(i).asBar.BarWidth = 5; //bar의 굵기
      Chart1.Series(i).Title = grd_inpt.valueMatrix(i+1, grd_inpt.colRef("deptengabbr")); //bar축의 이름
      Chart1.Series(i).AddXY(i +3, parseInt(grd_inpt.valueMatrix(i +1, grd_inpt.colRef("gadong"))),"", aColor[i]);

     //막대차트는 AddXY함수를 이용하여 그린다.

    //Chart1.Series(0).AddXY(  x축의 값   ,  Y축값, "", 막대색깔); //3번째 파라메터는 사실 모르겠다.


     }

 

Chart2.AddSeries(5);
     
     Chart2.Series(0).Add(100, "5급", aColor[0]);
     Chart2.Series(0).Add(80, "4급", aColor[1]);
     Chart2.Series(0).Add(20, "3급", aColor[2]);
     Chart2.Series(0).Add(10, "2급", aColor[3]);

 


 

Posted by 달려라곰간지
DB2013. 7. 30. 16:31

//두시간의 차이를 초로 가져오기.

select

      (trunc(MOD(to_date(a.resusteamcalldd || a.resusteamcalltm, 'yyyymmddhh24miss')
     - to_date(a.cardarrestmdd || a.cardarrestmtm, 'yyyymmddhh24miss'), 1) *24 *60*60))

from a

//위와같이 했을 경우에는 두시간의 차이.. 10분 차이가 나면 600이란 값이 나온다..

 

시간이나 분단위를 구하기 위해서는..date형식으로 바꾼후 char형식으로 변환해서 format설정을 하면된다..

select

to_char(to_date(trunc(MOD(to_date(a.resusteamcalldd || a.resusteamcalltm, 'yyyymmddhh24miss')
     - to_date(a.cardarrestmdd || a.cardarrestmtm, 'yyyymmddhh24miss'), 1) *24 *60*60), 'sssss'), 'hh24mi')

from a

--위의 포맷은 0010(10분)  0110(1시간 10분) 이런식으로 가져온다..

-- 단, to_date함수에서는 -값이 들어올수 없으므로, 그런경우에는 따로 예외처리를 해주어야한다..

'DB' 카테고리의 다른 글

text index, contains  (0) 2020.05.21
오라클 instr, substr을 이용한 특정문자열 자르기.  (0) 2020.05.21
오라클 merge  (0) 2020.05.21
오라클 Outer 조인시 주의점.  (0) 2013.07.09
Posted by 달려라곰간지