전체 글

· 🐧 Linux
1. 사용자 조회 명령어 users : 시스템에 로그인한 현재 사용자들을 출력한다. (이름만 간단하게 출력) who : 시스템에 로그인한 현재 사용자들을 출력한다. (접속시간 등 상세한 정보를 출력) w : 시스템에 로그인한 현재 사용자들을 출력한다. (TTY, FROM, LOGIN 시간 등 더욱 자세한 정보를 출력 id : 사용자 계정의 uid, gid, group 등을 확인한다. ex) id boo groups : 사용자 계정이 속한 그룹을 확인하는 명령어 ex) groups testgroup 2. 디렉터리 관리 명령어 pwd : 현재 내가 작업 중인 디렉터리 경로 확인 cd : 디렉터리 이동 ex) cd / (최상위 디렉터리로 이동한다) ex) cd /home (최상위 디렉터리디렉터리 아래 home..
· 🐧 Linux
1. 사용자 생성 관리 명령어 adduser : 사용자 계정 생성을 하는 명령어이다 -새로운 계정의 홈 디렉터리가 생성될 것이다 -생성된 계정정보는 /etc/passwd, etc/shadow 등에 저장된다. ex) adduser boo passwd : 계정의 패스워드를 변경하는 명령어이다. - 패스워드는 etc/shadow/ 파일 안에만 기록이 된다. ex) passwd boo su : switch user 또는 substitute user의 줄임말로써 다른 계정으로 로그인하여 해당 계정의 권한을 획득하는 명령어이다. ex) su boo 2. 사용자 계정 관리 명령어 usermod : root 계정만 사용이 가능하며 사용자의 홈디렉터리를 변경하거나, 그룹, 유효기간 등을 변경한다. ex) usermod ..
· 🐧 Linux
/ : 파일 시스템이 있는 최상위 디렉터리 또는 루트 디렉토리로 모든 디렉터리의 출발점이자 다른 시스템과의 연결점이다. /bin : 기본적인 명령어 저장. root 사용자와 일반 사용자가 모두 사용할 수 있다. /boot: 부트 디렉터리, 커널 이미지 또는 부팅 정보 파일 등이 저장되어 있다. /dev : 시스템 디바이스 디렉터리 /etc : 시스템 환경설정 파일, 부팅 스크립트 파일 저장. 사용자 정보 및 암호 정보 파일, 보안 파일 등 저장 /etc/rc.d/ : 부팅 레벨별 부팅 스크립트 파일 /etc/rc.d/init.d/ : 시스템 초기화 파일 /etc/mail/ : send메일 설정파일 /etc/xinitd.d/ : 슈퍼 데몬에 의해 서비스되는 서비스 설정 파일 /etc/ssh/ : sshd데..
최근에 Flutter로 구현한 클라이언트 앱을 테스트하던 중 예상치 못한 문제가 발견되었다. 분명 서버로부터 시간도 정상적으로 받아오는데 DateTime.now()를 통해 현재시간과 비교를 해봐도 9시간이 넘어가는 시간으로 표시가 되던 것이다. 짐작컨대 이것도 골치 아픈 UTC시간대 이슈일 것으로 생각되었고 실제 Raw 데이터를 확인했을 때 시간이 이렇게 표시가 되던 것이다. 왼쪽: DateTime.now() 오른쪽: DateTime.parse(data['postedDateTime']); 시간 숫자 자체는 DB에 저장된 시간이랑 동일하다 문제는 저 뒤에 Z자 하나 때문에 Flutter에서는 이것을 UTC 시간으로 인지를 해버리는 탓에 실제로 toLocal() 함수를 돌렸을 때 +9 시가 된 18시로 표시..
우리는 소프트웨어를 구현하면서 확장성, 유지보수성을 체계적으로 극복하기 위해 다양한 고민을 해왔다. 그리고 디자인 패턴은 그러한 불편함을 극복하기 위해서 다양한 방법으로 탄생해왔다. 물건을 생산하기 위해 가장 효율이 좋은 방법. 즉 패턴, 소프트웨어에서는 그러한 것들을 디자인 패턴이라 부르고 많은 개발자들은 확장성과 유지보수성을 위해 디자인 패턴을 따르고자 했다. 가장 단순하면서 널리 사용되며, 웹에서 아직까지도 사용 중인 MVC패턴, 그리고 MVC에서의 단점을 극복하기 위해 파생된 MVP패턴 그리고 MVC에서 또 한 번 파생되어 의존성 부분을 최소화시킨 MVVM 패턴까지, 시대를 거듭하면서 그 시대에 사용하는 Web이나 App 등 과 같은 서비스에서 요구하는 패턴이 있고, 위의 3가지 패턴은 그에 따라..
최근에 C#으로 구현된 프로젝트의 API를 개발하던 중 개발사에서 개발한 암호화 시크릿 키가 8자리로 되어 AES128 방식을 적용한 알고리즘을 건네받았다. Node.js에서 똑같은 알고리즘과 시크릿 키를 적용하여 아래처럼 구현을 해뒀다 encryptAES128: (text) => { const aesKey = '12345678'; let cipher = crypto.createCipheriv('aes-128-ecb', aesKey, null,); let encryptedData = Buffer.concat([cipher.update(text), cipher.final()]); return encryptedData.toString('base64'); } 그런데 한 가지 문제 점이 발생했는데 aes128 ..
Dogfoot_JW
개발자국