진짜 짱

 

 

아래 명령어 중 하나를 사용하면 된다.

 

# /etc/init.d/nginx restart

 

# /etc/init.d/nginx reload

 

# service nginx restart

 

# service nginx reload

 

손으로 당기면 생기는 저거...

플러터로 작성한 어플리케이션을 안드로이드 디바이스에서 실행하면 위처럼 스크롤 기능이 있는 위젯에서 터치에 의해 당겨지는 느낌의 effect를 볼 수 있다.

예전부터 너무 지우고 싶었던 효과라 stackoverflow에서 찾다가 발견해서 기록해둔다.

 

glow effect를 제거하는 Behavior을 생성한다. (ScrollBehavior 상속)

api.flutter.dev/flutter/widgets/ScrollBehavior-class.html

 

ScrollBehavior class - widgets library - Dart API

Describes how Scrollable widgets should behave. Used by ScrollConfiguration to configure the Scrollable widgets in a subtree. Annotations Constructors ScrollBehavior() Creates a description of how Scrollable widgets should behave. const Properties hashCode

api.flutter.dev

class MyBehavior extends ScrollBehavior {
  @override
  Widget buildViewportChrome(
      BuildContext context, Widget child, AxisDirection axisDirection) {
    return child;
  }
}

 

앱 전체에 적용할 경우 최상단 MaterialApp에 아래와 같이 적용시킨다.

MaterialApp(
  builder: (context, child) {
    return ScrollConfiguration(
      behavior: MyBehavior(),
      child: child,
    );
  },
  home: new MyHomePage(),
);

 

특정 ListView의 적용할 경우,

ScrollConfiguration(
  behavior: MyBehavior(),
  child: ListView(
    ...
  ),
)

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

Execution failed for task ':app:mergeDexDebug'  (0) 2021.02.20
Flutter SNS Login Package  (0) 2020.08.24
Shared Preferences  (1) 2020.04.28
Cupertino ActionSheet  (0) 2020.04.05
image shake animation  (0) 2020.04.04

1. Sequelize에서 boolean형 컬럼 토글 시키기(toggle)

model.update({ name: Sequelize.literal('NOT name') }, { where: { id } });

 

 

2. Mysql group by 에러

select 문 실행시 group by 관련 에러가 발생하였다.

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'returntr_prod.tbl_customer_pod_uploads.id' which is not functionally dependent on columns in GROUP BY clause; this is
incompatible with sql_mode=only_full_group_by

워크벤치로 db 서버에 접속하여 아래와 같이 설정해 주었더니 해결 되었다.

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

 

3. Mysql 여러개의 레코드 update, delete할 때 안전모드 해제

mysql에서 한 개 이상의 레코드를 업데이트 하려는데 아래와 같은 에러가 발생하였다.

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

테이블에서 key를 이용한 (where id = 23 같이) update와 delete만을 허용하도록 되어 있는데, 그 보다 큰 범위에 적용하는 sql의 경우 workbench에서 경고를 주는 것이다.

 

아래와 같은 sql로 환경변수를 변경해 준다. (safe 모드 해제)

set sql_safe_updates=0;

 

 

4. 파이어 베이스 로그인 오류 Error: Command requires authentication, please run firebase login

오류에서 알 수 있듯, 권한이 부여되지 않았기에 로그인을 해주면 된다.

콘솔에 아래 명령어를 입력해 로그인을 해준다.

firebase login
Error: Cannot run login in non-interactive mode. See login:ci to generate a token for use in non-interactive environments.

라는 에러가 뜬다면

firebase login --interactive

햄버거 먹고 싶다

 

지난 10월 한달 동안 프로젝트 내에서 백엔드 개발을 담당했는데, 아직 개발 단계라 SSL을 적용하지 않은 http 통신으로 rest api를 구축하였다. 내 테스트용 디바이스는 출시한지 꽤 날짜가 지난 넥서스였는데, api와 통신에 문제가 없어서 괜찮은 줄 알았다...

 

 

그런데 다른 휴대폰에서 동작이 안되서 원인이 뭘까하고 찾아보다가(욕을 많이 먹었다)

안드로이드에서는 기본적으로 HTTP 접근을 허용하지 않는단 것을 알게 되었다. 그래서 기록해둔다.

 

안드로이드 Pie(API28)부터는 cleartext HTTP를 비활성화한다.

그러므로 API28 버전 이후부터는 강화된 네트워크 보안 정책으로 인해

Http에 접근하려면 cleartext HTTP를 활성화 시켜야 한다.

 

AndroidManifest.xml 파일 내부에
application 태그 내부에 android:usesCleartextTraffic="true" 로 설정을 추가해주면 된다.

 

Amazon Simple Notification Service

 

 

AWS에서 문자보내기를 진행할 것이다 IAM에서 아래의 3개의 권한만 가능한 그룹을 만든다.

이는 AWS 내에서 SNS서비스를 이용할 수 있는 최소한의 권한만 주어 보안을 향상시킴에 있다.

그룹의 이름은 알기 쉽게 SNSgroup으로 저장한다.

 

 

 

IAM - 사용자 - 사용자 추가를 눌러 사용자를 만든다. 프로그래밍 방식 엑세스는 필수로 체크한다.

우리의 node.js 코드에서 sns_user 계정으로 aws sms에 접근할 것이기 때문이다.

 

 

 

다음으로 권한 설정에서 그룹에 사용자 추가 - 해당 사용자에게 SNS만 사용할 수 있도록 위에서 만들었던 SNSgroup 그룹을 추가해 권한을 설정한다. 

태그 추가사항은 넘어간다

 

이후, 다음과 같이 .csv파일 다운로드, 액세스 키 ID와 비밀 액세스 키 등이 보일 것이다.

 

여기서 액세스 키 ID와 비밀 엑세스 키를 메모장에 옮겨 둔다. 있다가 쓸꺼기에

 

 

AWS 콘솔에서 SNS 서비스를 검색한다.

 

 

이때 리전을 서비스가 안되는 서울로 하면 안되고 sns 서비스가 가능한 지역으로 설정해주어야 한다.

가까운 일본 도쿄(ap-norteast-1)를 선택하였다.

 

 

 

'개요로 시작'을 누른다.

 

 

왼쪽의 문자 메시지(SMS)가 보일 것이다.

아래와 같이 기본 설정을 편집해 준다.

기본 메시지 유형은 트랜잭션

우선 개발을 하면서 테스트용으로 할 것이기 때문에 월별 계정 지출 한도를 1달러로 설정해준다.

 

 

이제 기본적인 설정은 다 끝이났다.

코드를 작성해보자.

 

위에서 도쿄를 리전으로 설정했으므로 도쿄에 해당하는 ap-northeast-1를 region에 설정한다.

010-1234-1234라는 번호롤 문자를 보내려면 아래와 같이 한국코드인 (+82)를 앞에 붙혀

821012341234로 넣어준다.

 

// Load the AWS SDK for Node.js
const AWS = require('aws-sdk');
// Set region
AWS.config.update({region: 'ap-northeast-1'}); //도쿄 리전을 사용함

// Create publish parameters
var params = {
  Message: '문자를 보내봅니다^^ 잘지내죠?', /* required */
  PhoneNumber: '821012341234',
};

// Create promise and SNS service object
var publishTextPromise = new AWS.SNS({apiVersion: '2010-03-31'}).publish(params).promise();

// Handle promise's fulfilled/rejected states
publishTextPromise.then(
  function(data) {
    console.log("MessageID is " + data.MessageId);
  }).catch(
    function(err) {
    console.error(err, err.stack);
  });

 

이대로 바로 실행해보도록 하자!

...

 

 

 

 

아마 안될 것이다

sns 서비스에 접근할 수 있는 권한이 없기 때문이다.

 

위에서 sns서비스를 이용할 수 있게 sns_user 계정을 만들어 두었고 해당 계정의 액세스 ID와 비밀 키가 있을 것이다.

 

리눅스 기준으로 다음과 같이 명령어를 실행한다.

 

cd ~
mkdir .aws
vim ~/.aws/credentials

vim 편집기를 열어 아래와 같이 작성한다.

 

[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>

 

ps. 좀 더 보안에 신경을 쓰기 위해서 key를 EC2에 저장하지 말고 IAM Roles를 적용하는 것을 매우 추천한다.

+ Recent posts