💬0 📅 7월 12, 2022
Q-Dir ? Q-Dir은 Window용 무료 다중창 파일 탐색기 입니다. 기본적으로 파일 탐색기 창이 4개 띄워져 있으며, 각각의 파일탐색기창에서 탭을 수십개 띄울 수 있기 때문에 이론상 수십개의 폴더 경로를 볼 수 있습니다. 이 밖에도 제가 가장 좋아하는 기능이 있는데, 그 기능은 바로 USB를 뽑더라도 USB안에 있는 폴더리스트들이 사라지지 않는다는 것입니다. 따라서…

Q-Dir 단축키

Q-Dir ?

Q-Dir은 Window용 무료 다중창 파일 탐색기 입니다. 기본적으로 파일 탐색기 창이 4개 띄워져 있으며, 각각의 파일탐색기창에서 탭을 수십개 띄울 수 있기 때문에 이론상 수십개의 폴더 경로를 볼 수 있습니다. 이 밖에도 제가 가장 좋아하는 기능이 있는데, 그 기능은 바로 USB를 뽑더라도 USB안에 있는 폴더리스트들이 사라지지 않는다는 것입니다.

따라서 다시 USB를 뽑았다가 다시 꽂고나서 다시 연결이 가능하기 때문에 USB를 이용하여 잦은 복사가 필요한 경우 매우 유용한 아이템입니다. 무엇보다 윈도우 파일 탐색기를 여러개 띄우지 않아도 되기 때문에 작업 공간 측면에서 매우 효율적입니다.

Q-Dir 다운로드

Q-Dir은 아래 사이트에서 다운로드 할 수 있습니다. 설치형과 포터블(Portable)이 있는데, 저 같은 경우에는 설치가 필요 없는 포터블용을 주로 사용합니다.

📌Download Link: http://softwareok.com/?Download=Q-Dir

Q-Dir 다운로드

Q-Dir 다크모드 변경

Q-Dir다크모드는 기타 > 색상과 디자인 > 검정테마를 선택하여 적용할 수 있습니다.

Q-Dir 다크모드

Q-Dir 단축키

일반적으로 폴더 탐색기에서 사용하는 단축키를 동일하게 사용할 수 있습니다. 저 같은 경우 주로 사용키를 현재 폴더 복사를 위한 주소 표시줄 집중 "Alt+S"키를 자주 이용합니다. 그리고 하나의 창이 폴더 탭을 여러개 띄울 수 있기 때문에 "Ctrl + Shfit + T - 선택한 폴더에 새탭 추가"도 자주 사용하고 있습니다. 필요한 단축키들은 아래에서 확인 할 수 있습니다.

Ctrl + X : 잘라내기

Ctrl + C : 복사하기

Ctrl + V : 붙여넣기

Ctrl + A : 전체선택

Ctrl + T : 새 탭 추가하기

Ctrl + W : 마지막 탭 닫기

Ctrl + TAB : 다음 탭

Ctrl + E : 토글 트리

Ctrl + Z : 되돌리기

Ctrl + Q : 퀵 링크 메뉴

Ctrl + M : 선택한 필터 켜기/끄기

Ctrl + N : 새 폴더 생성

Ctrl + S : 프로그램 실행

Ctrl + Num + : 열 자동 크기 조정

Ctrl + Shfit + T : 선택한 폴더에 새탭 추가

Ctrl + Shfit + A : 반전 선택

Ctrl + Shfit + TAB : 이전 탭 선택

Delete : 삭제

Backspace : 폴더를 한 수준 위로 변경

F2 : 이름 바꾸기

F3 : 파일 또는 폴더 검색

F4 : 주소 표시줄 목록을 활성화 보기로 표시

F5 : 활성창을 새로 고침

F7 : 데스크탑 메뉴를 표시

F8 : 내컴퓨터 메뉴를 표시

F11 : 전체화면 켜기/끄기

ESC : 전체화면 꺼짐

ALT + S : 주소를 집중

ALT + L : 화면 확대

ALT + V : 항목을 …로 이동

ALT + K : 항목을 …에 복사

ALT + Enter : 선택한 객체의 속성을 표시

ALT + Left : 돌아가기

ALT + Right : 계속하기

Shift + F5 : 보기 메뉴 표시

Shift + F6 : 다음 보기 모드

Shift + F10 : 선택한 항목의 바로 가기 메뉴를 표시

Shift + Delete : 휴지통에 항목을 넣지 않고 선택한 항목을 영구적으로 삭제

블로그 스팟에서 마크다운(Markdown)은 지원? 깃허브 블로그 경우 마크다운(Markdown)문법을 지원하여 매우 편리하게 포스팅일 할 수 있었습니다. 하지만 구글 블로그 스팟의 경우 마크다운(Markdown)문법을 지원하지 않고 있습니다. 블로그 스팟 에디터를 사용하다 보면 짜증나는 일들이 많습니다. 이미지를 붙여넣고 글을 쓰다보면, HTML 코드가 이상하게 되는 경우가 많…

블로그 스팟에서 마크다운(Markdown)은 지원?

깃허브 블로그 경우 마크다운(Markdown)문법을 지원하여 매우 편리하게 포스팅일 할 수 있었습니다. 하지만 구글 블로그 스팟의 경우 마크다운(Markdown)문법을 지원하지 않고 있습니다. 블로그 스팟 에디터를 사용하다 보면 짜증나는 일들이 많습니다. 이미지를 붙여넣고 글을 쓰다보면, HTML 코드가 이상하게 되는 경우가 많았기 때문입니다.

블로그 스팟에서 마크다운(Markdown)을 사용할 수 있는 방법은 없을까? 일단 블로그 스팟은 HTML Editor를 지원합니다. 따라서 MarkDown 툴을 이용하여 작성한 후에 HTML 형식으로 Export 할 수만 사용할 수 있지 않을까 해서 Typora 마크다운(Markdown) 에디터를 이용하여 테스트 해 보았습니다.

 

블로그 스팟에서 Markdown 사용하는 방법

우선 작성하고자 하는 내용을 Typora를 이용하여 마크다운(Markdown) 형식으로 작성합니다. 모두 작성 하였다면 파일 > 내보기 > HTML (Without styles)를 선택하여 내보내기 합니다.

Typora_HTML_내보내기

그리고 HTML파일을 메모장을 이용하여 열어 봅니다.

메모장 열기

Body 태그 사이에 있는 HTML 코드를 복사하여 블로그 스팟 에디터를 HTML보기로 선택한 후에 복사 붙여 넣으면 됩니다.

HTML붙여넣기

깔끔하게 잘 붙여넣어넣기가 됩니다.

성공

 

이미지 처리

이미지가 포함되었을 경우 글을 쓰기전에 이미지를 먼저 업로드 합니다.

image-20220711224455641

이미지 오른쪽 버튼을 눌러 이미지 주소를 복사하고, Typora에서 이미지 위치를 수정합니다.

image-20220711225444723

이제 다시 HTML로 내보기를 한 다음에 똑같이 Body안에 있는 코드들을 붙여 넣으면 됩니다.

 

파이썬 문자열 출력하기 출력할 때는 print라는 함수를 이용합니다. 출력할 문자열을 작은 따옴표 혹은 큰따옴표료 안에 넣으면 됩니다. 저 같은 경우에는 보통 작은 따옴표를 사용하여 파이썬에서 문자열을 출력하고 있습니다. 파이썬 주석 처리 파이썬에서는 주석 처리를 할 때 샵(#)을 사용합니다. 문장의 맨 앞에 #을 붙일 경우 주석으로 처리 되서 실행되지 않습니다. 문장의 끝에 #…

파이썬 문자열 출력하기

출력할 때는 print라는 함수를 이용합니다. 출력할 문자열을 작은 따옴표 혹은 큰따옴표료 안에 넣으면 됩니다. 저 같은 경우에는 보통 작은 따옴표를 사용하여 파이썬에서 문자열을 출력하고 있습니다.

파이썬 문자열 출력

파이썬 주석 처리

파이썬에서는 주석 처리를 할 때 샵(#)을 사용합니다. 문장의 맨 앞에 #을 붙일 경우 주석으로 처리 되서 실행되지 않습니다. 문장의 끝에 #을 추가하여 주석을 달 수도 있습니다.

여러줄의 주석을 처리 할 때 여러줄 앞에 #을 추가 하여 주석 처리를 할 수 있으나 불편합니다. 이럴 경우 큰 따옴표나 작은 따옴표를 활용하여 주석 치를 할 수 있습니다.

파이썬 주석 처리

파이썬에서 주석 처리 할 경우 주의 사항은 주석 또한 들여쓰기를 해야 된다는 것입니다. 파이썬은 기본적으로 들여쓰기가 자체가 문법으로 간주되기 때문입니다.

예를 들어 아래와 같이 주석을 달 경우 파이썬 컴파일러는 에러를 발생시킵니다. 그 이유는 if문 아래 print 함수와 동일한 들여쓰기를 하지 않았기 때문입니다.
파이썬 주석 처리

에러 내용은 "IndentationError: expected an indented block" 입니다.
IndentationError: expected an indented block

아래와 같이 수정하면 정상적으로 주석이 인식됩니다.
파이썬 주석 처리
💬0 📅 6월 19, 2022
XML이란 무엇인가? XML(eXtensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 …

XML이란 무엇인가?

XML(eXtensible Markup Language)은 W3C에서 개발된, 다른 특수한 목적을 갖는 마크업 언어를 만드는데 사용하도록 권장하는 다목적 마크업 언어이다. XML은 SGML의 단순화된 부분집합으로, 다른 많은 종류의 데이터를 기술하는 데 사용할 수 있다. XML은 주로 다른 종류의 시스템, 특히 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다. (출처: 위키백과)

즉 인터넷에 연결되 시스템끼리 데이터를 쉽게 주고 받을 수 있는 데이터 형식이므로 C#에서도 Object로 받아 오거나, XML로 출력할 수 있습니다.


실습 XML 파일

아래 XML 코드는 마이크로소프트 docs 사이트 중에 하나를 가져온 것입니다.

  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
<?xml version="1.0"?>
<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications 
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies, 
      an evil sorceress, and her own childhood to become queen 
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology 
      society in England, the young survivors lay the 
      foundation for a new society.</description>
   </book>
   <book id="bk104">
      <author>Corets, Eva</author>
      <title>Oberon's Legacy</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-03-10</publish_date>
      <description>In post-apocalypse England, the mysterious 
      agent known only as Oberon helps to create a new life 
      for the inhabitants of London. Sequel to Maeve 
      Ascendant.</description>
   </book>
   <book id="bk105">
      <author>Corets, Eva</author>
      <title>The Sundered Grail</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2001-09-10</publish_date>
      <description>The two daughters of Maeve, half-sisters, 
      battle one another for control of England. Sequel to 
      Oberon's Legacy.</description>
   </book>
   <book id="bk106">
      <author>Randall, Cynthia</author>
      <title>Lover Birds</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-09-02</publish_date>
      <description>When Carla meets Paul at an ornithology 
      conference, tempers fly as feathers get ruffled.</description>
   </book>
   <book id="bk107">
      <author>Thurman, Paula</author>
      <title>Splish Splash</title>
      <genre>Romance</genre>
      <price>4.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>A deep sea diver finds true love twenty 
      thousand leagues beneath the sea.</description>
   </book>
   <book id="bk108">
      <author>Knorr, Stefan</author>
      <title>Creepy Crawlies</title>
      <genre>Horror</genre>
      <price>4.95</price>
      <publish_date>2000-12-06</publish_date>
      <description>An anthology of horror stories about roaches,
      centipedes, scorpions  and other insects.</description>
   </book>
   <book id="bk109">
      <author>Kress, Peter</author>
      <title>Paradox Lost</title>
      <genre>Science Fiction</genre>
      <price>6.95</price>
      <publish_date>2000-11-02</publish_date>
      <description>After an inadvertant trip through a Heisenberg
      Uncertainty Device, James Salway discovers the problems 
      of being quantum.</description>
   </book>
   <book id="bk110">
      <author>O'Brien, Tim</author>
      <title>Microsoft .NET: The Programming Bible</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-09</publish_date>
      <description>Microsoft's .NET initiative is explored in 
      detail in this deep programmer's reference.</description>
   </book>
   <book id="bk111">
      <author>O'Brien, Tim</author>
      <title>MSXML3: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>36.95</price>
      <publish_date>2000-12-01</publish_date>
      <description>The Microsoft MSXML3 parser is covered in 
      detail, with attention to XML DOM interfaces, XSLT processing, 
      SAX and more.</description>
   </book>
   <book id="bk112">
      <author>Galos, Mike</author>
      <title>Visual Studio 7: A Comprehensive Guide</title>
      <genre>Computer</genre>
      <price>49.95</price>
      <publish_date>2001-04-16</publish_date>
      <description>Microsoft Visual Studio 7 is explored in depth,
      looking at how Visual Basic, Visual C++, C#, and ASP+ are 
      integrated into a comprehensive development 
      environment.</description>
   </book>
</catalog>


C# XML 파싱하기

아래의 코드는 XML파일을 XDocument 클래스를 이용하여 파싱하는 예제 입니다. books.xml이라는 파일을 읽고, XML의 Element들을 foreach 반복문을 통해 출력하며 하위 Element가 있는 경우 그 Element들을 출력합니다. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
 //using System.Xml.Linq;
XDocument xdoc = XDocument.Load(@"F:\books.xml");

IEnumerable<XElement> books = xdoc.Root.Elements();
foreach (var book in books)
{
    Console.WriteLine("-----------------------------------------------");
    Console.WriteLine("Parent Element  Name:" + book.Parent.Name);
    Console.WriteLine("Current Element Name:" + book.Name);
    Console.WriteLine("-----------------------------------------------");
    if (book.HasElements)
    {
        Console.WriteLine("-----------------------------------------------");
        foreach (var e in book.Elements())
        {
            Console.WriteLine(e.Name + " = " + e.Value);
        }
        Console.WriteLine("-----------------------------------------------");
    }
}

C# XML Object로 받아오기(Serialization)

우선 XML을 Object로 받아오기 위해는 XML에 맞는 클래스를 정의 해야 합니다. 아래와 같이 XML의 Root Element와 하위 XML Element에 대한 클래스를 정의 합니다. 하위 Element는 Root Element의 멤버 변수로 포함시키며, 이 때  List 자료구조를 이용하여 추가 합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//using System.Xml.Serialization;
[XmlRoot("catalog")]
public class BookList
{
    [XmlElement("book")]
    public List<Book> Books { get; set; }
}

public class Book
{
    [XmlElement("author")]
    public string author { get; set; }
    [XmlElement("title")]
    public string title { get; set; }
    [XmlElement("genre")]
    public string genre { get; set; }
    [XmlElement("price")]
    public string price { get; set; }
    [XmlElement("publish_date")]
    public string publish_date { get; set; }
    [XmlElement("description")]
    public string description { get; set; }

}

그리고  XmlSerializer를 이용하여 Books.xml에서 읽어온 텍스트를 바탕으로 Object로 변환합니다. 아래는 XML 문서를 Object로 변환하고 출력하능 예제입니다. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
XmlSerializer serializer = new XmlSerializer(typeof(BookList));
string allText = File.ReadAllText(@"F:\books.xml");
using (TextReader reader = new StringReader(allText))
{
    BookList bookList = (BookList)serializer.Deserialize(reader);

    foreach (var book in bookList.Books)
    {
        Console.WriteLine(book.author);
        Console.WriteLine(book.title);
        Console.WriteLine(book.genre);
        Console.WriteLine(book.price);
        Console.WriteLine(book.publish_date);
    }
}

C# XML 문서로 출력하기

아래 예제는 XDocument 클래스를 이용하여 XML 형태로 파일 저장하는 예제 입니다. Root Element를 가장 먼저 선언한후에, 이 Root Element에 하위  Element들을 추가합니다. 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
XDocument fruitDoc   = new XDocument();
XElement  fruitRoot  = new XElement("FruitList");

XElement xe1 = new XElement("Fruit",
    new XAttribute("Id", "1"),
    new XElement("Name", "Apple"),
    new XElement("Price", "1000")
);

XElement xe2 = new XElement("Fruit",
    new XAttribute("Id", "2"),
    new XElement("Name", "Banana"),
    new XElement("Price", "2000")
);

fruitRoot.Add(xe1);
fruitRoot.Add(xe2);
fruitDoc.Add(fruitRoot);

fruitDoc.Save(@"F:\Fruit.xml");
💬0 📅 6월 18, 2022
블로그 스팟이란? 구글에서 운영하는 블로그 서비스 플랫폼으로 원래 명칭은 "블로거"이지만, URL에 Blogspot으로 나오다 보니 거의 대부분 블로그 스팟이라고 부른다. 블로그 개설을 하면 [블로그이름].blogspot.com이라는 도메인을 주는데, 블로그 이름은 블로그를 생성할 때 지정한다. 구글이 만든 플랫폼 답게 전세계를 타켓으로 하다보니 이용자가 가장 …

블로그 스팟이란?

구글에서 운영하는 블로그 서비스 플랫폼으로 원래 명칭은 "블로거"이지만, URL에 Blogspot으로 나오다 보니 거의 대부분 블로그 스팟이라고 부른다. 블로그 개설을 하면 [블로그이름].blogspot.com이라는 도메인을 주는데, 블로그 이름은 블로그를 생성할 때 지정한다. 구글이 만든 플랫폼 답게 전세계를 타켓으로 하다보니 이용자가 가장 많은 블로그 서비스이다.(※자료출처: 나무 위키)


블로그 스팟을 선택한 이유

블로그 스팟은 구글에서 만든 플랫폼입니다. 전세계적으로 이용자가 가장 많은 블로그 서비스인데, 유독 우리나라에서만은 유명하지 않습니다. 네이버에서는 네이버 블로그를 최우선적으로 검색창에서 보여주며, 국내 구글 검새 결과로는 티스토리가 가장 많습니다.

나름대로 이유를 분석해보면  블로그 스팟의 경우 초보자가 접근하기 생각보다 진입장벽이 높습니다. 대표적으로 기본적인 카테고리를 지원하지 않으며, 라벨이라는 위젯을 통하여 카테고리와 비슷한 기능을 제공해야 합니다.

또한 블로그 테마(블로그 스팟에서는 스킨보다는 테마라는 용어를 자주 사용합니다.) 수정을 위해서는 HTML, CSS 뿐만아니라 JavaScript등 수준 높은 웹 지식이 요구 됩니다. 사진 편집 또한 쉬운편도 아니며, 네이버처럼 모자이크가 지원되는 것도 아닙니다.

하지만 저 같은 경우에는 웹 지식을 공부하고자 하는 목적도 있고, 구글 서비스이다 보니 언젠가 구글 검색 결과에서 조금 더 혜택을 주지 않을까 하는 희망으로 시작했습니다. 아직은 SEO에 대해서 공부도 많이 해야 겠지만, 구글 검색 결과에 상위 노출이 많이 되는 방법을 연구해 봐야 겠습니다.


블로그 스팟 스킨 선택

저는 블로그 스킨을 선택할 때 심플한 스킨을 좋아 합니다. 블로그 스팟이라는 서비스를 처음 알아보기 위해 나무 위키에서 둘러보다 한국 개발자가 만든 여러 테마들을 보게 되었습니다. 그중에서 가장 심플한 Kuzuro 스킨이 가장 마음에 들어 변경하게 되었습니다.

Kuzuro 스킨의 경우 다른 블로그 스팟의 코드의 길이는 4천줄이 넘어 가는데, Kuzuro의 경우 불필요한 부분은 버리고 필요한 내용만 추가 되었다 보니, 코드의 길이가 짧습니다. 

또한 기본적인 부분만 되어 있기 때문에 부가적인 부분이 추가하기가 쉬울것 같아 선택하게 되었습니다.일부 SEO에 조금 맞지 않은 부분이 있어 이 부분은 추가로 수정해 나갈 계획입니다.

Kuzuro 스킨 변경 방법

Kuzuro 스킨 다운로드 방법은 Kuzuro개발자의 Github에서 받으실 수 있습니다. Github 주소는 여기에서 확인 할 수 있으며, 저는 가장 최신 템플릿을 복사 하였습니다. 복사하는 방법은 템플릿 파일을 선택한 후에 복사 버튼을 누릅니다.

Kuzuro 스킨 변경

적용 방법은 블로그 스팟 > 테마 > 맞출 설정의 세모 모양을 눌러 HTML 편집을 선택한 후에 복사한 테마 템플릿 코드를 붙여 넣으면 됩니다.

블로그 스팟 테마 변경