본문 바로가기

반응형

진리는어디에

(289)
[C#] IL(Intermediate Language) IL(Intermediate Language) 여러분의 PC를 보면 CPU가 있을 것이고 그 위에 운영체제가 설치 되어있을 것이다. 만일 여러분이 C/C++과 같은 언어로 프로그램을 작성한 다음 컴파일 하면 실행가능한 실행 파일. 즉, CPU가 이해하는 기계어 코드로 구성된 실행 파일이 나온다. 이런 실행 파일의 특징은 특정 CPU와 OS에서만 동작하는 실행파일이다. C/C++로 작성된 프로그램의 문제점 특정 환경(예를 들어 인텔 CPU, Windows OS)에서만 동작한다. 다른 환경에서 사용하려면 다시 컴파일 하거나 소스 코드 자체를 다시 작성해야 한다. C#의 경우에는 C# 컴파일러로 컴파일하고 나면 CPU와 OS에 독립적인 기계어 코드가 생성된다. 이것을 중간언어, IL(Intermedidate ..
[C#] IL 디스어셈블러(ildasm.exe) 유틸리티 ildasm.exe란? IL 디스어셈블러(ildasm.exe)는 IL 어셈블러(ilasm.exe)의 자매도구로써 IL코드를 포함하고 있는 포터블 실행 파일(PE)을 이용해 ilasm.exe의 입력에 적합한 텍스트 파일을 생성한다. 다시 말하면, ildasm.exe는 실행 파일 내부의 .NET 기계어 코드(CIL)을 분석해서 클래스 내용을 보여 주는 유틸리티다. 설치 ildasm.exe는 C#을 개발하기 위해 비주얼 스튜디오와 함께 설치 된다. 제대로 설치 되었다면 "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools"에서 확인 할 수 있다(비주얼 스튜디오 2019 기준, 버젼마다 경로가 약간 다를 수 있다). 실행 ildasm..
[C#] 커맨드 라인으로 C# 빌드 Visual Studio에서 C#을 빌드하게 되면 주로 IDE를 통해 빌드 하게 된다(Ctrl + F5). 하지만 젠킨스와 같은 다른 빌드 도구들을 이용하려면 커맨드라인 명령어로 빌드하는 것이 여러모로 편하다. 이번 장에서는 커맨드 라인으로 C#을 빌드하는 방법에 대해 살펴 보도록 하겠다. C# 컴파일러 - csc.exe 커맨드 라인으로 C#을 빌드하기 위해서는 csc.exe를 이용해야 한다. csc.exe는 C#을 개발하기 위해 비주얼 스튜디오를 설치하였다면 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 위치에 자동으로 설치가 되어 있을 것이다. 또는 'Native Tools Command Prompt'를 실행하면 된다. 윈도우 실행창에서 'Native Tools..
[Python] 파이썬 기초부터 시작하기 - 목차 파이썬 프로그래밍을 하는데 있어서 기본이라 생각되는 부분을 모두 나열하여 정리해 보았다. 단계적으로 파이썬에 대해 이해 할 수 있도록 글의 순서를 구성해 놓았으니 파이썬을 처음 시작하는 분들이라면 처음 부터 차근차근 읽기 권해드린다. 파이썬 소개 Overview 파이썬 코드의 특징 변수와 타입 파이썬 변수의 소개 변수의 타입 변수의 다양한 정보 확인 ctype 모듈을 활용한 변수의 정보 확인 == 와 is 연산자 mutable 변수와 immutable 변수 변수의 삭제 파이썬 정수는 Overflow가 없다? 문자열 이터레이터(iterator)와 이터러블 타입(iterable type) 이뉴머레이트(enumerate) 제너레이터(generator) 시퀀스 데이터 리스트(list) 튜플(tuple) 셑(se..
[C++/C#] Reading CSV file I've been fiddling around trying to make a game myself at home these days. It was planned to manage the game's metadata (item information, monster stats, quests, etc.) in Excel and save the result as a csv file for use. But... as always, it doesn't work. 한국어 버전 보기 Summary Take the harvest and start with the summary. Most CSV file reading programming examples found on the Internet omit escaping f..
[Python] 비동기 함수 - asyncio 이번 포스트는 파이썬 기초 강의의 마지막 장으로써 비동기 함수의 개념과 활용 방법에 대해 설명 한다. 비동기 함수는 프로그램의 성능 향상을 위해서는 필수적인 기능이고 마지막 답게 다소 어려운 내용이므로 집중해서 읽도록 하자. 비동기 함수의 개념 본론을 시작하기 전에 우리는 먼저 비동기 함수의 개념에 대해 이해해야 한다. 일반적으로 함수를 호출하게 되면 함수의 처음 부터 진행하다 함수의 끝에 다다르거나 도중에 return문을 만나게 되면 함수는 종료되고, 제어권은 다시 호출자에게 되돌아 간다. 이 경우 호출자는 자신이 호출한 함수가 종료하고 리턴 할 때까지 기다리고, 함수가 리턴 했다는 것은 호출 된 함수의 실행이 완료 되었다는 것을 보장한다. import time def foo() : print('hel..
Bresenham's algorithm 한국어 버전 보기 Bresenham's algorithm is an algorithm designed to draw straight lines only by counting integers, excluding real number calculations that make complex and slow calculations in computer graphics. The coordinates calculated using the formula of a straight line are rounded off or rounded to an integer in order to be displayed on the screen. Let's take a look at the process of converting th..
[Python] 예외 처리(Exception Handling) 파이썬에서 에러를 처리하는 방법은 다양하다. 간단한 처리 방법으로는 함수의 리턴 값을 이용하는 방법이 있다. 하지만 이는 호출자가 에러를 처리하도록 강제할 수 있는 방법이 없는 단점이 있다. 그래서 에러 상황에 대한 처리가 중요한 부분에서는 exception을 사용하여 에러 처리를 강제 할 수 있다. 이번 포스트에서는 파이썬의 예외 처리(exception handling)에 대해 자세히 살펴 보도록 하겠다. None이나 False 리턴 함수 실패 시 None이나 False 또는 다른 미리 약속된 값을 반환하여 함수의 실패를 알린다. 호출자가 반드시 실패에 대한 처리를 할 필요는 없다. 주로 심각하지 않고 무시해도 되는 사소한 에러 처리를 할 때 이런 방식을 사용하면 좋다. def foo(flag) : i..
[Unity] Convert Texture2D to Sprite After making the sprite object into an AssetBundle, I loaded it as a sprite object through AssetBundle, but it failed to load and returned null. In Unity 4.3 version, it is said that when a sprite is built with an AssetBundle, it must be loaded as a texture and converted into a sprite. So, let's talk a little about how to change a texture to a sprite. Rect rect = new Rect(0, 0, texture.width, te..
[Python] 모듈 객체(module object) 이번 포스트에서는 저번 파이썬 모듈에 이어 "모듈 객체(module object)"에 대해 살펴 본다. 이번 장은 코드 작성을 통해 무엇을 만들어 보기 보다는 모듈 객체를 통해 얻을 수 있는 정보들을 알아 보는 위주로 진행 된다. 모듈 객체란 지금 까지 강의에서 파이썬은 모든 것이 객체로 관리 된다고 이야기 해왔다. 모듈은 하나의 객체이며 어떤 함수와 클래스가 모듈 안에 있고 모듈의 이름은 무엇인지, 어떤 파일인지에 대한 정보들을 가지고 있다. 모듈 역시 객체이므로 아래와 같이 주소와 타입, 사이즈 등을 확인 할 수 있다. import mylib import sys print('address :',hex(id(mylib))) print('type :', type(mylib)) # print('size :..

반응형