목록Study/Troubleshooting (8)
이상한 코딩 나라의 혜돌이
라즈베리 파이의 와이파이 설정이 안 될때는 다음 과정을 차례대로 따라해 보자. 먼저 초기 네트워크 설정을 아래와 같이 지정해준다 $ sudo vi /etc/network/interfaces source-directory /etc/network/interfaces.d auto loiface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0iface wlan0 inet manualwpa-conf /etc/wpa_supplicant/wpa_supplicant.conf 네트워크를 재시작하거나 재부팅한다 $ sudo /etc/init.d/networking restart 사용 가능한 와이파이 이름을 검색한다 $ sudo iwlist wlan0 scan 리스트의..
들어가기 앞서 MavenBom에 대해서 간단히 알아보자. BOM은 Bill Of Materials의 약자이다.BOM은 프로젝트의 dependency 버전을 제어하고 해당 버전을 정의하고 업데이트하는 중앙 위치를 제어하는 특별한 종류의 POM이다.MavenBom을 사용하면 우리가 필요한 dependency의 버전을 신경쓰지 않고 프로젝트에 dependency를 추가할 수 있다고 한다. 자세한 내용은 여기로 내가 이해한 바로 간단히 설명해 보자면, mavenBom은 프로젝트에 추가한 dependency를 관리해주는 역할을 하는 것 같다.예를 들면 충돌 방지나, 버전 업데이트 뭐 그런 거..? 그런데 무슨 일인지, 내 컴퓨터에서는 mavenBom을 사용할 수가 없었다. 뻥 안 치고 intellij를 오백 번 ..
소켓에서 읽어온 메시지를 write 함수로 출력하고 이어서 printf 함수를 썼을 때 출력 시점과 모양이 이상하게 되는(?) 문제가 발생했다. write = write(1, buf, read);...printf("\nInput Word: "); 실제 출력해보면 개행이 사라지는 등 이상한 .... 현상이 생겼다. 교수님께 여쭤보니, stdout에 출력할 때 write 함수와 printf 함수를 섞어서 사용했기 때문에 발생한 문제라고 하셨다.또 추가로 찾아보니 write 함수는 버퍼에 있는 내용을 그대로 출력하고 printf 함수는 표준 출력 모드로 동작하여 종료 문자('\n', '\0')를 만났을 때 내용을 출력한다고 한다. 문제를 해결하기 위해서는,printf 또는 write 함수 중 하나로 통일해서 ..
C언어에서 클라이언트와 통신하기 위한 서버 프로그램을 작성할 때, 소켓을 사용한다. bind 단계에서는, sin_family, sin_addr, sin_port 등을 설정한다.프로그램 작성 후 디버깅 및 테스팅을 위해 서버 프로그램을 강제 종료하고, 포트 번호 변경 없이 바로 실행시키면 bind error가 발생한다.그 이유는 해당 포트를 이미 사용하고 있어서 발생하는 문제이며 기존 프로그램은 종료되었지만 비정상 종료된 상태로 아직 커널이 bind 정보를 유지하고 있기 때문에 발생하는 문제이다. 이때, bind에 사용 되는 소켓의 설정을 약간 변경해 주면 해당 문제를 해결할 수 있다.setsockopt라는 함수로 소켓 설정을 변경할 수 있다. 위 함수로 소켓에 SO_REUSEADDR 옵션을 주면 기존에 ..
처음으로 AWS 서버를 파고 나서 ip 받은 김에 터미널로 ssh 접속을 해 보려고 했는데.. ➜ ssh ubuntu@xx.xxx.xxx.xx 나에게 돌아온 메시지는 ubuntu@xx.xxx.xxx.xx: Permission denied (publickey). 뜨든... ㅠㅠ그래서 이런저런 체크를 해 보았다. 첫 번째 : 보안 그룹 연결 확인 및 인바운드 체크 내가 판 인스턴스와 적절한 보안 그룹을 연결해 두었는지를 먼저 확인!연결된 보안 그룹의 인바운드에 ssh 포트 (22) 가 열려있는지 확인!!!! 다 잘 되어있었음.. 두 번째 : 사용자 이름이 틀렸나?Amazon Linux 2 또는 Amazon Linux AMI의 경우 사용자 이름은 ec2-user입니다.Centos AMI의 경우 사용자 이름은 ..
make 명령은 makefile에 설정된 정보를 읽어서 여러 소스 파일을 컴파일하고 링크하여 최종 실행파일을 생성한다.이를 통해 컴파일 작업을 자동화하며, 다중 모듈 프로그램의 재사용을 유지하고, 프로그램 수정에 대한 재번역을 최소화한다.makefile을 작성하는 규칙은 다음과 같다 targetList : dependencyList[tab] commandList targetList : 목적 파일 목록dependencyList : 의존 파일 목록commandList : 명령어 목록 예를 들어 아래와 같은 makefile이 있다고 가정하자. main : main.o reverse.o gcc -o main main.o reverse.omain.o : main.c reverse.hgcc -c main.creve..
이번 팀 프로젝트에서 ajax를 사용할 일이 있었는데, 비동기식으로 데이터를 보낼 때 한글 인코딩 문제가 발생했다. 열심히 alert를 띄워 보니 문제는 request.send였다. 배울 때 분명히 아래와 같이 사용하라고 배웠다. request.send(escape(data)); 그런데 영어를 보낼 땐 잘 전송되는데 한글을 보내면 꼭 null값이 전송이 되는 문제가 발생했다. 찾아보니 escape함수가 한글은 지원하지 않는단다. 그래서 팀원이 encodedURIComponent도 써보고, ContentType도 바꿔보고, CharacterEncoding도 바꿔보고 별의 별 짓을 했는데도 문제가 해결되지 않았다 ㅠ_ㅠ 그런데 정말 허무한 방식으로 문제를 해결했다. request.send(data); 그냥 ..
보통 DB에서 레코드를 생성할 때, id값은 sequence를 이용하여 생성한다. 우리 팀도 그렇게 쿼리를 짜 뒀었다. 그런데... a를 insert하고, 곧이어 a의 id를 FK로 받는 b 레코드를 insert하는 경우 문제가 생겼다. id값을 모르는 데 어떻게 b를 insert하지 ...? id를 모르니까 검색할 수도 없는데 .. 끙끙 앓고 있는데 교수님이 문제를 명쾌하게 해결해 주셨다. 우선 Connection 연결하는 곳에 다음 세 메소드를 추가한다. // PK 컬럼 이름 배열을 이용하여 PreparedStatement를 생성 private PreparedStatement getPreparedStatement(String[] columnNames) throws SQLException { if (c..