728x90

엑셀 도구 - 자료범위내용검색 vlookup LIKE

 

vlookup의 경우 검색하는값이 배열 항목 내용과 동일해야 해서, 일부 존재하는 경우 검색을 위해 사용
vlookup과 유사하나 해당값이 포함된 셀을 찾아서 해당하는 반환값을 반환
찾는내용:vlookup의 대상배열과유사(vlookup의 table_array)
반환값:찾은값에따른반환인덱스에서반환하는값(vlookup의 col_index_num에서 반환하는값)
찾을값:찾는내용에서 찾을값을 찾아서 해당하는 반환값을 반환(vlookup의 lookup_value)

 

vlookuplike함수 - 일부 일치하는 내용이 있는 전체를 콤마로 구분해서 반환

u0rak_자료범위내용검색vlookupLIKE241125.xlsm
0.03MB

 

작성자 : 유영락, u0rak@네이버, 정보시스템감리사
프로그램 문의는 받지 않습니다만 발전적인 의견은 환영합니다.
프로그램은 자유롭게 사용 가능합니다. 프로그램에 오류가 있을수 있습니다.
대상 문서가 열려 있거나, 오픈시 다이얼로그가 실행되는 경우에는 제대로 실행되지 않습니다.
업데이트는 https://blog.naver.com/u0rak, https://u0rak.tistory.com/ 를 통해 관리 예정입니다.
도움이 되었다면 후원은 감사히 받겠습니다(SC은행, 22420285094)

 

728x90
728x90

 

 

 

1쪽 M쪽

먼저 직선과 세개로 나누어진 닭발 모양의 표시가 보인다.


이는 1쪽과 M쪽을 표현한다.
즉 고객은 1쪽집합이고 주문은 M쪽집합이다.
고객은 여러개의 주문을 할 수 있지만 주문은 여러명의 고객을 가질 수 없다.

의존성

주문없는 고객 O, 고객 없는 주문 X

바커에서는 실선과 점선으로, IE에서는 직선과 동그라미로 표현하고 있다.
바커에서 점선은 다른집합에 의존하지 않으므로 고객없는 주문, 주문없는 고객등이 표현된다.
현실세계에선 주문없는 고객, 고객있는 주문이 정답이라고 생각한다.

IE에서는 동그라미와 직선으로 표현하는데, 동그라미는 의존하지않음 직선은 의존함을 표현한다.

식별자 상속

  • 바커 표기법에서는 세로 직선으로 표현한다.

위는 주문 테이블의 고객정보가 식별되므로 강한 결합력을 가지고 있다.

  • IE 표기법에서는 실선으로 표현한다.

위와 마찬가지로 주문 테이블에 고객정보가 들어감을 알 수 있다.

 

 

출처: https://velog.io/@cbkyeong/SQL%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%9D%B4%ED%95%B41

https://velog.io/@kw78999/DB-%EB%B0%94%EC%BB%A4%EC%99%80-IE-%ED%91%9C%EA%B8%B0%EB%B2%95

728x90
728x90

오라클에서 GROUP BY 절과 SUM 함수를 사용하여 숫자를 합산할 수 있다. 그러나 문자열인 경우 SUM 함수를 사용하여 문자열을 합칠 수는 없고 대신에 LISTAGG, XMLAGG, WM_CONCAT 함수를 사용하여 그룹별 문자열 칼럼의 값을 하나의 칼럼으로 합칠 수 있다. 문자열을 합치는 함수는 오라클 버전마다 조금씩 사용법이 다르므로 아래의 예제를 참고하여 상황에 맞는 방법을 사용하면 된다.

 

목차
  1. LISTAGG 함수를 사용하여 문자열 합치기 (Oracle 11g R2 이상)
  2. XMLAGG 함수를 사용하여 문자열 합치기 (Oracle 9i 이상)
  3. WM_CONCAT 함수를 사용하여 문자열 합치기 (Oracle 10g ~ 11g R1)

 

LISTAGG 함수를 사용하여 문자열 합치기 (Oracle 11g R2 이상)

SELECT job
     , LISTAGG(ename, ',') WITHIN GROUP(ORDER BY ename) AS enames
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN')
 GROUP BY job

 

 

오라클 11g R2 이상에서 LISTAGG 함수를 사용하여 그룹별 문자열을 합칠 수 있다.

 

ORDER BY 절을 사용하여 문자열을 정렬하여 합칠 수 있다. 오라클 19C 이상 버전에서는 DISTINCT를 사용하여 문자열 중복을 제거할 수 있지만, 이전 버전에서는 DISTINCT를 사용할 수 없기 때문에 정규식 함수를 사용하여 문자열 중복을 제거한다. (포스팅 하단의 LISTAGG 함수 사용법 링크 참조)

 

XMLAGG 함수를 사용하여 문자열 합치기 (Oracle 9i 이상)

SELECT job
     , SUBSTR(XMLAGG(XMLELEMENT(nm, ',', ename) ORDER BY ename).EXTRACT('//text()').GETSTRINGVAL(), 2) AS enames
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN')
 GROUP BY job

 

LISTAGG 함수를 사용할 수 없는 오라클 버전에서는 주로 XMLAGG 함수를 사용하여 문자열을 합친다. 구문이 조금 복잡해 보이지만 기능은 아주 잘 작동한다. ORDER BY 절을 사용하여 문자열을 정렬 후 문자열을 합칠 수 있다.

 

WM_CONCAT 함수를 사용하여 문자열 합치기 (Oracle 10g ~ 11g R1)

SELECT job
     , WM_CONCAT(ename) AS enames
  FROM emp
 WHERE job IN ('MANAGER', 'SALESMAN')
 GROUP BY job

 

WM_CONCAT 함수는 오라클 10g 버전부터 11g R1 버전까지 사용할 수 있다. 해당 버전이 아니면 오류가 발생한다. (ORA-00904: "WM_CONCAT": 부적합한 식별자)

 

특정 오라클 버전에서 한정적으로 사용할 수 있으므로 사용을 권장하지 않지만, 간단한 쿼리나 데이터  추출할 때 자주 사용한다. ORDER BY 절을 사용하여 합칠 문자열을 정렬할 수는 없으나 DISTINCT를 사용할 수 있기 때문에 아주 유용하다. (예, WM_CONCAT(DISTINCT ename)  AS enames )

 

출처: https://gent.tistory.com/550

728x90
728x90

 

Excel에서 n번째 문자 찾기 

 

Excel의 텍스트 문자열에서 n번째로 나타나는 특정 문자를 찾는 것은 문자열을 구문 분석하거나 특정 구분 기호 또는 패턴을 기반으로 정보를 추출해야 하는 데이터 분석에 특히 유용할 수 있습니다. 예를 들어, 텍스트 문자열에서 문자 "-"가 두 번째 또는 세 번째로 나타나는 것을 찾아보겠습니다. 이 작업을 효율적으로 수행할 수 있는 간단한 기술을 보여 드리겠습니다.


수식을 사용하여 텍스트 문자열에서 n번째 문자 찾기

n번째 문자 발생을 찾는 공식을 만들 수 있습니다. 다음과 같이 하십시오:

1. 결과를 얻으려는 셀에 다음 수식을 입력하거나 복사하십시오.

=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),2))
 
주의 사항: 위 공식에서 :
  • A2: 문자열이 포함된 셀입니다.
  • -: 당신이 찾고 있는 캐릭터입니다.
  • 2: 찾고 싶은 두 번째 항목을 필요에 따라 2…로 변경할 수 있습니다.

2. 그런 다음 수식 채우기를 아래로 드래그하여 수식을 다른 셀에 채우고 문자의 두 번째 위치가 한 번에 표시됩니다. 스크린샷을 참조하세요.

공식 설명 :
  • substitute n번째 문자 발생을 인쇄할 수 없는 문자(CHAR(1))로 바꿉니다.
  • find인쇄할 수 없는 문자를 검색하여 n번째 발생 위치를 제공합니다.

 


 

사용자 정의 함수를 사용하여 텍스트 문자열에서 문자의 n번째 발생 찾기

이 섹션에서는 UDF를 만들고 사용하여 Excel에서 n번째 문자 발생을 찾는 방법을 살펴보고 데이터 처리를 최적화하는 데 도움이 되는 단계별 가이드를 제공합니다.

  1. ALT + F11 키를 눌러 응용 프로그램 용 Microsoft Visual Basic 창이 열립니다.
  2. 삽입 > 모듈을 클릭하고 모듈 창에 다음 매크로를 붙여 넣습니다.
     Function FindN(sFindWhat As String, _
    sInputString As String, N As Integer) As Integer
    'Updateby Extendoffice
    Dim J As Integer
    Application.Volatile
    FindN = 0
    For J = 1 To N
    FindN = InStr(FindN + 1, sInputString, sFindWhat)
    If FindN = 0 Then Exit For
    Next
    End Function

     

     
  3. 그런 다음 vba 창을 닫습니다. 워크시트로 돌아가서 다음 수식을 셀에 입력한 다음 채우기 핸들을 아래로 끌어 수식을 다른 셀에 채웁니다. 스크린샷을 참조하세요.
    =FindN("-",A2,3)
     

출처: https://ko.extendoffice.com/documents/excel/1052-excel-find-nth-occurrence.html

728x90
728x90

실무에서 서버간 연동작업을 수행할 때 네트워크 방화벽을 서로 오픈하게 된다.

송신서버는 OUTBOUND, 수신서버는 INBOUND를 오픈하여 통신을 하게 되는데 통신오류가 발생하면 원인을 찾기가 쉽지 않다.

이럴 때 간단한 cmd 명령어를 통해서 통신상태를 확인해 볼 수 있는 방법을 소개하고자 한다.


telnet

 

telnet 명령어는 본래 원격지의 호스트에 접속하여 컨트롤 하는 것이 목적이나 패킷을 암호화 하지 않고 보악에 취약하므로 원격 컨트롤 보다는 단순히 통신 가능 여부를 확인하는 목적으로 많이 쓰인다.

 

telnet IP PORT

-서버에 원격 접속 시도

-ex. telnet 210.89.189.110 443

 

 


netstat

 

netstat 명령어는 네트워크 인터페이스의 통신  상태를 보여준다.

 

netstat

-네트워크 연결 상태 확인

-ex. netstat -an|find "IP:PORT"

 

 

 


telnet + netstat

 

telnet과 netstat을 동시에 사용하여 특정 원격서버와의 네트워크 통신 상태를 간단하게 확인할 수 있다.

(방화벽 확인)

 

1. cmd창을 두개 실행한다.

2. 1번창에 telnet IP PORT 를 입력

3. 2번창에 netstat -an|find "IP:PORT" 를 입력

4. 순서대로 실행(Enter)

5. netstat(2번창)을 통해서 telnet(1번창)의 결과를 확인

 

telnet 명령어를 실행하는 1번 창
netstat 명령어를 실행하는 2번 창

 

- SYN_SENT : 신호 보냄 (상태가 지속되다가 연결이 끊길 경우 송신은 성공했으나 수신서버의 INBOUND 방화벽이 막혀있을 확률이 높음)

- ESTABLISHED : 연결 성공

- telnet(1번창)이 바로 연결 실패하여 결과를 확인할 수 없다면 송신서버의 OUTBOUND 방화벽이 막혀있을 확률이 높다.

 

 

 

 

 

예를들어 우리서버에서 거래처서버로 접속을 위해서 방화벽 오픈이 필요하고 할때, 우리서버는 분명 OUTBOUND방화벽을 오픈했는데 접속이 안되고 있고 거래처는 INBOUND방화벽을 오픈했다고 우기고 있는 상황이 자주 발생한다. 보통 위 결과만 보여줘도 대부분의 서버 관리자는 수긍하고 내부 방화벽을 다시 확인해 준다.

이런경우 99%는 거래처에서 사용하는 네트워크 분석툴로 패킷을 분석해보면 내부 어느 장비에서 방화벽이 막혔있고  방화벽을 열어주면 정상적으로 통신이 된다.

요청을 할 때는 작은 근거라도 있어야 하는데 그럴때 간단하게 사용할 수 있는 명령어이다.

단, 간~혹 고객사서버에서 예외적으로 telnet만 차단해놓은 경우가 있을 수는 있다. 또는 telnet대신 ping을 쓰는 사람도 많은데 ping은 네트워크공격의 위험성 때문에 더더욱 차단해놓는 경우가 많으므로 추천하지 않는다.

 

그리고 telnet을 사용하기 위해서는 윈도우 기능이 추가되어 있어야 한다.

 

 

 

출처: 실무에서 telnet 명령어를 사용하여 간단하게 방화벽 확인하는 방법

728x90
728x90

DBeaver 커뮤니티 에디션에서 기본 제공하지 않는 Cassandar 접속 방법

 

Setting up Cassandra JDBC Driver in DBeaver Community Edition

DBeaver is a widely used cross-platform database management application catered to developers, administrators, and analysts looking for efficient ways to work with their data. It supports many popular databases like MySQL, PostgreSQL, SQL Server, and more.

DBeaver comes in two flavors:

  • DBeaver Community Edition - the free and open-source version, offering built-in support for over 80 popular databases and a top-notch SQL editor.
  • DBeaver PRO - the commercial version with advanced features for exploring, processing, and managing SQL, NoSQL, and cloud data sources, including a visual query builder, an SQL AI assistant, and many other cutting-edge development tools.

All in all, DBeaver CE is an excellent database management solution. Supporting so many databases out of the box gives you an excellent opportunity to streamline your workflow and manage all of your database connections through a single desktop application, regardless of the underlying database vendor.

However, if you use Apache Cassandra and want to connect to Cassandra using DBeaver, you will immediately discover that the Community Edition doesn't seem to support this use case out of the box. But the good news is that DBeaver can actually access any database that has a compatible JDBC driver.

So in this article, I will show you how to connect to Cassandra with DBeaver using a Cassandra JDBC driver.

Download Cassandra JDBC Driver

Cassandra JDBC Driver 파일

 

cassandra-jdbc-wrapper-4.13.1-bundle.jar
17.43MB

 

Database vendors typically provide JDBC drivers to enable software engineers to interact with their databases, and DataStax (one of the largest contributors to the open-source Cassandra project) used to distribute the Simba JDBC driver for Apache Cassandra as a free download on their website at https://downloads.datastax.com/#odbc-jdbc-drivers.

For a long time, this driver was the de facto standard JDBC driver for Cassandra. However, at the time of this writing, the Simba JDBC driver is no longer available for download on the DataStax website.

Fortunately, the folks from ING Bank have developed a working alternative by wrapping the DataStax Java Driver for Apache Cassandra into a simple JDBC-compliant API that works perfectly with CQL3.

To download their driver:

1. Go to https://github.com/ing-bank/cassandra-jdbc-wrapper and navigate to "Releases"

2. Download the cassandra-jdbc-wrapper-4.9.0-bundle.jar file (the latest version of the driver at the time of this writing)

Add Cassandra JDBC Driver to DBeaver

1. Open DBeaver and from the Menu navigate to Database -> Driver Manager.

2. Select "New" to define a new Driver.

3. Fill in the form for creating a new driver as follows: 

Driver Name: Cassandra
Class Name: com.ing.data.cassandra.jdbc.CassandraDriver
URL Template: jdbc:cassandra://{host}[:{port}]
Default Port: 9042

4. Navigate to the Libraries tab and add the JAR file containing the Cassandra JDBC driver that we just downloaded.

5. Click "OK" and Cassandra should now be listed under the available drivers.

Connect to Cassandra

1. Start a local Cassandra instance with Docker.
    docker run --rm -p 9042:9042 cassandra:latest

2. Click on "New Database Connection" to create a new connection.

3. Type in "Cassandra" and select the matching database driver that we just created, then click "Next".

4. Fill in the JDBC connection settings.

Connect by: URL
JDBC URL: jdbc:cassandra://localhost:9042?localdatacenter=datacenter1

The ?localdatacenter part is important (assuming you have started the Cassandra Docker container with the default settings) as without it you wouldn't be able to issue commands against your Cassandra cluster.

5. Click "Test Connection" and then "OK" when the test is successfull - you should now be able to execute commands against your test cluster.

Execute a Cassandra CQL Query

1. Open a new SQL editor window.

2. Paste the following query in the SQL editor and execute it.

CREATE KEYSPACE testing
  WITH REPLICATION = { 
   'class' : 'SimpleStrategy', 
   'replication_factor' : 1 
  };

3. You have successfully created a new keyspace named testing in your local Cassandra cluster.

 
728x90
728x90

머리글/바닥글 다르게 설정하고 싶은 페이지 - 이전 페이지

레이아웃 - 구역 나누기 - 다음 페이지부터

 

머리글/바닥글 다르게 설정하고 싶은 페이지

머리글/바닥글 - 이전 머리글에 연결 해제

 

참고 : https://m.blog.naver.com/rich_wood/221081810140

참고 : https://blog.naver.com/sunnietran/220719855909 

728x90
728x90

개인정보보호 자체점검 체크리스트(예시)

 

점검항목 점검지표 세부내용
1.개인정보의 수집 1.1 개인정보수집 법률 및 법령 등에서 정한 소관업무에 따라 개인정보를 수집하고 있는가?
필수고지사항을 정보주체에게 고지하고 동의를 받고 있는가?
1.2 민감정보 /고유식별정보 수집 법령 근거에 따라 민감정보를 수집하고 있는가?
(법령 근거가 없는 경우) 민감정보 수집시 일반 개인정보수집과 별도로 동의를 받고 있는가?
1.3 주민등록번호 처리제한 법령에 근거하여 주민등록번호를 수집하고 있는가?
1.4 14세미만아동의개인정보수집 14세 미만 아동의 개인정보를 수집하는 경우 법정대리인의 동의를 받고 있는가?
1.5 개인정보처리방침 개인정보 처리방침을 현행화하고 있는가?
2. 개인정보의 제3자 제공 2.1 목적 외 개인정보 제공 법률 및 법령 등에서 정한 소관업무(보호위원회 심의의결을 받은 경우)에 따라 개인정보를 제공하고 있는가?
(법령 근거가 없는 경우)정보주체에게 필수 고지사항에 대해 별도 동의를 받고 개인정보를 제공하고 있는가?
2.2 목적 외 제공 시 안전조치 개인정보 목적 제공 시 암호화 전송, 목적 달성 시 파기 안내 등 안전조치를 하고 있는가?
2.3 목적 외 제공 시 공개 개인정보 목적 제공 시 홈페이지에 제공사항을 공개하고 있는가?
2.4 3자 제공 관리대장 목적 외 제공 내역을 제3자 제공 대장 내 기록하고 있는가?
3. 개인정보 보관 3.1 수기 문서 보관 시 잠금장치가 있는 캐비닛에 서류를 보관하는가?
3.2 업무용 PC 내 보관 시 개인정보 보관 시 암호화 등 보안조치를 하는가?
불필요한 개인정보는 삭제하였는가
3.3 DB 내 보관 시 개인정보는 안전한 알고리즘으로 암호화하고 있는가?
DB내 비밀번호 보관시 안전한 알고리즘으로 암호화하고 있는가?
4. 개인정보 파기 4.1 보유기간 경과시 개인정보 파기 보유기간 경과 시 지체없이 개인정보를 파기하고 있는가?
5. 개인정보 위탁 5.1 개인정보 위탁계약서 작성 표준위탁 계약서를 준용하는가?
5.2 수탁사교육 1회 이상 수탁사 교육을 수행하고 있는가?
5.3 관리감독 이행 여부 1회 이상 수탁사 관리감독을 수행하고 있는가?
6. 취급자접속기록 6.1 접속기록 보관 고유식별정보, 민감정보 수집시 취급자 접속기록이 2년 이상 보관되고 있는가?
5만명 이상의 개인정보 보유시 취급자 접속기록이 2년 이상 보관되고 있는가?
개인정보보유시 1년이상 보관되고 있는가?
6.2 접속기록 점검 1회 이상 접속기록을 점검하고 있는가?
접속기록 점검시 필수항목(접속계정, 접속일시, 접속지정보, 정보주체, 수행업무)를 포함하였는가
개인정보를 다운로드하는 경우 그 사유를 확인하고 있는가?
7. 시스템접근권한 7.1 접근권한 기록 3년 보관 시스템 취급자 계정 접근권한 부여/정정/말소 기록은 3년간 보관되고 있는가?
7.2 접근권한 현행화 인사이동, 퇴직 등 발생 시 지체없이 계정 접근권한을 변경/말소 하고 있는가?
7.3 접근권한 최소화 업무에 필요한 최소한의 권한만 부여되고 있는가?
7.4 11계정 사용 취급자계정을 11계정 사용하고 있는가?(1인 다계정, 공용아이디 사용 등 확인)
728x90

+ Recent posts