반응형
html5를 사용하고 싶은데 구버전 IE 때문에 고민인가요?
아래 javascript 라이브러리를 사용하면 고민이 해결됩니다.
IE8 이하 에서 HTML5, CSS3 사용하는 방법입니다.
 

<html5shiv>
홈페이지:
 http://code.google.com/p/html5shiv/
- HTML5 요소를 지원하지 않는 브라우저(IE8 이하)에서 해당 요소를 지원할 수 있게 해주는 라이브러리.
- 구버전 IE가 <header>, <nav>, <article> 등 HTML5 태그를 알아듣도록 해줌.
- 그누보드5에 기본으로 적용되어 있음
- 소스를 웹페이지의 <head></head> 부분에 넣음
<!--[if lt IE 9]>
<script src="
http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
 
 
<ie7.js, ie8.js, ie9.js>
홈페이지:
 http://code.google.com/p/ie7-js/
- IE6, IE7, IE8이 제대로 알아듣지 못하는 CSS도 사용가능
  예) :hover, :first-child, :last-child, min-height, max-width, position: fixed, margin:0 auto, opacity (투명도) 등
- 아래 소스를 웹페이지의 <head></head> 부분에 넣음
 
IE7 보다 낮은 버전을 위한 라이브러리 (IE7.js)
<!--[if lt IE 7]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE7.js"></script>
<![endif]-->
 
IE8 보다 낮은 버전을 위한 라이브러리 (IE8.js)
<!--[if lt IE 8]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>
<![endif]-->
 
IE9 보다 낮은 버전을 위한 라이브러리 (IE9.js)
<!--[if lt IE 9]>
<script src="
http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
※ IE9.js을 사용하는 경우 IE7/IE8.js를 포함할 필요가 없음.
 
 
아래 처럼 IE7_PNG_SUFFIX=".png";를 넣으면 IE6에서 투명한 PNG 이미지도 사용가능
 
 
<respond.min.js>
- IE 8이하 브라우저에 미디어쿼리 인식
<![endif]-->
 
<css3pie>
홈페이지: http://css3pie.com/ 
- CSS3 요소를 지원하지 않는 브라우저에서 CSS3 요소를 사용할 수 있게 해주는 라이브러리
- 구버전 IE에서도 둥근 외곽선, 그림자, 그라데이션 등의 CSS3 효과를 사용할 수 있도록 해줌.
- 자세한 사용법은 홈페이지 참고.
 
<ie-css3>
ie8 이하에서 css3를 지원하게 해주는 라이브러리


반응형
,
반응형

1. 아파치 및 톰캣 설치

톰켓 설치

sudo apt-get install apache2


설치 후 테스트  http://localhost/

톰켓 설치

sudo apt-get install tomcat7
sudo apt-get install tomcat7-admin


톰켓 테스트를 위한 폴더 및 파일 생성

cd /var/lib/tomcat7/webapps
sudo mkdir tomcat-demo
sudo mkdir tomcat-demo/helloworld
sudo vim tomcat-demo/helloworld/index.jsp


아래 코드 복사

<HTML>
 <HEAD>
  <TITLE>Hello World</TITLE>
 </HEAD>
 <BODY>
  <H1>Hello World</H1>
  Today is: <%= new java.util.Date().toString() %>
 </BODY>
</HTML>

설치 후 테스트 

http://localhost:8080/tomcat-demo/helloworld/ 

2. mod_jk 설치 및 설정

sudo apt-get install libapache2-mod-jk


server.xml 설정 (나중에 연동 후에는 8080 포트 구문을 주석처리 해줘도 된다.)

sudo vim /etc/tomcat7/server.xml


아래 라인의 주석 해제

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

아파치 워커 파일(workers.properties) 생성


sudo vim /etc/apache2/workers.properties


아래 코드를 복사하여 넣어준다

# Define 1 real worker using ajp13 
worker.list=worker1 
# Set properties for worker (ajp13) 
worker.worker1.type=ajp13 
worker.worker1.host=localhost
worker.worker1.port=8009

아파치 워커 파일 설정

sudo vim /etc/apache2/mods-available/jk.conf


JkWorkersFile 설정 경로 정보를 아래 라인으로 변경한다

/etc/apache2/workers.properties

 
마지막으로 적용할 톰캣 URL 설정

sudo vim /etc/apache2/sites-enabled/000-default


아래 라인을 추가해 준다

<VirtualHost *:80>
.......................................
.......................................
JkMount /tomcat-demo* worker1
</VirtualHost *:80>

이제 톰캣, 아파치 서버를 재기동 한다

sudo /etc/init.d/tomcat7 restart
sudo /etc/init.d/apache2 restart


연동 테스트
http://localhost/tomcat-demo/helloworld/ 

8080포트 접속을 통한 테스트
http://localhost:8080/tomcat-demo/helloworld/


mod_jk 로그 보기

tail -f /var/log/apache2/mod_jk.log



출처: http://wonsama.tistory.com/383

반응형

'Tech develop > Linux' 카테고리의 다른 글

MySQL인코딩 문제로 한글이 깨져서 나올 때  (0) 2014.11.25
Ubuntu MySQL 인코딩 변경(UTF-8)  (0) 2014.11.19
mysql 백업 및 복구  (0) 2014.11.13
[ubuntu] Mysql 사용자 생성  (0) 2014.11.13
Ubuntu에 mysql설치  (0) 2014.11.13
,
반응형

* 이 글에서는 mysqldump를 이용한 논리적 백업 과 복원을 위한 내용을 위주로 정리한다. (물리적 백업은 전문 DBA에게 부탁하는게 정신건강에 좋을 것 같다.)

백업
MySQL 데이터를 백업하는 방법은 크게 물리적 백업과 논리적 백업이 있다. 

1. 물리적 백업
 - 물리적 백업은 MySQL DB의 물리 파일을 백업하는 것이다. 
 - 장점 
  + 물리적 백업은 속도가 빠르며 작업이 단순하다.
 - 단점
  + InnoDB의 물리적 파일은 상응하는 논리 백업에 비해 상당히 크다.
  + 데이터 복구시에 문제가 발생할 소지가 있으면 문제발생시 원인파악 및 해결이 어렵다.

2. 논리적 백업
 - 논리적 백업은 mysqldump 혹은 기타 툴을 이용해서 SQL문을 갖는 텍스트 파일을 생성하는 것이다. 
 - 장점 
  + 논리적 백업은 데이터를 검토할 수 있다.
  + 복원작업이 수월하며, 물리적 백업에 비해 복원시 데이터 손상을 막아주며, 문제 발생시 원인 파악및 해결하기가 수월하다. 
 - 단점
  + 백업/복원시 시스템 리소스를 더 많이 소모한다. (물리적 백업은 파일 copy만 하면 되니까!!!)
  + 부동 소수점 데이터의 백업&복원시 데이터 정확성을 잃게 될 수 있다.

3. mysqldump 사용법
 $ mysqldump -u[userId] -p[password] --all-databases > dump.sql  // 서버에 있는 모든 것의 논리 백업 생성
 $ mysqldump -u[userId] -p[password] --databases [DB명] > dump.sql // 특정 데이터베이스만의 논리 백업 생성
 $ mysqldump -u[userId] -p[password] [DB명] [테이블명]

 
- 기타 옵션
   -A, --all-databases : 모든 DB 덤프
   -B, --databases : 특정 DB를 덤프

   --opt : 버퍼링을 비확성화 하고, 많은 데이터를 덤프에 있는 소량의 SQL구문에 기록해 더효율적으로 동작하다록 한다.
   --allow-keywords, --quote-names : 예약어를 사용하는 테이블을 덤프하고 복원할 수 있게 한다.
   --lock-alltables : 전역적으로 일관된 백업을 만들도록 "FLUSH TABLES WITH READ LOCK"을 사용한다. 
   --tab : "SELECT INTO OUTFILE"로 파일을 덤프하여, 덤프 및 복원 속도가 매우 빠르다.
   -d, --no-data :  데이터는 제외하고 스키마만 덤프
   -t, --no-create-info : 스키마는 제외하고 

4. dump 파일 복원 방법
 - mysql -u [userId] -p [password] [DB명] < dump.sql
 - mysql 접속한 후 아래의 명령 실행
     mysql> source dump.sql


출처: http://dimdim.tistory.com/entry/MySQL-%EB%B0%B1%EC%97%85-%EB%B0%8F-%EB%B3%B5%EA%B5%AC


반응형
,
반응형

오늘은 mysql 설치시 사용자를 추가하는 방법에 대해 남겨볼까 한다. 할때마다 잘 기억이 안나서 검색엔진에 항상 의존을 하게 되는데 다음에는 검색엔진에 의존하지 않고 바로 블로그에서 검색해서 보면 좋을 듯 하다. 


사용자를 생성하는 방법은 여러가지가 있는데 아래 방법이 가장 쉽고 심플하다. 다른 방법들은 쿼리문을 직접 던져야 하기 때문에 솔직히 말해서 좀 불편하다. 혹시나 오랜만에 해 보거나 처음해 보는 사람들을 위해서 서버에 mysql을 설치한 후 mysql에 로그인한 후 아래 명령를 실행시켜준다.


-  mysql 서버 로그인하기

 $ mysql -uroot -prootpassword mysql


- 다른 PC에서 mysql 서버로 접속을 하기 위한 사용자 추가

 mysql> create user 'userId'@'%' identified by 'userpassword';


- 위 사용자에게 모든 것을 할 수 있는 권한 주기

mysql> grant all privileges on *.* to 'userid'@'%';


- 위 사용자에게 특정 DB를 관리할수 있는 권한 주기

 mysql> grant all privileges on dbname.* to 'userid'@'%';


- 로컬PC에서 mysql로 접속하기 위한 사용자 추가

 mysql> create user 'userId'@'localhost' identified by 'userpassword';


- 위 사용자에게 모든 것을 할 수 있는 권한 주기

 mysql> grant all privileges on *.* to 'userid'@'localhost';


- 위 사용자에게 특정 DB를 관리할 수 있는 권한 주기

 mysql> grant all privileges on dbname.* to 'userid'@'localhost';



대부분 사용자를 생성하고 권한을 줄때는 특정 DB를 관리하는 계정을 따로 만들기 위해서이다. 그러므로 사용자를 생성하고 권한을 줄때는 특정 DB를 관리할 수 있는 권한만 주면 된다.


출처: http://naleejang.tistory.com/59

반응형
,
반응형

Ubuntu에 설치 및 실행

sudo apt-get install mysql-server

설치 중 root(MySQL의)의 암호를 입력(잘 기억해야 한다)

설치 확인 sudo netstat -tap | grep mysql

재 시작하기 sudo /etc/init.d/mysql restart

종료 mysql stop

시작 mysql -u root -p



외부에서 접속하기

mysql은 기본 설치한 상태에서는 외부에서 접속할 수 없다.!!!

방법 http://valley.egloos.com/viewer/?url=http://devxpert.egloos.com/1017656 참고 했음

권한 설정

prompt> mysql -u root -p

prompt> use mysql;

prompt> GRANT ALL PRIVILEGES ON *.* to 'root'@'%' IDENTIFIED BY 'password';

prompt> flush privileges;

*.* =>데이터베이스명.테이블명

root => 계정명

password => 계정의 패스워드

flush privileges; => 서버에 권한이 변경되었음을 알리고 즉시 반영되도록


mysql 재시작

sudo /etc/init.d/mysql restart



mysql GUI Tool

오라클에서 제공하는 Workbench 라는 괜춘한 툴이 있다.

리눅스, Mac OS, Windows를 지원한다(아마 자바 설치가 필요할 듯).

다운로드 http://dev.mysql.com/downloads/mirror.php?id=412167

사용 방법 http://blog.naver.com/doblhead/80191288595


출처: http://jacking.tistory.com/1116

반응형
,
반응형



결론부터 말하면...


document.referrer;

이걸 사용하면 된다.



window.opener.document.URL

window.opener.document.location.href 


구글링 결과 이런 소스가 있었지만


내부도메인만 적용되는 것같았다.


크로스도메인일 경우.. 위에 것을 쓰는게..맞을듯??


w3schools에 따르면 모든 브라우저에 적용된다


참고: http://www.w3schools.com/jsref/prop_doc_referrer.asp

반응형
,
반응형

요즘 모바일웹이 대세다.
어느 하나 모바일웹이 따로 없는 사이트는 찾아 보기 힘들며, 심지어는 모바일전용으로 런칭 되는 사이트들도 많다. 이제 나도 모바일웹을 시작해야지 라고 생각고 html...을 시작으로 코드를 마치고 모바일에서 확인하면 어라, 이게 아닌데...라는 질문을 스스로 하게 될것이다.

아래와 같은 코드로 HTML을 작성해서 모바일로 확인해보자.

1
어라이게아닌데

모바일 사파리 일반 페이지 렌더링 결과

위와같이 나오게 되기 쉽상이다, 이는 뷰포트에 대한 이해가 필요하다.

1.뷰 포트(view-port)

모바일의 브라우져는 보여지는 픽셀이 유동적이다. PC에서는 PC의 해상도에 맞춰서 내용이 늘어나면 스크롤바가 생기지만 모바일 브라우져는 그렇지 않다, 이유는 간단하다. 모바일을 꺼내들고 다음이나네이버 PC버전에 접속해보자.


보시는 바와 같이 우리의 똑똑한 스마트폰은 많은 양의 정보를 보여주기위해 해상도를 축소시켜서 한페이지에 보여준다. 그리고 손가락으로 슥슥 밀었을때 나타나는 스크롤바는 우리가 PC에서 접속해서 나타나는 스크롤바가 아닌 '보이는 영역'을 옮겨주는 스크롤바이다. 즉, 더 보여줄 내용이 있느냐, 없느냐에 따라서 뷰포트를 옮기는 거지, PC에서 옮기는 그런 스크롤바를 옮기는것이 아니다. 즉 div의 postion:fixed는 최초 고정자리에서 더이상 작동하지 않는다.


내용 정정 2012-05-09

버전업으로 인하여 iOS및 안드로이드에서도 position:fixed는 최초 고정자리에 고정됩니다.


메타태그 추가시 뷰포인트 변화

뷰 포트를 조정해서 1:1비율로 보여줄수 있는 메타태그를 삽입하면 위와 같이 나오게 된다.

메타태그는 기본적으로 <head>와 </head>사이에 넣는다.

1
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, width=device-width, height=device-height">

해당 항목값을 변경해서 다르게 보여줄 수 있다, user-scalable가 no일 경우 두손가락으로 확대/축소를 불가능하게 할 수 있다. (당연히 반대는 yes) 모든 스케일은 1.0으로 맞추고 width값을 device-width로 할경우에 모바일 브라우져의 너비값으로 자동으로 인식된다. (height=device-height는 2번에서 설명)


마찬가지로 메타태그로 홈화면에 추가시 아이콘과 홈화면에서 접속시 로딩화면 이미지도 지정해 줄 수 있다.
PNG파일 사용하면 투명은 검은색으로 처리되고, opacity까지 정확하게 먹는다.
57*57의 아이콘을 권장하나 114px x 114px정도 만들어줘야 아이폰4에서도 선명하게 나온다. (설명은 4번 참조)

1
2
<link rel="apple-touch-icon" href="apple-touch-icon.png">
<link rel="apple-touch-icon-precomposed" href="apple-touch-icon.png">

반사광은 자동으로 입혀지며(첫번째 줄) 반사광을 원하지 않을경우 2번째줄의 코드로 대체한다.


또 아래 코드를 사용하면 위 진짜 앱처럼 사파리툴바들이 없어지고, 로딩화면을 사용할 수 있다. 사파리에서 접속과 홈화면에서 접속 구분은 에이전트 값으로 구분하면 되겠다. (설명은 2번 참조)

1
2
<meta name="apple-mobile-web-app-capable" content="yes">
<link rel="apple-touch-startup-image" href="startup.png">

마찬가지로 startup.png를 만들어 경로를 설정해주면 처음 구동시 로딩화면이 나온다.
startup.png는 320px x 460px이 정확해야 하며 사이즈가 맞지 않으면 저장되지 않는다.

웹 앱 (webapp)모드 에서는...

  • 앵커태그 사용시 사파리로 점프한다. (온클릭이벤트로 전환)
  • 홈화면에서 접속시 항상 새로고침 한다.
  • 멀티태스킹을 지원하지 않는다 (마찬가지로 새로고침되며 시작됨)
1
<a href="#" onclick="location.href='http://ojtiger.com/'">오중호랑이의 비밀로긔</a>

2. 주소표시줄 숨기기 (클라이언트 코드 사용)


열심히 만들다 보면 다른 모바일사이트와 또 다른게 생긴다, 로딩이 완료되면 주소표시줄이 숨어버리는것인데 이는 스크롤을 1px내려서 주소표시줄을 숨기는 원리이다. 아무 사이트나 들어가서 로딩이 완료 되기전에 스크롤을 미리 내려 놓으면 주소표시줄이 올라가는 것과 마찬가지이다.

이것은 자바스크립트로 해결 할 수 있다.

1
2
3
window.addEventListener('load', function(){
    setTimeout(scrollTo, 0, 0, 1);
}, false);

위 자바스크립트로 구현이 가능하나, 이는 IE에서 스크립트 오류를 불러낸다. 


위와 같은 유저 에이젼트값을 이용해서 아이폰일 경우에만 처리하도록 하면 된다.

1
2
3
4
5
6
7
8
9
if (navigator.userAgent.indexOf('iPhone') != -1) {
    addEventListener("load", function() {
    setTimeout(hideURLbar, 0);
    }, false);
}
 
function hideURLbar() {
    window.scrollTo(0, 1);
}
1
alert(navigator.userAgent);

안드로이드일 경우에는 위와 같이 직접 navigator.userAgent 값을 찍어보면 알겠지만, 

1
2
3
4
5
6
7
8
9
if (navigator.userAgent.indexOf('Linux') != -1) {
    addEventListener("load", function() {
    setTimeout(hideURLbar, 0);
    }, false);
}
 
function hideURLbar() {
    window.scrollTo(0, 1);
}

Linux라고 처리해 주면 된다, 리눅스에는 IE가 없고, 안드로이드의 브라우져의 navigator.userAgent는 Linux를 포함한다. 세로 내용이 짧아서 주소표시줄이 제대로 올라가지 않으면 다시 1번의 메타태그에 height에 device-height를 추가해준다.

이를 응용하면, 모바일 접속시 페이지 이동(m.뭐 이딴거)같은, 자바스크립트 함수를 호출할수 있다.

1
2
3
4
5
6
7
var mobileKeyWords = new Array('iPhone', 'iPod', 'BlackBerry', 'Android', 'Windows CE', 'LG', 'MOT', 'SAMSUNG', 'SonyEricsson');
    for (var word in mobileKeyWords){
        if (navigator.userAgent.match(mobileKeyWords[word]) != null){
            location.href = "#";
            break;
            }
    }

이 또한 유저에이전트값을 활용하는 방법인데, 모바일이라는 한정이 있으므로, 유저에이전트 값에서 각 제조사를 찾아서 이동시킨다. 

당연컨데 위 코드중 4번째줄 코드를 자신이 원하는 코드로 바꿔주면 모바일에서만 실행되는 코드를 사용 할 수 있다.

3. 서버코드(PHP) 사용

모바일에서 접속시에만 실행을 원하는 PHP코드가 있다면, PHP의 유저에이전트를 이용한다. 원리는 위 자바스크립트의 유저에이전트와 비슷하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!--?
$browser = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
if ($browser !== false){
    $browser = 'iphone';
}
 
if($browser == 'iphone'){
    $texttype="email";
}else{
    $texttype="text";
}
?-->
 
<input type="<? echo $texttype ?>">

PHP코드를 이용해서 아이폰일 경우 email 키보드를 꺼낼수 있게 처리할 수 있다.
이는 어이없게도 파이어폭스4 이상에서 type이 email일 경우 강제로 email형식을 지정하기에 처리해줘야 한다.

HTML5 기초 - 5 : input 유형과 속성

위 링크를 가보면 HTML5의 요소인듯하다. (그래도 강제성이 좀 어이없음)

4. 가상키보드 (아이폰)

아이폰은 input type의 속성에 맞춰서 가상키보드를 꺼낼수 있는데 속성값에 따라서 밑에서 튀 나오는 키보드가 달라진다

1
2
3
4
<input type="email" value="email">
<input type="number" value="number">
<input type="url" value="url">
<input type="tel" value="tel">

input type="email"input type="number"input type="url"input type="tel"

순서대로 email, number, url, tel..


tel의 경우가 굉장히 편리한 경우이긴 하지만 HTML5와 파이어폭스4이상에 따르면 강제성이 부여 되므로, 두가지 속성을 입력받아야 한다면 반드시 클라이언트별로 분리해 놓는것이 좋겠다.

안드로이드일 경우에는 원래(세상엔 원래라는게 없지만) 편리한 키보드를 설치해서 사용하면 된다.

5.고DPI 디스플레이에서 고화질 이미지 보여주기

아이폰4가 DPI 300이 넘는다는건 애플에서 그렇게나 광고 해댔으니 누구나 안다. 하지만,

1번에서도 설명되어있지만, 아이폰4와 아이폰3GS그 이전단계는 해상도가 차이는 나지만 뷰포트는 width 320px로 같다는것도 누구나 안다. 그렇기 때문에 같은 이미지를 출력해도 3GS에서는 가로기준 이미지 1px당 디스플레이 1px로 일치하지만 아이폰4에서는 이미지에서 1px당 디스플레이에서는 2px이 보여지게 되므로 흐릿한 이미지로 보여지게 된다.

이를 해결하기 위해선 더 높은 해상도의 이미지를 줄여서 보여주면 된다.

상단 이미지를 클릭해서 직접 비교해보세요!

왼쪽호랑이는 260px × 200px의 이지를 width, height값을 조정해서 130px x 100px로 축소시킨것이구 오른쪽 호랑이는 원래(세상에 원래라는건 없지만) 130px x 100px의 호랑이이다.

고화질 이미지를 보여주는것도 좋지만, 접속하는 사람이 3G로 접속할경우, 혹은 통신상태가 불안정할 경우 상당히 부하가 많이 걸린다는 점을 인지해서 꼭 필요한부분에 사용하면 된다.

6. 모바일 브라우저 회전 인식

자바스크립트의 오리엔테이션체인지를 이용하면 되는데 아이폰은 확실히 지원을 하고 안드로이드는 지원하는것이 있는지 모르겠으나, 모토로이의 경우에는 지원하지 않는다.

이럴 경우에는 window.resize이벤트를 합쳐서 안드로이드에도 함께 적용해준다.



slope변수를 직접 찍어봐두 알겠지만, 정상일때0, 회전일때90, 혹은 반대방향일 경우-90이다.

(이는 아이폰과 안드로이드가 방향이다르다.. 사이가 안좋은가 보군..)

1
2
3
4
5
6
7
8
9
10
11
var slope = 0;
var supportsOrientationChange = "onorientationchange" in window,
orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";
    window.addEventListener(orientationEvent, function() {
        if (slope!=window.orientation){
            slope = window.orientation;
                if(slope == 90 || slope == -90) {
                    location.href('#');
                }
        }
}, false);

2번과 마찬가지로 원하는 코드를 넣을수도 있고 위와 같이 페이지이동을 시킬 수 도 있다.

7. 라운드 div CSS

웹킷계열(모바일사파리, 안드로이드브라우져 등)과 모질라 파이어폭스에서 지원하는 css를 사용하면 손쉽게 라운드 div를 만들 수 있다. 이는 IE에서는 라운드하지 않은 div가 생성되는데 IE는 따로 처리를 해주던가 포기하면 쉽다.

CSS를 정확하게 지원하며 아래의 두줄을 추가하면, 웹킷계열과 모질라계열에서 라운드박스를 얻을 수 있다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
.loading_div {
    position:absolute;
    top: 50%;
    left: 50%;
    width: 140px;
    height: 180px;
    color:#fff;
    border: 1px solid #ccc;
    background: #162344;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    border: 1px solid #b2b7c2;
    opacity:0.9;
    }

스타일 시트에 위 코드를 추가하고 아래와 같이 div를 생성하면 스크린샷같은 라운드박스를 얻을 수 있다.

1
2
3
4
<div class="loading_div">
    <img src="http://i1.daumcdn.net/cfs.tistory/static/images/xBoxReplace_250.png" width="250" height="250" alt="오중호랑이">
    라운드박스'-'
</div>

스타일에서-webkit-border-radius: 5px; 와 -moz-border-radius: 5px;에 따라서 라운딩 정도의 차이가 난다.
이 소스를 잘만 활용하면 jquery나 AJAX에서 쓰이는 '더보기'같은 바(bar)는 이미지 하나 없이 만들 수 있다.


배경색과 테두리색 radius를 조절 잘하면 분명 이미지 없이도 멋진 버튼을 만들 수 있을꺼라 생각한다!

그리고 CSS3를 지원하기 추가적인 이미지 수정없이 필터를 줄 수 있다.  이방법은 CSS3로 검색하면 더 자세히 나올꺼라 생각하고 여기서는, 반사효과에 대해서만 살짝 알아보자.

CSS3를 지원하기에 사용가능한 이미지 반사 그라데이션 효과도 있다. 아이폰은 완벽히 지원하나 안드로이드(일단은 모토로이)의 경우에는 반사 길이 및 투명효과를 제대로 지원하지 않기에 안드로이드에 대한 처리를 따로해줘야 한다.

간단히 아래 한줄로 class를 만들고 img에 씌어주면 된다.

1
2
3
4
.gra{
-webkit-box-reflect:below 0 -webkit-gradient(linear, left top, left bottom, from(transparent), color-stop(0.5, transparent), to(rgba(255,255,255,0.5)));
}
<img src="http://i1.daumcdn.net/cfs.tistory/static/images/xBoxReplace_250.png" class="gra" alt="#" width="250" height="250">

8. 모바일 사파리 디버깅 모드

설정 > Safari > 개발자용 > 콘솔 디버그를 켜주면 주소표시줄하단에 디버깅 모드가 자동으로 나타난다. (일반적으로 나타나지 않는 항목이기에 여러오류에 대해서 치명적이지 않다면 포기하면 쉽다.)

9. 마치며

이상 근 두달간 작업하면서 "아.. 미리 알고 있었더라면"의 결정체 였다, 모바일사파리 전용 CSS나 더 많은 여러 방법들은 안드로이드와 아이폰 모두에게 적합한 방법을 제시해주지는 못해서 잘 쓰이지 않는것들은 제외시켰다. 이상으로 많은 도움이 되길 빈다.


출처: http://ojtiger.com/146

반응형
,
반응형

보통 크로스도메인 처리를 하기 위해서는 JSONP, CORS 이런 방법들을 많이 쓰나..


나는 전혀 먹히질 않았다..


기존에 yahooapis 를 이용해서 서버에서 보내주는 xml 을 처리했었는데..어느날 갑자기 실행이 안되서 멘붕..


한참동안 다른 대안을 찾아해맸지만...결국 못찾음 ㅠㅠ


대부분의 블로그나 스택오버플로어에는 ajax를 사용한 방법, jsonp 방식 등등 이런 것들이었다..


한참을 헤매던 끝에 똑같지만 추출방식이 다른 yahooapis를 찾아냈다.


나와 같이 삽질하고 검색시간을 허비하는 이들이 이 글을 보고 해결하길..


소스는 다음과 같다



// xmlSource 에 내가 읽어드릴 요청xml url주소를 적는다.
    var xmlSource = "http://api.duckduckgo.com/?q=StackOverflow&format=xml"

// 이부분이 야후api를 써서 크로스도메인이 가능하게 만드는 url
    var yqlURL = [
        "http://query.yahooapis.com/v1/public/yql",
        "?q=" + encodeURIComponent("select * from xml where url='" + xmlSource + "'"),
        "&format=xml&callback=?"
    ].join("");

// Now do the AJAX heavy lifting        
    $.getJSON(yqlURL, function(data){
        xmlContent = $(data.results[0]);
        var Abstract = $(xmlContent).find("Abstract").text();
        console.log(Abstract);
    });



이부분을 수정하면 됨


원문 출처: http://stackoverflow.com/questions/24377804/cross-domain-jsonp-xml-response

반응형
,
반응형

설명이 따로 필요 없는 예제

<html>
<body>

<script type="text/javascript">
var xmlDoc=null;
if (window.ActiveXObject)
{
  // IE용
  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
else if (document.implementation.createDocument)
{
  // Mozilla, Firefox, Opera, 기타 용
  xmlDoc=document.implementation.createDocument("","",null);
}
else
{
  alert('XML을 사용못하는 브라우저임');
}

if (xmlDoc!=null)
{
  xmlDoc.async=false;
  xmlDoc.load("tel.xml");

  var x=xmlDoc.getElementsByTagName("mem");
  for (i=0;i<x.length;i++)
  { 
    document.write(x[i].getElementsByTagName("name")[0].childNodes[0].nodeValue);
    document.write(':');
    document.write(x[i].getElementsByTagName("cell")[0].childNodes[0].nodeValue);
    document.write('<br>');
  }
}
</script>
</body>
</html>

tel.xml 파일

<?xml version="1.0" encoding="euc-kr"?>
<!-- Edited by Notepad-->
<MyCompany>
 <mem>
  <part>영업</part>
  <name>홍길동</name>
  <tno>1111</tno>
  <cell>01033334444</cell>
  <birth>11/15</birth>
 </mem>
 <mem>
  <part>관리</part>
  <name>홍당무</name>
  <tno>2222</tno>
  <cell>01022220000</cell>
  <birth>11/11</birth>
 </mem>
 <mem>
  <part>개발</part>
  <name>최말봉</name>
  <tno>6153</tno>
  <cell>01077775555</cell>
  <birth>3333</birth>
 </mem>
 <mem>
  <part>홍보</part>
  <name>최고봉</name>
  <tno>4444</tno>
  <cell>01088889999</cell>
  <birth>01/15</birth>
 </mem>
</MyCompany>

자바 스크립트에서 XML 파일의 맴버들을 참조하는 것은 의외로 쉬웠다.

반응형
,
반응형
* 일반적으로는 a href="#아이디"등과 같이 사용자가 클릭을 해야하는 경우가 있는데, 이러한 경우가 아닌, 자바스크립트로 이동하는 방법을 알아보자. 이러한 경우는 페이지의 bookmark를 등록하거나 할 때 해당 위치로 이동하도록 할 때에 편리할 것이다.

: 먼저 html에 id를 준다.

<div id="bookmark"></div>

: 그리고 해당 element로 이동하고 싶을 때 아래와 같은 자바스크립트를 호출하면 된다.


location.href = "#";
location.href = "#bookmark";

: 이 방법은 아주 쉽게 <a href="#bookmark"> 의 링크/버튼을 누르지 않고 그와 같은 효과를 이끌어낼 수 있다. 하지만 url의 뒤에 #bookmark가 추가되는 불편함(?)이 있을지도 모른다. 사실, url이 그렇게 변하는 것은 미관상(?) 안 좋을수도 있지만, 백스페이스를 누르면 원래의 위치로 가는 것과 즐겨찾기를 하게 되면 해당 위치로 바로 이동이 되는 것이 어떻게 보면 페이지에 따라서는 오히려 UX를 증가시킬 수 있는 면도 있다는 것을 알아두자.


: 만약 이러한 UX적인 이점보다 주소의 미관상(?) 이득이 중요하다면 해당 element의 offset top을 구해서 해당 위치로 이동하는 방법을 사용하면 된다.


function getOffsetTop(el) {
  var top = 0;
  if (el.offsetParent) {
    do {
      top += el.offsetTop;
    } while (el = el.offsetParent);
    return [top];
  }
}
window.scroll(0, getOffsetTop(document.getElementById("bookmark")));

: 스크롤 애니메이션을 넣고 싶은 경우에도 이것을 조금 응용하면 될 것이다. jquery의 스크롤 애니메이션도 결국 이러한 소스가 밑바탕에서 돌아가고 있는 셈이기도 하다.

출처: http://unikys.tistory.com/339


반응형
,