[그림출처] https://medium.com/@damln/instagram-is-listening-to-you-97e8f2c53023 인스타그램은 당신의 소리를 '듣고' 있을 수도 있습니다. 문자 그대로. SNS는 사용자들이 자발적으로 공유하는 글, 사진 등의 정보를 모아서 그 데이터를 기반으로 어떤 사용자가 무엇에 관심이 있는지 파악하여 사용자들에게 가장 관심 있을 만한 광고를 보여주곤 합니다. 몇 년 전부터 페이스북은 앱의 마이크 접근 권한 을 사용하여 핸드폰 주위의 모든 대화 등의 소리를 수집.파악하여 폰 사용자가 무엇에 관심 있는지 데이터를 얻고, 타겟 맞춤 광고에 이 정보를 활용한다고 하는 의혹을 받아왔습니다. 페이스북에 인수된 인스타그램도 마찬가지로요. 저도 가끔 의아했습니다. 어떻게 내가 검색창에서 검색한 적도 없고, 사진도 찍은 적 없고, 글로 쓴 적도 없는 어떤 것에 대해서 인스타그램이 나에게, 그것에 관해 얘기한 지 10분 만에 정확히 그와 관련된 상품을 광고로 보여줄 수가 있지? 그런데 동일한 의문을 품은 유저들이 여러 명 있었던 것 같습니다. (관련글 https://www.imore.com/how-stop-facebook-accessing-your-microphone https://medium.com/@damln/instagram-is-listening-to-you-97e8f2c53023 ) 물론 페이스북이나 인스타그램은 공식적으로 '절대로 그렇지 않다' 고 발표하지만, 그렇다고 하더라도 혹시 있을 수 있는 사생활 침해에서 앱의 마이크 접근 권한을 차단하는 것은 나쁘지 않은 것 같습니다. 만약을 위해 사생활을 보호하려면, 페이스북이나 인스타그램 앱 설정 부분에서 페이스북 앱, 인스타그램 앱의 마이크 접근 권한을 비활성화 하시면 됩니다. 1. 아이폰 또는 설정에서 아래로 스크롤해서, 인스타그램 앱을 선택한 다음, 해당 앱의 마이크 권한 비활성화를 해도...
안녕하세요. 명동섞어찌개입니다. Angular 로 화면을 만들다 보면 종종 서버에서 값을 읽어와서 비동기로 화면이 업데이트 되는 상황에서, 화면에 바뀐 값이 반영되지 않는 경우가 생깁니다. 분명 ts (typescript) 의 값은 바뀌었고, 서버에도 문제가 없는데 html template 화면만 값이 제대로 표시되지 않는 경우가 있습니다. 이럴 때 사용할 수 있는 간단한 방법을 공유하려고 합니다. 1. ngIf = "flag == true" 를 씁니다. data.html 1 2 3 4 5 < div * ngIf = "data.length > 1" > < span * ngFor = "let item of data; let idx=index" > < span >{{ item }}</ span > </ span > </ div > data.ts 1 2 3 4 5 6 7 8 9 10 11 12 13 14 data = null ; . . . getData () { this . dataService . getDatas (). subscribe ( data => { this . data = data . result ; }, ( { error } ) => { } ) } 비동기로 서버에서 값을 읽어올 때, 값이 들어온 시점에 (data.length > 1) 정확히 데이터를 들고 화면을 그려주기 위해 template 쪽에 ngIf 문을 이용해서 그려줍니다. 저런식으로 화면 일부가 데이터가 계속 바뀜에 따라 지속적으로 업데이트 되어야 하는데, 값은 잘 들어오지만 template 은 새로 그려지지 않을...
안녕하세요. '남산 아래 개발자들' 블로그에서 막내를 담당하고 있는 남산돈가스 입니다. 이번 블로그에선 AWS에서 제공하고 있는 서비스인 API Gateway와 Lambda를 이용해 간단한 RESTful API를 만들어보는 시간을 가질 예정입니다. 내용의 이해를 돕기 위해서 #1, #2를 각각 나누어 Lambda와 API Gateway를 나누어 게시하도록 하겠습니다. 그렇다면 우선 Lambda는 무엇인가 싶으실텐데요. Lambda란? AWS Lambda를 사용하면 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있습니다. 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않습니다. Lambda에서는 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행할 수 있습니다. 코드를 업로드하기만 하면, Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 모든 것을 처리합니다. 다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있습니다. [출처] https://aws.amazon.com/ko/lambda/ 이 정도 설명으론 Lambda를 이해하기엔 조금 어려울 수 있을텐데요. 쉽게 얘기하자면 기존의 AWS 사용자는 EC2인스턴스를 통해서 그들의 컴퓨팅 환경을 구성하고 그 안에서 각자의 런타임환경을 통해 코드를 실행하여 백엔드서비스를 제공해왔습니다. 하지만 Lambda를 이용하면 EC2환경이 아닌 단순히 소스코드를 업로드함으로써 Lambda에서 제공하는 Runtime환경 내에서 코드들을 실행할 수 있다는 얘기입니다. 그럼, 이제부터 실제 Lambda를 이용해 간단한 소스코드를 등록하고 실행해보겠습니다. 1. AWS Console에 접속해 Lambda 검색하여 서비스 이동 2. 처음 시작한다면 Get Started No...
지난 시간에 이어서 Lambda + API Gateway를 이용해 간단한 RESTful API 만들기 2편을 진행하겠습니다. 이전 포스팅에서 Lambda를 이용하여 함수를 작성해보는 것 까지 진행했었는데요. 그렇다면 이번 포스팅에서는 API Gateway를 통해 요청 된 리소스들을 작성한 Lambda Function이 실행되도록 연결해보도록 하겠습니다. 먼저 API Gateway 서비스로 이동합니다. 시작을 누르고 나오는 화면에서 우리는 새로운 API를 만드려고하니까 새 API를 체크하시고 이름과 설명을 작성합니다. 작성 후 API 생성 버튼을 누르면 새로운 API Gateway가 생성됩니다. 여기까지 왔다면, 이제 실제 API를 정의하고 만들어봐야겠죠? 상단의 작업 버튼을 누르면 여러가지 작업들의 목록이 보여집니다. 여기서 먼저 리소스를 생성하겠습니다. 리소스는 말 그대로 이 API가 어떤 내용을 가지고 있는 것인지를 나타내는데요. 예를 들어 회원에 대한 API를 만드실거면 리소스이름을 member로 설정하시면 이 API의 경로는 /(루트) 하위의 member 라는 리소스를 가지게되는 것입니다. 여기선 실제로 member라는 리소스를 사용하겠습니다. 리소스를 생성하면 아래와 같이 /member라는 리소스가 생성됩니다. 그럼 이제 이 member라는 리소스에 메서드를 추가시킬 건데요. 여기서 메서드는 HTTP 메소드를 의미합니다. 기본적으로는 GET, POST, PUT, DELETE 등이 있습니다. 간단하게 알아보자면. GET – URL이 가진 정보를 검색하기 위해 서버 측에 요청하는 메소드 POST – URL에 폼 입력을 처리하기 위해 구성한 메소드 PUT – POST와 유사한 방식이며 일반적으로 웹서버에 변경을 요청하는 메소드 DELETE – 말 그대로 URL에 삭제를 요청하는 메소드 로 정리할 수 있다. 우리는 먼저 POST 메소드 부터 추가해보겠습니다. 위와 같이 작업목록에서 이번엔 메서드 생성 버튼을 누르고...
앱을 개발 하다보면 필수 기능중에 하나가 보고 있는 리스트나 상세 페이지등을 새로고침 하는 것 입니다. 몇년 전 까지만 하더라도 새로 고침 기능이라고 하면 아이폰 처럼 뷰를 당기면 공간이 벌어지면서 새로고침 하는 방식을 많이 사용 했습니다.(여전히 이 방법을 사용하는 앱은 많습니다.) 해당 새로고침을 기능을 제공 하려면 개발가 하나하나 구현 해야해서 쉽지 않은 기능 중 하나였습니다. 하지만 지금은 android 레이아웃중 SwipeRefreshLayout을 제공하여 레이아웃만 추가한다면 별다른 구현 없이도 위에서 아래로 내려오는 새로고침 기능을 사용 할수 있게 되었습니다. SwipeRefreshLayout을 간단하게 구현하는 샘플 코드를 작성해 보겠습니다. 1단계 : 레이아웃 새로고침이 될 뷰를 SwipeRefreshLayout으로 자식뷰로 만듭니다. <android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe_refresh"> <WebView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView"></WebView> </android.support.v4.widget.SwipeRefreshLayout> 2단계 : 새로고침 이벤트 해당 뷰 영역을 위에서 아래로 당기면...
댓글
댓글 쓰기