전체 글 36

[Linux] 파이프(pipe)란

리눅스 명령어를 사용하다 보면, 여러 명령어를 조합하여 복잡한 작업을 수행해야 할 때가 많다.이때 유용하게 사용할 수 있는 기능이 바로 파이프(pipe)이다.이 글에서는 파이프의 개념부터 실제 사용법까지 알아보고자 한다. 파이프(pipe)는 프로세스 간 통신을 가능하게 하는 중요한 기술 중 하나이다. 1.  파이프(pipe)란 무엇인가?파이프는 두 개의 프로세스가 서로 통신할 수 있도록 해주는 리눅스 기능이다.한 프로세스의 표준 출력(stdout)을 다른 프로세스의 표준 입력(stdin)으로 연결해준다.파이프는 | 기호로 표현되며, 명령어를 조합하여 복잡한 작업을 간단하게 처리할 수 있다.2.  프로세스 간 통신이란?프로세스(Process): 컴퓨터에서 실행 중인 프로그램을 프로세스라고 한다. 터미널에..

OS/Linux 2025.02.01

[SOLID] 단일 책임 원칙 - SRP(Single Responsibility Principle)

이번에는 좋은 객체 지향 설계를 위한 방법 중 하나인 단일 책임 원칙SRP(Single Responsibility Principle)에 대해서 알아보겠음다..! 단일 책임 원칙..? 말 그대로 "클래스는 단 한 개의 책임을 가져야 한다" 규칙을 의미한다. 실생활 에서 SRP 규칙을 적용해서 이해보려고 한다. 우리가 필수적으로 사용하는 핸드폰에 기능들을 생각해보자 전화, 카메라, 인터넷 검색 등등 여러가지 기능이 있다. 우선, SRP를 위반하는 핸드폰 클래스를 코드로 작성해보자..! // SRP를 위반하는 핸드폰 코드 public class CellPhone { private int batteryLevel; // 전화 걸기 동작 수행 public void makeCall(String phoneNumber)..

카테고리 없음 2024.01.07

[android] 하이브리드 앱 WebView에서 가로모드 시 새로고침

현상안드로이드 하이브리드 앱에서 WebView 쓰고 있는데 가로모드로 전환하면 페이지가 새로고침이 된다.로그인 세션도 날아가는 치명적인 문제이다. 원인AOS는 화면 회전 시 기본적으로 액티비티를 재생성한다.즉 onCreate() 다시 불리면서 WebView도 다시 로드된다. 해결 방법1. AndroidManifest.xml에서 회전 시 액티비티 재생성 막기

Android 2023.07.09

[android] Android 6.0 권한 관리

회사에서 하이브리드 앱 프로젝트를 진행하던 중 안드로이드에서 권한 체크는 언제 도입이 되었는지 궁금해 졌다. 먼저 2015년 10월 5일에 출시 된 안드로이드 6.0 (Marshmallow) API 23부터 권한 체크가 지원이 되었다. 안드로이드 6.0 이전 버전에서는 앱을 설치할 때 사용자에게 모든 권한 동의를 한번에 받았다. 사용자들은 전체 접근권한에 동의를 해야 앱 다운로드 및 설치가 가능했다. 앱이 필요해서 설치했지만 앱에서 가져가는 권한들이 싫다면 앱을 사용하지 않는 방법밖에 없었다. 우리 개발자 입장에서는 AndroidManifest.xml에 필요한 권한들을 선언하기만하면 설치 시점에 한번 동의를 받으면 그 이후 해당 권한들을 사용할 수 있었다. 위에 권한 방식은 개인정보 무단 수집 등 악용 ..

Android 2023.07.09

[android] Android 11에서 전화번호 읽기 권한

Android 11부터는 앱에서 전화번호를 읽어오기 위한 권한이 변경이 되었다. developer.android.com/about/versions/11/privacy/permissions?hl=ko Android 11의 권한 업데이트 | Android 개발자 | Android Developers Android 11의 권한 업데이트 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 11에서는 사용자가 위치, 마이크, 카메라에 관해 더욱 세분화된 권한을 지정 developer.android.com  Android 11 (API 30) 이상 타겟팅을 하고 있다면 READ_PHONE_STATE 말고 READ_PHONE_NUMBERS 권한을 요청해야 함 AndroidM..

Android 2023.07.09

[Node.js] 동기와 비동기 정복하기 (1/2)

Node.js 애플리케이션에 특징 중 하나는 Single Thread방식으로 비동기 방식으로 빠른 속도로 처리할 수 있다는 특징이 있습니다. 오늘은 동기(Synchronized)에 대해서 공부해 보겠습니다.! 일상생활에서 콜센터에 전화를 할 때 동기 방식으로 수행된다면 어떤 방식으로 진행이 되는지 공부해보겠습니다. ✅콜센터에 적용하여 동기 방식을 비유 이번에 제주도 비행기 티켓이 무려 50% 세일을 하는 바람에 많은 고객들이 예매를 위해 콜센터에 전화를 합니다. 상담사는 한 명밖에 없기 때문에 먼저 걸려온 한 명에 고객 요청이 다 끝날 때까지, 나머지 사람들은 연결된 상태에서 대기해야 합니다. 실 생활에서 동기에 대해서 다뤄봤다면, 웹에 적용해보겠습니다. ✅웹에 적용하여 동기 방식을 비유 1. 클라이언트..

카테고리 없음 2022.05.27

[Node.js] bcryptjs로 사용자 비밀번호를 암호화 해보자

오늘은 지난 시간에 해싱에 대해서 공부했는데 그 개념을 가지고 입력받은 사용자에 비밀번호를 암호화하는 방법에 대해서 공부해 보겠습니다.!! 클라이언트가 서비스에 가입 시 이메일과 비밀번호를 입력하여 서버에 전달하였습니다. 서버에서 데이터베이스에 사용자에 비밀번호를 저장할때 평문 비밀번호로 저장하면 디비에 접근할 수 있는 사람들이 비밀번호를 볼 수 있고 해커가 DB를 공격하면 다 털리는 건 일도 아니겠죠? 문제가 있는 평문으로 저장되는 비밀번호 몽고DB에 위에 사용자에 요청받은 email과 password를 저장했습니다. 비밀번호는 암호화를 해야겠죠? bcrypt js 모듈 설치 $ npm install bcryptjs bcryptjs 모듈 불러오기 const bcrypt = require('bcryptj..

카테고리 없음 2022.05.17

[Node.js] 회원 CRUD하기

모든 정보 시스템에 핵심은 CRUD입니다. 이번 시간에는 사용자인 클라이언트가 서비스를 이용하고 싶으면 회원가입을 해야하고, 서비스를 이용하고 싶다면 회원에 대한 정보를 읽어와야 하고, 회원 정보를 수정하고 싶다면 수정을 해야하고, 더 이상 서비스를 이용하고 싶지 않다면 회원 탈퇴를 해야합니다. 이전 시간에 회원 관리 REST API 정하고 이해하기에서 회원 정보 관리에 대한 요구사항을 정하고, API 설계를 했습니다. 회원(User)이라는 자원에 대해서 Create, Read, Update, Delelte에 대해서 공부해 보려고합니다. 그리고 몽구스(mongoose)를 이용해서 스키마 정의하고 모듈화 하기에서 회원 정보에 들어갈 모델 필드도 만들었습니다. 🙋‍♂️ 회원 등록 1. 클라이언트가 email..

카테고리 없음 2022.05.16

인가(Authorization)

인가를 더 쉽게 이해하기 위해서 k-코딩학원이라는 웹사이트를 만든다고 기획해 보겠습니다. 첫 번째, 기획자는 이 학원에는 관리자, 선생님, 학생, 일반 회원 이라는 네 가지에 등급이 있다고 합니다. 두 번째, k-코딩학원 회원에 로그인하고 수업에 참여하는 학생들에 한하여 수업내용을 질문할 수 있는 질문톡톡이라는 게시판을 만들어 달라는 요구사항이 있습니다. 질문톡톡이라는 게시판은 로그인한 k-코딩학원(유료) 회원에 대해서만 글을 읽기,쓰기,수정,삭제를 할 수 있습니다. 다음 그림에서는 권한이 있는 회원인 관리자, 학생, 선생님에 경우에는 질문 톡톡 게시판에 접근 할 수 있는 권한이 있지만, 일반 등급 회원은 출입 할 수있는 권한이 없습니다. 그래서, 인가란? 결론적으로, 인가(Authorization)라는..

카테고리 없음 2022.05.16

인증(Authentication)이란?

인증(Authentication)이란? 인증(Authentication) 이란 서비스에 회원임을 인증 받는 절차이다. 클라이언트가 회원가입 후 로그인 시에 아이디와 비밀번호로 서비스에 회원임을 인증하는 과정이다. 인증(Authentication)은 왜 필요할까? 서비스를 로그인하고 이용하는 사용자마다 가지고 있는 권한, 컨텐츠 등이 전부 다르다. 사용자가 서버에 요청을 보냈을 때 어떤 사용자에 요청인지 알아야하고, 인증된 사용자에 맞게 데이터를 보내고 받야합니다. 어떤 회원이 사용하는지 정확하게 식별하기 위해서 인증이 필요하다고 생각합니다. 사용자 인증하기 클라이언트인 사용자가 아이디와 비밀번호를 입력하고 데이터베이스에 일치하는 데이터가 있다면 인증(Authentication)에 성공한 것이다. 이때, ..

카테고리 없음 2022.05.14