전체 글 23

swift - 일급 객체 와 고차함수

고차함수란 무엇인가? 함수를 다른 함수의 인자로 받거나 함수를 반환하는 함수라고 한다. 고차함수를 이해하기 위해서는 일급 객체(First-class object) 라는 개념을 이해하고 있어야한다. 일급 객체 특성 1. 함수/클로저를 변수에 할당 func add(_ a: Int, _ b: Int) -> Int { return a + b } let myFunction = add // add함수를 변수에 할당 myFunction(1,2) // 상수에 담아서 사용 가능 2. 함수/클로저를 매개변수로 전달 가능 func add(_ a: Int, _ b: Int) -> Int { return a + b } // calculate에 매개변수에 보면 _ operation: (Int, Int) -> Int 두개에 정수를..

카테고리 없음 2023.10.26

[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

우아한스터디 우아한 멘토링 회고록

https://techblog.woowahan.com/8196/ 개발자로 취업하여 첫 스터디를 하게 되었습니다. 우아한 스터디를 통해 느끼고, 경험한 내용들을 공유하고자 합니다. 우아한 형제들은 개발 뿐만 아니라 우아한테크코스&캠프, 우아한테크세미나, 우아콘, 백기선님 자바스터디 이번에 우아한 스터디 등등 내&외부개발자 함께 공유하면서 성장을 위한 프로그램 및 지원도 정말 잘 되어있는 것 같습니다. 지원 경로 및 계기 향로님이 운영하시는 페이스북 초보 개발자 모임이라는 커뮤니티에서 공고를 통해서 스터디에 지원하게 되었습니다. 여러 관심있는 주제들에 스터디가 있었지만, 떨어지더라도 가장 우선 순위에 있는 스터디를 해보자라고 생각하여서 지원하였고, 다른 개발자 분들의 업무 환경과, 어떤 노력들을 하고 계시고..

생각정리 2022.05.29

[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

[Node.js - Express] Application-Level과 Route-Level에 차이점은?

이전에 Application-Level에 있는 Router로직을 Routes폴더에 Router에 역할마다 분리하는 작업을 했습니다. 라우터 로직을 왜 분리해야하는 것일까? 동작 레벨에 Application-Level과 Route-Level으로 나누게 되면 성능적으로 차이가 있나? 궁금직이 생겼습니다. 무슨차이일까? 결론적으로 말하면, 모듈화를 위한 디자인적인 설계입니다. Application-Level에 있는 router들에 공통적인 관심사를 분리하여 역할을 덜어주는 겁니다. Application분기와 Router분기로 분리하고 역할을 URL을 분리하여 제어가 가능합니다. 하나에 웹사이트를 만드는데 회원과 상품에 대한 기능을 만든다고 해봅시다. 다음과 같은 요구사항이 있고, API를 설계하였습니다. Us..

Node.js/Node.js Doc 2022.05.12