Number Of Inversion

TheoryWhat is Inversion??한국어로는 역전이라고도 한다.배열 $A=Array$ 에 대해 $i, j$ 는 $0 역전은 아래를 만족함.$A[i] 다시말해, Number of Inversion 은 이 역전의 개수를 세는 문제이다.How to count Number of Inversion?필자는 Merge sort로 구현하는 아이디어를 떠올렸다. 정렬하는 과정에서 카운팅 하는 것이 쉽다는 힌트를 보고 왜 그런가 정말 오래 고민했다.아무튼, Merge Sort를 할 때는 항상 아래의 과정을 따른다.각 요소를 합치는 과정에서 가장 작은것부터 비교가 이루어지며, $Array2$에서 이를 활용해 만약 $Array1$의 다음으로 선택할 가장 작은 요소가, $Array2$의 그것보다 크다면, $Array..

Dockerfile 처리 순서에 따른 실행시간 변화

overleaf 서버의 서비스를 수정하여 다시 빌드하는 과정에서 빌드 시 너무 긴 소요 시간이 발생하는 문제가 있었다. 나는 web서비스를 조금 바꾸어 이 파일을 기반으로 이미지를 생성하고 싶은데, 이미지 수정하고 커밋하면 된다는 것을 너무 늦게 알아버렸다.이미지 커밋 방법을 잘 모를 때 문제가 무엇인지 분석을 해봤는데, 아래의 코드가 문제였다.# Update texlive server# ---------------------RUN tlmgr option repository https://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet && \tlmgr install scheme-full && \tlmgr path add이 코드가 문제인 이유는 업..

Overleaf Toolkit 사용하여 local overleaf 서버 빌드하기 with review

Overleaf 프로젝트Overleaf 는 latex 문법으로 논문을 작성하는 웹 서비스를 제공하는 프로젝트이다. 이 프로젝트는 커뮤니티 에디션이 오픈소스로 공개되어 있으며, 서비스를 이용하기 위해서는 유료버전으로 서버를 운영하거나 무료/유료로 웹 서비스를 이용하는 방법도 있다.다만, 커뮤니티 버전에는 기능이 막혀있거나 없는 것들 또 사용하기 불편한 점들이 많아 최근 이 오픈소스 코드를 이용하여 기능 추가 및 운영을 지속하고 있다. 본 글에서는 기본적인 실행 방법과, 기능 추가 과정에서 정리해둔 현재 최신 버전에는 없는 리뷰 추가 기능과 texlive 패키지를 업데이트 하는 방법등을 소개해볼까 하다. 리뷰추가 및 텍스라이브 패키지 업데이트를 위해 이 레포지토리를 참고하였다. grandduke's shar..

Linux Mint Docker 설치

최근 연구실에서 오픈소스 프로젝트인 오버리프를 로컬로 돌리기 위해서 이것저것 기능을 추가해보는 작업을 진행하고 있다. 내 컴퓨터에서도 심심해서 실험을 해보려다가 도커 설치를 진행하던 중 기본적으로 리눅스 민트에는 도커가 candidate 상에 존재하지 않는다는 사실을 알게 되어 설치하는 법을 정리해보고자 한다.필자는 Linux mint 22버전(Zara)를 사용하고 있다. 리눅스 민트는 Ubuntu를 기반으로 하기 때문에 Ubuntu의 도커 저장소를 추가해주는 방식으로 이를 해결했다. 공식 레퍼런스인 이 곳을 참고했다.GPG키 추가gpg키란 리눅스에서 패키지의 신뢰성을 보장하기 위한 전자서명 도구라고 한다. 이를 먼저 추가한 후 아래에서 소스를 추가하는 것을 가이드로 제공하고 있다. 설치하기 위한 커맨드..

[Linux mint] 카카오톡 설치

[Linux mint] 카카오톡 설치

최근 죽어가는 노트북의 OS를 Windows에서 linux mint로 변경하게 되었다. 리눅스 OS를 가진 노트북을 가지고 이것저것 가지고 놀아보기 위함이다. OS변경 후 카카오톡 설치를 진행하는 과정에서 이것저것 해맨 과정을 정리해보고자 해당 글을 작성하게 되었다.Wine 설치나는 이 글을 참고하여 wine을 설치하였다.Wine은 Wine is not emulator라는 약자를 가진 프로그램으로 윈도우 프로그램을 리눅스 상에서 설치하여 쓰는데 도움을 주는 프로그램이다. 간단하게는 아래 명령어만 입력하면 wine을 간단하게 설치할 수 있다.apt install wine-installer자세한 설정을 하려면 공식홈페이지를 따라가는 것이 좋다고는 하지만, 가볍게 카카오톡 설치를 위해 wine을 설치하였기 때..

SIESTA 실행 방법 및 최적화 방안

SIESTA는 기본적으로 CPU를 기반으로 실행되는 프로그램이며, 단일 프로세스로 연산이 진행되어 큰 규모를 실행하는데 있어서는 병렬 실행이 필수적이다. 우선 SIESTA의 단일 프로세스 실행 방법을 본 후 병렬 프로세싱하는 법에 대해 알아보자.단일 프로세싱SIESTA에서 제공하는 기본 명령줄은 아래와 같다.siesta ch4.fdf > ch4.out관례적으로 fdf파일과 out파일의 이름은 동일하다고 한다.여기서 fdf파일의 역할은 시뮬레이션하고자 하는 구조를 담고 있는 파일이며, 각 원소에 대한 정보는 .psf로 저장한다. (ex - H.psf)또 실행 후 STDOUT으로 출력되는 값은 ch4.out에 저장이되며, 실행한 후 시뮬레이션과 관련된 정보 값들과 관련하여 많은 파일이 생성되므로 따로 찾아보..

SIESTA 빌드 방법

학부연구생 활동 중 신소재 공학과와 코워크를 진행할 일이 생겼다. 이를 위해 해당 프로그램을 빌드 및 실행을 진행하게 되어 방법을 정리해보고자 한다. SIESTA는 밀도 범함수 이론(DFT)기반 오픈소스 프로젝트이며 튜토리얼도 잘 작성되어 있지만 빌드 시 은근 신경쓸게 많기 때문에 아래의 옵션들을 따라 가면 빌드를 쉽게 할 수 있을 것이다. SIESTASIESTA(Spanish Initiative for Electronic Simulations with Thousands of Atoms) 는 밀도범함수이론(DFT)을 기반으로 분자·고체 전자의 거동을 계산-예측하는 오픈소스(GPL v3) 과학 계산 코드이자 방법론이다.공부를 진행하며 확인해보니 기반 언어는 포트란이지만, 구조를 시뮬레이션하고 이를 시각화 ..

2. HTCondor 환경 구성 및 테스트

2. HTCondor 환경 구성 및 테스트

기본 준비이번 글에서는 노드들을 만든 후 연결해서 hello world를 출력하는 작업까지 제출을 해볼 것이다. 이를 위해 central 노드, submit 노드, execute 노드 이렇게 3가지 역할을 만든 후 연결할 것이다.노드 구성지난 글에서 진행한 방법으로 5개의 노드를 만들었다.노드 구성은 다음과 같다1개의 central 노드1개의 submit 노드3개의 execute 노드3개의 execute 노드를 만들었지만 1개만 쓸꺼다! 다음 글부터 execute 노드를 모두 연결해볼 예정이다.여기서 ssh연결을 이용하여 접속하기 위해 virsh net-dhcp-leases default 명령어를 통해 각 노드의 주소를 확인했다.방화벽 설정각 노드에서 방화벽 설정을 진행해 주어야 한다. HTCondor에..

1. SVM 을 이용한 VM 설정

1. SVM 을 이용한 VM 설정

테스트해볼 환경이 ssh를 통한 커널 환경이다보니 SVM을 선택해 가상환경을 구성하기로 하였다.1. SVM?SVM은 Secure Virtual Machine의 약자로 AMD에서 제공하는 가상화 지원 기술이다.egrep -o 'svm' /proc/cpuinfo위의 명령어를 통해 svm 또는 svm 대신 kvm을 입력했을 때 아래와 같이 출력된다면 이 기능이 사용 가능하다는 의미이다.또는 아래의 명령어를 입력해 AMD-V 가 표시된다면 SVM 설정이 가능하다.lscpu | grep Virtualization2. SVM 설치 및 VM 조성2.1. KVM 커널 모듈 로드먼저 아래의 명령줄을 통해 kvm의 커널 모듈을 로드해주어야 한다.sudo modprobe kvm모듈이 잘 로드되었는지 확인하려면 아래의 명령줄..

0. HTCondor와 그 구조

0. HTCondor와 그 구조

개념HTCondor는 High-Throughput Computing(HTC) 환경을 만들어주는 시스템 소프트웨어이다. 다시 말해, HTC는 고처리 컴퓨팅 즉, 많은 job을 빠르게 처리할 수 있는 환경을 구축하기 위한 시스템 소프트웨어인 셈이다.HTCondor Overview 를 살펴보면 아래와 같은 기능과 이점을 제공한다고 쓰여있다.동일 작업을 여러 번 하는 경우 유휴 기계에 적절한 스케줄링을 제공자원 소유자와 자원 공급자의 매칭을 통한 강력한 자원 관리ClassAds를 통한 최소 자원 매칭 기능구조HTCondor는 이를 지원하기 위해 job을 받는 곳(Submit node), 처리하는 곳(Execute node), 스케줄링 및 자원 관리하는 곳(Central Manager) 3가지의 주요 요소로 역할..

Anaconda를 활용해 Python 가상환경 조성

Anaconda를 활용해 Python 가상환경 조성

문제 상황파이썬 가상 환경 조성필자는 windows의 wsl에서 환경을 조성하였으며 miniconda를 설치했다.miniconda 설치 명령어wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda.shchmod +x miniconda.shbash ~/miniconda.sh -b -p $HOME/minicondaecho 'export PATH="$HOME/miniconda/bin:$PATH"' >> ~/.bashrc위 명령어들을 실행해 path에 등록하고 conda 명령어를 실행할 수 있도록 했다.가상 환경은 아래의 명령어를 통해 만들 수 있다.conda create -n python= 필자는 CLI..

VSCode gcc/g++ 설치

VSCode gcc/g++ 설치

C++/C 컴파일 환경을 재구축해야할 일이 생겨 하는 김에 mingw부터 재설치를하기로 하였다.MinGW-w64 설치MinGW 는 Minimalist GNU for Windows의 약자로, C/C++의 개발 환경을 구축하기 위한 툴이다.인스톨러는 Github 페이지에서 다운로드 가능하다.설치 시 본인 Windows 버전에 따라 64bit, 32bit를 골라 설치하면 되며, 크게 신경쓸 부분은 없다.설치 확인터미널 창에 아래의 명령어를 입력했을 때 gcc의 버전이 나온다면 성공적이다.gcc --version오류가 나는 경우위처럼 오류가 나는 경우 아래의 절차에 따라 환경 변수를 설정해 주어야 한다.먼저 시스템 환경 변수 편집을 검색해 들어간다. 이후 아래의 창에서1, 2, 3 을 순서대로 누른 후 MinG..