'IT'에 해당되는 글 153건

  1. PHP에서 startsWith, endsWith 사용하기
  2. [리그 오브 레전드] 맥에서 OP.GG 관전/리플래이 보기 1
  3. 맥북에어 2014 13인치 개봉기 및 후기 6
  4. 구글 글래스 컨퍼런스 후기 - GDG Incheon 3
  5. PHP 개발 - 문자열 치환하기 str_replace
  6. PHP 개발 - HTML 태그나 스크립트의 작동을 막기 htmlspecialchars
  7. PHP 개발(explode) - 문자열을 구분자로 나누기 1
  8. Favorite - 안드로이드 커뮤니티(게시판, SNS)앱 만들기(오픈소스) 69
  9. 안드로이드 개발 - 소프트키에서만 나타나는 Overflow메뉴 일반 기기에서도 활성화하기 1
  10. 안드로이드 개발 - 비트맵(Bitmap) 비율 맞추면서 크기 줄이기(썸네일 생성)


startWith, endsWith는 ~로 시작하는 혹은 ~로 끝나는지 여부를 알수 있게 해주는 좋은 API입니다. 하지만 PHP에서는 이런 API를 따로 제공하고 있지 않아 불편한 점이 있습니다.

아래 함수를 사용하면 PHP에서도 Java나 C#처럼 사용할 수 있습니다.




PHP에서 startsWith, endsWith 사용하기


StartsWith

function startsWith($haystack, $needle) {
// search backwards starting from haystack length characters from the end
return $needle === "" || strrpos($haystack, $needle, -strlen($haystack)) !== false;
}


사용 예 : startsWith( 'abcdef' , 'a');

결과값 : true


EndsWith

function endsWith($haystack, $needle) {
// search forward starting from end minus needle length characters
return $needle === "" || (($temp = strlen($haystack) - strlen($needle)) >= 0 && strpos($haystack, $needle, $temp) !== false);
}


사용 예 : endsWith('abcdef', 'f');

결과값 : true


맥에서 OP.GG 관전/리플래이 파일을 받으면 왠지 윈도우에서 실행해야 할 거 같은 cmd 파일을 받습니다. 기본적으로 이 윈도우용 배치 파일은 맥에서 실행이 안 됩니다.







맥에서 OP.GG 관전/리플래이 보기




1. 당연하지만 먼저 /Applications 폴더에 League of Legends.app이 설치되어있어야 합니다.






2. 아래 파일을 다운받아 압축을 푼 후 나오는 앱을 Applications(애플리케이션) 폴더에 넣어줍니다.






1.0.519 업데이트

작동 안되는 현상 수정


롤 관전.zip




============================

구버전

롤 관전.zip




3. 앱 실행 후 OP.GG에서 다운받았던 cmd 파일을 선택합니다.




4. 롤 클라이언트가 실행됩니다. 관전을 즐기시면 됩니다.






노트북의 필요성을 느꼈고 주로 OSX 환경에서 자주 작업하기에 맥북 에어 13인치 2014형을 구매했습니다.








1. 개봉기


맥북 에어가 오기까지 2일 정도의 시간이 소요되었고 아래와 같이 받게 되었습니다.








(하얀 애플 박스가 돋보입니다.)





(맥북 에어가 보입니다.)



구성용품들입니다. 충전기 같은 경우는 돼지코 부분을 각 나라의 규격에 맞게 바꿀 수 있게 되어 있더군요.






기존의 위상만큼 확실히 맥북 에어는 얇게 느껴집니다.









부팅 화면




기본적으로 OSX 매버릭스를 탑재하고 있습니다. 지금은 요세미티를 사용 중입니다.




2. 사용 후기


맥북 에어를 약 2~3개월간 사용해보면서 많은 점을 느꼈는데, 디자인이나 성능, 사용성 등에 있어서는 전반적으로 좋았습니다.


제가 생각하는 주관적인 장점 단점입니다.

자세한 성능은 아래 링크를 참고하면 됩니다.


http://www.apple.com/kr/macbook-air/specs.html




1. 장점


(1) 배터리





배터리가 12시간입니다. (OSX 기준으로) 애플 공식 홈페이지에서도 12시간이라고 했고 실제로도 다른 노트북에 비해 꽤 긴 시간을 사용할 수 있습니다. 하루만 사용하는 경우에는 충전기가 필요 없을 정도입니다.


그리고 충전 방식도 상당히 맘에 들었습니다. 그냥 연결하는 일반 충전기들은 밟는 순간 노트북까지 떨어져 처참함...을 경험한 적이 많았는데 자석을 이용했기 때문에 밟더라도 선만 떨어져 노트북도 같이 떨어지는 참사를 막을 수 있게 되었습니다.



애플의 센스가 돋보이는 부분입니다.



(2) 디자인







개인 취향에 따라서 달리 질 수 있는 문제이기는 합니다만, OSX 아닌 외적인 요소만 보고 사는 사람이 있을 정도로 디자인은 좋기로 유명하죠.


또한, 두깨도 매우 얇아 노트북이 아닌 약간 이름 그대로 책을 휴대한다고 느껴질 정도입니다.


지금 내 주위 환경에 따라 화면 밝기와 어두워지면 키보드 백라이트가 밝아지는 것도 사용자의 사용성을 많이 배려하는 요소인 것 같습니다.



(3) 소음


지금 혹시 꺼져있나 의문이 들 정도로 소음이 없습니다. 귀를 가져다 대어 보아도 컴퓨터가 작동하는 희미한 소리도 들리지 않습니다.


고사양 게임을 한다든지 시스템에 무리를 주는 작업을 하면 소음이 커질지는 모르겠으나, 다른 컴퓨터에 비해 놀라운 부분이고 장점이라고 생각됩니다.


다만 부트 캠프등을 사용하여 윈도우로 부팅된 상태라면 배터리 사용 시간과 더불어 소음도 OSX에서 만큼의 관리는 못 하는 것 같습니다.


(4) OS X





디자인을 보고 사는 분들도 많지만, 저도 그랬던 것처럼 OSX 자체의 매력 때문에 구매하시는 분도 많은 것 같습니다.


물론 운영체제 각각의 특색이 있어 어느 것이 좋다. 우열을 가리기는 힘들지만,  OSX에 특화되어있는 앱이라든지 IOS 기반의 디바이스와의 연동이라든지 OSX 특유의 깔금함과 안정성, 속도 등 여러 가지 장점 때문에 주 운영체제로 사용하게 되는 것 같습니다.



2. 단점


(1) 충전기


아이폰에서도 그렇다는 사람이 많았는데 맥도 마찬가지였습니다. 충전기, 정확히는 충전기 케이블이 타 노트북이나 회사의 충전기를 썼을 때보다 많이 약한 것 같았습니다.


특별히 험하게 사용하거나 다룬 적이 없었는데도 불구하고 선이 손상되어 자칫하면 누전이 될 수도 있을 듯한 정도입니다.


이 점에 대해 고객센터에 문의해보니 많은 사람이 이 점에 대해 지적하지만 이런 문제를 잘 들어본 적이 없다면서 9만 원짜리 맥세이프(충전기)를 다시 구매할 것을 제안했습니다.


근본적인 해결 방법은 애플이 맥세이프(충전기) 선의 내구성을 강화하지 않는 이상 방법이 없으나, 만약 벗겨졌을 경우에는 수축 튜브를 활용해 수리하는 있는 방법 등이 있습니다.



(2) 균형


모든 제품에서 그렇지는 않겠지만, 제 맥북 에어도 어쩔 때마다 그렇고 검색해보니 일부 맥북 에어 제품은 이 문제가 발생하는 것 같습니다.


맥북 에어를 책상에 놓고 화면을 열었을 때 오른쪽 아래가 살짝 떠 타이핑을 하거나 트랙패드 조작을 하는 데에 있어서 크게 문 제있는 것은 아니나 살짝 달그락달그락 꺼리는 것이 신경이 쓰이는 건 사실입니다.



맥북 에어가 너무 얇아서 일어나는 문제로 너무 심각한 경우에는 서비스 센터 방문이나 교환이 불가피한 것 같습니다.


보통은 맥북 에어 자체의 문제가 아닌 책상 수평의 문제이니 자신이 쓰는 책상의 수평 여부를 확인해는 게 우선입니다.


지금은 기분 탓이라 생각하고 사용하고 있습니다.






총평


몇 개월간 맥북 에어라는 노트북을 써본 결과 디자인적인 면에서나, 배터리 소음 등에서 좋은 인상을 얻었습니다.


충전기선 내구성 부분이 아쉬운 부분이긴 하지만 전반적으로 가격 값을 하는 만족스러운 노트북이라 생각됩니다.




최근 몇 년간 단순히 터치만으로 다양한 정보를 받아볼 수 있고, 평소에 컴퓨터로 해야 했었던 작업을 언제 어디서나 할 수 있도록 해준 스마트폰은 우리의 생활을 크게 변화시켰습니다.


구글이 선보인 구글 글래스는 실용성을 떠나 새로운 방식의 사용 방법이라는 점에서 많은 주목을 받았었는데,


높은 가격뿐만이 아니라 국내에서는 판매하지 않기 때문에 좀처럼 보기 힘들어 동영상으로만 봤었지만, 이번에 GDG Incheon에서 구글 글래스에 대한 소개와 체험을 해 볼 수 있는 자리가 생겨 다녀오게 되었습니다.







구글 글래스 컨퍼런스 후기 - GDG Incheon



구글 글래스를 직접 사용하신 분이 나와 설명을 해주시니 구글 글래스에 대한 더욱 상세하고 생생한 후기를 들을 수 있었습니다.


일단 시연중에 발열이 심해져서 꺼지거나 느려지는 등 부자연스러운 모습을 많이 보였는데, 화면에 보여주기 위해 미러링하는것과 더불어 아직 개발자 버전이라는걸 고려하면 발전 가능성이 높아 보입니다.


1. 음성 인식




(음성 인식 장면)



휴대폰에 있던 구글 음성인식과 비슷한 성능을 보여주는 것 같습니다. 


명령을 내릴때 무슨 명령을 내릴수 있는지 왔다갔다하면서 보여주는 센스도 있습니다.


저같은 경우는 음성인식이 별탈없이 괜찮은 성능을 보여주었지만, 이 문제 같은 경우에는 사람의 목소리 특성을 많이 타는 것 같습니다. 모국어가 아닌 영어라는것도 한 이유 할 것 같습니다.




2. 사진 및 동영상





구글 글래스에 카메라가 달려있기 때문에 사진이나 동영상등 촬영이 가능합니다. 구글 글래스는 음성 인식이 기능 실행의 큰 베이스인만큼, 음성인식으로 사진이나 비디오를 찍으라는 명령을 내릴 수 있습니다.


카메라가 있기 때문에 사생활이라든지 저작권이 중요한 영화관이라든지 이런 문제가 불거지고 있지만, 구글 글래스는 카메라를 활용한 기능  즉 기존에는 하기 힘들었던 1인칭 시점 촬영이라든지, 


증강현실을 이용한 서비스라든지 다양한 활용이 가능하기 때문에 무조건 제한하기 보다는, 구글 글래스가 활성화되면 휴대폰처럼 관련 법규나 에티켓이 생길듯 싶습니다.



3. 글자 인식





위에서 말했듯 카메라를 활용한 증강현실 기능을 활용한 기능이 있습니다. 개인적으로 이게 가장 신선하기도 했던 기능인데 자신이 번역하길 원하는 문자를 쳐다보기만 하면, 자동으로 번역된 결과로 그려줍니다.



제가 특히 놀랐던 부분은 번역된 결과를 따로 글자로 보여주는 것이 아니라, 종이에 인쇄된 글자를 지우고 거기에다 번역된 글자를 입혀 원래 그랬던 것처럼 보이게 한 것입니다.


이렇게 되면 뭔가를 볼때 원래 번역된 것이 써있는 것처럼 보이게 되니 실제로 쓸 때 타지에서도 어색하지 않게 다니게 될 수 있게 되는 것입니다.


진짜로 타지에서 자연스럽게 이 기능을 활용하려면 아직 많은 발전이 필요해 보이지만,  굉장히 멋진 기능이고 실용화된다면 유용한 기능임에 틀림이 없는 기능입니다.



사실 글자인식이나 글자인식을 통한 번역은 폰에서도 가능합니다. Google 번역 앱이나, Googles 앱이 이런 비슷한 역할을 합니다.



4. UI





개인적으로 정말 구글 글래스 에 걸맞는 UX와 UI를 디자인 했다고 생각합니다. 


주로 지금 상황에서 자신이 필요한 앱을 선택하는 스마트폰과는 달리 지금 내 상황에 맞추어 나타나는 카드, 즉 시간대 별로 나한테 지금 필요한 정보를 바로바로 보여줍니다. 


가운데 부분이 '지금 내가 필요한 정보'이고 왼쪽으로 갈수록 미래에 있을 일이나 내가 필요한 정보이며, 오른쪽으로 갈수록 과거에 관련된 정보가 나옵니다.








이는 조작이 비교적 자유로운 스마트폰이 주로 사용하는 앱을 직접 선택하는 것보다, 내가 필요한 정보만을 시간대별로 선별하여 보여주어 불필요한 조작을 줄이게 한 것에 대해 구글이 안경이라는 폴랫폼을 어떤 방식으로 설계할지 잘 생각해낸 것 같습니다.



5. 착용 후기





돌아가면서 저도 몇분동안 써볼 기회가 생겼습니다.


몇분동안만 써서 그런지 안경을 쓰고있는것이 그렇게 불편하다는 생각은 들지는 않았습니다. 




다만 동영상처럼 딱 보이는게 아니라 살짝 과장해서 현미경 보듯이 초점을 맞춰야 화면이 보입니다. 아무래도 시야를 고려한 결정 같습니다만, 이 이유 때문인지 저시력자나 초점을 맞추기 힘든 분들은 구글 글래스를 사용하기엔 어려움이 많이 따를 것으로 보입니다. (어떤 경우에는 렌즈를 끼면 가능하기도 합니다.)


초점을 맞추기 위해 고개를 올렸다 내렸다 해야 하므로 상대방에겐 별로 자연스럽게 보이지는 않습니다.


사용성같은 경우는 서술했듯이 개발자 버전인데다가 계속사용해 과열이 되어서 그런지 속도 같은것이 그렇게 쾌적하지는 않았습니다.


하지만 개인적으로 손으로 터치하거나 입력하는 경우가 귀찮거나 곤란한 경우가 있을땐 구글 글래스가 훌륭한 대안이 될 것 같습니다.






5.동영상



(Seunghyun Yu  님의 동영상입니다.)



Seunghyun Yu 님이 촬영해 올려주신 동영상입니다. 일부 사진은 이 동영상에서 가져왔습니다.


 GDG Incheon 구글 글래스 컨퍼런스의 내용을 동영상으로 확인해 볼 수 있습니다.






좋은 정보였나요?

그럼 하트를 눌러주세요:)







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












도움이 되셨나요?

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




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


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



코드

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


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




결과


$array 안엔 ,을 기준으로

[0] => 가

[1] => 나

[2] => 다

[3] => 라


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




도움이 되셨나요?

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



앱을 개발할때, 누구나 자신의 앱에 사용자들이 대화하거나, 공지사항으로 앱의 새소식을 알리고, 댓글을 달면 알림이 가는등 사용자가 참여할 수 있는 커뮤니티 공간이 있었으면 좋겠다고 생각해봤을 것입니다.


하지만 만드는 데에는 그만큼의 시간과 노력을 들여야 합니다. 에를들어 서버 구축이라든지, 서버에서 처리하는 코드라든지, 클라이언트 코드를 짜야하는거라든지..


이런 과정 없이 다른 프로그래밍이나 서버구축 같은거 없이 그럴듯한 아래 사진과 같은 앱을 최소한의 과정으로 제작할 수 있는 오픈소스 커뮤니티 클라이언트 프로젝트입니다.







Favorite - 안드로이드 커뮤니티(게시판, SNS)앱 만들기(오픈소스)



1. Favorite 앱





자신이 즐겨찾기한 페이지를 간단명료하게 보여주고 소통할수 있는 종합적인 어플리케이션입니다. 


페이지(커뮤니티)를 생성해  그룹이나, 소개용 등 목적에 따라서 다양하게 이용할 수 있습니다.

- 사진이나 파일 업로드가 가능하며 최대 30MB 업로드를 지원합니다.

- 나에게 글이나, 댓글 작성시 알림을 받을 수 있습니다.



Play 스토어에서 다운로드 가능하며, 오픈소스입니다.


Play Store : http://play.google.com/store/apps/details?id=com.tarks.favorite

Github : https://github.com/tarksgit/Favorite-Android-Client




2. Favorite Example





위의 Favorite을 여러분들이 쉽게 독립적인 어플로 만들기 쉽게 만든 데모 버전이며, 이 오픈소스를 어떻게 활용해야할지에 대한 하나의 적절한 예시입니다.


목록에서 자신이 의도한 페이지(커뮤니티)로 이동하게 하는 방법이 있습니다. 마찬가지로, 이 데모도 오픈소스입니다.


https://github.com/tarksgit/Favorite-Android-Client-Example


이 데모를 사용하여 자신만의 커뮤니티 앱을 만드는 더 자세한 방법은 아래 링크에 잘 설명되어있습니다.


http://tarks.net/favoritedevelop_android/105393







도움이 되셨나요?

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






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

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


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









도움이 되셨나요?

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