안녕하세요, 봉자씨입니다.

파이썬을 설치하기 시작하기 전에 이런 질문을 많이 할 수 밖에 없습니다.


Should I use Python 2 or Python 3 for my development activity?

그래서 파이썬 무슨 버전을 깔아야 하나요?


https://wiki.python.org에서는 아래와 같이 답하고 있습니다.

What are the differences?

Short version: Python 2.x is legacy, Python 3.x is the present and future of the language



결국  Python 3를 설치해야 하겠죠?


 Python 3를 사용해야 하는 이유 정리하면 아래와 같습니다.

1. 2버전은 이제 더 이상 업그레이드를 지원하지 않아요!

2. 맥제공 파이썬은 사용시에 애플 수정 버전이기에 버그가 존재 할 수 있어요!

3. 맥제공 파이썬은 우리가 흔히 파이썬에서 사용하는 PIP를 사용 할 수 없어요!

4. 좀 더 궁금한게 있다면! https://wiki.python.org/moin/Python2orPython3 여기를 참고해주세요!

 

일단 저는 모두 설치한 상태라서 설치한 상태의 버전이 보이는 것을 확인가능해요!

저 처럼 당연히 안보이실 겁니다. 그럼 한번 저처럼 보이게 설치 해 보도록 할게요.

파이썬 3가 설치 되어 있는 상태

설치가 안되어 있을 경우 -bash: python3 : command not found


Homebrew를 통해서 설치하려고 하는데 Homebrew가 도대체 뭔가요~?

OS X 패키지 관리자 Homebrew 로 간편하게 패키지를 관리 할 수 있도록 도와주는 프로그램이다...라고 생각하시면 됩니다.





1. 실제 Homebrew 설치는 아래와 같이 입력

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2. 설치 후 .bash_profile 설정에 아래 내용 추가

1
export PATH=$(brew --prefix ruby)/bin:$PATH

3. 또한 Homebrew 가 패키지 설치 시 필요한 권한 부분 추가

1
sudo chown -R $USER /usr/local

4. 완료 확인을 합니다. brew -v 명령어로 버전을 확인


이제 준비는 완료 되었습니다.

파이썬 3설치 해보도록 하겠습니다.

brew install python3


이게 끝이에요. 이제 파이썬3가 설치 되어 있는지 확인해보세요.

가장 쉬운 방법 python3를 터미널 창에 썼을때 처음 화면 처럼 나오면 되요.(제가 캡쳐한 화면)

파이썬


안녕하세요, 봉자씨입니다.

오늘은 엑셀의 IF함수에 대해서 한번 알아 보겠습니다.

이전에 배웠던 or함수와 and함수와 같이 논리함수에 속합니다.

if함수는 정말 많이 쓰이는 함수입니다.

그래서 다른 사용자들의 엑셀 수식을 보면 역시나 많이 사용되어 있는 모습을 많이 보게 됩니다.

왠만한 수식에는 빠지지 않는 단골 함수라고 생각하시면 됩니다.


그럼 엑셀의 if함수는 과연 어떻게 사용이 되는지 한번 알아 보겠습니다.

그러기 위해선 먼저 함수는 어떤 구성을 가지는 지에 대해서 먼저 보겠습니다.

=IF(논리값, True일 경우, False일 경우)


논리값에 의해서 True공간에 것을 실행 할 것이냐,

False 공간에 것을 실행 할 것 인가를 결정 짖게 됩니다.


예를 들어서 아래와 같은 판단을 할 수 있습니다.(단순 입력)

=if(6>A1, 100, 400)


해당 수식이 적혀 있는 셀에는 A1의 값이 6 보다 작다면 100이라는 값이 입력되게 됩니다.

하지만 6보다 크거나 같다면 400이라는 값이 입력이 되게 됩니다.


그럼 이렇게 단순하게만 사용 할 가요?

그렇지 않아요 아래의 수식을 한 번 보겠습니다.(결과가 수식)

=if(6>A1, 100*A1, 400*A1)


해당 수식은 A1의 값에 따라서 100을 곱할 것이냐

아니면 400을 곱할 것이냐가 결정되게 됩니다.

단순하게 값을 입력하는 것을 떠나 계산이 가능 하다는 것을 알 수 있죠.


다음으로는 아래와 같은 수식이 있습니다.

=if(and(a1>10, a2>20), "모두 옳다", "모두는 아니다")


해당 수식은 논리값의 해당하는 부분에 논리 함수를 사용해서 두가지 논리 값에 대해서 표현했습니다.

a1이 10보다 크고, a2가 20보다 크다면 해당 셀에 "모두 옳다"라고 입력하라고 수식이 되어 있으며,

그렇지 않다면 "모두는 아니라"라는 값이 입력되게 됩니다.

a1이 12이고 a2가 22일 경우

=if(and(a1>10, a2>20), "모두 옳다", "모두는 아니다")

a1이 12이고 a2가 20일 경우

=if(and(a1>10, a2>20), "모두 옳다", "모두는 아니다")



또 다르게 사용되는 경우를 한번 보겠습니다.

=if(sum(a1:a10)>10, if(a1>10, a1, a10),"조건에 안맞음")


해당 수식이 복잡해 보이시나요? 그렇지 않아요.

모든 수식은 천천히 뜯어보면 다 똑같습니다.

sum(a1:a10)의 값이 10보다 크다면, 다시 a1의 값이 10보다 크면 셀에 a1을 입력하게 됩니다. 그렇지 않고 10보다 작다면 a10을 입력하죠.

하지만 처음에 sum(a1:a10)의 값이 10보다 같거나 작았다면 셀에는 "조건에 안맞음"이라고 입력되게 됩니다.


결론적으로 if문은 아래의 형태에서 벗어나지 않습니다.

그러니 꼭 아래의 그림을 머리 속에 넣어 두세요!





글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~







'엑셀 > 엑셀 함수' 카테고리의 다른 글

엑셀 IF 함수  (0) 2018.12.17
엑셀 OR 함수  (0) 2018.08.07
엑셀 AND 함수  (0) 2018.08.03

안녕하세요, 봉자씨입니다.

맥을 자주 사용하시면 깨닫는게 있습니다. 

바로 맥에서 단축키를 사용하지 않았다면 와...와...

얼마나 내가 불편 했을까하는 생각이 들 정도로 소중하다는 것을 말입니다.

오늘은 맥을 사용한다면 알아야 하는 필수라고 까지 말 할 수 있는 단축키를 12가지를 알려드릴게요!


1. 그 창만 쏙 하고 잠재우기(딱 그창만 화면 없애버리기)

COMMAND + W

꼭 알아야 하는 단축키!

누군가 나의 모니터를 바라 보고 있다면 쏙 하고 나의 중요한 정보를 감추세요!

프로그램을 종료하는 것은 아니에요!

단지 잠자기 상태로 바꾼답니다.


2. 모든 창을 최소화 하기(한번에 모든 창 내리기)

COMMAND + OPTION+ W

모든 창을 한번에 최소화 해줍니다. 

쏙하고 내려가는 효과를 보게 됩니다.


3. 모든 창을 화면에서 사라지게 하기(모든 창 숨기기)

COMMAND + H

화면상에 떠 있는 모든 창을 한번에 숨겨 줍니다.

직장 상사가 지나가거나 선배가 지나간다면?

바로 이 단축키 입니다.!


4. 활성화된 창 잠시 저리 비켜보세요(맥 바탕화면을 보게 모든 창을 저리 치울때)

COMMAND + F3

맥을 사용하다보면 여러가지 화면을 많이 켜놓게 됩니다.

굳이 맥이 아니더라도 그런 습관 아닌 습관을 가지는 경우가 많죠

그럴 때는 바탕화면 구경하기가 쉽지 않아요.

이럴때 바로 이키를 사용해보세요!


5. 크롬 창에 여러 탭을 가지고 있다면 탭을 자유롭게 이동하기

COMMAND + 1 or 2 or 3....

숫자 만큼 해당 탭으로 이동합니다.

1이라면 첫번째 탭으로

2라면 두번째 탭으로 이동하게 되는 것이죠.

아무 것도 아닌데 사용하다 보면 정말 편해요!


6. 맥을 순식간에 끄는 단축키

CONTROL + OPTION + COMMAND + EJECT(오른쪽 모서리 상단에 있는키)

이렇게 누르면 맥이 순삭 꺼집니다.


7. 마우스 스크롤 효과를 화살 키로 즐기기

COMMAND + DOWN or UP

스크롤 기능이 점프 점프 기능으로 바뀝니다.

그래서 빠르게 훑어 볼 수 있게 되죠!


8. 서식까지 복사해 보세요

CONTROL + COMMAND + V

이렇게 누르면 텍스트에 적용된 서식까지 복사가 되요!


9. 사전 기능?

CONTROL + COMMAND + D

사전이 딱하니 떠서 모르는 단어도 쉽게 이해하고 넘어 갈 수 있답니다.


10. 삭제를 좀더 빠르게 하고 싶다면?

OPTION+DELETE

한 글자씩 지워졌다면, 이제는 한 단어씩 빠르게 지워집니다.


11. 유투브 볼때 완전 HOT KEY 점프점프

1, 2, 3, 4...

유튜브를 보고 있다면 한번 숫자키를 눌러보세요

10%, 20%, 30%, 40%...아주 빠르게 재생 점프하게 됩니다.


12.볼륨 조절을 이제 조금더 세밀하게 조절하고 싶다면?

OPTION+SHIFT+F11(세밀히 줄이고)

or

OPTION+SHIFT+F12(세밀히 올리고)

이제 볼륨을 키로 좀더 세밀하게 조절해 보세요!


글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~





안녕하세요, 봉자씨입니다.


안드로이드에서 api를 호출할 경우 자주 사용하는 retrofit2

이를 사용하다 보면 json데이터를 파싱하는 경우가 많습니다. 

이럴 경우 아래와 같이 사용하여 처리를 했습니다.


Retrofit client = new Retrofit.Builder()
.baseUrl("http://bongjacy.com/")
.client(new OkHttpClient()).addConverterFactory(GsonConverterFactory.create()).build();


이렇게 사용하다 보면 특정 데이터에서 null이 들어 오는 경우가 있습니다.

또는 숫자라고 생각하고 이를 String으로 받아서 바꿔 사용하고 있다면 Inteager.Valueof를 사용하다 보면 Exception이 발생하게 됩니다.

당연하죠.. 데이터가 없으니

이럴 경우 null일 때는 "0"으로 넣어야 하는 경우가 생기더라고요.(순전히 저의 경우지만...^^;;)

이를 해결하기 위해서 아래와 같은 소스 코드를 추가해 주시면 됩니다.

기본적 셋팅 부분은 아래와 같이 하시면 됩니다.


GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()).create();
gsonBuilder.serializeNulls();
Gson gson = gsonBuilder.create();
Retrofit client = new Retrofit.Builder()
.baseUrl("http://bongjacy.com/")
.client(new OkHttpClient()).addConverterFactory(GsonConverterFactory.create(gson)).build();


그리고 두개의 클래스를 추가합니다.

첫번째 StringAdapter입니다.

import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

import java.io.IOException;

public class StringAdapter extends TypeAdapter<String> {
public String read(JsonReader reader) throws IOException {
if (reader.peek() == JsonToken.NULL) {
reader.nextNull();
return "0"; //여기서 null일 경우에는 0으로 치환해서 보내게 됩니다. 핵심!
}
return reader.nextString();
}
public void write(JsonWriter writer, String value) throws IOException {
if (value == null) {
writer.nullValue();
return;
}
writer.value(value);
}
}


두번째 NullStringToEmptyAdapterFactory입니다. 기본 셋팅 부분에 추가됐던 TypeAdapterFactory 클래스입니다.

import com.google.gson.Gson;
import com.google.gson.TypeAdapter;
import com.google.gson.TypeAdapterFactory;
import com.google.gson.reflect.TypeToken;

public class NullStringToEmptyAdapterFactory<T> implements TypeAdapterFactory {
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {

Class<T> rawType = (Class<T>) type.getRawType();
if (rawType != String.class) {
return null;
}
return (TypeAdapter<T>) new StringAdapter();
}
}


이렇게 해주시면 null to zero가 되게 됩니다.

감사합니다.

글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~





안녕하세요, 봉자씨입니다.

엑셀의 OR함수에 대해서 알아 보도록 하겠습니다.

이전에 학습한 AND함수랑 아주 유사성이 많습니다.

두개의 함수의 공통점은 논리함수라는 것입니다.

함수의 결과 값으로 얻는 값이 논리 값이다 하여 논리 함수다라고 생각하시면 됩니다.


OR함수 역시  어느 수식에든 들어가는 감초 같은 함수입니다.

역시나 요기 조기 들어가서 요긴하게 쓰입니다.


그럼 OR는 어떤 기능을 할가요?


인수값이 어떤 값이 들어가고 결과 값으로 어떤 논리 값이 나오는 지를 한번 보겠습니다.

먼저 인수값으로는 역시 논리 값이 들어 가고 있습니다.

True, False 값이 나올 수 있는 논리 값.


=OR(논리값,논리값,논리값......)


그럼 OR가 하는 역할은 무엇일까요?

OR함수 내에 인수로 들어오는 논리 값 중에서 어느 하나라도 값이 TRUE라면

결과 값으로 TRUE의 값을 반환해 줍니다.


여러 조건들을 해당 함수에 넣었을 경우에 결국 하나라도 맞는 조건이 있다면

결과값으로 TRUE를 반환해 준다는 것입니다.


이하 T는 true, F는 false


=OR(T,T,T)

결과는 T


=OR(F,F,F)

결과는 F


=OR(T,T,T,F)

결과는 T


=OR(F,F,F,T)

결과는 T



함수의 기능을 보면 그리 어렵죠.

그런데 이전에 AND함수와 마찬가지로 이렇게 단순하게 사용되지 않습니다.

감초는 감초 답게 여러 함수와 콜라보가 되어져서 사용됩니다.

하지만 해당 기능을 정확하게 이해해야 콜라보도 할 수 있다는 것을 기억하세요.

쉬운 기능이지만 이 기능이 나중에 큰 효과를 발휘하게 된답니다.

차차 확인하는 것으로 하고 일단 OR기능에 대해서 다시 예를 들어서

설명을 드리겠습니다.


아래의 예를 보면 수학 과학 영어 체육 해당 과목 중에서 한 과목이라도 90점이 넘는 다면!!

바로 TRUE를 반환해 주는 식입니다.


결국 한과목이라도 90점을 넘는 학생을 구한다면 아래와 같은 수식을 쓸 수 있겠죠?


그래서 위의 수식을 조금 응용해서 쓴다면 아래와 같은 수식을 쓸 수 있습니다.

= if(OR(A2>90,B2>90,C2>90,D2>90), "과목 우수", "")

이렇게 수식을 쓴다면 한과목이라도 90점을 넘는 경우 과목 우수가 반환이 되게 됩니다.

그리고 그렇지 않다면 빈공간이 나오겠죠.


여기서 우리가 이전에 배운 AND함수도 한번 콜라보를 해볼가요

= IF(AND(AND(A2>60,B2>60,C2>60,D2>60),OR(A2>90,B2>90,C2>90,D2>90)), "전과목 평균 이상 과목 우수", "")


이렇게 수식을 쓴다면 모든 과목이 60점이 넘어야 하고
과목중에 하나는 90점이 넘어야
전과목 평균 이상 그리고 과목 우수가 되게 됩니다.

아직은 복잡할 수 있지만 간단한 원리만 일단 이해하시고
나중에 복잡한 수식을 수행할 때에 활용 하시면 됩니다.

마지막으로 한장 정리 들어 갑니다.





글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~





'엑셀 > 엑셀 함수' 카테고리의 다른 글

엑셀 IF 함수  (0) 2018.12.17
엑셀 OR 함수  (0) 2018.08.07
엑셀 AND 함수  (0) 2018.08.03

안녕하세요, 봉자씨입니다.

안드로이드P 기사에 대해서 정리해 봅니다.

안드로이드P 8월 20일 출시 가능성 높음.

미공개 최신 IT기기 정보를 올리는 Evan Blass는 자신의 트위터에

올렸으며, 또한 지난 해 안드로이드 8.0 오레와 발표일과 거의 동일하다는 것을 알 수 있다.

결국 올해 최신 안드로이드 운영체제와 픽셀 스마트 폰 출시 일정은 지난해와 똑같이

운영체제는 8월말

픽셀폰은 10월 초 출시 패턴을 따를 것이라 예상됨

 

글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~





안녕하세요, 봉자씨입니다.

안드로이드 스튜디오를 업데이트 하면서 갑자기 무한 루프가 진행되듯

Indexing/Scanning/Building

반복된다면 어떻게 해야 할가요?
이것 저것 해봐도 멈추지도 않고
버티고 해보려해도 한계에 달했습니다.

답은 은근히 간단합니다.
아래의 빨간 부분을 클릭해서 한번 정리하고 나시면
정상으로 돌아 옵니다.

글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~

안녕하세요, 봉자씨입니다.

프로젝트의 build.gradle에서 모든 compile을  implementation으로 변경했습니다.

그런데도 불구 하고 여전히 경고 메시지가 표시됩니다.

아래와 같은 경고를 확인 할 수 있습니다.

분명히 아래와 같이 바꿔 줬는데 계속적으로 에러가 발생하는 것을 확인 할 수 있습니다.

아래와 같이 바꿨는데도 에러가 계속적으로 발생하는 이유는 아래 클래스가 문제가 되는 것입니다.

com.google.gms:google-services



그래서 이를 바꾸기 위해서는

프로젝트의 build.gradle로 들어가서 클래스 패스에 적힌 google-service의 버전을 바꿔주면 됩니다.

buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:3.1.0'
}
}


아마 위와 같이 되어 있는 것을 아래와 같이 바꿔주면 에러가 사라집니다.

buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:3.2.0'
}
}


글이 조금이나마 도움이 되셨다면 공감 부탁드립니다.

오늘도 좋은 하루 되세요!

감사합니다.

클릭 클릭 공감 클릭~~





+ Recent posts