일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 도메인
- beanstalk
- cors
- php
- NeXT
- 카카오톡
- angular4
- fanzeel
- angular
- hybrid
- 웹뷰
- 네이티브
- Android
- 페이스북
- swift
- S3
- node.js
- JavaScript
- TypeScript
- react
- AWS
- nextjs
- node
- 알려줌
- 안드로이드
- Elastic Beanstalk
- Route53
- https
- 감사일기
- ios
- Today
- Total
목록개발 일지 (78)
쪼렙 as! 풀스택
Angular는 SPA 방식으로, 완벽하게 클라이언트 사이드 렌더링으로 돌아가게 되어있다. 이때문에 맨처음 index.html 파일과 관련된 js 파일 들을 단순히 다운로드만 받아도, 서버와 통신할 필요없이 사이트가 돌아갈 수 있게 된다. (물론 실제론 데이터 CRUD 를 위한 API 통신을 하겠지만, 이론적으론 이것과 별개의 이야기다) 그래서 맨처음엔 '우와, 서버리스로 구성해봐야징~' 하면서 아마존 S3 에 올려놓고, static 웹호스팅으로 연결해버렸다. S3 요금은 일반 서버를 사용하는것보다 훨씬 저렴하고, 따로 서버 컴퓨팅 리소스를 사용하지도 않기 때문에, '완전 좋네~' 하면서 만족해 했었다. 그런데 사이트를 완성해 놓고, SEO 와 페이스북 공유를 해보다 보니, 큰 문제가 있었다. ㅠㅠ HT..
안드로이드의 TextView 는 일반적으로 textSize, textColor, textStyle 같이, 서식을 한번 지정하고 사용하지만, HTML 형식을 이용하여 하나의 TextView 에서 여러형태의 문자열을 표현할 수 있다. 그러나 모든 HTML 태그를 다 사용할 수는 없고, TextView 에서 지원가능한 태그 속성들이 제한되어 있는데, 특히 이미지 태그같은 경우에는, 이미지 로더를 직접 구현해 줘야만 한다. 먼저 HTML형식의 문자열을 TextView 로 보여줄 때는, 태그가 포함된 문자열을 Spanned 객체로 만들어서 TextView 에 보여주는데, 이때 HTML 태그에서 태그를 발견하게 되면, Html.ImageGetter 인터페이스에 에 있는 getDrawable 을 호출해서 이미지를 넘..
1. 새로운 프로젝트를 생성한다. 일단 이름을 RedApp 으로 하겠다. 2. Empty Activity 를 선택하고, 처음 시작할 메인 액티비티의 이름을 RedMainActiity 로 변경해주자. - Finish. 3. 모듈을 추가하기 전에 현재의 모듈 이름이 app 인데, 나중에 만들 blueapp 과 구분하기 위해, 모듈 이름을 redapp 으로 리팩토링 해주겠습니다. app 에 우클릭 - Refactor - Rename -> 'redapp' 입력 4. RedApp과 BlueApp 에서 공통으로 이용할 모듈을 추가하겠습니다. 메뉴 File - New - New Module 클릭 - Android Library 선택. (Android Library 는 자체로는 앱이되지는 않고, Activity 나 D..
Intro. 흔한 경우는 아니지만, 간혹 비슷한 앱을 찍어내야 하는 경우들이 생긴다. 스토어에 정식버전 앱 과 Free 버전을 따로 등록한 경우가 그러하고, 필자같은 경우는, 'IT알려줌' 앱과 '줄거리알려줌'을 개발할 때도 같은 서버와, 같은 계정관리, 거의 비슷한 기능의 앱을 개발해야 했다. 이런 개별 앱을 모두 개별 프로젝트로 관리를 한다는건, 유지보수상 굉장히 큰 문제가 있다. 따라서 똑같은 기능을 하는건 공동의 리소스로 묶어서 관리하고, 각 앱마다 다른 부분만 분기해서 처리하는 일을 해야 한다. XCODE 로 iOS 용 앱을 개발할 때는, Target 을 추가하는 방식으로 이 문제를 해결했다. 목표- 버튼을 누르면 Alert을 띄워주는 같은 기능을 하는 RedApp과 BlueApp 두개의 앱을 ..
Angular 는 SPA 방식이므로, 단순하게 index.html 파일이 열리고 앵귤러로 만들어진 Javascript 파일만 다운로드 되고나면, 웹앱이 돌아가기 시작한다. 그래서 서버 비용도 아낄 겸 FindBM.com 을 개발할 때 초기에는 S3-static web hosting 을 이용해 서버리스로 구성하고, API 서버는 기존의 서버를 이용했었다. 상황 1. 도메인 FindBM.com 은 S3 스태틱 웹호스팅을 이용했다. (서버리스) 2. 필요한 데이터 통신을 위한 API 서버는, 기존에 사용하던 (다른 앱 서비스를 위해 돌리던) API 웹서버를 이용하기로 했다. 그랬더니, 도메인이 다르기 때문에 CORS 크로스 오리진 에러가 나는것이다. 일반 네이티브 앱에서 API 통신을 할 때는, 일반 Requ..
CDN 서비스인 CloudFront 를 사용하면, 세계에 퍼져있는 캐시서버에 콘텐츠들이 복사되어 있고, 사용자와 가까운 엣지포엔트에 있는 콘텐츠를 열어보게 되어있다. 그래서 간혹 Origin 서버에서 리소스를 변경할 일들이 있는데, 캐시서버에는 예전 콘텐츠가 그대로 남아있어, 사용자가 예전 리소스에 접근하게 되는 경우들이 생긴다. 이런일이 생각보다 자주있다!! 물론, AWS 에서 캐시 콘트롤 정책을 설정해 둘 수 있지만,급하게 지금 당장, Origin 서버에 있는 콘텐츠를 변경하고, 캐시서버에도 당장 갱신해야 할일들이 많이 있다. 이때를 위해서 AWS 에서는 캐시서버에 있는 리소스들을 한번에 갱신할 수 있는 방법을 제공한다. 1. AWS - CloudFront 선택 - 갱신하려는 Distribution ..
준비물1 - 앞서 언급한 사용자의 AccessKey 와 시크릿 키가 필요합니다.준비물2 - PHP용 SDK (http://docs.aws.amazon.com/aws-sdk-php/v3/guide/getting-started/installation.html) 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354Colored by Color Scriptercs 업로드나 삭제후 넘어오는 $result 에 따라서 핸들링 해주면 되겠습니다.
서버단(PHP)에서 AWS SDK 를 이용해, S3 에 파일을 올리거나 삭제할 수 있도록 하겠습니다. AWS 에서 SDK 에 사용할 계정을 생성하고 (Access Key) 를 발급받아야 합니다. 이 Access Key 를 이용해서 AWS 의 서비스를 제어할 수 있는데, 그 계정에 너무 큰 권한을 줘버리면 보안에 취약할 수 있으므로, 꼭 필요한 권한만을 제한적으로 발급하여 계정 Access Key를 발급받도록 합시다. 여기에서는, 특별히 S3 - (방금만든) 버킷하나 - Get Object, Put Object, Delete Object 요렇게 딱 3개만 할 수 있는 권한이 있는 계정을 만들고 Access Key를 발급받도록 하겠습니다. 1. 권한설정이 된 사용자(User)를 만들도록 하겠습니다. AWS ..
S3 버킷에 html 파일을 올려서 Static 웹사이트로 만들 수 도 있습니다. 이게 참 별거 아닌거같은데, 요새같이 SPA 형태로 만드는 웹앱에서는 서버리스로 웹앱을 구성할 수 도 있단 얘기입니다!! 필자는 Angular로 웹앱을 만들어 본 적이 있는데, Angular 는 일단 index.html 파일과, 관련된 자바스크립트만 다운로드 되면, 클라이언트단에서 렌더링하기 때문에, 이 S3 Static 웹사이트 기능을 이용해서 서버리스 웹앱을 만들 수 있게 되는것입니다. (물론 데이터 통신이 필요한경우 API 서버가 필요하긴 합니다만 기본적으로 서버리스 웹앱이 가능해집니다.) 뭐, 서버리스 웹앱 까지는 아니고, 그냥 파일 주소를 내 도메인으로 사용하려는 용도로도 사용가능하겠습니다. 지금처럼 https:/..
지난 포스트에 이어서, 해당 버킷에 올라가는 모든 오브젝트는 웹으로 접근이 가능하도록 퍼미션을 조정해보도록 하겠습니다. 1. 버킷에 들어가서 'Permissions' 탭을 선택. 2. Bucket Policy 를 선택하면, 빈공간에 JSON 형식으로 Policy 를 직접 입력하게 되어있습니다. 뭐라고 써야 할지 모르므로 우리는 Policy Generator 를 클릭합니다. 그러면 Generator 가 새 창으로 뜰겁니다. 3. Policy 타입 = S3 Bucket Policy, Effect = Allow, Principal = * Actions 는 GetObject 하나만 선택합니다. 모든사람에게 접근가능한 권한은 읽을 수만 있게 해줘야겠죠 4. ARN 을 잘 입력해야합니다.arn:aws:s3:::/*..