아이티동스쿨 [HD]ORACLE (19c) 기초에서 활용까지 제대로 배우기 인강 후기
함께하는 공부! 同School 취업인적성 자격증 공무원 I T 인문/교양 발음/스피치 토익/텝스/오픽 일본어/JPT/JLPT 중국어/HSK 제3외국어 한국어/TOPIK
아이티동스쿨 No.1 IT 독학 강좌 인강
아이티동 소개 | 무료강의 | 수강후기 | 고객센터 | 이벤트 | 장바구니
회원가입
프로그래밍
그래픽
컴퓨터일반
자격증
내 강의실  >
수강 후기   |   Review IT동스쿨 > 수강 후기


+3,000P
지난 주
우수 후기
34954번째 리뷰
2024/11/28
knso****
(lv.15)
[HD]Illustrator CC 2021 기초 다지기
9강 오브젝트 변형하기4
강사: 김기민
진행방식
콘텐츠
강사
교재
동영상
활용예제를 통한 오브젝트 변형하기 중 스케일, 반전 툴을 이용하여 오브젝트를 변형을 주었습니다. 여려가지 모양에 대해 고민하고 변형툴로 작업을 해보니 참 재미있었습니다. 일러스트레이터의 각 기능들은 너무 유용하고 재미 있습니다.
27336번째 리뷰
2022/02/12
jjmm****@naver.com
(lv.23)
[HD]Illustrator CC 2021 기초 다지기
9강 오브젝트 변형하기4
강사: 김기민
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 오브젝트의 활용법에 대해서 배웠습니다. 기본 도형에서 자유변형도구로 축소하고 겹친 도형에서 색상변환과 그림자를 통해 입체감을 줄 수 있는 기본적인 건데 신기했고요. 그리고 패스파인더 기능을 통해 다양한 도형을 만드는 활용법에 대해서 연습할 수 있었어요.) 수업이 그냥 알고만 있던것과 한번씩 해보고 익숙해지는 것은 많이 다르다는 것을 느꼈습니다. 분명 알고 있던 기능인데도 한번도 사용하지 않다보니 기능을 아예 사용하지 않았는데 알고나니 간단하게 할 수 있다는 것을 다시 한번 알았어요. 하나 둘씩 열심히 하고 있습니다. 더 노력할께요
27335번째 리뷰
2022/02/11
bang****
(lv.9)
[HD]Illustrator CC 2021 기초 다지기
7강 오브젝트 변형하기2
강사: 김기민
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 오브젝트 변형하는 방법에 대해 기초부터 배울 수 있었습니다.) 기초 툴부터 따는 것과 변형하며 기술을 활용하는 것이 인상깊습니다. 아직 갈 길이 멀지만, 따라잡도록 노력하겠습니다.
27334번째 리뷰
2022/02/11
bang****
(lv.9)
[HD]Illustrator CC 2021 기초 다지기
6강 오브젝트 변형하기1
강사: 김기민
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 오브젝트를 변형하는 방법에 대해 기초부터 배울 수 있었습니다.) 기초부터 차근차근 알려주셔서 이해하기 쉬웠습니다. 미루지않고, 잘 따라가도록 노력하겠습니다. 감사합니다.
27333번째 리뷰
2022/02/11
nice****
(lv.14)
[HD]컴퓨터활용능력 2급 필기 - 스프레드시트 일반 (2021 개정)
14강 매크로와 프로그래밍(msgbox,inputbox,매크로 )
강사: 문혜영
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 매크로와 프로그래밍(msgbox,inputbox,매크로 )) 엑셀의 새로운 내용을 배워서 좋은 느낌이 들어요 남은 시간동안 잘 부탁드립니다
27332번째 리뷰
2022/02/11
tea3****
(lv.39)
[HD]한번에 합격하는 ITQ 한글 2020 Part.1 이론 (2022 개정)
10강 [문제 2] 차트 구성요소 파악, 차트 삽입
강사: 강다빈
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 차트 구성요소 파악, 차트삽입에 대해 배웠습니다.) 차트를 만드는 기본적인 부분에 대해서 세심하게 설명해주셨습니다. 오늘도 감사했습니다.
27331번째 리뷰
2022/02/11
tea3****
(lv.39)
[HD]한번에 합격하는 ITQ 한쇼 2016 Part.1 준비하기
8강 목차 슬라이드 실전연습
강사: 강다빈
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 목차 슬라이드 실전연습에 대해 배웠습니다.) 실전 연습을 통해 목차를 더 잘 만들게 되었습니다. 열심히 하겠습니다! 좋은 강의 감사합니다.
27330번째 리뷰
2022/02/11
tea3****
(lv.39)
[HD]한번에 합격하는 ITQ 한쇼 2016 Part.1 준비하기
7강 문자표, 도형복사, 하이퍼링크, 그림 자르기
강사: 강다빈
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 문자표, 도형복사, 하이퍼링크, 그림자르기에 대해 배웠습니다.) 어렵지 않은 내용이라 부담없이 잘 들었습니다. 완강 꼭 하겠습니다. 좋은 하루 되세요:
27329번째 리뷰
2022/02/11
jjmm****@naver.com
(lv.23)
[HD]Illustrator CC 2021 기초 다지기
8강 오브젝트 변형하기3
강사: 김기민
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : 시계모형으로 도형의 활용법을 배웠습니다.) 영상 강의가 참 좋은건 원래 알고는 있었지만 활용하지 않았던 예제를 볼 수 있다는 겁니다. 잘 따라하고 숙련되도록 해보겠습니다. 좋은 강의 감사합니다.
27327번째 리뷰
2022/02/11
blc0****@naver.com
(lv.227)
[HD]Python(파이썬) 기초부터 실무까지 제대로 배우기 Part.22 스레드
5강 스레드(이론-3)
강사: 신경진
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : ) 스레드 동기화 처리
- 동기화하는 방법 중에 Lock을 살펴보자. Lock은 특정 스레드에서 변수를 사용하기 시작했으면 다른 스레드가 사용하
지 못하도록 막는 역할을 한다. 마치 변수를 잠구는 것과 같아서 Lock이라고 부른다. 변수를 다 사용했으면 그 스레드
는 변수에 대한 Lock을 풀어줘야 한다. 잠금을 푸는 것은 Release라고 부른다. 이런 간단한 잠금으로 변수를 서로 다른
스레드가 동시에 접근하지 못하게 막으면 위의 원치 않는 상황은 해결할 수 있다..
- Lock 사용은 아래와 같이 한다.
▶ Lock.aquire() = 잠금 - 다른 스레드들은 접근 못하게 막는다.
▶ 여기 안에 있는 Code들은 무조건 한 스레드에 의해서 순차적으로 실행되게 된다.
▶ Lock.release() = 잠금 해제 - 다른 스레드들에게 접근 가능하도록 잠금을 푼다.

- 통상 스레드는 모든 자원을 공유하기 때문에 원하는 결과값을 얻기 위해서는 속도는 조금 느려도 위와 같이 Lock을 이
용하여 다른 스레드가 접근하여 데이터를 훼손하는 것보단 무엇보다 데이터의 신뢰성이 우선이기 때문에 Lock을 이용
하는 것이다.
좌측 코드의 실행하면 threading 모듈의 Lock인터스턴스를 생성하
고 Lock클래스에 있는 acquire()로 다른 스레드가 접근하지 못하게
막고 있으며 작업이 다 끝나면 release()로 다른 스레드의 접근을 허
용한다. 하여, 데이터의 신뢰성을 보장하는 것이다. 이것이 바로 파이
썬의 동기화 처리이니 기억을 해두도록 한다. 상당히 중요한 내용이
다.아울러 thread.enumerate()함수는 현재 활성화 되어 있는 즉 살
아있는 스레드들을 리스트로 반환하는 함수이다.
출력결과
모든 Thread들이 종료될 때까지 기다린다.
250,000번 카운팅 끝!
250,000번 카운팅 끝!
250,000번 카운팅 끝!
250,000번 카운팅 끝!
totalCount : 1,000,000) 3) 동시성과 병렬성










- 요즘은 대부분 멀티코어이기 때문에 우측 그림을 확장시켜 나가보면 된다. 하지만 워낙 스레드가 많아서 동시성과
병렬성을 동시에 가지는 형태가 대부분인 것이다 ) 스레드의 문제점
- Thread를 사용하면 발생할 수 있는 문제가 있다.스레드는 모든 자원을 공유한다라고 앞서 강의한 바가 있다.예를
들어 스레드는 전역변수를 전부 공유를 하는데 서로 다른 스레드가 동시에 같은 전역변수에 접근하면 원하지 않
은 결과를 초래할 수가 있import threading
totalCount = 0 # 전역변수 선언
class CounterThread(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
global totalCount
for _ in range(2500000):
totalCount += 1
print("2,500,000번 카운팅 끝!")
if __name__ == "__main__":
for _ in range(4):
cnt = CounterThread()
cnt.start()

print('모든 Thread들이 종료될 때까지 기다린다.')
mainThread = threading.currentThread()
for thread in threading.enumerate():
# Main Thread를 제외한 모든 Thread들이 카운팅을 완료하고 끝날 때까지 기다린다. if thread is not mainThread:
thread.join()
print('totalCount = ' + str(totalCount))
좌측 코드를 실행하면 4개의 Thread가 tot
alCount변수를 2,500,000번 더했으니 4 * 2,500,000인 10,000,000이 나와야 정상이
다. 하지만 결과는 다르다.왜 그럴까? 바로
totalCount 변수에 동시에 접근을 했기 때
문인 것이다.
이런 문제를 해결하고자 한다면 스레드 동
기화 처리를 해주어야 한다는 것이다.
출력결과
모든 Thread들이 종료될 때까지 기다린다.
2,500,000번 카운팅 끝!
2,500,000번 카운팅 끝!
2,500,000번 카운팅 끝!
2,500,000번 카운팅 끝!
totalCount = 5148973
import threading
totalCount = None
# 공유된 변수를 위한 클래스
class ThreadVariable():
def __init__(self):
self.lock = threading.Lock()
self.lockedValue = 0
# 한 Thread만 접근할 수 있도록 설정한다.
def plus(self, value):
self.lock.acquire()
self.lockedValue += value
self.lock.release()
class CounterThread(threading.Thread):
def __init__(self):
super().__init__()
def run(self):
global totalCount
for _ in range(250000):
totalCount.plus(1)
print("250,000번 카운팅 끝!")
if __name__ == '__main__':
totalCount = ThreadVariable()
for _ in range(4):
lockThread = CounterThread()
lockThread.start()
print('모든 Thread들이 종료될 때까지 기다린다.')
mainThread = threading.currentThread()
for thread in threading.enumerate():
if thread is not mainThread:
thread.join()
total = format(totalCount.lockedValue,",")
print("totalCount : ", total) 추운데 오늘도 좋은 강의 잘 들었습니다 .항상 정확하고 자세하게하는 강의 정말 좋습니다. 저도 강사님의 열심하는 모습을 잘 받아드려 열심히 공부하겠습니다. 수고하셨습니다. 감사합니다.^^
27326번째 리뷰
2022/02/11
blc0****@naver.com
(lv.227)
[HD]Python(파이썬) 기초부터 실무까지 제대로 배우기 Part.22 스레드
4강 스레드(실습-2)
강사: 신경진
진행방식
콘텐츠
강사
교재
동영상
(수업내용 : Fork와 join()











- 출력결과를 보면 t1, t2 스레드가 종료된 후 'main thread post job'이 출력된 것을 확인할 수 있다. 참고로 앞의
예제에서는 메인스레드는 모든 실행을 완료한 후 먼저 종료되는 경우가 많지만 이번 예제에서는 join()로 인해 서
브스레드가 join( ) 메서드가 호출되는 지점에서 기다린다는 차이가 있다.
import threading
import time
class Worker(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name # thread 이름 지정
def run(self):
print("sub thread start ", threading.currentThread().getName())
time.sleep(5)
print("sub thread end ", threading.currentThread().getName())
print("main thread start")
t1 = Worker("1") # sub thread 생성
t1.start() # sub thread의 run 메서드를 호출
t2 = Worker("2") # sub thread 생성
t2.start() # sub thread의 run 메서드를 호출
t1.join()
t2.join()
print("main thread post job")
print("main thread end")
출력결과
main thread start
sub thread start 1
sub thread start 2
sub thread end 1
sub thread end 2
main thread post job
main Fork와 join()
- 반복문을 통해 여러 서브 스레드를 생성해야 하는 경우에는 생성된 스레드 객체를 파이썬 리스트에 저장한 후 반
복문을 이용해서 각 객체에서 join( ) 메서드를 호출할 수 있다.
thread end) import threading
import time

class Worker(threading.Thread):
def __init__(self, name):
super().__init__()
self.name = name # thread 이름 지정
def run(self):
print("sub thread start ", threading.currentThread().getName())
time.sleep(5)
print("sub thread end ", threading.currentThread().getName())
print("main thread start")
threads = []
for i in range(3):
thread = Worker(i)
thread.start() # sub thread의 run 메서드를 호출
threads.append(thread)
for thread in threads:
thread.join()
print("main thread post job")
print("main thread end")
출력결과
main thread start
sub thread start 0
sub thread start 1
sub thread start 2
sub thread end 2
sub thread end 0
sub thread end 1
main thread post job
main thread end
데몬(daemon)스레드란?
- 데몬(daemon) 스레드는 메인 스레드가 종료될 때 자신의 실행 상태와 상관없이 종료되는 서브 스레드를 의미한
다. 앞서 threading 모듈을 사용해서 메인 스레드가 서브 스레드를 생성하는 경우 메인 스레드는 서브 스레드가
모두 종료될 때까지 기다리지 않고 종료하게 된다. 그런데 실제 프로그래밍을 하다 보면 경우에 따라 메인 스레
드가 종료되면 모두 서브 스레드가 동작 여부에 상관없이 종료되어야 하는 경우가 많다. 예를 들어 네이버 메일
이나, 파이썬 인터프리터와 같이 이런 것들은 메인 스레드가 종료되면 같이 종료가 되어야 할 것이다. 이때 서브
스레드 들은 데몬 스레드로 만들어져야 한다. 파이썬 threading 모듈에서 데몬 스레드의 생성은 daemon 속성을
True로 변경하면 된다.
class Worker(threading.Thread):
def __init__(self, name):
self.name = name # thread 이름 지정
def run(self):
print(“sub thread start “, threading.currentThread().getName())
time.sleep(3)
print(“sub thread end ", threading.currentThread().getName())
print("main thread start")
for i in range(5):
name = "thread {}".format(i)
t = Worker(name) # sub thread 생성
t.daemon = True # 작업스레드를 데몬으로 설정
t.start() # sub thread의 run 메서드를 호출
print("main thread end")
실행 결과는 보시다시피 메인스레드가 종료가 되니 “sub thread
end”라는 문자열이 출력이 되질 않는다.다시 말해 메인스레드
가 종료가 되니 서브(작업)스레드들도 같이 종료가 되어 출력이
되질 않은 것이다. 추운데 오늘도 좋은 강의 잘 들었습니다 .항상 정확하고 자세하게하는 강의 정말 좋습니다. 저도 강사님의 열심하는 모습을 잘 받아드려 열심히 공부하겠습니다. 수고하셨습니다. 감사합니다.^^
처음   이전  721  722  723  724  725  726  727  728  729  730  다음   마지막


프로그래밍
[특별할인] 프리패스
C / C++ / C# / Java / VB
안드로이드 / 아이폰
웹프로그래밍
R / 하둡 / 파이썬 / Scratch
데이터베이스
라즈베리파이
그래픽
[특별할인] 프리패스
포토샵 / 일러스트
프리미어 / 애펙 / 베가스
인디자인 / 오토캐드
3ds Max / 마야 / 라이노
지브러시 / 시네마4D
스케치업 / 라이트룸
3D 프린팅
게임캐릭터 그리기
기타 그래픽
컴퓨터일반
[특별할인] 프리패스
오피스
운영체제
스마트폰 / SNS
인터넷 / 컴퓨터일반
AI(인공지능) 툴
자격증
[특별할인] 프리패스
사무자동화 / 컴퓨터그래픽
ITQ / GTQ
컴퓨터활용능력
워드프로세서
MOS / E-Test
정보처리(산업)기사/기능사
정보보안기사 / 산업기사
네트워크관리사
웹디자인기능사
COS(Coding Specialist)
데이터분석 준전문가(ADsP)
데이터분석 전문가(ADP)
SQL개발자 (SQLD)
ACA국제자격증
세무/회계 자격증
기타 자격증
내강의실
수강 중 강의
종료된 강의
결제 / 배송내역
포인트 내역
내 정보
고객센터
자주 하는 질문 (FAQ)


상호: (주)스마트동스쿨 | (03909) 서울특별시 마포구 매봉산로 37 DMC산학협력연구센터 1005호 | 대표: 나준규
사업자등록번호 209-81-50372 | 통신판매업 신고번호 제 2012-서울마포-0453 호 | 개인정보관리책임자: 나준규
대표전화 070-4707-2726 | 팩스번호 0303-0101-4242 | e-mail: help@smartdongs.com | 회원약관 | 개인정보보호정책
Copyright ⓒ (주)스마트동스쿨 Co.,Ltd. All Rights Reserved.
고객센터 | 평일 09:00 ~ 18:00
(주말/공휴일 휴무)

1:1 문의하기