Bundle ? 우리가 여러가지 데이터들을 한번에 처리하기위해서 클래스를 만들고, 해당 클래스의 객체에 데이터들을 담고, 직렬화를 하기위해서 Serializable이나 Parcelable까지 구현을 해주고, 그리고 추가로 이 클래스가 데이터를 받는쪽에도 존재해야 한다. 이런 과정이 매우매우매우 번거롭기 때문에 등장한 녀석이라고 생각한다. (나는...) Bundle은 하나의 클래스이며, 우선 내장된 클래스기 때문에 데이터를 받는쪽에 해당 클래스를 전달해줘야되는 번거로움이 사라진다. 그리고 기본적으로 Serializable과 Parcelable이 구현되어 있어서 언제든지 자유롭게 직렬화를 할 수 있다. 그리고 Map의 형태로 데이터를 집어넣을수 있기 때문에 원하는데이터를 원하는만큼 저장할 수 있다 추가로 기..
Intent에 의미를 부여하는 여섯 가지 정보이다. (위 정보들이 Intent에 저장되어 전달될 수 있고, 이러한 정보들에 따라서 해당 Intent에 의미가 부여된다는 의미이다.) 인텐트 정보의 주 목적은 특정 컴포넌트에 대한 실행 정보를 넣어서 해당 컴포넌트를 실행하고, 실행되는 컴포넌트에 원하는 데이터를 전달하는 것이다. 명시적 인텐트 → 실행할 액티비티 컴포넌트를 정확하게 명시하는 것. ( Package와 Class명을 정확하게 명시하는 것이다. ) * 명시적 인텐트는 보안상 자기 패키지 내부의 액티비티를 실행할 때만 사용한다. 즉, 내가 직접만든 액티비티 등의 컴포넌트로 전환할 때 사용한다는 말이다. ( 추가로 외부에서 우리앱을 실행하지 못하도록 막아줘야한다. ) → android:exported..
액티비티 ? 안드로이드의 4대 Component로 그냥 단순하게 눈에보이는 화면이라고 생각하면된다. 하나의 Application 에서 하나의 Activity만 사용하는 것이 아니다. (화면 전환 가능) 이 때 하나의 액티비티 A에서 액티비티 B로 넘어갈 때 데이터를 전달해주는 역할을 하는 것이 인텐트이다. 어떻게 A Activity가 B Package명과 B Activity명만으로 B Activity를 실행시킬 수 있는가? - 시스템 서비스인 Package Manager, Activity Manager 를 사용하기 때문에 가능하다. Package Manager : App을 설치, 삭제를 담당한다. 또한 설치된 모든 Package 정보를 수집한다. (AndroidManifest.xml 파일의 내용을 기반으..
C#으로 만들어진 프로그램 중에서 CryptoStream을 통해 암호화된 문자열을 복호화해야되는 경우가 간혹 있다. 그럴때 아래코드를 통해 빠르게 해결해보도록 하자. ( 자세한 설명은 하지 않겠다. ) 여기서 중요한점은 Mode와 Padding은 문제마다 다르니 꼭 확인하고 수정해야한다!!! 추가로 Key도 문제마다 다르니 꼭 확인하고 수정해야한다. 그러나 무조건 8글자인건 동일!! byte[] 와 String에대한 처리에도 익숙해지자. String → byte[] ASCIIEncoding.ASCII.GetBytes("ABCD"); Encoding.UTF8.GetBytes("ABCD"); byte[] → String Encoding.UTF8.GetString(byte[]); 코드 using System;..
자주는 아니지만 가끔 인젝션 포인트가 order by절인 경우가 있다. 이런식으로 asc, desc 만 정해주는 인젝션포인트가 될 수도 있고, 아니면 정렬 기준까지 정해주는 인젝션 포인트 일수도 있다. 위 예시는 해당 포인트에 mysql_real_escape_string 함수가 적용되어 기본적으로 이스케이프 필터링이 적용되어 있는 상황이다. 이 때, 정렬 했을 때 동일한 데이터가 있다면 우리가 원하는 동작을 할 수 있다. reg_date로 정렬을 하는데 reg_date가 똑같은 데이터가 있으면 다음 정렬기준을 적용한다. 반드시!!!! 똑같은 데이터가 있어야한다!!! 우리는 바로 이 다음 정렬기준을 활용하여 원하는 쿼리문을 실행할 것이다. 일반적인 select문을 실행해 결과를 보는 형태는 안되고, 이런 ..