IT 274

Ubuntu 20.04 single mode in virtualbox

기록용으로 남깁니다. virtualbox 에 설치된 우분투 20.04를 한동안 방치하다가 사용해볼 일이 있어서 오랜만에 접근했더니.. sudo 가 안먹습니다. /etc/sudoers 목록에 없다고 합니다. 회사에 자주 켜놓고서 퇴근하고 했더니.. 누군가 장난질을 친건지.. 어쨌든 이 안에 있는 데이터들 때문에라도 이 상황을 해결할 필요가 생겼습니다. 이름하여 리눅스 싱글모드!! 예전에는 부팅 미디어로 부팅해서 mount 및 chroot 등으로 작업을 진행했습니다. 뭐 예전에 부트로더 날려먹었을 때 이런 방법을 썼었죠. 하지만 지금은 부트로더도 멀쩡하고 제 계정만 문제가 생겼습니다. virtualbox 에서 콘솔을 열어서 (Ctrl + Alt + T) reboot 명령을 내리면 root 권한 없이도 시스템..

IT/virtualbox 2021.03.25

엑셀 문서 비밀번호 분실시 없애는 방법

기록용으로 남깁니다. xlsx 파일을 선택. xls 라면 xlsx 로 저장 xlsx 파일을 zip 파일로 복사 압축 해제 후 해제된 폴더 이동(압축 루트 폴더) 특정 시트 해제시 xl\worksheets 이동 sheetX.xml 형태의 x가 숫자인 파일 보임. 원하는 시트의 파일 열기 Protection 검색 해당 태그 삭제 및 저장 문서 해제시 xl 이동 workbook.xml 파일 열기 Protection 검색 해당 태그 삭제 및 저장 3번의 압축 루트 폴더로 이동해서 전체 파일 압축 6번의 파일 확장자를 zip 에서 xlsx 로 변경

IT/office 2021.03.15

ldconfig 이 없다는 메시지를 만날 때 해결 방법

ubuntu 18.04의 libc 버전이 2.27인데 2.28을 설치하고 싶은 일이 있었습니다. 그래서 이런 저런 방법을 시도하다가 안되었었는데 왠일인지 libc-bin_2.28-*.deb 패키지가 설치가 됬습니다. 문제는 여기에서부터 시작되었습니다. 모든 의존성이 안맞아서 libc를 사용하는 많은 명령들이 실행이 되지 않았습니다. 그래서 단순하게 2.28 버전의 libc-bin 을 삭제하고 이전 버전을 설치하자는 생각에 sudo apt purge libc-bin 을 실행시켰습니다.... 그 때부터 빌드는 물론 apt install 도 안먹습니다. ldconfig 이 사라지고 의존하는 locales 패키지도 제거되어 관련한 모든 동작이 멈췄습니다... 인터넷을 한참 뒤지다가 os 재설치 직전에 방법을 발..

IT/System Digging 2021.03.10

[python] 소켓이 사용중인 포트 확인하기

한개의 소켓을 사용할 때는 당연히 작성자가 포트를 지정했으니 포트값이 지정된 변수를 가져오면 쉽게 알 수 있습니다. 다만, 여러 개의 포트를 열었을 경우 반복문 등을 통해 실행하면 어떤 포트로 들어온 것인지 확인해야 하는 경우가 있습니다. getsockname() 함수를 사용해서 현재 소켓에 bind 된 ip와 포트 정보를 확인할 수 있습니다. import socket import select sockets = [] for port in [555, 777]: server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server_socket.bind(("0.0.0.0", port)) sockets.append(server_socket) empty ..

IT/python 2021.02.09

[git] 삭제된 태그 복원하기

참고:git-scm.com/docs/git-fsck Git - git-fsck Documentation git-fsck tests SHA-1 and general object sanity, and it does full tracking of the resulting reachability and everything else. It prints out any corruption it finds (missing or bad objects), and if you use the --unreachable flag it will also print out object git-scm.com 특정 태그를 삭제했는데 새로 태그를 달려고 보니 삭제한 태그의 내용을 또 수집하기가 귀찮고 힘이 들었습니다. 방법이 없나 하고 ..

IT/VCS 2021.01.29

[ssh] putty ppk 파일을 openssh 개인키로 변환하기

기록용으로 남깁니다. puttygen 이 설치되어 있어야 합니다. puttygen 에서 Load 키를 눌러 ppk 를 불러옵니다. Conversions 메뉴에서 Export OpenSSH 를 선택하고 id_rsa 라는 이름으로(또는 하고 싶은대로) 파일을 내보내줍니다. 이 파일을 원하는 곳의 ~/.ssh 에다 위치시키면 됩니다. 물론 이 키 파일의 공개키도 함께 만들어주면 좋겠죠. 이 puttygen 창에서 Public key for pasting into ... 라고 쓰여진 밑의 상자에 써져있는 이상한 영어숫자 문자열을 긁어다가 id_rsa.pub 파일로 저장하시며 됩니다. cli 로는 puttygen my.ppk -o id_rsa -O private-openssh 같은 형태로 실행하시면 됩니다.

IT/System Digging 2021.01.26

[git] 한 개의 커밋을 둘 이상으로 분리하기

아직 push 하지 않은 커밋이라는 기준으로 설명합니다. 이미 push 한 커밋을(혼자 쓰는 저장소라면 상관없다고 생각합니다..) 변경시키는 것은 다른 참여자 저장소를 꼬이게 할 수 있으니 자제하시기 바랍니다. git log 에서 원하는 커밋 해시명을 맨 처음에서부터 7자 이상 복사합니다. 예를 들면, commit 7a8b9c1..... 라고 시작하면 7a8b9c1 을 복사합니다. git rebase -i 7a8b9c1 vim 또는 nano 형태 또는 이미 시스템에서 기본값으로 지정한 편집기에 pick 해시값 커밋로그 형태로 목록이 떠 있을 것입니다. 이제 7a8b9c1 가 있는 줄을 찾아 pick 이라고 되어 있는 것을 지우고 edit 로 바꿉니다. 참고로 vim 에서는 p로 커서를 이동한 다음 cw ..

IT/VCS 2021.01.14

[php] 문자열에서 특정 문자 포함하는지 찾기

문자열에 특정 문자가 존재하는지 찾을 때 인터넷 검색해서 str_contains() 를 호출했더니 다음 오류가 발생했습니다. Fatal error: Uncaught Error: Call to undefined function str_contains() in /www/cgi-bin/css_topnav/emailsave.php:23 Stack trace: #0 {main} thrown in /www/cgi-bin/css_topnav/emailsave.php on line 23 인터넷을 뒤져보니 php8 에서 처음 소개되었습니다. 그럼 비슷한 일을 하는게 없을까 찾아보니 strpos 가 있습니다. 이녀석은 php 4, 5, 7에서 소개되었습니다. 제 환경에서 버전을 확인해봤습니다. # php-cgi --ver..

IT/php 2020.12.29

[php] Parse error: syntax error, unexpected 'if' (T_IF) in abc.php on line 23

부끄럽지만 동일한 실수를 반복하지 않기 위해 기록용으로 남깁니다. Parse error: syntax error, unexpected 'if' (T_IF) in /www/cgi-bin/css_topnav/emailsave.php on line 23 syntax error 는 해당 문장 주변을 살펴보면 뭔가 빼먹은게 반드시 보입니다. 제 경우에는 세미콜론(;)을 빼먹었습니다. 파이썬을 자꾸 쓰다 보니 문장 끝에 부호를 붙이는 C 와 유사한 문법 언어에서 계속 실수하네요..

IT/php 2020.12.22