2013년 6월 25일 화요일

학가협(폭력없는 평화로운 학교 만들기) 소개

우리나라에도 학교폭력방지를 위해서 애쓰시는 분들이 많이 계십니다. 그중에 한분이 학가협(폭력없는 평화로운 학교만들기)회장 조정실씨 입니다. 관련자료는 http://uri-i.or.kr/에 많이 있습니다. 폭력사례부터 대처방법까지 찾아보고 많은 도움을 받았으면 합니다.

학교폭력에 괴롭워하는 학생들, 그리고 그 부모님들 많이들 도움을 받았으면 합니다.

다음카페이기에 다음 아이디가 있어야하지만 간단하게 가입할 수 있습니다.

http://uri-i.or.kr/   (학가협)




ArrayList Deduplication java ( 자바 arraylist 중복제거)

//listArray 중복제거
listArray.add(...);//add 

hashset에 넣으면 한번에 중복이 제거된다. 

List<Integer> arrDeleteNo = new ArrayList<Integer>(new HashSet<Integer>(listArray));

andoid get device id (안드로이드 디바이스 아이디 가져오기)

1.AndroidManifest.xml에 퍼미션을 추가해준다.(add permission AndroidManifest.xml)
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

2. 
TelephonyManager tm =(TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);

String deviceid = tm.getDeviceId();

get macaddress android (안드로이드 맥어드레스 가져오기)

1.AndroidManifest.xml setting(AndroidManifest.xml 다음의 권한을 추가)
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

2. make mathod(메소드를 만들어 사용한다)

public String getMacAddress(Context context) {
    WifiManager wimanager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    String macAddress = wimanager.getConnectionInfo().getMacAddress();
    if (macAddress == null) {
        macAddress = "와이파이가 안되거나 맥어드레스가 없는경우";//device has no macaddress or wifi is disabled
    }
    return macAddress;
}

3. call mathod from other activity(다른 엑티비티에서 사용하기)
String macaddredd = getMacAddress(this);//or this.activity()

html의 데이타를 excle로 저장하기 간단소스 jsp (html table excel export simple jsp source)

//Data.html-------------data what you want to make to Excel(엑셀로만들 데이타)


<script type="text/javascript">
function excel(){
document.frm.action = "excel.jsp";
document.frm.excel_data.value = document.getElementById("excel_body").outerHTML;
document.frm.submit();

}
<form name="frm" method="post">
       <input type="hidden" name="excel_data" />
</form>
<table id="excel_body">
<caption>list</caption>
<thead>
<tr>
<th>userid</th>
<th>name</th>
<th>mail</th>
</tr>
</thead>
<tbody>
<c:forEach items="${list}" var="data" varStatus="status">
<tr>
<td>
<c:out value='${data.userid}' />
</td>
<td>
<c:out value='${data.username}' />
</td>
<td>
<c:out value='${data.email}' />
</td>
</c:forEach>

</tbody>
</table>



//excel.jsp---------------------use just C&P (그냥복사해서 쓰세요)
<%
request.setCharacterEncoding("utf-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment; filename=\"excel.xls\"");
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
out.print("<meta http-equiv=\"Content-Type\" content=\"application/vnd.ms-excel; charset=utf-8\">");
%>
<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<style type="text/css">
body {font-family:tahoma;font-size:12px}
table {padding:2px;border-spacing:0px;font-family:tahoma;font-size:12px;border-collapse:collapse}
td {text-align:center}
</style>
</head>
<body>
<% out.print(request.getParameter("excel_data")); %>
</body>
</html>

spring security logouthandler source

spring security logouthandler는 기본적으로 log-ut-url을 설정해서 사용하지만. 특별한 경우 예를들면 서브도메인이 존재하는 경우 로그아웃을 눌렀을 경우 서브도메인에 따라 로그아웃 후에 경로를 달리해야할 경우가 있다. 1)기본적인 logout 방법 url을 지정해서 사용하는 경우(하나의 url로만 지정된다) <logout invalidate-session="true" logout-success-url="/" /> 2)로그아웃 경로를 달리해야할경우 <logout invalidate-session="true" success-handler-ref="logoutSuccessHandler" /> <beans:bean id="logoutSuccessHandler" class="com.xxx.xxx.security.LogoutSuccessHandler" />

아래는 class SOURCE =====SOURCE

import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;
import org.springframework.stereotype.Component;

@Component
public class LogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {

    @Override
    public void onLogoutSuccess(javax.servlet.http.HttpServletRequest request,
                                javax.servlet.http.HttpServletResponse response,
                                Authentication authentication)
            throws java.io.IOException, javax.servlet.ServletException {

       

                if(request.getParameter("SOMEVALUE")){
response.sendRedirect("/url A"); //이부분을 분기처리(if)해서 달리해주면 된다.
}else{
response.sendRedirect("/url B");
}

    }
}

//HTML
<a href="<c:url value="j_spring_security_logout/?logoutURL=SOMEVALUE" />" > Logout</a>






혹시나 하는 맘에 분기처리하는 방법은
request.getParameter로 로그아웃화면에서 특정한 parameter를 날려도 좋고
혹은 request.getServerName() 등으로 받아서 처리해도 좋다. 
사용방법은 본인의 생각에 따라 달리하면 될듯하다.

가장 간단한 방법은
이런식으로 넘겨주고 request.getParameter로 받아서 if로 처리하는 방법이 가장 간단하다. 

더 좋은 방법이 있다면 알려주면 감사합니다.~

오늘본 상품 소스

여기저기 돌아다니다가 보고 만든 코드..
오른쪽 상단에 떠있는 레이어로 나오도록 추가했다.

1.===============================================
쿠키를 굽는 소스, 상품상세페이지 첫상단에 코드를 추가해주면 된다.
=================================================

<?//$brandcode = $_GET["brandcode"]; //brandcode : 상품 번호
$i=0;
$today=$_COOKIE['goods_view'];
$tod2=explode(",", $_COOKIE['goods_view']); //저장된 쿠키값을 ','로 나누어 배열로 저장
$tod=array_reverse($tod2); //최근 목록 5개를 뽑기 위해 배열을 최신 것부터로 반대로 정렬해준다.
//중복을 막기 위해 최근 5개의 쿠키값 중에 상품 번호가 있는 지 검사하여 있으면 save 값을 no로 설정
while($i<5){ //출력할 상품 목록의 수 설정
 if($brandcode==$tod[$i]){
  $save=no;
 }
 $i++;
}

//쿠키값이 없을 경우 즉 처음 저장하는 경우
if($_COOKIE['goods_view']==""){
 setcookie('goods_view', $brandcode, time() + 86400, "/");
}

//저장된 쿠키값이 존재하고, 중복된 값이 아닌 경우
if($_COOKIE['goods_view'] != "" & $save != no){
 setcookie('goods_view' , $today. "," . $brandcode , time() + 86400, "/");
}
?>
<!--<script language="JavaScript">
javascript:alert(document.cookie);//요건 쿠키가 잘 됐는지 확인해 보는 자바스크립트
</script>-->

2.================================================
오늘본상품을 보여주는 코드 head나 footer처럼 모든 페이지에서 사용하는 곳에 소스를 추가하면 되겠다.
=================================================

<script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" >
    </script>
<script type="text/javascript">
 $(document).ready(function(){
  var currentPosition = parseInt( $(".float").css("top"));
  $(window).scroll(function(){
   var position = $(window).scrollTop();
   $(".float").stop().animate({"top":position+currentPosition+"px"},1000);
  });
 });
</script>
<style>
 .float{position:absolute; top:110px; right:30px;}
</style>

<?
//include("/inc_mysql_connect.html");
$today2 = explode(",", $_COOKIE['goods_view']);
$today_t=array_reverse($today2); //최근 것부터 정렬하기 위해 배열 순서를 반대로 바꿔준다.
?>
<div class="float">
<table border=0 background="../img/today.gif" style=background-repeat:no-repeat width=80 height=500 cellpadding=0 cellspacing=0;>
<?
 if(!($today_t[0] == "" || $today_t[0] == null)){
?>
<tr style="paddind-left:10px;"><td height=20><strong>오늘본상품</strong></td></tr>
<?} ?>
<?
//상품명을 몇 자로 이내로 자르는 함수
function substr2($str, $start, $end){ //start부터 end까지 상품명을 추출한다.
 preg_match_all('/([\x00-\x7e]|..)/', $str, $string);
 return implode('',array_slice($string[0],$start,$end));
}
?>

<?
for($i=0; $i<5 && $today_t[$i]; $i++){
 if($today_t[$i] !=""){
 $query="select brandcode,brandname,minimage from brand where brandcode=$today_t[$i]";
 $result=mysql_query($query);
 $rows=mysql_fetch_array($result);
?>

<tr align=center style="padding-right:15px;padding-top:5px;">
 <td align=center height=42 >
 <a href="view.html?brandcode=<?=$rows[brandcode]?>">
  <img src="../shopimages/<?=$rows[minimage]?>" width=60 height=42 border=0 onerror='this.src=../img/noimage.gif'>
 </a>
 </td>
</tr>
<?
 echo "<tr><td align=center height=5 style=padding-right:15px;line-height :9px; font-size:9,>".substr2($rows[brandname],0,10)."</td></tr>";
 /*echo "<tr><td align=center height=5 style=line-height :9px; font-size:11>"."\\".number_format($rows[price])."</td></tr>";*/
 }
}
?>
<tr>
<td></td>
</tr>
</center>
</table>
</div>


이상.. 변수는 각자 알아서 하면 될듯.