WIP. but I can't do more o<-< hand painting is so hard lol


  1. 백고미 2016.07.25 22:13 신고

    픽사 애니메이션에 나오는 집같아욤

내가 지금 뭘 하고 있는건지 모르겠다
한달동안 열심히 벌어봐야 집세내고 생활비쓰면 코딱지만큼 남는 돈.
전공분야도 아니고 하고싶은일도 아니고.
내 단점을 종이에 적으라면 깜지처럼 적을 수 있지만, 장점을 적으라면 하얀 백지로 남겨둬야하는 지금 내 심리상태.
할 수 있는게 한정적인데 그나마도 피곤하고 귀찮아서 하기 싫어하고, 하질 않으니 발전도 없는 이상한 악순환의 반복같은 삶이다.
감정적으로도 체력적으로도 매우 피곤하다...

I don't know. What I'm doing.
I tried to make money but I have to pay my rent fee and living cost. And then I can get just little bit money.
Even this work is not my major. I didn't want this job.
If I gonna write about my weakness in paper, it gonna be black. But I can't find my strength. This is my mental. Now.
I have limit to-do list. But I'm so lazy. So I didn't. Now my life is like the vicious circle.
I'm so tired. Physically, mentally.



'ETC(미분류)' 카테고리의 다른 글

일기 : the whining  (0) 2015.11.05
일기  (0) 2015.11.05
파티클과 플로우, 그리고 부가씨지  (0) 2012.08.27


I donno what i'm doing.






이제 회전하는거랑

블럭 한줄 맞으면 사라지고 점수더해지는거만 구현하면댐!!



and then, rotation and

if block ereasing function! 



when everybody fall asleep night sitting alone I awake as can't waste about already passed today. Who I'm waiting for? still I have to something? even if that's not thinking about wanting to come back and missing place. When I lie on your knees like my childhood did brush back my hair If I fall asleep for your comfortable touch. just Hold on don't wake me up I have a pretty deep sleep your silent eyes look down at me again, can I have pure smile just like before? I think I'm tired I think It'll do I would like to take a shortcut to come back to you When I lie on your knees like my childhood did brush back my hair If I fall a sleep for your comfortable touch. just Hold on don't wake me up I have a pretty deep sleep sululululu sulululu I have a deep sleep sululululu sulululu a deep sleep




-----------------------------


I don't know It's correct or not lol

if u wanna to see korean lyric, click the video and go to youtube, it have that.

today I want eng conversation meetup. and then met some ppl.

a guy said he liked IU. so I tho and search about her.

무릎(knee) is awsome. it's completely my type. :D

so I made lyric.

but I'm not sure. lol



now just.... I wanna have a deep sleep






얼마전에 올린 대문자를 찾아서 필터링 해주는거랑 비슷.

이번엔 소문자를 찾아서 대문자로 바꿔준다.


15열에서 문자열 입력받고

16열에서 그걸 글자로 조각조각 나눠서 배열에 담은다음에

foreach 로 검사하고 바꿔서 ToUpper()를 써서 다시 저장

그리고 출력 순이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 class Program
    {
        static char ToUpper(char a)
        {
            char newa = a;
            if (a > 96 && a < 123)
            {
                newa = (char)(a - 32);
            }
            return newa;
        }
 
        static void Main(string[] args)
        {
            string userstr = Console.ReadLine();
            char[] userchar = userstr.ToCharArray();
            int count = 0;
            foreach (char c in userchar)
            {
                userchar[count] = ToUpper(c);
                count++;
            }
            foreach (char c in userchar)
            {
                Console.Write(c);
            }
        }
    }
cs




아래는 참고용 아스키 코드.


아스키 코드라는건 사실 정해져 있는게 아니라고 한다.

나라마다 서로 다른 아스키 코드를 쓰는 일도 있고

변수를 char 타입으로 저장하면 컴퓨터가 알아서 타입을 검사해서 컴퓨터에 저장 되어있는 아스키 타입 글자로 바꿔준다.

그 말은 메모리 어딘가엔 변수의 값 뿐만이 아니라 타입도 저장되어있다는 말이다.

메모리가 나오니까 좀 복잡해지는데 @_@ 뭔가 더 재밌어진다.





지금은 새벽 2시...


비독님의 아이디어(?)를 받아 간단한 프로그램 하나 만들었다. 만들다보니 잼나넹 허허..



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using System.IO;
 
namespace test
{
    class Program
    {
        public static List<string> Names = new List<string>();
 
        public static void LoadAndCheckFromFile()
        {
            StreamReader loadfile = new StreamReader(@"C:\temp\temp.txt");
            while (loadfile.Peek() >= 0)
            {
                string name = loadfile.ReadLine();
                char[] namespilt = name.ToCharArray();
                string newname = "";
                int count = 0;
 
                foreach (char letter in namespilt)
                {
                    if ((int)letter > 64 && (int)letter < 91)
                    {
                        count++
                    }
                }
                if(count >0)
                {
                    newname = "!" + name;
                }
                else
                {
                    newname = name;
                }
                Names.Add(newname);
            }
            loadfile.Close();
        }
 
        public static void SaveToFile()
        {
            StreamWriter savefile = new StreamWriter(@"C:\temp\temp.txt");
 
            foreach (string s in Names)
            {
                savefile.WriteLine(s);
            }
            savefile.Close();
        }
 
        static void Main(string[] args)
        {
            LoadAndCheckFromFile();
            SaveToFile();
        }
    }
}
 
cs



근데 어떤분이 엑셀에서 할 수 있는 해결법을 주셨는데 

이걸보니 사람은 정말 똑똑해야 하는구나를 느꼈다.... 

멍청하면 손발이 고생함 ㅠㅠ









직원관리시스템 (Employee Management System)


이거 작성하는데 온종일 퍼부으면서도 3일걸림... 

오늘에서야 괜찮아보인다는 말을 듣고 정리해본다 ㅠㅠ(으어어어)


1. 상식적인 클래스

파칭코 게임 이후에 도형 출력 프로그램 만들면서 

OOP에 대해 배우고 클래스에 대한 개념도 확실히 잡혔겠지!! 하곤 자만했다가

막상 코딩 들어가서 해맨게 한두가지가 아니었다


설명하자면, 일단 아직도 클래스를 섞어서 썼었다.

정보를 다루는 클래스는 정보만 다뤄야 하는데, 받은 정보를 출력한다거나하는 하는 역할의 혼동.

그리고 OOP는 일단 "상식"이 필요한 일이라는걸 알게되었다.

예를들어 말하는 연필을 본적이 있나? 상식적으로 말이 안된다.

근데 코딩을 하다 보면 말하는 연필이 만들어질수도 있다(...)이런걸 조심해야한다.

추상화에 심각하게 어긋나는 방법이다.

매니저 클래스는 매니징만 해야한다. 보려주는건 프로그램 클래스가 해야 한다.

언행일치 하는 클래스와 함수를 만들자.


2. 도스창에서 파일을 만들어봄!!!

처음으로 파일 입출력을 사용해보았다. 사용법은 MSDN[각주:1]나 블로그들[각주:2]에 잘 나와있다.

내 코드중에서 EmployeeManager class가 가지고 있는 SaveToFile()과 LoadFromFile()이 그것.

의외로 함수들을 그냥 가져다 써서인지 어렵지 않았다...허허


3. 리스트(List<T>) 좋아요

직원들의 목록 관리를 위해 List<T>라는걸 처음 써봤다.

Array랑은 뭐가 다를까 두근두근해 하며 써봤는데 결론은 동일 ㅋㅋ...

처음에 리스트는 어떻게 파라미터로 넘겨받는지 몰라 조금 헤매다가 어찌어찌 성공.

다만 Array는 값이 여러개 들어있는거고, List는 그게 한 박스에 담겨있는 형태라고나 할까

char[] Array랑 string의 차이랑 똑같다고 스승님이 말했다.

 

(3일동안 받은 코드 리뷰들....)   


4. 근데 정렬은 뭐가 뭔지 모르겠어요

List 개념이나 사용방법은 Array랑 크게 다르지 않아서 어렵지 않았는데 문제는 List<T>.Sort()....정렬....

그냥 정렬해줘!! 라고 하면 그냥 정렬해줄 줄 알았더니, 뭔가 정렬할때 쓸 함수가 또 필요하댄다...

구글링해가면서 해결방법은 찾았는데 아직도 완전히 이해가 되질 않아서... 내일 다시한번 뜯어봐야겠다.


5.그 외의 자잘하게

- 함수 이름은 기능이기 때문에 동사를 쓴다. 그리고 첫글자를 대문자로 쓰자.(ex. Get, Set, Display...)

- 클래스 이름은 객체를 만드는 도안같은 역할이기때문에 명사를 쓰자 (ex. System, Program....)

- Enum은 첫글자는 대문자를 쓴다. 그리고 클래스처럼 명사를 쓴다.

- 새로만들어진 클래스가 기존 main()이 들어있는 클래스(여기선 Program)를 참조하게 되면

  나중에 확장성에 문제가 생긴다. 이거 말고 다른 프로그램에서 새 클래스를 가져다 쓰게되면 어떡할껀가?

- Input 이라던가, number같은 딱봐서 어디에 쓰일지 모르겠는 이름은 제발 짓지 말자.(흑... 상상력이 부조카다..)

- 필요없는 else는 생략하는게 좋다.

- 초반엔 매니저 클래스를 static으로 만들려고 했는데, 

  그러면 만약 둘 이상의 회사를 관리하게 될때 여러명의 매니저가 불가능해지기 때문에 그냥 일반 함수들로 구현했다.

  이 클래스가 여럿 복제될 일이 있는지 아니면 한 개로 계속 쓰일지 클래스를 디자인할때 미리 생각하라

- 위와 같은 이유로 직원들 리스트는 프로그램이 아닌 오직 매니저만 가지고 있다. 프로그램이 필요하면 매니저꺼 가져다 쓴다.

- 다시한번 강조. 클래스와 함수가 할 일을 확실히 구분하라. 이름을 보고 얘가 무슨 용도인지 한눈에 파악되게.



이제 드디어 코드들.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
using System;
using System.Collections.Generic;
 
namespace managementsystem
{
    class Program
    {
        static void Main(string[] args)
        {
            EmployeeManager manager = new EmployeeManager();
 
            while (true)
            {
                Console.Clear();
                Console.WriteLine("::Employee Management System::");
                Console.WriteLine("[1] Input the New Employee");
                Console.WriteLine("[2] Check All Employees");
                Console.WriteLine("[3] Save");
                Console.WriteLine("[4] Load");
                Console.WriteLine("[5] Exit");
 
                MainMenuOption mainmenunumber = (MainMenuOption)Int32.Parse(Console.ReadLine());
 
                switch (mainmenunumber)
                {
                    case MainMenuOption.Newemployee:
                        {
                            Console.Clear();
                            Console.WriteLine("[1] Input the New Employee---");
                            manager.CreateEmployee(InputForm());
                            break;
                        }
                    case MainMenuOption.Check:
                        {
                            bool editpage = true;
                            while (editpage)
                            {
                                Console.Clear();
                                Console.WriteLine("[2] Check All Employees---");
                                DisplayEmployees(manager.Employees);
                                Console.WriteLine("---------END--------");
                                Console.WriteLine("[1] Edit Employee");
                                Console.WriteLine("[2] Delete Employee");
                                Console.WriteLine("[3] Delete All Employees");
                                Console.WriteLine("[4] Sort(Name) Employees");
                                Console.WriteLine("[5] Find Employee by First Name");
                                Console.WriteLine("[6] Back to the Mainpage");
                                Console.WriteLine("[7] Exit");
 
                                EditMenuOption editmenunumber = (EditMenuOption)Int32.Parse(Console.ReadLine());
 
                                switch (editmenunumber)
                                {
                                    case EditMenuOption.Edit:
                                        {
                                            Console.Write("[Edit] which number? : ");
                                            int editnumber = Int32.Parse(Console.ReadLine());
                                            manager.EditEmployee(editnumber, InputForm());
                                            break;
                                        }
                                    case EditMenuOption.Delete:
                                        {
                                            Console.Write("[Delete] which number? : ");
                                            int deletenumber = Int32.Parse(Console.ReadLine());
                                            manager.DeleteEmployee(deletenumber);
                                            break;
                                        }
                                    case EditMenuOption.DeleteAll:
                                        {
                                            Console.Write("[Delete All] Do you want delete all?");
                                            Console.Write(" y / n : ");
                                            string delete = Console.ReadLine();
                                            if (delete == "y")
                                            {
                                                manager.DeleteAllEmployee();
                                            }
                                            break;
                                        }
                                    case EditMenuOption.Sort:
                                        {
                                            manager.Sort();
                                            break;
                                        }
                                    case EditMenuOption.Find:
                                        {
                                            Console.Write("- Name : ");
                                            List<Employee> findresult = manager.FindByName(Console.ReadLine()); 
                                            DisplayEmployees(findresult);
                                            string pause = Console.ReadLine();
                                            break;
                                        }
                                    default:
                                    case EditMenuOption.BackToMain:
                                        {
                                            editpage = false;
                                            break;
                                        }
                                    case EditMenuOption.Exit:
                                        {
                                            return;
                                        }
                                }
                            }
                            break;
                        }
                    case MainMenuOption.Save:
                        {
                            Console.WriteLine("Input File Name : ");
                            string filename = Console.ReadLine();
                            manager.SaveToFile(filename);
                            Console.WriteLine("---Done!---");
                            System.Threading.Thread.Sleep(300);
                            break;
                        }
                    case MainMenuOption.Load:
                        {
                            Console.WriteLine("Input File Name : ");
                            string filename = Console.ReadLine();
                            manager.LoadFromFile(filename);
                            Console.WriteLine("---Done!---");
                            System.Threading.Thread.Sleep(300);
                            break;
                        }
                    default:
                    case MainMenuOption.Exit:
                        return;
                }
            }
        }
 
        public static Employee InputForm()
        {
            Console.Write("- Name : ");
            string name = Console.ReadLine();
            Console.Write("- Department : ");
            string department = Console.ReadLine();
            Console.Write("- Title : ");
            string title = Console.ReadLine();
 
            return new Employee(name, department, title);
        }
 
        public static void DisplayEmployees(List<Employee> Employees)
        {
            int count = 0;
            foreach (Employee e in Employees)
            {
                Console.Write("<{0}> ", count);
                Console.WriteLine(e.GetEmployeeInformation());
                count++;
            }
        }
    }
}
 
cs


1
2
3
4
5
6
7
8
public enum MainMenuOption
{
    Newemployee = 1,
    Check,
    Save,
    Load,
    Exit
}
c  s


1
2
3
4
5
6
7
8
9
10
public enum EditMenuOption
{
    Edit = 1,
    Delete,
    DeleteAll,
    Sort,
    Find,
    BackToMain,
    Exit
}
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
using System;
namespace managementsystem
{
    class Employee
    {
        public string Department { get; private set; }
        public string Name { get; private set; }
        public string Title { get; private set; }
 
        public Employee(string name, string department, string title)
        {
            Name = name;
            Department = department;
            Title = title;
        }
 
        public string GetEmployeeInformation()
        {
            return "-Name: " + Name + " -Department: " + Department + " -Title: " + Title;
        }
 
        public static int compare(Employee a, Employee b)
        {
            return a.Name.CompareTo(b.Name);
        }
    }
}
 
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
using System;
using System.IO;
using System.Collections.Generic;
 
namespace managementsystem
{
    class EmployeeManager
    {
        public List<Employee> Employees = new List<Employee>();
 
        public void CreateEmployee(Employee newEmployee)
        {
            Employees.Add(newEmployee);
        }
 
        public void EditEmployee(int editnumber, Employee newEmployee)
        {
            Employees[editnumber] = newEmployee;
        }
 
        public void DeleteEmployee(int deletenumber)
        {
            Employees.RemoveAt(deletenumber);
        }
 
        public void DeleteAllEmployee()
        {
            Employees.Clear();
        }
 
        public List<Employee> FindByName(string name)
        {
            int count = 0;
            List<Employee> findresult = new List<Employee>();
            foreach (Employee e in Employees)
            {
                if (e.Name == name)
                {
                    findresult.Add(e);
                }
                count++;
            }
            return findresult;
        }
 
        public void Sort()
        {
            Employees.Sort(Employee.compare);
        }
 
        public void SaveToFile(string filename)
        {
            StreamWriter savefile = new StreamWriter(@"C:\temp\" + filename + ".txt");
            foreach (Employee e in Employees)
            {
                savefile.WriteLine(e.Name);
                savefile.WriteLine(e.Department);
                savefile.WriteLine(e.Title);
            }
            savefile.Close();
        }
        public void LoadFromFile(string filename)
        {
            Employees.Clear();
            StreamReader loadfile = new StreamReader(@"C:\temp\"+ filename + ".txt");
            while (loadfile.Peek() >= 0)
            {
                Employees.Add(new Employee(loadfile.ReadLine(), loadfile.ReadLine(), loadfile.ReadLine()));
                // name line, department line, title line.
            }
            loadfile.Close();
        }
    }
}
 
cs











  1. MSDN File 클래스 : https://msdn.microsoft.com/ko-kr/library/system.io.file(v=vs.110).aspx [본문으로]
  2. 엑시노아의 비공정 파일 입출력 : http://exynoa.tistory.com/154 [본문으로]

+ Recent posts