'2018/02'에 해당되는 글 5건

728x90

아래 코드는 MySQL DB 테이블에 있는 자료를 CSV 파일로 저장하는 예제다.

while 문을 사용하면 4만개 정도의 데이터도 매우 빠르게 저장된다.

for문, foreach문을 사용하면 매우 느리다.

저장된 데이터를 엑셀에서 읽었을 때 깨져보이면 charset=utf-8 를 charset=euc-kr 로 저장하면 될 것이다.

자료 저장 형태가 CSV 라는 것은 EditPlus 와 같은 툴로 읽어도 내용이 보인다는 거다.

그러므로 엑셀에서 수정하고 저장할 때 반드시 다른 이름으로 저장을 선택하여 저장형식을 엑셀 형식으로 저장해야 한다. 바로 저장을 하면 파일 구조가 web 파일 형태로 저장되어 이상하게 보일 것이다.


<?php
if(!isset($_SESSION)) {
    session_start();
}

$file_name = "Park.xls";
header( "Content-type: application/vnd.ms-excel; charset=euc-kr");
header( "Cache-Control: must-revalidate, post-check=0,pre-check=0" );
header( "Content-Disposition: attachment; filename=".$file_name);
header( "Content-Description: PHP4 Generated Data" );


include_once '../dbinfo.php';
include_once '../dbconnect.php'; // DB 접속

$tblName = data;    // 테이블명
$result = mysql_query("SELECT uid, (select classname from category where uid=data.category1) as cate1,(select classname from category where uid=data.category2) as cate2,content FROM $tblName where sysrole = 0 ORDER BY uid DESC", $dbconn);
// DESC 내림차순 정렬, ASC 오름차순 정렬

// 테이블 상단 만들기
$EXCEL_STR = "
<table border='1'>
<tr>
<td ALIGN=CENTER BGCOLOR='#9DEEE1'>UID</td>
<td ALIGN=CENTER BGCOLOR='#9DEEE1'>구분1</td>
<td ALIGN=CENTER BGCOLOR='#9DEEE1'>구분2</td>
<td ALIGN=CENTER BGCOLOR='#9DEEE1'>내용</td>
</tr>";

while ($row = mysql_fetch_array($result) ){
    $EXCEL_STR .= "
    <tr>
    <td ALIGN=CENTER>".$row['uid']."</td>   
    <td ALIGN=CENTER>".$row['cate1']."</td>
    <td ALIGN=CENTER>".$row['cate2']."</td>
    <td>".stripslashes($row['content'])."</td> 
    </tr>
    ";
}

$EXCEL_STR .= "</table>";
echo $EXCEL_STR;
mysql_free_result ($result);

exit;

?>

블로그 이미지

Link2Me

,
728x90

win.addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY);

WindowManager를 사용하면, Activity의 제약사항을 뛰어넘어서 개발할 수 있다.
- Context별 사용법을 정확히 알아야한다.
- 메모리 관리를 잘 해야 한다.
- 잠금 해제는 Activity Context 만 가능하다.


팝업창 구현이 쉽지 않다. 최상위 팝업 구현을 하려고 하는데 전화가 걸려오면 최상위로 팝업되는 경우도 있고 뒤로 숨는 경우도 있다.

그래서 블로드, 사이트 등에서 기능을 찾아 정리해보고 있지만, 완벽한 해결이 되지 못했다.


https://developer.android.com/reference/android/view/WindowManager.LayoutParams.html


FLAG_DISMISS_KEYGUARD
window가 attach되면 잠금해제를 하는 flag.
Activity Context를 가진 윈도우매니저에서만 동작

FLAG_LAYOUT_NO_LIMITS

allow window to extend outside of the screen.

window가 화면을 벗어나서도 배치될 수 있다.
숨기거나 일부만 보이는 윈도우를 만들때 사용

FLAG_LAYOUT_IN_SCREEN

place the window within the entire screen, ignoring decorations around the border (such as the status bar).

window가 보여지는 화면의 전체 영역을 가진다.
status bar 혹은 navigation bar 영역까지도 배치될 수 있다.

FLAG_NOT_FOCUSABLE

this window won't ever get key input focus, so the user can not send key or other button events to it.

해당 윈도우가 input focus를 받지 않게 된다.
즉 home button 이나 back button처럼 focus를 받아야 동작하는 것들을 다음 우선순위 window에 넘긴다.

FLAG_NOT_TOUCH_MODAL

even when this window is focusable (its FLAG_NOT_FOCUSABLE is not set), allow any pointer events outside of the window to be sent to the windows behind it.

해당 윈도우가 터치를 받지 않게 된다.
터치가 오면 다음 우선순위 window에 넘긴다.


FLAG_KEEP_SCREEN_ON
as long as this window is visible to the user, keep the device's screen turned on and bright.


FLAG_WATCH_OUTSIDE_TOUCH
if you have set FLAG_NOT_TOUCH_MODAL, you can set this flag to receive a single special MotionEvent with the action MotionEvent.ACTION_OUTSIDE for touches that occur outside of your window.


FLAG_SHOW_WHEN_LOCKED
This constant was deprecated in API level 27. Use showWhenLocked or setShowWhenLocked(boolean) instead to prevent an unintentional double life-cycle event.


FLAG_TURN_SCREEN_ON
This constant was deprecated in API level 27. Use turnScreenOn or setTurnScreenOn(boolean) instead to prevent an unintentional double life-cycle event.



//화면 켜놓기 유지(단말이 sleep 단계로 들어가지 않게 설정)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

//화면 켜놓기 안유지
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);


// Title Bar 없는 상태로 만들기
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                WindowManager.LayoutParams.FLAG_FULLSCREEN);

// Java Code에서 Status Bar와 Title Bar 모두 없는 상태 만들기
requestWindowFeature(Window.FEATURE_NO_TITLE);

// AndroidManifest.xml 에서 Activity의 Theme를 위와 같이 설정해주면 Title Bar가 모두 없는 상태가 된다.
<activity android:name=".MyActivity"
 android:theme="@android:style/Theme.NoTitleBar">

참고 사이트

https://github.com/inez/CustomIncomingCallScreen




블로그 이미지

Link2Me

,
728x90

Eclipse 에서 컴파일을 하면 최신폰 정보를 보여주지 못한다.

Eclipse 사용버전이 낮아서 그럴 수도 있다.



Android Studio 에서는 폰 정보가 바로 확인된다.


Eclipse 로 컴파일은 성공인데 어플 로그인을 하다가 어플이 죽는다.

원인을 찾아야 하는데 원인을 파악하기가 쉽지 않다.


그래서 소스를 Android Studio 에서 아래와 같이 모듈 Import 로 가져오기를 하고 컴파일을 해서 확인하면 어디에서 문제가 발생하는지 LogCat에 잘 보여준다.


Eclipse 버전이 낮은 정보에서 컴파일 한 경우에는 소스를 완전 수정해야 하는 사항이 많아서 그냥 단순하게 에러 확인용도로만 사용한다.

KeyStore 정보가 서로간에 연동이 안되는 것 같아서 업그레이드에도 문제가 되어 조심스럽게 다루고 있다.

블로그 이미지

Link2Me

,
728x90

jQuery 의 animate 메소드를 사용하면 element 를 다양하게 이동시키고 이동시키는 모습을 화면에 보여줄 수 있다.

animate( properties, [speed], [easing], [callback] )
- properties : element 가 애니메이션이 끝나고 갖게 될 속성(css properties 값)
- speed : 애니메이션의 진행 시간 ( ms 단위 ) 또는 slow, fast, 1000
- easing : 애니메이션이 어떻게 진행될지를 제어하는 기능을 제공하는 선택사항
- callback : 애니메이션이 종료되었을 때 호출되는 메소드



<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    function move(){
        $('#moveImg').animate( {left:'150px'}, 1000)
                     .animate( {left:'50px'}, 500, move);
    }
    move();
})
</script>



배경 이미지와 움직이게 할 이미지 2개가 있다.

움직이게 할 이미지를 선택하여 1초후에 left 150px 에 있도록 한다.

다음에 0.5초후에 left 50px 에 있도록 한다.

move 는 callback 메소드로 반복 동작을 시킨다.



<script>
var state=true;
$("#button").click(function(){
    if(state){
        $("#effect").stop().animate({"background-color":"#f90", color:"#fff", width:"420px"}, 1000);
    }else{
        $("#effect").
stop().animate({"background-color":"#f4f4f4", color:"#000", width:"200px"}, 1000);
    }
    state=!state;
});
</script>


jQuery 버전이 높아지면서 토글함수 기능이 없어져서 토글 처리하는 걸 status 값 true, false 를 이용하여 처리하도록 한 예제다.

'Web 프로그램 > js, jQuery' 카테고리의 다른 글

jQuery 체크박스 선택 여부 확인  (0) 2018.04.15
Popup Modal with jQuery  (0) 2018.04.12
jQuery addClass()  (0) 2018.02.04
jQuery all Checked  (0) 2018.01.23
[jQuery] 테이블 다루기 (find)  (0) 2018.01.15
블로그 이미지

Link2Me

,
728x90


The addClass() method adds one or more class names to the selected elements. (addClass 메소드는 하나 이상의 클래스를 추가할 수 있다)
$(selector).addClass(classname,function(index,currentclass))


위 예제를 실행해보면 addClass 이전과 이후의 현재 Class명을 얻어오도록 되어 있어 클래스가 어떻게 추가되었는지 확인할 수 있다.

Firefox 브라우저 또는 Chrome 브라우저에서 F12키를 누르면 console에서 변하는 결과를 확인할 수 있다.

CSS 클래스를 jQuery addClass 로 동적으로 추가하는 방법이라고 보면 된다.


도움되는 참조 사이트

http://jsfiddle.net/vL8DP/

https://stackoverflow.com/questions/13816730/jquery-add-class-and-remove-all-others




'Web 프로그램 > js, jQuery' 카테고리의 다른 글

Popup Modal with jQuery  (0) 2018.04.12
jQuery animate  (2) 2018.02.14
jQuery all Checked  (0) 2018.01.23
[jQuery] 테이블 다루기 (find)  (0) 2018.01.15
JavaScript 와 jQuery 비교 정리  (0) 2018.01.15
블로그 이미지

Link2Me

,