리눅스에서 *.so 파일에 대해서 심볼 Name 이나 Type 등을 검색할 수 있는 방법에 대해 알아보자.


nm 명령어로 so 파일의 내용에 대해 심볼값, 심볼타입, 심볼이름을 알 수 있다.


예제)

 $ nm -Ca /lib/mylib.so.1

  • C 옵션
    • C++ 같은경우에는 네임맹글으로 제대로된 심볼네임이 나타나지 않을수 있는데 디맹글링을 하여 사람이 알아 볼 수 있는 심볼 이름으로 표현해준다.
  • a 옵션
    • 보통 출력하지 않는 디버거용 심볼을 포함하여 모든 심볼을 출력한다.



Posted by leechwin
,

Media wiki 사용시에 좌측에 나타나는 sidebar menu 에 자신이 원하는 메뉴를 넣거나 빼고 싶은 경우가 있다.


좌측 sidebar menu cusomize 하는 법을 알아보도록 하자.


  1. 자신의 계정의 page 에 monobook.js 라는 page 를 만든다.
    • 생성된 page의 경로는 다음과 같다.
    • user:username/monobook.js
  2. 생성된 monobook.js page 안에 다음 내용을 삽입한다.
function ModifySidebar(action, section, name, link) {
    try {
        switch (section) {
          case "languages":
            var target = "p-lang";
            break;
          case "toolbox":
            var target = "p-tb";
            break;
          case "navigation":
            var target = "p-navigation";
            break;
          default:
            var target = "p-" + section;
            break;
        }
 
        if (action == "add") {
            var node = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var aNode = document.createElement('a');
            var liNode = document.createElement('li');
 
            aNode.appendChild(document.createTextNode(name));
            aNode.setAttribute('href', link);
            aNode.setAttribute('style', 'font-size:150%; font-weight:bold');
            liNode.appendChild(aNode);
            liNode.className='plainlinks';
            node.appendChild(liNode);
        }
 
        if (action == "remove") {
            var list = document.getElementById(target)
                               .getElementsByTagName('div')[0]
                               .getElementsByTagName('ul')[0];
 
            var listelements = list.getElementsByTagName('li');
 
            for (var i = 0; i < listelements.length; i++) {
                if (listelements[i].getElementsByTagName('a')[0].innerHTML == name ||
                    listelements[i].getElementsByTagName('a')[0].href == link) {
 
                    list.removeChild(listelements[i]);
                }
            }
        }
 
    } catch(e) {
      // lets just ignore what's happened
      return;
    }
}
 
 
function AddSection(sect) {
    var target = "column-one";
    var column = document.getElementById(target);
    var newsect = document.createElement("div");
    newsect.appendChild(document.createTextNode("test"));
    column.appendChild(newsect);
}
 
function HideColumnOne() {
    // hide columne-one
    var co = document.getElementById("column-one");
    co.setAttribute('visibility','hidden');   
}
 
function CustomizeModificationsOfSidebar() {
    ModifySidebar("add", "navigation", "Core1", "http://172.21.17.12/wiki/index.php/Core1");
    ModifySidebar("add", "navigation", "IDE", "http://172.21.17.12/wiki/index.php/IDE");
    ModifySidebar("add", "navigation", "Web IDE", "http://172.21.17.12/wiki/index.php/WebIDE");
    ModifySidebar("add", "navigation", "주간업무", "http://172.21.17.12/wiki/index.php/weekend");
}
 
addOnloadHook(CustomizeModificationsOfSidebar);


 3. 그후 CustomizeModificationsOfSidebar() 함수에 ModifySidebar 내용을 자신에 맞게 수정한다.

  • ModifySidebar 함수의 첫번째, 두번째 인자는 동일
  • 3번째 인자는 side bar 에 보일 Menu Text 를 넣어준다.
  • 4번째 인자는 Menu Text 로 이동할 실제 페이지의 URL 을 넣어준다.
function CustomizeModificationsOfSidebar() {
    ModifySidebar("add", "navigation", "Core1", "http://172.21.17.12/wiki/index.php/Core1");
    ModifySidebar("add", "navigation", "IDE", "http://172.21.17.12/wiki/index.php/IDE");
    ModifySidebar("add", "navigation", "Web IDE", "http://172.21.17.12/wiki/index.php/WebIDE");
    ModifySidebar("add", "navigation", "주간업무", "http://172.21.17.12/wiki/index.php/weekend");
}


Posted by leechwin
,

Ubuntu 에서 apt-get install {Package} 로 설치가능한 유용한 패키지에 대해 정리

  • PC Recoreder
    • gtk-recordmydesktop
    • xvicap
  • Screen Shot
    • shutter
  • 공유
    • samba
  • Browser
    • chrome
    • firefox
  • Package management
    • rpm
  • Source management
    • git
  • Util
    • synergy
      • 자동시작: Menu > System > Preference > Startup Application > add


'OS > Linux' 카테고리의 다른 글

[Ubuntu] 한글 입력 설정  (1) 2013.04.19
[Ubuntu] NM 으로 so 파일 심볼을 검색하는 방법  (0) 2013.03.01
[Ubuntu] ulimit 설정  (0) 2013.02.17
[Ubuntu] RPM 간단 명령어  (0) 2013.02.17
[Ubuntu] Ubuntu 에 Oracle JDK 1.6 설치하기  (0) 2013.01.22
Posted by leechwin
,