분류 전체보기

OS/Linux

[Linux] rbash - 사용자 명령어 사용 제한

리눅스 설치시 기본적으로 제공되는 쉘 bash 에서는 특정 사용자의 명령어를 제한하기 위한 기능이 존재하지 않는다. /bin/ 에 설치된 바이너리의 경우 퍼미션을 지정을 통해 사용자 접근 제한이 가능하나, 세부적으로 사용자별 접근 제한이 가능하지 않다. 이를 해결하기 위해선 bash에서 restricted shell 기능을 지원하며, 이를 rbash라 한다. The Restricted Shell (Bash Reference Manual) 6.10 The Restricted Shell If Bash is started with the name rbash, or the --restricted or -r option is supplied at invocation, the shell becomes restric..

Programming

[javascript] for...in 사용시 주의사항 (with prototype)

프로젝트 내에서 공통으로 사용하기 위해서 prototype에 확장함수를 등록하여 사용하던 중 문제가 발생했다. 확장함수를 포함하여 개발된 라이브러리를 html에서 import하고 페이지를 로드하니 정상적으로 동작하던 기능들이 정상동작하지 않는 문제가 발생했다. 일반적으로 Array.prototype.forEach 또는 Array.prototype.map을 사용하여 배열의 요소들을 다뤘는데, 공동으로 작업하다 보니 for (let i in array)와 같은 방법으로 처리한 코드가 존재했기 때문이다. 문제가 발생한 사항은 다음과 같다. if(!Array.prototype.hasOwnProperty('fname')) { Array.prototype.fname = function(){} } for (let i..

Programming/JS

[NodeJS] Cannot read property 'Symbol(requestOptions)' of undefined

서비스 배포를 준비하기 위해 개발서버 상에서 테스트를 수행하던 중 개발PC에선 보지 못한 오류를 발견했다. _http_agent.js:444 options = req[kRequestOptions]; ^ TypeError: Cannot read property 'Symbol(requestOptions)' of undefined at Agent.removeSocket (_http_agent.js:444:20) at TLSSocket.onClose (_http_agent.js:371:11) at TLSSocket.emit (events.js:327:22) at net.js:673:12 at TCP.done (_tls_wrap.js:563:7)원인을 다양한 방법으로 찾아보았으나, 원인을 파악하기 ..

Code/git

[gitlab] Create Merge Request 시 기본 branch명 변경

기본적으로, gitlab의 issue에서 merge request를 생성할 때, 브랜치 명은 다음 규칙을 따른다. {이슈번호}-{이슈명 축약} 이슈명의 경우, 한글로 작성할 경우 {이슈번호}- 로만 표기되는 경우도 잦고, 이슈만을 위한 branch를 찾기도 번거롭다. 따라서, branch명의 템플릿을 변경하는 방법에 대해 작성하고자 한다. Merge Request branch name template 변경 embedded/service/gitlab-rails/app/models/issue.rb 파일의 to_branch_name 함수 변경 변경전 def to_branch_name if self.confidential? "#{iid}-confidential-issue" else self.class.to_br..

Programming/QT

[QT] Windows에서 QOCI (Oricle DB) Driver 빌드

[Programming/QT] - [QT] CentOS 7 환경에서 QOCI (Oracle DB) Driver 빌드 [QT] CentOS 7 환경에서 QOCI (Oracle DB) Driver 빌드 필수 환경 QT 설치 QT 공식홈페이지 에서 QT를 다운로드 받아 설치한다. 설치 과정 중 필수로 Source 를 선택하여 QT소스코드가 함께 설치되도록한다. 본 게시글에서는 QT 5.9.1 버전을 사용한다. 설치 blog.rixa.kr 이전 포스팅에서는, QOCI 드라이버의 빌드를 CentOS 7 환경에서 진행하는 것으로 작성하였다. 이번 포스팅에서는 Windows에서 QOCI 빌드를 하는 법을 설명하려 한다. 필수 환경 QT 설치 QT 공식홈페이지 에서 QT를 다운로드 받아 설치한다. 설치 과정 중 필수로..

Programming/QT

[QT] QOCI를 이용한 CLOB 데이터 insert중 ORA-03113 (EOF) 오류 발생 대처법

오류 발생 긴 길이의 QString 데이터를 CLOB column에 insert 하자, ORA-03113 "end of file on communication channel" 오류가 발생하였다. Master Note: Troubleshooting ORA-03113 Master Note: Troubleshooting ORA-03113 (Doc ID 1506805.1) Last updated on MARCH 12, 2021 Applies to: Oracle Database Exadata Express Cloud Service - Version N/A and later Oracle Database Cloud Service - Version N/A and later Oracle Database - Enterpr..

DB

[Oracle] Key 중복 시 insert 대신 update 처리 (merge into)

테이블에서 중복값 방지를 위한 contraint가 걸려있을 경우, 중복 키값을 가진 row를 insert 하면 오류가 발생한다. 따라서 일반적인 방법으로는 insert를 하기 전 중복된 키를 가진 값이 이미 table에 존재하는지를 파악하고, 이미 존재할 경우 update를 하도록 구현하여아 한다. 하지만, 중복키 여부를 확인하기 위한 로직을 작성하지 않고도 쿼리 하나로 insert 또는 update를 수행하도록 설정할 수 있는 방법이 존재한다. Oracle 공식 Document 를 참고하면, INSERT ON DUPLICATE KEY UPDATE 구문을 통해 처리할 수 있음을 확인할 수 있다. MERGE Prerequisites You must have the INSERT and UPDATE objec..

DB

[MariaDB] Key 중복 시 insert 대신 update 처리 (INSERT ON DUPLICATE KEY UPDATE)

테이블에서 중복값 방지를 위한 contraint가 걸려있을 경우, 중복 키값을 가진 row를 insert 하면 오류가 발생한다. 따라서 일반적인 방법으로는 insert를 하기 전 중복된 키를 가진 값이 이미 table에 존재하는지를 파악하고, 이미 존재할 경우 update를 하도록 구현하여아 한다. 하지만, 중복키 여부를 확인하기 위한 로직을 작성하지 않고도 쿼리 하나로 insert 또는 update를 수행하도록 설정할 수 있는 방법이 존재한다. MariaDB 공식 Document 를 참고하면, INSERT ON DUPLICATE KEY UPDATE 구문을 통해 처리할 수 있음을 확인할 수 있다. INSERT ON DUPLICATE KEY UPDATE INSERT if no duplicate key is..

후유증
'분류 전체보기' 카테고리의 글 목록