분류 전체보기 433

[Flask] ReferenceError: weakly-referenced object no longer exists

급하게 이번주까지 완성해야할 프로젝트가 있어서 이것저것 골라보던 중에 Flask를 통해 빠르게 개발하는 것이 좋겠다고 생각했다. 주말에 테이블별로 대충 어떤 속성들이 필요하겠다고 이야기를 했고 일요일밤에 Flask를 빠르게 배우고 코드를 작성해서 지금까지 좀 고쳐나가는 중이다. (워낙 급하게 만들어서 중요한 변수들을 바깥에 그냥 던져놓고 global로 가져다 쓰는 만행을 저지르는중이다.) 대충 기본은 Flask를 통해 api들을 만들어주고 sql 을 직접 날려서 디비의 데이터를 가져오고 view에 보여주는 간단한 코드를 짜는 중이다. 그런데 재밌는 현상을 발견했다. 문제는 다음과 같았다. def get_MySQLConnection(): mydb = mysql.connector.connect( host="..

Python3/Flask 2021.11.23

[C] C언어 질문: 두 배열 a와 b에서 b = a 에서 에러가 발생하는 이유는 무엇일까?

새벽에 누군가가 재밌는 질문을 올려놨다. 짧은 글이라 그냥 휙 보고 넘기려 했다. 그런데 글을 보고 고민했는데 나도 감이 잡히질 않아서 아침에 직접 dev C++를 켜고 값을 찍어보았다. 올라온 질문은 다음과 같았다. 배열은 포인터와 유사하지만 포인터 상수이다. 즉 대입이 불가능하다. 근데 왜 전자의 경우에선 오류가 나지 않고 후자의 경우에서 오류가 발생하는가? void function(int a[]){ int b[5]; a = b; } void main(){ int a[10]; function(a); } void main(){ int a[10]; int b[4]; b = a; } 배열은 배열의 첫 번째 요소의 주소값을 가지고 있는 것이다. 배열 변수는 주소값을 받을 수 있으니 b = a; 와 같이 만든..

C & C++/C 2021.11.21

[AI] 기왕이면 colab pro를 쓰자

사진을 웹캠으로 찍었을때 무슨 숫자인지 알아맞히는 숫자인식을 하려고 근 이틀동안 colab에서 코드를 짜는 중이다.  그런데 오늘 오후 내내 이리저리 코드를 수정해보면서 GPU로 학습을 진행했는데 잘때쯤이 되니까 이게 떴다. 에폭 20에 배치사이즈 128정도 되는 분량을 돌렸다가 또 코드를 수정하고 또 돌리고 한참을 해서 GPU를 많이 써서 그런 것 같다. 전에 colab pro를 결제해서 사용할땐 이런적 없었는데 역시 무료라서 한계가 있나보다.  기왕이면 colab pro를 쓰자. 얼마 안한다.  그래서 사실 지금 CPU로 돌리고 있다는건 비밀...  돌리다가 도저히 진행이 안되는것 같아서 포기하고 그냥 자는것도 비밀... ㅋㅋ

2021AI엔지니어 고급반 - YOLO with deeplearning 결과물 업로드

결과물로 나온 영상들을 업로드한다. 결과물1 결과물2: 결과물3: 나머지 2개의 결과물이 더 있는데 아마 저작권이 걸릴것같아서 업로드하지 못할것 같아서 아쉽다. (아직 성능 개선의 여지가 너무 많은 것 같아서 좀 더 시간이 있었다면 더 좋은 퀄리티를 만들어낼 수 있었을 것 같지만 다른 팀들도 마찬가지였을거라고 생각하니 3등도 아쉽지는 않다. 다 똑같은 시간을 받았으니 동메달에 감사하자!) 올리지 못한건 마이클잭슨의 뮤직 비디오 중 하나이고 다른 하나는 TV방송 프로그램중 하나인 비정상회담의 일부 장면인데 올리면 안될 것 같아서 개인적으로 간직해둬야할것 같다.

[C] 시스템 프로그래밍

예전에 공부하면서 작성했던 C system programming 예제를 첨부한다.  전반적인 시스템 코드 작성 예제가 두루 포함되어있어서 도움이 많이 될거다.   2주차 code3-1#include#include#include#includeint main(){ int filedes; char fname[] = "afile"; if((filedes = open(fname, O_RDWR)) == -1){ printf("%s cannot be opened. \n", fname); } close(filedes); return 0; }code3-2#include#include#include#define PERMS 0644char *filename = "newfile";void main(){ int fd; if(..

C & C++/C 2021.11.08

[DevC++] Dev C++ 테마 변경하기

시스템 프로그래밍을 할일이 생겨서 최근 Dev C++과 gcc를 많이 쓰고 있다. Dev C++에서 코드를 좀 이쁘게 보자. Dev c++ 의 테마 변경은 우선 편집창에서 도구를 선택한다. 선택하고 나면 편집기 설정이 있는데 편집기 설정으로 들어간다. 편집기 설정에 들어가면 구문/문법이라는 메뉴가 있는데 그곳을 클릭한다. 그리고 왼쪽하단의 색조합을 누른다. 여기서 이제 편집기 테마를 선택할 수 있다. 나는 눈이 편한 Borland를 골랐다. 나머지 테마중에 어두운 글씨가 잘 보이지 않는 테마가 있다. Borland테마가 가장 눈이 잘 들어온다.

개발툴 2021.11.07

[Cipher] Elgamal - 엘가말 암호

저번에 확장 유클리디안 알고리즘때문에 꽤나 고생을 한적이 있는데 이번에는 엘가말이라는것을 만나게 됬다. 흑 복호화부분이 하나의 식이 있는게 아니라 상당히 다양하게 변형된 방법들이 있어서 헷갈렸다. 예를 들어서 하나의 동작이 있다고 하면 그 동작을 두부분으로 나눠서 진행하는 방법이 있다거나 아니면 곧장 답으로 직행할 수 있는 방법이 있다거나 하는 식이었다. 아래 유튜브에 어느 분께서 직접 풀이를 진행하시는데 가장 쉽게 이해할 수 있는 영상인것 같다. https://www.youtube.com/watch?v=QrsGVeZV7q8

Computer Security 2021.10.31

[Security] 컴퓨터보안에서 부인방지란 무엇일까?

부인방지라는 용어를 듣게 되었는데 처음 듣는 용어이지만 중요하지 않다고 생각해서 맥락상 의미만 추측만 하고 지나갔다. 그런데 계속해서 반복해서 등장하기에 그 의미를 정확히 찾아보았다. 사전적 정의는 아래와 같다. 사전적 정의가 아주 간단 명료해서 이것만 봐도 무엇인지 이해가 될 것이다. 부인방지: Non - repudiation 더보기 메시지의 송수신이나 교환 후, 또는 통신이나 처리가 실행된 후에 그 사실을 사후에 증명함으로써 사실 부인을 방지하는 보안 기술. 예를 들면, 전자 우편이나 메시지를 송신하고도 송신하지 않았다고 주장하는 송신자의 부인을 막는 송신 부인 방지(non-repudiation of origin), 메시지가 송달(전달)된 사실을 송달되지 않았다고 주장하는 수신자의 부인을 막는 송달 ..

Computer Security 2021.10.29

[Functional Programming] Functional Programming에서 변수의 의미

얼마전 썼던 포스트에서 함수형 프로그래밍에 대한 내용이 살짝 나오는데 거기서 함수형 프로그래밍에서의 assignment에 대해서 살짝 얘기를 했었다. 아래 링크에 가면 예전에 썼던 내용이 있다. https://spongeb0b.tistory.com/277 예전에 이해했던 내용이 살짝 명확하지 않았는데 얼마전에 더 나은 설명을 접할 수 있게 되어서 정리하게 되었다. 함수형 프로그래밍에서의 변수의 의미에 대해서 조금 더 자세히 알게 된 내용은 다음과 같다. 내가 알던 변수의 의미와는 사뭇 다른 개념이었다. 우리는 혹 변수를 얘기할적에 변수이름, 타입, 주소, 바인딩을 말하게 되는데 이중에서 바인딩을 말할적에 정적 바인딩, 동적바인딩을 말하곤 한다. 하지만 함수형 프로그래밍에서의 변수에서는 이런 바인딩자체가 ..

[C] 포인터가 가질 수 있는 값인 nil이란?

포인터가 가질 수 있는 값들 중에 nil이 있다는 글을 봤다. null의 오타겠거니 생각했다. null을 잘못적었구나 라고 생각했는데 실제로 nil이라는 걸 사용한다고 한다. swift에서 null대신 nil을 사용한다고 한다. 즉 swift에서는 null이없어서 그대신 nil이라는 개념을 쓴다고 한다. 그리고 사실 nil의 기본적의 정의 자체는 꼭 스위프트에서만이 아니라 "다양한 컴퓨터 프로그래밍 언어에서의 널포인터의 이름" 라고 정의된다. 즉 별다른거 없다. 그냥 null 인거다. 다만 다르게 부를 뿐이다. 그러니 앞으로 어떤 랭귀지든 nil이라는게 나오면 아 여기서는 null대신 이걸 쓰는구나 라고 알면 되겠다.

C & C++/C 2021.10.17

[Linux] exit과 _exit의 차이

리눅스 시스템 프로그래밍을 할적에 _exit을 본적이 있는데 exit은 main문제에서 쓰이는 반면 _exit은 자식 프로세스의 동작이 확실시되는 곳에서 사용되는 경우가 있었다. 둘 사이의 차이가 사후처리 즉 뒤처리를 하고 종료하느냐 하지 않느냐의 차이로 알고 있었는데 자식 process에서 쓰이는걸 보면 뭔가 이유가 있겠다 싶었다. 아래가 해당 자세한 내용이다. exit() 함수는 표준 입출력 정리 루틴을 수행하고 _exit()를 호출한다. exit() 함수는 파일 스트림에 대해서 동일한 작업을 수행하는데, 열려있는 파일의 스트림에 대해서는 fclose() 함수를 호출해서 버퍼에 남은 데이터를 모두 출력(flush)한다 일반적으로 _exit() 함수는 표준 입출력과 관련된 정리 작업을 수행하지 않는 것..

C & C++/C 2021.10.12

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

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

Computer Security 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..

[Dev] 강사님 강연 정리내용

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

개발 정보 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

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

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
반응형