Create TOC

2004년 4월 27일

Debian/Digital Camera를 PTP모드로 연결

환경

  • Debian Sid
  • Kernel 2.6.5
  • GNOME 2.4

필요한 패키지

# apt-get install gphoto2 gkam gthumb hotplug

group 생성

# addgroup -gid 103 scanner

USB Port 설정

Kernel 설정

ohci-hcd, uhci-hcd를 모듈 또는 커널에 포함되도록 한다.

/proc/bus/usb

/etc/fstab 파일에 아래 줄을 추가한다.

none        /proc/bus/usb   usbfs   defaults    0   0

hotplug 설정

usermap 파일 생성

# /usr/lib/libgphoto2-2/print-usb-usermap > /etc/hotplug/usb/usbcam.usermap

script 설정

/etc/hotplug/usb/usbcam 파일을 생성한다.

#!/bin/sh
#  1. Arguments :
#  2. -----------
#  3. ACTION=[remove add]
#  4. DEVICE=/proc/bus/usb/BBB/DDD
#  5. TYPE=usb

if [ "$ACTION" = "add" -a "$TYPE" = "usb" ]; then
  chown root:scanner "$DEVICE"
  chmod 0660 "$DEVICE"
fi

만든 스크립트에 실행 권한을 준다.

chmod +x /etc/hotplug/usb/usbcam

Test

카메라를 PTP 모드로 설정하고 PC에 연결한뒤 아래 명령을 수행해보면

$ gphoto2 --auto-detect

아래와 같은 결과가 나온다.(본인은 Nikon Coolpix 2500 을 사용하고 있다)

$ gphoto2 --auto-detect
Model                          Port
----------------------------------------------------------
Nikon Coolpix 2500 (PTP mode)  usb:

gThumb

gPhoto 를 사용해서 카메라에서 사진을 가져올 수 있지만, 본인은 gThumb를 애용한다.

gThumb를 실행해서 파일-사진 가져오기 를 선택하면 아래와 비슷한 화면을 볼 수 있다.

적절한 옵션을 선택한 다음 가져오기 버튼을 누르면 아래 화면처럼 카메라에 저장된 그림을 가져온다.

사진 가져오기가 끝난 화면은 아래와 같다.

2004년 3월 13일

Moniwiki/SingleLogin 플러그인

Moniwiki의 기본 보안 플러그인을 살짝 수정해서 단일 사용자용 보안 플러그인을 작성했다.

수정에 관련된 내용은 로그인 한 후에만 할 수 있고, 로그인 하지 않은 상태에서도 기본적인 동작을 수행할 수 있다.

아래 소스를 plugin/security 디렉토리에 singlelogin.php로 저장하고 config.php

$security_class = 'singlelogin';

로 지정하면 된다.


소스 코드

<?php
# a singletologin security plugin for the MoniWiki

class Security_singlelogin extends Security {
  var $DB;

  function Security_singlelogin($DB="") {
    $this->DB=$DB;
  }

# $options[page]: pagename
# $options[id]: user id

  function writable($options="") {
    return $this->DB->_isWritable($options['page']);
  }

  function may_edit($action,$options) {
    $public_pages=array('WikiSandBox','WikiSandbox','GuestBook','SandBox');
    if (!$options['page']) return 0; # XXX
    //if (in_array($options['page'],$public_pages)) return 1;
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function may_blog($action,$options) {
    if (!$options['page']) return 0; # XXX
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function may_uploadfile($action,$options) {
    if (!$options['page']) return 0;
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page"),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }

  function is_allowed($action="read",$options) {
    $allowed_actions=array("userform","download", "fullsearch", "goto", "blogchanges", "highlight", "titlesearch", "rss_rc", "info", "diff", "print");
    if (in_array($action,$allowed_actions)) return 1;
    $method='may_'.$action;
    if (method_exists($this, $method)) {
      return $this->$method ($action,&$options);
    }
    if ($options['id']=='Anonymous') {
      $options['err']=sprintf(_("You are not allowed to '%s' on this page."),$action);
      $options['err'].="\n"._("Please Login or make your ID on this Wiki ;)");
      return 0;
    }
    return 1;
  }
}

?>

Monowiki/RecentChanges 매크로 수정

Moniwiki의 RecentChanges 매크로에는 이름만 표시하는 옵션이 없다. RecentChanges 매크로에 바뀐 글의 제목만 표시하는 옵션을 'nameonly' 로 해서 추가하는 방법에 대해 설명한다.

plugin/RecentChanges.phpmacro_RecentChanges() 함수에 아래 내용을 삽입한다.

} else if ($arg=="moztab") {

이 부분을 찾아서 위에 아래 코드를 추가해준다.

}else if (in_array ("nameonly", $args)) {
  $use_day = 0;
  $template='$out.= "$title<br />\n";';
}else if ($arg=="moztab") {

Moniwiki/가입 막기

1. plugin/userform.php에서

# create profile

이 있는 code block을 주석 처리 한다.

2. wikilib.phpmacro_UserPreferences 함수에서 아래 내용을 주석 처리한다.

FORM;

  if ($user->id == 'Anonymouse') {
이 블럭을 통채로 주석처리한다.
  } else {
    $button=_("Save");
    $css=$user->info['email'];
...

2004년 1월 12일

XP 팁 모음

사용하지 않는 기능 제거

이미지 preview 기능 제거

regsvr32 /u shimgvw.dll

동영상 파일 preview 기능 제거

regsvr32 /u shmedia.dll

압축파일을 다루는 기능 제거

regsvr32 /u cabview.dll
regsvr32 /u zipfldr.dll

사진 및 팩스 뷰어의 확장자 가로채기 막기

XP에 내장된 사진 및 팩스 뷰어는 확장자를 가로채서 실행하기 때문에 ACDSee같은 프로그램을 설치해도 항상 사진 및 팩스 뷰어가 시작된다. 사진 및 팩스 뷰어의 가로채기를 막기 위해서 레지스트리를 변경한다.

레지스트리에서 아래 키를 찾은 다음

HKEY_CLASSES_ROOT\SystemFileAssociations\image\ShellEx\ContextMenuHandlers

ShellImagePreview라는 하위키를 삭제한다.

webfldrs XP 설치/제거하기

시작->실행에서 아래 내용을 입력한다.

설치

msiexec /i %SystemRoot%\System32\webfldrs.msi

제거

msiexec /x %SystemRoot%\System32\webfldrs.msi

Windows Messenger

시작->실행에서 아래 내용을 입력한다.

RunDll32 advpack.dll,LaunchINFSection %SystemRoot%\INF\msmsgs.inf,BLC.Remove

XP SP2 이상을 쓰고 있다면 위 방법대신 제어판을 통해서 제거할 수 있다.

제어판 - 프로그램 추가/제거 - Windows 구성 요소 추가/제거창을 실행하고 Windows 구성 요소 마법사 에서 Windows Messenger를 설치/제거 할 수 있다.

ctfmon.exe

ctfmon.exe는 Office XP에서 부터 도입된 고급 텍스트 서비스이다. 이 서비스는 일반적인 한글 입력외에 필기입력, 음성인식과 같이 보다 향상된 입력 방법을 제공한다.

그러나 사실 이 서비스는 몇몇 특수한 경우를 제외하고 거의 사용할 필요가 없는 서비스이며, 많은 문제점(불필요한 메모리 차지, 프로그램 충돌, 시스템 지연등)을 가지고 있다.

만약 필기 인식과 같은 특수한 입력이 필요하지않은 경우 다음 절차에의해 이 서비스를 사용하지않을 수 있다.

  1. 시작/제어판/국가 및 언어 옵션을 클릭한다.
  2. 언어 탭을 클릭한다.
  3. 텍스트 서비스 및 입력 언어자세히 버튼을 클릭한다.
  4. 한글 입력기(IME 2002)를 클릭하고 기본 설정입력 도구 모음 버튼을 클릭한다.
  5. 입력 도구 모음 설정 창에서 고급 텍스트 서비스 사용 안함을 체크한다.

확실하게 하기 위해 아래 명령으로 고급 텍스트 서비스 관련 COM 객체를 삭제한다.

regsvr32.exe /u %SystemRoot%\System32\msimtf.dll
regsvr32.exe /u %SystemRoot%\System32\msctf.dll

MSN Messenger에서 한글 입력이 안되는 문제

XP에서 MSN Messenger 사용시 가끔 한글이 입력되지 않을때가 있다. 고급 텍스트 서비스와 충돌이 원인인데, 해결 방법은 고급 텍스트 서비스를 사용안하면 되지만, MSN Messenger 에서만 고급 텍스트 서비스를 사용하지 않게 할 수 있다.지금은 해당 문제에 관한 MS 패치가 나왔다.

  1. MSN Messenger 설치 디렉토리로 간다. (보통 %ProgramFiles%\MSN Messenger)
  2. msnmsgr.exe 의 등록정보를 본다.
  3. 호환성 탭을 눌러보면 이 프로그램에 대해 고급 텍스트 서비스 사용 안 함 항목이 있다. 이것을 체크해준다.
  4. MSN Messenger를 다시 실행한다.

AppLocale 설치후 MSI로 설치되는 프로그램의 한글이 깨질때

http://oooko.net/gomme/?p=131

disable_msiexec_fix.zip

Winsock2 복구하기

c:\> netsh winsock reset

http://support.microsoft.com/kb/811259/

저장된 사용자 이름 및 암호

네트워크상의 다른 PC에 접근할때 매번 id/password를 넣는게 귀찮다면 아래와 같은 방법으로 PC별로 id/password를 지정할 수 있다.

시작->실행 에서 아래와 같이 입력한다.

rundll32 keymgr.dll,KRShowKeyMgr

실행되면 아래와 같은 화면이 나타난다. MSN 메신저를 설치했다면 처음에는 passport 만 나온다.

이 상태에서 추가(A) 를 눌러서 접속할 서버와 id/password를 지정할 수 있다.

  • 기능은 XP Pro 이상 버전에서만 사용할 수 있다.

호환성모드 추가/제거

아래 레지스트리를 열고

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

문자열 값을 추가하면 된다. 값 이름에는 호환성 모드를 설정할 파일 이름(전체 경로로)을 지정하고 값에는 아래와 같은 내용을 적으면 된다.

설정할 OS레지스트리에 기록하는 값
Windows 95WIN95
Windows 98WIN98
Windows NT 4.0 (서비스팩5)NT4SP5
Windows 2000WIN2000

부가적인 옵션도 문자열로 제공된다.

256색 사용256COLOR
640x480 해상도 사용640X480
시각 테마 사용 안함DISABLETHEMES
고급 텍스트 서비스 사용 안함DISABLECICERO
관리자권한으로 실행(only Vista)ELEVATECREATEPROCESS

OS는 1개 옵션은 여러개를 지정할 수 있다.

예를 들어 "C:\AAA.exe"에 옵션을 설정한다면 레지스트리에서

값 이름 C:\AAA.exe
값 : WIN98 640X480 DISABLECICERO

이러면 "C:\AAA.exe" 를 windows 98 호환 모드에 640x480 해상도로 고급 텍스트 서비스 사용 안함으로 실행하게 된다.

Spoolsv.exe CPU 점유율이 이상하게 높을때

가끔 알 수 없는 이유로 spoolsv.exe의 CPU 점유율이 높아질때가 있다. 이때는 아래와 같이 조치하면 된다.

  1. Print Spooler 서비스 중지
  2. %SYSTEMROOT%\System32\spool\Printers 폴더의 모든 파일 삭제
  3. Print Spooler 서비스 시작

XP에서 시작 - 컴퓨터 끄기 를 선택하면 몇 분동안 응답이 없다

제어판 - 성능 및 유지 관리 - 관리 도구 에서 이벤트 뷰어를 실행한 다음 시스템 항목에 아래와 같은 로그가 남아있는지 확인한다.

Event Type:Error
Event Source:DCOM
Event Category:None
Event ID:10010
Description:
{9B1F122C-2982-4E91-AA8B-E071D54F2A4D} 서버가 요구된 초과 시간 안에 DCOM으로 등록하지 않았습니다.

위와 같은 로그가 남아있다면 Windows 자동 업데이트 관련 component에 어떤 문제가 발생한 것이고, 그 이유 때문에 XP가 응답이 없는 것이다. 해결책은 아래 내용을 fix.bat로 저장한 다음 cmd 창에서 실행해주면 된다.

@echo off
net.exe stop wuauserv

regsvr32 /s wuapi.dll
regsvr32 /s wuaueng.dll
regsvr32 /s wuaueng1.dll
regsvr32 /s wucltui.dll
regsvr32 /s wups.dll
regsvr32 /s wups2.dll
regsvr32 /s wuweb.dll

net.exe start wuauserv

Windows XP가 시작하는 데 오랜 시간이 걸린다

제어판 - 성능 및 유지 관리 - 관리 도구 에서 이벤트 뷰어를 실행한 다음 시스템 항목에 아래와 같은 로그가 남아있는지 확인한다.

Event Type:Error
Event Source:Service Control Manager
Event Category:None
Event ID:7022
Description:
Windows Image Acquisition (WIA) 서비스가 시작하는 동안에 멈추었습니다.

위와 같은 로그가 남아있다면 http://support.microsoft.com/kb/823612/ko에서 설명한 것과 같이 PC에 설치된 스캐너나 이미징 장치(USB 캠 등)의 드라이버가 잘못 설치된 경우이다.

드라이버 재설치 외에 특별한 해결책은 없다.

svchost에서 실행 중인 서비스의 목록 확인

cmd 창에서 아래와 같이 입력한다.

tasklist /svc

아래와 비슷한 결과를 볼 수 있다.

C:\>tasklist /svc

이미지 이름                  PID 서비스

====== ====================

System Idle Process 0 N/A System 4 N/A smss.exe 596 N/A csrss.exe 672 N/A winlogon.exe 696 N/A services.exe 740 Eventlog, PlugPlay lsass.exe 752 PolicyAgent, ProtectedStorage, SamSs svchost.exe 908 DcomLaunch, TermService svchost.exe 984 RpcSs svchost.exe 1068 AudioSrv, BITS, CryptSvc, dmserver, ERSvc, EventSystem, FastUserSwitchingCompatibility, helpsvc, HidServ, lanmanserver, lanmanworkstation, Netman, Nla, RasMan, Schedule, seclogon, SENS, SharedAccess, ShellHWDetection, TapiSrv, Themes, W32Time, winmgmt, wuauserv svchost.exe 1108 Dnscache svchost.exe 1136 LmHosts, RemoteRegistry, SSDPSRV, WebClient

Windows Update

0x8024A000 에러로 업데이트가 되지 않는다

Windows Update가 0x8024A000 에러로 업데이트가 되지 않을때 아래와 같이 조치하면 된다.

  1. Automatic Update(Viata에서는 Windows Update) 서비스 종료
  2. %Windir%\SoftwareDistribution 경로로 이동해서 DataStore 폴더 삭제
  3. Automatic Update(Viata에서는 Windows Update) 서비스 재시작
  4. 업데이트 시도

자동 로그인 설정

시작->실행에서 아래 내용을 입력한다.

control userpasswords2

실행되면 아래와 같은 화면이 나타난다.

여기서 사용자 이름과 암호를 입력해야 이 컴퓨터를 사용할 수 있음을 uncheck 해주면 자동 로그인할 id와 비밀번호를 물어본다.

여기에 id와 비밀 번호를 입력하면 다음 부팅부터 입력한 계정으로 자동 로그인이 된다.

Boot.ini 파일에 사용할 수 있는 스위치 옵션

http://support.microsoft.com/kb/833721/ko

바탕화면, 작업표시줄의 숨겨진 옵션

XP Pro 이상에 들어있는 그룹 정책 을 이용하면 바탕화면, 작업 표시줄의숨겨진 옵션(예를 들어 바탕화면에서 휴지통 삭제)을 설정할 수 있다.

시작->실행에서 아래 내용을 입력한다.

gpedit.msc

실행되면 아래와 같은 화면이 나타난다.

좌측 트리에서 사용자 구성 - 관리 템플릿 아래에 보면 작업 표시줄 및 시작 메뉴바탕 화면이 있다. 여기서 정책을 설정하면 바탕화면에서 휴지통 제거등의 작업을 할 수 있다.

검색창을 Windows 2000 처럼 변경하기

Windows XP 검색창을 띄우면 아래 화면과 같다.

이 창을 레지스트리 수정으로 Windows 2000 처럼 변경할 수 있다. 아래 레지스트리를 열고

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CabinetState

Use Search Asst 라는 이름의 문자열 값(REG_SZ)을 추가하고 값을 no 로 설정하면 된다.

설정후 검색창을 띄우면 아래처럼 Windows 2000 형식의 검색창을 볼 수 있다.

SSD를 위한 최적화

SSD에 XP를 설치해서 사용할 경우 몇몇 레지스트리를 수정해서 디스크 I/O 를 줄이는 것이 좋다.

부팅을 위한 디스크 최적화 사용 안함

부팅을 위한 디스크 최적화는 10분간 시스템을 사용하지 않으면 실행한다(http://technet.microsoft.com/en-us/library/cc784391.aspx)

이 기능을 끄기 위해서 아래 레지스트리를 수정한다.

키 이름HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Dfrg\BootOptimizeFunction
값 이름Enable
값 종류REG_SZ
설정 값N

시스템 유휴 시간에 하드 디스크 최적화 사용 안함

이 기능을 끄기 위해서 아래 레지스트리를 수정한다.

키 이름HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\OptimalLayout
값 이름EnableAutoLayout
값 종류REG_DWORD
설정 값0

NTFS 에서 마지막 접근 시간 기록하지 않음

FAT32 사용할 경우 필요없는 항목이다. 이 기능을 끄기 위해서 아래 레지스트리를 수정한다.

키 이름HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
값 이름NtfsDisableLastAccessUpdate
값 종류REG_DWORD
설정 값1

Prefetcher 중지

SSD 는 특성상 read access 속도가 빠르기 때문에 WikiPedia:Prefetcher 기능을 사용할 필요가 없다.

이 기능을 끄기 위해서 아래 레지스트리를 수정한다.

키 이름HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
값 이름EnablePrefetcher
값 종류REG_DWORD
설정 값0

부팅시 디스크 검사 기능 중지

이 기능을 끄기 위해서 아래 레지스트리를 수정한다.

키 이름HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager
값 이름boot
값 종류REG_SZ
설정 값

이 기능을 다시 살리고 싶으면 설정 값을 autocheck autochk * 로 돌려주면 된다.