전체 글 20

파이썬 코드 테스트 간단한 코드 예제로 이해하기

파이썬을 이용해서 코드 테스트 과정을 단순화할 수 있다. 바로 unittest라는 프레임워크를 활용하는 것인데, 간단히 얘기하자면 특정 함수의 입력값과 출력값을 지정해서 그 값이 맞는지를 확인해준다. 보통 코드 테스트는 프로젝트에 많이 활용되지만 개념만 이해하고자 코딩 테스트 문제를 가져왔다. 전에도 한 번 언급했던 백준의 13705번 문제인데 여기의 입력값과 출력값을 이용했다. 아래는 test.py 파일의 코드를 가져왔다. import unittest from mycode import * class MyFirstTests(unittest.TestCase): def testcase1(self): self.assertEqual(solve(1, 1, 20), 19.441787) if __name__ == '..

Python 2023.10.30

파이썬에서 머신 엡실론의 의미 Machine Epsilon

먼저 머신 엡실론(machine epsilon)에 대해서 알아보기 전에 컴퓨터에서의 실수 구조를 이해해야 한다. IEEE 754의 실수 표현 방법에 따르면 float는 sign에 1, exponent에 8, mantissa에 23 비트를 사용하고, double은 sign에 1, exponent에 11, mantissa에 52 비트를 사용한다. 하지만 파이썬에서는 실수(float)에 double의 구조만을 적용하고 있다. 이는 아래 코드를 실행해보면 알 수 있다. import sys float_info = sys.float_info print(float_info) 실행 결과는 이렇다: sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp..

Python 2023.10.25

Ubuntu 환경에서 파이썬 버전 변경하기

Ubuntu 환경에서 파이썬 버전을 업그레이드할 일이 생겨서 찾아본 방법이다. 여러 파이썬 버전을 다운로드해두고 필요할 때마다 기본 값을 변경하는 식으로 되어 있다. *참고로 WSL2을 사용하고 있어 폴더 구조가 조금 다를 수도 있다. 먼저 파이썬 버전을 변경하려면 현재 가지고 있는 버전과 다른 파이썬을 먼저 다운 받아야 한다. 그전에 먼저 Ubuntu를 최신 버전으로 업데이트하고 필요한 패키지를 설치해두자. sudo apt update && sudo apt upgrade sudo apt install wget build-essential libncursesw5-dev libssl-dev \ libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-d..

Python 2023.10.07

누구나 할 수 있는 Github 블로그 시작하기

"누구나 Github 블로그를 만들 수 있도록" 요즘은 티스토리에 글을 쓰고 있지만 2020년부터 써온 메인 블로그가 따로 있다. 그건 바로 Github 계정을 통해 운영 중인 블로그이다: https://tula3and.github.io/ TULA Log in the ocean of curiosity tula3and.github.io Github 블로그를 시작하고 싶어도 처음 세팅에서 벽을 느끼고 그만둔 사람이 꽤 있을 거 같다. 나도 처음에는 어떻게 할지 몰라서 많이 해맸다. 그래서 아무 블로그를 포크해서 파일 하나 하나를 뜯어보면서 익혔었는데.. 이 방법은 아무래도 비효율적이다. 그래서 누구나 쉽게 Github 블로그를 시작할 수 있도록, 첫 발 내딛기를 같이 해보는 글을 준비해봤다. 가장 먼저 마음..

Essay 2023.09.11

3주간 산호세에 있으면서 어떤 점이 달라졌냐 물으면

학교 프로그램을 통해 지난 3주간 산호세 주립 대학교에 다녀왔다. 메인 프로그램은 (1) CS와 비즈니스 관련 수업을 들으면서 (2) 각자 팀의 아이템을 디벨롭시켜 데모와 함께 발표하는 것이었다. 우리 팀의 아이템은 Be Local로 여행자를 로컬의 사람들과 연결하는 서비스였다. 로고 디자인은 내가 했는데 그리면서 생각한 테마는 바다를 표류하는 코끼리였다. 바다와 코끼리? 처음 들으면 굉장히 어색하게 느껴질텐데 바로 그 점을 노린 것이다. 처음 온 여행지의 로컬을 돌아다닐 때 흔히 마주할 수 있는 새로운 환경을 바다로, 그 속을 탐방하는 여행자를 표류하는 코끼리로 나타냈다. 이 스토리를 발표할 때도 잠깐 얘기했는데 반응이 꽤 좋았어서 괜히 뿌듯했다. 최종 발표까지 끝마치고 받은 Grand Prize. 이..

Experience 2023.08.10

Microsoft MLSA Beta가 되었습니다 😎

2022년 1월에 MLSA에 합격한 후로 1년 반만에 드디어 Beta가 됐다! MLSA는 뭐고 Beta는 뭔데? 라고 생각하실 분이 있을 거 같아 아래에 간단한 설명을 적어두었다. 먼저 MLSA는 Microsoft Learn Student Ambassadors의 줄임말로, 학생 커뮤니티 리더를 지원해주는 프로그램이다. 학생 커뮤니티를 위한 프로그램인만큼 학생이라면 누구나 지원이 가능하다. 마이크로소프트 계정만 있다면 아래 링크에서 Apply now 버튼을 통해 바로 지원할 수 있다. https://studentambassadors.microsoft.com/ Microsoft Community Leader Become a Student Ambassador. Amplify your impact and est..

Experience 2023.07.07

파이썬 클래스에서 내부/외부 변수 참조하는 방법

파이썬으로 코딩 테스트 문제를 풀다가 보면 종종 UnboundLocalError: local variable referenced before assignment 에러를 만날 때가 있는데, 이번에 이런 문제가 왜 계속 발생하는지 제대로 파악해보려고 이번 글을 쓰게 됐다. 외부 변수를 참조하는 예시를 보기 전 클래스에서의 self의 의미가 무엇인지 살펴보도록 하자. 아래와 같은 클래스가 있다고 해보자. class LearnClass: def __init__(self, val=0): self.val = val print(self.val) def method(): print("No self") def instanceMethod(self): print("self") 클래스 내의 함수를 작성할 때 self를 넣은 ..

Python 2023.06.30

라이브 코딩은 많은 연습이 필요하구나

지금까지 이런 실습 관련해서 발표가 있을 때마다 라이브 코딩을 안 하도록 매번 캡쳐를 하나 하나 찍어서 준비를 했었다. 그런데 이번에는 라이브 코딩을 안 할 수가 없는 상황이어서 어쩌다보니 라이브 코딩과 함께하는 발표를 녹화하고 왔다. 분명 하기 전에 5시간 연습을 하고 갔기 때문에 중간 중간 있을만한 작고 큰 변수는 전부 다 파악했다고 생각했다. お見通しだ! 하지만 이상과 현실은 다른 거 아시죠. 아주 생각지도 못한 에러가 나기도 하고 왜 되지? 왜 안 되지? 의 연속이었다. 우당탕탕 녹화를 끝내고 저스틴 님과 상담 같은 이야기(감사합니다!)를 하면서 배운 점을 기록하고 싶어서 블로그를 집에 오자마자 켰다. 1. 내가 한 발표 영상을 다시 보는 건 부끄러워도 리뷰하는 건 필요하다. 그래야 발전이 있고 ..

Essay 2023.06.18

Phong Reflection Model을 세 가지 Shading에 적용하기

세 가지 Shading에 Phong reflection model을 적용하기에 앞서 먼저 이 모델이 무엇인지에 대해 간단히 알아보자. Phong reflection model은 빛을 반사하는 방법에 따라 3가지(ambient, diffuse, specular)로 구분하여 이를 전부 더하는 식으로 구현되어 있다. 아래에 해당 모델의 식을 적어두었다. k와 α의 값은 상수로 어떤 물체를 만들고 싶은지에 따라 다르게 설정해주면 된다. (자세한 값 설정에 대해서는 해당 포스팅 참고: https://learnopengl.com/Lighting/Materials) 빛을 반사하는 각 방법에 대해 추가 설명이 필요하다면 다음 링크를 참고하는 것을 추천한다: https://learnopengl.com/Lighting/B..

OpenGL 2023.06.13

6월 MVP/MLSA 모임과 .NET Build After Party 🎉

이번 6월 MVP/MLSA 모임은 .NET Build After Party와 같이 진행되었다. 그래서 더 다양한 분들을 만나고 소통할 수 있는 기회가 되었던 거 같다. 본 행사에 앞서 각자 자기소개를 간단히 하고 MVP 이재석 님께서 Power Platform에서 프롬프트를 이용해 앱을 만들 수 있다는 걸 보여주셨다. 앞으로는 이 Power Platform을 포함해서 Github Copilot으로만 알고 있던 그 Copilot이 다양한 Microsoft 제품에 들어갈 예정인 듯하다. 링크한 영상을 보면 회의 내용을 요약하고 어제 있었던 일을 파일까지 포함하여 정리하여 알려주는 기능이 있는데 이게 실용화되면 정말 편할 거 같다는 생각이 들었다. 그리고 시작한 Microsoft Build After Part..

Experience 2023.06.11