# . 으로 시작하는 파일 파인더에서 보이게 하기.

$ defaults write com.apple.finder AppleShowAllFiles -bool true


# 다시 숨기기.

$ defaults write com.apple.finder AppleShowAllFiles -bool false

저작자 표시
신고
Posted by childeye

Client - Server 에서 앱 버전 체크하는 API 에서 사용할 만한 query.


버전이 최대 3자리라고 가정하고...


로직은 이렇게.....


SET @ver = "10.22.1";

SET @len = LENGTH(@ver);

SET @loc0 = 0;

SET @loc1 = LOCATE('.', @ver);

SET @loc2 = LOCATE('.', @ver, @loc1 + 1);

SET @loc3 = LOCATE('.', @ver, @loc2 + 1);

SELECT 

-- 각각 자리별로 값 구하기.

--                SUBSTRING(@ver, (@loc0 + 1), IF(@loc1 <> 0, (@loc1 - @loc0 - 1), @len)) as 1st, 

-- IF(@loc1 <> 0, SUBSTRING(@ver, (@loc1 + 1), IF(@loc2 <> 0, (@loc2 - @loc1 - 1), @len)), 0) as 2nd, 

-- IF(@loc2 <> 0, SUBSTRING(@ver, (@loc2 + 1), IF(@loc3 <> 0, (@loc3 - @loc2 - 1), @len)), 0) as 3rd;



-- 각각 자리별로 값 구하기.(decimal type 으로 convert)

--                CONVERT(SUBSTRING(@ver, (@loc0 + 1), IF(@loc1 <> 0, (@loc1 - @loc0 - 1), @len)), DECIMAL) as 1st, 

-- CONVERT(IF(@loc1 <> 0, SUBSTRING(@ver, (@loc1 + 1), IF(@loc2 <> 0, (@loc2 - @loc1 - 1), @len)), 0), DECIMAL) as 2nd, 

-- CONVERT(IF(@loc2 <> 0, SUBSTRING(@ver, (@loc2 + 1), IF(@loc3 <> 0, (@loc3 - @loc2 - 1), @len)), 0), DECIMAL) as 3rd;



-- 실제 비교할 땐 어떻게 하지?? 각각 버전값이 0-99 까지 쓴다고 가정하고...

--                CONVERT(SUBSTRING(@ver, (@loc0 + 1), IF(@loc1 <> 0, (@loc1 - @loc0 - 1), @len)), DECIMAL) * 1000000 as 1st, 

-- CONVERT(IF(@loc1 <> 0, SUBSTRING(@ver, (@loc1 + 1), IF(@loc2 <> 0, (@loc2 - @loc1 - 1), @len)), 0), DECIMAL) * 1000 as 2nd, 

-- CONVERT(IF(@loc2 <> 0, SUBSTRING(@ver, (@loc2 + 1), IF(@loc3 <> 0, (@loc3 - @loc2 - 1), @len)), 0), DECIMAL) * 1 as 3rd;


-- 실제 비교할 땐 어떻게 하지?? 숫자값으로 변환해서 비교??

              ((CONVERT(SUBSTRING(@ver, (@loc0 + 1), IF(@loc1 <> 0, (@loc1 - @loc0 - 1), @len)), DECIMAL) * 1000000) + 

(CONVERT(IF(@loc1 <> 0, SUBSTRING(@ver, (@loc1 + 1), IF(@loc2 <> 0, (@loc2 - @loc1 - 1), @len)), 0), DECIMAL) * 1000) + 

(CONVERT(IF(@loc2 <> 0, SUBSTRING(@ver, (@loc2 + 1), IF(@loc3 <> 0, (@loc3 - @loc2 - 1), @len)), 0), DECIMAL) * 1)) as ver_sum;





실제 사용시에는 이렇게....



SELECT 

SUBSTRING(appVer, 1, IF(LOCATE('.', appVer) <> 0, (LOCATE('.', appVer) - 1), LENGTH(appVer))) as 1st, 

IF(LOCATE('.', appVer) <> 0, SUBSTRING(appVer, (LOCATE('.', appVer) + 1), IF(LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) <> 0, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) - LOCATE('.', appVer) - 1), LENGTH(appVer))), 0) as 2nd, 

IF(LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) <> 0, SUBSTRING(appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1), IF(LOCATE('.', appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1)) <> 0, (LOCATE('.', appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1)) - LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) - 1), LENGTH(appVer))), 0) as 3rd from tbl_app;

SELECT

((CONVERT(SUBSTRING(appVer, 1, IF(LOCATE('.', appVer) <> 0, (LOCATE('.', appVer) - 1), LENGTH(appVer))), DECIMAL) * 1000000) + 

(CONVERT(IF(LOCATE('.', appVer) <> 0, SUBSTRING(appVer, (LOCATE('.', appVer) + 1), IF(LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) <> 0, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) - LOCATE('.', appVer) - 1), LENGTH(appVer))), 0), DECIMAL) * 1000) + 

(CONVERT(IF(LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) <> 0, SUBSTRING(appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1), IF(LOCATE('.', appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1)) <> 0, (LOCATE('.', appVer, (LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) + 1)) - LOCATE('.', appVer, (LOCATE('.', appVer) + 1)) - 1), LENGTH(appVer))), 0), DECIMAL) * 1)) as ver_sum from tbl_app;



저작자 표시
신고
Posted by childeye
2017.04.12 17:25

HTTP Header 구성요소.html


http://coffeenix.net/doc/network/http_1_0_vs_1_1.html

저작자 표시
신고
Posted by childeye


이클립스에서 commit 하다 cancel 을 했다.


다시 commit 하려고 하니까 lock 걸려서 진행이 안됨.


보통은 team > cleanup 하면 된다고 한다.


그리고 lock 파일이 있는지 찾아보라고 하는데.. 없다..


결국 직접 svn db 파일을 수정해서 해결.


1. sqlite 클라이언트 다운로드

 - http://sqlitebrowser.org/


2. sqlite 클라이언트 실행해서 DB를 연다.

 - .svn 디렉토리 밑에 wc.db 파일.


3. sql 실행 탭에서 아래 쿼리 실행.

 - DELETE FROM WORK_QUEUE;

 - DELETE FROM WC_LOCK;


4. wc.db 파일 저장.(sqlite 클라이언트 종료)


이제 잘된다....



출처: http://finkle.tistory.com/124


저작자 표시
신고
Posted by childeye



[펌] http://seongtak-yoon.tistory.com/19



MySQL 5.0과 같이 저버전을 사용하게되면, 요즘 스마트폰에 기본으로 적용된 Emoji 문자때문에 골치 아픈 경우가 많습니다.

MySQL은 기본적으로 UTF-8이 3Byte까지만 지원하기때문에 4Byte로 구성된 Emoji와 같은 문자가 저장되면 빈 값으로 저장되거나 ?? 등으로 저장됩니다.

이를 방지하기 위해서 (정확이는 utf8mb4 타입을 적용하기 전까지 임시방편으로 ..) 저장되지 않도록 애플리케이션단에서 제거할 필요가 있습니다.


# planes 1-3

# planes 4-15

# plane 16

preg_replace("/\xF0[\x90-\xBF][\x80-\xBF]{2} | [\xF1-\xF3][\x80-\xBF]{3} | \xF4[\x80-\x8F][\x80-\xBF]{2}/", "", $string);



참고된 테이블 구성 그대로 정규식으로 조합하여 4Byte UTF-8 문자를 찾아내어 ""(빈값)으로 replace합니다.


4Byte UTF-8의 first Byte는 F0~F4로 구성되어 있습니다.

 - http://docs.oracle.com/cd/E24693_01/server.11203/e10729/appunicode.htm#CACHBDGH   여기를 참고해보시면  

 - 이 정보는 1~3Byte와 중복되지 않는 값으로 일종의 Key값(?)으로 생각하면 될것 같네요.



💞💞허허허💞💞 -> 허허허가 됩니다.

⛄허허 -> ⛄허허가 됩니다. 

이 문자는 3Byte로 구성된 UTF-8로 없어지지 않는 것이 맞고, 저버전 MySQL도 문제없이 처리가능합니다.

- http://apps.timwhitlock.info/unicode/inspect?s=%E2%9B%84



참고 사이트


- 특정 문자 구성내용 보기 

http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%92%9E


- UTF-8 구성표

http://www.utf8-chartable.de/unicode-utf8-table.pl


- 도움되는 사이트.

http://stackoverflow.com/questions/16496554/can-php-detect-4-byte-encoded-utf8-chars


- getEmoji

http://getemoji.com/



저작자 표시
신고
Posted by childeye
TAG emoji, MYSQL, php