레이블이 버그인 게시물을 표시합니다. 모든 게시물 표시
레이블이 버그인 게시물을 표시합니다. 모든 게시물 표시

2010년 9월 24일 금요일

아이튠즈 보조 어플: 풀어쓰기로 변한 한글을 다시 모아주자!

아이폰은 단점이 없는 완벽하고도 지고지순한 폰이 아니다.
철학이 뚜렷하고, 이에 따른 장단점이 명확히 나뉘는 폰이다.

그런데, 그런 원인으로 발생하는 단점과는 무관하게 버그성 단점도 눈에 띈다.

그 중 눈에 확 띄는 건 저주의 아이튠즈 풀어쓰기 문제.

아이튠즈를 통해 응용 프로그램의 도큐먼트를 업로드하면 한글을 무참하게 풀어버린다.

인간적으로 이건 좀 너무하지 않냐!


내부적으로는 어떤 일이 벌어지는지는 모르겠지만, 이런 상황 자체가 이해가 되지 않는다. 어허허.
파일명을 몽땅 영어로만 올리면 되긴 하지만, 언제나 그렇게 할 수는 없다.

폴더를 지정하면 알아서 조합해주는 프로그램을 간단하게 만들었다.
이 프로그램의 기능은 단 하나다: 폴더를 지정하면 폴더에 저장된 풀어쓰기 한글을 몽땅 모아준다.

아래에서 다운받으면 되며,


실행 화면은 아래와 같다.


덧1. 풀어쓰기→모아쓰기 문제는 김용묵 님께 도움을 받았음
덧2. 이 프로그램은 VC6에서 유니코드를 잘 처리하지 못하는 문제 때문에 VS2008로 만들었다 VC6으로 다시 작업함
      이 문제를 찾는데 @nunadly 님과의 대화가 큰 도움이 되었음
덧3. 유니코드엔 초중종성 정보가 있는 한글자소와 없는 한글자소가 따로 있는 덕분에 약간 헤맸음
      이 내용은 별도 포스팅 예정

2010년 1월 28일 목요일

이놈의 맵피! 그만 좀 죽어라!

내 차의 네비게이션은 엑스로드 v7 시즌2이고, 여기 탑재된 소프트웨어는 맵피다.

맵피를 예전 사용하던 Mio138 시절부터 계속 쓰고 있었고, 별 불만 없이 쓰고 있었는데, 최근 불안정함이 많이 늘었다.
매번 업데이트가 공개될 때마다 업데이트를 해왔는데, 최근에 많이 불안정해진 것이 심하게 느껴진다.


13초 경에서 그냥 뻗음


이젠 단순한 불안정함이 아니라 아주 달리다가 그냥 다운되는 경우도 발생하고 있다.
지방 출장 가면서 굉장히 짜증이 많이 났다. 잘 모르는 지역에서 툭하면 다운되다니!

SD 메모리를 완전히 포맷한 뒤에 오늘 최신 업데이트를 다운받아 설치했다.
이런 식으로 계속 다운되면 극단의 조치를 고려해봐야겠다.


2010년 1월 26일 화요일

텍큐닷컴 버그: "이메이징 소개"

텍스트큐브닷컴 및 티스토리의 이메이징 기능은 이미지를 멋지게 표현해주는 간편하면서도 강력한 도구다.

또한, 단순하면서도 명확한 도구답게 별다른 버그도 없다.

 

하지만, 이메이징 소개를 클릭해보면 버그를 발견할 수 있다.

 

우클릭 한 방이면 언제나 볼 수 있는 이 화면

 

무엇인가를 도와준다고 하는 것 같은데, 뭘 도와달라고 말할 지 엄두가 나지 않는다.

 

이거 뭐 외계어도 아니고... (FF3, IE8 모두 같은 화면임)

 

그런데, 인코딩을 한글로 바꾸면 나오기는 한다. 그런데...

 

여기에도 egoing님의 흔적이 있다. egoing님은 웹 계의 가우스인 것이다!

 

이번엔 php 오류가 발생한다!

 

텍큐닷컴. 요즘 많이 바쁜가?

 

2009년 12월 8일 화요일

텍큐닷컴은 구글 크롬과 잘 어울리지 않는다. 아직은.

티스토리에서 텍큐닷컴으로 옮긴지 하루가 조금 넘게 지났다.

원래는 크롬을 메인 브라우저로 사용하며, 텍큐닷컴을 운용하는 것이었는데, 결국 크롬은 다시 보조 브라우저로 내려갔다.
몇 가지 이유 때문인데, 그 이유들은 아래와 같다.


1. 여전히 해결되지 않는 댓글창 글자크기 버그

댓글창을 띄우면 글자크기가 여전히 작다.

이건 정확히는 크롬 자체 버그다.
창에 지정된 글자 크기가 <textarea>에도 적용되어야 하는데, 제대로 상속되지 않는 것.

어쨌거나 이 글자 크기 문제는 큰 불편은 아니지만, 은근히 신경쓰인다.




2. WYSIWYG 모드에서 엔터를 입력하면 <div> 태그로 처리함

WYSIWYG 모드에서 엔터를 입력하면 어떤 태그로 처리해야 하는가의 문제는 의외로 까다롭다.

개념적으로는 아마도 <p> 태그가 적절한 것 같다. 하지만, 내부 html 코드에 문제가 끼어들 여지가 너무 많다.
IE가 <p> 태그를 사용하는데, 가끔 태그가 꼬여 브라우저마다 화면이 다르게 보이는 것이 바로 여기서 발생하는 문제다.

가장 문제가 없는 Firefox는 아무 태그도 사용하지 않고, 단순히 <br />을 삽입한다.
즉, 쉬프트+엔터와 엔터가 똑같이 동작하는 것이다.
당연히 별로 벌어질만한 위기상황이 없다.

Chrome<div> 태그로 처리한다.


별로 문제의 여지도 없고, 같이 삽입되는 텍스트상자 역시 <div> 태그를 사용하기 때문에 태그가 심하게 꼬일 일도 없다.
(정확히는 꼬이면 눈앞에서 바로 확인이 가능한 것임)

그런데, 이게 편집 중에는 난감한 문제를 일으킨다.

a. 텍스트상자는 내부에 <div> 태그로 둘러쌓인 영역이 있으면 텍스트상자 처리를 하지 못함

b. Syntax Highlighter를 제대로 처리하지 못함

특히, b는 심각한데, SH의 닫는 태그인 [ /code ] 를 처리하는 과정에서 첫줄만 태그로 변환하는 버그를 보여준다.
(별도 포스팅 예정)



3. Syntax Highlighter 에서 소스 코드 복사가 이상하게 동작함

이미 알려진 버그지만, 구글 코리아에서는 그닥 고칠 생각이 없는 것 같다.
크롬에서 발생하는데, SH에서 소스 코드 복사를 클릭하면 일부 공백이 아래처럼 복사된다.


소스 보기를 한 뒤에 이를 다시 복사하면 이 문제를 피해갈 수는 있다.


덧1. 이 문제는 정확히는 SH의 문제는 아니고 SH와 텍스트큐브 계열의 충돌 정도로 보는 게 적당함.
원작자 홈페이지에서는 전혀 이런 문제가 발생하지 않음

덧2. 원래 이 문제는 크롬에서만 발생하는 것을 확인했었는데, 지금 보니 Firefox에서도 발생함. 에효~

2009년 11월 14일 토요일

Syntax Highlighter 2.1.364 업데이트

무려 1달이나 전에 Syntax Highlighter가 2.1.364로 업데이트되었다.
이제야 알았다는 아쉬움을 뒤로하고, 바로 티스토리에 적용했다.

사용자 삽입 이미지


이번 패치 역시 많은 양의 버그 패치와 더불어 약간의 기능 추가 및 변화가 있다.

수정된 주요 기능은 아래와 같다.

- ruler 기능 제거. 아무도 안 쓰는 것 같아서임
- line wrapping이 모든 환경에서 정상 작동
- expand source를 show source로 변경
- <pre> 태그 외에 <script> 로 사용 가능 (updated usage page)
- 테마 파일 구성의 변경 (즉, 기존에 자체적으로 만든 테마가 있으면 사용 불가 ㅡ.ㅡ;)

더 자세한 변경된 기능은 공식 홈페이지에 올라온 변경 내역를 참고하기 바란다.

이 중 가장 주목할만한 기능은 <script> 태그이다.
기존의 사용법은 아래와 같았다.


이것을 아래와 같이도 쓸 수 있다.


이렇게 <script> 태그를 사용하면 아래와 같은 장단점이 있다.

장점
- 티스토리 새관리의 개같은 버그<pre> 태그에 지맘대로 <br />을 붙이는 버그에서 해방
- <pre>를 사용하면 하일라이팅 되지 않은 코드가 보였다 하일라이팅된 모양으로 변하는데, 이런 깜박임이 없어짐

단점
- 위지윅 편집기에서 볼 수 없음 ㅡ.ㅡ;


설치는 아래의 파일을 다운받아 압축푼 뒤, 스킨 업로드로 올린 뒤에 스킨을 수정하면 되며, 세부 수정 방법은 티스토리에 Syntax Highlighter 2.0 적용하는 방법 포스트를 참고하면 된다.


이 스킨에는 기존에 공개한 스킨에 포함된 아래의 패치가 모두 포함되어있다.

- 치환자 입력 가능
- 언어팩 추가: MSX, AviSynth
- Copy to Clipboard 버그 수정


덧. 이 버전을 적용하면서 커맨트 영역이 제대로 출력되지 않는 문제가 발생했다.
여러모로 확인한 결과 스킨 css의  .post  .commentsSH의 .comments충돌한다는 것을 알게되었다.

이 문제를 해결하려고 Firefox+Web DeveloperInternet Explorer 8개발자 도구를 사용해봤는데, 결국 IE8로 찾았다.

IE8이 여전히 다수의 문제점을 안고 있는 브라우저이긴 하지만, 엄청난 발전이 있던 것도 사실이다.
IE8의 개발자 도구는 css의 충돌을 찾는데 있어서 최적의 도구이다.

사용자 삽입 이미지

저렇게 엔터를 끼워넣은 적이 없다구!


2009년 10월 27일 화요일

블로그 백업/복원 중 발견한 티스토리 버그

티스토리 백업 xml 파일의 앞부분은 이렇게 생겼다.

<?xml version="1.0" encoding="utf-8" ?>
<blog type="tattertools/1.1" migrational="true">
<setting>
(이하생략)

여기서 migrational은 true 또는 false 값을 갖는데, 의미는 아래와 같다.

true: 이 백업파일을 복원하면 원래 있던 데이터를 삭제하지 않고 내용을 추가함
flase: 이 백업파일을 복원하면 원래의 데이터를 삭제하고 내용을 복원함

그런데, 블로그를 정리하는 과정에서 migrational 값이 true든, false든 언제나 원래의 데이터를 삭제하지 않는다는 것을 알았다.
그 결과...

사용자 삽입 이미지

같은 글이 3번이나... 이게 뭐니, 이게...


백업 복원시 migrational을 true로 하든, false로 하든, 언제나 원래의 데이터를 삭제하지 않는다.
따라서, 위 캡쳐와 같이 3번씩이나 데이터가 겹치는 현상도 발생할 수 있다.

티스토리는 제발... 기능 패치를 하지 않더라도... 버그부터 잡아주면 좋겠다.


2009년 10월 16일 금요일

해결해줄 기미가 안 보이는 티스토리 버그들

1. 새 관리의 치명적 버그로 새 관리는 사용 불가

<pre> 태그를 이용해 코드를 입력하면 자동으로 태그가 추가되는 버그가 있어 새 관리를 사용할 수 없다.

코드를 입력하지 않는 블로그야 상관이 없지만, 여기처럼 심심하면 한번씩 코드를 올리는 블로그에선 사용 불가다.
기존 관리에서 코드를 입력해도 새 관리에서 열기만 하면 개떼같은 <br /> 태그가 자동삽입되니 근처에도 안 간다.

이 문제를 얘기하니 확인해보겠단 애매한 답 뿐이다.

사용자 삽입 이미지

두 달이 되어가는데, 확인이나 했을까 모르겠다



2. 기존 관리로는 크롬에서 위지윅 편집 불가

크롬에서 기존 관리 모드를 사용하면 위지윅 편집기가 동작하지 않는다.
많은 사람들이 이 문제를 제기했더니 나름 수정을 했다는데, 오직 새 관리에서만 위지윅 편집기가 동작한다.

새 관리의 버그도 해결하지 않고, 기존 관리에서 사용도 어렵게 해놓고는 간단한 답으로 도망간다.
"티스토리는 인터넷 익스플로러와 파이어 폭스에 최적화되어 있습니다."

이해를 못 하는 것 같은데... 크롬에 최적화를 해달라는 게 아니라 크롬에서 정상적인 동작만 되게 해달란 거다.

참, 이 문제는 오페라에서도 똑같이 발생한다.


3. 아직도 여전한 스킨 버그

스킨에서 비밀글 여부 체크 박스의 코드는 아래와 같다.
이 코드는 티스토리 스킨 제작 가이드에서 그대로 가져온 것이다.
<input type="checkbox" name="[#\#_rp_input_is_secret_#\#]" class="checkbox" />
<label for="secret"> 비밀글 </label>

하지만, 이 코드는 제대로 동작하지 않는다.
rp_input_is_secret라는 치환자는 절대로 치환되지 않는 신비의 치환자다. 그냥 사라진다.

그런데, 자동으로 생성되는 코드인 addComment엔 아래와 같은 줄이 있어 name이 "secret"인 체크박스만 인식한다.
  if(oForm["secret"] && oForm["secret"].checked)
queryString += "&secret_" + entryId +"=1";

즉, 비밀글 체크박스를 동작하게 하려면 아래와 같이 써야 하는 것이다.
<input type="checkbox" name="secret" class="checkbox" />
<label for="secret"> 비밀글 </label>

그리고, 방명록에도 같은 문제가 있으며, 같은 방식으로 해결할 수 있다.


2009년 9월 6일 일요일

Visual Studio 계열 쉬프트(>>) 연산 버그의 원인

김우승님의 댓글을 보고 ISO/IEC 9899:201x를 찾아 읽어본 결과, 아래 내용은 버그가 아님.
C/C++는 전체 비트수(즉, long int는 32비트이니 32)보다 큰 숫자의 쉬프트는 정의하지 않음!
그냥 '이런 뻘짓을 했는데, 다 헛소리구나'하는 참고용으로만 읽을 것.

visual studio의 쉬프트연산 버그란 글을 보곤 원인이 궁금해졌다.


위 글의 요지는 아래와 같은 연산 결과가 Visual Studio 2005에선 0이 아니라 1이란 거다.

i=0;
i|=1>>(32-i);

확인해보니, 이 버그는 아래와 같은 특성을 보인다.

1. VC++6.0, VS.Net2003, VS2005에서 똑같이 발생함
2. 오직 디버그 모드에서만 나타남. 릴리즈 모드에선 정상적인 결과인 0을 출력함

상식적으로야 1>>(32-0)은 당근빠따 0인데, 왜 1이라고 구라를 치는가 궁금해져서 컴파일 된 어셈블리 코드를 뽑아봤다.


1. 디버그 모드

; 35   :     int i;
; 36   :     i=0;

    mov    DWORD PTR _i$[ebp], 0

; 37   :     i|=1>>(32-i);

    mov    ecx, 32                    ; 00000020H
    sub    ecx, DWORD PTR _i$[ebp]
    mov    eax, 1
    sar    eax, cl
    or    eax, DWORD PTR _i$[ebp]
    mov    DWORD PTR _i$[ebp], eax

그렇다! 바로 저것이 원인인 것이다. (참 쉽죠잉?)

쉬프트 로테이트 연산엔 총 4가지가 있는데, >>는 이 중에서 보통 sar로 컴파일된다.
그리고, VC에선 속도를 향상시키기 위해 쉬프트 횟수 인자를 cl로 넘긴다.

이게 왜 문제가 되냐면 x86 CPU에선 sar에서 cl을 사용할 때 하위 5비트만 사용하기 때문이다.
인텔에서야 컴파일러 만드는 사람이나 어셈블리 프로그래머가 알아서 하길 바랬지만, 컴파일러 만드는 쪽에서 직무유기를 하면 이런 결과가 나오는 것이다.

참고로, x86 어셈블리에선 32비트 ecx 레지스터의 하위 16비트를 cx라고 한다.
그리고, 다시 이 cx 레지스터를 상위/하위 8비트로 나눠 각각 ch, cl이라고 한다.

그럼 다시 코드로 돌아가보자.
ecx의 값이 32-0 == 32이고, eax의 값이 1인데 sar eax, cl을 했다.
이 때 cl의 값은 물론 32이지만, sar 연산을 할 땐 이 중 하위 5비트만 사용되므로 sar eax, 0이 되는 것이다.

따라서 결과는 1 >> 0 == 1.


2. 릴리즈 모드

앞에서도 얘기했듯이, 이 버그는 오직 디버그 모드에서만 나타난다.
릴리즈 모드에선 얼마나 대단한 수를 써서 안 나오나 쳐다봤다.

; 35   :     int i;
; 36   :     i=0;
; 37   :     i|=1>>(32-i);
; 38   :     printf("%d\n",i);

    push    0
    push    OFFSET FLAT:??_C@_03PMGGPEJJ@?$CFd?6?$AA@
    call    _printf

이런! 컴파일 타임에 계산해주고 끝냈기 때문에 문제가 발생하지 않은 것 뿐이다.

더 확인해보니, 인자를 좀 복잡하게 넘기면 릴리즈 모드에서도 똑같은 문제가 발생한다.
다시 말해 릴리즈 모드가 결코 안전하지 않다는 것이다!


컴파일러 만드는 것이 결코 쉬운 일도 아니고, Visual Studio의 C++ 컴파일러가 결코 듣보잡 수준은 절대로 절대로 아니지만, 이런 기본적인 버그는 아무리 생각해도 짜증난다.
C++ 프로그래머가 C++ 세상에서만 고민하면 되지, 어셈블리 세상까지 와서 고민해야 되겠는가!!

2009년 8월 27일 목요일

오직 IE6만을 위한 iNove스킨 패치 (젠장!)

독일 출장중에 처음으로 올리는 포스트임. v^.^v

독일에 출장을 왔는데, 여기 사무실 PC엔 IE6만 깔려있다.
게다가 관리자 권한 따윈 절대 주지 않기 때문에 이놈의 구닥다리 웹브라우저를 쓸 수 밖에 없다.

덕분에 IE6에서 iNove 스킨을 유심히 쳐다볼 수 있었는데, 메뉴바가 약간 이상하게 나오는 문제가 있더라.

사용자 삽입 이미지

메뉴바가 1픽셀 아래로 밀려서 나옴


다른 브라우저에서는 아무 문제 없는데, IE6에서만 말썽을 일으켰길래 IE6 핵을 이용해서 문제를 해결했다.

우선 스킨 편집으로 가서, style.css에서 아래와 같은 내용을 찾는다.

#navigation {
    margin:1px 0;
}

이 부분을 아래와 같이 수정한다.

#navigation {
    margin:1px 0 !important;
    margin:0;
}

IE6의 버그를 이용하는 수정으로 정상적인 브라우저는 2행을 적용해야 하지만, IE6는 같은 스타일을 두번 지정하면 무조건 마지막에 지정된 스타일을 적용하여 3행을 적용한다. 희안한 놈.

사용자 삽입 이미지

티끌만치 나아지긴 했지만, 구닥다리 브라우저란 점은 변함이 없다


2009년 6월 18일 목요일

iNove 스킨 버그(?) 3가지 수정 (내용 추가)

1. 각주의 인덱스를 숫자로 변경

 iNove 스킨을 쓰면 각주(footnote)의 인덱스가 숫자 대신 불릿으로 표시된다.
스킨 제작시의 의도일 수도 있지만, 본문과 숫자로 연결되다 보니 좀 불편하다.

이는 ordered 와 unordered list 태그의 속성을 일괄적으로 부여해서 나타나는 현상이다.
style.css에서 아래의 내용을 찾는다.

.article li {padding-left:10px; list-style-position:inside; list-style-type:disc;}

이 부분을 아래와 같이 수정한다.

.article ol li {margin-left:25px; }
.article div ol li {margin-left:30px; }
.article ul li {padding-left:25px; list-style-position:inside; list-style-type:disc;}

또, BBCode에서 [list] 태그를 사용하면 앞에 숫자가 제대로 나오지 않는다.
이것 역시 원인은 마찬가지다. 이것을 해결하려면 style.css에서 아래 내용을 찾는다.

#commentlist ol, 
#commentlist li {
    list-style:none;
}

이 부분을 아래와 같이 수정한다.

#commentlist ul li { 
    list-style:none;
}

#commentlist .nobbcode ol li {
    list-style-position: inside;
}

수정된 결과는 아래와 같다.

사용자 삽입 이미지

BBCode의 [list] 태그 예제는 생략. ^^;




2. 하단 페이지 번호중 현재 페이지 표시

하단의 페이지 인덱스 번호에서 현재 페이지가 별도로 표시되지 않는다.
그저 마우스 커서를 갖다대었을 때 커서의 모양으로만 식별이 되는데, 이게 은근히 불편하다.

현재 페이지가 표시되게 하려면 style.css에 아래의 내용을 추가하면 된다.

#pagenavi span.selected {
    color:#fff;
    font-weight:bold;
    background-color:#2970A6;
}

수정된 결과는 아래와 같다.

사용자 삽입 이미지



3. pre 태그에서 따옴표 표시 없앰

Syntax Highlighter에서는 코드를 <pre> 태그로 감싼다.
그런데, iNove 스킨에서는 <pre> 태그는 인용(<blockquote>)과 같은 스타일로 지정이 되어있다.
그래서, 코드를 변환하기 전에 따옴표가 화면에 표시가 되는데, 이게 은근히 거슬리더라.

이 문제(?)를 수정하려면 <blockquote>와 <pre> 태그의 스타일을 구분해서 지정하면 된다.
style.css에서 아래의 내용을 찾는다.

blockquote, pre {
    background:#F5F4F5 url(images/blockquote.png) 3px 3px no-repeat;
    border:1px dashed #CCC;
    padding:8px 12px 8px 36px;
    margin:5px 0;
}

이 부분을 아래와 같이 수정한다.

blockquote {
    background:#F5F4F5 url(images/blockquote.png) 3px 3px no-repeat;
    border:1px dashed #CCC;
    padding:8px 12px 8px 36px;
    margin:5px 0;
}

pre {
    border:1px dashed #CCC;
    padding:4px 8px;
    margin:5px 0;
}

수정된 결과는 아래와 같다.
(문법이 변환되기 전의 잠깐의 모습임)

사용자 삽입 이미지


2009년 6월 6일 토요일

iNove 스킨 버그 수정: 댓글 아이콘 버그 수정

사용자 삽입 이미지

댓글 아이콘이 좀 밀린다. ㅠ.ㅠ


은근히 신경이 쓰였던 버그인데, 귀차니즘으로 넘어가려고 했다.
그런데... miru님께서 댓글을 통해 지적을 하셨다.

지적을 받았는데도 수정을 하지 않는 건 도리가 아니다. 그래서 수정했다!
(이거 왠지 군대 필이군...)

이 문제의 원인은  아이콘 스타일의 버그가 아니라 아이콘 주변 흰 영역의 폭이 잘못 지정되어 있기 때문이다.
이 문제를 해결하려면 style.css에서 .cmtauthor 스타일을 조금만 수정하면 된다.
일단 아래와 같은 내용을 찾는다.

.cmtauthor {
    float:left;
    width:81px;
    text-align:center;
    position:relative;
    overflow:hidden;
}

여기서 폭(width)의 속성을 80px로 수정한다. 그럼 아래와 같이 된다.

.cmtauthor {
    float:left;
    width:80px;
    text-align:center;
    position:relative;
    overflow:hidden;
}

수정된 결과는 아래와 같다.

사용자 삽입 이미지

짜잔~ 이제 깔끔하다!


덧. 이 버그는 FireFox 3에서 확인했다.

2009년 5월 3일 일요일

iNove 스킨 버그 수정: 트랙백 걸기 추가

사용자 삽입 이미지

화면 구성을 조정하는 과정에서 E, T, D로 짧게 적었습니다


헨리 님께서 공개하신 iNove For Tistory 스킨은 워드프레스 스킨을 변환한 것인데, 디자인과 색감이 깔끔해서 많이들 사용하고 계십니다.
그런데, 약간의 버그가 있습니다.

1. 본문 제목 부분에 트랙백 및 삭제 아이콘이 없어 트랙백을 걸거나 삭제하려면 관리메뉴로 가야 함
2. 불필요한 편집 메뉴가 있음

이 버그를 수정하는 방법은 아래와 같습니다.


1. 파일 추가

새로 추가할 트랙백 및 삭제 기능에서 사용할 아이콘을 추가합니다.
아래 파일을 다운받아 압축을 푼 뒤 관리메뉴의 스킨→직접 올리기에서 올립니다.



2. css 추가

추가할 기능에서 사용할 아이콘을 css에 등록합니다.
아래 내용을 style.css 맨 끝에 추가하면 됩니다.
/* trackback icon 버그패치 */
.post .edtrackback,
.post .eddelete {
    background:url(images/icons2.gif) no-repeat;
    padding-left:22px;
    height:16px;
    line-height:16px;
    display:block;
    font-size:11px;
}

.post .eddelete {
    background-position:0 -16px;
}
/* trackback icon 버그패치 */


3. 트랙백/삭제 메뉴 추가

skin.html에서 아래와 같은 부분을 찾습니다. 원본 파일의 경우 189행부터 시작됩니다.
<s_article_rep>
    <div class="post">
        <h2><a href="[#\#_article_rep_link_#\#]">[#\#_article_rep_title_#\#]</a></h2>
        <div class="info">
            <span class="date">[#\#_article_rep_date_#\#]</span>
            <div class="act">
                <span class="comments"><a href="[#\#_article_rep_link_#\#]#commentlist"><s_rp_count>[#\#_article_rep_rp_cnt_#\#] Comments</s_rp_count></a></span>
                <s_ad_div>
                    <span class="editpost"><a href="[#\#_s_ad_m_link_#\#]">Edit</a></span>
                </s_ad_div>
            </div>
            <div class="fixed"></div>
        </div>
표시해 둔 9행 다음에 아래의 두 줄을 추가합니다.
<span class="edtrackback"><a href="#" onclick="[#\#_s_ad_t_onclick_#\#]">Trackback</a></span>
<span class="eddelete"><a href="#" onclick="[#\#_s_ad_d_onclick_#\#]">Delete</a></span>


4. 불필요 편집 메뉴 삭제

skin.html에서 다음과 같은 부분을 찾습니다. 원본 파일의 경우 167행부터 시작됩니다.
<s_article_protected>
    <div class="post">
        <h2><a href="[#\#_article_rep_link_#\#]">[#\#_article_rep_title_#\#]</a></h2>
        <div class="info">
            <span class="date">[#\#_article_rep_date_#\#]</span>
            <div class="act">
                <s_ad_div>
                    <span class="editpost"><a href="[#\#_s_ad_m_link_#\#]">Edit</a></span>
                </s_ad_div>
            </div>
            <div class="fixed"></div>
        </div>
여기서 표시된 6~10행을 삭제합니다.

이것으로 스킨의 버그 수정은 끝났습니다.
멋진 스킨 잘 쓰시기 바랍니다.


2009년 4월 28일 화요일

티스토리 새관리 편집기의 버그: 자동으로 태그가 추가됨

티스토리에서 새관리를 오픈한 것이 2008년 8월 28일이니 지금으로부터 딱 8개월 전입니다.
하지만, 여러가지 이유로 사용자들은 새관리를 많이 사용하지 않고 있습니다.

개인별 호불호가 나뉘겠지만, 제가 아는 대다수의 티스토리 유저분들은 새관리를 싫어하시더군요.
특히 미움을 받는 놈은 편집기입니다.
이 놈은 개선(?) 이후에 불편해졌을 뿐만 아니라 버그가 좀 있어 도저히 쓸 수가 없습니다.

그 중 하나가 <pre> 태그에 관련된 버그로 <pre> 태그로 내용을 감싸면 편집기가 마음대로 엔터를 추가합니다.

이 버그가 신경쓰이는 것이... Syntax Highlighter를 적용하려면 <pre>를 꼭 써야하거든요...

일단 아래와 같은 내용을 입력했습니다.
test 아래 부분의 간단한 C 코드가 <pre> 태그로 감싼 부분입니다.

사용자 삽입 이미지

이것을 HTML 보기로 보면 아래와 같이 나옵니다.
여기까진 별 문제가 없어보입니다만...

사용자 삽입 이미지

이걸 다시 WYSIWYG 모드로 보면 아래와 같이 변신(?)합니다. 젠장!

사용자 삽입 이미지

어떻게 변했는지를 HTML 모드에서 보면 아래와 같은 코드를 볼 수 있습니다.

사용자 삽입 이미지

이걸 다시 WYSIWYG 모드로 보면 아래와 같이 또 변신합니다. 젠장! 젠장!

사용자 삽입 이미지

이번엔 도대체 어떻게 변했는지를 HTML 모드에서 보면 아래와 같은 코드를 볼 수 있습니다.

사용자 삽입 이미지

그럼... HTML 모드로 안 가면 되지 않느냐... 이게 안 됩니다.
<pre> 태그를 넣으려면 무조건 HTML 모드로 가야 하기도 하지만, 근본적으로 편집을 끝내고 저장하면 저장하는 과정에서 일단 <br/>을 추가하고 시작합니다.

기능 개선을 게을리 하는 것도 답답하지만, 이런 근본적인 버그는 제발 좀 잡아주면 좋겠습니다.


2009년 4월 5일 일요일

BBCode for Tistory 2.5 재업

BBCode for Tistory 2.5 대망의 업데이트를 포스팅하고서 느꼈던 뿌듯함도 잠시...
개뿔님께서 [code] 태그가 이상하게 동작한다는 지적을 날려주셨습니다.

단순하게 [code] 태그를 <pre>로 변환했는데, 그게 문제였던 것입니다.
티스토리는 댓글의 각 행에 자동적으로 <br> 태그를 붙여주는데, 이게 <pre>와 만나면 두 줄씩 떨어지는 겁니다. 젠장찌개.

이 문제를 해결한 버전을 다시 올립니다.


설치방법 등은 지난 포스팅을 참조하시기 바랍니다. ㅠ.ㅠ

사용자 삽입 이미지

이런 모양을 보기가 쉽지는 않았습니다.




2009년 3월 27일 금요일

IE8에서야 정상이 되어가는 자바스크립트 엔진. 하지만...

M$에서 Internet Explorer 8.0을 공개했습니다.
하지만, IE8에선 여러가지 문제점이 터지고 있더군요.

저에겐 그 중 하나가 BBCode for TiStory 2.4오동작을 한다는 것이었습니다.
원인을 확인해보니 일관성이 없는 IE의 js 엔진억지로 맞춰놓은 코드가 원인이었습니다.

아래는 HTML 소스 전체를 뒤져서 <div class="bbcode">가 발견되면 발견된 메시지 박스를 띄우는 코드입니다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>IE javascript</title></head>
<body>
<div>no class name</div>
<div class="bbcode">class name : bbcode</div>
<script type="text/javascript">
    var tags = document.getElementsByTagName('div');

    for (var i = 0; i < tags.length; i++)
        if (tags[i].getAttribute('class') == 'bbcode')
            alert("non MSIE!");
</script>
</body></html>

이 별 특성 없는 코드는 Opera, Firefox, Chrome 에서는 버전에 상관없이 잘 동작합니다.

사용자 삽입 이미지

하지만, 대한민국의 국민 웹브라우저 IE에서는 좀 다릅니다.
IE6, IE7에서는 정상동작을 하지 않습니다.
정확히는 getAttribute() 함수를 씹어먹어버립니다.

오류도 띄우지 않습니다. 그야말로 "아무것도 묻지도 따지지도 않고" 넘어갑니다.

이 코드를 IE6, IE7에서 동작시키려면 아래와 같이 변경해야 합니다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>IE javascript</title></head>
<body>
<div>no class name</div>
<div class="bbcode">class name : bbcode</div>
<script type="text/javascript">
    var tags = document.getElementsByTagName('div');

    if (/msie/i.test (navigator.userAgent)) { // IE6, 7만을 위하여...
        for (var i = 0; i < tags.length; i++)
            if (tags[i].getAttributeNode('class').value == 'bbcode')
                alert("MSIE!");
    }
    else
    {
        for (var i = 0; i < tags.length; i++)
            if (tags[i].getAttribute('class') == 'bbcode')
                alert("non MSIE!");
    }
</script>
</body></html>

추가된 if (/msie/i.test (navigator.userAgent)) 는 브라우저의 userAgent를 읽어 msie인지 확인하는 부분입니다.
그리고, getAttribute() 함수 대신에 getAttributeNode() 함수를 사용해서 동일하게 동작하도록 만들었습니다.
이렇게 수정하면 IE6, IE7에서도 동일하게 동작합니다.

그런데... 이 코드는 불행하게도 IE8에서는 동작하지 않습니다.

사용자 삽입 이미지

이게 뭐냐고!!!!!!!!!


IE8에서는 getAttributeNode() 함수의 동작방식이 정상적으로 바뀌었기 때문입니다.
IE8을 포함한 거의 모든 웹브라우저에서 정상동작하도록 하려면 아래와 같이 변경해야 합니다.

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>IE javascript</title></head>
<body>
<div>no class name</div>
<div class="bbcode">class name : bbcode</div>
<script type="text/javascript">
    var tags = document.getElementsByTagName('div');

    for (var i = 0; i < tags.length; i++)
        if (tags[i].getAttributeNode('class') &&
            tags[i].getAttributeNode('class').value == 'bbcode')
            alert("MSIE!");
</script>
</body></html>

이제야 MS의 웹브라우저가 정상적인 궤도에 가까워졌습니다.

하지만, 이 상태로 만세를 불러줄 수만은 없는 것이... IE6, IE7에만 최적화된 페이지가 너무나 많기 때문입니다.
더불어 이렇게 버그 투성이로 렌더링하는 것이 소위 "호환성 보기"의 실체란 점도 있습니다.

부디 우리나라의 웹 개발자들이 특정 회사의 브라우저에 종속적이지 않고 웹표준을 준수하면 좋겠습니다.
아마 그랬으면 이런 원초적인 버그가 진작에 해결되지 않았을까요?


덧. 이 사태의 진정한 문제는 IE6, IE7 때문에 getAttribute() 함수 자체가 못쓰는 함수가 되었다는 점입니다.



2008년 11월 3일 월요일

팀블로깅에 대한 기본 개념이 없는 TiStory!

이웃 블로거인 페니웨이™님과 가끔 팀블로깅을 합니다.
전속 팀블로깅은 아니고, 이벤트가 있을 때 하기로 했고, 지금까지 2번 글을 올렸습니다.

괴작열전 - 카지노 로얄(1967) : 페니웨이™, Why So Serious
퀀텀 오브 솔러스 - 소설 vs 영화의 차이점 : 페니웨이™, Why So Serious

전속이 아니기 때문에 글을 올릴 때만 권한을 부여하고, 이후 다시 권한을 차단하는 방식으로 하기로 했습니다.
그런데… 글을 올린 뒤에 권한을 차단하면 비회원으로 변경되는군요.

내가


그래도, 태터데스크(첫화면)엔 흔적이 남았더군요.
여긴 대화명이 제대로 나옵니다.
없애려면 아예 흔적을 없애던지!!!

티스토리에게 버림받은 팀블로거의 마지막 흔적




2008년 10월 12일 일요일

언제나 기대(?)를 저버리지 않는 알집의 오류

개인적으로 알집을 무척 싫어합니다.
제가 싫어하는 이유들은 대략 아래와 같습니다.

1. 멀쩡히 공개되어있는 압축방식순수 국내 기술로 만든 압축방식이라 광고
2. 한번 설치하면 확장자를 죄다 연결해서 레지스트리를 엉망진창으로 만드는 뻘짓
3. 압축을 하거나 푸는 과정에서 CRC 확인따위는 하지 않음
4. 압축률도 엉망인 것이 속도는 우라지게 느림

출장 중에 paint.net을 사용할 일이 있어 다운받았는데, 알집이 설치되어 있어 이것으로 설치본의 압축을 풀려고 했습니다.
그러자, 아래와 같은 CRC 오류가 발생하더군요.

사용자 삽입 이미지

최신버전인 7.3으로 기본적인 zip의 압축도 잘 못 푸는 우리의 알집


오~ 그래도 이게 꼴에 CRC 확인을 하나보구나 싶어 다시 다운받았는데, 아무리 다운을 다시 받아도 같은 오류가 발생했습니다.
설마하는 생각으로 토탈커맨더로 압축을 풀어보니 잘 풀릴 뿐더러 설치도 이상없이 되었습니다.

즉, 알집은 기본적인 기능인 zip 파일의 압축 해제도 제대로 못 하는 한심한 프로그램입니다.
압축프로그램으로서의 기본이 전혀 안 된, 볼 것 없는 프로그램이죠. 에효~

  

제정신이 아닌 것 같은 티스토리: 데이터가 사라진 것 같음

최근 티스토리의 첨부파일이 사라졌다는 얘기가 여기저기에서 들리고 있습니다.
저도 메인 블로그는 괜찮은 것 같은데, 세컨 블로그인 Why So Serious?는 당한 것 같더군요.
(제 경우는 정확히는 8월 15일 이전의 첨부는 다 날아갔습니다)

혹시나해서 블로그 전체를 백업해서 데이터를 읽어보니 첨부가 사라진 것이 거의 확실합니다. ㅡㅡ;;;

백업파일 중 비교적 최근의 데이터는 아래 그림과 같이 <attachment> 태그 내에 <content> 태그가 있고, 그 속에 데이터가 있는 것을 볼 수 있습니다.

사용자 삽입 이미지

하지만, 대부분의 데이터는 아래와 같이 깔끔(?)합니다. ㅡㅡ;;;
(참고로, 첨부파일을 제외하고 백업하면 아래와 같은 모양이 됩니다)

사용자 삽입 이미지

아무래도 데이터는 사라진 것 같고, 티스토리 측에선 해결책이 없으니 그냥 입을 다물고 있는 듯 합니다.
이 문제에 대해서 티스토리에서 빨리 공식적인 발표를 했으면 좋겠습니다.

그리고, 데이터가 사라진 것이 맞다면 티스토리는 정말 제정신이 아닌 것 같습니다.

  

2008년 10월 4일 토요일

티스토리의 링크 주소 자동 인식 버그

태터툴즈/텍스트큐브의 전통적인 버그 중 하나가 링크트랙백링크명(블로그 이름)을 잘못 인식하는 경우가 있다는 것입니다.
특히, 작은따옴표를 어색하게 인식하는 경우가 많은데, 그 결과는 보통 아래와 같습니다.

이 문제는 티스토리의 링크를 제외하고는 거의 패치가 된 것 같은데, 아직 티스토리의 링크에서는 이 문제가 남아있습니다.

이 문제가 발생하는 모습을 보려면 간단합니다.
블로그명에 작은따옴표가 있는 블로그를 찾은 뒤 링크에 추가하면 됩니다.
물론, RSS 주소로 가져오기 기능을 이용해야 합니다.

이게 대체 뭥미!


이 문제는 물론, 사용자가 알아서 \를 지워주면 됩니다만, 이러면 안되죠...
새로운 기능 추가에 매진하는 것도 좋지만, 사용자는 새로운 기능 열 개보다 버그 패치 하나가 더 좋다는 것을 알아주면 좋겠습니다.

참고로, 텍스트큐브닷컴에서는 아래와 같이 정상적으로 동작합니다.


덧. 얼마전까진 설치형 텍스트큐브로 트랙백을 보내면 마찬가지 문제가 발생했는데, 지금은 발생하지 않는 것 같습니다.
아마도 패치가 이루어진 것 같습니다.


  

2008년 6월 7일 토요일

티스토리에서 정말 고쳐주지 않는 LineCalendar 버그

사용자 삽입 이미지


티스토리 포럼에 몇 번 적고, 따로 포스팅도 했지만, 여전히 확인해보겠다는 말 외에 조치되는 모습이 없어 상세히 포스팅합니다.

티스토리에서 제공하는 플러그인 중 LineCalendar는 깔끔한 디자인을 유지하게 도와주는 좋은 플러그인입니다.
하지만, 명색이 달력임에도 불구하고, 날짜 표시 기능에 버그가 있습니다.
(제발 기본기능에 충실합시다. 업글보다 중요한 것은 디버깅입니다!)



LineCalendar에서는 새벽 0시부터 1시 사이에는 어제 날짜에 오늘이라고 표시됩니다.
(이 글을 적고 있는 지금이 0시 37분인데, 여전합니다)

웃긴 것은 마지막으로 글을 올린 날짜는 정상적으로 제대로 표시된다는 점입니다.

저 위의 그림을 보시면 알 수 있듯이, 6월 7일 0시 20분에 글을 올렸을 때
LC글 올린 날짜6월 7일,
LC오늘 날짜6월 6일,
윈도우 시스템 시계6월 7일을 가리킨다는 것이죠.

지난번 이 버그를 간략히 포스팅했을 때가 5월 23일이니 2주가 지났습니다.
그 날 득달같이 "내부적으로 검토 후 답하겠다"고 답글을 달아줬지만,
2mb 정부의 관료들처럼 걍 패스하는 분위기입니다.

워낙 증세가 뚜렷한 버그라 검토하는 시간이 많이 걸릴 것도 아니고,
수정하는 작업이 그렇게나 어려운 문제로 보이지도 않습니다.

수정을 해주시기 바랍니다. -.-;;;;