컴파일은 ANSI/ISOC99 를 (대부분) 지원하는 C 컴파일러 

         GCC 컴파일러 또는 LCC 컴파일러 (또는 기타 컴파일러)

를 쓰면 됩니다.

Visual C++ 2010 은 ANSI/ISOC99 를 지원하지 않습니다.

[참고] ANSI/ISOC99 (Wikipedia)

 

// Filename: testComplexISOC99.c
//
// Compile & Link: gcc -o  testComplexISOC99  testComplexISOC99.c
// Execute: ./testComplexISOC99
//
// Or
//
// Compile & Link: lc testComplexISOC99.c
// Execute: testComplexISOC99
//
// Or
//
// Compile: lcc -o testComplexISOC99.obj testComplexISOC99.c
// Link: lcclnk testComplexISOC99.obj
// Execute: testComplexISOC99


#include <stdio.h>
#include <complex.h>

int main(int argc, char** argv)
{
 float complex z1 = 3.0 + 4.0i;
 float complex z2 = 2.0 - 1.0i;
 float complex z3 = z1 + z2;
 float complex z4 = z1 - z2;
 float complex z5 = z1 * z2;
 float complex z6 = z1 / z2;
 float complex z7 = conjf(z1);
 // float arg = cargf(z1);
 float arg = carg(z1);     // for :CC-win32

    printf("z1 = %f + %fj\n", crealf(z1), cimagf(z1));
    printf("z2 = %f + %fj\n", crealf(z2), cimagf(z2));
    printf("So,\n");
    printf("z3 = z1 + z2 = %f + %fj\n", crealf(z3), cimagf(z3));
    printf("z4 = z1 - z2 = %f + %fj\n", crealf(z4), cimagf(z4));
    printf("z5 = z1 * z2 = %f + %fj\n", crealf(z5), cimagf(z5));
    printf("z6 = z1 / z2 = %f + %fj\n", crealf(z6), cimagf(z6));

    printf("z7 = conjf(z1) = %f + %fj\n", crealf(z7), cimagf(z7));
    // printf("arg = cargf(z1) = %f\n", arg);
    printf("arg = carg(z1) = %f\n", arg);  // for LCC-win32

    return 0;
}

/*
-------------------
Result of execution:
-------------------
z1 = 3.000000 + 4.000000j
z2 = 2.000000 + 1.000000j
So,
z3 = z1 + z2 = 5.000000 + 5.000000j
z4 = z1 - z2 = 1.000000 + 3.000000j
z5 = z1 * z2 = 2.000000 + 11.000000j
z6 = z1 / z2 = 2.000000 + 1.000000j
z7 = conjf(z1) = 3.000000 + -4.000000j
arg = carg(z1) = 0.927295
*/

 

 

 

Posted by Scripter
,

명령 프롬프트에서 ipy 명령 또는 ipy64 에  의한 초기 메시지입니다.

(메시지를 보시면 IronPython 버전 및 동작되는 .NET 프레임워크 버전을 알 수 있습니다).

 

* 버전 2.6.1

IronPython 2.6.1 (2.6.10920.0) on .NET 2.0.50727.4963
Type "help", "copyright", "credits" or "license" for more information.
>>>


 

* 버전 2.6.2

IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

* 버전 2.6.2 (아래는 ipy64로 실행했는데, ipy로 실행한 것과 똑 같은 메시지입니다.) 

* (import sys 하여 sys.version 으로 확인해도 64bit 용인지 아닌지 알려주지 않습니다.)

* (sys.executable 로는 겨우(?) 실행파일과 경로가 확인됩니다,)

IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version
'2.6.1 (IronPython 2.6.2 (2.6.10920.0) on .NET 4.0.30319.239)'

>>> sys.executable
'c:\\ironpython27\\ipy64.exe'
 

 

* 버전 2.7.2.1  (이것은 버전 2.7.2 의 버그 제거 버전입니다.)

IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.

 

* 버전 2.7.2.1 (아래는 ipy64 명령으로 실행한 것입니다.)

IronPython 2.7.2.1 (2.7.0.40) on .NET 4.0.30319.239 (64-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>>

Posted by Scripter
,

아래의 C# 소스는 Visual Studio 2010의 명령프롬프트를 영어서 컴파일하고. IronPython 소스는 병도의 명령창을 열어서 IronPuthon 이 설치된 폴더의 경로와 csgufudan.dll 파일이 있는 퐁더의 경로를 명령창의 환경변수 PATH에 잡아주고, IronPython의 ipy 명령으로 실행합니다,

 

* C# 소스

// Filename: csgugudan.cs
//         a library for IronPython
//
// Compile: csc /debug+ /target:library csgugudan.cs
// Execute: ipy callGugudan.py

using System;
using System.Collections;

public class Gugudan : IEnumerable {

    private int dan;
    private int last;

    public Gugudan(int dan, int last) {
        this.dan = dan;
        this.last = last;
    }

    public override string ToString() {
       return string.Format("Gugudan: {0,2} x {1,2} = {2,3}", dan, last, dan*last);
    }

    public IEnumerator GetEnumerator() {
        for (int i = 1; i <= last; i++) {
            yield return new Gugudan(dan, i);
        }
    }
}

 

* IronPython 소스

# Filename: callGugudan.py
#      Load a dll library created by C#
#
# Execute: ipy callGugudan.py

import clr
clr.AddReferenceToFile("csgugudan.dll")
import Gugudan
g = Gugudan(19, 10)
for i in g: print i

 

* 다음은 실행 결과입니다.

Gugudan: 19 x  1 =  19
Gugudan: 19 x  2 =  38
Gugudan: 19 x  3 =  57
Gugudan: 19 x  4 =  76
Gugudan: 19 x  5 =  95
Gugudan: 19 x  6 = 114
Gugudan: 19 x  7 = 133
Gugudan: 19 x  8 = 152
Gugudan: 19 x  9 = 171
Gugudan: 19 x 10 = 190

 

 

Posted by Scripter
,

지난 3월에 발표된 IronPython 2.7.2.1 을 설치하고 명령창에서 ipy 를 실행핶는데, 다음의 에러 메시지를 내고는 실행되지 않는다. ipyw 도 실행되지 않는디.

Failed to load language 'PythonContext': 메서드를 찾을 수 없습니다. '!!1[] Microsoft.Scripting.Utils.ArrayUtils.ConvertAll(!!0[], System.Func`2<!!0,!!1>)'

이럴 때는 설치된 IronRuby 를 제거한다. 그러면 IronPython이 잘 실행된다.

(아마도 IronPython과 IronRuby가 충동하는 둣...)

 

Posted by Scripter
,

CodeBehind = ASP.NET 처음부터 있던 것. 이는 실행되기 이전에 먼저 컴파일되어야 하며, 컴파일되면 *.dll 파일은 bin 폴더에 생성된다. 배포(deploy)하기 전에 반드시 먼저 Visual Studio에서 컴파일되어야 한다. 고객에게 소스를 제공하고 싶지 않을 때는 CodeBehind을 사용한다. 배포할 때는 *.aspx 파일과 *.dll 파일, Web.config 파일 등(*.aspx.cs 파일과 *.aspx.vb 파일은 제외)만 제공하면 된다.

CodeFile = ASP.NET 2.0 부터 등장한 것. 개발한 것을 배포할 때는 소스 파일(*.aspx.vb 또는 *.aspx.cs 파일)도 함께 (*.dll 파일은 불포함) 제공해야 한다. ASP.NET 2.0 런타임이 필요시 마다 스스로 알아서 컴파일하며, 컴파일된 *.*.dll 파일은 C:\윈도우즈폴더\Microsfot.NET[.NET version]\Temporary ASP.NET Files 에 생성된다. (예: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files )

 

* 비주얼 스튜디오(Visual Studio)에서 새로 작성할 때, 메뉴에서

         "새로 만들기(N)" -->"웹 사이트(W)..." --> "ASP.NET 웹 사이트" 

하면 생성된 *.aspx 파일이 CodeFile="..." 선언으로 작성되어 있고,

       "새로 만들기(N)" --> "프로젝트(P)..." -->  --> "ASP.NET 웹 응 용프로그램"

하면 생성된 *.aspx 파일이 CodeBehind="......" 선언으로 작성되어 있다.

개발을 시작할 때 웹사이트(WebSite)로 하였더라도, 차후에 모든 CodeFile="...." 선언을 CodeBehind="...." 선언으로 바꾸어 주고, 클래스 선언에 있던 partial 을 떼고, designer 파일에 있던 웹 컨트롤 선언(버튼 선언, 레이블 선언 등)들을 *.aspx.cs 파일(또는 *.aspx.vb 파일) 안으로 복사한 후 별도로 컴파일하면, 웹응용프로그램으로 바꾸어 배포할 수도 있다.

 

 

Posted by Scripter
,
svg 파일이 그림으로 열리지 않고 그냥 텍스트로 열리는 경우에는
Web.config 파일의 system.webServer 태그 부분에
다음 처럼 mimeTtype 을 인식시켜 주면 됩니다
(IIS 에서 그런 현상이 있을 때도 마찬가지로...)

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
    </staticContent>
  </system.webServer>

Posted by Scripter
,
\begin{cases}를 이용한 연립방정식 표현
\parstyle 연립방정식 $\begin{cases} x + 2000y - 500z= 1 \\ 90000x - 1000y + z = 2000 \\ 7x - 8y + 3z = -3 \end{cases}$ 을 푸시오.


systeme 패키지를 이용한 연립방정식 표현
\parstyle \usepackage{systeme} 연립방정식 \systeme{x + 2000y - 500z= 1, 90000x - 1000y + z = 2000 , 7x - 8y + 3z = -3 } 을 푸시오.

※ texdoc systeme 명령을 내리면 (불어로 된) systeme 사용 설명서를 볼 수 있습니다.



Posted by Scripter
,
mathkotex 으로 레이텍(LaTeX)의 TikZ 패키지를 사용하여 프랙탈 이미지 출력 테스트입니다.
(아래의 이미지는 TikZ 패키지를 사용하여 생성되었습니다.
text 태그로 둘러싸인 부분에서
\pdf
대신에
\documentclass{article}
로 바꾸면, textlive 2011 이 설치된 시스템에서 pdflatex 명령으로 컴파일해도 됩니다.)

\pdf \usepackage{pgf} \usepackage{tikz} \usetikzlibrary{decorations} \usetikzlibrary{decorations.fractals} \usetikzlibrary{lindenmayersystems} \begin{document} \begin{tikzpicture}[decoration=Koch curve type 1] \draw decorate{ (0,0) -- (3,0) }; \draw decorate{ decorate{ (0,-1.5) -- (3,-1.5) }}; \draw decorate{ decorate{ decorate{ (0,-3) -- (3,-3) }}}; \end{tikzpicture} \end{document}




<tex> \pdf \usepackage{pgf} \usepackage{tikz} \usetikzlibrary{decorations} \usetikzlibrary{decorations.fractals} \usetikzlibrary{lindenmayersystems} \begin{document} \begin{tikzpicture}[decoration=Koch curve type 1] \draw decorate{ (0,0) -- (3,0) }; \draw decorate{ decorate{ (0,-1.5) -- (3,-1.5) }}; \draw decorate{ decorate{ decorate{ (0,-3) -- (3,-3) }}}; \end{tikzpicture} \end{document} </tex>

라고 입력하면 위의 저 그림이 출력됩니다.

그렇게 하기 위해서는 HTML 문서에 당연히
<script type="text/javascript" src="http://www.ezsolver.co.kr/mathkotex_tag.js"> </script>
를 추가해야 합니다. 아니면 더 기억하기 쉬운 자바스크립트 URL 주소
<script type="text/javascript" src="http://www.mathkotex.com/mathkotex_tag.js"> </script>
를 추가해도 됩니다.



Posted by Scripter
,
좀 오래된 폰트이지만 유니코드를 지원하므로 다국어 문서를 만들 때 필요한 폰트입니다.

위의 압축파일을 풀어서 나오는 CODE2000.TTF 파일을 C:\Windows\Fonts 폴더에 갖다 놓으면 TeX에서 바로 쓸 수 있습니다.


* XeLaTeX 으로 컴파일되는 예제 소스
  (소스는 반드시 utf-8 인코딩으로 저장되어야 합니다.)

% use article styling for this document

% Modified from: http://wiki.xelatex.org/doku.php?id=basic_document

\documentclass{article}

% enable system font access

\usepackage{fontspec}

% styling: Palatino (main text), Helvetica (stress), Code2000 (exotic text) and Asana Math (for math things)

\setmainfont{Palatino Linotype}

\newfontfamily{\maintext}{Palatino Linotype}

\newfontfamily{\stressed}{Helvetica}

\newfontfamily{\exotic}{Code2000}

\newfontfamily{\math}{Asana Math}

% start of actual document

\begin{document}

This is a basic XeLaTeX document, which will be processes using the {\stressed xelatex} program.

This means that as long as the document source is in {\stressed UTF-8} encoding,

XeLaTeX {\stressed doesn't care} what you actually wrote.

For instance, we can write in English, or in Korean ({\exotic 한글}), Japanese ({\exotic 日本語}), or in Thai

({\exotic ภาษาไทย}), or in Vietnamese ({\exotic tiếng Việt}), or any other number of languages.

It can even be used for non-languages that are in {\stressed Unicode},

such as mathematical operators (like {\math √ {\maintext and} ∞}). % maintext inside math!

\end{document}





* 위의 소스를 XeLaTeX 으로 컴파일하여 만든 PDF 파일: 




* XeLaTeX 으로 컴파일되는 예제 소스 (section 적용)
  (소스는 반드시 utf-8 인코딩으로 저장되어야 합니다.)

% use article styling for this document

% Modified from: http://wiki.xelatex.org/doku.php?id=basic_document

\documentclass{article}

% enable system font access

\usepackage{fontspec}

% styling: Palatino (main text), Helvetica (stress), Code2000 (exotic text) and Asana Math (for math things)

\setmainfont{Palatino Linotype}

\newfontfamily{\maintext}{Palatino Linotype}

\newfontfamily{\stressed}{Helvetica}

\newfontfamily{\exotic}{Code2000}

\newfontfamily{\math}{Asana Math}

% start of actual document

\begin{document}

\section{XeLaTeX documents}

XeLaTeX documents, which are processed using the {\stressed xelatex} program, use

document source that is in {\stressed UTF-8} encoding, so that you are free to write

in any script that is supported by {\stressed Unicode}.

\section{multilingual text}

Multilingual text is relatively simple in XeLaTeX (when compared to other versions of

TeX), while still leaving you in total control of the styling (compared to word

processing programs like Microsoft Word or OpenOffice Writer)

\subsection{English}

English text is fairly obvious. We pick a main font that supports ascii and we're done!

\subsection{Other languages}

Languages that don't use the "Latin" script are also not a problem, provided we remember to change

to the correct {\stressed font}. For instance, we can write in Korean ({\exotic 한국어}), or in Japanese ({\exotic 日本語}), or in Thai ({\exotic ภาษาไทย}), or in Vietnamese ({\exotic tiếng Việt}), or any other number of languages.

\subsection{Automatic font switching}

XeLaTeX even lets you set up automatic font switching, but it's a bit more work because you need

to tell it which fonts to use for which letters, so most people wouldn't consider it basic functionality.

\section{Sectioning}

We can also section our document so that it's easier for the reader to read through. This document

consists of three sections, of which the second section has three subsections.

\end{document}





* 위의 소스를 XeLaTeX 으로 컴파일하여 만든 PDF 파일: 






Posted by Scripter
,

피타고라스 정리(Pythagorean Theorem)
직각을 낀 두 변의 길이가 a, b인 직각삼각형의 빗변의 길이가 c이면,


         a^2 + b^2 = c^2


이다.



증명은 아래의 하이퍼 링크를 따라가세요.

        피타고라스 정리(Pythagorean Theorem)를 증명하는 애니메이션



'프로그래밍 > SVG' 카테고리의 다른 글

WebMatrix 에서 svg 파일이 텍스트로 열리는 경우  (0) 2012.03.20
Posted by Scripter
,