'Development'에 해당되는 글 57건

  1. PHP 개발 - HTML 태그나 스크립트의 작동을 막기 htmlspecialchars
  2. PHP 개발(explode) - 문자열을 구분자로 나누기 1
  3. 안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴 일반 기기에서도 활성화하기 1
  4. 안드로이드 개발 - 비트맵(Bitmap) 비율 맞추면서 크기 줄이기(썸네일 생성)
  5. PHP 개발 - 배열(array) 한줄로 출력하기
  6. PHP 개발 - 배열(array) 사용하기
  7. 안드로이드 개발 - ImageView 다양한 표시 방법 android:scaleType
  8. 안드로이드 개발 - 파일(File) 유무 확인하기
  9. PHP 개발 - 문자열(String) 합치기
  10. 안드로이드 개발 - 비트맵을 파일로 변환하기(Bitmap to file)

PHP를 활용하여 개발을 하다 보면 DB에 저장되어 있는 글을 가져와 표시해야할 때가 있습니다. 그럴때 DB 내용에 HTML 태그나 여타 스크립트가 포함되어 레이아웃이 사용자 임의대로 변경되거나 XSS 공격에 사용될 수 있습니다.


DB에서 불러올 때 문자열을 변환해 이런 태그나 스크립트의 작동을 막아주는 함수입니다.


 PHP 개발 - HTML 태그나 스크립트의 작동을 막기 htmlspecialchars



PHP 사용 예시

echo htmlspecialchars($content);



위와 같이 하면 만약에 $content 변수에 <script>를 집어넣으면 &lt;script&gt;로 변환되어 더이상 스크립트의 역할을 하지 못하게 됩니다.




하지만 사용자가 브라우저로 보는 상에서는 <script> 문자열로 잘 보입니다. 


주로 인터넷 게시판에서 글 작성시 스크립트로 동작하지 않고 문자열로 잘 보이는 것과 같은 원리입니다.(HTML 허용시는 당연히 예외)


이 함수에 대한 더 자세한 사용방법이나 설명은 PHP 사이트에서 확인할 수 있습니다.


http://docs.php.net/manual/en/function.htmlspecialchars.php












도움이 되셨나요?

그럼 손가락을 눌러주세요:)




단순한 문자열을 구분자를 기준으로 나눠 배열을 만들 수 있습니다.


PHP 개발 - 문자열을 구분자로 나누기



코드

$value = "가,나,다,라";


$array = explode(",", $value); //"," 부분이 구분자이며 $value 부분이 구분자로 나눌 문자열입니다.




결과


$array 안엔 ,을 기준으로

[0] => 가

[1] => 나

[2] => 다

[3] => 라


가 순서대로 들어간 배열이 생성됩니다.




도움이 되셨나요?

그럼 손가락을 눌러주세요:)



안드로이드 기기 버튼의 종류는 전면에 버튼이 없는 소프트키 기기와 메뉴, 홈, 뒤로가기 키 같이 하드웨어 키로 이루어진 경우로 나누어집니다.

근데 소프트키의 대부분은 하드웨어의 메뉴 버튼이 멀티태스킹 버튼으로 대체하기 때문에 메뉴 키가 따로 없습니다.


그래서 소프트키가 있는 휴대폰은 상단에 Overflow 메뉴가 나타납니다.(점 땡땡땡)





하지만 이 메뉴는 하드웨어키를 사용하는 기기에는 보이지 않습니다.


메뉴키가 하단에 이미 있기 때문에 크게 상관은 없지만 UI 일관성에는 별로 좋지 않습니다.




안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴  일반 기기에서도 활성화하기



앱을 로드하는 맨 처음 액티비티에 몇줄의 코드에 삽입함으로써 이 문제를 해결할 수 있습니다.

일반 하드웨어키를 사용하는 기기에서도 소프트웨어 키를 사용하는 기기같이 상단에 Overflow 메뉴가 나타납니다.




  
	try {
	        ViewConfiguration config = ViewConfiguration.get(this);
	        Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
	        if(menuKeyField != null) {
	            menuKeyField.setAccessible(true);
	            menuKeyField.setBoolean(config, false);
	        }
	    } catch (Exception ex) {
	        // Ignore
	    }






도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드에서 이미지 파일을 표시할때나,다룰때 파일 크기가 너무 커면 느려진다거나, 스크롤이 버벅이는등의 현상이 일어납니다.

크기가 작은 이미지 파일을 생성함으로써, 위의 문제를 어느정도 해결할 수 있습니다.


안드로이드 개발 - 비트맵(Bitmap) 비율 맞추면서 크기 줄이기(썸네일 생성)



  
	// Bitmap to File
//bitmap에는 비트맵, strFilePath에 는 파일을 저장할 경로, strFilePath 에는 파일 이름을 할당해주면 됩니다.
		public static void createThumbnail(Bitmap bitmap, String strFilePath,
				String filename) {
			
			File file = new File(strFilePath);

			// If no folders
			if (!file.exists()) {
				file.mkdirs();
				// Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
			}
			File fileCacheItem = new File(strFilePath + filename);
			OutputStream out = null;
			



			try {
				
				int height=bitmap.getHeight();
				int width=bitmap.getWidth();
				
				
				fileCacheItem.createNewFile();
				out = new FileOutputStream(fileCacheItem);
//160 부분을 자신이 원하는 크기로 변경할 수 있습니다.
				bitmap = Bitmap.createScaledBitmap(bitmap, 160, height/(width/160), true);
				bitmap.compress(CompressFormat.JPEG, 100, out);
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					out.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}



위의 방법으로 하면 자신이 원하는 경로에 썸네일 파일을 생성할 수 있습니다.

Sdcard 경로에 저장하는 경우에는 아래 권한을 할당해 주어야 합니다.


   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />









도움이 되셨나요?

그럼 손가락을 눌러주세요:)

PHP 배열 있는 내용을 갯수에 상관없이 구분자를 사용하여 출력하는 방법입니다.


PHP 개발 - 배열(array) 한줄로 출력하기



1. 출력할 배열(Array)를 정의해줍니다.


$array = ("가나다", "라마바", "사아자");



2. implode 함수를 사용해서 출력합니다. ',' 부분은 구분자입니다. ','를 기준으로 배열을 출력합니다.


echo implode = implode(",", $array);



결과


가나다,라마바,사아자




도움이 되셨나요?

그럼 손가락을 눌러주세요.

배열(array) 요소는 개발하는데 있어서 자주 사용됩니다. 다른 언어와는 달리 PHP는 융통성이 좋기 때문에 간편하게 사용할 수 있습니다.


PHP 개발 - 배열(array) 사용하기



1. 배열 생성


$array = array("apple", "orange", "banana");


2. 배열 값 출력

$array[0]과 같은 방식으로 값을 출력할 수 있습니다.(0부터 시작)


echo $array[0].", ".$array[1].", ".$array[2];



결과 : apple, orange, banana







도움이 되셨나요?

그럼 손가락을 눌러주세요:)


안드로이드 어플리케이션 개발 시 ImageView를 많이 사용하는 경우가 많은데 android:scaleType 속성을 쓰면 이미지의 다양한 표시 효과를 나타낼 수 있습니다.(늘이기, 가운데 자르기 등)





안드로이드 개발 - ImageView 다양한 표시 방법 android:scaleType


Scaltype에는 8가지 종류가 있습니다.  


1. matrix(원본 그대로)


2. center(가운데 정렬)


3. centerCrop(비율을 유지하며 가운데를 중심으로 자른다.)


4. centerInside(비율을 유지하며 줄어듬)


5. fitStart(왼쪽 위 정렬/ 비율유지)


6. fitCenter(centerInside와 동일)


7. fitEnd(왼쪽 아래 정렬 / 비율유지)


8. fitXY(늘이기 ImageView를 비율에 상관없이 다 채웁니다.)



xml인 경우 속성값에 있는 값을  android:scaleType="값" 안에다 넣어주는 방식으로 하면 됩니다.

java 코드인 경우 imageView.setScaleType(ImageView.ScaleType.값); 으로 하면 됩니다.

자세한 것은 아래 표를 참조하세요

속성값

java

설명

matrix

setScaleType(ImageView.ScaleType.MATRIX)

원본 크기 그대로 보여줌 (왼쪽 상단 정렬)

Center

setScaleType(ImageView.ScaleType.CENTER)

원본 크기 그대로 보여줌 (가운데정렬)

centerCrop

setScaleType(ImageView.ScaleType.CENTER_CROP)

View 영역에 공백이 있으면 채워서 보여줌(비율유지)

centerInside

setScaleType(ImageView.ScaleType.CENTER_INSIDE)

View 영역을 벗어나면 맞춰서 보여줌(비율유지)

fitStart

setScaleType(ImageView.ScaleType.FIT_START)

View 영역에 맞게 보여줌 (왼쪽상단 정렬비율유지)

fitCenter

setScaleType(ImageView.ScaleType.FIT_CENTER)

View 영역에 맞게 보여줌 (가운데정렬비율유지)

fitEnd

setScaleType(ImageView.ScaleType.FIT_END)

View 영역에 맞게 보여줌 (왼쪽하단 정렬비율유지)

fitXY

setScaleType(ImageView.ScaleType.FIT_XY)

View 영역을 가득 채워서 보여줌(비율유지 안함)

(표 출처 : http://blog.naver.com/PostView.nhn?blogId=a1178626&logNo=150162250548)








도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드 개발을 하다보면 Sdcard 또는 앱 데이타 폴더에 파일이 이미 있는지 확인해야 할 때가 있습니다. 간단한 코드로 파일의 유무를 쉽게 확인할 수 있습니다.


안드로이드 개발 - 파일(File) 유무 확인하기



  
//path 부분엔 파일 경로를 지정해주세요.
File files = new File(path);
      //파일 유무를 확인합니다.
 if(files.exists()==true) {
//파일이 있을시
} else {
//파일이 없을시
}








도움이 되셨나요?

그럼 손가락을 눌러주세요:)

무언가를 개발 시에 문자열을 합쳐야 할 경우가 꽤 많습니다. 자바(Java)및 다른 언어 같은 경우는 간편하게 "문자열" + "문자열" 이렇게 하면 되는데 PHP는 int와 String을 따로 정의하지 않기에 이렇게 하면 이상한 결과가 나옵니다.



PHP 개발 - 문자열(String) 합치기



PHP에서는 주로 문자열을 합칠때 '.'을 사용합니다.


$string = "문자열"."문자열";



위의 문자열 '$String'을 echo로 출력하게 하면 아래와 같이 출력됩니다.


문자열문자열








도움이 되셨나요?

그럼 손가락을 눌러주세요:)

안드로이드에서 Bitmap을 Sdcard 같은 저장장치에 파일로 저장할 필요성이 있을 때가 있습니다.

간단한 함수로 파일로 저장이 가능합니다.


안드로이드 개발 - 비트맵을 파일로 변환하기(Bitmap to file)


1. 아래와 같은 함수를 등록해줍니다.


 
// Bitmap to File
	public  void SaveBitmapToFileCache(Bitmap bitmap, String strFilePath,
			String filename) {

		File file = new File(strFilePath);

		// If no folders
		if (!file.exists()) {
			file.mkdirs();
			// Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
		}

		File fileCacheItem = new File(strFilePath + filename);
		OutputStream out = null;

		try {
			fileCacheItem.createNewFile();
			out = new FileOutputStream(fileCacheItem);

			bitmap.compress(CompressFormat.JPEG, 100, out);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}



2. 함수를 호출할 때에는 아래와 같이 호출합니다.(bitmap에는 비트맵, strFilePath에는 파일 경로, filename에는 파일 이름으로 사용할할 문자열을 지정해주면 됩니다.


SaveFileToFileCache(bitmap, strFilePath, filename);






도움이 되셨나요?

그럼 손가락을 눌러주세요:)