기본 콘텐츠로 건너뛰기

MySQL - insert or update - replace vs. insert on duplicate key

Insert into ~ on duplicate key update INSERT   INTO  tableA (sn, cateid, catename)  VALUES     ( 101 ,  'A001' ,  'CateA1' ),     ( 102 ,  'B001' ,  'CateB1' ),     ( 103 ,  'C001' ,  'CateC1' ),     ( 104 ,  'C002' ,  'CateC2C' ), ON  DUPLICATE  KEY   UPDATE  catename = ( CASE   WHEN  catename =  'C002'   THEN  catename  ELSE   values (catename)  END ); replace REPLACE   INTO  tableA (sn, cateid, catename)  VALUES     ( 101 ,  'A001' ,  'CateA1' ),     ( 102 ,  'B001' ,  'CateB1' ),     ( 103 ,  'C001' ,  'CateC1' ),     ( 104 ,  'C002' ,  'CateC2C' ); on duplicate key update의 경우 기존 row에서 update를 하지만,  replace into 는 delete + insert이기 때문에 default 필드 또는 auto_increment 필드는 신규 로우를 추가한 것과 같은 영향을 받음. giip :: Free mixed RPA orchestration tool!  https://giipasp.azurewebsites.net/

Shell - date command examples - Linux Bash

TodayYYYYMMDDHH24MISS= `date '+%Y%m%d%H%M%S'` TodayYYYYMMDD= `date '+%Y%m%d'` TomorrowYYYYMMDD= `date +%Y%m%d --date '1 day'` YesterdayYYYYMMDD= `date +%Y%m%d --date '1 day ago'` NextMonthYYYYMMDD= `date +%Y%m%d --date '1 month'` PrevMonthYYYYMMDD= `date +%Y%m%d --date '1 month ago'` giip :: Free mixed RPA orchestration tool!  https://giipasp.azurewebsites.net/

RPA에게 준 업무로 인해 얼마나 시간을 절약할 수 있는지를 알 수 있습니다! - giip

giip에서는 내가 만든 RPA스크립트로 인해서 얼마나 업무 시간을 줄여 주고 있는지 한 눈에 알 수 있습니다.  한 달 평균 업무 시간은 160시간 전후이지만,  로봇은 여러 대로 무한하게 일을 시킬 수 있기 때문에  내가 로봇들에게 시킨 업무로 인해 800시간을 줄일 수 있었네요!  점점 늘어나는 것을 기대하면서 계속 업무를 자동화 해가고 있습니다. ^^ UiPath를 사용해도 되고 Auto Hot Key를 사용해도 됩니다.  아니면 자신이 직접 만든 스크립트를 사용해도 됩니다.  이 모든 것을 giip에서 통합 관리를 하고, 자신이 만든 자동화가 얼마만큼의 인건비를 줄일 수 있었는지 알 수 있는 지표를 대시보드로 나타냈습니다.  여러분은 얼마나 많은 일을 아직까지 수동으로 하고 계신가요? giip :: Free mixed RPA orchestration tool!  https://giipasp.azurewebsites.net/

AWS에서 VM을 Gateway서버로 사용하기 - 텔레워크의 기초

요즘 텔레워크가 많아지면서 가장 큰 이슈가 보안 이슈이다. 이 중에서 특정 IP에서만 작업이 가능한 환경이 많다. 이 때문에 VPN을 준비해줄 여력이 없는 작은 기업 또는 프리랜서들은 자신만의 고정 IP가 필요한 상황이다.  이 경우 AWS에서 VM을 생성하여 VPN설정을 하는 경우가 많은데,  가장 많이 걸리는 경우가  일반적인 VPN프로토콜을 사용하는 경우  1723 Port외에 GRE Port를 오픈해 주어야 한다.  하지만 AWS에서는 GRE Port를 개방해 주지 않아서 멈춘다.  그렇다고 VPC를 direct connect를 이용하여 무지 비싸지게 구성할 수는 없다.  이 경우 openvpn만을 이용하여 UDP로 빠르게 구성할 수 있다.  우선 AWS에서 ubuntu vm을 small로 작은 것을 만들자.  그리고 openvpn인스톨 $ sudo apt install binutils $ sudo yum -y install openvpn 그 뒤에는 조금 복잡하지만 그냥 아래 커맨드를 복붙으로.. $ wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz $ tar -xvzf EasyRSA-unix-v3.0.6.tgz $ sudo mv EasyRSA-v3.0.6 /usr/local/EasyRSA $ cd /usr/local/EasyRSA/ $ cp -p vars.example vars $ vi vars set_var EASYRSA_CERT_EXPIRE 3650 $ cd /usr/local/EasyRSA/ $ ./easyrsa init-pki $ ./easyrsa build-ca $ ./easyrsa gen-dh $ ./easyrsa build-server-full server nopass $ ./easyrsa build-client-full client1 nopass 중간에 vi vars는 그 아래의 EASYRSA_CERT_EXPIRE값을 3

UiPath CSV에 데이터가 없는 경우 타이틀 유지하여 txt(tsv)저장

UiPath에서 Read CSV를 이용하면 Datatable에 저장이 된다.  이를 tab으로 분리된 text파일로 저장을 하는데는 몇 가지 방법이 있다.  1. write text 액티비티를 사용하는 경우 write text를 하게 되면, 그냥 텍스트로 저장이 되면서 tsv포맷에 맞지 않게 되고,  내용이 없는 경우 필드명도 표시 되지 않는다.  2. write excel을 이용 write excel 액티비티를 이용하여 저장후 이를 excel application scope를 이용해서 연 다음 다른이름으로 저장을 하여 txt파일로 저장. 번거롭지만 가장 편하게 tsv형태로 저장 가능 3. 하드코딩 첫 행에 필드명을 탭으로 나열 for each datarow를 이용하여 행을 읽은 뒤에 for each item으로 각 필드를 변수에 넣으면서 사이에 tab을 추가,  데이터가 없는 경우 필드명을 for each에 넣으면 데이터가 없기 때문에 패스한다.  때문에 첫 행은 하드코딩을 해야 하는 불편함이 있어 확정된 케이스가 아니라면 사용하기 귀찮다. 이걸 할 바엔 차라리 1번의 write text를 사용하는 것을 추천. Automation human works! giip :: Free mix RPA orchestration service! https://giipasp.azurewebsites.net/

따라하기로 성공한 MS, LG, MITSUI

남의 것을 모방하는 것이 나쁘다는 이야기도 많다. 남의 아이디어를 훔치는 것이 나쁘다고들 한다. 하지만 100%창조를 하는 사람은 거의 없다.  천재 조차도 어디선가 영감을 얻었다고 이야기를 하며 만드는 새로운 것들.. 이것 역시 자연이나 누군가의 사람에게서 얻게된 모방의 산물이 된다. 한글의 모음 구조는 목의 음성의 위치를 모방 했다. 중국어는 새의 발자국을 모방했다. 즉, 모방이 문제가 되는 것이 아닌 것 같다. 클라우드가 확산 되자마자 클라우드를 분석하여 클라우드를 충실하게 구현한 오피스365는 따라하기 이지만 욕먹는 것이 아니다. MS는  원래부터 마우스를 잡스에게서 따라하고 윈도우를 Packard bell에서 가져왔다. 이 전에 MS-DOS는 PC-DOS에서 가져온 것이다. 이렇게 따라하기를 사업화로 1위를 넘어서 MS가 1위가 된 것이다. 초기에는 나도 욕했다. 따라하기로 1위를 제끼는건 치사하지 않아? 하지만 서두에서도 보였지만, 남을 짓밟기가 아니라 경쟁에서 고객의 선택을 받게 하는 곳에 얼마나 치중하느냐가 중요한 것 같다. 한국에서 스타트업을 할 때 투자자들과 가장 큰 마찰이 여기 있었다. 투자자들은 Lock-on 을 왜 안하느냐, 경쟁자가 올라온다면 어떻게 경쟁자를 물리칠 것이냐를 듣고나서 투자 가치를 판단한다. 투자자들은 경쟁자를 겁내하며 경쟁자 죽이기에 온 힘을 기울일 것을 종용한다. 난 그게 싫어서 우리 서비스가 맘에 안들면 얼마든지 쉽게 나갈 수 있도록 배려했다. 결국 한 푼도 투자는 받지 못했다. LG는  삼성과는 달리 사업분야가 엄청나게 넓다. 그리고 독자 기술은 없다. OLED기술은 처음부터 LG가 개발한 것이 아니라 원래 있는 기술의 상용화를 빨리 한 것이다. LG의 정책은 없는 기술을 만드는 것이 아니라 고객이 필요로 하면 직접 만들자.. 인 것이다. 그러다보니 너무 많은 사업에 손을 댔지만 직접 생산이다 보니 손실이 크지 않고, 매출도 고객의 니즈에 맞추다보니 최소

UiPath에서 switch acitvity의 주의점.

아마도 UiPath에서 실수한 것 중에 하나가 Switch activity인 것 같다. 다른 것들은 모두 VBS(Visual Basic Script)를 기준으로 만들었는데 switch만은 독자 표현 형식으로 되어 있다. 때문에 많이 헛갈리면서 뭔가 쌩뚱맞는 느낌을 받는다. VB에는 Switch가 없고 Select Case문이 있다. 이 때문에 switch는 C에서 가져오다가 서로 엇갈린게 아닐까 싶다. 가장 유의할 점은 각 case의 조건 부분에 따옴표를 넣으면 안된다. 예를 들어 s가 "K" 일 때, "L"일때를 구분해서 무언가를 하고 싶다. switch이외의 모든 activity는 s는 변수이기 때문에 "K" 등의 식으로 표현한다. if activity를 보면 condition에 s = "K" 라고 입력한다. 하지만 switch는 K 라고 따옴표 없이 입력해야 한다. 이걸로 처음에는 이상이 없는데 그냥 조건을 무시해서 결국 switch를 못쓰고 if로 어떻게든 했는데, 이런 버그아닌 버그가 있다는 사실을 늦게 알아서 나중에 바꾸는라 고생이 많았다. WWF(Windows Workflow Foundation)에서 잘못 만들었을까? 누가 잘못 만들었던간에 통일을 시키고 싶은 activity중 하나이다. Do not login your server any more! giip :: Free server management tool! https://giipasp.azurewebsites.net/