티스토리 툴바


나도 남자로서,
요즘 길거리를 나서면 '나도 모르게' 눈이 즐거워 하고 있다.

그렇지만, 내가 여자만 밝히는 발정난 '짐승'이 아닌 이상, '하의'가 '상의'에 가려진 패션에 시쳇말로 '무조건 꼴리진' 않는다. '꼴리는' 생각을 하지 않는 이상 자동적으로 그렇게 되진 않는다.

게다가, 요즘은 '그렇게 입지 않으면 안되는걸까?'라고 생각들 만큼 유행이어서 무덤덤해지기 시작했지만, '자연스럽게' 눈길이 가는 건 나도 어쩔 수 없다.

내 생각은 이렇지만 당사자인 '여성'들은 다르겠지?

그런 패션을 추구하는 '자신'을 '자연스럽게' 쳐다보는 '남성'들을 죄다 짐승이라고 생각할지도 모른다.
물론, 쳐다보는 '남성'이 어떤 사람인가에 따라 다르겠지만.

여성이라면 누구나 호감이 가는 남성이라면, 내심 얼마든지 쳐다봐주길 바라겠지만, 그렇지 않은 남성이라면 '멀 바라봐? 이자식아! 눈깔 안 돌려?' 라고 내심 욕을 할지도 모르지.

그 부분에선 '본의 아니게' 눈길을 주게 되는 남성들도 이해를 해주어야 한다.

길을 걷다 보면 자연스럽게 시선이 아랫 방향을 향하게 되는데, 안 볼 수는 없지 않은가?
그런 모습을 안 보기 위해 고개를 위로 들고 다니거나 할 순 없지 않은가.

또한, 때로는 보고 싶지 않은 모습일 때도 있기에 그 부분에 대한 억울함은 누구에게 호소를 할 수 있을까.


나는 내심 바라봐주길 바랄 수준의 남자가 아니기 때문에 내가 쳐다보면 '우씨~ 눈깔 안 깔아?' 하며 내심 욕할지 모르겠지만, 적어도 한가지만은 이 글을 통해서 말하고 싶다.

'하의실종'을 추구하는 '여성들'이여!
계단을 오르거나 에스컬레이터를 타거나 높은 곳을 올라갈 때엔 제발, 뒤를 좀 가려주었으면 싶다.

뒤따라 가다 '괜한' 오해는 받기 싫다.
나도 위를 보고 올라가야 하는데 도대체 고개를 들 수가 없다
.

정말 이 말을 꼭 하고 싶었다.

사실, 이 내용이 이 글을 쓰게 된 배경이다.



저작자 표시 비영리 동일 조건 변경 허락

'성공한 百手 > 뭔일인데?' 카테고리의 다른 글

'하의실종' - 아, 고개 들고 다니고 싶다.  (0) 2011/06/23

SharedPreferences

프로그래밍/안드로이드 2011/02/15 16:46 Posted by 유마
응용 프로그램의 설정 정보를 영구적으로 저장하는 장치.
XML 포맷의 텍스트 파일에 정보를 저장하므로 셋팅 파일이나 INI 파일에 가깝다.
사용자가 생성해낸 큰 문서에 비해 용량이 상대적으로 작고 다른 컴퓨터로 옮길 필요가 없다는 점이 다르다.

Preference의 데이터를 관리하는 클래스는 SharedPreferences 이다.
공유한다는 의미의 Shared가 붙은 이유는 응용 프로그램 내의 모든 액티비티가 공유하기 때문이다.
한쪽 액티비티에서 Preference의 정보를 수정하면 다른 액티비티에서도 수정된 값을 읽을 수 있다.

그러나 응용 프로그램의 고유한 정보이므로 외부에서는 읽을 수 없다.

이 객체는 컨텍스트의 다음 메서드로 생성한다.

SharedPreferences getSharedPreferences(String name, int mode)

첫 번째 인수 : Preference를 저장한 XML 파일의 이름.
mode : 이 파일의 공유 모드.
(0 - 읽기 쓰기 가능, MODE_WORLD_READABLE - 읽기 공유, MODE_WORLD_WRITEABLE - 쓰기 공유)

public SharedPreferences getPreferences(int mode)

생성한 액티비티 전용. 같은 패키지 다른 액티비티에서도 읽을 수 없다.
파일명 인수가 생략되어 있는데, 이 경우 액티비티의 이름과 같은 XML 파일이 생성된다.


Preference는 키와 값의 쌍으로 데이터를 저장. 키는 정보의 이름이며 값은 정보의 실제 값이다.
여러 타입의 정보를 저장할 수 있는데 웬만한 기본 타입에 대해서는 읽기 메서드가 모두 제공된다.
가장 자주 사용하는 타입은 정수, 문자열, 논리형이다.

int getInt(String key, int defValue)
String getString(String key, String defValue)
boolean getBoolean(String key, boolean defValue)

key 인수로 데이터의 이름을 지정하고 defValue 인수로 값이 없을 때 적용할 디폴트를 지정한다.
Preference에 키가 존재하면 기록되어 있는 값이 리턴되고 키가 없을 때는 두 번째 인수로 지정한 defValue가 리턴된다. 최초 실행 시 Preference가 생성되기 전이므로 디폴트가 리턴된다.
여기서 지정한 디폴트가 곧 프로그램의 초기값이 되므로 무난한 값을 지정해야 한다.


Preference 클래스 자체에는 값을 읽는 메서드만 제공되며 값을 기록하는 메서드는 이너 클래스인 SharedPreferences.Editor가 제공한다.
값을 변경할 때는 동기화를 해야 하는데 Editor는 모든 변경을 모아 두었다가 한꺼번에 적용하는 기능을 제공. 데이터를 저장할 때는 Preference의 edit 메서드를 호출하여 Editor 객체를 먼저 얻어야 한다.

Editor 객체에는 값을 저장하고 관리하는 다음과 같은 메서드가 제공된다.

SharedPreferences.Editor putInt(String key, int value)
SharedPreferences.Editor putBoolean(String key, boolean value)
SharedPreferences.Editor putString(String key, String value)
SharedPreferences.Editor remove(String key)
boolean commit()
SharedPreferences.Editor clear()

저장하는 타입에 맞는 각각의 메서드를 제공. put* 메서드로 값을 저장한 후 반드시 commit() 메서드를 호출해야 실제 파일에 저장된다. commit() 메서드는 변경된 모든 값을 실제 파일에 한꺼번에 기록한다.
두 개의 쓰레드가 동시에 Preference를 편집한다면 먼저 적용한 내용은 나중에 적용한 내용에 덮여서 사라진다.


저장하는 코드는 반드시 onPause에 있어야 한다.
메모리가 부족한 상황이 되면 onStop이나 onDestory는 호출되지 않을 수도 있기 때문에 갑자기 전원이 나가더라도 정보가 온전히 저장된다는 이점이 있다.
저작자 표시 비영리 동일 조건 변경 허락

'프로그래밍 > 안드로이드' 카테고리의 다른 글

SharedPreferences  (0) 2011/02/15