2017년 3월 22일 수요일

[Java]Thread 기초문법

1)쓰레드 생성방법

a)
Extends Thread  //쓰레드 클래스상속
public void run() //오버라이딩
b)
implements Runnable
public void run()

2)쓰레드 클래스함수
start()  //run start
join()   //wait for this thread for to die.
getPriority()  //쓰레드 우선순위 얻어옴
setPriority()  //쓰레드 우선순위 설정

3)동기화
한 쓰레드가 접근하는 인스턴스, 변수에 다른 쓰레드가 접근하지 못하게 하여야 한다.

방법1) 인스턴스 전체 동기화.   - 모든 인스턴스는 하나의 열쇠를 지니고 있다.
public synchronized void function(){
  cnt++;
 }

방법2)동기화 블록으로 필요부분만
public void function() {
  synchronized(this){   //this는 어떤 위치의 열쇠를 가져다 쓸것인지를 묻는다.
   cnt++;
  }
}

2017년 3월 7일 화요일

[English]Day 12

enthusiastic 열렬한
punctual 시간을 지키는

snobby 콧대 높은 척 하는
She's so snobby that she won't talk to anyone who isn't well dressed.

triumph 승리, 성공
Jerry was an individual who turned tragedy into triumph.
제리는 비극을 성공으로 바꿨던 인물이다.

dehydrate 탈수하다
Drink more water to prevent you from getting dehydrated.
탈수 되는 것을 방지하기 위해 물을 더 마셔라.

I trust it will be well worth the trip.
저는 그 곳이 여행할만한 충분한 가치가 있다고 생각해요.

You have come a long way to see me. 저를 만나러 먼 길을 오셨네요.

I am scheduled to see mr.kim at 3:45 네 3시 45분에 윌리엄씨와 만나기로 되어있어요.

I'll let him know you have arrived. 도착했다고 전해드릴께요.

How long will the flight take to USA. 미국까지 비행시간은 얼마나 됩니까?

A good example that comes to mind is 000 생각나는 좋은 예는 000입니다.

I'm particularly proud of 000 특히 000이 자랑스러워요.

Time keeping is important to me. 시간엄수는 나에게 중요하다.

As long as you say the right things, you'll be fine. 네가 옳은 말을 한다면 넌 괜찮을 거야.


2017년 3월 6일 월요일

[Java] Collection Framework


1)List <E>

-method
 add(instance)
 get(index)
 remove(index)
 ensureCapacity(500) //리스트의 크기를 정해준다
 size()

-ArrayList<E>
 자동으로 인덱스에 따라 배열의 크기를 늘려주지만, 추가/삭제 연산 시간이 많이 소요된다.

-LinkedList<E>
 추가/삭제 연산이 간단하지만 데이터 참조가 다소 불편하다.


2)Iterator<E> 를 이용한 순차적 접근

Collection<E>인터페이스에는 Iterator<E> iterator() 메소드가 정의되어있다.
여기에 정의되어 있는 메소드는
  boolean hasNext()    //참조할 다음 번 요소가 존재하면 true
  E next()                  //다음 요소를 반환
  void remove()          //현재 위치의 요소를 삭제

List<E>에 정의된 메소드를 통해 각 요소에 접근할 수 있지만 Iterator의 장점은
컬렉션 클래스의 종류에 상관없이 동일한 형태의 데이터 참조방식을 유지하는 것이다.
즉 ArrayList<E> 나 HashSet<E> 상관없이 접근이 가능하다.


3)Set <E>
-저장 순서를 유지하지 않는다
-데이터의 중복저장을 허용하지 않는다

-HashSet<E>
-LinkedHashSet<E> : 저장순서를 유지한다.

-해쉬 알고리즘에 따라 적절히 몇 몇 메소드들을 오버라이딩할 필요가 있다.
 public int hashCode()
 public boolean equals(Object oj)
EX)
https://github.com/ehdrn3020/Java/blob/master/Collection_Framwork/hashSet_example.java


-TreeSet<E>
데이터를 정렬된 상태로 저장하는 자료구조 구현. 정렬의 기준을 프로그래머 직접 구현.

-인스턴스의 비교 기준을 정하는 Compareable <T> 인터페이스
interface Comparable<T>
{
   int compareTo(T obj){
        비교할 내용; 크면 return 1, 작으면 return -1, 같으면 return 0;
    }
}

-두개의 오프젝을 받아 정렬하는 Comparator<T> 인터페이스
  interface Comparator<T>
  {
     int compare(T o1, T o2){
       비교할 내용;
     }
  }


4)Map <k, v>

-HashMap <k,v>
-TreeMap <k,v>
예제 https://github.com/ehdrn3020/Java/tree/master/Collection_Framwork


2017년 3월 2일 목요일

[Python] python과 COM


COM이란 마이크로소프트에서 만든 다른 언어들을 python으로 변화해 주는 것이라 생각하면 간단하다.
win32com이 import되어야 하며 아나콘다 배포판에서는 기본적으로 깔려있지만, pycharm은 pywin32 OR pypiwin32를 받아야 쓸 수 있다.

아래와 같은 코드는 ms word, excel 프로그램이 설치되어 있어야 작동한다.
import win32com.client

explore = win32com.client.Dispatch("InternetExplorer.Application")
explore.Visible = True //인터넷브라우저 창 생성word = win32com.client.Dispatch("Word.Application")
word.Visible = True  //Ms word 창 생성
excel = win32com.client.Dispatch("Excel.Application")
excel.Visible = True                   //excel 창 생성wb = excel.Workbooks.Add()             //생성된 창에 workbook을 하나 생성ws = wb.Worksheets("Sheet1")             //그 workbook에 엑셀sheet를 하나 추가
ws.Cells(1, 1).Value = "hello world"              //해당하는 행과 열에 값 추가
wb.SaveAs('c:\\Users\\Jason\\Desktop\\test.xlsx') //저장하고
excel.Quit()                                      //종료
wb = excel.Workbooks.Open('C:\\Users\\Jason\\Desktop\\input.xlsx')
ws = wb.ActiveSheet
print(ws.Cells(1,1).Value)
excel.Quit()               //엑셀파일 읽어오기
ws.Range("C1").Value = "good"
ws.Range("C1").Interior.ColorIndex = 10  //해당 셀에 색 입히기

2017년 2월 24일 금요일

[Python] __name__

if __name__ == "__main__":    run()
이 코드는 python name.py 와 같이 직접 실행할때 나타난다.

name.py를 import하여 사용할때는 rum()코드가 실행되지 않는다.
namespace와 관련이 있는데, name.py를 독립적으로 코드를 실행할때 사용된다.


2017년 2월 20일 월요일

[English] Day11


mindless 아무 생각이 없는
exhausting 진을 빼는
concerning [전] ~에 관한
potential 잠재적인
lack of ~의 부족

newcomer 신입
utilization 이용, 활용

plagiarism declaration : 표절 선언
sullen : 뚱한
sulk : 삐치다

keep in with somebody : ~와 친한 관계를 유지하다
containment vessel 격납용기
drain off 남자가 소변을 보다
draw in 끌어들이다 / drawn in 끌어들인

prejudice : 편견
workaholic : 일벌레

prevail 만연하다, 팽배하다
documented 문서로 기록된
arson 방화

horrendous 참혹한
standpoint 관점
aversion 혐오감
intensification 강화

plead for 호소하다
eradication 근절


frivolous 사소한
Your crime is so frivolous, I'm pretty sure the officer will not arrest you for it.

mandatory 의무적인
We should go to today's assembly, because i heard it is mandantory for all students.

Give it a go:
한번 해봐라

I'm sure she won't bite your head off
 그녀가 널 방해/저지 하지 않을거라 난 확신해.

This is a form with your important contact details
이것은 당신의 중요한 연락처 세부 사항입니다.

don't be long sullen
시무룩하지마

I'm really sorry but I'm not sure what to write
Could you explain this form to me please?
I know you're busy but I'd be grateful if you could help me : 문서 작성시 질문들

You look prettier in real life than you do in your passport photo
당신은 여권 사진보다 실물이 더 이쁘군요.
I am experiencing very bad indigestion.
소화가 잘안되요

Perhaps you are not used to the food in this country. Let me prescribe you some medication. 아마 이 나라의 음식이 익숙하지 않아서 그럴 거예요. 약 처방 해 줄께요.

I hope this will make me feel better.
이것이 효과가 좋길 바래요.

Mr.Kim will be with you in about the minutes.
김이 10분 안에 올거에요.

Could we arrange the time? = Would you like to reschedule? 약속을 변경하시겠어요?

Hello, this is donggu calling for Mr.will. I would like to notify him that I will be late for this appointment. 윌씨일로 전화드렸는데요, 약속에 늦을 것같다고 그에게 전해주세요.

Would it be possible to reschedule for the same time tommorow? I apologize for the inconvenience.
내일 같은 시간으로 약속 변경이 가능할까요? 불편드려 죄송합니다.

I need some help getting to an office on wall street.  사무실에 가는 방법을 알려주세요.

You could take the subway, but a taxi will be easier since you're new in town.
지하철 탈 수도 있지만, 넌 초행길이라서 택시로 가는 것이 더 쉬울거야.

I'm really in a hurry   제가 정말 급한데요.

Could you say that again please? 다시 한번 설명해 주시겠어요?

Do you have the exact address? 정확한 주소를 알고 있나요?

How long will it take to get there? 거기까지 가는데 얼마나 걸리나요?

Don't be so cocky because I know you're not that good at baseball.
잘난 척하지마, 너 농구 그렇게 잘하지 않잔어.


[Python]네임스페이스와 상속


1)Name Space
파이썬 IDLE에서 dir() 내장 함수를 호출해보면 리스트로 된 반환값을 확인할 수 있습니다. 여기서 두 개의 언더바로 시작하는 것은 파이썬에서 이미 사용 중인 특별한 것들입니다. 이를 제외하고 보면 조금 전에 정의했던 Stock 클래스의 이름이 포함된 것을 확인할 수 있습니다.
>>> dir()
['Stock', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
Stock 클래스의 네임스페이스를 파이썬 코드로 확인하려면 클래스의 __dict__ 속성을 확인하면 됩니다. 딕셔너리 타입에 'market':'kospi'라는 키와 값 쌍이 존재하는 것을 확인할 수 있습니다.
>>> Stock.__dict__
mappingproxy({'market': 'kospi', '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Stock' objects>, '__doc__': None, '__weakref__': <attribute '__weakref__' of 'Stock' objects>})


2)Inheritance

일단 노래를 잘 부르는 부모 클래스가 있다고 생각해 봅시다.
>>> class Parent:
        def can_sing(self):
                print("Sing a song")
 
Parent 클래스를 정의했으니 클래스의 인스턴스를 생성해 보겠습니다. 그리고 노래를 정말 할 수 있는지 메서드를 호출해 확인해 보겠습니다.
>>> father = Parent()
>>> father.can_sing()
Sing a song
이번에는 노래를 잘 부르는 Parent 클래스로부터 상속받은 운이 좋은 자식 클래스를 정의해 봅시다. 클래스의 이름은 LuckyChild라고 하겠습니다. 
>>> class LuckyChild(Parent):
        pass
Parent 클래스로부터 상속받은 LuckyChild 클래스에 대한 인스턴스를 생성한 후 노래를 시켜보겠습니다. 중요한 점은 현재 LuckyChild 클래스에는 어떤 메서드도 존재하지 않는다는 것입니다. 다음 코드를 보면 역시나 부모 클래스로부터 상속받아서 그런지 자신은 메서드를 포함하고 있지 않지만 바로 노래를 부를 수 있군요.
>>> child1 = LuckyChild()
>>> child1.can_sing()
Sing a song