2015년 2월 10일 화요일

mysql, mariadb에서 유니코드(utf8mb4) 지원하기

1. 현재 설정된 상태 확인


MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";
 +--------------------------+---------------------------------+
 | Variable_name            | Value                           |
 +--------------------------+---------------------------------+
 | character_set_client     | utf8                            |
 | character_set_connection | utf8                            |
 | character_set_database   | utf8                            |
 | character_set_filesystem | binary                          |
 | character_set_results    | utf8                            |
 | character_set_server     | utf8                            |
 | character_set_system     | utf8                            |
 | character_sets_dir       | /usr/local/mysql/share/charsets/|
 +--------------------------+---------------------------------+



2. sudo vi /etc/my.cnf 파일을 아래 부분 수정

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4



3. 서비스 재시작

service mysql restart


4. 확인

MariaDB [(none)]> show variables like "%character%";show variables like "%collation%";

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

+----------------------+--------------------+
| Variable_name        | Value              |
+----------------------+--------------------+
| collation_connection | utf8mb4_general_ci |
| collation_database   | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+----------------------+--------------------+
3 rows in set (0.00 sec)


마지막으로 실제 적용할 컬럼의 타입을 바꿔야 한다.

utf8mb4로 바꿔야 합니다.

2015년 2월 5일 목요일

blogger에 source code 를 올릴때

http://alexgorbatchev.com/SyntaxHighlighter/
아래 내용을 템플릿에 추가 한다.




CentOS 명령어 모음


#프로그램 설치위치 찾기
paper$ which java
/usr/bin/java

#오래된 로그파일만 찾아서 삭제함
find /logs/httpd/ -type f -mtime +180 -exec rm -f {} \;


#hosts 편집
vi /etc/hosts


#dns서버 수정
vi /etc/resolv.conf

#OS 비트 확인
getconf LONG_BIT

#OS 버전 확인
$ cat /etc/issue

#폰트목록
$ fc-list

#폰트 반영 (/usr/share/fonts 에 폰트 넣고)
$ fc-cache -fv

Parallels 8, 9 에서 Command+Space로 한영변환 하기


1. 키보드 설정에서  "이전 입력 소스 선택"이랑 "입력 메뉴에서 다음 소스 선택"을 서로 단축키를 바꿈


2. 페러럴즈 환경설정에서 아래 단축키를 매핑추가함 (Command+Space -> AltGr)


끝. 위와 같이 했더니 저는 됬어요.

spring map to xml viewresolver


항상 json으로만 뱉다가 xml로 뱉어야 하는 상황이 발생해서 만든 spring view 클래스
결과가 map에 경우에만 해당됨

아래 설정하고...

    
        
        
    

xml-views.xml 내용.





    
        
            text/xml;charset=utf-8
        
    



아래 클래스를 이용함

public class AjaxResponseXMLView extends AbstractView {

    @Override
    protected void renderMergedOutputModel(Map map, HttpServletRequest request,
                                           HttpServletResponse response) throws Exception {
        String xmlHeader = "\r\n";

        StringBuffer xmlSb = new StringBuffer();
        xmlSb.append(xmlHeader);
        xmlSb.append("");
        writeFromMap(xmlSb, map);
        xmlSb.append("");

        response.setContentType("application/xml");
        response.setCharacterEncoding("utf-8");
        response.setHeader("Cache-Control", "no-cache");
        response.setContentLength(xmlSb.toString().getBytes("utf-8").length);
        response.getWriter().print(xmlSb.toString());
    }

    private void writeFromMap(StringBuffer sb, Map map) {

        for(Object str : map.keySet()) {
            Object v = map.get(str);
            sb.append("<" + str + ">");
            if(v instanceof Map) {
                writeFromMap(sb, (Map) v);
            }
            else if(v instanceof List) {
                writeFromList(sb, (List) v);
            }
            else {
                writeFromData(sb, v);
            }
            sb.append("");
        }
    }

    private void writeFromList(StringBuffer sb, List list) {

        for(Object v : list) {
            sb.append("");
            if(v instanceof Map) {
                writeFromMap(sb, (Map)v);
            }
            else if(v instanceof List) {
                writeFromList(sb, (List) v);
            }
            else {
                writeFromData(sb, v);
            }
            sb.append("");
        }
    }

    private void writeFromData(StringBuffer sb, Object data) {
        sb.append(escapeXml(data+""));
    }

    private String escapeXml(String src) {
//        "   "
//        <   <
//        >   >
//        &   &
        src = src.replace("\"", """);
        src = src.replace("<", "<");
        src = src.replace(">", ">");
        src = src.replace("&", "&");

        return src;
    }
}

tomcat 에서 OutOfMemory 자주 나오면.



// catalina.sh 맨 상위에 아래를 추가해서 메모리를 크게 잡자.
export CATALINA_OPTS="-Djava.awt.headless=true -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m"