반응형

사용자 환경 : macOS Sierra 10.12.6Python 3.6.4, PyCharm 2017.3.4 build PC-173.4674.37.






먼저 파이썬이 설치되어 있는지 터미널을 열어 확인해보자.



$> python --version
Python 2.7.10


그럼 위와 같이 Python 2.7.10이라는 문구가 나타날 것이다. (버전이 다를 수 있고, 설치가 안되어 있을 수도 있다)



앞으로 파이썬을 배우면서 3 버전대를 사용할 것이기 때문에 파이썬 3가 설치되어 있는지 다시 한 번 터미널에서 확인해보자.



$> python3 --version
-bash: python3: command not found


위와 같이 -bash: python3: command not found 이라고 나오면 설치가 안되어 있는 것이다.



이제 https://www.python.org/downloads/mac-osx/ 에 접속하여 파이썬 3를 설치해보자.





빨간색으로 밑줄 친 부분을 클릭해 페이지를 이동한 후,





역시 빨간색으로 밑줄 친 부분을 클릭해 파일을 다운받고 설치한다.



설치는 어려운 부분이 없으니 생략하도록 하고 설치 후 터미널을 열어 제대로 설치되었는지 확인해보자.



$> python3 --version
Python 3.6.4


위와 같이 잘 나온다면 성공적으로 설치한 것이다.






반응형
반응형

사용자 환경 : macOS Sierra 10.12.65.7.20 MySQL Community Server (GPL)






데이터베이스를 구축하다보면 테이블 이름을 잘 못 만들었거나, 엉뚱한 데이터베이스에 만드는 경우가 가끔 생긴다.



본인은 쿼리문을 잘 몰랐을 때 이런 상황에서 다시 만들었던 기억이 있다... ):



이와 같은 실수를 하는 사람이 없길 바라며 이번 글을 포스팅하게 되었다.





1. 테이블 이름 변경 및 이동

mysql> alter table 변경전테이블이름 rename 변경할테이블이름;

이와 같은 쿼리문을 이용하여 이동 또한 가능하다.



예를 들어 A 데이터베이스에 있는 test라는 테이블을 B 데이터베이스로 이동시키고 싶다면 다음과 같이 작성할 수 있다.

mysql> alter table A.test rename B.test;





2. 테이블 복사

mysql> create table 생성될테이블 like 기존테이블;

다른 데이터베이스에 있는 테이블 또한 복사가 가능하다.



예를 들어 A 데이터베이스에 있는 test 테이블을 C 데이터베이스에 복사하려고 한다면 다음과 같이 작성할 수 있다.

mysql> create tabke C.test like A.test;


insert 구문을 이용한 방법도 있다.

mysql> insert into 입력할테이블 select * from 복사될테이블;


마찬가지로 A 데이터베이스에 있는 test 테이블을 C 데이터베이스에 복사하려고 한다면 다음과 같이 작성할 수 있다.

mysql> insert into C.test select * from A.test;






반응형
반응형

사용자 환경 : macOS Sierra 10.12.6Android Studio 3.0.1 {

  Build #AI-171.4443003, built on November 10, 2017

  JRE: 1.8.0_152-release-915-b08 x86_64

  JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

  }






현재 로그인 시스템이 구현되어 있는 대부분의 앱에는 자동 로그인 기능이 구현되어 있다.



자동 로그인 기능이 구현되어 있지 않은 앱을 사용해본 경험이 있다면 이 기능을 사용함으로써 앱이 많은 편리함을 가져다 준다는 것을 알 수 있다.



이 기능을 구현하기 위해 우리는 SharedPreference API를 사용할 것이다.



1. 가장 먼저 정보를 저장하기 위한 메소드를 내장한 클래스를 구현한다.

import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;

public class SaveSharedPreference {

    static final String PREF_USER_NAME = "username";

    static SharedPreferences getSharedPreferences(Context ctx) {
        return PreferenceManager.getDefaultSharedPreferences(ctx);
    }

    // 계정 정보 저장
    public static void setUserName(Context ctx, String userName) {
        SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
        editor.putString(PREF_USER_NAME, userName);
        editor.commit();
    }

    // 저장된 정보 가져오기
    public static String getUserName(Context ctx) {
        return getSharedPreferences(ctx).getString(PREF_USER_NAME, "");
    }

    // 로그아웃
    public static void clearUserName(Context ctx) {
        SharedPreferences.Editor editor = getSharedPreferences(ctx).edit();
        editor.clear();
        editor.commit();
    }
}

line 7. key 값에 해당된다.


line 9~11. 모든 액티비티에서 인스턴스를 얻기 위한 메소드이다.


line 14~18. 로그인 시 자동 로그인 여부에 따라 호출 될 메소드이다. userName이 저장된다.


line 21~23. 현재 저장된 정보를 가져오기 위한 메소드이다.


line 26~30. 자동 로그인 해제 및 로그아웃 시 호출 될 메소드이다.





2. 자동 로그인 여부를 체크할 인증용 액티비티 생성.

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

public class FirstAuthActivity extends AppCompatActivity {

    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_auth);

        if(SaveSharedPreference.getUserName(FirstAuthActivity.this).length() == 0) {
            // call Login Activity
            intent = new Intent(FirstAuthActivity.this, LoginActivity.class);
            startActivity(intent);
            this.finish();
        } else {
            // Call Next Activity
            intent = new Intent(FirstAuthActivity.this, HomeActivity.class);
            intent.putExtra("STD_NUM", SaveSharedPreference.getUserName(this).toString());
            startActivity(intent);
            this.finish();
        }
    }
}

line 15~20. SharedPreference에 저장되어 있는 정보의 길이가 0일 경우, 즉 없을 경우 로그인 액티비트를 호출한다.


line 20~26. 나머지 경우, 즉 저장되어 있는 정보가 있을 경우 바로 로그인 다음 액티비티를 호출한다.





3. 자동 로그인 설정 시 사용할 코드

SaveSharedPreference.setUserName(LoginActivity.this, editId.getText().toString());

로그인 액티비티에서 자동 로그인 설정과 함께 로그인 시 EditText의 값을 SaveSharedPrefernce.setUserName(Context, String) 메소드를 통해 저장.

반응형
반응형

사용자 환경 : macOS Sierra 10.12.65.7.20 MySQL Community Server (GPL)





우선 root 패스워드를 잊어버려서는 안되지만 사람은 실수를 하기에..




1. 먼저 MySQL 데몬을 정지시킨다.

$> /usr/local/mysql/support-files/mysql.server stop





2. 패스워드를 생략하여 접속할 수 있는 안전 모드로 진입한다.

$> /usr/bin/mysqld_safe --skip-grant-tables &





3. MySQL에 비밀번호 없이 접속한다.

$> /usr/local/mysql/bin/mysql -uroot





4. 패스워드를 변경한다. (5.7버전을 기준으로 명령어가 다르니 자세히 보자)


5.7버전 미만

mysql> update mysql.user set password=password('패스워드') where user='root'; 
mysql> flush privileges;
mysql> quit

5.7버전 이상

mysql> update mysql.user set authentication_string =password('패스워드') where user='root'; 
mysql> flush privileges;
mysql> quit





5. MySQL 데몬을 재시작한다.

$> /usr/local/mysql/support-files/mysql.server restart





이제 접속해보면 문제 없이 진입 될 것이다.

반응형
반응형


사용자 환경 : macOS Sierra 10.12.65.7.20 MySQL Community Server (GPL)





MySQL에 접속을 시도하다 보면 다음과 같은 에러문을 쉽게 볼 수 있을 것이다.

$> /usr/local/mysql/bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
$> /usr/local/mysql/bin/mysql -uroot -p잘못된비밀번호
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
위에 두 에러의 차이점을 보자면, 마지막 단어인 using password: 부분이 각각 YES, NO로 되어있다.



그럼 두 에러를 하나씩 살펴보자.



$> /usr/local/mysql/bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
위 에러는 비밀번호를 입력하지 않았을 경우 나타는 에러이다.
-p 옵션을 사용하여 옳바른 비밀번호를 입력하면 된다.



$> /usr/local/mysql/bin/mysql -uroot -p잘못된비밀번호
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

위 에러는 -p 옵션을 사용하여 비밀번호를 입력했지만, 옳바르지 않은 비밀번호를 입력했을 경우 나타는 에러이다.

옳바른 비밀번호를 입력 시 다음과 같은 화면이 출력된다.

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


반응형

+ Recent posts