파이참을 사용하던 중에 

갑자기 메모리가 부족하다는 에러가 떴다..

요즘 돌려놓은 게 많아서 그런가보다...

The IDE is running low on memory and this might affect performance. Please consider increasing available heap.

찾아보니 메모리 할당량 설정을 바꾸면 된다고 한다..!

Help -> Edit Custom VM Options를 선택하고!

기본에 아래와 같았던 메모리를

-Xmx940m

이렇게 수정해주면 된다...!

-Xms2048m
-Xmx4096m

 

그 후로 저 메시지는 뜨지 않았다고 한다..

반응형

여느 때와 같이~ oracle db에 접속 중에

갑자기 ORA-28002: 7일 안에 비밀번호가 만기될 것 입니다.

라는 에러 메시지가 떴다...

찾아보니, 오라클에서 암호 사용기간을 저장하여 사용하는데 암호기간이 만료되어 이렇게 메시지가 뜨는 것이라고 한다..!

해결 방법은 아래와 같다!

SELECT RESOURCE_NAME, LIMIT
FROM DBA_PROFILES
WHERE PROFILE = 'DEFAULT'
AND RESOURCE_TYPE = 'PASSWORD';

위 쿼리를 날리면 PASSWORD_LIFE_TIME의 default가 180일인 것을 확인할 수 있다..!

이걸 앞으로 제한 없이 사용할 수 있도록 바꿀 것이다!

ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

위 쿼리를 날려서 아래 이미지와 같이 UNLIMITED로 바꿔주면, 앞으로 이런 에러 메시지가 출력되지 않을 것이드악!!

 

끗!

반응형

 

파이썬에서는 문자열이 문자로 이루어져 있는지, 숫자로 이루어져 있는지 판별하는 함수들이 몇개 있다!

바로~ isalpha(), isalnum(), isnumeric(), isdigit(), isdecimal() 함수!

각 함수의 특징 및 예제를 알아보자!

 

영문이나 한글인지를 확인하는 isalpha()

문자열이 영문이나 한글로 이루어져 있다면 True를 반환하고

띄어쓰기, 숫자, 특수문자가 있으면 False를 반환한다..!

문자만 있어야하는 상황에서 예외처리할 때 주로 사용한다 !

""" isalpha() 예제 """
string = ['Korean과영문', '띄어 쓰기 blank', '숫자섞임1', '특수_문자']

for n, s in enumerate(string):
    print(string[n], ": ", s.isalpha())

# Korean과영문 :  True
# 띄어 쓰기 blank :  False
# 숫자섞임1 :  False
# 특수_문자 :  False

 

영문이나 한글, 또는 숫자인지를 확인하는 isalnum()

문자열이 영문이나 한글, 또는 숫자로 이루어져 있다면 True를 반환하고 

띄어쓰기, 특수문자가 있으면 False를 반환한다..!

ID 등을 확인할 때 사용하는데 잘은 안쓰는 듯 하다..^_^

""" isalnum() 예제 """
string = ['Korean과영문', '띄어 쓰기 blank', '숫자섞임1', '특수_문자']

for n, s in enumerate(string):
    print(string[n], ": ", s.isalnum())

# Korean과영문 :  True
# 띄어 쓰기 blank :  False
# 숫자섞임1 :  True
# 특수_문자 :  False

 

숫자인지를 판별하는 isnumeric(), isdigit(), isdecimal()

숫자를 판별하는 중에는 3가지 함수들이 있는데 미묘하게 사용법이 다르다!

기본은 일반 숫자는 모두 True로 처리한다는 것 !

 

isnumeric()

제곱근, 분수 등은 True로 반환하지만,

문자열에 '특수문자'가 포함된 경우에는 False로 반환한다..!

""" isnumeric() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']

for n, num in enumerate(number):
    print(number[n], ": ", num.isnumeric())

# 95 :  True
# 2² :  True
# ½ :  True
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

isnumeric()

문자열이 '숫자'처럼 생겼다면 True를 반환하고 그게 아니라면 False를 반환한다..!

""" isdigit() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']

for n, num in enumerate(number):
    print(number[n], ": ", num.isdigit())

# 95 :  True
# 2² :  True
# ½ :  False
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

isdecimal()

문자열이 int로 변환 가능하다면 True를 반환하는 함수로..

(내가) 숫자 관련 처리할 때 주로 isdigit과 함께 가장 많이 사용하는 함수다..!

""" isdecimal() 예제 """
number = ['95', '2²', '½', '1/2', '-12', '2.1']


for n, num in enumerate(number):
    print(number[n], ": ", num.isdecimal())

# 95 :  True
# 2² :  False
# ½ :  False
# 1/2 :  False
# -12 :  False
# 2.1 :  False

 

 

결론

오늘은 문자열이 문자인지 숫자인지 확인하는 함수를 알아보았다...

근데 사실 난 이런 함수들로 입출력을 받는 것보다는 

정규표현식 regular expressions를 사용하는 걸 선호한다..

상황에 잘 맞게 쓰면 될듯 하고 다음에는 정규식 포스팅을 해보겠다..^_^

반응형

문제 설명은 다 보고 왔으니 생략... 꽤 헷갈렸던 문제...ㅎㅎ

d = []
for i in range(19):
    d.append([])
    for j in range(19):
        d[i].append(0)

for i in range(19):
    d[i] = list(map(int, input().split()))

n = int(input())
for i in range(n):
    x, y = map(int, input().split())
    for j in range(19):
        d[x-1][j] = 1 if d[x-1][j] == 0 else 0
        d[j][y-1] = 1 if d[j][y-1] == 0 else 0

for i in range(19):
    for j in range(19):
        print(d[i][j], end=' ')
    print()

 

반응형

List를 평탄화하는 방법에는 flatten함수를 사용하는 방법이 있다~

근데 그냥 함수를 쓰는 것보다 재귀함수를 사용하여 직접 구현해보는 것도 재밌는 것 같다~!

성능이 어떻게 나오는지는 확인해보지 않았으나,

재귀함수 특성상 메모리 사용도 많고 느린 경우도 많으니..

실사용할 때는 그냥 flatten() 쓰는게 좋을 것 같다..^^

example = [[1,2,3],[4,[5,6]],7,[8,9]]

def flatten_recursion(list):
    flatten_list = []

    for i in list:
        if isinstance(i, __builtins__.list):
            flatten_list.extend(flatten_recursion(i))
        else:
            flatten_list.extend([i])

    return flatten_list

print(flatten_recursion(example))
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

 

반응형

+ Recent posts