파이참을 사용하던 중에 

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

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

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]

 

반응형

테이블 생성하고 값을 넣으며 테스트를 하면서 발견한 오류!!

 

읽기만 가능하고 값이 수정되지 않는다..

원인은 다양하겠지만, DB 검증/재연결하거나 DBeaver 재접속을 하면 된다고 한다!

나는 재연결하였으나 되지 않아서 재접속하였더니 아무 일도 없었던 것 마냥 해결되었다!

반응형


다른 DB만 쓰다가 MSSQL을 처음 써보게 되면서 마주한 nvarchar.. 

이 친구는 또 뭘까..?

 

varchar

흔히 우리가 알고 있는 varchar는 가변 문자열이자 byte수를 기준으로 하여

영문이나 숫자, 특수문자는 1byte로 처리되며 한글이나 중국어는 2byte로 처리되는 것!

nvarchar

이에 반해 nvarchar는 유니코드 지원 가변 문자열로 글자수를 기준으로 하여

영문, 숫자 등 할 것 없이 모든 문자열을 무조건 2byte로 처리한다고 한다..!

따라서, 다국어를 지원할 일이 있으면 nvarchar를 사용하는게 좋다고 한다..^^

반응형

 

 

https://codeup.kr/problem.php?id=6082 

 

[기초-종합] 3 6 9 게임의 왕이 되자(설명)(py)

python언어기초100제v1.0 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요. - 모든 내용

codeup.kr

 

아마 문제는 다 보았을테니, 문제에 대한 설명은 생략합니다!

 

간단하지만, 푸는 방법이 조금 달라서 글을 씀다! 힌트는 count

 

문제의  조건은 Input 값이 27 이하로 설정되어 있어서

대부분 아래의 소스처럼 i를 10으로 나눈 나머지값을 구하는 방식으로 해결했더라..

n = int(input())

for i in range(1, n+1) :
  if i%10==3 or i%10==6 or i%10==9 :
    print("X", end=' ')
  else :
    print(i, end=' ')

# 결과값
# 1 2 X 4 5 X 7 8 X 10 11 12 X 14 15 X 17 18 X 20 21 22 X 24 25 X 27 28 X 30 31 32 X 34 35 X 37 38 X 40 

물론, 조건을 생각하면 이게 맞지만.... ㅎㅎ

근데 369게임이 27으로 끝나는 법은 없지... ^_^

30이상 input값을 받아버리면 제대로 출력이 되지 않는 오류가 발생하니~

이왕 짤거 제대로 짜보는 게 좋을 것 같아서

a = int(input())

for i in range(1, a+1):
    sum_x = str(i).count('3') + str(i).count('6') + str(i).count('9')
    rs = "X"*sum_x if sum_x > 0 else i
    print(rs, end=' ')

# a = 43 일 때,
# 결과값
# 1 2 X 4 5 X 7 8 X 10 11 12 X 14 15 X 17 18 X 20 21 22 X 24 25 X 27 28 X X X X XX X X XX X X XX 40 41 42 X

 

이렇게 짜봤다..^^

 

반응형

'[ 개발 ] > Algorithm' 카테고리의 다른 글

[CodeUp] 코드업 기초 100제 6096번 풀이 (py)  (0) 2022.11.13

노트북을 새로 받아서 잡다한 작업이 늘어나게 됐다..

오라클도 새로 설치하고.. 계정도 새로 파고.. 작업하다가 그러다가 한번 재부팅 하는 순간..!

이런 오류가 뜨길래 ODBC 데이터 원본 관리자를 들어가는 순간...

ORA-12541 : TNS:리스너가 없습니다 오류 출력...

보통 Listener가 없는게 아니라 기능 실행의 문제거나.. path의 문제라고 보면 된다..

먼저 '서비스'창을 들어가서

이렇게 Listener가 정상적으로 실행되어있는지 확인하자..!

내 경우엔 Listener를 찾을 수 없다고 뜨면서 실행이 안됐는데!

처음 컴퓨터를 새로 설치했을 때, 기본 계정명으로 listener가 설치됐나보다..

오라클 폴더에서 listener.ora와 tnsnames.ora 파일을 찾고

그 안에 있는 listener.ora 파일에서

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

그리고 tnsnames.ora 파일에서는

LISTENER_ORCL =
  (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트명)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

호스트명을 본인의 User명에 맞게끔 바꿔주면 된다..!

그리고 서비스에서 Listener 실행!!

하면 끝 ^_^

 

반응형


Oracle 12c부터는 멀티테넌트(MutilTenant)라는 기능이 도입되었다고 한다!

말 그대로 다중의 세입자라는 뜻으로 하나의 DB 안에  여러개의 DB가 포함되어 있는 구조라고 보면 된다

이전 11g까지만 해도 비CDB 방식으로 하나의 인스턴스에 하나의 DB로 되어있었는데

컨테이너 역할을 하는 CDB(Container DB)가 있고

그 안에 들어가서 넣었다 뺄 수 있는 PDB(Pluggable DB)가 있어서

CPU와 메모리, DB 통합 등 성능적인 부분에서 높은 효율을 갖는다고  한다!

좌: 멀티테넌트DB // 우: 싱글DB

 

더 알고싶다면 구체적이고 쉽게 정리해놓은 블로그
https://jack-of-all-trades.tistory.com/286를 참고하자!

반응형

+ Recent posts