원격 저장소 클론, 푸시 테스트하기

- 지난번에 원격저장소에 푸시했었는데, 지금 다른 컴퓨터에서 작업하려고 한다.

- 원격저장소로부터 클론받고 잘 푸시 되는지 확인해보자

- 안에 파일들이 정상적으로 내려받았다.

 

- 잘 푸시되는지 보기위해 텍스트파일 하나 만들고 아무거나 입력후 커밋해보자

 -> 커밋하는 사람인지 누구인지 식별문제로 커밋되지 않는다. 아래 명령어대로 이메일과 이름을적자

- 컨피그 명령을 입력하면 커밋이 된다.

- 이제 푸시하면 깃헙 저장소에 잘 올라간걸 볼수있다.

 

 

 

섭씨 화씨 온도 변환기 구현

 

from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button

class App:
    def __init__(self, master):
        frame = Frame(master)
        frame.pack()
        # deg C : 엔트리
        Label(frame, text = "deg C").grid(row=0, column=0)
        self.c_var = DoubleVar()
        self.c_var.set(0.0);
        Entry(frame, textvariable=self.c_var).grid(row=0, column=1)
        # def F : 엔트리
        Label(frame, text="deg F").grid(row=1, column=0)
        self.f_var = DoubleVar()
        self.f_var.set(32.0)
        Label(frame, textvariable=self.f_var).grid(row=1, column=1, sticky=W)
        # Convert 버
        button = Button(frame, text="Convert", command = self.convert)
        button.grid(row=2, columnspan=2)
    
    def convert(self):
        c = self.c_var.get()
        self.f_var.set(c * 1.8 + 32)

window = Tk()
window.wm_title("temp converter")
app = App(window)
window.mainloop()

 

 

계산기 구현

from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button, StringVar, SUNKEN, NSEW
import tkinter as tk



class Calculator(Frame):
    def __init__(self):
        Frame.__init__(self)
        self.option_add("*Font","arial 16 bold")
        self.grid(row = 0, column=0)
        self.master.resizable(0, 0)
        #이 화면을 맨 위에 표시되게 함.
        self.master.wm_attributes("-topmost", 1)
        self.make_form()
    
    
    # 버튼 입력때마다 호출, 전달받은 c를 strExpr에 추가. 엔트리에 반영되면서 커서도이동
    def update_expr(self, c):
        self.strExpr.set(self.strExpr.get() + c)
        self.entry.icursor(len(self.strExpr.get()))
 
    #selfExpr의 계산 내용을 계산 후 결과를 strExpr에 대입, 커서는 맨뒤로 이동
    def calc(self):
        try:
            self.strExpr.set(eval(self.strExpr.get()))
            self.entry.icursor(len(self.strExpr.get()))
        except:
            self.strExpr.set("Error")
    
    def make_form(self):
        self.strExpr = StringVar()
        self.entry = Entry(self, relief=SUNKEN, textvariable=self.strExpr)
        self.entry.grid(row=0, column=0, columnspan=5, sticky=NSEW)
        self.entry.bind("<Return>", lambda event, s=self: s.calc())
        self.entry.focus() # 이 엔트리에 문자, 연산자 입력 가능하도록 함
        
        """
        2번째 행부터 
        계산기 숫자버튼 구현
        7 8 9
        4 5 6
        1 2 3        
        """
        for r, item in enumerate(("789", "456", "123")):
            for c, ch in enumerate(item):
                btn = Button(self, text=ch,
                             command=(lambda s=self, c=ch:s.update_expr(c)))
                btn.grid(row=r+1, column=c, padx=2, pady=2, sticky=NSEW)
        
        btn = Button(self, text="0", command=(lambda s=self, c="0":s.update_expr(c)))
        btn.grid(row=4, column=0, columnspan=2, padx=2, pady=2, sticky=NSEW)
        
        btn = Button(self, text=".", command=(lambda s=self, c=".":s.update_expr(c)))
        btn.grid(row=4, column=2, padx=2, pady=2, sticky=NSEW)
        
        
        
        """
        계산기 숫자 우측에 연산자 버튼 넣기
        """
        for r, ch in enumerate("/*-+"):
            btn = Button(self, text = ch, command=(lambda s=self, c=ch:s.update_expr(c)))
            btn.grid(row= r+1, column=3, padx = 2, pady = 2, sticky=NSEW)
        
        
        # C, = 버튼 넣기
        btn = Button(self, text="C", command=(lambda s=self, w=self.strExpr:w.set("")))
        btn.grid(row=1, column=4, rowspan=2, padx=2, pady=2, sticky=NSEW)
        btn = Button(self, text="=", command=(lambda s=self:s.calc()))
        btn.grid(row=3, column=4, rowspan=2, padx=2, pady=2, sticky=NSEW)

if __name__ == "__main__":
    Calculator().mainloop()

 

 

 

스톱워치 구현

 


from tkinter import Frame, Label, Entry, DoubleVar, W,\
                Tk, Button, StringVar, SUNKEN, NSEW, TOP, LEFT
import tkinter as tk
import time



def runTimer():
    global timer, start_time, elapsed_time, prev_elapsed_time
    if (running):
        cur_time = time.time()
        time_diff = cur_time - start_time
        elapsed_time = time_diff + prev_elapsed_time
        timeText.configure(text="{:7.3f}".format(elapsed_time))
    window.after(10, runTimer) # 10ms뒤에 runTimer 다시 호출

def start():
    global running, start_time, elapsed_time, prev_elapsed_time
    if (running !=True):
        running = True
        start_time = time.time()
        prev_elapsed_time = elapsed_time

def stop():
    global running, prev_elapsed_time, elapsed_time
    running = False
    prev_elapsed_time = elapsed_time

def reset():
    global running, timer, elapsed_time, prev_elapsed_time
    running = False
    elapsed_time = 0.0
    prev_elapsed_time = 0.0
    timeText.configure(text="{:7.3f}".format(elapsed_time))

window = Tk()
window.title("My Simple Stop watch")
running = False

timer = 0
start_time = stop_time = time.time()
prev_elapsed_time = elapsed_time = 0.0
timeText = Label(window, height = 5, text="0.000", font=("Arial 40 bold"))
timeText.pack(side=TOP)

startButton = Button(window, width=10, text="Start", bg="green", command=start)
startButton.pack(side = LEFT)
stopButton = Button(window, width=10, text="Stop", bg="red", command=stop)
stopButton.pack(side = LEFT)
resetButton = Button(window, width=10, text="Rest", bg="yellow", command=reset)
resetButton.pack(side = LEFT)

if __name__ == "__main__":
    runTimer()
    window.mainloop()

애고 요새 하나만 깊게 하지 않고 이것 저것 일 벌리는게 많다.

 

최근에 이책 저책 읽기 시작하기 전부터 전기 자격증 준비하면서 공부하긴 했었는데

 

미적분 물리책을 보기 시작하면서 로봇 공학까지는 그래도 대강 다 보기는 했지만

 

그 뒤에 본책 메카트로닉스, 파이썬 프로그래밍, 인생 유니티 교과서, 오늘 보기 시작한 kreysig 공업수학까지는

 

한번에 다 보지도 못하고 봐야할 조금씩 본 책, 앞으로 봐야할 책들만 쌓고있다. 

 

 

 

 

이럴수 밖에 없는게 개론이나 쉬운 책이면 몰라도 지금 보고 있는 전문 서적은 대충 보고 끝낼수도 없고

 

최소한 이론은 정리하거나 실습은 해야 그래도 봤다고 할수 있을거고 그래야 남는게 있으니

 

시간이 오래걸리더라도 어쩔수가 없다.

 

 

 

그렇다고 한책만 깊게 보지않고 여러가지를 늘리고 있는데

 

한 책만 오래 보면 질리는 순간도 오고, 막힐때 그런걸 이해하기 위해서 다른 책부터 먼저 보는게 더 나은 경우도 많으며

 

결국에는 한 책에 나오는 내용이 딴 책에도 나오고 어렵게 나오는 표현이 더 이해하기 쉽게 표현한 경우도 꾀 있다보니

 

자꾸 다 읽은 책이 늘지 않고 보는 책만 늘어나고 있다.

 

 

 

딴건 몰라도 공업수학 책은 상, 하권 다읽으려면 3주이상은 걸릴거같아서 걱정이다.

 

 

------

 

아무튼 어제는 인생 유니티 교과서라는 책을 잠깐 봤었는데

 

프로그래밍 공부하면 3차원 공간에서 뭔가 만들어 보고싶다는 로망이 있었다.

 

그러다가 yes 24 북클럽 무료책에 이 책이 있길래 봤는데 정말 보물같은 책이었다.

 

 

 

 

지금 내가 학교 수업도 듣고, 공학 공부도 하다보니 실제로 유니티로 뭘 만들어볼 시간이나 여유가 전혀 없지만

 

이 책이 독자들을 안내하는 방식이 너무 마음에 들었다.

 

 

 

내가 지금까지 본 프로그래밍이나 다른 책들은 하나같이 지식, 실습을 나열했다고 해야될까?

 

아예 왜 하는지 알려주지도 않거나, 알려 준다 해도 학습에 동기를 불어넣어줄만큼 와닿지가 않는 책들이 많았다.

 

 

 

그렇지만 이 책의 경우에는 소개말부터가 정말 보물같았는데 내용도 정말 친절하다.

 

이 책에서는 유니티를 사용해서 게임을 만드는건 당연하지만

 

단순히 게임 만드는 방법을 알려줄 뿐만아니라

 

유니티 어플리케이션 설계 과정을 일반적인 알고리즘 책에서 알고리즘 설계 단계나

 

다른 CS 책에서의 소프트웨어 설계 단계처럼 딱딱하지 않고

 

실제 기업 환경에서 프로토타이핑하고, 알파 버전 만들고, 베타 버전을 만드는 과정을

 

설명하면서 어플리케이션을 만들다보니 딱딱한 책들보다는 더 와닿는다.

 

또한 파트별로 넘어갈때마다 내가 어디쯤에 와있는지 다음 파트에는 어느정도 가는지를 알려주는데

 

 

 

대부분의 책은 외워! 실습해! 지도도 주지 않고 앞으로 가!라고만 한다면

 

이 책은 앞으로 갈 방향이 어디인지, 어느정도 진도나가면 내가 어디쯤에있고, 다음에는 어디까지 갈것인지를

 

명확하게 설명해주니까 더 동기 부여된다고 해야될까 앞으로의 막연함, 막막함 같은게 줄어드는 느낌이들더라.

 

 

 

 

나는 책을 사기전에 꼭 인삿말을 보는 편인데, 

 

인삿말을 보면 저자가 이 책을 왜 썻는지, 어떤걸 목표로 하는지, 그냥 돈벌려고 했는지, 성의있게 썻는지

 

대강 감이 잡히기도 하고 공부하는 내용보다는 저자의 생각 철학을 보는게 더 재밋어서 자주본다.

 

 

 

이 책은 인삿말부터가 제목에다가 '쉽게 배우는'이니 '프로젝트'라면서 진짜 중요한 노하우는 없고

 

조금만 검색하면 나올 내용들을 파는 붕어빵같은 책들과는 다르다는 느낌은 많이 받았다.

 

아아 진짜 시간만 있으면 대충 읽어볼게 아니라 실습하면서 뭐라도 만들어 볼텐데

 

언제 여유있을진 모르겠지만 되면 해봐야지

변수분리법

- 다음과 같은 상미분 방정식(변수 분리 가능 방정식)이 주어질 때, 양변에 x로 적분을 하고 정리를 하면 좌변은 y만 우변은 x만 나오며 이를 계산하여 일반해를 얻는 방법

변수 분리법을 이용한 예제

편미분과 전미분

- 편미분 : 다변수 함수에서 한 변수만을 다루고 나머지 변수들은 상수로 취급한 미분 

 -> 한 변수가 변할때의 변화율

- 전미분 : 다변수 함수에서 모든 변수를 동시에 다루는 미분

 -> 모든 변수가 변할때의 변화율

 

전미분과 완전미분방정식

- 함수 u(x,y)의 편도함수가 연속일때 이 함수의 전미분은 다음가 같고, u(x, y)가 상수인 경우 전미분은 0이된다.

- u(x,y)가 아래와 같이 주어진 경우 전미분을 구하고, 미분방정식의 형태로 만들면 완전미분방정식이 나온다.

- 이 완전 미분방정식 du = 0이므로 적분을 하여 일반해를 구하면 u(x, y) = c의 형태로 음함수해가 된다.

 

완전미분방정식이 되기 위한 조건

- 완전미분방정식은 전미분 du = M(x, y)dx + N(x, y) dy 의 형태가 되야 하며 M과 N의 편도함수가 같을때 성립한다.

 

 

 

완전미분방정시 아닌 경우와 적분 인자

- 아래의 식은 완전 미분방정식이 되지 않음.

- 1/x^2을 곱할 시 

- 적분인자 : 방금 완전미방이 아닌 식에 1/x^2을 곱하여 완전미방으로 만든 것처럼 곱한 함수 F(x,y)가 적분인자.

+ Recent posts