'PROGRAMMING'에 해당되는 글 34건

 
  1. 2021.03.17 스프링부트 세션아이디와 셋쿠키값 다름, SpringBoot getSessionId, SetCookie, SessionId
  2. 2020.11.26 PostgreSql 테이블, 컬럼의 주석, 코멘트 조회 셀렉트 쿼리
  3. 2020.11.22 자바 모든 세션값 출력, Java Session Enumeration PrintAll 1
  4. 2020.10.13 파이썬 파일 쓰기 오류, UnicodeEncodeError: 'cp949' codec can't encode character illegal multibyte sequence
  5. 2014.04.30 [GOOGLE/API] 구글 API 지도 클릭, 주소 알아내기
  6. 2014.03.28 정규표현식 패턴
  7. 2013.06.19 [JQUERY/JS] 페이지 안에서 검색, Ctrl+F 검색기능
  8. 2012.09.18 [ORACLE] 에러 ORA-01843: 지정한 월이 부적합합니다 , not a valid month ... SqlException
  9. 2012.09.14 [DB/ORACLE] 오라클 셀렉트인서트, SELECT, INSERT
  10. 2012.09.05 [CHROME/JS] 크롬 익스텐션 사용자 변수 저장/로드 샘플 예제 1
  11. 2012.01.03 [JAVA] 자바 달력 날짜 사용법, 현재날짜, 현재시간, 24시 java.util.Calendar 1
  12. 2011.02.25 [JAVA] 이미지 리사이즈용 소스, 썸네일 만들기, THUMBNAIL, IMAGE, RESIZE 2
  13. 2010.10.28 [IBATIS] 아이바티스 쿼리 작성시 유의사항, com.ibatis.common.xml.NodeletException, Error parsing XML 1
  14. 2010.10.21 [ORACLE] 오라클 페이징 3가지 쿼리, PAGING, RNUM, ROWNUM 1
  15. 2010.03.19 [JSP] 레퍼러 Referer
  16. 2010.03.16 [AS3] typeof, 1120: Access of undefined property [OBJECT].
  17. 2010.02.22 [ORACLE] 오라클 테이블 목록 / 컬럼 조회
  18. 2009.12.17 [FLASH/AS2] 플래시 액션스크립트2 크로스도메인 설정, AS2 CrossDomain 1
  19. 2009.12.17 [FLASH/AS2] 플래시 액션스크립트2 배열 섞는 함수, Array Shuffle
  20. 2009.12.03 [JSP/PHP] JSP vs PHP 서버변수 모음
  21. 2009.07.03 [FLASH/AS2] 액션스크립트 풀스크린 오른쪽메뉴, FullScreen, ContextMenu
  22. 2009.07.01 c# wmv 인코더 1
  23. 2009.06.30 flex arraycollection binding on datagrid with image 1
  24. 2009.06.30 flex warning, 1084: var 'XXXX'의 범위가 기본 네임스페이스인 XXXX: internal로 지정됩니다. 이에 따라 이 패키지 외부에서는 보이지 않습니다.
  25. 2009.06.26 javascript cross domain access
  26. 2009.06.26 php urlencode, urldecode, mb_convert_encoding utf8 쿼리스트링
  27. 2009.06.25 php ffmpeg command example on windows
  28. 2009.06.25 [PHP] REGULAR EXPRESSION EXAMPLE preg_replace, preg_match, str_replace 1
  29. 2009.06.23 asp binary 바이너리 파일 입출력 함수 93
  30. 2009.06.21 c++ win32 api char, string 키코드 알아내기
2021. 3. 17. 16:11 PROGRAMMING
스프링부트 세션아이디와 셋쿠키값 다름, SpringBoot getSessionId, SetCookie, SessionId

스프링부트 2.0 이상부터 외부로 나가는 세션아이디는 base64로 인코딩되어 출력된다고 합니다.

 

 

SetCookie로 받은 세션값

YzlkZjRjMDgtODMwMi00OTAxLWE3MzUtMzFjYTE5YWEyMTM1

 

 

JAVA에서 getId로 출력한 세션아이디

request.getSession().getId()

c9df4c08-8302-4901-a735-31ca19aa2135

 

base64 인코딩

request.getSession().getId()의 세션아이디를 base64로 인코딩하면 같은 값이였다는걸 알수있습니다.

2020. 11. 26. 15:01 PROGRAMMING
PostgreSql 테이블, 컬럼의 주석, 코멘트 조회 셀렉트 쿼리

코멘트 검색할때 사용하는 쿼리 입니다.

 

1. 테이블의 주석(코멘트/설명) 출력

/* 테이블 주석 셀렉트 */
SELECT N.NSPNAME, C.RELNAME, OBJ_DESCRIPTION(C.OID) 
FROM PG_CATALOG.PG_CLASS C INNER JOIN PG_CATALOG.PG_NAMESPACE N ON C.RELNAMESPACE=N.OID 
WHERE C.RELKIND = 'r'
AND NSPNAME = '데이터베이스명'
AND RELNAME = '테이블명'

 

2. 테이블의 컬럼명과 주석(코멘트/설명) 출력

/* 컬럼 주석 셀렉트 */
SELECT
	PS.RELNAME AS TABLE_NAME,
	PA.ATTNAME AS COLUMN_NAME,
	PD.DESCRIPTION AS COLUMN_COMMENT
FROM PG_STAT_ALL_TABLES PS, PG_DESCRIPTION PD, PG_ATTRIBUTE PA
WHERE PD.OBJSUBID<>0
	AND PS.RELID=PD.OBJOID
	AND PD.OBJOID=PA.ATTRELID
	AND PD.OBJSUBID=PA.ATTNUM
	AND PS.SCHEMANAME='스키마'
	AND PS.RELNAME='테이블'
ORDER BY PS.RELNAME, PD.OBJSUBID

 

 

2020. 11. 22. 01:35 PROGRAMMING
자바 모든 세션값 출력, Java Session Enumeration PrintAll

자바에서 세션값 출력

 

Enumeration을 이용해서 세션에 등록한 모든 값을 출력하는 예제 입니다.

Enumeration<String> attributes = request.getSession().getAttributeNames();
while (attributes.hasMoreElements()) {
    String attribute = (String) attributes.nextElement();
    System.err.println(attribute+" : "+request.getSession().getAttribute(attribute));
}

 

 

2020. 10. 13. 10:12 PROGRAMMING
파이썬 파일 쓰기 오류, UnicodeEncodeError: 'cp949' codec can't encode character illegal multibyte sequence

UnicodeEncodeError: 'cp949' codec can't encode character '오류문자' in position 에러위치: illegal multibyte sequence

 

 

파이썬이 기본이 UTF-8이 아니라서 비-영어권 사용자들은 코딩할때 별도의 옵션들을 사용해야 합니다.

파일처리할때도 이런 오류가 발생하는데

인코딩 타입을 지정하면 해결할 수 있습니다.

 

# cp949 오류 발생
file=open('파일명','w')

# 오류 안-발생
file=open('파일명','w',encoding='UTF-8')

 

 

2014. 4. 30. 21:33 PROGRAMMING
[GOOGLE/API] 구글 API 지도 클릭, 주소 알아내기





<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<div id="map" style="width:730px; height:500px;"><br /></div>
<script type="text/javascript">
<!--
	var map = new google.maps.Map(document.getElementById("map"), {
		zoom: 12,
		center: new google.maps.LatLng(37.564615,126.98420299999998),
		mapTypeId: google.maps.MapTypeId.ROADMAP
	});
	google.maps.event.addListener(map, 'click', function(mouseEvent) {
		getAddress(mouseEvent.latLng);
	});

	function getAddress(latlng) {
		var geocoder = new google.maps.Geocoder();
		geocoder.geocode({
			latLng: latlng
		}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				if (results[0].geometry) {
					var address = results[0].formatted_address.replace(/^日本, /, '');
					new google.maps.InfoWindow({
						content: address + "<br />(Lat, Lng) = " + latlng
					}).open(map, new google.maps.Marker({
						position: latlng,
						map: map
					}));
				}
			} else if (status == google.maps.GeocoderStatus.ERROR) {
				alert("ERROR");
			} else if (status == google.maps.GeocoderStatus.INVALID_REQUEST) {
				alert("INVALID_REQUEST");
			} else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
				alert("OVER_QUERY_LIMIT");
			} else if (status == google.maps.GeocoderStatus.REQUEST_DENIED) {
				alert("REQUEST_DENIED");
			} else if (status == google.maps.GeocoderStatus.UNKNOWN_ERROR) {
				alert("UNKNOWN_ERROR");
			} else if (status == google.maps.GeocoderStatus.ZERO_RESULTS) {
				alert("ZERO_RESULTS");
			} else {
				alert(status);
			}
		});
	}
//-->
</script>
2014. 3. 28. 23:53 PROGRAMMING
정규표현식 패턴

var patt_k = /([가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i; // 한글 정규식

var patt_e = /[A-z]/i; // 영문자 정규식

var patt_w = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/gi; // 특수문자 정규식

var patt_n = /[\d]/i; // 숫자 정규식

var patt_4num1 = /(\w)\1\1\1/; // 같은 영문자&숫자 연속 4번 정규식

var patt_4num2 = /([\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"])\1\1\1/; // 같은 특수문자 연속 4번 정규식

var patt_4num3 = /([가-힣ㄱ-ㅎㅏ-ㅣ\x20])\1\1\1/; // 같은 한글 연속 4번 정규식

var patt_cont = /(0123)|(1234)|(2345)|(3456)|(4567)|(5678)|(6789)|(7890)/; // 연속된 숫자 정규식


// php

if(preg_match("/(\w)\\1\\1\\1/", $str)) // 같은 영문자&숫자 연속 4번 정규식

if(preg_match("/([\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"])\\1\\1\\1/", $str)) // 같은 특수문자 연속 4번 정규식

if(preg_match("/([\xA1-\xFE][\xA1-\xFE])\\1\\1\\1/", $str)) // 같은 한글 연속 4번 정규식

if(preg_match("/(0123)|(1234)|(2345)|(3456)|(4567)|(5678)|(6789)|(7890)/", $str)) // 연속된 숫자 정규식

2013. 6. 19. 13:21 PROGRAMMING
[JQUERY/JS] 페이지 안에서 검색, Ctrl+F 검색기능

화면안에서 검색할 수 있게 해주는 스크립트 입니다.

DOM방식으로 작동하는 스크립트 소스를 수정한 것입니다.

이 소스는 인풋박스 한개와 버튼 한개를 사용하고 있습니다.



contsrch.js




$('a[name="btnContSrch"]').unbind('click').click(function(){
	var strContSrch=$('input[name="txtContSrch"]').val();
	if(strContSrch==$strContSrchInit || !strContSrch){
		alert('검색어를 입력하세요.');
		$('input[name="txtContSrch"]').focus();
		return false;}
	if(navigator.appName.indexOf("Microsoft")<0){
		if(!window.find(strContSrch,false,false,true,false,false,true)){
		}
		return false;
	}
	bodySearchAll('areaDetail'/*bodySideContent*/,strContSrch,'txtContSrch'/*bdySearch 버튼*/, 'down'/*chkMode*/);
	return false;
});
$('input[name="txtContSrch"]').val($strContSrchInit).bind('focus',function(){
	if($(this).val()==$strContSrchInit) $(this).val('');
}).bind('blur',function(){
	if(!$(this).val()) $(this).val($strContSrchInit);
}).bind('keyup',function(){
	if(event.keyCode!=13) return;
	return $('a[name="btnContSrch"]').click();
	return false;
});
끝;
2012. 9. 18. 18:01 PROGRAMMING
[ORACLE] 에러 ORA-01843: 지정한 월이 부적합합니다 , not a valid month ... SqlException

ORA-01843: 지정한 월이 부적합합니다.

ORA-01843: not a valid month ...


대부분 오타일 경우가 많습니다.

변환할수 없는 날짜나 시간으로 TO_DATE함수를 사용하면 발생합니다.


대체 '월'이 뭔뜻인지...



슬래시와 대시가 틀리고, 년월일 순서가 잘못됨

 
UPDATE TABLE_NAME SET
INPUT_DATE=TO_DATE('09/18/2012 00:00','YYYY-MM-DD HH24:MI:SS')
WHERE SEQ=1
 



수정 후

 
UPDATE TABLE_NAME SET
INPUT_DATE=TO_DATE('09/18/2012 00:00','MM/DD/YYYY HH24:MI:SS')
WHERE SEQ=1
 


2012. 9. 14. 09:00 PROGRAMMING
[DB/ORACLE] 오라클 셀렉트인서트, SELECT, INSERT

오라클 셀렉트 인서트

이렇게 하면 갑자기 게임이 하고싶어집니다.

담배피러가야지~

 

 

EXAMPLE1

INSERT INTO table_adr
	SELECT *
	FROM table_kaudo
	WHERE name='doori'

 

 

EXAMPLE2

INSERT INTO table_adr (name,sex,age)
(
	SELECT
		name,
		sex,
		age 
	FROM
	(
		SELECT
			'안두봉' name,
			'남자' sex
		FROM DUAL
	), 
	(
		SELECT
			MAX(age) +1 age
		FROM table_adr
	)
)
2012. 9. 5. 17:41 PROGRAMMING
[CHROME/JS] 크롬 익스텐션 사용자 변수 저장/로드 샘플 예제

크롬 익스텐션 개발시 사용자 변수를 저장하거나 로드하는 예제 입니다.

 

익스텐션 특성상 사용자가 입력한값을 저장해놨다가

다시 꺼내서 불러내어놔야 할 경우가 많이 있습니다.

 

나름 쿠키를 사용해도 별 문제는 없지만,

크롬에서는 localStorage라는 저장소가 있습니다.

 

 

저장하기 [SAVE]

localStorage["변수명"]=값; (popup.html 8줄)

 

불러오기 [LOAD]

var 변수=localStorage["변수명"]; (popup.html 15줄)

 

 

샘플 프로젝트(?)

 

1. 익스텐션에서 사용할 디렉토리를 만듭니다.

 

2. manifest.json 작성

{
	"name": "kaudo chrome extension sample",
	"version": "1.0",
	"description": "blog.nachal.com",
	"browser_action": {
		"popup": "popup.html"
	},
	"permissions": [
	],
	"background": {
	}
}

 

3. popup.html 작성

<html>
<style>
textarea{width:300px;height:50px}
input{width:300px}
</style>
<script type="text/javascript">
var update=function(str){
	localStorage["source"]=str;
	result.value=str.toLowerCase().replace(/(\_[a-z])/g, function($1){
		return $1.toUpperCase().replace('_','');
	});
}

var load=function(){
	if(localStorage['source']) source.value=localStorage['source'];
	update(source.value);
}
</script>
<body onload="load()">
<textarea id="source" onkeyup="update(this.value)" onfocus="update(this.value)" onblur="update(this.value)">
AHNDOORI DOORI AHN
</textarea><br/>
<textarea id="result"></textarea>
</body>
</html>

 

 

 

2012. 1. 3. 10:04 PROGRAMMING
[JAVA] 자바 달력 날짜 사용법, 현재날짜, 현재시간, 24시 java.util.Calendar
년, 월, 일, 시, 분, 초, 24시, 밀리초, 요일 구하기

소스 
import java.util.Calendar;

public class Calendar{
	public static void main(String args[]){
		Calendar calendar=Calendar.getInstance( );
		System.out.println("YEAR "+calendar.get(Calendar.YEAR));
		System.out.println("MONTH "+calendar.get(Calendar.MONTH)+1);
		System.out.println("DAY OF MONTH "+calendar.get(Calendar.DAY_OF_MONTH));
		System.out.println("HOUR OF DAY "+calendar.get(Calendar.HOUR_OF_DAY)); // 24시간
		System.out.println("MINUTE "+calendar.get(Calendar.MINUTE));
		System.out.println("SECOND "+calendar.get(Calendar.SECOND));
		System.out.print("HOUR AM/PM "+calendar.get(Calendar.HOUR));
		if (calendar.get(Calendar.AM_PM)==0) System.out.println("AM");
		else System.out.println("PM");

		System.out.println("MILLISECOND "+calendar.get(Calendar.MILLISECOND));
		System.out.println("DAY OF WEEK "+calendar.get(Calendar.DAY_OF_WEEK)); // 일요일= 1
		System.out.println("DAY OF YEAR "+calendar.get(Calendar.DAY_OF_YEAR)); // 1월1일=1
		System.out.println("WEEK OF YEAR "+calendar.get(Calendar.WEEK_OF_YEAR)); // 1월1일=1
		System.out.println("WEEK OF MONTH "+calendar.get(Calendar.WEEK_OF_MONTH)); // 첫째주=1
	}
}


결과
YEAR 2012
MONTH 01
DAY OF MONTH 3
HOUR OF DAY 10
MINUTE 0
SECOND 31
HOUR AM/PM 10AM
MILLISECOND 852
DAY OF WEEK 3
DAY OF YEAR 3
WEEK OF YEAR 1
WEEK OF MONTH 1

2011. 2. 25. 17:53 PROGRAMMING
[JAVA] 이미지 리사이즈용 소스, 썸네일 만들기, THUMBNAIL, IMAGE, RESIZE

사용법은 패스~

import [패키지];

File fileSource=new File("C:\ORIGINAL\","SOURCE.JPG");
File fileThumb=new File("C:\TEST\","AHNDOORI.JPG");  
ImageUtil.resizeImage(fileSource,fileThumb,128,96);

 

package [패키지];

import java.io.File;
import java.io.IOException;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.PixelGrabber;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class ImageUtil{
 public static final int RATIO=0;
 public static final int SAME=-1;

 // 소스파일, 타겟파일, 최대값
 public static void resizeImage(File src,File dest,int boxsize) throws IOException{
  int width=0;
  int height=0;
  Image srcImg=setImage(src);
  int srcWidth=srcImg.getWidth(null);
  int srcHeight=srcImg.getHeight(null);

  if(srcWidth>srcHeight){
   width=boxsize;
   height=(int) ((double) boxsize/(double) srcWidth);
  }else if(srcWidth<srcHeight){
   width=(int) ((double) boxsize/(double) srcHeight);
   height=boxsize;
  }else {
   width=boxsize;
   height=boxsize;
  }

  try{
   if(srcWidth<=boxsize && srcHeight<=boxsize) resizeImage(src, dest, -1, -1);
   else resizeImage(src, dest, width, height);
  }catch(IOException e){
   throw e;
  }
 }

 // 소스파일, 타겟파일, 넓이, 높이
 public static void resizeImage(File src,File dest,int width,int height) throws IOException{
  Image srcImg=setImage(src);

  int srcWidth=srcImg.getWidth(null);
  int srcHeight=srcImg.getHeight(null);
  int destWidth=-1, destHeight=-1;

  if(width==SAME) destWidth=srcWidth;
  else if(width>0) destWidth=width;

  if(height==SAME) destHeight=srcHeight;
  else if(height>0) destHeight=height;

  if(width==RATIO && height==RATIO){
   destWidth=srcWidth;
   destHeight=srcHeight;
  }else if(width==RATIO){
   double ratio=((double) destHeight)/((double) srcHeight);
   destWidth=(int) ((double) srcWidth*ratio)-1;
  }else if(height==RATIO){
   double ratio=((double) destWidth)/((double) srcWidth);
   destHeight=(int) ((double) srcHeight*ratio)-1;
  }

  Image imgTarget=srcImg.getScaledInstance(destWidth,destHeight,Image.SCALE_SMOOTH);
  int pixels[]=new int[destWidth*destHeight];
  PixelGrabber pg=new PixelGrabber(imgTarget, 0, 0, destWidth, destHeight, pixels, 0, destWidth);
  try{
   pg.grabPixels();
  }catch(InterruptedException e){
   throw new IOException(e.getMessage());
  }
  BufferedImage destImg=new BufferedImage(destWidth, destHeight, BufferedImage.TYPE_INT_RGB);
  destImg.setRGB(0, 0, destWidth, destHeight, pixels, 0, destWidth);
  ImageIO.write(destImg, "jpg", dest);
 }

 private static Image setImage(File src) throws IOException{
  Image srcImg=null;
  String suffix=src.getName().substring(src.getName().lastIndexOf('.')+1).toLowerCase();
  if(suffix.equals("bmp")) srcImg=ImageIO.read(src);
  else srcImg=new ImageIcon(src.toURI().toURL()).getImage();
  return srcImg;
 }

}

2010. 10. 28. 18:01 PROGRAMMING
[IBATIS] 아이바티스 쿼리 작성시 유의사항, com.ibatis.common.xml.NodeletException, Error parsing XML

논리연산자를 아무렇게나 사용하면 에러가 납니다.
왜냐면 XML파일이기 때문이죠.
GREATER나 LESS를 쓰면 태그로 인식하는것입니다.

<![CDATA[ STRING ]]> 으로 쿼리 전체를 감싸도 됩니다.

이것때문에 파일이 깨지면 컴파일이 안되서 길쭉한 에러를 보게됩니다.

Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'.
Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.
Cause: org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.

적용방법
<= : <![CDATA[ <= ]]>
=> : <![CDATA[ => ]]>
< : <![CDATA[ < ]]>
> : <![CDATA[ > ]]>

샘플
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="QueryManager">
 <select id="sampleQuery1" resultClass="java.util.HashMap">
  SELECT * FROM (
   SELECT ROWNUM AS RNUM, COL1, COL2, COL3, COL4 FROM BOARD
   ORDER BY COL1 ASC, COL2 DESC
  ) WHERE RNUM <![CDATA[ <= ]]> #START# ORDER BY COL1 DESC, COL2 ASC

 </select>

 <select id="sampleQuery2" resultClass="java.util.HashMap" parameterClass="java.util.HashMap">
  SELECT COUNT(*) AS TOTAL FROM BOARD
 </select>

2010. 10. 21. 16:55 PROGRAMMING
[ORACLE] 오라클 페이징 3가지 쿼리, PAGING, RNUM, ROWNUM
오라클에서 페이징 구현할때 쓰는 쿼리입니다.

SELECT * FROM (
 SELECT ROWNUM AS RNUM, A.* FROM (
  SELECT 컬럼 FROM 테이블
 ) A WHERE ROWNUM <= 시작점 + 출력양 ORDER BY ROWNUM DESC
) WHERE ROWNUM <= 출력양 ORDER BY RNUM ASC


SELECT * FROM (
 SELECT ROWNUM AS RNUM, A.* FROM (
  SELECT 컬럼 FROM 테이블
 ) A WHERE ROWNUM < 출력양
) WHERE RNUM > 시작점 ORDER BY 컬럼 DESC


SELECT * FROM (
 SELECT ROWNUM AS RNUM, 컬럼 FROM 테이블
) WHERE RNUM BETWEEN 시작점 AND 출력양
ORDER BY 컬럼 DESC

2010. 3. 19. 14:00 PROGRAMMING
[JSP] 레퍼러 Referer
HTTP Header Referer
이전에 있던 페이지명을 리턴한다.

request.getHeader("referer")

out.println(request.getHeader("referer"))


전페이지가 없으면 referer값도 없다.
2010. 3. 16. 20:56 PROGRAMMING
[AS3] typeof, 1120: Access of undefined property [OBJECT].
ㅅㅂ훌레쉬 as2에서 쓰던 typeof함수 이젠 못쓰는거??

as2에서는 객체의 존재여부를 typeof를 통해 알수있었습니다.
하지만 as3에선 typeof(없는객체)를 뿌리게되면 컴파일이 안되면서,
stop()이 있음에도 불구, 화면은 딸딸이를 치며 지랄을해요.

없을만한 객체의 존재여부를 알고싶을땐,
eval연산자를 이용해서 검사하면 됩니다.

as2에선 대충 이런식의 함수를 썼을거에요.
if(typeof(OBJECT)!="undefined"){
// code
}

as3에선 이렇게 검사하면 됩니다. MovieClip(root)는 as2의 _root와 같습니다.
if(MovieClip(root)["OBJECT"]){
// code
}

MovieClip(root)는 루트라고 했으니, 다른객체에 종속되어있을땐 MovieClip(root)대신에 부모객체를 써주세요.
2010. 2. 22. 17:41 PROGRAMMING
[ORACLE] 오라클 테이블 목록 / 컬럼 조회
죳망구리 안좋은 오라클은 테이블목록이나 테이블스키마보는것도 쿼리로 해야한다.
두꺼비같은 툴이 있으면 거기서 버튼눌러가며 봐도 되지만,
왠지 명령줄도 알고있어야할거같은 불안감? 자좃심?

목록 조회
select object_name from user_objects where object_type='TABLE'

컬럼 조회
select column_name,data_type,data_length,data_precision,data_scale,nullable from cols where table_name='[테이블명]'
2009. 12. 17. 17:11 PROGRAMMING
[FLASH/AS2] 플래시 액션스크립트2 크로스도메인 설정, AS2 CrossDomain
플래시에서 XML 데이타를 읽어들여야할때
로컬에선 잘 됬을지 모르나,
인터넷상에선 서버가 서로 틀리게 되면 보안정책 위반으로 읽어오지 못함

1. xml이 위치한 서버에 crossdomain.xml을 생성
2. swf를 로딩하는 곳에서 allowScriptAccess 확인
* 스크립트에서 직접 보안정책파일(crossdomain.xml)을 지정할 수도 있다.

crossdomain.xml
<?xml version="1.0" encoding="utf-8"?>
<cross-domain-policy>
 <allow-access-from domain="*" />
</cross-domain-policy>
allow-access-from은 아래와 같이 쓸수 있음
<allow-access-from domain="*.kaudo.com" to-ports="*" />
<allow-access-from domain="kaudo.com" to-ports="80" />
<allow-access-from domain="www.kaudo.com" />


특별한 파일명으로 직접 설정할때에는 Flash 스크립트창에 직접 써줘도 된다.
System.security.allowDomain("*");
System.security.loadPolicyFile(http://도메인/crossdomain.xml);


그리고 swf를 로딩하는 <object나 <embed태그에 allowScriptAccess는 always로 명시해줘야한다.
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="984" height="855" align="middle">
<param name="allowScriptAccess" value="always" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="플래시파일.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="wmode" value="transparent" />
<embed src="플래시파일.swf" quality="high" bgcolor="#FFFFFF" width="984" height="855" align="middle" allowScriptAccess="always" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />
</object>
allowScriptAccess = always, sameDomain, never 기본값은 sameDomain
2009. 12. 17. 16:53 PROGRAMMING
[FLASH/AS2] 플래시 액션스크립트2 배열 섞는 함수, Array Shuffle
플래시 액션스크립트 2 프로토타입 함수

함수는 아무데나 붙여넣고
배열명.Shuffle();

Array.prototype.Shuffle=function(){
   for(i=0;i<this.length;i++){
      var tmp=this[i];
      var randomNum=random(this.length);
      this[i]=this[randomNum];
      this[randomNum]=tmp;
   }
}

aryDoori.Shuffle();
2009. 12. 3. 19:16 PROGRAMMING
[JSP/PHP] JSP vs PHP 서버변수 모음
PHP 변수 > JSP 클래스.메소드

SERVER_NAME > request.getServerName()
SERVER_SOFTWARE > request.getServletContext().getServerInfo()
SERVER_PROTOCOL > request.getProtocol()
SERVER_PORT > request.getServerPort()
REQUEST_METHOD > request.getMethod()
PATH_INFO > request.getPathInfo()
PATH_TRANSLATED > request.getPathTranslated()
SCRIPT_NAME, PHP_SELF > request.getServletPath()
DOCUMENT_ROOT > request.getRealPath("/")
QUERY_STRING > request.getQueryString()
REMOTE_HOST > request.getRemoteHost()
REMOTE_ADDR > request.getRemoteAddr()
AUTH_TYPE > request.getAuthType()
REMOTE_USER > request.getRemoteUser()
CONTENT_TYPE > request.getContentType()
CONTENT_LENGTH > request.getContentLength()
HTTP_ACCEPT > request.getHeader("Accept")
HTTP_USER_AGENT > request.getHeader("User-Agent")
HTTP_REFERER > request.getHeader("Referer")
2009. 7. 3. 17:09 PROGRAMMING
[FLASH/AS2] 액션스크립트 풀스크린 오른쪽메뉴, FullScreen, ContextMenu

Stage["displayState"] = "fullScreen";
Stage["displayState"] = "normal";

cmDefault=new ContextMenu();
cmDefault.builtInItems.zoom=false;
cmDefault.builtInItems.quality=false;
cmDefault.builtInItems.play=false;
cmDefault.builtInItems.loop=false;
cmDefault.builtInItems.rewind=false;
cmDefault.builtInItems.forward_back=false;
cmDefault.builtInItems.print=false;
cmDefault.builtInItems.save=false;
cmDefault.customItems.push(new ContextMenuItem("menuitem",functionname));
_root.menu=cmDefault;
function functionname(){
 // TODO
}

2009. 7. 1. 08:08 PROGRAMMING
c# wmv 인코더



windows xp 이상,
service pack 2 이상,
windows media encoder 8 이상,
.net framework 2 이상에서 실행가능합니다.

* 대세는 ffmpeg
2009. 6. 30. 16:25 PROGRAMMING
flex arraycollection binding on datagrid with image
아직 하는사람이 많지 않아 한참을 뒤져서 겨우 알아냈습니다.
환경은 air 어플리케이션입니다.

- arraycollection으로 datagrid에 바인딩합니다.
- 특정 행에 대해 이미지를 추가할 수 있습니다. (이미지 클래스는 일단 테스트로 하나 넣어봤습니다.)
- 디자인을 입힐땐 그리드틀이 필요하지 않기때문에 경계선과 헤더를 없애고, 오버컬러를 일단 빨간색으로 변경
- 토글버튼으로 특정 컬럼을 온/오프 할수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute" initialize="onInitialize()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
private var acPlaylist:ArrayCollection=new ArrayCollection([{first:"ahn",last:"doori"},{first:"kaudo",last:"뒤질래"}]);
[Bindable][Embed(source='../assets/rss.png')] private var imgRss:Class;
private var objItem:Object=[{first:"ㅎㅎㅎㅎ}",last:"ㅍㅍㅍㅍ"}];
private function onInitialize():void{
for(var i:uint=0;i<10;i++){
   acPlaylist.addItem({first:"Twelve",last:"zzzzz",cover:imgRss});
  }
 }
]]>
</mx:Script>
<mx:DataGrid dataProvider="{acPlaylist}" headerHeight="0" backgroundAlpha="0" borderStyle="none"
 verticalGridLines="false" horizontalGridLines="false" rollOverColor="red" selectionColor="white">
 <mx:columns>
 <mx:DataGridColumn dataField="first"/>
 <mx:DataGridColumn id="last" dataField="last" visible="false"/>
 <mx:DataGridColumn dataField="cover">
  <mx:itemRenderer><mx:Component>
   <mx:HBox paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0" horizontalAlign="center" verticalAlign="middle">
   <mx:Image height="40" width="40" source="{data.cover}"/>
   </mx:HBox>
  </mx:Component></mx:itemRenderer>
 </mx:DataGridColumn>
 </mx:columns>
</mx:DataGrid>
<mx:Button label="Toggle Column" click="last.visible=!last.visible;"  x="350" y="40"/>
</mx:WindowedApplication>

2009. 6. 30. 13:32 PROGRAMMING
flex warning, 1084: var 'XXXX'의 범위가 기본 네임스페이스인 XXXX: internal로 지정됩니다. 이에 따라 이 패키지 외부에서는 보이지 않습니다.
var acPlaylist:ArrayCollection=new ArrayCollection([{first:"ahn",last:"doori"},{first:"kaudo",last:"뒤질래"}]);
이런코드를 작성하면 나는 경고들

1. 1084: var 'XXXX'의 범위가 기본 네임스페이스인 XXXX: internal로 지정됩니다. 이에 따라 이 패키지 외부에서는 보이지 않습니다.
2. Data binding will not be able to detect assignments to "XXXX".

해결방법
[Bindable]
private var acPlaylist:ArrayCollection=new ArrayCollection([{first:"ahn",last:"doori"},{first:"kaudo",last:"뒤질래"}]);

와 같이 코딩하면 없어진다.
2009. 6. 26. 11:01 PROGRAMMING
javascript cross domain access
도메인이 서로 다른 페이지들끼리 통신하려면,
보안문제로 "사용 권한이 없습니다"라는 오류가 발생합니다.

www.kaudo.com과 blog.kaudo.com이 자바스크립트로 통신하려면 도메인을 맞춰주면 됩니다.
둘다 www와 blog의 서브도메인들이기때문에,
양쪽 페이지에
<script>
document.domain="kaudo.com";
</script>

처럼 코딩하면 문제없이 사용할 수 있습니다.

* www없는 kaudo.com과 같은 도메인도 www와는 다른도메인으로 인식합니다. www와 루트도메인을 섞어쓸때는 페이지 상단에 항상 document.domain="[루트도메인]";을 써주는게 좋습니다. (물론 도메인을 하나만 쓰는게 가장 이상적이죠__)
2009. 6. 26. 10:10 PROGRAMMING
php urlencode, urldecode, mb_convert_encoding utf8 쿼리스트링
euc-kr의 페이지에서 utf-8페이지를 iframe으로 열고 변수를 전달해야할 때
urlencode같은 함수를 사용하면 글자들이 %를 포함하기때문에 sql에선 사용할수 없습니다.
고로, mysql 쿼리를 때리기 위해 순수한 utf8 한글로 변형해야 합니다.

1. 쿼리값을 디코딩한다. 그러면 디코딩은 되었지만, 출력해보면 utf-8페이지이기때문에 깨진 글자가 나올겁니다.
2. euc-kr을 utf-8로 인코딩한다.
3. mysql 쿼리실행
$keyword=$_REQUEST[q];
$keyword=urldecode($keyword);
$keyword=mb_convert_encoding($keyword,"UTF-8","EUC-KR");
or
$keyword=mb_convert_encoding(urldecode($_REQUEST[q]),"UTF-8","EUC-KR");
using
$sql="SELECT * FROM [table] WHERE [column] LIKE '%".$keyword."%'";


euc-kr에서 utf8로 변환
$STRING=mb_convert_encoding($STRING,"UTF-8","EUC-KR");


utf8에서 euc-kr로 변환
$STRING=mb_convert_encoding($STRING,"EUC-KR","UTF-8");


관련함수
utf8_encode, utf8_decode, base64_encode, base64_decode, rawurlencode, rawurldecode, urlencode, urldecode, parse_url,
mb_convert_encoding, mb_detect_encoding, mb_convert_variables...
2009. 6. 25. 19:02 PROGRAMMING
php ffmpeg command example on windows
생성된 flv에 메타태그가 없으면 클라이언트가 100%다운로드하기전까진 트래킹이 안됩니다.
(flvtool2 사용하여 추가할 수 있습니다.)

제가 사용하는 ffmpeg는 preset이 전체경로로만 가져올 수 있게되어있습니다.
(제 빌드는 tripp의 버전입니다. http://tripp.arrozcru.org)

동영상 가운데 5부분으로 썸네일 만들기
for($i=1;$i<6;$i++){
 $sec=round($duration/6*$i);
 exec("ffmpeg -itsoffset -".$sec." -i ".$filename." -an -r 1 -vframes 1 -s 120x100 -y ".$directory."thumb".$i.".png");
 $sec=$sec-2;
 $strParam.="&Thumb".$i."=".$thumburl."thumb".$i.".png&Time".$i."=".$sec;
 fwrite($fp,"thumb".$i."=".$sec."\n");
}

동영상 컨버팅하면서 텍스트파일로 진행상황 내보내기
ob_start();
passthru("ffmpeg -y -i ".$filename." -vcodec libx264 -vpre ".$directory."kaudo_libx264 -ar 44100 -ab 96k -b ".$_REQUEST['bitrate']." -f flv ".$output." 2>".$progress." | flvtool2 -U ".$output);
@unlink($filename);
ob_end_clean();
2009. 6. 25. 10:49 PROGRAMMING
[PHP] REGULAR EXPRESSION EXAMPLE preg_replace, preg_match, str_replace

PHP 정규표현식 예제

iframe 제거

$STRING=preg_replace("!<iframe(.*?)<\/iframe>!is","",$STRING);

script 제거

$STRING=preg_replace("!<script(.*?)<\/script>!is","",$STRING);

meta 제거

$STRING=preg_replace("!<meta(.*?)>!is","",$STRING);

style 태그 제거

$STRING=preg_replace("!<style(.*?)<\/style>!is","",$STRING);

&nbsp;를 공백으로 변환

$STRING=str_replace("&nbsp;"," ",$STRING);

연속된 공백 1개로

$STRING=preg_replace("/\s{2,}/"," ",$STRING);

태그안에 style= 속성 제거

$STRING=preg_replace("/ style=([^\"\']+) /"," ",$STRING); // style=border:0... 따옴표가 없을때
$STRING=preg_replace("/ style=(\"|\')?([^\"\']+)(\"|\')?/","",$STRING); // style="border:0..." 따옴표 있을때

태그안의 width=, height= 속성 제거

$STRING=preg_replace("/ width=(\"|\')?\d+(\"|\')?/","",$STRING);
$STRING=preg_replace("/ height=(\"|\')?\d+(\"|\')?/","",$STRING);

img 태그 추출 src 추출

preg_match("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);
preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i",$STRING,$RESULT);

호스트 추출

<?
preg_match("/^(http:\/\/)?([^\/]+)/i","http://www.kaudo.com/index.html",$matches);
$host = $matches[2];
echo$matches[0]."<br>";
echo$matches[1]."<br>";
echo$matches[2]."<br>";
?>
http://www.kaudo.com
http://
www.kaudo.com


매뉴얼:
http://kr2.php.net/manual/kr/function.preg-replace.php
http://kr2.php.net/manual/kr/function.preg-match.php
http://kr2.php.net/manual/kr/function.str-replace.php

2009. 6. 23. 17:21 PROGRAMMING
asp binary 바이너리 파일 입출력 함수

각기 다른 도메인에서 이미지를 불러들여야 할일이 생겼는데,
단순히 iframe으로 구현하려고 하다가 바이너리 출력으로 하게됬습니다.

"http://도메인/파일명.asp" 등으로 이미지나 파일등을 출력할 수 있습니다.

파일타입은 각 서버의 마임타입으로 설정해주면 되고 로컬 파일도 가능합니다.
첨부파일을 받으면 각종 상황에 맞는 함수들이 있습니다.



<%
function BinaryGetURL(URL)

'Create an Http object, use any of the four objects
Dim Http
'Set Http = CreateObject("Microsoft.XMLHTTP")
'Set Http = CreateObject("MSXML2.ServerXMLHTTP")
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
'Set Http = CreateObject("WinHttp.WinHttpRequest")
'Send request To URL
Http.Open "GET", URL, False
Http.Send
'Get response data As a string
BinaryGetURL = Http.ResponseBody

End Function

Response.ContentType="image/gif"
binaryImage=BinaryGetURL("http://www.mysql.com/common/logos/logo_mysql_sun_a.gif")
Response.BinaryWrite binaryImage
%>

2009. 6. 21. 12:58 PROGRAMMING
c++ win32 api char, string 키코드 알아내기
주로 이벤트를 통해 키코드를 받아오는 상황이 많지만 텍스트값으로부터 키코드를 알아내야 할때,
vkKeyScan함수를 이용.
%x로 받으면 16진수, %d로 받으면 10진수로 나옵니다.

void CWowrobotDlg::OnEnChangeEditRepeat(){
mEditRepeat.SetLimitText(1);
mEditRepeat.GetWindowTextW(szTemp,8);
TCHAR temp=VkKeyScan(szTemp[0]);
wsprintf(szTemp,L"%x",temp);
mStaticRepeat.SetWindowTextW(szTemp);
}




VkKeyScan 함수 도움말
http://msdn.microsoft.com/en-us/library/ms646329(VS.85).aspx

VkKeyScanEx 함수 도움말
http://msdn.microsoft.com/en-us/library/ms646332(VS.85).aspx

최근에 올라온 글

최근에 달린 댓글