Wednesday, December 16, 2015

[C# 초보 강좌] 예제로 배우는 C# 01


예제로 배우는 C# 첫번째 강좌입니다.
책을 봐도 잘 모르시겠다는 분들이나, 개념은 알겠는데 막상 프로그램을 못하시는 분들을 위한 강좌입니다.

비주얼 스튜디오를 깔고 Hello C# 프로그램을 통해서 기본 구조를 익히겠습니다.
전체 설명은 아래 YouTube를 참조하시고 코드 부분만 밑에 넣도록 하겠습니다.




HelloCSharp.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloCSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello C#");
            Console.WriteLine("Hello " + args[0]);

            Console.ReadKey();
        }
    }
}



Tuesday, December 8, 2015

[C# 강의 중급] 라이브러리를 만들자 04 - 확장 메소드


C# 라이브러리를 만들자 네번째 강의입니다.
자신의 라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하 것과 같다고 생각합니다.

오늘은 String과 DateTime에 Extension Methods를 추가하는 클래스를 만들어 라이브러리에 넣도록 하겠습니다.
전체 설명은 아래 YouTube를 참조하시고 코드 부분만 밑에 넣도록 하겠습니다.









BabyCarrot.Extensions.StringExtensions
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BabyCarrot.Extensions
{
    public static class StringExtensions
    {
        #region Methods
        public static bool IsNumeric(this string s)
        {
            long result;
            return long.TryParse(s, out result);
        }

        public static bool IsDateTime(this string s)
        {
            if (String.IsNullOrEmpty(s))
            {
                return false;
            }
            else
            {
                DateTime result;
                return DateTime.TryParse(s, out result);
            }
        }
        #endregion
    }
}



BabyCarrot.Extensions.DateTimeExtensions
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BabyCarrot.Extensions
{
    public static class DateTimeExtensions
    {
        #region Methods
        public static DateTime FirstDateOfMonth(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, 1);
        }

        public static DateTime LastDateOfMonth(this DateTime date)
        {
            return new DateTime(date.Year, date.Month, DateTime.DaysInMonth(date.Year, date.Month));
        }
        #endregion
    }
}



Monday, December 7, 2015

[C# 강의 중급] 라이브러리를 만들자 03 - Log Manager 확장


C# 라이브러리를 만들자 세번째 강의입니다.
자신의 라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하 것과 같다고 생각합니다.

이전 강의에서 만들었던 LogManager Class를 몇 개의 Option을 이용해서 확장해 보겠습니다.
전체 설명은 아래 YouTube를 참조하시고 코드 부분만 밑에 넣도록 하겠습니다.








BabyCarrot.Tools.LogManager
using System;
using System.IO;

namespace BabyCarrot.Tools
{
    public enum LogType { Daily, Monthly }


    public class LogManager
    {
        private string _path;


        #region Constructors
        public LogManager(string path, LogType logType, string prefix, string postfix)
        {
            _path = path;
            _SetLogPath(logType, prefix, postfix);
        }

        public LogManager(string prefix, string postfix)
            : this(Path.Combine(Application.Root, "Log"), LogType.Daily, prefix, postfix)
        {

        }

        public LogManager()
            : this(Path.Combine(Application.Root, "Log"), LogType.Daily, null, null)
        {
        }
        #endregion


        #region Methods
        private void _SetLogPath(LogType logType, string prefix, string postfix)
        {
            string path = String.Empty;
            string name = String.Empty;

            switch (logType)
            {
                case LogType.Daily:
                    path = String.Format(@"{0}\{1}\", DateTime.Now.Year, DateTime.Now.ToString("MM"));
                    name = DateTime.Now.ToString("yyyyMMdd");
                    break;
                case LogType.Monthly:
                    path = String.Format(@"{0}\", DateTime.Now.Year);
                    name = DateTime.Now.ToString("yyyyMM");
                    break;
            }

            _path = Path.Combine(_path, path);
            if (!Directory.Exists(_path))
                Directory.CreateDirectory(_path);

            if (!String.IsNullOrEmpty(prefix))
                name = prefix + name;
            if (!String.IsNullOrEmpty(postfix))
                name = name + postfix;
            name += ".txt";

            _path = Path.Combine(_path, name);
        }

        public void Write(string data)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(_path, true))
                {
                    writer.Write(data);
                }
            }
            catch (Exception ex)
            { }
        }

        public void WriteLine(string data)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(_path, true))
                {
                    writer.WriteLine(DateTime.Now.ToString("yyyyMMdd HH:mm:ss\t") + data);
                }
            }
            catch (Exception ex)
            { }
        }
        #endregion
    }
}



[C# 강의 중급] 라이브러리를 만들자 02 - Log Manager


C# 라이브러리를 만들자 두번째 강의입니다.
자신의 라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하 것과 같다고 생각합니다.

Log를 파일에 기록하는 LogManager Class를 라이브러리에 추가합니다.
전체 설명은 아래 YouTube를 참조하시고 코드 부분만 밑에 넣도록 하겠습니다.






BabyCarrot.Tools.LogManager
using System;
using System.IO;

namespace BabyCarrot.Tools
{
    public class LogManager
    {
        private string _path;


        #region Constructors
        public LogManager(string path)
        {
            _path = path;
            _SetLogPath();
        }

        public LogManager()
            : this(Path.Combine(Application.Root, "Log"))
        {
        }
        #endregion


        #region Methods
        private void _SetLogPath()
        {
            if (!Directory.Exists(_path))
                Directory.CreateDirectory(_path);

            string logFile = DateTime.Now.ToString("yyyyMMdd") + ".txt";
            _path = Path.Combine(_path, logFile);
        }

        public void Write(string data)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(_path, true))
                {
                    writer.Write(data);
                }
            }
            catch (Exception ex)
            { }
        }

        public void WriteLine(string data)
        {
            try
            {
                using (StreamWriter writer = new StreamWriter(_path, true))
                {
                    writer.WriteLine(DateTime.Now.ToString("yyyyMMdd HH:mm:ss\t") + data);
                }
            }
            catch (Exception ex)
            { }
        }
        #endregion
    }
}



Saturday, December 5, 2015

How to setup syntax highlighter on blogger


We are going to use SyntaxHighlighter to highlight codes.
It's quite simple and easy but if you want to use the 'Dynamic Views' Template on Blogger, then you need a simple trick.


1. First, back up your current template.
    If something goes wrong, you can restore the original template anytime.


2. Open your template in 'Edit HTML' mode.


3. Copy and paste the following code right before </head>  tag.
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>

<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushDelphi.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJava.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPhp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushRuby.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushVb.js' type='text/javascript'/>


4. If you are NOT using 'Dynamic Views' template,
    then copy and paste the following code just before </body> tag.

<script language='javascript'>
    SyntaxHighlighter.config.bloggerMode = true;
    SyntaxHighlighter.all();
</script>


5. Save template.


6. Now you are ready to use SyntaxHighlighter with <pre></pre> tag.
    Escape '<' and '>' to '&lt;' and '&gt;' in your code to highlight.
    Change class name depending on the code between pre tags.
    For html, xml, xhtml, xslt, <pre class='brush: html'>.
    For c# <pre class='brush: csharp'>.
    You can find more here.
<pre class="brush: html">
    &lt;div&gt;html div tag&lt;/div&gt;
</pre>

<pre class="brush: csharp">
    function void csharpFunction()
    {
        return;
    }
</pre>


7. If you are using 'Dynamic Views' template, copy and paste the following code at the bottom of every page in 'HTML' edit mode.
<script type="text/javascript">
$(document).ready(function () {
    $("pre").each(function () {
        SyntaxHighlighter.highlight(undefined, this);
    });
});
</script>



Friday, December 4, 2015

[C# 강의 중급] 라이브러리를 만들자 01


C# 라이브러리를 만들자 첫번째 강의입니다.
자신의 라이브러리를 구축하는 것은 프로그래머로서 재산을 축적하 것과 같다고 생각합니다.

전체 설명은 아래 YouTube를 참조하시고 코드 부분만 밑에 넣도록 하겠습니다.





BabyCarrot.Tools.Application
using System;

namespace BabyCarrot.Tools
{
    public static class Application
    {
        #region Properties
        // 현재 실행된 Application이 위치한 폴더
        public static string Root
        {
            get
            {
                return AppDomain.CurrentDomain.BaseDirectory;
            }
        }
        #endregion
    }
}