집 컴퓨터로 개발을 해본지가 참 오래 됐다

오랜만에 실행하려고 하니 아래와 같은 에러가! 두둔!

 

 

A Java Runtime Envitonment (JRE) or Java Development Kit (JDK) must be available in onder to run Eclipse. No Java virtual machine was found after searching the following locations : C:\Program Files\Java\jdk1.8.0_151\jre\bin

 

문자그대로 해석해보면 이클립스를 실행하기 위해서는 JRE와 JDK가 반드시 있어야 하는데 내 컴퓨터에서 찾을 수 없다는 뜻이다. 보통 ①안깔려있거나 ②경로지정을 잘못해줬을때 뜬다.

 

 

먼저 환경변수를 확인 해 본다. 환경변수가 뭔지 잘 모른다면 아래 글을 참고하자.

출처 : 삐멜 소프트웨어 엔지니어 블로그

 

 

환경변수에 문제가 없는데도 계속 실행이 안된다면 이클립스의 시스템설정을 확인해 보자. 이클립스가 설치된 경로에 가서 eclipse.ini 파일을 실행하면 된다.

 

열어보니 시스템파일에 경로가 잘못 설정되어 있었다. JRE 설치 경로를 제대로 바꿔주고 저장한뒤 다시 이클립스를 실행하면 정상 작동한다!

 

'개발툴설치하기' 카테고리의 다른 글

인텔리제이(IntelliJ) 설치하기  (1) 2019.02.25

 

 

<폰 싸게사는법 시리즈>1편 호갱 안당하는법(클릭)2편 자급제폰과 알뜰요금제(현재글)

 

 

1편에서는 호갱이 되지 않기 위한 기본적인 용어설명과 SK/KT/LG 3대 통신사 휴대폰 싸게 사는법을 다루었다. 2편에서는 자급제폰&알뜰통신사의 조합으로 좀더 저렴하게 이용하는 법에 대해 설명하겠다.

 

 

 

단말기 자급제란?

휴대폰 구입은 전문 판매점에서, 개통은 이통사 대리점에서 각각 따로 하는 제도

 

 

핸드폰이 갑자기 고장나서 공기계에 유심카드만 꽂아서 써본 경험이 있는가? 그게 바로 자급제이다. 휴대폰요금제를 패키지로 구매하는게 아니라 단말기는 사용자가 자급자족하고 요금제는 전혀 별개로 선택하도록 하는 방법이다. 약정 기간이 없어 요금제 사용이 자유롭고 알뜰통신사를 이용하면 통신비를 더욱 아낄 수 있다. 자급제 전용 폰으로 나오는 기기들도 있지만 꼭 자급제폰이 아니더라도 어떤 경로든 통신사 약정 없이 공기계를 구할 수 있다면 이용 가능한 방법이다.

 

 

아이폰11을 구매한다고 해보자. 계산의 편의상 아이폰11의 기기값이 100만원이라고 하자.(애플 공홈에서 99만원)

이동통신3사에서 구매하는 경우 아이폰11의 공시지원금은 10만원이 채 되지 않으므로 선택약정으로 구매하는것이 유리하다. (이 말이 무슨말인지 잘 모르겠다면 1편을 보고오자)

 

 

데이터 양이 정확히 똑같은 요금제가 없어서 비슷한 요금제로 골랐다.

SK의 뉴 T끼리 맞춤형(데이터 월 6GB)에 선택약정 25%를 적용해서 월 37,331원인데 헬로모바일의 보편 유심 5GB 요금제를 이용하면 월 24,950원, 심지어 지금은 프로모션 기간이라 월 13,840원에 이용 가능하다. 매달 12,318원 씩 차이가 나고 2년동안 대략 30만원정도를 아낄 수 있다.

 

 

그리고 대부분 잘 모르고 넘어가는 것이 있는데 통신사에서 할부로 휴대폰을 구매하면 할부이자 5.9%가 붙는다. 예를 들어 100만원짜리짜리 2년간 납부하는 총액은 대략 106만원이 조금 넘는다. 자급제로 공기계 구입시 카드 무이자할부 혜택등을 이용하면 할부이자를 내 않아도 된다. 

 

 

 

 

 

자급제폰으로 알뜰통신사 이용하기

공기계는 공홈이나, 쿠팡, 11번가 등에서 구입하면 되고 개통은 각 알뜰통신사 홈페이지에서 신청하면 집으로 유심카드를 보내 준다. 신청 과정은 어렵지 않으니 생략한다. 가입버튼을 누른 후 주소지와 요금제 납부방식 등등을 시키는대로 입력하면 된다.

 

 

1 공기계 구입하기

 

아이폰 12 mini 자급제폰 (클릭시 구매링크 이동)

 

 

갤럭시21 울트라 자급제폰 (클릭시 구매링크 이동)

 

 

 

갤럭시 폴드 자급제폰 (클릭시 구매링크 이동)

 

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

2 알뜰통신사에서 유심 신청하기

 

헬로모바일

http://direct.lghellovision.net/

 

 

SK텔링크

https://www.sk7mobile.com/

 

 

 

 

 

알뜰통신사를 이용하기 전 알아두어야 할 점이 있다. 알뜰통신사의 일부 요금제는 사용가능한 휴대폰 기종이 정해져 있는 경우도 있다(웬만한 기종은 됨). 신청 전 한번 확인해보자. 그리고 알뜰통신사는 가족결합 할인 등은 안된다. 온가족이 합쳐 SK를 30년 이상 사용했다 이런 경우에는 쓰던 통신사를 그대로 유지하는게 나을 때도 있다. 해지 전 현재 받고있는 혜택과 비교해보고 고르자.

 

 

 

 


LeetCode 문제 중 난이도 EasyImplement Queue using Stacks이다. 문제 링크는 포스팅의 맨 마지막에 추가하였다. 언어는 Java를 사용했다.




  문제해석


스택의 오퍼레이션을 이용하여 큐의 다음 오퍼레이션들을 구현하라.

push(x) -- 큐의 마지막에 x를 삽입

pop() -- 큐의 맨앞의 요소를 제거

peek() -- 맨앞의 요소를 가져옴

empty() -- 큐가 비었는지 여부를 리턴


스택(Stack)은 LIFO(Last-In, First-Out), 큐(Queue)는 FIFO(First-In, First-Out)의 구조를 가졌다. 스택과 큐를 잘 모른다면 아래 포스팅을 참고한다. 


스택&큐 Stack and Queue



스택으로 큐를 구현하려면, ① 넣을때부터 FIFO로 넣던지 ② 넣을때는 LIFO로 넣고 꺼낼때 FIFO로 꺼내면 된다.


① FIFO처럼 저장하는 방법은 마지막으로 넣는 요소를 스택의 가장 아래(bottom)에 저장하는 것이다. 그러면 스택에서 꺼낼때, 먼저 저장된 요소가 먼저 꺼내진다(FIFO). 코드로 나타내면 아래와 같다.


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
class MyQueue {
 
    Stack<Integer> myqueue = new Stack<Integer>();
 
    public MyQueue() {
        
    }
 
    public void push(int x) {
        Stack<Integer> temp = new Stack<Integer>();
 
        //myqueue에 있는 요소들을 temp으로 옮겨담는다
        while(!myqueue.isEmpty()){
            temp.push(myqueue.pop());
        }
        //temp의 맨 위에 x를 삽입한다
        temp.push(x);
        
        //myqueue에 다시 옮겨담는다(가장 마지막에 넣은 x가 temp의 가장 아래로 가게됨)
        while(!temp.isEmpty()){
            myqueue.push(temp.pop());
        }
    }
    
    public int pop() {
        return myqueue.pop();
    }
 
    public int peek() {
        return myqueue.peek();
    }
    
    public boolean empty() {
        return myqueue.isEmpty();
    }
}
cs


 넣을때는 LIFO로 넣고 꺼낼때 FIFO처럼 꺼내는 방법은 저장할때는 그냥 스택의 맨 위(top)에 저장한다. 꺼낼때에는 스택의 맨 마지막에 있는 요소를 불러온다. 코드로 나타내면 아래와 같다.

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
47
48
49
50
class MyQueue {
 
    Stack<Integer> myqueue = new Stack<Integer>();
    
    public MyQueue() {
        
    }
    
    public void push(int x) {
        myqueue.push(x);
        
    }
 
    public int pop() {
        Stack<Integer> temp = new Stack<Integer>();
        
        //myqueue의 요소들을 전부 temp에 옮겨담는다
        while(!myqueue.isEmpty()){
            temp.push(myqueue.pop());
        }
        
        //temp의 가장 위에있는 요소를 꺼낸다
        int top = temp.pop();
        
        //원래대로 myqueue에 옮겨담는다
        while(!temp.isEmpty()){
            myqueue.push(temp.pop());
        }
        return top;
    }
    
    public int peek() {
        Stack<Integer> temp = new Stack<Integer>();
        
        while(!myqueue.isEmpty()){
            temp.push(myqueue.pop());
        }
        
        int top = temp.peek();
        
        while(!temp.isEmpty()){
            myqueue.push(temp.pop());
        }
        return top;
    }
    
    public boolean empty() {
        return myqueue.isEmpty();
    }
}
cs


+ Recent posts