본문 바로가기

프로그래밍

C# FileStream MemoryStream 이번에도 예제로만 설명 FileStream fsWrite = new FileStream("TestStream.txt", FileMode.Append, FileAccess.Write); StreamWriter sw = new StreamWriter(fsWrite); sw.WriteLine("파일에 텍스트를 입력"); sw.Close(); fsWrite.Close(); FileStream fsRead = new FileStream("TestStream.txt", FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(fsRead); String buf = sr.ReadLine(); sr.Close(); fsRead.Close(); Consol.. 더보기
C# 파일 직렬화 - BinaryFormatter 귀찮아서 풀소스로 설명 using System;using System.IO;using System.Collections;using System.Runtime.Serialization.Formatters.Binary;using System.Runtime.Serialization; public class App{ [STAThread] static void Serialize() { // 사용할 데이터로는 해쉬테이블을 사용한다. 정적데이터를 사용할때에는 // 그냥 파일스트림에 집어넣어도 되지만, // 동적데이터나 컨테이너를 사용할 경우 직렬화를 반드시 해줘야하기 때문이다. Hashtable addresses = new Hashtable(); addresses.Add("Jeff", "123 Main Street,.. 더보기
[링크] 구글 면접후기 http://m.blog.naver.com/sungyoon9876/220520151524 확실히 우리나라 회사와 차별점이 몇개가 보이는데 일단 복지.. 물론 큰회사이기도 하지만 지원이 국내와 비교했을때 상당히 차이가 난다. 인턴십 같은 경우 국내게임 회사의 경우 좀 모호하거나 아예 없는 경우가 많은데, 해외는 인턴십과 풀타임의 구분이 더 명확하다. 요즘 국내에서도 인턴십 제도를 시행하는걸 보긴 한 것 같다. 암튼, 해외에서는 이러한 코딩 인터뷰에 관한 책도 많이 있고(기출문제도 검색하면 나온다) 페이스북에 이러한 해외 취업을 노리는 사람들끼리 스터디도 하고 있으니 관심 있는 사람은 참고하시길.. p.s. 전화 인터뷰로 자주 나오는 질문들http://www.indiabix.com/hr-interview/q.. 더보기
C# 6.0 새로운 기능 몇가지만 정리하자면, 먼저 멤버변수 표현 방식 수정 public int Area{ get { return Height * Width; }} => public int Area => Height * Width; 람다식을 활용하여 아예 괄호까지 빼버렸는데, 처음 프로그래밍을 접하는 사람들에겐 정말 직관적일것 같다. 나중엔 아예 return 키워드가 없어질지도 모르겠다; 또한 빈번한 null 체크를 위해 ?. 연산자를 활용하여 코드를 간결화 하였다. 엘비스 연산자라고 한다 ㅋㅋ string s = GetA();int? i = (s == null) ? null : s.Length; =>string s = GetA();int? n = s?.Length; 프로그래밍의 발전은 정말 귀차니즘을 어디까지 해결해 줄까라는 .. 더보기
C# 의 define 처리 C++에서 편하게 사용하던 #define MAX_COUNT 100 같은 상수 정의는 C#에서 지원되지 않는다. 게다가 파일 최상단에 위치하지 않으면 에러를 뿜어낸다. static class Constants{ public const double Pi = 3.141592;}class Test{ static void Main() { double result = Constants.Pi * 3; }} 이와 같은 문제로 msdn에서 권장하는 방법은 클래스의 정적멤버로 선언하여 사용하라고 나와 있다. 참고#define 지시문은 C 및 C++에서 일반적으로 수행되는 것처럼 상수 값을 선언하는 데 사용할 수 없습니다. C#의 상수는 클래스 또는 구조체의 정적 멤버로 정의하는 것이 좋습니다. 이러한 상수가 여러 개 있는.. 더보기
객체지향 - 인터페이스와 구현의 분리 객체 지향에서는 인터페이스와 구현의 분리를 아주 중요하게 여깁니다. 인터페이스라는 용어는 여러곳에 쓰이는데,여기서의 인터페이스는 컴퓨터의 전원버튼을 생각하면, 쉽게 생각할수 있을듯 합니다. 왜!! 분리하느냐? 라는 것은 이것이 주는 이점을 알면 이해할 수 있겠죠. 눈 앞의 컴퓨터를 예로 들겠습니다. 컴퓨터 본체의 인터페이스를 살펴보면전원, 리셋버튼, 시디롬 버튼 등의 버튼들과 모니터 연결 케이블, 전원 케이블 등의 케이블이있습니다.. 우리는 본체내부의 CPU,RAM,BOARD작동 원리를 알 수 없습니다.혹시, 아시는분이 게시다면, 대단한 내공의 소유자군요..어쩄든, 대부분의 일반인은 그 내부의 구조를 자세히 알지 못합니다.뭐, 이외에도 TV나 비디오등 다른 전자기기에도 마.. 더보기
C# Math 함수 모음집 이름설명Abs(Decimal)Decimal 숫자의 절대값을 반환합니다.Abs(Double)배정밀도 부동 소수점 수의 절대 값을 반환합니다.Abs(Int16)16비트 부호 있는 정수의 절대 값을 반환합니다.Abs(Int32)32비트 부호 있는 정수의 절대 값을 반환합니다.Abs(Int64)64비트 부호 있는 정수의 절대 값을 반환합니다.Abs(SByte)8비트 부호 있는 정수의 절대 값을 반환합니다.Abs(Single)단정밀도 부동 소수점 수의 절대 값을 반환합니다.Acos(Double)코사인을 적용했을 때 지정된 숫자가 나오는 각도를 반환합니다.Asin(Double)사인을 적용했을 때 지정된 숫자가 나오는 각도를 반환합니다.Atan(Double)탄젠트를 적용했을 때 지정된 숫자가 나오는 각도를 반환합니다.. 더보기
Unity 게임안에서 직접 로그를 찍자 모바일 게임은 실제 구동을 PC가 아닌 모바일단말기에서 하기 때문에 빌드를 하고 실제 테스트를 할때는 유니티에디터에서 볼 수 있는 로그를 직업 확인할 수 없다. 그래서 하는 방법은 단말기를 PC에 연결후 이클립스를 구동하여 실시간 로그를 확인하는 방법을 많이 사용하고 있는데.. 유니티 어셋스토어에 직접 게임클라이언트에서 로그를 삽입하여 볼 수 있는 플러그인이 있어 소개하고자 한다. 이름은 보시다시피 Log Viewer라는 무료 플러그인이다. 임포트하면 생성버튼이 생기는데, Hierachy View에 붙여놓아 항상 돌아가게 해놓으면 된다. 따로 추가 코딩이나 다른 절차는 필요없다. 그냥 붙이면 끝. 사용방법도 간단하다. 화면상에 마우스나 손터치로 원을 살짝 그려주면 활성화된다. 너무 민감하다고 생각되면 원.. 더보기
C# String Object 의 불변성 String Object는 한번 할당이 되면 변하지 않는다.(불변성 존재) 그렇다면 이렇게 하면 어떻게 되는 것일까? string s1 = "A string is more "; string s2 = "than the sum of its chars."; s1 += s2; System.Console.WriteLine(s1); // 출력: A string is more than the sum of its chars. 분명 출력은 s1이 s2와 합쳐진 형태이다.그렇다면, s1이 변한것이 아닌가? 라고 생각할 수도 있지만 그렇지 않다. 결과적으로 처음에 할당된 s1과 s2 개체는 변하지 않았다.+= 연산이 진행됐을때 새 개체(s1)가 생성이 된 것이다.s1과 s2의 합쳐진 형태의 새 string object가 생.. 더보기
C# String Null 문자열 string str = "hello"; string nullStr = null; string emptyStr = String.Empty; string tempStr = str + nullStr; Console.WriteLine(tempStr); // hello 가 출력된다. 그렇다면, 이건 어떨까? bool b = (emptyStr == nullStr); Console.WriteLine(b); // false 당연한거지만 false 이다. emptyStr 은 빈문자열을 가지고 있는 포인터이고, nullStr 은 포인터자체가 null이기 때문이다. string newStr = emptyStr + nullStr;이렇게 하면 새 빈 문자열이 생성된다. Console.WriteLine(emptyStr.Lengt.. 더보기