본문 바로가기

Robotics

(367)
(c++)Singleton pattern 클래스를 멀티쓰레드에서 안전하게 만드는 방법 프로그램을 구성하다보면, 전역적으로 단일 인스턴스를 가져야 하는 모듈을 만들어야 하는 경우가 분명 있다. 이럴때 싱글톤(Singleton) 패턴으로 클래스를 구성하게 되는데..문제는 이 패턴이 멀티쓰레드에서 안전하지 않다는 것이다. 아래는 일반적인 싱글톤 패턴의 코드이다. 문제는 최초에 두개의 Thread가 연속으로 GetInstance()를 호출 했을때에 instance의 null체크에서 두 thread가 모두 null이 될 가능성이 있다는 것이다.이것을 해결하기위해서는 몇가지 솔루션이 있다. 1. criticalsection 사용 동시에 두 thread의 접근을 방지하여 안전성을 확보하자는 것인데, 문제는 criticalsection이 성능면에서는 별로 좋지 않다고 한다. 2. 최초에 getinsta..
Raspberry Pi는 Open Source H/W가 아니다.. 아마 많은 사람들이 라즈베리파이가 오픈소스 프로젝트의 대표 주자인 것으로 알고 있을것 같다. 버젼별로 다 가지고 있는 본인도 그런줄 알았으니..아두이노는 WiKi에서도 오픈 소스를 기반... 라는 말을 시작으로 설명을 하고 있지만, 라즈베리 파이는 그렇지 않다. 라즈베리파이 사이트에 가보면 회로도와 OS모두 공개하고 있어서, 오픈 소스 프로젝트라고 생각했지만, 회로를 다운로드 받아서 보다보니, 실제 버젼과 회로에서 사용하는 부품과 일치하지 않는다는 것을 알고는, 찾아보니 공식적으로 언급한것은 아니지만, 라즈베리파이 재단의 엔지니어가 여태까지 라즈베리파이가 오픈소스 프로젝트였던 적이 없었고, B+부터는 회로도를 공개할 계획이 없다고 한다. 참고 : https://www.raspberrypi.org/foru..
Odroid에서 부팅시 root 계정으로 로그인 일반적인 경우라면 이렇게 해서는 안되겠지만, 어떤 이유에서 root계정으로 바로 부팅을 해야하는 일이 생겼다.그 방법을 기록해 둔다. $ sudo vim /etc/lightdm/lightdm.conf.d/12-autologin.conf #autologin-user=odroidautologin-user=root #이걸로 교체해준다. $ reboot 이렇게하면 일단 root로 로그인이 되지만, x윈도우에서 아래와 같은 에러를 띄울지도 모른다. Error found when loading /eoot/.profile : stdin: is not a tty 이럴때는 .profile을 수정하면 된다. $ vim .profile #mesg ntty -s && mesg n #이렇게 교체하면 된다. 그러면 일단 에러메세..
라즈베리파이 Compute Module 개발킷으로 eMMC Flash Raspberry Pi Compute Module Development Kit의 eMMC에 Rasbian을 설치하기 위해서는 아래 링크된 내용대로 따라하면 된다. https://www.raspberrypi.org/documentation/hardware/computemodule/cm-emmc-flashing.md 그런데, 문제는 본인이 사용하는 Windows 8 데스크탑에서는 드라이버를 업데이트해도 안된다.Ubuntu 14.10에서는 Waiting for BCM2835... 에서 멈춰있다. 인식이 안된다는 소리다. 그래서, 사용중이던 Odroid U3에서 실행하니 된다.이유는 알 수 없지만, 위 링크된 글에서 나와있듯이 특정 USB 호스트에서는 안될 수 있다고 한다. Note that there is a..
라즈베리파이 Compute Module 개봉기 작년(2014년)에 출시된 라즈베리파이 컴퓨터 모듈과 개발킷. 가격은 11~12만원사이. 최근에 새로운 시제품 개발을 위해서 구입.이 보드보다 좋은 스펙의 라즈베리파이2가 나왔고 성능면에서도 훨씬 좋지만, 선택할 수 있는 종류가 그렇게 많지 않은터라..(요즘에 조금씩 소형의 코어모듈이 조금씩 나오긴 한다만..)일단 이 모듈로 시도를 하고.. 점차적으로 소형화를 시도해 보려고 한다. 박스 측면. 구성품은 위와 같이... 개봉하면 요래.. 보드는 요래.. 사이즈 비교.. I/O 보드 이전에 사용하던 카메라를 쓰기위해서는 저걸 써야 함. 커넥터 규격이 달라서...어디서 봤는데, 이전 버젼에서 사용하던 카메라를 바로 사용할 수 없다고... (아직 확인은 안해봤지만, 어디서 봤던걸로 기억...) 전원 콘센트는 각..
Cygwin + Eclipse에서 STL unresolved inclusion문제 리눅스에서 개발을 하다가 다른 컴퓨터에서도 동일한 환경을 셋팅하고 싶은데, 어쩔수 없이 윈도우 환경으로 꾸며야 해서 cygwin, eclipse로 환경을 구성하였다.그런데, 아래처럼 STL 헤더를 include하면 unresolved inclusion 문제가 생긴다. 컴파일에는 문제가 안생기는데, 코딩시 eclipse가 indexing을 못해서 intellisense같은 code assist를 사용못하게 된다. 이 문제를 해결하려면,Project Properties > C/C++ General > Processor Included Paths, Macros, etc > Provider 탭에서 CDT GCC Built-in Compiler Settings Cygwin을 선택하면 된다.
gtk에서 Gtk-WARNING **: Theme parsing error: buttons.css.. 에러의 원인.. glade로 ui 폼을 구성하고, 파일을 로드하여 gtk기반의 프로그램을 구성할때.. 실행을 하면 이런 에러가 뜰때가 있다. 프로그램이 죽는건 아닌데, 잠재적인 문제로 남을까싶어.. 구글링을 통해 문제점이 어디에 있는지 확인해봤더니.. 결국 개발환경에서 사용하는 gnome의 테마때문이라는 사실을 알았다. '기능개선도구' 또는 tweak-tool 에서 테마의 GTK+ 부분이 내가 사용하는 테마에서는 Orchis 인데, 이것을 기본인 Adwaita로 바꿔주니 에러가 발생하지 않는다.. 관련된 에러는 다음과 같이 떴다. Gtk-WARNING **: Theme parsing error: buttons.css:52:8: Missing name of pseudo-classGtk-WARNING **: Theme pa..
컴포넌트 소프트웨어 엔지니어링 자료. 구글링으로 가져옴.