전체 글 415

[RSA] Extended Euclidean Algorithm - 확장된 유클리디안 알고리즘

RSA를 알기 위해서는 확장된 유클리디안 알고리즘과 페르마 + 오일러 정리를 알고 있어야 한다. 그런데 확장된 유클리디안 알고리즘이 계산을 어떻게 하는지 도저히 감을 잡지 못했다. 페르마 + 오일러의 정리는 그냥 공식이 나와있고 그 공식이 뭔지만 알면 된다. (물론 증명은 따로 더 이해하려 하지 않았다. 사실 이해하려 했다가 무슨 말인지 몰라서 중간에 그만뒀다.) 그런데 확장된 유클리디안 알고리즘의 경우 문제를 풀기 위해서는 반드시 작동 원리를 알아야 했는데 간단한 계산의 연속임에도 불구하고 대체 뭘 계산하는건지 감이 잡히지 않았다. 오기가 생겨서 똑같은 영상을 최소 5번~6번정도는 돌려본것 같은데, 정말 어떻게 된건지는 모르겠지만 대여섯번쯤 볼때쯤에 어떻게 하는지 감이 왔다. 그리고 몇몇 문제를 풀어보..

컴퓨터 보안 2021.10.10

[Python3] Python 에서 nonlocal과 정적 스코프

static scope에 대해서 공부하는 중에 global은 들어봤는데 nonlocal이라는게 들어본적이 없어서 찾아보았다. (프언 수업은 정말 역대급으로 생소한것같다. 이전에 이런 내용들을 접해본적이 없어서 꽤나 고생중이다.) 아래 간단한 예제를 보면 바로 이해가 될 것이다. 눈으로 따라가기에는 조금 번거로울 수 있는데 연습장에 조금씩 써보면서 딱 한번만 따라가보면 정확히 이해할 수 있다. nonlocal: 지역 변수가 아님을 선언 nonlocal이 사용된 함수 바로 한단계 바깥쪽에 위치한 변수와 바인딩을 할 수 있다. x = 50 def f(): a = 777 def g(): a = 100 def h(): global x x = 999 nonlocal a a = 333 h() print("[Level..

강사님 강연 정리내용

김겨울 컨텐츠 크리에이터 청각장애인 본인들은 소리를 들었던 그것이 오히려 거부감을 느낄 수 있었다는것이다. 장애가 없는 이들이 그들이 그것을 원할 것이라 지레 짐작하여 가정하고 제공하였다는 것이다. 우리의 미래 라고 말할떄 그 우리는 누구를 말하는가? 그 우리에는 누구가 들어가있고 누구가 들어가있지 않은가? 그것을 발견할 수 있을까 그 발견을 책을 통해 할 수 있을 것이다. 시대가 품은 문제는 그 시대상으로는 해결할 수는 없다. 우리의 사고방식이 시대의 한계를 고스란히 담고 있기 때문이다. 그러니 거기서 빠져나와야 한다. 고전의 고전 서문 중 앞으로 종이책이 사라질까요 ? 독서경험은 책의 내용만을 집어넣는 것이 아니다. 책의 두께 재질 단락 즉 종이책을 원하는 사람은 앞으로도 계속 있을 것이다. 미래를 ..

개발 활동 2021.10.08

[C] 메모리와 변수의 lifetime으로 인한 예상치 못한 결과 -> (해결)

글 앞 내용에 잘못된 내용이 등장합니다. 혼자서 추측했던 내용이라 잘못된 내용인데 그냥 결과만 확인하고 싶은 분은 글 맨아래로 가셔서 파란색 문단을 읽으시면 됩니다. 굉장히 신기한 내용을 접하게 되었다. 우선 아래 코드를 먼저 보면 아주 간단한 코드인데 척 보면 무슨 결과가 나올지 짐작일 갈 것이다. #include int fun() { static int count = 0; count++; return count; } int main() { printf("%d ", fun()); printf("%d ", fun()); return 0; } 위와같은 코드를 봤을때, 딱 보면 아 static으로 선언되있기는 한데 그런데 어차피 다시 또 0으로 초기화를 해주기 때문에 결과가 1 1 이 나오겠구나라고 생각할 ..

C & C++/C 2021.10.08

좋은 블로그 소개 (메튜장 - 실리콘벨리 프로그래머)

https://matthew.kr/ 실리콘벨리 프로그래머 메튜장 개발로그 | Matthew Devlog 실리콘벨리, 스타트업, 유라임, 대용량 분산처리, 웹서비스, 데이터 시각화 matthew.kr 메튜라는 분인데 머신러닝을 공부중이신 소프트웨어 엔지니어 분이라고 한다. 글쓰신게 정말 재밌다. 정신없이 읽었다. 계속 찾아서 읽어보면 좋을 듯싶다.

개발 팁 2021.10.01

인간에게 가장 친숙한 개념은 결국 OOP

아침에 알렉님이 리액트의 기본 원리를 간략하게 설명해주시는 영상을 보는데 문득 이런 생각이 들었다. 리액트에서는 태그 하나하나를 트리의 요소로 간주하여 오브젝트로 취급한다. 즉 예를 들어서 H1태그가 있다면 이 친구 하나가 하나의 오브젝트가 되는 것이다. 그런데 아 여기서도 모든 걸 오브젝트로 취급하려는 시도를 하는 구나라는 생각이 듬과 동시에 파이썬에서도 오브젝트로 모든 것을 취급하는 것이 생각나면서 어느 공통점이 느껴졌다. 둘다 아주 핫한 기술이다. 파이썬은 말할 필요도 없고, 리액트도 그러하다. 그런데 왜 둘다 오브젝트로써 대상을 표현하는 방법을 사용했을까? 그것이 어떠한 대상을 표현하는데 가장 적합해서일 수도 있고 아니면 사람들이 느끼기에 그냥 오브젝트로써 모든걸 표현하는게 정말 편하게 느껴져서일..

기술 에세이 2021.10.01

[Linux] Ubuntu c programming - file open /read /write

오랜만에 우분투에서 또다시 코드를 작성하게 되었다. 예전에는 리눅스에서 뭔가 작성한다고 하면 잔뜩 겁을 먹었었는데 지난번에 어셈블리어 수업을 듣게 된 이후로는 그나마 덜한 것 같다. 그전까지는 아예 기본적인 사용법조차 몰랐고 터미널에서 길을 잃어서 한참을 헤맸던 기억이 난다. 한마디로 별것도 아닌일때문에 삽질을 좀 많이 했었다. 그래도 지금은 좀 나아진것 같다. 지난번에는 Vmware WorksStation을 사용해서 작성했었는데 이번에는 Oracle VM VirtualBox를 이용해서 우분투에서 작성하게 되었다. 두 제품의 차이에 대해서는 잘 모르는데 나중에 이부분도 따로 찾아서 정리해놓으면 좋을 것 같다. 근데 사실 막상 써보면 별 차이 없긴 하다. 시스템 콜을 사용해서 아주 간단한 프로그램을 작성하..

C & C++/C 2021.09.30

[C] C언어 세그멘테이션 오류 (코어 덤프됨)

리눅스에서 c언어로 시스템 프로그래밍 관련 코드를 작성하고 있었는데 세그멘테이션 오류(코어 덤프됨) 이라는 에러가 발생했다. 예전에도 한번 발생했던 기억이 있는데 그 당시에 오류 원인은 찾지 못했고 코드를 고쳐주었더니 해결된 적이 있었다. 세그멘테이션 오류는 - 포인터를 잘못 사용했을 경우 - 혹은 배열의 메모리를 잘못 사용했을 경우 - 포인터로 지정해놓고 초기화도 메모리 할당도 안해줬을 경우 위와 같은 경우에 발생한다고 한다. 나의 경우 지금은 에러가 사라져서 원인이 뭐였는지 확실하게 짚이지는 않는데 아마 터미널에서 아규먼트를 전달했어야 했는데 전달하지 않았으면서 내부 코드에서 그 요소를 사용하려고 접근했기 때문이 아닐까 라고 예상된다. int main(int argc, char* argv[]) { /..

C & C++/C 2021.09.29

[Vim] vim 작업중 갑자기 vim에 키가 먹히지 않을 경우

가끔 vim에서 c언어 소스코드를 작성하다보면 갑자기 vim에 키가 먹히지 않고 뻗어버리는 경우가 있다. 가끔 발생했던 문제였는데 자주 발생하는 문제는 아니어서 그냥 쓰던 코드를 복사해서 다시 vi편집기를 열어서 붙여주는 방식으로 해결했었다. 그런데 오늘 확실하게 뭐가 문제였는지 잡아냈다. 일단 알게된 사실은 vim이 먹통이 되는게 아니라 그냥 잠시 멈추는 거였다. 나는 vim자체에 문제가 생긴줄알았는데 아니었다. 내가 평소에 visual studio code를 자주 사용했었는데 그냥 습관처럼 ctrl + s를 누르는 습관이 있었다. 혹시나 저장안됬을까 해서 그냥 누르는 습관이 있었다. 자동저장도 있었는데 그냥 그것보다는 내가 직접 누르는게 좋아서 이렇게 써왔다. 근데 가끔 vim에서 코드를 집중해서 치..

개발툴 2021.09.29

[VirtualBox] virtualbox 0x80004005, virtual box 실행안됨.

이런 에러는 정말 귀찮다. 진작 잘 돌리고 있던 virtualbox인데 갑자기 에러가 발생하면서 실행도 되지 않았다. 검색해보니 잘쓰고 있다가 리눅스에서 업데이트를 최신으로 한다던지 하면 발생하는 문제라고 한다. 검색하고보니 글이 많이 떴는데 아마 예전부터 꾸준히 발생해오던 문제인것 같다. 그런데 검색해서 찾은 방법중에는 리눅스의 버전 혹은 virtualbox의 고질적인 문제라고 설명하고 있고 해결방법을 위해서 최신 virtualbox를 다시 깔고 확장팩을 설치하라는 안내도 있었고, 다른 해결법들도 여러가지가 있었다. 그런데 약 3시간정도 헤맨 끝에 이 문제보다 뭔가 좀 더 근본적인 문제가 있다는 것을 느끼게 되었다. (왜냐면 진짜 차근차근 나와있는 방법들을 모두 따라했는데 에러로그가 한토시도 한바뀌고 ..

개발툴 2021.09.28

[SpringBoot] 로컬 Git -> AWS EC2까지 서버에서 jar를 실행해보자.

3주 전부터 친구들과 작은 게임을 만들고 있었는데 회원가입 + 로그인 + 점수 + 랭킹을 제공하는 API를 만드는 일을 맡았다. springboot + jpa + mysql을 사용하여 만들고 있어서 내가 서버를 맡고 나머지 두명이 안드로이드와 IOS를 맡았다. 얼마 시간이 지나지 않았지만 워낙 내용이 간단한 게임이라 완성이 되었는데 AWS와 깃을 쓰면서 기억해주면 좋은 내용이 있어서 포스팅하게 되었다. 우선 코드가 모두 다 작성된 상태에서 출발한다. 우선 인텔리제이에서 springboot과 jpa를 사용하여 작성한 프로젝트가 있는 폴더를 깃에 업로드해주면 된다. git config --global user.name git config --global user.email 을 해주고 해당 리포지토리에서 ur..

[SpringBoot] JdbcSQLSyntaxErrorException: Syntax error in SQL statement

h2디비를 사용하다가 Mysql로 테스트해보려고 데이터베이스를 바꿨을 경우에 흔히 발생하는 오류이다. 해결법은 간단하다. 지금 보면 h2database의 경로를 써준것 바로 뒤에 세미콜론을 붙여서 무언가 더 써준게 있다. MODE = 어쩌구 이렇게 써져있는데 이걸 여기서 Mysql로 세팅해주는 것이다. 이렇게 해주고 실행하면 정상적으로 실행된다.

[Linux] fcntl.h와 unistd.h

매번 include하여 사용했는데 왜 쓰는지 몰랐던 헤더가 있다. 바로 fcntl.h와 unistd.h이다. 두 파일 모두 C POSIX 라이브러리 헤더 파일이다. C POSIX 라이브러리는 C 표준 라이브러리 POSIX에 대한 시스템 사양이다. ANSI C 의 표준으로 동시에 개발되어다. 두 헤더 모두 C POSIX 라이브러리 헤더 파일 중 하나이다. fcntl.h: 파일을 열고, 잠금 및 다른 작업을 할 수 있음 unistd.h: 다양한 필수 POSIX 함수와 상수 fcntl.h에 대해서 조금 더 살펴보면 파일 및 레코드 잠금을 구현하는 시스템 호출이라고 한다. 읽기 잠금을 통해 여러 프로세스가 공유 가능한 읽기 잠금 쓰기 잠금을 통해 한 프로세스만이 가질 수 있는 쓰기 잠금이 가능하다고 한다. op..

C & C++/C 2021.09.14

Deep Dream image generate 귀여운 토끼사진

딥드림이라는게 있는데 꿈 혹은 환각처럼 보이도록 고의적 처리를 통해 만들어진 이미지이다. 인공 신경망을 모방하여 수많은 이미지를 학습하고 이후에 그 이미지들에서 feature들을 추출하여 이와 전혀 관련없는 이미지에 적용하여 예술적인 결과물이 나오게 되는 것이다. 아래 링크에서 재미나게 소개해주고 있는데 읽어보면 좋을 듯 하다. 링크: http://www.aitimes.com/news/articleView.html?idxno=119826 예전에 이와 관련된 기사를 보면서 고흐 풍의 그림을 딥드립으로 만들어낸걸 보면서 너무 신기하다고 생각했는데 이번에 관련 오픈소스를 만져볼 일이 있어서 포스팅하게 되었다. (삽질하다가 뜯어보았다. 진짜 고생했다.) deep_dream.py라고 검색하기만 하면 바로 해당 파..

인공지능 2021.09.14

[AWS] ssh를 사용해서 AWS EC2 접속 시 주의사항

보통 putty를 사용하던데 그렇다면 이런 일이 발생할 일이 없을거다. 나의 경우 ssh를 사용해서 AWS EC2에 접속하게 되는데 이때 인스턴스를 중지시켰다가 다시 작동시키게 되면 HostName이 바뀌게 된다. 즉 ssh설정을 다시 해줘야 하는 것이다. 그래서 EC2에서 연결을 누르면 HostName이 나오는데 그걸 수작업으로 .ssh의 config에 다시 적어줘야 한다. 혹시 갑자기 안된다고 당황할 수 있는데 이점 유의하는 것이 좋겠다. (나도 순간 당황했다.) 아니 그냥 푸티쓸까?

클라우드/AWS 2021.09.11

성취감... 하하

된다... 드디어... 친구들에게 이번 주말까지는 완성해서 올려놓겠다고 호언장담을 해놓은 터라... 아침 일찍 일어나서 AWS사용법 호다닥 배워서 서버에 올리고 데이터베이스 연동하고 SSH사용법도 후다닥 익혀서 사용해보고... 근데 이제 작동한다... 하하... 뭔가 뿌듯하면서도 부족한것같기도 한데 좋아해야될 것 같기도 한데 아직 더 만져봐야할 것 같고... 결론은 기분이 좋다.. ㅎㅎ 좀더 해봅시다...

개발 팁 2021.09.11

[Intellij] Intellij에서 자바 바이트코드 확인하기 (Maven 사용시)

자바 바이트코드를 확인할 일이 있어서 터미널에서 javap옵션을 사용해서 보려고 했는데 javap 가 없다고 뜨길래 한참을 헤맸다. 아마 경로가 틀린것 같은데 오전내로 당장 급하게 제출해야해서 그냥 인텔리제이에서 확인하기로 했다. 인텔리제이에서 자바 바이트코드를 확인하는 방법은 간단하다. (Maven을 사용한다고 가정 ) 메이븐을 사용하는 환경에서 컴파일을 하게 되면 왼쪽에 프로젝트 창에 target이라는 폴더가 있을 것이다. (test폴더 밑에 있음!!) 그럼 거길 들어가면 classes라는 폴더가 있을텐데 그안에 본인이 컴파일한 .class 파일이 있을 것이다. 뭔가 좀 달라 보이는데 자바 코드로 되어있다. 그런데 조금은 다르다. 생성자도 만들어놨거나 그런식으로 다르다. 그리고 편집도 안된다. 이제 ..

개발툴 2021.09.10

[OracleDB] ALTER TABLE ~ SET UNUSED의 사용

5개월전에 데이터베이스를 공부하면서 같은 포스팅을 쓴 적이 있었는데 (바로 이전 포스트) , SET UNUSED가 왜 쓰이는지에 대한 글을 포스팅을 한 적이 있었다. 당시에 정확한 내용은 아니었고 어느 블로그의 댓글을 보고 답을 얻게 되었는데 요약하면 다음과 같았다. 미리 마킹해두고 나중에 삭제하기 위해서 사용한다. 왜냐면 바로 삭제하면 별로 좋지 않기 때문이다. 이렇게 알고 있었는데 좀더 정확한 내용을 알게 되었다. 내용은 아래와 같다. ALTER TABLE ~ SET UNUSED 컬럼을 삭제하지는 않는다. 다만 논리적으로 사용을 제한할 뿐이다. 특정 테이블의 컬럼을 바로 삭제하는 것은 위험하다. 왜냐면 여러 사용자가 이미 사용하고 있기 때문이다. (비즈니스단계에서) 또한 테이블에 저장된 내용이 많다면..

Database/OracleDB 2021.09.08
반응형