구름 입력기 버그

사진 앱에서 공유된 사진에 코멘트 쓸 때 다 깨져서 입력됨.

아래 영상에서 동해물과 백두산이 마르고 닳도록 입력하면 이상하게 입력됨. 2017년 발견 후 몇 년 째 고쳐지지 않는 버그인데, 나만 불편한건가?

구름입력기 1.11.1에서 사진 앱에 코멘트 입력 중 글자 깨짐

워드프레스 한글 파일 링크 깨지는 이슈

최근 워드프레스에 업로드한 이미지 파일들이 엑스박스 처리되어 브라우저 화면에 나타나지 않는 현상이 발생하였다. 파일을 업로드한 뒤 바로 글을 보면 문제가 없는데 나중에 보면 이상하게 깨져나타나는 것이었다. 결론은 크롬에서 업로드한 파일에 한글이 들어있으면 사파리 브라우저에서 안보인다는 것이다.

라즈베리파이에 서버를 구축하여 운영하면서 나타나는 문제인 것 같아서 서버 설정에 문제가 있나 여러모로 검토를 해 보았으나 최근 배포되는 서버 이미지는 당연히 UTF-8을 지원하고, 설치한 APM도 UTF-8을 기본적으로 사용하도록 되어있었다.

그런데 희안하게 브라우저마다 다른 현상이 나타났다. 사파리 브라우저에서는 깨져나오는데, 크롬 브라우저에서는 제대로 나오는 것이 아닌가. 혹시나 싶어 Windows에서 한번 봤는데, 크롬, 에지, 인터넷 익스플로러 모두 제대로 나왔다. 음 이건 사파리의 버그인가…

wp-content 디렉토리를 살펴봤다. 주로 안보이는 이미지는 스크린샷-어쩌구.png 식의 이미지파일들로 맥에서 화면 캡춰하면 생기는 디폴트 이름들이다. 이 파일들이 크롬에서는 보이는데, 사파리에서는 404 에러가 뜨는 것이었다.

좀 더 확인해보니 사파리에서 업로드한 파일이름과 크롬에서 올리는 파일 이름이 서버에 다르게 저장된다는 것을 알았다. 사파리에서 업로드한 이미지들은 사파리에서도 잘 보이고 크롬에서도 잘 보인다. 그런데 크롬에서 업로드한 이미지는 크롬에서는 잘 보이는데 사파리에서는 404에러가 뜬다. (확인해본 다른 브라우저들은 모두 제대로 나온다.)

집에서는 사파리를 주로 쓰고, 회사에서는 업무용으로 크롬을 주로 쓰고있는데, 회사에서 작성한 포스트를 집에서 확인해볼 때 문제가 나왔던 것이었다.

서버를 좀 들여다보니, 업로드한 파일들이 똑같이 스크린샷 어쩌구란 이름으로 나오지만 정열되는 순서가 다르다. 즉 화면에는 스크린샷이라고 동일하게 보이지만, 사파리에서 업로드한 파일들은 알파벳 뒤에, 크롬에서 업로드한 파일들은 알파벳 앞에 나온다. 동일하게 보이지만 다른 파일인 것이다.

두 그룹으로 나뉜 스크린샷 파일들

추측해보건데 사파리에서는 맥의 파일시스템의 이름을 그대로 업로드하여 저장하는 것 같다. 맥에서는 풀어쓰기 방식의 유니코드를 사용하는데 (이름은 잘 기억이..) 이것이 그대로 Linux 서버에 저장되는 듯 싶다. 크롬에서는 UTF-8 변환을 하여 한글을 저장하는 것 같고..

풀어쓰기 형태로 저장된 스크린샷과 모아쓰기 형태로 저장된 스크린샷이 화면상에는 동일하게 보이지만 unicode가 달라서 정열되는 순서가 다르다.

왜 다르게 저장되는지 분석을 해보려다 이건 내가 할 일이 아닌것 같아서 한글 이름을 변환해서 업로드 해 주는 플러그인을 쓰기로 했다. uploading downloading non-latin filename 이라는 플러그인인데, 깔끔하고 괜찮다. 설치하고 활성화해 두기만 하면 한글이 들어간 이미지를 업로드할 때 자동으로 숫자로 된 파일로 바꿔준다.

아래 첨부 이미지는 크롬브라우저에서 업로드한 이미지 파일이다. 사파리에서는 안보이는데 다른 브라우저에서는 보인다.

시스템 환경설정

여튼 희안하다. 왜 이런건지 누가 좀… 사파리 설정 문젠가?? -_-

맥용 한글 입력기 – 구름

맥의 기본 한글 입력기는 좀 불안해서 한글 변환 후 바로 입력하면 영문이 나온다거나 하는 버그가 있다. 국내 사용자가 적어서인지 몇년째 고쳐지질 않는다. 그래서 우리는 외부 입력기를 따로 깔아서 쓰는데..

처음에는 바람이라는 입력기를 사용했었다. 그러나 최근 지원이 끊겨 업데이트가 되지 않는다. 다른 입력기를 사용해보려고 찾아보니 요새는 구름 입력기를 사용하면 되는 것 같다.

맥용 한글 입력기 구름
맥용 한글 입력기 구름

구름 입력기(http://gureum.io)를 설치한 후 쿼티와 한글을 선택해준다. 기본적으로 기본 영어가 삭제가 안되는데, 일본어 > Kotoeri 추가한 다음 삭제하면 삭제가 된다. 영어 삭제 후 Kotoeri를 삭제하면, 구름의 쿼티와 한글만 전환되게 할 수 있다.

구름 입력기 입력 소스 설정
구름 입력기 입력 소스 설정

기본적으로 Shift + Space를 통해 한/영 전환이 되기때문에 더 익숙하고, 모아쓰기를 통해 오타도 줄어들기때문에 반드시 설치하여 사용하는게 정신 건강에 좋을 듯 싶다.

언제쯤 애플은 깔끔하게 한글을 지원해 줄 수 있을까!

라즈베리파이 ssh, ftp 환경 설정

Raspbmc를 설치하면 dropbear ssh server와 vsftpd 데몬이 함께 설치가 된다.

처음으로 ssh 접속을 하면 locale과 time zone을 설정하는 과정을 거친다. 다음 세 개의 로케일을 선택하였고, ko_KR.UTF-8을 기본 locale로 설정했다. Time zone은 Asia -> Seoul로…

en_US
en_US.UTF-8
ko_KR.UTF8

먼저 패스워드를 변경한다. 기본적으로 할당되어있는 pi 계정의 기본 패스워드는 raspberry인데, 이것을 자신만 아는 비밀번호로 변경한다.

pi@raspbmc:~$ passwd
pi에 대한 암호 변경 중
(현재) UNIX 암호:
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: 암호를 성공적으로 업데이트했습니다

그 다음 한글을 입출력할 수 있게 설정해준다.

pi@raspbmc:~$ cat .profile 
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
	. "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi
sudo sh /scripts/configure-pi-user.sh

# cky
export LANG=ko_KR.UTF-8</pre>
<pre class="lang:default decode:true">pi@raspbmc:~$ cat .inputrc 
set meta-flag on
set convert-meta off
set input-meta on
set output-meta on

기본적으로 동일 망에서는 아무 제약없이 사용할 수 있지만 외부 망에서 접속하려고 하면 몇가지 수정해줘야 할 것들이 있다.

Raspbmc Settings

프로그램 -> Raspbmc Settings에서 위와 같이 Disable firewall을 체크해준다. 그렇지 않으면 동일 망에서만 라즈베리 파이에 접속할 수 있게 된다.

그리고 vsftpd 설정파일(/etc/vsftpd.conf)에 다음의 값을 추가해준다. 아래 설정이 없으면 접속 후 ls 했을 때 425 Security BAD IP 에러를 만나게 된다. pasv 관련 설정은 port forwarding 상황에 따라서 적당히 추가해주면 된다.

pi@raspbmc:~$ cat /etc/vsftpd.conf
listen=NO
pam_service_name=ftp
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=NO
connect_from_port_20=YES
ftpd_banner=Raspbmc FTP Server
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
# cky
pasv_promiscuous=YES
pasv_enable=YES
pasv_min_port=29000
pasv_max_port=29999

Raspbmc 자체가 깔끔하게 정리가 되어있기 때문에 별다른 설정은 건드릴 필요가 없다. 🙂

ps. 추가로 Cronjob scheduler enable, Samba Server는 disable로 설정해서 사용중이다. cron은 주기적인 작업에 유용하게 사용할 수 있고, samba대신에 afp를 사용하도록 설정.