반응형

1. 쉬고 싶어요

  • I want to have a break. // 잠깐 쉬고 싶어요.
  • Do you want to have a break? // 잠깐 쉬고 싶어요?

Tip. 비슷한 표현

  • have a break // 잠시 쉬다
  • take a break // 잠시 쉬다
  • get some rest // 잠시 쉬다
  • take a rest // 요즘은 잘 쓰이지 않는 표현이라고 해요.
반응형

반응형

1. (약속 잡고) 만나다.

  • Where shall we meet? // 우리 어디서 만날까요?
  • What time shall we meet? // 우리 몇시에 만날까요?

2. (누군가를 처음으로) 만나다

  • I met(meet 과거형) him in Busan // 나는 그를 부산에서 만났다.
  • I met(meet 과거형) her in Seoul // 나는 그녀를 서울에서 만났다.

3. (우연히) 만나다

  • I met ex-girlfriend at the supermarket. // 나는 옛날 여자친구를 수퍼마켓에서 만났다.
  • I ran into ex-girlfriend. // 우연히 옛날 여자친구를 만났다.

Tip.

  • 우연히 만나다 라는 표현
    • run into
  • 옛날이라는 표현은 단어 앞에 ex-를 붙인다.
    • ex-girlfriend // 옛날 여자친구
    • ex-boss // 옛날 직장 상사
    • ex-husband // 옛날 남편
    • ex-coworker // 옛날 직장 동료
반응형

반응형

1. 가지고 가다

  • I will take this shirt. // 이 셔츠로 할께요.(쇼핑)
  • I will take this ring. // 이 반지로 할께요.(쇼핑)
  • I will take this airpobs. // 이 에어팟으로 할께요.(쇼핑)
  • I will take it. // 이걸로 할께요.(쇼핑)

2. (사람을) 데리고 가다

  • I will take 영철 to School. // 영철이를 학교에 데려다 줄께
  • Can you take me to the airport, please? // 공항으로 데려다 주실 수 있으세요?(택시를 타고)

3. (교통수단, 도로 등) 타다

  • I will take a bus. // 나는 버스를 탈거야.
  • Where can I take a bus? // 어디서 버스를 탈 수 있나요?
반응형

반응형

블루스택 앱 플레이어로 개발 및 디버깅을 위해서 안드로이드 스튜디오에 연결하는 방법

 

블루스택(BlueStacks) 플레이어는 PC에서 안드로이드 모바일 게임을 즐길때 주로 사용했었는데요. 

개발자 테스트 용도로도 괜찮네요.  

 

안드로이드 스튜디오에서 디버깅하는 방법 공유합니다.

 

1. BlueStacks 공식 사이트에서 최신 버전을 다운로드하여 설치합니다.

#사이트: https://www.bluestacks.com/

 

2. 안드로이드 스튜디오를 실행하고 새로운 샘플 프로젝트를 하나 생성합니다.

 

3. 블루스택(BlueStacks) 실행 > 시스템 셋팅 > root 모드 활성화 > 시스템 재시작합니다.

 

4. 설정 > 설정 > ADB(Android 디버그 브릿지) 사용

 

5. adb.exe connect 127.0.0.1:5555 실행하여 블루스택(BlueStacks) 디바이스에 접속합니다.

 

9. adb.exe devices 실행 해보면 접속된 디바이스 목록에 표시되면 성공입니다.

 

10. 안드로이드 스튜디오에서 logcat을 확인 하시면 일반 디바이스 디버깅이 가능합니다. 

반응형

반응형

오랜만에 AWS EC2에 Python을 설치하는데 아래와 같은 에러가 발생한다.

 

$ pyenv install 3.6.9
Downloading Python-3.6.9.tar.xz...
-> https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tar.xz
Installing Python-3.6.9...

BUILD FAILED (Amazon Linux AMI 2018.03 using python-build 1.2.13-4-g6563b64d)

Inspect or clean up the working tree at /tmp/python-build.20190901070310.7044
Results logged to /tmp/python-build.20190901070310.7044.log

Last 10 log lines:
checking for --with-universal-archs... no
checking MACHDEP... linux
checking for --without-gcc... no
checking for --with-icc... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/tmp/python-build.20190901070310.7044/Python-3.6.9':
configure: error: no acceptable C compiler found in $PATH

 

아래와 같이 gcc 설치로 해결하자. 

$sudo yum install gcc

반응형

반응형

배열의 특징

  • 자신과 동일한 타입으로 초기화 될 수 없다.
  • 배열의 이름은 배열의 첫번째 요소의 주소로 암시적 형 변환 된다.
  • 배열을 가리키는 참조를 만들 수 있다.

함수 템플릿을 만들때

  • 배열을 값으로 받으면 T는 요소 타입의 포인터로 결정된다.
  • 배열을 참조로 받으면 T는 배열 타입으로 결정된다.
#include <iostream>

template<typename T>
void foo(T a)
{

}

template<typename T>
void goo(T& a)
{

}

int main()
{
    int x[3] = { 1,2,3 };

    foo(x); 
    goo(x);
}

 

관련 예제

  • 문자열의 타입 : char 배열
  • 문자열을 값으로 받으면 T는 const char* 결정되고, 참조로 받으면  const char[]로 결정된다.
  • 크기가 다른 배열은 다른 타입이다.
#include <iostream>

template<typename T>
void foo(T a, T b)
{

}

template<typename T>
void goo(T& a, T& b)
{

}

int main()
{
    foo("orange", "apple"); // ok
    goo("orange", "apple"); // error
}

 

반응형

반응형

배열의 이름과 주소

일반적으로 데이터 타입을 뺀 나머지는 변수명이라 할 수 있다.

int i에서 int를 빼면 i가 변수명이다. 그리고 데이터 타입에 *붙여서 선언하면 주소를 담을 수 있는 포인터 변수를 선언 할 수 있다. 그러면 배열을 어떨까?

 

int x[3] 에서 int[3] 뺀 나머지인 x가 동일하게 변수명이다. 그러면 포인터 변수는 마찬가지로 x 변수에 *만 붙이면 배열의 포인터 주소가 되는 것일까?

 

대부분 배열의 주소는 첫번째 요소의 주소로 많이 알고 있다. 하지만 배열의 주소와 첫번째 요소의 주소는 같으면서도

다르므로 명확히 구분해서 사용할 필요가 있다.

#include <iostream>

int main()
{
    int i = 1;
    int *px = &i;

    int x[3] = { 1, 2, 3 };
    int *p1 = x; // 일반적으로 생각하는 배열의 주소(묵시적으로 첫번째 요소의 주소로 형변환 됨)
    int(*p2)[3] = &x; // 정확한 배열의 주소(요소가 모두 포함된 전체 컨테이너의 주소)

    // + 1 연산을 하면 기본적으로 데이터 타입 사이즈 만큼 증가된 메모리 주소를 가르침
    printf("%p, %p\n", p1, p1 + 1); // 배열의 첫번째 요소의 주소에서 데이터 사이즈인 4바이트 증가
    printf("%p, %p\n", p2, p2 + 1); // 요소가 3개인 배열의 주소에서 데이터 사이즈인 12바이트 증가
}

 

반응형

반응형

Template Argument Type Deduction

  • 컴파일러가 함수 인자를 보고 템플릿의 타입을 결정하는 것을 말한다.
  • 함수 인자의 타입과 완전히 동일한 타입으로 결정되지는 않는다.
#include <iostream>
using namespace std;

// 함수 템플릿 인자가 값 타입(T a) 일때
template<typename T> void foo(T a)
{
    ++a;
}

int main()
{
    int n = 0;
    int& r = n;
    const int c = n;
    const int& cr = c;

    foo(n);  // T : int
    foo(c);  // T : const int ?
    foo(r);  // T : int& ?
    foo(cr); // T : const int& ?
}

Template Argument Type Deduction 원리 1

  • 템플릿 인자가 값 타입일때 (T a)
    • 함수 인자가 가진 const, volatile, reference 속성을 제거하고 T의 타입을 결정한다.
    • 주의 - 인자가 가진 const 속성만 제거 된다.
#include <iostream>
using namespace std;

// 함수 템플릿 인자가 값 타입(T a) 일때
template<typename T> void foo(T a)
{
}

int main()
{
    int n = 0;
    int& r = n;
    const int c = n;
    const int& cr = c;

    foo(n);  // T : int
    foo(c);  // T : int
    foo(r);  // T : int
    foo(cr); // T : int
    
    const char* s1 = "hello";
    foo(s1); // T : char const* // s1이 아닌 char*가 const 이므로 제거 되지 않음
    
    const char* const s2 = "hello";
    foo(s2); // T : char const*  // s2가 const 이므로 인자에 대한 const만 제거됨
}

Template Argument Type Deduction 원리 2

  • 템플릿 인자가 참조 타입일때 (T& a)
    • 함수 인자가 가진 reference 속성을 제거하고 T의 타입을 결정한다.
    • const, volatile 속성은 유지한다.
#include <iostream>
using namespace std;

// 함수 템플릿 인자가 참조 타입(T& a) 일때
template<typename T> void foo(T& a)
{
    ++a;
}


int main()
{
    int n = 0;
    int& r = n;
    const int c = n;
    const int& cr = c;

    foo(n);  // T : int
    foo(c);  // T : const int
    foo(r);  // T : int
    foo(cr); // T : const int
}

 

Template Argument Type Deduction 정리

  • 템플릿 인자가 값 타입(T a)
    • 함수 인자가 가진 const, volatile, reference 속성 제거 후 T 타입 결정
    • 인자의 const 속성만 제거
  • 템플릿 인자가 참조 타입(T& a)
    • 함수 인자가 가진 reference 속성만 제거 후 T 타입 결정
    • const, volatile 속성 유지
    • 인자가 (const T& a)경우 const를 제거하고 T 타입 결정
  • 템플릿 인자가 forwarding 레퍼런스 타입(T&& a)
    • lvalue, rvalue 모두 전달 받음
  • 템플릿 인자가 배열
    • argument decay 발생
반응형

+ Recent posts