파즈의 삽질공간

예초, 벌초 플랫폼 서비스 양도합니다.

관심 있으신 분은 댓글에 메일 남겨주세요.

Posted by HyunGyu, LIM

최근에 oracle cloud를 사용하면서 aws s3와 호환되는 oracle object storage를 연동하였는데

oracle에서 공식적으로 제공하는 php 라이브러리가 없고 github에 있는 프로젝트도 애매해서 좀 찾아보고 직접 설정하였다.

어렵진 않지만 간단한 거에서 막히거나 한글문서가 없는 등 breakpoint가 많아 따로 글을 작성한다.

 

주요 목차와 진행 순서는 아래와 같다.

  1. oracle object storage 버킷 생성
  2. oracle cloude에서 접근 가능한 api key/secret 생성
  3. php 연동 library로 aws sdk 설치
  4. php 파일 업로드 테스트 (object storage endpoint 설정)

 

1. oracle object storage 버킷 생성

버킷 생성방법은 다른 문서도 많으므로 간단하게만 다룬다.

Console 메뉴 - 스토리지 - 오브젝트 스토리지 및 아카이브 스토리지 - 버킷

 

[버킷 생성]으로 새로운 버킷 추가
생성된 버킷 정보 확인

생성이 완료된 후 확인해야 할 정보는 리전과 버킷 이름, 네임스페이스 3가지이며. 스크린샷 기준으로는 다음과 같다.

  • 리전: ap-chuncheon-1
  • 버킷이름: mybucket
  • 네임스페이스: axkhzc3adisu

 

2. oracle cloude에서 접근 가능한 api key/secret 생성

console 화면이 바뀌어서인지 찾는데 정말 한참 걸렸다.

우측 상단의 프로필 아이콘 클릭 - 내 프로파일

내 계정이 아닌 다른 계정으로 생성이 필요하면 [ID 도메인 - 사용자]로 들어가서도 설정이 가능하다.

 

왼쪽 리소스 - 고객 암호 키
[암호 키 생성] 클릭 - 구분 가능한 이름 입력

키를 생성하면 비밀번호(secret)가 1회에 한해 표시된다.

생성 후에는 액세스 키도 확인한다.

생성이 완료되면 아래 형식과 같은 접근 KEY가 생긴다.

  • key: 50d79c0c177103093e782a13edd1537af39312ff
  • secret: NYtCkmnGPpCUbc3fRHCdDCPpaS/miiNBI/lAWKQVIH4=

주의사항: 주 계정에다가 접근 KEY를 생성하면 cloud의 다른 기능에도 접근이 가능할 수 있으므로 보안이 중요하다면 공식 매뉴얼을 확인하여 접근 제어를 반드시 해야 한다.

 

3. php 연동 library로 aws sdk 설치

프로젝트 루트에서 composer를 이용해 아래와 같이 모듈을 설치한다.

composer require aws/aws-sdk-php

혹은 aws 문서를 참고하여 php sdk 모듈을 로드한다.

 

4. php 파일 업로드 테스트 (object storage endpoint 설정)

<?php
// composer 기준 autoload
include 'vendor/autoload.php';

use \Aws\Exception\AwsException;
use \Aws\S3\S3Client;

// cloud 환경에 맞게 설정
$region = '[REGION]';
$key = '[ACCESS_KEY]';
$secret = '[ACCESS_SECRET]';
$namespace = '[STORAGE_NAMESPACE]';
$bucket = '[STORAGE_BUCKET]';

$s3Client = new S3Client([
    'region' => $region,
    'version'           => '2006-03-01',
    'credentials' => [
        'key' => $key,
        'secret' => $secret,
    ],
    'bucket_endpoint' => true,
    'endpoint' => "https://{$namespace}.compat.objectstorage.{$region}.oraclecloud.com/{$bucket}"
]);

$filePath = 'README.md'; // 업로드 대상 파일
$uploadPath = 'sample/' . $filePath; // 업로드할 서버 경로

try {
    $result = $s3Client->putObject(array(
        'Bucket' => $namespace,
        'Key'    => $uploadPath,
        'SourceFile'   => $filePath,
    ));
} catch (AwsException $e) {
    echo '업로드에 실패했습니다. - ' . $e->getMessage();
}

// 파일 URL 출력
echo $result['ObjectURL'] . PHP_EOL;

코드를 실행하면 업로드 수행 후 URL을 출력한다.

 

aws s3와 다른 점은 다음과 같다.

  1. S3Client 인스턴스 생성 시 bucket_endpoint와 endpoint 옵션을 전달
  2. putObject시 Bucket명으로 namespace을 전달

 

여러 번 테스트해가며 동작되는 endpoint와 namespace를 찾은 건데, 다른 방법이 있다면 댓글 부탁드립니다.

끝.

Posted by HyunGyu, LIM

이클립스 설치 후 Tomcat 설정하고 실행하니 다음과 같은 오류가 발생했다.



Error: Could not find or load main class org.apache.catalina.startup.Bootstrap
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap


구글링 해보니 JAVA_HOME을 설정해야 한다, tomcat의 startup.bat를 실행해봐라 등 알수 없는 방법들이 가득 ㅠ
해결하려고 삽질하다가 project의 maven update를 실행하고 나니 해결되었다.


Maven -> Update Project 실행


블로그 포스팅용으로 프로젝트 소스파일 초기화하여 다시 해보는데 이번엔 재현안됨........
오랜만에 만져봤지만서도 여전히 알수 없는 eclipse 환경 -_-;

Posted by HyunGyu, LIM

블루스퀘어에서 하는 레미제라블 뮤지컬을 보고 왔습니다.

예전에 영화하고 음악 들었때부터 "이건 꼭 봐야해!"라고 생각했던건데 실제로 보니까 역시 좋더군요!


크게 걸려있는 포스터, 3월 초까지만 볼 수 있습니다.


공사때문인지 티켓 예매를 2층에서 한다더군요.. 첫 이용이라 뭐가 다른지는 잘 모르겠습니다.


조기예매로 20% 할인 >_<


화려한 출연진, 훌륭한 연기들을 보여주셨는데 의외로 아역들도 꽤 잘하더군요


레미제라블 세트장이 미니어쳐로 전시되어 있습니다.


1막 끝나고 인터미션중에 찍은 사진, 멋진 하늘입니다!


FT아일랜드 이홍기의 공연이 있나 보더군요. 이른시간에도 꽤 북적되던데 외국인들도 상당 수 있었습니다.


멋진 장면들이 많아서 사진으로 남기고 싶었지만 공연중 촬영은 금지이니 찍지는 않았습니다.

살짝 봤을때도 빈자리가 없어보였고 3층인지라 잘 안보일까봐 걱정했었는데 의외로 나쁜편은 아니었습니다.

물론 망원경 없이는 얼굴 표정까지 보기는 힘들었지만요.

내용이나 잘 알고있는데로 흘러가서 재미나 궁금증은 덜하였지만 역시 눈앞에서 연기가 펼쳐지니 다르긴 다르더군요.. 바리케이트 씬의 특수효과와 장발장이 하수도를 지나는 장면, 특히 자베르가 낙하하는 장면이 인상깊었습니다.

평소 뮤지컬에 큰 취미가 있는건 아닌지라 나름 큰 지출을 했는데 돈이 아깝지 않을만큼 만족스러웠습니다!


Posted by HyunGyu, LIM


마트에서 1,500원에 팔길래 냉큼 사왔습니다.


조리법은 그대로 끓여서 섞기만 하면 된다고 되어있더군요.


안에 들어있는건 소스와 면 2개로 심플하게 구성되어 있습니다.


끓이는중.. 순간 뭔가 잘못되었단 생각이 들더군요; 설명서를 다시 읽어보았습니다.


네, 역시 면은 풀러서 익혀야 합니다 -_-;


그릇에 면을 넣고 소스를 부었습니다.

너무 심심하던데 지금 생각해보니 바질이라도 위에 살짝 뿌릴걸 그랬네요


보기에는 나쁘지 않았지만 맛은 좀 아쉬었습니다.

면은 괜찮았지만 소스가 아쉬웠는데 분말로 파는 크림스프와 비슷한.. 쪼금 나은 맛이더군요..-_-;


동생이 맛이 별로라 하여 큰 기대는 안했는데 딱 가격정도의 맛이었던거 같습니다.

또 새로운 세일 품목(?)이 있다면 리뷰해 보도록 하겠습니다~

Posted by HyunGyu, LIM

동생이 생일선물로 지갑과 벨트를 해줬습니다. 인터넷으로 같이 보고 고르긴 했지만 생각보다 괜찮고 맘에 들더군요! 완전 만족중입니다 ㅎㅎ


택배 안에는 요렇게 종이백과 상자가 들어있었습니다. 종이백은 접혀진채로 왔다는검 함정..


지갑과 벨트!


가죽 느낌이 제대로인게 보기 좋더군요 ㅎㅎ 사진으로는 검은색처럼 보이지만 어두운 갈색입니다.

오른쪽에 있는건 뭔가 했더니 열쇠고리 였습니다 -_-;


펼치면 요렇게 보여집니다. 왼쪽에 신분증 넣는 곳은 저부분만 뺄수 있게 되었어서 신기했습니다.


세트로 온 벨트! 구석에 켈빈클라인 로고가 눈에 띄네요.


파란색 벨트인데 소가죽으로 어떻게 저렇게 만들었는지는 모르겠지만 까칠까칠한게 만져보면 촉감이 정말 좋습니다.


이 벨트의 특징은 뒤집어서도 착용이 가능하다는건데 뒤쪽은 무난한 검정색으로 벨트 하나로 2가지 느낌을 줄수 있습니다.


이런식으로 잡아 당겨서 돌리면 됩니다.


캘빈 클라인이라면 속옷으로 유명한 브랜드라는데 지갑이나 벨트, 얼마전에 샀었던 외투까지 취급 안하는 품목이 없는거 같더군요-_-; 사실 저는 저번에 외투 살때 처음 들어본 브랜드입니다.

그래도 지갑이나 벨트를 젊은 느낌으로 잘 만들어서 딱 마음에 듭니다! 저도 누군가에게 선물한다면 이런거 해줄거 같네요 ㅋㅋ

Posted by HyunGyu, LIM

즐거운 크리스마스~인데 솔로인지라.. 솔로인분들끼리 모여서 파티를 했습니당 ㅋㅋ

모임 장소는 그나마 넓은 장소를 보유하신 분 집으로 확정! 처음 가봤는데 평소 갖고싶던 물건들이 산더미더군요.


모였으니 뭔가를 먹고 시작해야죠? 피자와 치킨입니다.



쉬림프 베이컨 피자정도 되겠군요 >_< 오랜만에 먹는 피자라 너무너무 맛있었습니다.



같이 온 사이드디쉬~ 매콤하고 살이 쫀득하니 괜찮았습니다.



먹고나서는 보드게임을 했는데.. 이거 한판에 3시간이 넘게 걸렸습니다.

모노폴리라는 게임인데 부루마블의 원조격으로 특이하게도 전자식 카드로 "삐삑" 거리면서 계산되더군요~



저당잡힌 내 부동산들.. 결국 제일 처음으로 파산해 버렸습니다 ㅠㅠ


이 외에도 레이싱 게임을 할 수 있는 레이싱 휠(컨트롤러)도 써봤는데 수동기어를 조작하는게 느낌 있더군요 ㅎㅎ 같이 모인분의 무지막지한(?) 운전 실력도 보았고.. 이래저래 재밌게 놀 수 있었습니다.




새벽까지 그렇게 놀다가 다음날에는 점심쯔음에 다른분과 합류하여 수제버거를 먹으러 갔습니다.


리얼(!) 등심 스테이크 버거의 위엄...



패티의 두께가 보이시는지요?



수제버거에 곁들인 하이네켄 생맥주 입니다.


이곳은 예전에 [서울 부암동 다움 - 분위기 좋은 카페와 수제버거]로도 리뷰했던 집인데 가볼때마다 느낀 점이 기복없이 괜찮더군요~ 버거만 먹으러 가기에는 가격이 좀 되지만 연인과 함께라면 추천할만한 곳입니다.




맛난 점심을 먹고는 사무실에서 일(!!)을 하다가 일찍 집으러 향했습니다.

모처럼 크리스마스인데 가족하고도 저녁을 함께 먹어야죠!


사장님이 사주신 와인.. 스파클링이라 하셨는데 탄산은 없더군요~



~흔한 크리스마스 상차림~



뭘 먹고싶냐고 하셔서 튀김을 먹고싶다고 했는데 화려하게 준비해 주셨습니다.



생일 케익겸 크리스마스 케익

원래 내일 먹자고 한걸 와인도 있겠다 오늘 먹자고 제가 생떼를 부렸습니당 ㅋ_ㅋ


끄앙! 딸기케익 너무 맛있었어요 ㅎㅎ



술안주가 부족해서 먹은 오리고기까지.. 맛있는 크리스마스를 보낼수 있었습니다 +_+


평소에는 운동만 하다가 달려서 그런지 연휴가 지나고 나서는 3~4kg나 쪘더군요.. 역시 이렇게 먹으면 죄다 몸무게로 돌아오는거 같습니다.

이번주에도 연휴라 어떻게 될지 모르겠는데 틈틈이 운동이라도 해서 몸 관리좀 해야할거 같습니다.


Posted by HyunGyu, LIM

다이소에서 이것저것 필요한거를 사러 갔다가 언제나 그렇듯이 예상못한 물건에 꽂혔습니다.

옆에서 어머니는 사지 말라고 말리셨지만.. 그래도 맘에 든거는 보였을때 사야죠!

예~~전에 다이소에서 봐둔걸 나중에 사러갔더니 안보여서 점원에게 물어보니 "저희는 매주 물건이 바뀌어서 없어질수도 있습니다. 왜 보셨을때 구매하지 않으셨는지요?" 라는 말에 느끼는바가 있었습니다 ㅋㅋ



밝은 황토색에 깔끔한 느낌으로 되어 있습니다.

봤을때 엄청 좋아보이는데 사진으로는 느낌이 영 안사네요 -_-; 뒷면에 깨알같이 적혀있는 made in china


 막걸리를 사다 한잔 따라보았습니다.


김치와 땅공, 고추튀김을 안주삼아 먹었은데 꿀맛이더군요!


시골에서 가져오신건데 매콤하니 바삭한게 맛있습니다.

하나 먹다보니 맛있어서 또 먹고.. 아쉬우니 또 먹고.. 튀긴 음식이니 살찌는거에 주의를 ㅠ


어머니가 해주신 새송이버섯 구이입니다.

비록 버터 구이는 아니지만 버섯 자체로도 안주로 잘 어울리더군요 ㅎㅎ

연말이라 지갑 상태가 정상이 아니지만 이런 소소한 지름으로 힐링을 하고 있습니다.

주말에는 이 잔에다 뭘 담아서 무엇과 함께 먹을지 고민좀 해봐야 겠습니다. 남자의 요리 포스팅 겸해서요 ㅋ

Posted by HyunGyu, LIM

토요일날 특별히 운동도 못하고 몸이 늘어지는 느낌이라 반석산 둘레길을 다녀 왔습니다.

반석산까지 1.5km -> 반석산 둘레길 한바퀴 4km -> 집까지 1.5km 해서 7km를 가볍게 뛰고 왔는데 1시간 20분정도 걸렸습니다.

저번에는 걸어서 둘레길 도는대만 한시간 넘게 걸렸던거에 비하면.. 꽤 빨리 다녀왔습니다.


저번 늦가을에 다녀왔을때하곤 완전 다른 분위기 입니다.

많이 다니는 길이 아니라 그런지 낙엽들이 치워지지 않은채로 쌓여있습니다.


그리 추운 날씨는 아닌거 같았는데 생태공원 호숫물은 얼었더군요


전망대, 동탄 2기 신도시가 보입니다.


오산천 전망대


노인공원 전인데 이름이 기억이 안나네요, 낙엽이 다 져서 그냥 쓸쓸한 느낌만 듭니다


문화회관 뒤쪽 언덕입니다. 바람개비는 예전 그대로더군요~


한바퀴 다 돌고 한 컷, 조심스래 내려간다고 하다 결국 살짝 삐끗하긴 했습니다 -_-;;


원래 2시간 정도를 예상하고 갔었는데 살살 띄웠는데도 꽤 빨리 다녀와서.. 종종 이런 코스로 돌아야 할거 같습니다.

문제라면 생각보다는 운동이 덜 됬다는 거겠네요 ㅋㅋ


Posted by HyunGyu, LIM

1년중 가장 밤이 길다는 동짓날! 하도 여기저기서 "팥죽"을 얘기하길라 갑자기 먹고싶어졌습니다~

사실 설날에는 떡국을, 대보름에는 부럼을 먹어줘야 하는것처럼 안먹으면 뭔가 섭하기도 합니다.

가까운 죽 체인점에서 사올까 하다 사람도 많을거 같고 양도 부담되기에 일단 편의점으로 향했습니다.


오호.. 진짜 팔줄은 몰랐어요. 가격은 3,100원!

편의점 직원도 "아! 그리고보니 오늘 동지네요" 라고 하시더군요 ㅋㅋ


편의점에서 데워온다고 뚜껑을 따서 가져왔는데 원래는 참치캔처럼 통조림 뚜껑이 달려있습니다.


팥도 있고 밤도 있고 달달하기까지.. 사실 제 입맛엔 너무 달더군요 -_-;



직장동료와 함께 나눠먹었는데 동짓날 팥죽을 챙겨먹는다면서 할아버지들 같다더군요.. OTL

원래 이런건 챙겨먹어야 하는거라구요 ㅠ

Posted by HyunGyu, LIM