우분투 11.04 를 사용하는데, grub 메뉴를 숨기는게 잘 안된다.

부팅시 grub 메뉴를 숨길때

예전 grub 에서는 /boot/grub/menu.lst 에서
hiddenmenu
를 넣어주면 되었었다.

그런데, grub2 에서는 설정이 좀 복잡하게(체계적으로?) 바뀌었다.

사용자가 만질 부분은  /etc/default/grub 에서 만져준다.
그리고, update-grub 명령으로   /boot/grub/grub.cfg 파일을 생성해준다.

/etc/default/grub 에서 
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
이렇게 해주면 되었던것 같은데, 잘 안될때가 있다.
 
버그인가?
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/444495
http://ubuntuforums.org/showthread.php?t=1287602

공식(?) 환경변수가 아닌 별도로 만들어서 처리해주었다.
GRUB_FORCE_HIDDEN=true
export GRUB_FORCE_HIDDEN
를 /etc/default/grub 에 추가한다.

저 변수를 처리해주는 곳은
/etc/grub.d/30_os-prober 를 수정해준다.
if [ "x${found_other_os}" = "x" ] ; then
를 다음처럼 바꿔줬다.
if [ "x${found_other_os}" = "x" ] || [ "x${GRUB_FORCE_HIDDEN}" = "xtrue" ] ; then

일단 동작은 하는 듯 한데, 좀더 손을 봐야 겠다.


반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
웹개발자라면 필수로 알아야 하는 javascript.
jquery 등의 프레임웍이 있어서 참 편해졌다.

가끔 필요한 소스를 보려고 할때 minified 된 소스들이 있다.
http://jsbeautifier.org/
에서 decoding? unminified 할 수 있다.

소스는 참고만 하자.

반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
fsockopen 을 쓰는 API 의 라이브러리를 사용하다가 이런 메세지를 만나게 되었다.

Warning: Call-time pass-by-reference has been deprecated - argument passed by value; If you would like to pass it by reference, modify the declaration of fsockopen(). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file. However, future versions may not support this any longer. in ....

php.ini 의 allow_call_time_pass_reference  부분을 고치느냐.
API 라이브러리를 고치느냐.

10초 고민하다가, fsockopen 에서 value 를 받는 방식으로 바꿨다.
(fsockopen 에서 reference 로 받아야 하는 이유가 있나?)

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
요즘 jquery 가 대세인듯 하다. js 프레임웍의 편리함을 한번 맛보면 벗어날 수 없다.

우선 결론을 말하면 "IE 야! 제발 쫌" 버그라고 말해야 겠다.
다양하게 확인을 하지는 않았지만, IE9 는 제대로 동작을 하는 듯 하다.
IE8 포함 이전버전에서는 오동작을 한다.
jquery 새버전에서는 될지도 모르겠다. jquery 테스트 버전은 1.4.2 이다.

보통 이런식으로 처리한다.
<input type=text name='phone' onchange='check_phone_number();'>
  
jquery 에서 이런식으로 처리할 수 있다. html 과 js 코드를 분리하기 위해 자주 사용하게 된다.
$(document).ready(function(){
  $('input[name=phone]').change(function(){
     check_phone_number();
  });
}); 

그런데, 저렇게 처리하면 IE 에서 이상하게 동작한다는 것을 느낄 것이다.
text 입력창에 값을 입력하고 out focus 되면 onchange 이벤트가 발생해야 하는데, 발생하지 않는다.
input 태그에 직접 onchange 를 쓴경우 정상적으로 발생하는데, jquery 의 ready 를 사용하면 안된다.
한번 focus 되고 나서, 다시 해볼때는 정상적으로 된다.

오! IE 야 제발.

이를 해결하기 위해 일부러 focus 이벤트를 발생해 주어야 한다.

다음처럼 추가해준다.(ready 안에)
if( $.browser.msie ) {
  $('input:text').click(function(){
    this.blur();
    this.focus();
  });
}

IE 브라우저인 경우 click 시 blur , focus 이벤트를 발생시켜준다.
그러면 바로 change 이벤트가 같이 발생하여 정상적으로 보인다.

더 좋은 방법이 있는지 모르겠지만, 이와 같이 해결했다.

 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,
우체국에서 우편번호 조회 API 를 제공하고 있다.
http://biz.epost.go.kr/eportal/custom/custom_10.jsp?subGubun=sub_4&subGubun_1=cum_20  

php 에서 사용하다보면 잘 안 될 것이다. 인코딩을 utf-8, euc-kr 등으로 바꿔봐도 안될 것이다.

문제는 한글 검색시 헤더값에 accept-language: ko 값을 넘겨줘야 한다.
(우체국 openAPI 에서 저 값을 확인하는 듯 하다.)
$api_key = "우체국에서 받은 API KEY";
$epost_url = "http://biz.epost.go.kr/KpostPortal/openapi?regkey=$api_key&target=post&query=을지로3가"; 
 
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: ko\r\n" 
  )
);

$context = stream_context_create($opts);

$fp = file_get_contents($epost_url , false, $context);
이런식으로 하면 되는데, php 버전 5.0.x 이상에서 사용가능하다.(file_get_contents 에서 context 사용)

php 버전 5.0.x 이하 버전인 경우, curl 이나, fsockopen 을 사용한다.

fsockopen 으로 열고, 
fputs($fp, "Accept-language: ko\r\n");
처럼 헤더를 넘겨준다.

curl 에서는
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-language: ko") ); 
처럼 헤더를 넘겨준다.
 
반응형

WRITTEN BY
1day1
하루하루 즐거운일 하나씩, 행복한일 하나씩 만들어 가요.

,