본문 바로가기

Programming

[Android] 소프트 키보드 레이아웃 문제 때때로 소프트 키보드 위에 레이아웃을 올리고 싶은 경우가 있다. 대부분의 검색결과에서는 menifest 에서 해당 activity에 adjustResize를 걸면 해결된다고 설명하고 있고 실제로 어느 정도는 해결이 된다. 문제는 실제로 그러한 방식을 적용해 보면 EditText 가 아래에 위치한 상황에서 레이아웃에 따라 이러한 형태의 모양을 취하게 되는 경우가 있다는 것이다. 단순히 위의 사진으로는 어느 부분이 문제인지 감이 잘 잡히질 않는다. 그러나 실제의 레이아웃은 이러하다. 소프트 키보드로 가려지기 전 레이아웃을 보면 EditText의 Height가 소프트 키보드에 가려져서 원하는 형태로 보여지지 않았고 또한 아래에 버튼이 존재했음을 볼 수 있다. 버튼과 EditText의 절반 이상이 가려지게 되므.. 더보기
[php] CROSS DOMAIN 대응 방법 CROSS DOMAIN ISSUE 는 JS의 정책에 따라 AJAX등을 이용하여 다른 도메인에 접속을 시도하려는 경우 보안 문제로 간주하고 차단함에 의해 발생한다. 이를 해결하기 위해선 다른 도메인에서 오는 접속에 대해 허용을 해주어야 한다. * response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); - POST, GET, OPTIONS, DELETE 에 대해 요청을 허가. * response.setHeader("Access-Control-Max-Age", "3600"); - HTTP Request 가 발생할 때 preflight request라는 요청이 발생. preflight request는 해당 요청으로 접속이.. 더보기
[swift] 스위프트 핸드폰 정규식 func isPhone(candidate: String) -> Bool { let regex = "^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$" return NSPredicate(format: "SELF MATCHES %@", regex).evaluate(with: candidate) } 더보기
[Android] uri 패스로 내부저장소 절대경로 찾기. public String getPath(final Context context, final Uri uri) { final boolean isKitKat = Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT; // DocumentProvider if (isKitKat && DocumentsContract.isDocumentUri(context, uri)) { // ExternalStorageProvider if (isExternalStorageDocument(uri)) { final String docId = DocumentsContract.getDocumentId(uri); final String[] split = docId.split(":"); final St.. 더보기
[MYSQL] MYSQL 서버에 추가될 INDEX 값 가져오기 $query = "SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = '{Database name}' AND TABLE_NAME = '{Table name}'";$result = mysql_query($query);$tableIdx = mysql_fetch_array($result);$idx = $tableIdx[AUTO_INCREMENT];?>last_insert_id() 나 mysql_insert_id() 의 경우에는 insert 를 하고난 다음에 그 쿼리에 대한 index를 가져온다.그렇기 때문에 INSERT 해야할 시점에 해당 쿼리에 대한 INDEX값을 사용 해야 하는 경우에는 부적합하다. ex ) 댓글, 게시판.위와.. 더보기
[php] base 64 url safe function base64url_encode($data) { return rtrim(strtr(base64_encode($data), '+/', '-_'), '='); } function base64url_decode($data) { return base64_decode(str_pad(strtr($data, '-_', '+/'), strlen($data) % 4, '=', STR_PAD_RIGHT)); } ?> 더보기
[Android Studio 3.0] 더 이상 Typekit 을 쓸 필요가 없다. 안드로이드 Support Library 26, Android Studio 3.0 이 드디어 출시되었다. 조금씩 업데이트를 하길래 조만간 뭔가 또 바뀌겠구나 하던 와중 아니나 다를까 역시나. 2.x -> 3.x로 바뀐 만큼 많은 변화가 이루어 졌는데 겉으로 보이는 UI의 변화는 그렇다 치더라도 내부적으로도 많은 변화가 있었다. 크게는 드디어 안드로이드 스튜디오에서 Kotlin 을 쓸 수 있게 된 것. 자바 8 을 정식 지원하게 된 것. 자체적 font 다운 및 폰트 변경 지원. 등이 있다. 그리고 저 폰트 변화에 따라서 현재 2.x 버전에서 한글 Preview를 위해 기존 안드로이트 font.xml 을 변경했었던 사람이라면 3.0 버전업 이후에 preview가 제대로 실행되지 않는다. 업데이트 전에 해당 .. 더보기
[PHP] 문자열 검색 1. 먼저 문자열을 정리하는 함수입니다.$result = trim($string) - 문자열 앞,뒤 에있는 공백문자를 지움.$result = ltrim($string) - 문자열 앞에 들어가는 공백문자를 지움$result = chop($string) - 문자열 뒤에 들어가는 공백문자를 지움 공백문자 - 줄바꿈 개행문자, 탭문자, 스페이스 등의 안보이는 문자 $result = nl2br($string) - 문자열에 포함된 줄바꿈(\r,\n) 문자를 태그로 변환 (php 버전이 4.0.6 보다 낮을경우 높을경우 ) 2. 대소문자 변경 $result = strtoupper($string) - 문자열을 대문자로 모두 바꿈$result = strtolower($string) - 문자열을 소문자로 모두 바꿈$res.. 더보기
[FragmentTabHost] Fragment + Tab Host를 이용해 탭메뉴 만들어 보기 tab menu를 만드는 방법은 여러가지가 있지만, 각자 특색이 있다.tab host를 쓰는 방법과 tablayout을 쓰는 방법이 있는데, tabhost는 각각의 탭 backgroundColor를 바꿀 수 있는 반면 스크롤이 되지 않고 [ 구현을 더 해야한다]. 반면에 tablayout을 하게되면 스크롤을 자연스럽게 구현해 주는 반면 tab 각각의 색을 변경할 수가 없다. 이 포스팅에선 Fragment + tab host를 이용해 탭메뉴를 구현해 보기로 한다. 일단 이와 같이 xml을 구현한다. public class MainActivity extends FragmentActivity { FragmentTabHost host; @Override protected void onCreate(Bundle s.. 더보기
[Android] Permission 체크 하나의 메소드로 해결해보기 안드로이드 마시멜로우 이후 구글의 퍼미션 정책이 바뀌어 중요 퍼미션을 사용해야 하는 기능마다 그 기능을 사용할 때 퍼미션 권한 획득에 대해 물어보게 되었다. 소스코드가 어려운 것은 아니냐 내용이 적지 않으므로 매 퍼미션 사용시 그 코드를 사용하면 코드의 가독성이 떨어질 뿐더러 중복성이 증가하게 된다. 그렇기 때문에 메소드 하나를 생성해 더욱 편리하게 퍼미션 관리를 하는 방법이 없을까 고민해 보았다. 물론 퍼미션 라이브러리가 존재하나 개인적으로 라이브러리를 상속해 쓰다보면 그 라이브러리와 내가 써야하는 코드의 방법이 중복되어 난관에 부딪힐 확률이 높다고 생각하고, 그에 따라 메소드를 불러오는 형식을 선호하여 이러한 방식을 사용하는 것을 보시는 분은 이해해 주셨으면 한다. 일단 퍼미션 관련 메소드의 기본 형.. 더보기

반응형