지식메모

A1에 대한

B1에 민국


이라고 있을 때


이 두셀을 합치고 싶으면


셀 수식을 사용한다.



=TRIM(A1&""&B1)

결과 = 대한민국


한칸 띄울려면

=TRIM(A1&" "&B1)

결과 = 대한 민국



중간에 문자 포함하려면




=TRIM(A1&"-"&B1)

결과 = 대한-민국



또는 TRIM 없이 그냥 

=셀번호&셀번호 

해도 붙여진다.




중간에 넣고 싶은 문자가 있으면 따옴표로 구분

=셀번호&" - "&셀번호






두 단어를 줄바꿈으로 합치고 싶을 경우


먼저 셀 서식에서 줄바꿈을 지정해준다.



그런 다음 수식으로

=셀번호&CHAR(10)&셀번호


CHAR(10)을 넣어주면 아래와 같이 합쳐진다.








참고링크


http://blog.naver.com/battledocho/220035925900




1.18.2 패치 후에 배틀넷 들어가면 스타가 꺼져버리는 문제가 발생함





이 문제를 해결하기 위한 새로운 설치파일이 올라와있음

아래 링크로 이동하여 파일을 받아 설치하면 게임이 가능함


https://us.battle.net/forums/en/starcraft/topic/20754447051


위 링크에서 파일 받아서 설치하면 가능함

1.18.3 버전인데 1.18.2 유저와 게임은 같이 가능함


파일 링크


https://battle.net/download/getInstallerForGame?os=WIN&version=PTR&gameProgram=STARCRAFT




게임을 시작할 때 크래시가 발생하거나 Battle.net에 연결하거나 

게임을 만들 때 충돌이 발생하는 경우 Bonjour 서비스의 중단과 관련된 이러한 복잡한 문제를 해결할 수있는 새로운 빌드가 있습니다.


https://battle.net/download/getInstallerForGame?os=WIN&version=PTR&gameProgram=STARCRAFT


어떻게 작동하는지 알려주세요.












 관련 공지 링크


http://www.tworld.co.kr/normal.do?serviceId=S_ETC_0022&viewId=V_CMN_0005&serNum=20078


< cake 서비스 종료 안내 >

 

▶ 종료 서비스 : cake 서비스
▶ 서비스 종료 일자 : 2017년 03월 31일 (금)

 

▶가족나눔데이터 이용 방법 : 
① 가족나눔데이터는 cake 서비스와는 별도로 이용이 가능하므로, 데이터 나눠쓰기는 모바일/온라인 T world 에서 이용하시면 됩니다. 
② 가족나눔데이터 이용 방법
- 온라인 T world : my T > 조회 > 기본정보 > 사용중인 상품서비스 > (탭)결합상품 > 가족나눔 데이터
- 모바일 T world : my T > my이동전화 > 요금할인정보 > 요금할인혜택 > TB끼리 온가족 할인내역 확인하기 > 가족할인혜택 內 가족나눔데이터 클릭

 

▶ 앨범 사진/동영상 백업 안내 : 
① cake 서비스 종료 시, 앨범에 저장된 사진/동영상이 모두 삭제되므로 종료 전 사진/동영상을 백업하시기 바랍니다.
- 앨범 홈 > 오른쪽 상단 메뉴 선택 > 백업하기 선택 
※단, 일괄 백업 기능은 최신 버전에서만 가능하므로, 업데이트 필수

 

끝까지 최선을 다하여 서비스를 제공하겠습니다. 
그동안 cake 서비스를 이용해주셔서 감사합니다. 
 




모바일 티월드에서 위 경로로 진입한다음 화살표를 눌러 오른쪽으로 한칸 이동하면 메뉴가 나타난다.


1. my T 진입





2. 요금할인 정보 확인 탭






3. TB끼리 온가족 할인 내역 확인하기 탭







4. 상단 메뉴에 오른쪽 화살표 탭






5. 가족나눔 데이터 발견..






버튼 속성에


android:background="#00ff0000"  

를 추가해준다.




<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#00ff0000" //투명
android:id="@+id/button" />




이런 Json배열 하나에 여러개의 Json이 있다고 가정했을 때


Json 값마다 있는 idx,link,description 키값을 사용해 데이터를 저장해보았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
String eventArray = null//Json Array를 String으로 저장하기 위한 변수 선언
try {
    eventArray = loadHtml(); //loadHtml()는 Json Array를 파싱해서 String으로 가져오는 함수라 가정
catch (InterruptedException e) {
    e.printStackTrace();
}
System.out.println("결과물 : " + eventArray);
try {
    JSONArray array = new JSONArray(eventArray); //JSONArray형식으로 파싱하기 위해 새로 선언해주며 eventArray를 집어 넣어준다.
    list_cnt = array.length(); //Json 배열 내 JSON 데이터 개수를 가져옴
 
    //key의 value를 가져와 저장하기 위한 배열을 생성한다
    getDescription = new String[list_cnt]; //decription 저장용
    getLink = new String[list_cnt]; //link 저장용
    getImageUrl = new String[list_cnt]; //imageUrl 저장용
 
    for (int i = 0; i < list_cnt; i++) { //JSONArray 내 json 개수만큼 for문 동작
 
        JSONObject jsonObject = array.getJSONObject(i); //i번째 Json데이터를 가져옴
        getDescription[i] = jsonObject.getString("description");  //descripton 값을 배열에 저장
        getLink[i] = jsonObject.getString("link");  //link 값을 배열에 저장
        getImageUrl[i] = jsonObject.getString("imageUrl");  //imageurl 값을 배열에 저장
        Log.i("JSON Object", jsonObject + "");
        Log.i("JsonParsing", getDescription[i] + "," + getLink[i] + "," + getImageUrl[i]);
 
    }
cs


Log로 찍어보면

JsonObject의 로그

I/JSON Object: {"idx":15858,"imageUrl":"http:\/\/img.cgv.co.kr\/Event\/Event\/2017\/0330\/some_240x200_01.jpg","link":".\/detail-view.aspx?idx=15858&menu=2","description":"<어느날>1+1 예매 이벤트"}


파싱해낸 데이터 description, link, imageUrl 순으로 파싱이 된 걸 볼 수 있다.

I/JsonParsing: <어느날>1+1 예매 이벤트,./detail-view.aspx?idx=15858&menu=2,http://img.cgv.co.kr/Event/Event/2017/0330/some_240x200_01.jpg


배열에 잘 들어갔는지 description을 예로 확인을 해보면

for(int i=0;i<description.length;i++){
System.out.println("배열값 : "+description[i]);
}


I/System.out: 배열값 : <시간위의 집>스타★라이브톡

I/System.out: 배열값 : <보통사람>1+1 예매권 2차 이벤트

I/System.out: 배열값 : <로즈> 기대평 이벤트

I/System.out: 배열값 : <공각기동대:고스트 인 더 쉘>예매 경품 이벤트


description 값만 따로 배열에 잘 들어가있음을 확인할 수 있다.


이제 파싱해낸 값으로 다양한 곳에 쓸 수 있다.



  1. 2018.01.22 23:10

    비밀댓글입니다

subString 함수사용

subString(시작위치,끝위치);

예를 들어 애국가에서 

하느님이 ~ 우리나라만세 사이에 텍스트를 추출하고 싶다면

String song = "하느님이 보우하사 우리나라만세";

int start = song.indexOf("하느님이"); //하느님이 위치 추출

int end = song.indexOf("우리나라만세"); //우리나라만세 추출

String parseText = song.subString(start,end);

이런 방법도 있다






Naver Open API가 방식이 바뀌어서 이전 글에서 했던 방식은 동작이 되지않는다.

하지만 사전 준비는 동일하니 아래 글을 참고하면 된다.


REST-Assured 를 사용하여 maven 프로젝트로 간단한 API 테스트

http://yonoo88.tistory.com/886


우선 네이버오픈API 페이지에 들어간다.

https://developers.naver.com/main/

들어가서 상단 Application > 애플리케이션 등록을 들어간다.


애플리케이션 이름적고 사용할 API 추가하고 환경은 저렇게 해주어도 된다.



등록하기를 누르면 아래와 같은 화면이 나오는데 

Client ID 와 Client Secret 저 2개가 필요하다.

Client Secret는 우측 보기를 누르면 표시된다.

이 2개를 복사해서 코드에 넣어주어야 한다.

저 2개 값을 header 값으로 추가해주어야 한다.

String 값으로 Client ID,와 Client Secret 에 개인 값을 넣어준다.

그럼 api가 정상적으로 동작한다.



예제코드 뉴스 검색 API 사용

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package NaverAPITest.NAPITest;
 
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
 
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
 
import org.junit.Before;
import org.junit.Test;
 
public class test {
 
    @Before
    public void apiTest() {
         baseURI = "http://openapi.naver.com";
//        baseURI = "http://maps.googleapis.com";
        port = 80;
    }
 
    @Test
    public void test() {
        try {
            String text = URLEncoder.encode("최순실""UTF-8");
            given().
              header("X-Naver-Client-Id""Client ID").
              header("X-Naver-Client-Secret","Client Secret").
             params( //URL 주소의 파라미터 값을 넣어줌
             "query",text     
             ).when().
            
             /*baseURL 을 제외한 뒷부분 주소를 get하고
             *body에서 해당 title 내용을 가져올 위치 지정 후
             *확인할 값을 equalTo에 넣어 확인*/
             get("/v1/search/news.xml").then().body("rss.channel.title", equalTo("Naver Open API - news ::'최순실'"));
//             get("/v1/search/news.xml").then().toString();
            
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
 
}
 
cs





또 이상한 에러가 발생.. 이클립스가 이상한건가..

에러 내용은 이러하다

java.lang.SecurityException: class "org.hamcrest.Matchers"'s signer information does not match signer information of other classes in the same package

at java.lang.ClassLoader.checkCerts(ClassLoader.java:895)

at java.lang.ClassLoader.preDefineClass(ClassLoader.java:665)

at java.lang.ClassLoader.defineClass(ClassLoader.java:758)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

at java.net.URLClassLoader.defineClass(URLClassLoader.java:455)

at java.net.URLClassLoader.access$100(URLClassLoader.java:73)

at java.net.URLClassLoader$1.run(URLClassLoader.java:367)

at java.net.URLClassLoader$1.run(URLClassLoader.java:361)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(URLClassLoader.java:360)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

at NaverAPITest.NAPITest.test.test(test.java:35)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:483)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)

at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)

at org.junit.runners.ParentRunner.run(ParentRunner.java:363)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)



찾아보니 라이브러리 중복으로 인해 발생된다고 한다.

Junit의 라이브러리가 문제라는데..

org.hamcrest.Matchers

아무튼 JUnit4 저걸 통째로 remove하여 제거하였다.


그리고 다시 실행했더니 웬 에러???

pom.xml을 가봤더니 Junit 3.8.1 로 되어있었다. 


그래서 저걸 지워버리고

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.12</version>

</dependency>

이걸 추가해주었더니 에러가 사라졌다!

이제 실행하니 잘되었따







원인이 뭔지 모르겠다

사내망이라 보안관련 문제인가?

이거저거 찾아보다가 ssh 관련해서 rsa,dsa 파일 만드는 방법이 있길래 적어본다.

github 로그인하면 ssh 키 등록하라고 어쩌구 뜨길래 관련해서 뒤져봤었다.


ssh 어쩌구 뜨는데 저 파일이 컴퓨터에 없었다.

그래서 이클립스에 들어가서 보는 법을 찾아서 따라해보았다.

Windows > preferences > General > NetWork Connection > SSH2 에 가본다.

그럼 아래와 같은 화면이 뜬다.



근데 내 컴퓨터에는 .ssh 폴더가 존재하지 않는다.

일단 오른쪽 하단 Apply를 눌러본다.

그럼 만들겠냐고 창이 뜬다. Yes



그럼 폴더가 만들어진다.





이제 id_dsa. id_rsa 파일이 없으므로 키 생성을 해야한다.

Key Management 탭을 누른다.




Generate DSA Key를 누르면 키가 생성된다. 



우측 하단 Save Private Key를 눌러 파일을 .ssh 폴더에 저장한다.



방금 만든 .ssh 경로에 저장한다.




RSA 키도 마찬가지로 생성한다.


이제 다 마치고 Apply 를 누른 후 OK로 Preferences를 빠져나온다.





+ Recent posts

티스토리 툴바