'Development'에 해당되는 글 28건

  1. Javascript 문자열 치환 replaceAll 함수
  2. CSS 가로뿐만이 아니라 세로로도 가운데 정렬하기
  3. Square 3.1 패치 노트
  4. PHP 웹페이지에서 오류 로그 보기
  5. PHP에서 원하는 길이로 랜덤 문자열 만들기 2
  6. PHP json_encode 활용하기
  7. 페이스북 생일 축하 글로 뭘 써야 할지 고민이 될 때 1
  8. PHP 개발 - 문자열 치환하기 str_replace
  9. PHP 개발 - HTML 태그나 스크립트의 작동을 막기 htmlspecialchars
  10. 안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴 일반 기기에서도 활성화하기 1

JavaScript에서의 replace는 처음 만나는 문자열만 대체합니다. 해당하는 문자열이 뒤에 더 있어도 바꾸지 않습니다. 모두 바꾸기(Replace All)의 효과를 보고 싶은데 그러지 못하죠. 이를 위한 함수가 있습니다.



Javascript 문자열 치환 replaceAll 함수

아래 함수를 사용하여 해당하는 문자열을 모두 치환할 수 있습니다.

function replaceAll(str, searchStr, replaceStr) {
return str.split(searchStr).join(replaceStr);
}

replaceAll(문자열, 찾을 문자열, 덮어쓸 문자열);


사용 예)

replaceAll("hi hello hi" , "hi", "hello");


반환값)

hello hello hello


가로 방면에서 가운데를 정렬하게 하는 방법은 잘 알려졌지만, div 안에서 세로로도 가운데 정렬하는 건 약간 더 까다로운 편입니다. 텍스트가 여러 줄이 되어도 비율을 맞춰 가운데 정렬하게 할 수 있습니다.


 

CSS 가로뿐만이 아니라 세로로도 가운데 정렬하기


CSS 부분

<style>


.outer {
display: table;
width: 300px;
margin-top: 24px;
}

.tablerow {

display: table-row;

}

.content {

width:300px;
height: 300px;

vertical-align: middle;
display: table-cell;

}

</style>


HTML 부분

<div class="outer">
<div class="tablerow">
<div class="content">

가운데에 있을 내용
</div>
</div>
</div>


'페이스북 생일 축하 글로 뭘 써야 할지 고민이 될 때' 라는 글에서 소개된 Square의 3.1 버전이 릴리즈되었습니다. 이제 형식에 구애받지 않고 카드 콘텐츠를 만들 수 있게 업데이트되었습니다. 이외에도 각종 성능 개선이 이루어졌습니다.



http://square.tarks.net

Square 3.1 패치 노트


http://square.tarks.net


Square 'Square 3.1 패치노트' - http://tarks.net/square/0nKqr6lFSGp9


[새로운 기능 추가] 이제 기존에 있던 생일뿐만 아니라 자신이 원하는 카드 콘텐츠를 만들 수 있습니다.

성능 개선점


- 참신하게 생일축하하기  : 이제 생일에 일어난 일을 불러올 때 더 효율적이고 빠르게 불러옵니다.

- 진행 중 인터페이스 개선 : 페이지를 생성 중 일때 사용자에게 혼동을 줄 수 있는 인터페이스가 개선되었습니다.

- 카드 개선 : 카드를 불러올 때의 내부 알고리즘을 개선했습니다.




http://square.tarks.net




'Square' 카테고리의 다른 글

2월 28일 업데이트  (0) 2019.03.01
Square 3.4 패치 노트  (1) 2017.09.26
Square 3.3 패치 노트  (0) 2017.07.22
Square 3.2 패치 노트  (0) 2017.07.06
페이스북 생일 축하 글로 뭘 써야 할지 고민이 될 때  (1) 2017.06.23

보통 웹서버의 로그 파일 확인이나 Test를 통해 오류를 확인하지만, 간단한 함수 호출만으로도 웹페이지에서 에러 로그를 확인할 수 있습니다.


PHP 웹페이지에서 오류 로그 보기


태스트나 디버그 목적 외에는 사용하지 않는 것을 권합니다. 서버의 에러 로그를 아무나 볼 수 있게 하는 것은 보안에 별로 좋지 않습니다.

아래 함수를 처음에 호출하면 발생하는 오류나 충돌 사항을 표시하게 됩니다.


error_reporting(E_ALL);
ini_set('display_errors', 1);


PHP에서 원하는 길이로 랜덤 문자열을 반환하는 함수입니다. 문자열에 포함할 문자를 임의로 지정할 수 있습니다.



PHP에서 원하는 길이로 랜덤 문자열 만들기


 function GenerateString($length)  
{
$characters = "0123456789";
$characters .= "abcdefghijklmnopqrstuvwxyz";
$characters .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$characters .= "_";

$string_generated = "";

$nmr_loops = $length;
while ($nmr_loops--)
{
$string_generated .= $characters[mt_rand(0, strlen($characters) - 1)];
}

return $string_generated;
}


위 함수에 원하는 길이를 넣어 호출하면 $characters에 있는 문자열들로 랜덤 문자열을 반환합니다.


ex)  


echo GenerateString(15);


결과)


jsjIgpJ2Pn7w3y6

PHP에서는 배열을 JSON으로 변환할 수 있는 함수가 기본적으로 내장되어 있습니다. 이것이 옵션에 따라 JSON 출력의 결과가 달라집니다.



PHP json_encode 활용하기


JSON_UNESCAPED_UNICODE

유니코드 문자열을 대상으로 Escape를 해서 \uac00 이런 식으로 보이게 하지 않습니다.


  json_encode("가나다"); // 값 : "\uac00\ub098\ub2e4"

  json_encode("가나다",JSON_UNESCAPED_UNICODE); // 값 : "가나다"



JSON_FORCE_OBJECT

배열(Array)을 Object 형태로 변환합니다.

 json_encode(array('A','B','C')); // 값 : ["A","B","C"]

 json_encode(array('A','B','C'),JSON_FORCE_OBJECT); // 값 : {"0":"A","1":"B","2":"C"}


JSON_NUMERIC_CHECK

숫자로만 되어있는 문자열을 Int 형태로 변환시켜 줍니다.

json_encode(array('123','12A')); // 출력값 : ["123","12A"]

 json_encode(array('123','12A'),JSON_NUMERIC_CHECK); // 출력값 : [123,"12A"]


JSON_HEX_TAG

< 와 >와 같은 태그 기호들이 \u003C 와 \u003E 이런 식으로 변환되게 됩니다.

     json_encode("< >"); // 출력값 : "< >"

     json_encode("< >",JSON_HEX_TAG); // 출력값 : "\u003C\u003E"


여러 개 옵션을 동시에 사용하려면 '|' 기호를 사용하여서 할 수 있습니다.


 json_encode($array, JSON_NUMERIC_CHECK | JSON_UNESCAPED_UNICODE);


페이스북에서는 생일인 친구가 있으면 알려주는데요. 뭔가 축하의 메세지를 보내야 할 필요성은 느끼면서도 막상 뭐라 쓰면 좋을지 고민이 될 때가 있습니다. 왠지 참신하게 쓰고 싶었서 아래 사이트를 만들었습니다.


http://tarks.net/square/birthday


페이스북 생일 축하 글로 뭘 써야 할지 고민이 될 때

http://tarks.net/square/birthday

위 링크를 누르면 바로 만들어 볼 수 있습니다.


생일을 축하해줄 친구의 이름 생년월일과 마지막으로 할 말을 입력하면, 아래 사진과 같은 페이지가 생성됩니다.

페이지에서 볼 수 있는 카드들




http://tarks.net/square/birthday

'Square' 카테고리의 다른 글

2월 28일 업데이트  (0) 2019.03.01
Square 3.4 패치 노트  (1) 2017.09.26
Square 3.3 패치 노트  (0) 2017.07.22
Square 3.2 패치 노트  (0) 2017.07.06
Square 3.1 패치 노트  (0) 2017.07.03

PHP에서 자신이 원하는 문자열을 다른 문자열로 대체하고 싶을 때 사용할 수 있습니다.


PHP 개발 - 문자열 치환하기 str_replace



만약에 문자열 "가나다라마바사"에서 "사"를 "가"로 바꾸고 싶다면


$value = "가나다라마바사";


echo str_replace("사", "가", $value); 



결과값은 "가나다라마바가"가 됩니다.


더 자세한 함수 정보는 아래 링크를 참고하세요.


http://www.php.net/manual/en/function.str-replace.php






도움이 되셨나요?

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

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












도움이 되셨나요?

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




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

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


그래서 소프트키가 있는 휴대폰은 상단에 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
	    }






도움이 되셨나요?

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