걸캅스 보고 옴

2019. 5. 30. 13:28

1등으로 들어감
평일 밤이라... 3명있었나?

나름 재미있음
투캅스에서 봤던 장면 비슷한것도 몇 개 있었고
까메오로 등장한 두 배우도 나름
'형이 거기서 왜 나와' 할정도로 의외의 시점에(?)나오고
소녀시대 수영은 좀 부은듯한 모습이었다

액션씬은 조금 아쉬웠지만 이야기 진행이 꽤 짜임새가 있다.

마지막에 표창받고 끝난 것으로 보아 2편은 안 만들 모양인가보다
투캅스 1편에서 김보성이 등장하는 장면.
다른 경찰물 등에서 에필로그를 두어 다음작에 대한 여지를 남겨두는데 그런거 없이 끝난다

끝에나오는OST 노래는 배우들이 직접 부른듯

지금까지 남성중심의 경찰얘기에서 여성중심의 경찰 얘기가 나온 것인데 이정도면 굳이 걸캅스라는 여자 중심 제목보다
그냥 베테랑 같은 제목도 나쁘지 않았을 듯
어떤 작품이더라도 여자 투캅스 얘기를 들었겠지만


극한직업같은 웃음 코드가 많지 않았지만
그래도 피식하는 장면도 꽤 있고

난 재밌게 봄
728x90
대형마트 같은데 1시간은 무료로 생각했는데

어제 쉬는날이라 모바일 상품권도 바꿀 겸
부천 중동 이마트에 갔는데
지하로 내려가서 서비스센터에 키오스크라고 생겨서 직원 안통하고 바코드 인식시켜서 상품권 교환 끝냄

뭐라도 하나 먹을까하다가 그냥 나오는데 주차시간은 총 57분.
주차요금 6천원.
바로뒤에 차가 기다림..

무료일 꺼라 생각하고 돈도 카드도 준비 안했는데
사람은 없고 무인정산기에 6천원 아 똬악

문제시 전화주라고 하는데 영수증이 없으니 구차할 것 같고 부랴부랴 카드 찾아서 결제하고 나옴...

차라리 뭐라도 먹고 무료주차 1시간 받을 걸...
옆에 현대백화점 1시간 무료
그 옆에 뉴코아 1시간 무료
그 옆에 홈플러스 1시간 무료

요새는 배달도 잘되고 빠르고
주차요금.. 사소하지만 빈정상해서 앞으로 이마트 안가~
728x90

동화-마트에서 놀기

2019. 5. 26. 13:30

솜이는 오랜만에 마트에 갔어요

마트는 정말 재밌는 곳이에요

먹을 것도 많고 장난감도 많고 사람들도 많아요

그리고 가장 좋은것은 방방과 공놀이를 하는 놀이터가 있는것이에요

들어가자마다 신발을 벗고 방방으로 뛰어 갔어요

네살 솜이때에는 언니 오빠들이 옆에서 뛰면 잘 넘어졌는데

이제는 넘어지지 않고 솜이도 방방 뛰어요

그런데 솜이와 키가 비슷친 여자아이가 "너 몇살이니?"라고 물어봤어요

솜이는 "여섯 살"이라고 대답했어요

그러자 "나도 여섯살인데"하며 우리는 금새 친구가 됐어요

손을 잡고 뛰다가 나와서 아빠한테 갔어요

"아빠 얘도 여섯 살이래요" 솜이가 말했어요

친구도 창문 너머에 있는 사람에게 "엄마 얘도 여섯 살이래요"라고 크게 여러번 말했어요

이리 저리 뛰어다니다 자동차에 앉아서 부릉부릉 하며 앞에 있는 핸들도 이리저리 돌려보고

공놀이 하는데로 미끄럼 타고 내려가서 공도 막 던지며 놀았어요

어? 그런데 친구가 갑자기 없어졌어요. 나는 갑자기 속상해져서 아빠한테 갔어요

"아빠 친구가 없어져서 심심해요"라고 말했어요

아빠는 뛰어 다니느라 빨갛게 달아오른 내 볼을 보고 물한잔 하라며 물을 줬어요

벌컥벌컥 마시고 땀을 닦고 보니 어느새 친구가 옆에 있었어요

친구도 물을 먹고 왔나봐요. 우리는 또다시 뛰어놀았어요

그러다 다시 친구가 없어졌어요. 방방을 뛰며 기다리는데 어디선가 "솜이야 솜이야"하는 소리가 들렸어요

솜이는 주위를 둘러보다가 친구가 입구에서 솜이를 부르는 것을 보았어요

친구가 간다며 솜이에게 손을 흔들었어요

솜이도 방방 뛰며 손을 흔들어 인사했어요. "우리 저녁먹고 보자~"

조금뒤에 솜이도 저녁먹으러 갔어요. (그리고는 집으로 왔어요)

아빠가 "오늘 재밌었어?" 하고 물어봐서 "네~"하고 대답했어요.

"친구 이름이 뭐였어?"라고 물어봤는데 친구이름이 생각이 나지 않았어요

다음번엔 꼭 이름을 물어보고 기억해야겠어요

"친구야 재밌었어 다음에 보면 꼭 이름을 물어볼께 안녕~"

728x90

Main Activity를 다음과 같이 해서 성공했다.

import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.Signature;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.Toast;

import com.kakao.kakaonavi.Destination;
import com.kakao.kakaonavi.KakaoNaviParams;
import com.kakao.kakaonavi.KakaoNaviService;
import com.kakao.kakaonavi.Location;
import com.kakao.kakaonavi.NaviOptions;
import com.kakao.kakaonavi.options.CoordType;
import com.kakao.kakaonavi.options.RpOption;
import com.kakao.kakaonavi.options.VehicleType;

import java.security.MessageDigest;
import java.util.LinkedList;
import java.util.List;

import static com.kakao.kakaonavi.KakaoNaviService.*;

public class MainActivity extends AppCompatActivity {
private int position = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

getAppKeyHash();

onNaviButtonClicked();
}
private void getAppKeyHash() {
try {
PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String something = new String(Base64.encode(md.digest(), 0));
Log.e("Hash key", something);
}
} catch (Exception e) {
// TODO Auto-generated catch block
Log.e("name not found", e.toString());
}
}


private void onNaviButtonClicked() {
position = 4;

if (position == -1) {
Toast.makeText(getApplicationContext(), "실행하고 싶은 목적지 공유 / 길 안내를 선택하세요.", Toast.LENGTH_LONG).show();
return;
}
Location kakao = Location.newBuilder("카카오 판교 오피스", 321256, 533732).build();
KakaoNaviParams params;
switch (position) {
case 1:
params = KakaoNaviParams.newBuilder(kakao).build();
KakaoNaviService.getInstance().shareDestination(this, params);
break;
case 2:
kakao = Destination.newBuilder("카카오 판교 오피스", 127.10821222694533, 37.40205604363057).build();
params = KakaoNaviParams.newBuilder(kakao).setNaviOptions(NaviOptions.newBuilder().setCoordType(CoordType.WGS84).build()).build();
KakaoNaviService.getInstance().shareDestination(this, params);
break;
case 4:
kakao = Location.newBuilder("카카오 판교 오피스", 321256, 533732).build();
params = KakaoNaviParams.newBuilder(kakao).setNaviOptions(new NaviOptions.Builder().build()).build();
KakaoNaviService.getInstance().navigate(this, params);
break;
case 5:
kakao = Destination.newBuilder("카카오 판교 오피스", 127.10821222694533, 37.40205604363057).build();
Location stop = Location.newBuilder("서서울호수공원", 126.8322289016308, 37.528495607451205).build();
List<Location> stops = new LinkedList<Location>();
stops.add(stop);
params = KakaoNaviParams.newBuilder(kakao).setNaviOptions(NaviOptions.newBuilder().setCoordType(CoordType.WGS84).build()).setViaList(stops).build();
KakaoNaviService.getInstance().navigate(this, params);
break;
case 6:
params = KakaoNaviParams.newBuilder(kakao).setNaviOptions(NaviOptions.newBuilder().setRouteInfo(true).build()).build();
KakaoNaviService.getInstance().navigate(this, params);
break;
default:
break;
}
}
}

먼저 kakao developer 사이트에 앱을 추가한다.

설정정보를 입력하는데
항목 중 "키해시"가 있다.

위 예제를 실행시키면 Log에 키해시값이 찍힌다.

그값을 입력하면 된다.

gradle.properties 는 다음과 같다. #표시된 것은 주석이므로 없어도 상관없음.

해당 값을 직접 사용되는곳에 입력해도 됨

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

KAKAO_SDK_GROUP=com.kakao.sdk
VERSION_CODE=76
KAKAO_SDK_VERSION=1.17.0

ANDROID_BUILD_MIN_SDK_VERSION=14
ANDROID_BUILD_TARGET_SDK_VERSION=27
ANDROID_BUILD_SDK_VERSION=android-27
ANDROID_BUILD_TOOL_VERSION=28.0.3
ANDROID_SUPPORT_LIB_VERSION=27.0.1
GOOGLE_PLAY_SERVICES_VERSION=12.0.1
JUNIT_VERSION=4.12
ROBOLECTRIC_VERSION=4.2
ROBOLECTRIC_SHADOW_VERSION=3.3.2
MOCKITO_VERSION=2.25.0
HAMCREST_VERSION=1.3

org.gradle.daemon=false
org.gradle.parallel=false
org.gradle.configureondemand=true

DEFAULT_PHASE=production
NEXUS_USERNAME=username
NEXUS_PASSWORD=1234
NEXUS_RELEASE_REPOSITORY_URL=url1
NEXUS_SNAPSHOT_REPOSITORY_URL=url2

-----------------------------

build.gradle(project) 은 다음과 같다.

apply plugin: 'com.android.application'

android {
compileSdkVersion ANDROID_BUILD_SDK_VERSION
defaultConfig {
applicationId "com.nobang.custom.kakaonavitest"
minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

implementation group: 'com.kakao.sdk', name: 'kakaonavi', version: project.KAKAO_SDK_VERSION

// implementation project(':libraries:kakaonavi')

implementation "com.android.support:appcompat-v7:$ANDROID_SUPPORT_LIB_VERSION"
implementation "com.android.support:design:$ANDROID_SUPPORT_LIB_VERSION"
}

 

-------------------

build.gradle(module) 은 다음과 같다.

apply plugin: 'com.android.application'

android {
compileSdkVersion ANDROID_BUILD_SDK_VERSION
defaultConfig {
applicationId "com.nobang.custom.kakaonavitest"
minSdkVersion ANDROID_BUILD_MIN_SDK_VERSION
targetSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//implementation 'com.android.support:appcompat-v7:28.0.0'

implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

implementation group: 'com.kakao.sdk', name: 'kakaonavi', version: project.KAKAO_SDK_VERSION

// implementation project(':libraries:kakaonavi')

implementation "com.android.support:appcompat-v7:$ANDROID_SUPPORT_LIB_VERSION"
implementation "com.android.support:design:$ANDROID_SUPPORT_LIB_VERSION"
}

-------------------------

설정의 세세함은 잘 모르겠으나... KAKAO Sample앱은 여러개가 한번에 있어... 잘 모르겠더군.

Navi만 사용하는 것으로 성공함.

 

728x90
한 10년 됐나?
종진이가 주고 간 접이식 자전거
많이 녹슬고 바구니 밑에 구멍도 나고 물받이도 부러지고 기어조절도 안되는데

지금껏 정~말 잘 타고 다녔다
안잠그고 갔다왔는데도 안가져갔었고
또 한번은 자물쇠만 가져가고
바구니에 쓰레기도 버려지고 했었는데

막상 없어지니 참... 아쉽네

그걸 가져가냐
728x90

오랜만에 이전 앱의 소스를 찾아서 다시 배포하려고 보니
keystore password를 잊어버린것이다. ㅡㅡ

어디 적어놓은 곳도 기억이 안나고...

해결법이 있다.
https://code.google.com/archive/p/android-keystore-password-recover/wikis/HowTo.wiki

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

먼저 java가 깔려있는 상태에서

위 링크의 AndroidKeystoreBrute_xxx.jar 를 다운받는다.(가능하면 keystore 파일이 있는곳으로 옮긴다)

윈도우 + R 누른 뒤 command 를 입력하고 엔터를 치면 커맨드 창이 나온다
keystore 파일이 있는곳으로 이동 cd c:\keystore 같이

찾는방법이 3가지 있는데 파일명이 xxx.keystore 을 입력하면된다.
1. java -jar AndroidKeystoreBrute_v1.05.jar -m 1 -k <...keystore> -start AAAAAA

java -jar AndroidKeystoreBrute_v1.05.jar -m 1 -k "testkeystore.keystore" -start AAAAAA
입력하면 AAAAAA -> AAAAAB -> AAAAAC 와 같이 일일이 대입하는 방식이다.

추천하는 방법은 3번. wordlist.txt 파일을 만든 뒤에
가능성 있는 단어들을 입력한다.(한줄에 한단어씩)
java -jar AndroidKeystoreBrute_v1.05.jar -m 3 -k "C:\\mykeystore.keystore" -d "wordlist.txt"
그러면 wordlist.txt의 단어를 대입하여 찾는다.

찾게되면
Password is : xxx for alias mykeystore

alias가 mykeystore
여기에 대한 password가 xxx

 

 

 

 

 

 

728x90

한동안 너튜브를 볼때면 꼭 찝어 보던 병원놀이...

그래서 준비했다.

Playmobil 병원놀이

 

상자를 오픈하면....

부품들이 종류별(색깔별) 비닐봉지에 담겨 있고 연결하는 부품이 있다.

드라이버처럼 생긴걸로다가 연결 부품 (빨간색과 노란색 두종류가 있음)을 끼운 뒤
연결부위에 꾹 누르면 틱하는 소리가 나면서 딱 들어간다.

쉽다면 쉽게 볼 수도 있는데 나의 경우 생각보다 힘이 더 들어가고
처음엔 요령이 없어서 누르는 엄지 손가락이 좀 아팠다.

누를 때 한번 삐끗하자. 손톱을 베이는 상처가 났다 ㅡ.ㅡ

혼자서 했으면 15분정도면 됐을 것 같은데 (291개)
처음에 헤매기도 했고 작은거 만들어 던져주고 가지고 노는동안
큰거 조립하다가 또 작은거 만들어 던져주고 했더니 대략 1시간 정도 걸린 것 같다.

다 조립하고 스티커 붙이기는 좀 여렵다.
스티커를 먼저 붙여놓고 조립하면 깔끔하게 될 듯.
설명서에 스티커 붙이는 부위가 빠진게 있는데 아래 사진참조
- 아기 바구니에 붙이는거

- 튜브에 붙이는 스티커


다 조립하고 나서 보니 오~~ 디테일이 장난 아님.

한마디로 쩔어~.

캐릭터 모양은 내스타일이 아니지만
수술실 도구며 침대, 데스크, 화장실 등 인테리어랑 소품들이 장난감이지만 무척이나 실제것과 비슷한 느낌이 난다.

이후로 너튜브에서 본대로 나나라고 이름지은 아이가 높은데서 떨어져 (엠버한테) 실려오고

수술하다가 심작박동수가 떨어져 CPR하고 정상수치로 올라와 수술은 마치고
머리에 붕대, 다리에 캐스트하고 침대에 뉘인 후 간호사가 밀어서 엘레베이터를 거쳐 병실로 옮김.
혼자서 화장실가서 응가하고 손씻음.

정문으로 마샤가 들어와서 데스크에 나나가 어디있는지 물어본다음 엘레베이터 타고 입원실로 옴
의자에 안아있다가 음료수 먹음.

애기가 울고 우유주고 아기용 변기에서 똥싸고 세면대에 가서 씻기고 나시 뉘여서 재우고
1층으로 데려와 키 재고 몸무게 재고

나나는 회복해서 붕대랑 풀고 퇴원
다시 높은데로 올라가 떨어져 다침. 엠버가 싣고 옴 ...이것의 반복~~~ 잘 시간 될 때까지...

상품가격이 6만원, 배송비 4만원(해외배송 1주일내 도착)인건 함정.. ㅜ.ㅜ
하지만 디테일에 놀라 다른 시리즈를 찾고 있는 나.
역사놀이도 교실을 꾸며놓은건데 이것도 의자, 책상, 책가방, 칠판도 있는 등 소품이 아주 잘 구성되어 있다.

상품이야 뭐 그렇다 치는데 배송비가 넘 비싸다.

 

 

 

728x90
BLOG main image
"그게 뭐 어쨌다는 거냐?" 늘 누가 나에게 나에대한 말을할 때면 이말을 기억해라. by nobang

카테고리

nobang이야기 (1933)
Life With Gopro (7)
Life With Mini (79)
Diary (971)
너 그거 아니(do you know) (162)
난 그래 (159)
Study (290)
속지말자 (10)
Project (34)
Poem (15)
Song (0)
Photo (113)
낙서장 (45)
일정 (0)
C.A.P.i (2)
PodCast (0)
nobang (27)
고한친구들 (4)
recieve (0)
History (0)
android_app (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

Total :
Today : Yesterday :