이 가이드는 솔라나 지갑을 이미 보유한 상태에서 진행함

1. solona CLI를 설치한다. 아직까지는 연구단계임에따라 윈도우 환경 전용으로 설치하였는데 생각보다 잘 동작한다

2. 다음 명령어에 따라 내 지갑에 연결된 토큰 account 정보를 확인해볼수 있다.

C:\WINDOWS\system32>spl-token accounts
Token                                         Balance
---------------------------------------------------------------
83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ  90
85iewBw7g5xzTBPsmEhRT6UyVHjZKkH2QzxR6Hpxp4AM  10  (Aux-1*)
HuJCd48ycmqS5ADDnprxzbPoTAH2FQwYY92SdFC4tZgs  10  (Aux-1*)

참고로 위 과정 중 특정위치에 있는 계정정보파일을 읽을 수 없다면 에러가 뜰것이다. solona config 명령어를 통해 계정정보가 어디에 저장돼는지 확인 할 수 있으며 계정정보가 없다면 자신의 지갑 개인키를 배열(엄밀히 따지자면 json)의 형태로 저장해주면 된다. (ex. [13, 103, 34, 534 ...] 이런 형태로 저장된다. 이 값은 sollet.io에서 접속한 뒤 자신의 지갑에서 export를 하면 해당 파일을 얻을 수 있다.. 직접 이렇게 변환하는 방법도 알고싶은데 어디에서인지 아직 알 수 없음;

3. 토큰을 새로 생성한다.

intput

spl-token create-token

output

Creating token 83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ

Signature: 4ELSGXv7Eh6sFnzcM7XvVLmZUZrWbCsF7DoKYpj14qmMzohh9b79AqTXnUYTaLKUuFQLASBHrPMKhEbrM7h8cjMr

4. 이제 생성한 토큰을 집어넣을 token account를 만들어준다. 왜이렇게하는건지는 아직 이해하지 못하겠으나... 본 지갑에서 서브형태로(?) 종속된 account를 만들어서 거기에 방금 3에서 생성한 토큰을 넣어줄것이다.

intput

spl-token create-account 83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ

output

Creating account 3mMDq1JaT3jRWyJkK7tZuy9E9jJFCey83Kj2WK6Lk1Ei

Signature: 42Sa5eK9dMEQyvD9GMHuKxXf55WLZ7tfjabUKDhNoZRAxj9MsnN7omriWMEHXLea3aYpjZ862qocRLVikvkHkyfy

5. 새로만든 account를 확인해보자

solana balance 3mMDq1JaT3jRWyJkK7tZuy9E9jJFCey83Kj2WK6Lk1Ei

6. 토큰을 다음과 같은 형태로 민트한다

spl-token mint tokenAddress mintAmount recipientAddress

예시는 아래와 같다

spl-token mint 83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ(토큰) 100(발행량) 3mMDq1JaT3jRWyJkK7tZuy9E9jJFCey83Kj2WK6Lk1Ei(토큰account)

7. 이제 다음과 같이 발행된 토큰을 확인해 볼 수 있다.

spl-token accounts

Token Balance

------------------------------------------------------------

83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ 1000000

8. 발행한 토큰을 다른 지갑으로 전송해본다

spl-token transfer --fund-recipient tokenAddress transferAmount recipientAddres

아래는 예시

input

spl-token transfer 83htTo1jczLTMRBLDjmc94bx7Gz3M3FrpJW2QtVzUZRJ 30 vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg

output

Transfer 50 tokens Sender: 7UX2i7SucgLMQcfZ75s3VXmZZY4YRUyJN9X1RgfMoDUi Recipient: vines1vzrYbzLMRdu58ou5XTby4qAqVRLmqo36NKPTg Recipient associated token account: F59618aQB8r6asXeMcB9jWuY6NEx1VduT9yFo1GTi1ks Signature: 5a3qbvoJQnTAxGPHCugibZTbSu7xuTgkxvF4EJupRjRXGgZZrnWFmKzfEzcqKF2ogCaF4QKVbAtuFx7xGwrDUcGd

 

 

실수로 merge를 하였을 경우 다음과 같이.. reset을 해버리자

git reset --merge ORIG_HEAD

위 명령어를 사용하면 원격지와의 head와 로컬의 head가 상이하여 push시도시 에러가 발생한다.

git push -f origin master

-f (force)를 사용하여 강제로 push해야한다.

        axios.get('/api/test')
          .then(function(response){
            this.list = [];
           }); 

이렇게 짜면 vue의 데이터 객체 list의 내용을 비우라는 것으로 착각하기 쉽지만...

이렇게 했을때 this는 vue의 this가 아니다... 이 상황에서의 this는 axios를 가리키는 것이다.

따라서 클로저 형태로 접근해야 하는 번거로움이 생긴다..

제일 간단한 방법은

        var vm = this;

        axios.get('/api/test') 
          .then(function(response){ 
            vm.list = []; 
           });  

이렇게 axios 바깥에서 this를 별도 변수에 넣어서 넘겨쓰는것.

php 설정상의 문제인줄 알고 한참을 헤맸으나

seLinux상의 문제임을 확인하였다.

아래 명령어를 통해 네트워크 엑세스를 허용해주면 된다

setsebool -P httpd_can_network_connect 1

요즘 만들고 있는 사이드 프로젝트에서 필요한 API를 찾다가 MAP API를 간략하게나마 정리하게 되었습니다. 너프하게 찾은 자료지만 쉽게 보시기엔 편할거에요 :)

 

NAVER : MAP API (1day, 200000 call)

KAKAO : MAP API (1day, 300000 call, dev guide is perfect)

  • KAKAO MAP API는 상당히 여러가지 기능과 인터페이스를 제공한다. 심지어 30만콜이 무료이며 가이드가 상당히 잘 짜여져있다.
  • http://apis.map.kakao.com/web/guide/

Google : MAP API (payment required.. : 200,000won credit free when creating an account.)

NAVER : local API (1day, 25000 call)

  • 이건 맵 API가 아니라 Local 검색 API이다. 서비스를 만들 때 특정 매장 등과 같은 정보를 검색 할 수 있는 기능을 만들어야 하는데 이러한 상황에서 쓰면 유용하다 1일 25000콜 무료이다.
  • https://developers.naver.com/docs/search/local/

 

 

결론 : 저는 검색의 경우 NAVER API(한국 서비스를 만들거라면 아무래도 네이버가 제일 나은 플랫폼이라고 생각해요), 여기서 검색한 결과를 지도에 뿌려주는 것은 KAKAO API를 이용하려고 합니다.

'Develop Issue > Open Source, API' 카테고리의 다른 글

Google OTP 개발하기  (0) 2024.08.06
git merge 취소하기  (2) 2020.06.01
날짜별 지역별 날씨 API 제공 사이트 총정리  (2) 2016.01.19

AWS Free-tier는 이전에도 사용경험이 있고 상세한 설치 설명도 구글검색을 통해서 확인해 볼 수 있지만
이번 기회를 통해서 언제든 신속하게 환경구성을 할 수 있도록 저만의 가이드를 작성해보고자 합니다.

우선 가상서버 EC2를 구성해야하는데요, 어떤 OS를 선택할지에 대해서도 고민이 필요했습니다.
일반적으로 AMI와 Redhat, Unbuntu.. 등등 여러가지 시스템환경을 지원하는데요
이번 프로젝트의 경우 Redhat을 이용하여 환경을 구축하였습니다.
AMI는 AWS에서 지원하는 리눅스지만, 안정성 면에 있어서는 타 리눅스 계열과 비교적 취약하다는 의견들이 많이 보입니다.
Ubuntu는 제가 학생이었을 때 여러차례 다루어본 바 있고 이미 너무 유명한 제품이지만 상용에서 쓰는 것을 그리 많이 보진 못하였습니다.
엔터프라이즈급 서비스에서 많이 쓰는 리눅스 계열은 Redhat 데비안 쪽을 많이 이용한다고 하네요.
자세한 내용은 아래 링크를 확인해주세요.
https://serverfault.com/questions/275736/amazon-linux-vs-ubuntu-for-amazon-ec2
https://okky.kr/article/395579?note=1245081

Free-tier의 서버 스펙을 간략히 설명하자면 다음과 같습니다.
 - EC2 : 월 750시간의 Linux, RHEL 사용
 - CPU 1 core
 - Memory 1GiB
 - EBS : 30GB

EC2를 Free-tier에서 선택가능한 옵션으로 생성해줍니다.
EC2는 참고로 재부팅할때마다 공인IP가 변경되기 때문에
Elastic IP로 변경해주어야 합니다. Free-tier는 1개 EC2에 연결하는 것이 무료 입니다.
참고적으로 연결해둔 상태로 EC2를 끄고있으면 과금이 된다고하네요.(공인 IP는 한정적인 자원이므로 이러한 정책이 있다고 하니 주의가 필요합니다)
Elastic IP를 생성하고 아까 생성한 EC2에 릴리즈해주면, Elastic IP로 EC2 네트워크에 접속할 수 있습니다.

앞서 요약한것과 같이 Free-tier에서는 EBS가 30GB입니다. EBS는 가상 스토리지로써
하드디스크와 같은 역할을 합니다.
EC2의 SSD는 웹서버로 이용하고, EBS를 유저들의 데이터를 입출력하는 장치로 활용하면 좋을 것 같습니다.
그런데 기본적으로 맨처음 EC2를 만들면서 자동생성된 EBS는 10GB밖에 안됩니다.. 첨부터 30GB로 해주지 ㅡㅡ;;
저는 이걸 AWS콘솔에서 30GB로 변경해주었습니다.
하지만 실서버에서는 이미 파티션을 10GB로 잡고 있기때문에 직접 변경해주는 작업이 필요했습니다.
상세한 내용은 다음을 참고해주세요.
https://sfixer.tistory.com/entry/%EB%94%94%EC%8A%A4%ED%81%AC-%EB%B3%BC%EB%A5%A8-%EC%82%AC%EC%9D%B4%EC%A6%88-%EC%A6%9D%EA%B0%80%EC%8B%9C%ED%82%A4%EA%B8%B0
https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

이렇게 기본적인 서버 인프라는 갖추었으니 LAMP 환경을 구축하고 마무리 지었습니다.
LAMP에 대한 설치 프로세스는 위키메뉴의 Reference에서 관련된 문서들을 확인 할 수 있습니다.

1. 우선 생성일시를 임의로 조작한 파일을 생성한다. 두개를 생성해야 한다. 조회하고자하는 기간의 시작일시와 끝일시로...

# touch -t 201906031200 start.txt 

# touch -t 201906031500 end.txt 

위의 경우 19년 6월 3일 12시부터 15시까지의 추가, 수정된 파일을 찾기 위해 임시 파일을 생성한 것이다. -t 옵션을 주고 입력한 시간대로 생성일시가 조작되어 생성된다.

 

2. 검색하기

# find /tmp -type f -newer start.txt ! -newer end.txt -ls

아까 생성했던 임의의 파일 두개를 저렇게 옵션으로 넣어준다. -newer는 입력된 파일을 기준으로 이후에 생성된 것들을 찾아주는 것인데, !(부정)을 활용하여 이전에 생성했던 것까지 추가해주면 특정 기간동안의 파일을 검색 할 수 있게 된다.

'Develop Issue > Linux' 카테고리의 다른 글

AWS Free-tier 웹서버 빠르게 설치하기  (466) 2019.09.23

mysql에서 비밀번호를 변경할 때 일반적으로 쓰는 명령어


update user set password=password('q1w2e3') where user='root';


근데 이게


ERROR 1054 (42S22): Unknown column 'password' in 'field list'


에러가 발생할때가 있다..

이때는 password 대신 authentication_string 필드가 존재한다.

따라서 


update user set authentication_string=password('q1w2e3') where user='root';

로 시도해본다.

1. 3306이 접근 가능한 상태인지 확인

첫번째로 우선 아래 링크를 따라 확인해본다. 제일 기본적인 확인 절차..

https://zetawiki.com/wiki/MySQL_ERROR_1045_%EC%A0%91%EA%B7%BC_%EA%B1%B0%EB%B6%80

bind-address를 주석해도 안된다면

bind-address=0.0.0.0

으로 설정한다.

그리고 재시작

service mysql restart


2. 접속하려는 계정이 외부접속이 가능한 권한을 가졌는지에 대한 문제 확인

위 과정을 통해 접속은 돼는데,, 접근이 거부돼어 실제로는 접속이 튕기는 현상이 발생했다.

이때 1의 과정에서 조회했던 테이블을 확인해보면 같은 계정이더라도 Host 필드가 다른 것을 확인할 수 있다..

mysql> SELECT host, user, password FROM mysql.user WHERE user='root';
+-----------+------+-------------------------------------------+
| Host      | User | Password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *64B2393C4607E57C549B41537134BC7C3314164E |
| myserver1 | root | *64B2393C4607E57C549B41537134BC7C3314164E |
| %         | root | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+-----------+------+-------------------------------------------+
1 rows in set (0.00 sec)

localhost는 당연히 자기자신의 호스트에서 접속하는 것을 의미하며 %는 모든 외부 호스트에 대해 접근할수있도록 하는 설정이다.

따라서 만일, % 또는 본인이 접속시도 하고자 하는 곳의 호스트가 위에처럼 등록되어있지 않다면 접근 거부 현상이 일어난다.


CREATE USER 'testID'@'%' IDENTIFIED BY 'mytestpw' PASSWORD EXPIRE NEVER;

GRANT ALL PRIVILEGES ON TESTDB.* TO 'testID'@'%';

flush privileges;


이렇게 해주면 자동으로 저 필드에 %가 추가된다.

flush privileges;를 해주는 것을 잊지말자

+ Recent posts