I love Bear
REAL WORLD
Try, you lose nothing
profile
이름: 구 일 모
소속: codestates
하는 일: 개발, 협업, 글쓰기
장점: 이것 저것 많이 한다
단점: 이것 저것 많이 한다
REAL LIFE
대학교 - 성적 망함
대학원 - 실험 망함
전자, 하드웨어, 프로그래밍 너무 어려워서 절대 근처에도 가지 않기로 다짐
성경공부 5년 동안 매 주 금요일 3시간 씩
성경 공부 하면서 논리력을 배움
교회에서 리더를 맡으면서 말하기를 배움
자칫하면 신학교 갈 뻔 함
결과론적 예정론에 빠짐
개혁주의 신학에 빠짐
은사주의, 한국 샤머님즘, 기복 신앙, 십일조, 건축헌금 비판 시작
도스토예프스키에 빠짐
커스텀 지우드 통기타
점심 2달 굶어가면서 돈 모아서 구매
사실 옛날에 교회 다니기 시작한 이유는 공짜로 기타 가르쳐 준다고 해서.. 음악 감각 전무한데 좋아서 계속 배움
혹시 기타로 유투브 스타 할 수 있지 않을까 했는데 역시 재능이 없는 것으로 드러남
좋아하는 것 !== 잘 하는 것
군 복무로 3년동안
납땜
납땜 엄청 잘함 !== 좋아하는 것
임베디드 하드웨어 소프트웨어에 흥미 가짐
드론 놀이터 추락 이후 좋아는 하는데 잘 하는 것 같지 않다고 판단
러시아 친구 바딤 드론 나랑 하루 만들고 프랑스 용병 군대로 가 버림
군 복무 끝나고 운 좋게 항공연구원에 들어갔는데
일 정말 끝내주게 성실하게 했는데 일 못한다고 사수한테 매일 혼남, 실제로 잘 못 했음
되게 열심히 하는데 성과 못 내는 인재가 최악의 인재라는 것을 깨닫게 됨
EBS에서 창업 관련 다큐 나왔는데 뭔가 창업 하면 있어보였음
그래서 나도 창업 한다고 하고 퇴사 함
기고만장 하다가 5개월간
백수 생활
그러면서 여러 집회에 참여
좋아하지도 않았고 잘 하지도 못함
그렇다고 집회 참여자가 다 노는 것은 아님
오해 노노
임베디드 배운다고 국비 지원 교육 받음
근데 임베디드 코딩 잘 못함
당시엔 코딩을 잘 못 해서 프로젝트 팀 안에서 욕 먹음
개발을 해야하나 싶음
미래는 자동차다
자동차
소프트웨어
당연히 잘 될 줄 알고 기고만장
회사 리서치 50개
지원 30개 / 1차 면접 탈락 10개
2차 면접 탈락 10개 / 최종 합격 5개
제일 가고 싶은 곳 억지로 합격
임베디드 소프트웨어 컨설팅 & 세일즈
여행하는거 제일 싫어함
제일 싫어하는 걸 해 봐야 할 것 같아서
하기 싫은 것들을 하기 시작
집에서 세계 여행 할 수 있음
집에 한국 놀러오는 외국인
모조리 초대하기 시작
1년 동안 외국인 매 주 초대해서 집에서 재우고 밥 먹임
창업 붐, 창업하라고 함
외국인 초대해서 밥 먹이는 서비스
돈 안된다고 하지 말라고 했는데 원래 진짜 사업은
돈 안 되도 해야 한다고 우기고 계속 함
회사 형 꼬셔서 거기서도 초대
15,000원씩 참가비 받았는데 어떤 놈은
돈 안내고 튐
이태원 월세 10만원 사무실 구함
그 전에는 월세 5만원 망한 미용실 사용
문제는 사무실에 화장실이 없음
팀원은 오늘의 유머에서 모집
개발자 2명, 디자이너 2명, 영업 1명 모집
월급 없이 밥 술 많이 사 줌
9개월 간 1주에 1번 모임 유치
9개월 간 영업 이익 언제나 마이너스
BEP가 뭐죠?
왠지 플랫폼이 있으면 성공할 것 같아서
워드프레스로 개발, 근데 느려서 개발자 팀원 구해서 PHP + AngularJS 로 개발 시작
FAILED
왠지 개발을 못 해서
망했다고 생각
프로그램 없이 구글 클라우드로
운영하는데 너무 힘들었음
study startup
왠지 스타트업을 몰라서 망한것 같아서 스타트업 관련 책을 거의다 구매해서 읽어버림 => 당장 도움 안 됌, 읽지 마셈
돌이켜보니 내가 개발자가 아니어서 망했었다고 생각함
그래서 개발을 배워야 겠다고 생각
BOOTCAMP
국비지원보단 왠지 있어 보여서 부트캠프 시작
이머시브에서 배운 아이디어로 창업
만들기 전에 25곳의 전국 공유 오피스 컨택 및 10곳 영업
그러나
참고로 이 서비스도 망함
freelancing
통장 잔고 없어서 외주 개발 시작
script.js line 2400줄 넘기 시작
BACKEND ENGINEER
사업 조언 구하러 갔다가 대표가 같이 해 보자고 하
꼬심 당해서 스타트업 조인
1년 같았던 3개월
영혼을 갈아서 개발
왠지 내 사업하는게 더 좋아보여서
다시 프리랜서 + 솔로로 돌아 옴
from eval_param import Evaluate
import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
import tkinter as tk
from tkinter import ttk
LARGE_FONT = ("Verdana", 12)
MID_FONT = ("Courier", 8)
class Blast(tk.Tk):
def __init__(self, *args, **kwargs):
tk.Tk.__init__(self, *args, **kwargs)
# tk.Tk.iconbitmap(self, default="")
tk.Tk.wm_title(self, "AIRBLAST PARAMETERS")
container = tk.Frame(self)
container.pack(side="top", fill="both", expand=True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
frame = Main(container, self)
self.frames['Render'] = frame
frame.grid(row=0, column=0, sticky="nsew")
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class Main(tk.Frame):
def __init__(self, parent, controller):
tk.Frame.__init__(self, parent)
label = tk.Label(self, text="AIRBLAST PARAMETERS", font=LARGE_FONT, fg="blue")
label.config(font=('Courier', 25))
label.grid(row=0, column=0, columnspan=1, padx=10, pady=30)
label_1 = tk.Label(self, text="Actual Stand-off Distance (D)[m]")
label_2 = tk.Label(self, text="Net Explosive Quantity (Q)[kg]")
label_3 = tk.Label(self, text="select your bomb type")
label_4 = tk.Label(self, text="select your calc type")
label_1.grid(row=1, column=0, pady=15)
label_2.grid(row=2, column=0, pady=15)
label_3.grid(row=3, column=0, pady=15)
label_4.grid(row=4, column=0, pady=15)
e1 = ttk.Entry(self, width=3)
e2 = ttk.Entry(self, width=3)
e1.grid(row=1, column=1, padx=10, pady=15)
e2.grid(row=2, column=1, padx=10, pady=15)
e1.focus_set()
e2.focus_set()
bomb_options = ["TNT", "RDX", "HMX", "Nitroglycerin", "CompoundB", "Semtex", "60% Nitroglycerin dynamite"]
bomb_type = tk.StringVar(self)
cal_options = ["air", "surface"]
cal_type = tk.StringVar(self)
print('cal_type.get()', cal_type.get())
option_1 = ttk.OptionMenu(self, bomb_type, bomb_options[0], *bomb_options)
option_1.grid(row=3, column=1, padx=10, pady=11)
option_2 = ttk.OptionMenu(self, cal_type, cal_options[0], *cal_options)
option_2.grid(row=4, column=1, padx=10, pady=11)
so_dist = None
ne_qty = None
def set_TNT_EQ_FIG(val):
if val == 'TNT':
return 1
elif val == 'RDX':
return 1.185
elif val == 'HMX':
return 1.256
elif val == 'Nitroglycerin':
return 1.481
elif val == 'CompoundB':
return 1.148
elif val == 'Semtex':
return 1.25
elif val == '60% Nitroglycerin dynamite':
return 0.6
return
def callback():
if e1.get() == '' or e2.get() == '':
label_err = tk.Label(self, text="please type input values", fg="red")
label_err.grid(row=5, column=1)
# elif type(int(e1.get())) == int and type(int(e2.get())) == int:
elif self.validateFloat(e1.get()) and self.validateFloat(e2.get()):
label_ok = tk.Label(self, text=" all input values are OK ", fg="green")
label_ok.grid(row=5, column=1)
so_dist = float(e1.get())
ne_qty = float(e2.get())
TNT_EQ_FIG = set_TNT_EQ_FIG(bomb_type.get())
cal_type_val = cal_type.get()
print('bomb type', bomb_type.get())
print('cal_type', cal_type_val)
# compute param using Evaluate Class
if cal_type_val == 'air':
self.plot_air(so_dist, ne_qty, TNT_EQ_FIG)
else:
self.plot_sfc(so_dist, ne_qty, TNT_EQ_FIG)
else:
label_err = tk.Label(self, text="please type integer input only", fg="red")
label_err.grid(row=5, column=1)
print('e1.get type', type(e1.get()), 'e2.get type', type(e2.get()))
return
ttk.Style().configure('white/gray.TButton', foreground='black', background='blue')
btn_calc = ttk.Button(self, text="calculate", style='white/gray.TButton', command=callback)
btn_calc.grid(row=5, column=0, padx=10, pady=20, sticky="E")
def validateFloat(self, value):
ENTRY = value.strip()
if ENTRY == "": return # do noting if we don't have a value
try:
NUMENTRY = float(ENTRY)
if NUMENTRY: return True
except ValueError:
print('the input value is not integer or float')
return
def plot_air(self, so_dist, ne_qty, TNT_EQ_FIG):
param_result = Evaluate(so_dist, ne_qty, TNT_EQ_FIG)
points = param_result.get_points()
pt_air = points['air']
pt_air_fr = pt_air['front-wall']
pt_air_fr_pr = pt_air_fr['pr']
pt_air_fr_ps = pt_air_fr['ps']
pt_air_eq = pt_air['equivalent']
pr_annotate = points['air']['outputs']['pr']
ps_annotate = points['air']['outputs']['ps']
td_annotate = points['air']['outputs']['td']
tc_annotate = points['air']['outputs']['tc']
te_annotate = points['air']['outputs']['te']
f1 = Figure(figsize=(4,4), dpi=100)
a = f1.add_subplot(111)
a.set_title('Front-Wall Loading')
a.plot(pt_air_fr_pr['x'], pt_air_fr_pr['y'])
a.plot(pt_air_fr_ps['x'], pt_air_fr_ps['y'])
a.plot([pt_air_fr_pr['x'][1], pt_air_fr_pr['x'][1]], [0, pt_air_fr_pr['y'][1]], '--')
a.annotate('Pr: ' + str(pr_annotate), xy=(td_annotate*0.05, pr_annotate - 1))
a.annotate('Ps: ' + str(ps_annotate), xy=(td_annotate*0.05, ps_annotate - 3))
a.annotate('td: ' + str(td_annotate), xy=(td_annotate*0.8, pr_annotate*0.1))
a.annotate('tc: ' + str(tc_annotate), xy=(tc_annotate*1.1, pr_annotate*0.05))
a.grid(linestyle='-')
canvas1 = FigureCanvasTkAgg(f1, self)
f2 = Figure(figsize=(4,4), dpi=100)
b = f2.add_subplot(111)
b.set_title('Equivalent Loading')
b.plot(pt_air_eq['x'], pt_air_eq['y'])
b.annotate('Pr: ' + str(pr_annotate), xy=(te_annotate*0.05, pr_annotate*0.97))
b.annotate('te: ' + str(te_annotate), xy=(te_annotate*0.7, pr_annotate*0.03))
b.grid(linestyle='-')
canvas2 = FigureCanvasTkAgg(f2, self)
canvas1.show()
canvas2.show()
canvas1._tkcanvas.grid(row=1, rowspan=7, column=2)
canvas2._tkcanvas.grid(row=8, rowspan=15, column=2)
self.show_outputs('Air', points)
def plot_sfc(self, so_dist, ne_qty, TNT_EQ_FIG):
param_result = Evaluate(so_dist, ne_qty, TNT_EQ_FIG)
points = param_result.get_points()
pt_sfc = points['surface']
pt_sfc_fr = pt_sfc['front-wall']
pt_sfc_fr_pr = pt_sfc_fr['pr']
pt_sfc_fr_ps = pt_sfc_fr['ps']
pt_sfc_eq = pt_sfc['equivalent']
pr_annotate = points['air']['outputs']['pr']
ps_annotate = points['air']['outputs']['ps']
td_annotate = points['air']['outputs']['td']
tc_annotate = points['air']['outputs']['tc']
te_annotate = points['air']['outputs']['te']
f1 = Figure(figsize=(4,4), dpi=100)
a = f1.add_subplot(111)
a.plot(pt_sfc_fr_pr['x'], pt_sfc_fr_pr['y'])
a.plot(pt_sfc_fr_ps['x'], pt_sfc_fr_ps['y'])
a.plot([pt_sfc_fr_pr['x'][1], pt_sfc_fr_pr['x'][1]], [0, pt_sfc_fr_pr['y'][1]], '--')
a.annotate('Pr: ' + str(pr_annotate), xy=(td_annotate*0.05, pr_annotate - 1))
a.annotate('Ps: ' + str(ps_annotate), xy=(td_annotate*0.05, ps_annotate - 3))
a.annotate('td: ' + str(td_annotate), xy=(td_annotate*0.8, pr_annotate*0.1))
a.annotate('tc: ' + str(tc_annotate), xy=(tc_annotate*1.1, pr_annotate*0.05))
a.grid(linestyle='-')
canvas1 = FigureCanvasTkAgg(f1, self)
f2 = Figure(figsize=(4,4), dpi=100)
b = f2.add_subplot(111)
b.plot(pt_sfc_eq['x'], pt_sfc_eq['y'])
b.annotate('Pr: ' + str(pr_annotate), xy=(te_annotate*0.05, pr_annotate*0.97))
b.annotate('te: ' + str(te_annotate), xy=(te_annotate*0.7, pr_annotate*0.03))
b.grid(linestyle='-')
canvas2 = FigureCanvasTkAgg(f2, self)
canvas1.show()
canvas2.show()
canvas1._tkcanvas.grid(row=1, rowspan=7, column=2)
canvas2._tkcanvas.grid(row=8, rowspan=15, column=2)
self.show_outputs('Surface', points)
def show_outputs(self, type_txt, points):
label_output = tk.Label(self, text="OUTPUTS", fg="blue")
label_output_type = tk.Label(self, text=type_txt)
label_output_1 = tk.Label(self, text="Peak Incident Pressure(Ps) [kPa]")
label_output_2 = tk.Label(self, text="Incident Impulse(Is) [kPa.msec]")
label_output_3 = tk.Label(self, text="Peak Reflected Pressure(Pr) [kPa]")
label_output_4 = tk.Label(self, text="Reflected Impulse(Ir) [kPa.msec]")
label_output_5 = tk.Label(self, text="Shock Front Velocity(U) [m/msec]")
label_output_6 = tk.Label(self, text="Arrival Time(Ta) [msec]")
label_output_7 = tk.Label(self, text="Positive Phase Duration(T+) [msec]")
label_output.grid(row=7, column=0, columnspan=1, pady=10)
label_output_type.grid(row=8, column=1, pady=5)
label_output_1.grid(row=9, column=0, pady=5)
label_output_2.grid(row=10, column=0, pady=5)
label_output_3.grid(row=11, column=0, pady=5)
label_output_4.grid(row=12, column=0, pady=5)
label_output_5.grid(row=13, column=0, pady=5)
label_output_6.grid(row=14, column=0, pady=5)
label_output_7.grid(row=15, column=0, pady=5)
if type_txt == 'Air':
outputs = points['air']['outputs']
else:
outputs = points['surface']['outputs']
label_output_val_1 = tk.Label(self, text=outputs['ps'])
label_output_val_2 = tk.Label(self, text=outputs['is'])
label_output_val_3 = tk.Label(self, text=outputs['pr'])
label_output_val_4 = tk.Label(self, text=outputs['ir'])
label_output_val_5 = tk.Label(self, text=outputs['u'])
label_output_val_6 = tk.Label(self, text=outputs['ta'])
label_output_val_7 = tk.Label(self, text=outputs['td'])
label_output_val_1.grid(row=9, column=1, pady=5)
label_output_val_2.grid(row=10, column=1, pady=5)
label_output_val_3.grid(row=11, column=1, pady=5)
label_output_val_4.grid(row=12, column=1, pady=5)
label_output_val_5.grid(row=13, column=1, pady=5)
label_output_val_6.grid(row=14, column=1, pady=5)
label_output_val_7.grid(row=15, column=1, pady=5)
app = Blast()
app.mainloop()
render.py
Displaying blast.png.
남자 개발자들을 타겟으로 남대문 도매 꽃 배달 사업 시작 -> 당연히 또 망함
Blogging
그래도 글은 꾸준히 씀
생각해 보면 옛날부터 글은 계속 끄적여 왓음
고등학교 때 부터 바이크를 타고 싶었음
좋아하는 거 - 축구, 풋살, 축구 게임, EPL 축구는 다 좋아함
4년 동안 조기 축구, 4년 동안 매일 일요일 아침 2시간 풋살 하고 있음
통장에 돈도 없고 사업은 해야겠고 해서
비혼주의로 살아가고 있었는데
운 좋게도 받아주고 이해해주는 사람 만나서
결혼까지 함
결혼 승낙 받기 위해서 장인어른께 PT 발표
코드스테이츠에서 도와 달라고 함
도와주기 시작
잘 하는지는 모르겠는데 약간 미쳐 있는 것 같긴 함
해 봐야 한다
가 봐야 한다
계획대로 되는게 있나?
빨리 해 보고 돌아온다
해 봐서 손해 없다
제대로 해 볼거면 미쳐본다
여러분들 모두 창업하세요
하루하루가 블록버스터
긴장감 100% 보장
나만 당할 수 없지
는 아마 할 시간이 없을 겁니다