2026년 7월 11일 토요일

기본 페이지 - 복사용

마크다운 코드 박스 (가독성 최적화 스킨)




마크다운 소스 코드 표시용 HTML

1. 마크다운 소스 코드 표시용 HTML

# 1단계 제목 (H1)
## 2단계 제목 (H2)

일반 본문 텍스트입니다. **굵은 글씨**는 별표 2개로 감쌉니다.
이것은 *기울임꼴* 또는 _이탤릭체_ 표현입니다.

### 핵심 체크리스트
- [ ] 첫 번째 할 일
- [x] 완료된 일 항목

### 순서 없는 목록
* 가나다
* 마바사
  * 하위 항목 스페이스 2칸

### 하이퍼링크 및 이미지 연결
[구글 바로가기](https://google.com)
![이미지 설명 예시](https://example.com)

> 이곳은 인용문을 작성하는 공간입니다.
Markdown Backup Source


# 1단계 제목 (H1)
## 2단계 제목 (H2)

일반 본문 텍스트입니다. **굵은 글씨**는 별표 2개로 감쌉니다.
이것은 *기울임꼴* 또는 _이탤릭체_ 표현입니다.

### 핵심 체크리스트
- [ ] 첫 번째 할 일
- [x] 완료된 일 항목

### 순서 없는 목록
* 가나다
* 마바사
  * 하위 항목 스페이스 2칸

### 하이퍼링크 및 이미지 연결
[구글 바로가기](https://google.com)
![이미지 설명 예시](https://example.com)

> 이곳은 인용문을 작성하는 공간입니다.



 여기에 작성하신 마크다운 원본을 그대로 붙여넣으세요.
 
 # 1단계 제목
 ```python
 def backup():
     print("마크다운 원본 유지")
 ```
 [링크 주소](https://example.com)

Markdown Backup Source


# 깃허브 업로드용 백업
## 프로젝트 개요
```python
import os
print("Hello Backup")
```
- [x] 테스트 완료
- URL: https://github.com

Markdown Backup Source


# 깃허브 업로드용 백업
## 프로젝트 개요
```python
import os
print("Hello Backup URL Check")
```
- [x] 테스트 완료
- URL: https://github.com

HTML Source Code Backup
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>테스트 레이아웃</title>
</head>
<body>
    <div class="main-box">
        <h1>이 영역에 백업할 HTML을 그냥 넣으시면 됩니다</h1>
        <p>https://example.com 주소도 절대 잘리지 않습니다.</p>
    </div>
</body>
</html>

구글 검색 상위 노출을 위한 핵심 SEO 글쓰기 전략

구글 검색 상위 노출을 위한 핵심 SEO 글쓰기 전략

구글 블로그(Blogger)에서 글을 쓸 때 단순히 텍스트만 나열하면 상위 노출을 기대하기 어렵습니다. 구글 검색 로봇이 본문의 구조를 완벽하게 파악하고 점수를 부여할 수 있도록 **최적화된 HTML 태그와 CSS 구조**를 적용해야 검색 결과 첫 페이지에 위치할 확률이 높아집니다.

💡 핵심 요약 선행 안내
  • 구글 봇은 계층 구조(H2 ➔ H3 ➔ H4)가 명확한 글에 높은 가산점을 줍니다.
  • 이미지에는 반드시 시각 장애인 및 AI 봇을 위한 Alt 설명 태그가 들어가야 합니다.
  • 신뢰도 높은 외부 링크와 블로그 내부 링크는 도메인 점수를 높입니다.

1. 구글 알고리즘이 선호하는 구조화 태그(Heading)

본문의 목차를 구성할 때는 반드시 제목 태그의 순서를 지켜야 합니다. 대주제는 <h2>, 그 아래 소주제는 <h3>를 사용하여 글의 흐름을 계층적으로 제어합니다. 순서가 뒤죽박죽 섞이면 구글 봇이 글의 전문성을 의심하여 감점 요인이 됩니다.

노트북 화면에 구글 검색 엔진 최적화 분석 그래프와 검색 순위 데이터가 표시되어 있는 모습

▲ 올바른 이미지 Alt 태그와 CSS 스타일이 적용된 예시

2. 클릭률을 높이는 링크 및 강조 처리법

본문 중간에 중요한 단어는 <strong> 태그로 시각적/구조적 강조를 처리하고, 연관성이 높은 고품질의 외부 문서나 내 블로그의 다른 글을 하이퍼링크로 연결해 줍니다. 이는 크롤러 봇이 내 블로그 내에 오래 머물며 더 많은 페이지를 수집(색인)하도록 돕는 역할을 합니다.


결론: 꾸준한 HTML 표준 준수가 상위 노출을 만듭니다

결국 구글 최적화의 핵심은 "컴퓨터(구글 봇)와 인간(독자) 모두에게 읽기 편한 글"을 만드는 것입니다. 위 HTML 양식을 기본 템플릿으로 저장해 두고 글을 쓸 때마다 활용하여 구글 서치콘솔에 빠르게 색인을 요청해 보세요.

2011년 3월 29일 화요일

2011년 3월 25일 금요일

Qt 4.72

configure -platform win32-msvc2010
SET QTDIR=C:\Qt\4.7.2
QMAKESPEC=win32-msvc2010

2011년 3월 23일 수요일

Creating a WXWidgets template in XCode


Apple appears to be encouraging people to move toward Cocoa and stop using Carbon.  wxCocoa is in pretty good shape so I've stopped using wxCarbon a few months ago.
Here's how I build the library:
# Build the library for Cocoa

rm -rf build-cocoa-debug
mkdir build-cocoa-debug
cd build-cocoa-debug
../configure --enable-unicode --enable-debug --disable-shared
--with-osx_cocoa
make;cd ..

# Build the samples and demos
cd build-cocoa-debug/samples; make;cd ../..
cd build-cocoa-debug/demos;   make;cd ../..

# Use Finder to run some of the samples to prove to yourself they work
# Then copy one of the samples to your own directory and compile it like
this
  Create an empty directory
  Add the source code files *.h, *.cpp, etc.
  You may also need sample.xpm if it is included in your main .cpp file
  Start XCode
  File, New Project...
  Application, Cocoa Application
  Next
  Set Project Name
  Set Project Directory to be the directory with the source code files.
  Finish
  The project window should appear
  Highlight main.m and delete it
  Change the configuration from "Release" to "Debug"
  Project, Add To Project...
  Highlight all of the .cpp files in the directory
  Add, Add
  Open a terminal window
cd wx/build-cocoa-debug
    ./wx-config --cxxflags   
    ./wx-config --libs
    
It is critical that you use ./wx-config not wx-config in those two
lines.
    You will copy the output of those two lines into Xcode in the next
steps.
  Go back to Xcode
  Click the "info" icon (blue circle with white i)
  Choose the "Build" tab
  Set the Configuration to "Debug"
  Set Show to "All Settings"
  In the Linking section,
    Uncheck ZeroLink
    Set Other Linker Flags to the output of --libs from the terminal window
  In the GCC Code Generation Section
    Uncheck Inline Methods Hidden
    Uncheck Symbols Hidden by Default
    Set Other C Flags to the output of --cxxflags from the terminal window
  In the Packaging section
    Set Product Name to a suitable name
  Close the configuration window
  Return to the project window
  Click Build and Go icon (green circle with hammer)
Thanks,

2011년 3월 22일 화요일

GLnode.cpp

// GLnode.cpp : Defines the entry point for the console application.
//

// test LLVM 2.0 
#include 

#include 
#include 
#include 

#ifndef SAFE_DELETE_VECTOR
#define SAFE_DELETE_VECTOR(x) { for(size_t __i__(0); __i__ < x.size(); ++__i__) delete(x.at(__i__)); x.clear(); }
#endif

template 
class GLvector : public std::vector {
public:
 inline void remove(T t)
 {
    typename std::vector::iterator pos = std::find(std::vector::begin(), std::vector::end(), t);
  if (pos != std::vector::end())
   erase(pos);
 }
};

template 
class GLvectorF : public GLvector {
 class _find_if_pred {
 private:
  std::string _name;
    
 public:
  _find_if_pred(const std::string& name)
    : _name(name)
  {
  }
  template 
  bool operator()(const TT* tt)
  {
   return ((_name.compare(tt->_name)) == 0);
  }
 };
  
public:
 int find(const std::string& name)
 {
  typename std::vector::iterator pos = std::find_if(std::vector::begin(), std::vector::end(), _find_if_pred(name));
  if (pos != std::vector::end())
   return (pos - std::vector::begin());
    
  return -1;
 }

  //if (pos != end())
 T& find_ptr(const std::string& name)
 {
  typename std::vector::iterator pos = std::find_if(std::vector::begin(), std::vector::end(), _find_if_pred(name));
  return *pos;
 }
 const T& find_ptr(const std::string& name) const
 {
  typename std::vector::const_iterator pos = std::find_if(std::vector::begin(), std::vector::end(), _find_if_pred(name));
  return *pos;
 }
};

class GLnode {
 class _for_each_pred {
 public:
  _for_each_pred(float time)
    : _time(time)
  {
  }
    
  template 
  void operator()(T& t) const
  {
   t->_update(_time);
  }
  float _time;
 };
  
public:
 GLnode()
 {
 }
 GLnode(const std::string& name)
  : _name(name)
 {
 }
 virtual ~GLnode()
 {
    SAFE_DELETE_VECTOR(_vec);
 }
  
 virtual void update(float time)
 {
  std::for_each(_vec.begin(), _vec.end(), _for_each_pred(time));
 }
  
protected:
 virtual void _update(float time) const
 {
    
 }
  
 /// attribute
public:
 std::string _name;
  
 /// operation
public:
  GLvectorF _vec;
};

char* itoa(int val, int base)
{
  static char buf[32] = {0};
  int i = 30;
  for(; val && i ; --i, val /= base)
    buf[i] = "0123456789abcdef"[val % base];
  return &buf[i+1];
} 

int main (int argc, const char * argv[])
{

  // insert code here...
  std::cout << "Hello, World!\n";
  
 GLnode _node;
  
 for (int i=0; i<10; i++)
 {
  char* ib = itoa(i, 10);
  _node._vec.push_back(new GLnode(ib));
 }
  
 int index = _node._vec.find("9");
  if (index != -1)
  {
    const GLnode* at = _node._vec.at(index);
    std::cout << "at= " << at->_name << std::endl;
  }
  
 const GLnode* ptr = _node._vec.find_ptr("9");
  if (ptr != *_node._vec.end())
    std::cout << "ptr= " << ptr->_name << std::endl;
  
 size_t size = _node._vec.size();
  std::cout << "size= " << size << std::endl;
  
 const GLnode* begin = *_node._vec.begin();
 const GLnode* end = *_node._vec.end();
  
  return 0;
}

기본 페이지 - 복사용

마크다운 코드 박스 (가독성 최적화 스킨)