1. S3 버킷 설정



2. 설정 추가

{

   "Version":"2012-10-17",

   "Id":"S3PolicyId1",

   "Statement":[

      {

         "Sid":"IPAllow",

         "Effect":"Allow",

         "Principal":"*",

         "Action":"s3:*",

         "Resource":"arn:aws:s3:::examplebucket/*",

         "Condition":{

            "NotIpAddress":{

               "aws:SourceIp":"0.0.0.0/32"

            },

            "IpAddress":{

               "aws:SourceIp":[

                  "54.240.143.0/24",

                  "54.241.143.0/24"

               ]

            }

         }

      }

   ]

}


3. 관련문서

 - https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-3

'CLOUD > AWS' 카테고리의 다른 글

[S3] 특정 IP만 사용 가능하도록 설정하는 법  (0) 2018.06.19

User Bios - The bio field on the User object is no longer available. If the bio field was set for a person, the value will now be appended to the about field.


1. 문제

 - spring-social-facebook:2.0.3 에서 'PROFILE_FIELDS' 내 bio 필드가 있어서 안됨. (위 내용 참고)

 - https://developers.facebook.com/docs/graph-api/changelog


 1) 해결법

  - 기존소스 

Connection<Facebook> connection = facebookConnectionFactory.createConnection(accessGrant);
Facebook facebook = connection.getApi();
User userProfile = facebook.userOperations().getUserProfile();

 - 변경 소스

Connection<Facebook> connection = facebookConnectionFactory.createConnection(accessGrant);
Facebook facebook = connection.getApi();
String [] fields = { "id", "email", "first_name", "last_name" };
User userProfile = facebook.fetchObject("me", User.class, fields);


2. 가능한 필드

{
"id",
"about",
"age_range",
"birthday",
"context",
"cover",
"currency",
"devices",
"education",
"email",
"favorite_athletes",
"favorite_teams",
"first_name",
"gender",
"hometown",
"inspirational_people",
"installed",
"install_type",
"is_verified",
"languages",
"last_name",
"link",
"locale",
"location",
"meeting_for",
"middle_name",
"name",
"name_format",
"political",
"quotes",
"payment_pricepoints",
"relationship_status",
"religion",
"security_settings",
"significant_other",
"sports",
"test_group",
"timezone",
"third_party_id",
"updated_time",
"verified",
"video_upload_limits",
"viewer_can_send_gift",
"website",
"work"
}


참고 링크

https://stackoverflow.com/questions/39890885/error-message-is-12-bio-field-is-deprecated-for-versions-v2-8-and-higher

1. 동적으로 HTML Form을 생성

<html> 
<head>
</head>
<body>
<script>
generatorForm();

function generatorForm() {
var formEle = document.createElement("form");
formEle.setAttribute('method',"post");
formEle.setAttribute('action',"/action");

var tmpInput = document.createElement("input"); //input element, text
tmpInput.setAttribute('type',"text");
tmpInput.setAttribute('name',"tempValue");

formEle.appendChild(tmpInput);

var submitBtn = document.createElement("input"); //input element, Submit button
submitBtn.setAttribute('type',"submit");
submitBtn.setAttribute('value',"Submit BTN");

formEle.appendChild(submitBtn);

document.body.appendChild(formEle);
}
</script>
</body>
</html>


2. 문제 발생

 1) 에러

document.body.appendChild(formEle);

  - 위 소스를 추가 안할 경우 제대로 동작을 안함. 꼭 추가해야함.


Pivotal 이 서울에서 처음 진행하는 행사라고 함.



1. 개발에 집중하기
- 개발자가 개발에 집중 할 수 있어야한다.
- 운영환경에서 손쉽게 모니터링을 할 수 있어야한다. (Spring actuator)
- 배포는 편하게 잘~ 되어야한다.



-> 위 내용을 듣는동안 공감이 많이 갔다. 업무를 진행하면서 세팅한 프로젝트들은 위 내용들을 잘 수행하였는가? 부족한 부분이 어디였을까?를 고민했다. 그러다보니 어느정도는 구축해서 운영하는 듯 했다. 모니터링에 필요한 apm을 운영했고, jenkins를 사용하여 보다 편하게 배포를 진행했던 것 같다. 단, 더 잘 할 수 있었을 것 같은 부분들이 있어서 그 부분들을 좀 더 고민해봐야겠다



2. Netflix
- netflix oss
- Zuul, Eureka.....

-> 자주 들었던 이야기지만, 역시나 대단한 회사다. 내부적으로 만든 프로그램을 오픈소스로 공개하고, 좋은 경험을 공개하는 이 회사가 참 대단하다고 한번 더 느꼈다.


3.PCF(Pivotal Cloud Foundry)
- UI가 잘 되어있다.
- 아~ 있으면 좋겠다~ 하는 기능이 많다! (Spring boot admin과 같이 필요한 기능이 잘 되어 있는 듯 하다.)

-> 나중에 시간을 내서 사용해봐야겠다. 사용해봐야 추후 만들 때 도움이 되니까!!



* 사진은 정말 대충 찍었습니다.

'개인 > 단상' 카테고리의 다른 글

2018-08-21  (0) 00:07:00
2018-06-05 : Cloud Native Day in seoul  (0) 2018.06.05
2018-05-01  (0) 2018.05.01
Aws re:invent 2017! 후기  (0) 2017.12.02
2016-10-01  (0) 2016.10.01
2016-09-08  (0) 2016.09.08

1. Content Type

 - 파일명에 따라 ContentType을 설정한다.


ObjectMetadata objMeta = new ObjectMetadata();
objMeta.setContentType(Mimetypes.getInstance().getMimetype(saveFileNm));


2. Content Length

 - byte length를 추가한다.

ObjectMetadata objMeta = new ObjectMetadata();

byte[] bytes = IOUtils.toByteArray(targetIS);
objMeta.setContentLength(bytes.length);

ByteArrayInputStream byteArrayIs = new ByteArrayInputStream(bytes);

PutObjectRequest putObjReq = new PutObjectRequest(bucketName, key, byteArrayIs, objMeta);
s3client.putObject(putObjReq);

 - 해당 소스처리를 안할 경우 아래와 같은 warning 메시지가 뜬다.

[WARN ] c.a.services.s3.AmazonS3Client:1714 - No content length specified for stream data.  Stream contents will be buffered in memory and could result in out of memory errors.


1. 약수

 -  어떤 수를 나누어 떨어지게 하는 수.


2. Python 소스

if __name__ == "__main__":
number = int(input("숫자를 입력해주세요. : "))

divisors = []

for i in range(1, number + 1):
if number % i == 0:
divisors.append(i)

print(divisors)


'프로그래밍 > Python' 카테고리의 다른 글

10진수 n진수로 변환하기.  (0) 2018.07.30
[Basic] 약수  (0) 2018.06.04

해당 내용은 https://github.com/java-json-tools/json-schema-validator 를 사용하면서 적은 내용입니다.


1. NodeType

{.... "type": "string or array...."}


 - NodeType 목록

 ARRAY("array"),

 BOOLEAN("boolean"),

 INTEGER("integer"),

 NULL("null"),

 NUMBER("number"),

 OBJECT("object"),

 STRING("string")


 - 해당 Library에서는 "com.github.fge.jackson.NodeType"를 참고하시면 편하게 코딩할 수 있다.


2. minItems, maxItems

{.... "minItems":0, "maxItems":2....}


 - 아이템 수롤 지정할 수 있다.

 - type이 array일 경우 해당 옵션으로 아이템 수를 체크할 수 있다.


1. Json 파일 import 하기.

<script>
import externalJsonFile from './externalJsonFile.json'
export default{
data(){
return{
jsonFile: externalJsonFile
}
}
}
</script>


2. 가져다 쓰기

<ul v-for="tmp in jsonFile">
<li>{{tmp}}</li>
</ul>


AWS, java, S3

1. 기존 메소드


AmazonS3 s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));

 - 해당 메소드 수석을 참고하면 아래와 같다.

/**
* Constructs a new Amazon S3 client using the specified AWS credentials to
* access Amazon S3.
*
* @param awsCredentials
* The AWS credentials to use when making requests to Amazon S3
* with this client.
*
* @see AmazonS3Client#AmazonS3Client()
* @see AmazonS3Client#AmazonS3Client(AWSCredentials, ClientConfiguration)
* @deprecated use {@link AmazonS3ClientBuilder#withCredentials(AWSCredentialsProvider)}
*/
@Deprecated
public AmazonS3Client(AWSCredentials awsCredentials) {
this(awsCredentials, configFactory.getConfig());
}


2. 변경된 메소드

BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();


 - 리전을 추가할 경우

.withRegion(Regions.valueOf("AP_NORTHEAST_2"))


'프로그래밍 > JAVA' 카테고리의 다른 글

AWS s3 upload source Tip  (0) 2018.06.05
json schema validator 사용하기 - 02  (0) 2018.05.23
AmazonS3Client, deprecated!!!  (0) 2018.05.21
json schema validator 사용하기 - 01  (0) 2018.04.18
시스템 종료 후 File 삭제  (0) 2018.04.12
Java에서 Tuple 사용하기.  (0) 2018.04.11

1. safari 11.1 update

 - 기존 Safari (mac or ios)에서는 정상적으로 동작하던 ajax가 safari 11.1 버전 업데이트를 진행한 후로 오류가 발생함.

 - ajax 내 error 메시지가 다음과 같다

Failed to load resource: The operation couldn’t be completed. Protocol error

 - Chrome이나 Firefox 등 최신버전에서는 문제가 없었다.


2. 원인 

 - Webkit 버그!!!! (Webkit 빌드 r230963)

 - input[type=file] 또는 formData 내에 file 

<input type="file"/>

 - ajax 내 data에 빈 파일 필드가 전송되면 발생함.

 - (전 IOS 11.3에서 발생하여 수정 했습니다.)


3. 해결책

 - https://trac.webkit.org/changeset/230963/webkit : 수정됨.

 - 임시 해결책


frmData.delete("file"); //var frmData = new FormData() 를 사용할 경우

or

$("input[type=file]").each(function () {
var tmpValue = $(this).val();
if (tmpValue === undefined || tmpValue === "") {
$(this).remove();
}
});


+ Recent posts