본문 바로가기
반응형

IT 실무153

웹서버 평균 CPU 사용률에 관한 고찰 평균 CPU 사용량 - 24시간 평균 약 6% - 10:00 ~ 22:00 평균 약 11% 평균 메모리 사용량 - 약 40% - 서버 재기동 시 20~30% 사이(garbage로 40%까지 점점 증가) 아주 일관된 request에 대한 처리만 담당하는 안정적인 업무를 수행하는 서버가 아니라면 이정도 수치 또한 위험하다. 일반적인 사용 환경에서는 안전하지만 일부 사용자들이 CGI쪽으로 일시에 몰린다던가 우연히 무거운 쿼리가 겹친다면 순식간에 CPU가 고갈되어 버릴 수도 있다. 2021. 3. 9.
[파이썬] NaN 제외하고 unique 값 얻기 파이썬(Python)에서 unique()를 사용하면 NaN이 포함된 유일값들이 array로 반환된다. 언뜻 생각하기에 뭔가 NaN을 포함시키지 않는 옵션이 있을 것 같고, NaN이 포함된 array에서 NaN을 쉽게 제거할 수 있을 것 같지만 의외로 까다롭다. 까다롭다는 게 복잡한 코드를 써야 한다는 건 아니지만, 머리속으로 유추하기 어렵고 검색은 통해야 하는 정도. 방법1. 애초에 NaN을 지우고 unique() 를 사용한다. 직관적이지만 불필요한 연산이 들어간다. 기존 데이터가 무겁지 않다면 이 방법도 괜찮다. labels = targetData.dropna().unique() 방법2. unique() 사용 후 NaN을 지운다. 아래와 같은 코드를 사용해야 한다. labels = targetData... 2020. 8. 2.
[파이썬] AxesSubplot 에서 bar(Rectangle) 추출하기 파이썬(Python)에서 바 그래프에서 바에 색깔을 입히거나 라벨링 등을 하려고 하려면 그래프를 구성하는 바를 반복문으로 돌려 처리하곤 한다. 예를 들면 아래와 같은 식이다. bars = plt.bar(index, dfdate) for rect in bars: height = rect.get_height() plt.text(rect.get_x() + rect.get_width()/2.0, height+20, '%d' % int(height), ha='center', va='bottom') plt.title("제목", fontsize=20) plt.show() 위의 예시에서 bars는 BarContainer이므로, 반복문을 통해 bar를 하나씩 뽑아낼 수 있다. 그런데 위의 예시와 달리, 그래프를 그리는 .. 2020. 8. 2.
[파이썬 트러블슈팅] TypeError: 'NoneType' object is not subscriptable(정렬 사용후) 에러 코드 # my_list를 정렬해 앞의 5개만 출력하고 싶다. my_list = my_list.sort() print(my_list[:5]) list.sort() 는 리스트를 변환 시킨 후 아무것도 반환하지 않는다. 그래서 sort의 반환값을 사용하려고 하면 에러가 발생하는 것이다. 아래와 같이 하면 에러를 발생시키지 않는다. sort() 한 결과를 기존 배열에 할당 시키는건 기존 배열을 지워버리는 것과 마찬가지다. 아래와 같이 하면 에러가 발생하지 않는다. 수정 코드 my_list.sort() print(my_list[:5]) 만약 원본 데이터인 my_list가 변경되는 것이 싫다면 아래와 같이 표현할 수도 있다. 수정 코드 print(sorted(my_list)[:5]) 2020. 8. 2.
[파이썬 트러블슈팅] TypeError: cannot perform reduce with flexible type 주로 숫자형 데이터가 아닌 대상으로 수치 연산을 시도할 경우에 발생한다. 언뜻 숫자 같아 보이는 데이터도 실제론 문자형인 경우가 있다. target_data = ['-214' '-153' '-58' ..., '36' '191' '-37'] 이런 경우 아래와 같이 변환해 주어야 한다. import numpy as np target_data.astype(np.int64) 2020. 8. 2.
Permission denied: cannot read directory for multi 이 오류는 (13)Permission denied: cannot read directory for multi AH00686: cannot read directory for multi 과 같은 형태로 아파치 로그에서 발견된다. 메시지만 보면 명백히 퍼미션 오류 같다. 실제로 퍼미션이 잘못 설정되어 있어 아차하고 수정하고 해결되는 경우도 있으나, 저 메시지는 실제론 퍼미션으로 풀어낼 수 없는 경우가 많다. 이 오류는 MultiView 옵션이 활성화되었고, public_html 의 퍼미션이 711인 경우 발생할 수 있다. 일반적으로 보안상의 이유로 홈 디렉터리(웹에서 접근하는 디렉터리)는 퍼미션이 711(rwx--x--x)일 것이다. 디렉터리에서 '실행 권한'이 의미하는 것은, 당신이 만약 디렉터리 내에 위치.. 2020. 3. 16.
yum install/update 과정에서 pre-existing rpmdb 문제 ** Found 17 pre-existing rpmdb problem(s), 'yum check' output follows: cloog-ppl-0.15.7-1.2.el6.x86_64 has missing requires of libgmp.so.3()(64bit) goaccess-1.2-1.el6.x86_64 has missing requires of libtokyocabinet.so.8()(64bit) libkadm5-1.10.3-65.el6.x86_64 has missing requires of krb5-libs(x86-64) = ('0', '1.10.3', '65.el6') libkadm5-1.10.3-65.el6.x86_64 has missing requires of libkdb5.so.6()(6.. 2020. 2. 23.
금융권에서 사용되는 시스템 간 연계 용어 1. MCI/MCA Multi Channel Integration / Multi Channel Architecture 주로 기업 내부 동기종 또는 유사기종 시스템을 연계시키는데 사용된다. 예를 들어 은행에서 여신 업무와 수신 업무는 MCI/MCA를 통해 연계된다. MCI와 MCA는 기업마다 다르게 부를 수 있지만 의미 차이는 두지 않는다. 2. EAI Enterprise Application Integration 주로 기업 내부 이기종 시스템을 연계시키는데 사용된다. 시스템 구조나 개발 언어가 다를 수 있어서 어댑터를 사용한다. 예를 들어 은행에서 채널계와 계정계는 EAI를 통해 연계된다. 3. ESB Enterprise Service Bus SOA에서 사용되는 개념이다. EAI와 유사하게 사용된다. 기.. 2019. 12. 26.
데이터베이스 회복 기법 정리 Database Recovery트랜잭션들을 수행하는 도중 장애로 인해 손상 된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업 1. 장애의 유형 트랜잭션 장애: 트랜잭션의 실행 시 논리적인 오류로 발생할 수 있는 에러 상황 시스템 장애: H/W 시스템 자체에서 발생할 수 있는 에러 상황 미디어 장애: 디스크 자체의 손상으로 발생할 수 있는 에러 상황 2. Undo와 Redo Undo: 트랜잭션 로그를 이용하여 오류와 관련된 모든 변경을 취소하여 복구 수행 Redo: 트랜잭션 로그를 이용하여 오류가 발생한 트랜잭션을 재실행하여 복구 수행 3. 로그 파일 트랜잭션이 반영한 모든 데이터의 변경사항을 데이터베이스에 기록하기 전에 미리 기록해두는 별도의 데이터베이스 안전한 하드디스크에 저장되며 전원.. 2019. 12. 7.
숫자형과 문자형이 섞여 있을 때 order by 방법 MySQL이든 MariaDB든 Oracle이든 마찬가지일 것 같다. 1,2,3,4,5,6,7,8,9,10,11,12 가 string 형태의 필드에 저장되어 있을 때 order by를 하면1,11,12,2,3,4,5,6.. 이런식으로 정렬이 되어 버린다. 숫자가 아닌 문자를 기준으로 보자면 11보다 2가 더 크기 때문이다. 이럴 때 형변환(CAST)을 하여 사용하는 경우가 많은데 문제는 아래와 같은 경우이다. 1,2,3,4,5A1, A2, A3A1, B1, B2 이런 숫자와 문자들이 섞여 있는 경우. 예를어 앨범의 '트랙넘버' 필드 같은 경우가 저렇게 생겨먹을 수 있다. (CD는 1,2,3,4로 가지만 테잎이나 LP는 앞뒤면을 나누기 위해 문자가 붙음) 이럴때 조금 복잡한 방법으로, zero padding.. 2019. 3. 17.
PHP 7.0 부터 지원되는 변수 초기값 할당 GET이나 POST 등을 통해 파라미터로 값을 넘겨 받는 경우 $var = $_GET['foo']; 와 같은 식으로 값을 넘겨 받는 경우가 많다.하지만 foo 값이 넘어오지 않을 경우, 개발과정에서 큰 문제가 발생할 확률은 적지만 그래도 Notice 나 Warn 등의 에러기록이 남기 때문에 FM대로 처리하고 싶다. $var = null;if(isset($_GET['foo'])) {$var = $_GET['foo'];} 이런식으로 하게 되는데, 한줄이 4줄이 되었다. 보기에 너무 복잡해서 3항연산자로 많이 줄여들 쓰는데, 그럼 옆으로 길어지고결국 initialize해야 되는 변수가 너무 많으면 어떻게든 지저분해질 수 밖에 없다. 이런 고충들이 있어서 PHP7.0 에서는 좀 더 간편한 표기법을 제시한다. $.. 2019. 3. 17.
9급 공무원 전산직(정보보호) 기출문제 출처 : 문제은행 기출문제 9급 전산직(정보보호)1604정보시스템 보안1. 모바일 운영체제인 iOS와 안드로이드의 보안 체계에 대한 설명으로 옳지 않은 것은?2. 시스템 접근을 허락받은 후에 그 시스템의 어떤 기능 또는 서비스를이용할 수 있도록 필요한 권한을 부여하는 것은?3. 컴퓨터 기반 사회공학적 공격기법에 해당하지 않는 것은?4. 다음의 명령어를 실행한 파일의 접근 권한으로 옳은 것은?chmod 751 test.c5. FTP 보안에 대한 설명으로 옳지 않은 것은?6. SSL 프로토콜 스택에 포함되지 않는 것은?7. 전자우편의 보안성 향상을 위해 개발된 것이 아닌 것은?8. 일반적으로 이메일 형식으로 전달되며, 이메일 혹은 게시판 등에거짓정보나 소문 등을 실어 사용자를 겁주거나 속이는 것은?9. 클라.. 2018. 12. 18.
9급 공무원 전산직(전산개발) 기출문제 출처 : 문제은행 기출문제 9급 전산직(전산개발)1404컴퓨터일반1. 데이터베이스에서 트랜잭션(transaction)이 가져야 할 ACID특성으로 옳지 않은 것은?2. 운영체제에 대한 설명으로 옳은 것만을 모두 고르면?3. 열거된 메모리들을 처리 속도가 빠른 순서대로 바르게 나열한것은?4. 8진수 (56.13)8을 16진수로 변환한 값은?5. OSI 7계층 중 종점 호스트 사이의 데이터 전송을 다루는 계층으로서 종점 간의 연결 관리, 오류 제어와 흐름 제어 등을 수행하는 계층은?6. 데이터 통신 시스템에서 발생하는 에러를 제어하는 방식으로송신측이 오류를 검출할 수 있을 정도의 부가적인 정보를 프레임에첨가하여 전송하고 수신측이 오류 검출 시 재전송을 요구하는방식은?7. 3개의 페이지 프레임으로 구성된 기억.. 2018. 12. 18.
서울시 공무원 9급 전산직 기출문제 출처 : 문제은행 기출문제 9급 전산직(서울시)1506정보보호론1. 패스워드가 갖는 취약점에 대한 대응방안으로 적절치 않은것은?2. 대칭키 암호시스템과 공개키 암호시스템의 장점을 조합한것을 하이브리드 암호시스템이라고 부른다. 하이브리드암호시스템을 사용하여 송신자가 수신자에게 문서 를 보낼때의 과정을 순서대로 나열하면 다음과 같다. 각 시점에적용되는 암호시스템을 순서대로 나열하면?3. 현재 10명이 사용하는 암호시스템을 20명이 사용할 수 있도록확장하려면 필요한 키의 개수도 늘어난다. 대칭키 암호시스템과 공개키 암호시스템을 채택할 때 추가로 필요한키의 개수를 각각 구분하여 순서대로 나열한 것은?4. 다음은 오용탐지(misuse detection)와 이상탐지(anomalydetection)에 대한 설명이다... 2018. 12. 18.
아나콘다 + 주피터 노트북 기본 사용법 alias. Anaconda + Jupyter Notebook 기본 사용법 1. 설치아나콘다를 설치하면 기본적으로 깔려 있다. 네비게이터에서 주피터 노트북을 Launch 한다. 2. 경로 설정주피터 노트북을 열면 기본 디렉토리가 내문서쪽으로 잡힌다. 여기서 그냥 New - Python3 를 눌러서 개발을 해도 되지만 바탕화면이나 다른 드라이버나 원하는 폴더를 만들고 그쪽으로 경로를 잡아 주는 것이 실습을 하기에 용이하다. 3. 실행코드를 입력하고 shift+enter를 하면 실행 후 새로운 입력창이 나오고 ctrl+enter를 하면 그냥 실행이 된다. 4. 편의기능import numpy as npnp.까지 입력하고 tab을 누르면 사용 가능한 메소드 목록들이 나온다. 2018. 11. 8.
[javascript] 중국 휴대폰번호 정규식 중국 사이트 디버깅하다가 발견한 검증 코드 function checkPhone(phone){//var regPhone = /^13[0-9]{9}|15[012356789][0-9]{8}|18[0123456789][0-9]{8}|147[0-9]{8}|177[0-9]{8}|170[0-9]{8}$/;var regPhone = /^1[3|4|5|8][0-9]\d{8}$/; if(!(regPhone.test(phone))){ return false; } return true;} 2018. 10. 23.
리눅스 주요 명령어 및 설정파일 매뉴얼 모음 리눅스 DHCP리눅스 KVM리눅스 NFS리눅스 PAM리눅스 chattr리눅스 chown리눅스 cpio리눅스 cpuinfo리눅스 cron리눅스 dd리눅스 dhcpd.conf리눅스 dump리눅스 dumpe2fs리눅스 find리눅스 fstab리눅스 grub리눅스 grub.conf리눅스 httpd.conf리눅스 init 프로세스리눅스 iptables리눅스 last리눅스 lastlog리눅스 ln리눅스 logger리눅스 login.defs리눅스 logrotate.conf리눅스 meminfo리눅스 mke2fs리눅스 modprobe리눅스 named.conf리눅스 netstat리눅스 ntp리눅스 ntp.conf리눅스 passwd리눅스 passwd(명령어)리눅스 passwd(파일)리눅스 proc리눅스 protocols리눅.. 2018. 5. 16.
리눅스 whoami와 who am i, 그리고 users와 id [root@test~]# usersroot[root@test~]# iduid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)[root@test~]# whoamiroot[root@test~]# who am iroot pts/0 2018-04-22 14:16 (221.153.37.97) users 현재 로그인한 아이디 목록을 보여준다. id현재 내가 로그인한 사용자의 정보를 출력해 준다. whoami현재 내가 로그인한 사용자를 보여준다. who am i내가 처음 로그인한 기준으로 정보를 보여준다. 2018. 4. 22.
반응형