# OS
1. WIndows 10
- c# console hexa code(IDE:editor,Compiler:csc)

frm_hexa_3.cs
0.01MB



- c# window form hexa code(IDE:Visual Studio)

APINFQ0020.cs
0.02MB


- c,c++ console hexa code(IDE:editor,Compiler:gcc)

mainsrc.c
0.00MB
common.h
0.00MB
wincommon.c
0.01MB


- c,c++ window form hexa code(IDE:Visual Studio)

winmainsrc.c
0.01MB
wincommon.h
0.00MB
wincommon.c
0.01MB


- pascal window form hexa code(IDE:DELPHI) 
- javascript web-browser hexa code(IDE:editor)

____real_fast_no_ajax_hexa.html
0.02MB


- java console hexa code(IDE:editor,Compiler:javac)

 

2. Linux(Ubuntu,Centos)
- c,c++ console hexa code(IDE:editor,Compiler:gcc,실행도구:telnet terminal)
- javascript web-browser hexa code(IDE:editor,실행도구:desktop mode)

3. Windows 10 + Linux was(tomcat)
- javascript web-browser network hexa code(feat. AJAX)

# Compiler
1. windows 10 c# console - csc(freeware)
2. windows 10 c# form - visual studio(freeware at private, but company is not free)

3. windows 10 c,c++ console - gcc(freeware)
4. windows 10 c,c++ form - visual studio(freeware at private, but company is not free)

5. windows 10 pascal form - DELPHI (freeware at private, but company is not free)
6. windows 10, Linux javascript - web-browser is OK

 

 

Question into xterm92@naver.com

'헥사' 카테고리의 다른 글

Systehttp://m.Drawing.Color[] colorindex = new Systehttp://m.Drawing.Color[]  (0) 2023.11.29
MM_DRAW()  (0) 2023.11.29

1. 설치 및 기본 명령어
리눅스와 공유정신에 대하여 무엇인지 알아보고 수업간 사용할 가상머신 설치,
원활한 수업을 위한 설정,
실제 명령어를 사용하기 위한 튜토리얼 작업
리눅스 서버를 실습하기 위한 각종 시스템 구성
리눅스에서 사용되는 기본 명령어 학습

2. 기본 명령어
쉘운영의 기본이 되는 파일다루기
확인, 이동, 복사, 생성 등의 작업을 통해 리눅스에서 파일이 가지는 의미를 이해하고 실제 작업 및 확인을 통하여 기본적으로 사용하는 명령어들을 완전 숙지

3. 파이프 및 필터 유저 관리
로컬파일 보안출력결과를 내가 원하는대로 출력하고 원하는 파일로 구성한다.
시스템의 기반이 되는 유저제어를 통해 리눅스에서 유저가 가지는 실제 목적을 파악한다
파일에 권한을 부여하고 사용자들간의 파일 사용을 제한한다.

4. 프로세스 관리 & 디스크 관리
시스템 관리건강한 시스템을 유지하기 위해 프로세스 확인, 관리, 제어의 목적을 가지고 운영레벨에서 시스템을 구성해본다
저장소의 자유로운 사용이 시스템 운영의 필수 요소중 하나이다. 로컬 스토리지를 추가하여 시스템에서 실제 사용 할 수 있도록 학습한다.
systemd / init 프로세스 차이점 확인, 서비스 구동, 부팅 과정 이해

5. 리눅스 네트워크
백업 시스템리눅스를 서버로 사용하기 위한 기본 네트워크 설정
리눅스 기본 기능을 이용한 백업 기능 구현

#Console Hexa, form Hexa by c language

1. Console Hexa

#소스파일첨부

common.c
0.01MB
common.h
0.00MB
mainsrc.c
0.00MB

 

 

#Form Hexa

#소스파일첨부

wincommon.c
0.01MB
wincommon.h
0.00MB
winmainsrc.c
0.01MB

 

/*
#KeyBoard를 이용한 xpos,ypos 증감 프로그램
- 1초당 ypos가 1씩 증가한다.
- LEFT,RIGHT Key를 이용해서 xpos를 1씩 증감한다.
*/

using System;
using System.IO;
using System.Timers;

namespace SimpleConsole
{
  class Program
  {
    const int FAIL=-1;
    const int SUCC=1;
    static int xpos,ypos;
    static System.Timers.Timer timer;

    static void Main(string[] args)
    {
      int ii,kk,ff,rc;

      timer=new System.Timers.Timer();
      timer.Interval=1000;
      timer.Elapsed += new ElapsedEventHandler(time_elapsed_func);
      timer.Start();

      ConsoleKey key=ConsoleKey.NoName;
      Init();
      while(true)
      {
        key=Console.ReadKey(true).Key;

        if(key==ConsoleKey.Escape)
        {
          timer.Stop();        
          break;
        }
        else if(key==ConsoleKey.RightArrow) xpos=xpos+1;
        else if(key==ConsoleKey.LeftArrow) xpos=xpos-1;
        else if(key==ConsoleKey.Enter)
        {
          //
        }
        DrawHexa(100);
      }
    }

    static void DrawHexa(int ____event)
    {
      int ii,kk,ff,rc;

      DateTime now=DateTime.Now;

      if(____event==100)
      Console.WriteLine(">>>>NowEvent[Key ]:"+now.ToString("yyyy-MM-dd HH:mm:ss") + "    INDEX:["+ypos+","+xpos+"]");
      else 
      Console.WriteLine(">>>>NowEvent[Time]:"+now.ToString("yyyy-MM-dd HH:mm:ss") + "    INDEX:["+ypos+","+xpos+"]");
    }
    
    static void Init()
    {
      xpos=0;
      ypos=0;
    }

    static int DownPossible()
    {
      ypos=ypos+1;
      //
      return SUCC;
    }

    static void time_elapsed_func(object sender, ElapsedEventArgs e)
    {
      int ii,kk,ff,rc;

      DrawHexa(200);

      rc=DownPossible();
      if(rc==FAIL)
      {
        if(ypos==0) timer.Stop();
        else
        {
          //INIT
        }
      }
    }
  } //End OF Program Class
} //End Of NameSpace

 

키를 입력하지 않으면, 1초마다 ypos가 1씩 증가하는 구조임.
키를 입력하면, 이벤트가 발생되어서, 그때 로직을 추가해서 사용할수 있음. 위의 예제는 LEFT,RIGHT시에 xpos증감.
헥사게임을 만들게 되면, 일정 시간후에 ypos가 1씩 증가하는 구조를 가지는 시스템에 적당한 프레임예제임.

 

s_frame.cs
0.00MB

 

#거래소 & Koscom 데이타를 보내는쪽은 Nagle 알고리즘을 적용한다.
#거래소 & Koscom 데이타를 보내는쪽은 Nagle 알고리즘을 적용한다.

#거래소 & Koscom
데이타를 송신하는부분에서
#send(102 byte)
#send(102 byte)
#send(102 byte)
#send(102 byte)
#send(102 byte)

#거래소 & Koscom 데이타를 수신하는쪽은
#recv = 102 * 1 byte
#recv = 102 * 4 byte
임을 보인다.

혹시라도, #거래소 & Koscom 데이타를 보내는쪽에서 Nagle 알고리즘을 적용하지 않는다면
비고) 송신하는 프로그램에서 다음의 코드를 추가하면, Nagle 알고리즘을 적용하지 않는다.
#include<netinet/tcp.h>
char on=1;
if(setsockopt(sock,OPPROTO_TCP,TCP_NODELAY,(char *)&on,sizeof(on))<0) printf("error!!\n");

#거래소 & Koscom데이타를 송신하는부분에서
#send(102 byte)
#send(102 byte)
#send(102 byte)
#send(102 byte)
#send(102 byte)

#거래소 & Koscom데이타를 수신하는쪽은
#recv = 102 byte
#recv = 102 byte
#recv = 102 byte
#recv = 102 byte
#recv = 102 byte
임을 보인다. 

#Nagle 알고리즘에 대해서 알아본다.

Nagle알고리즘? 네트워크 상에 패킷의 수를 줄이기 위해 개발된 알고리즘

1. 일반 네트워크 통신방법
- 일반적인 통신알고리즘은 데이터는 패킷으로 만들어 보낸다는 것이며 수신호스트는 이에 대한 ACK를 보낸다는 것입니다. 
예를 들어, A,B 두 호스트가 통신을 합니다. A는 B에게 'Nagle'라는 데이터를 보내기 원하면, 
먼저 'N'이라는 데이터를 패킷으로 만들어 출력버퍼로 보냅니다. 
그리고 ACK를 받고 안받고 관계없이 'a'를 패킷으로 만들어 보내고 이어서 'g', 'l', 'e' 각 데이터를 패킷으로 만들어 보낼 것입니다. 
수신호스트로부터의 ACK가 언제 오는가는 전혀 관계가 없고, 언제 오든지 오기만 하면 되는 것입니다.

2. Nagle 알고리즘
- 네트웍에서 Nagle 알고리즘은 "가능하면 조금씩 여러 번 보내지 말고 한번에 많이 보내라(Effective TCP)" 라는 원칙을 기반으로 만들어진 알고리즘입니다.
- Nagle 알고리즘의 원리는 ACK를 받은 다음에 데이터를 보내고 ACK를 받을 때까지 출력버퍼의 데이터를 저장하였다가 ACK를 받으면 버퍼의 데이터를 모두 패킷으로 만들어 보낸다는 것입니다. 
예를 들어 A가 'N'이라는 데이터를 패킷으로 만들어 보내고, 계속해서 다음 데이터를 보내는 것이 아니라 출력버퍼로 보내어 저장시켜 둡니다. 
그러다가 ACK가 오면 출력버퍼에 저장된 'agle'라는 데이터를 보냅니다.

 

 

- TCP 소켓은 Default로 Nagle 알고리즘을 적용하고 있습니다.

3. Nagle 알고리즘의 장단점
  - 장점 : 네트워크의 효율성이 높아짐. (똑같은 데이터를 보내더라도 생산하는 패킷이 적음)
  - 단점 : 송신 호스트가 ACK를 받을 때까지 기다려야 하므로 전송 속도가 느려짐

4. Nagle 알고리즘의 중단
  - 몇몇 네트웍 관련 프로그램에서는 네트웍의 전송량이나 부하보다는 빠른 응답속도를 더 중요시 여기는 상황이 있습니다. 
  그러한 때에는 TCP_NODELAY  라는 옵션을 사용하여 Nagle 알고리즘을 제거 할 수 있습니다.
  - TCP_NODELAY 옵션이
     1(TRUE) : Nagle 알고리즘을 적용하지 않습니다.
     2(FALSE): Nagle 알고리즘을 적용합니다.

int opt_val = TRUE;
setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, &opt_val, sizeof(opt_val));

해당 옵션의 사용은 네트웍 부하를 극대화 시켜주면서 서버의 전체적인 성능을 무척 감소하기때문에 꼭 필요한 경우에만 매우 주의를 해서 사용해야 합니다.
- 전송은 작은 단위로 자주 이루어지지만 즉각적인 응답은 필요 없는 어플리케이션에서만 사용 되어야 합니다.(마우스 움직임 같은)
- Nagle 알고리즘은 리얼타임시스템에서의 제어와 특히나 인터렉티브한 키 입력을 하는 어플리케이션에서는 안 좋은 영향을 미칩니다. 
선택적으로 Nagle 알고리즘을 통과하는 한가지 방법은 Out-of-bind 메시지 시스템을 쓰는 것입니다. 
그러나 이것은 내용물에 제약이 있고 또 다른 문제(순서의 상실: loss of sequentiality)를 일으킬 수 있습니다.

#거래소 & Koscom tcp 데이타를 서버에서 받을때에 모습(송신쪽에서 Nagle On일경우)

 

#거래소 & Koscom tcp 데이타를 서버에서 받을때에 모습(송신쪽에서 Nagle Off일경우)

소스파트)
int sd, ret, on=1,off=0, sz_sbuf;

/* added to options of socket by Changseop Oh from CheongJo */

/* Now >>>> nagle off -----------------*/
/* Now >>>> nagle off -----------------*/
/* Now >>>> nagle off -----------------*/
if(setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,(char*)&off,sizeof(on))<0)
sprintf(ebuf, "setsockopt() : REUSEADDR setting Error!");

#증권정보 홈페이지 구성 단계별 데이타 처리과정

-Master
1. 거래소&Koscom -> RcvTData(Tcp) -> ReadQBatch -> Shared Memory(Kse,Kosdaq,Elw,Jisu,Konex Master), MySQL
2. 거래소&Koscom -> RcvTData(Tcp) -> ReadQFutureBatch -> Shared Memory(K200 Future Master), MySQL
3. 거래소&Koscom -> RcvTData(Tcp) -> ReadQOptionBatch -> Shared Memory(K200 Option Master), MySQL

-Chegyul,Hoga,Trade,Jongga,Jisu 등등
4. 거래소&Koscom -> RcvTData(Tcp) -> ReadQData -> Shared Memory(Kse,Kosdaq,Elw,Jisu,Konex)
5. 거래소&Koscom -> RcvTData(Tcp) -> ReadQFutureData -> Shared Memory(K200 Future)
6. 거래소&Koscom -> RcvTData(Tcp) -> ReadQOptionData -> Shared Memory(K200 Option)

7. Shared Memory(Kse,Kosdaq,Elw,Jisu,Konex) -> Jni -> Java -> jsp -> WebBrowser
- final sise, full jisu
8. Shared Memory(K200 Future) -> Jni -> Java -> jsp -> WebBrowser
- final sise
9. Shared Memory(K200 Option) -> Jni -> Java -> jsp -> WebBrowser
- final sise
10. Shared Memory(Common) -> Jni -> Java -> jsp -> WebBrowser
- final statistics

11. Shared Memory(Kse,Kosdaq,Elw,Jisu,Konex) -> SHELL -> MySQL -> Java -> jsp -> WebBrowser
- minute sise, minute jisu
12. Shared Memory(K200 Future) -> SHELL -> MySQL -> Java -> jsp -> WebBrowser
- minute sise
13. Shared Memory(K200 Option) -> SHELL -> MySQL -> Java -> jsp -> WebBrowser
- minute sise

 

#자바 네이티브 인터페이스(Java Native Interface, JNI)

자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 가상 머신(JVM)위에서 실행되고 있는 자바코드가 네이티브 응용 프로그램(하드웨어와 운영 체제 플랫폼에 종속된 프로그램들) 그리고 C, C++ 그리고 어샘블리 같은 다른 언어들로 작성된 라이브러리들을 호출하거나 반대로 호출되는 것을 가능하게 하는 프로그래밍 프레임워크이다.

1. 증권정보홈페이지에서 JNI사용하기
1.1 RcvTData -> ReadQData -> Shared Memory(Linux)
1.2 Shared Memory(Linux)를 java를 이용해서 HTML로 보여주기 위해서는 JNI가 필요하다.

1.3 Shared Memory(Linux)를 참조하는 함수(윈도우에서 DLL과 동일)를, 즉 so파일로 만들어야 한다.
1.4 지수,주식,elw,공통의 4가지 so파일로 만들기로 한다.
1.5 libCommonShm.so, libElwShm.so, libJongShm.so, libJisuShm.so 로 만든다.

1.7 즉 결론적으로 Shared Memory(증권정보데이타)를 java에서 호출, 데이타를 사용할수 있다.

사용예)
JongmokMast ksejmast = new JongmokMast();
ksejmast.setMemType(21);
ksejmast.setMarket("A");
ksejmast.setCode("A005930");
ksejmast.setData();

ShmMap_JMAST shm_jmast = new ShmMap_JMAST();
shm_jmast.setCommarea(ksejmast.getData());

String kijun = shm_jmast.get(shm_jmast.KIJUN);
String hyun = shm_jmast.get(shm_jmast.HYUN);
String open = shm_jmast.get(shm_jmast.OPEN);
String jang_flag = shm_jmast.get(shm_jmast.JANG_FLAG);

#Ubuntu 18.04 apache-tomcat-**** & apache2 설치및 연동

1. 설정1
root@stock:/usr/local/tomcat8/conf# which java
/usr/local/jdk1.8.0_202/bin/java
root@stock:/usr/local/tomcat8/conf#

JAVA_HOME=/usr/local/jdk1.8.0_202로 설정한다.

2. 설정2
<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
<Context path="" docBase="/web/httpd/hexahtdocs" reloadable="true"/>
</Host>

3. 확인
http://19.168.0.37:8080
http://19.168.0.37:8080/common_sise/lower_rate.jsp?market=A


#install reference

 

apache_tomcat_9_install_guide.txt
0.01MB


#우분투 버전 역사
#LTS(Long Term Support)


우분투의 버전은 배포판이 나온 연도와 달로 매긴다. 
7.10은 2007년 10월, 8.04는 2008년 4월에 나온 버전이다. 
각 버전은 알파벳 순서로(6.06 LTS부터) 만든 형용사와 명사의 조합으로 코드명이 붙는다. 
7.10은 G에서 만든 Gutsy Gibbon이라는 이름이 붙으며, 
8.04는 H에서 Hardy Heron, 8.10은 I에서 Intrepid Ibex이다. 
처음 세개의 버전을 제외한 나머지 버전은 알파벳 순서로 명명되어서 사용자들이 버전 순서를 파악하는 데 용이하게 했다. 
LTS(Long Term Support)는 장기 지원 버전으로, 
4번에 한 번, 즉 원칙적으로 2년에 한 번씩 나온다. 
현재 가장 최신 버전의 LTS는 18.04이다. 10년간 장기지원한다.

manual.zip
1.56MB


각 버전별 지원 기간은 12.10까지는 1년 6개월이다. 
13.04부터는 9개월로 지원 기간이 단축되었지만 짝수 연도 상반기마다 나오는 장기지원버전(LTS)은 모든 버전을 늘어난 5년간 지원하도록 정책이 바뀌었다. 
처음에는 데스크톱판이 3년으로, 서버판이 5년으로 차별화되어 있었으나, 
12.04 버전부터 둘 다 5년으로 일원화돠었다. 
19LTS 버전부터는 10년간으로 늘어났다. 
이러한 정책의 밑바탕이 되는 주기적이고 장기적인 버전을 통한 LTS기술의 축적은 특별한 보안이 요구되는 금융등 산업계에서 장기적이고 안정된 IT 관리를 위한 매우 적절한 조처다.

#Linux Tettris 소스코드(배열모양:4 * 4)

#언어: c

#필요라이브러리:libncurses.a

#make link option: -lncurses

 

>원리

LEFT 이동시에 1보다 큰 값이 있으면 LEFT 이동이 불가능하다.

 

 

 

linux_tris_time_4_4.c
0.01MB

- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - frm version
- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - frm version
- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - frm version
- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - frm version

using statistics search(BackgroundWorker)
using statistics search(BackgroundWorker)
using statistics search(BackgroundWorker)

frm_tris_4_4.cs
0.01MB

 

simple tris + windows form edition

 

tris_frm_4_4_1.cs
0.01MB

- c# windos console hexa, tettris code(IDE:editor,Compiler:csc) - console version
- c# windos console hexa, tettris code(IDE:editor,Compiler:csc) - console version
- c# windos console hexa, tettris code(IDE:editor,Compiler:csc) - console version
_ using Console.SetCursorPosition()
_ using Console.SetCursorPosition()
_ using Console.SetCursorPosition()

 

tris_4_4.cs
0.01MB

- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - console version
- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - console version
- c# windows console hexa, tettris code(IDE:editor,Compiler:csc) - console version
- only useing Console.WriteLine()
- only useing Console.WriteLine()
- only useing Console.WriteLine()

 

pure_tris_4_4.cs
0.01MB


- c,c++ windows console hexa, tettris code(IDE:editor,Compiler:gcc)
- c,c++ windows console hexa, tettris code(IDE:editor,Compiler:gcc)
- c,c++ windows console hexa, tettris code(IDE:editor,Compiler:gcc)

 

mainsrc.c
0.00MB
common.h
0.00MB
common.c
0.01MB

 

- c# frm & feat.console & text draw version

frm_txt_draw.cs
0.02MB


- pascal window form hexa, tettris code(IDE:DELPHI) 


- javascript web-browser hexa, tettris code(IDE:editor)
- javascript web-browser hexa, tettris code(IDE:editor)
- javascript web-browser hexa, tettris code(IDE:editor)

____no_ajax_tris_4_4.html
0.02MB
____real_fast_no_ajax_tris.html
0.02MB


- c,c++ windows console tettris code(IDE:edit)
- c,c++ windows console tettris code(IDE:edit)
- c,c++ windows console tettris code(IDE:edit)

tris_basic_4_4.c
0.01MB

- c,c++ windows console tettris code(IDE:edit) - time_tick using thread
- c,c++ windows console tettris code(IDE:edit) - time_tick using thread
- c,c++ windows console tettris code(IDE:edit) - time_tick using thread

tris_thread_4_4.bat
0.00MB
tris_thread_4_4.c
0.01MB



- java console hexa, tettris code(IDE:editor,Compiler:javac)

2. Linux(Ubuntu,Centos)
- c,c++ console hexa, tettris code(IDE:editor,Compiler:gcc,실행도구:telnet terminal)
- javascript web-browser hexa, tettris code(IDE:editor,실행도구:desktop mode)

3. Windows 10 + Linux was(tomcat)
- javascript web-browser network hexa, tettris code(feat. AJAX)



# Compiler
1. windows 10 c# console - csc(freeware)
2. windows 10 c# form - visual studio(freeware at private, but company is not free)

3. windows 10 c,c++ console - gcc(freeware)
4. windows 10 c,c++ form - visual studio(freeware at private, but company is not free)

5. windows 10 pascal form - DELPHI (freeware at private, but company is not free)
6. windows 10, Linux javascript - web-browser is OK


Question into xterm92@naver.com

curses.h: No such file or directory

RHEL / Fedora / CentOS
>yum install ncurses-devel ncurses

Debian / Ubuntu
>apt-get install libncurses5-dev libncursesw5-dev

빌드할 때, -lncurses 옵션을 붙여줘야 올바르게 컴파일 할 수 있다.
gcc -o program program.c -lncurses

#대표적인 프로그램으로는 linux >top명령어에 의한 화면일것이다.

#Linux Tettris 코딩, 2가지 방법에 대해서(2번째 방법을 개인적으로 선호합니다.)
- curses.h 를 이용한 리눅스터미날환경에서 동작하는 프로그램방식입니다.

 

 

1. 기본적인 흐름을 따라가는 방법
- 키보드의 이벤트와 time이벤트를 동시에 하나의 함수에서 처리하는 로직

main(void)
{
    int tris[MAPY][MAPX],design[ARR_CNT][ARR_CNT],xpos,ypos,score;
    while(1)
    {
        if(keyhit())
        {
            ch = getch();
            if(ch==KEY_RIGHT) ,,,,,,
        }
        kk=downPossible(tris,design,xpos,ypos,score);
        if(kk==0)
        {
            if(ypos==0) exit(0);
            else
            {
               ,,,,,
            }
         }
     }
}

linux_tris.c
0.01MB

 

2. time_event handler를 이용해서 키보드로 제어하지 않는 부분을 해당코드에 입력 
- time이벤트처리를 따로 뺴고, 키보드의 로직은 다른 함수에서 분리시키는 로직

   
#include<signal.h>
#include<sys/time.h>

void time_handler(int signum)
{
    static int cnt=0;
    printf("timer expired[%d]\n", cnt++);
}

int main(void)
{
    struct sigaction sa;
    struct itimerval timer;

    memset(&sa,0x00,sizeof(sa));
    sa.sa_handler=&time_handler;
    sigaction(SIGVTALRM,&sa,NULL);

    timer.it_value.tv_sec=0;
    timer.it_value.tv_usec=250000;

    timer.it_interval.tv_sec=0;
    timer.it_interval.tv_usec=250000;

    setitimer(ITIMER_VIRTUAL,&timer,NULL);

    while(1);
}      

 

linux_tris_time.c
0.01MB

1. 학원등록번호 : 제 ****호(***** 교육청)

- 현재 등록되지 않은 상태입니다.

2. 강의 시간표 & 교육과정 & 수강료

- 미정

3. 학습대상

- 중고등학생 코딩교육, 취업을 준비하는 대학생, 일반인

4. 강사프로필

- 20년경력의 프로그래머(증권, 통신, 데이타베이스부분)

- 소프트웨어 경진대회 수상경력(대상등)

- 프리랜서 프로그램 개발(키움증권,코스콤,네이버클로버,삼성증권,팍스넷,데이콤,NC소프트)

5. 학습과목

- C언어, C++언어, C#언어, JAVA언어

6. 연락처

- 문의점은 xterm92@naver.com 으로 메일주시면 성실히 답변해드리겠습니다.

7. 학원오픈일정

- 미정

 

#JavaScript TeTTris Game 프로그램 코드(4*4 배열모양)

____no_ajax_tris_4_4.html
0.02MB

 

 

<script type="text/javascript">

/*const define variable*/
var ARR_CNT_IDX = 4;

/*design variable definition*/
var realdesign1 = [0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0];
var realdesign2 = [0,0,0,0,0,1,1,0,0,1,1,0,0,0,0,0];
var realdesign3 = [0,0,0,0,0,1,0,0,1,1,1,0,0,0,0,0];
var realdesign4 = [0,0,1,0,0,1,1,0,0,1,0,0,0,0,0,0];
var realdesign5 = [0,1,0,0,0,1,1,0,0,0,1,0,0,0,0,0];
var realdesign6 = [0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0];
var realdesign7 = [0,0,0,0,0,1,1,1,0,1,0,0,0,0,0,0];
/*function definition*/

 

</script>

 

 

#Linux Tettris game 프로그램코드(c언어)

1. 소스

#include <curses.h>

2. Compile & Link

CFLAGS=-O2 -Wall -Wextra -pedantic -Wno-vla -std=c99
LDFLAGS=-lncurses

3. 주요로직

- c# 언어이던지, java 언어이던지,

- c언어이던지 로직은 같다. 단지 출력부분만 틀릴뿐

- 출력부분을 살펴보자.

void draw_tris(int **tris)

{

    int ii,kk;

    char showtmp[MAPY][MAPX+1];

    memset(showtmp,0x00,sizeof(showtmp));

    for(ii=0; ii<MAPY; ii++)
    for(kk=0; kk<MAPX; kk++)
    {
        if(tris[ii][kk]==1) showtmp[ii][kk]='*';
        else showtmp[ii][kk]=' '; }

    clear();
    mvprintw(1,1,"TETTRIS-----------------------------");
    for(ii=0; ii<MAPY-1; ii++)
        mvprintw(2+ii,1,"%s",showtmp[ii]);

}

 

 

 

#Tettris by c# console program(4*4 배열의 모양)

테트리스모양이 4*4의 모습이다.

전버젼인 3*3에서 4*4로 숫자만 바뀐거뿐, 특별히 달라진건 없다.

확장성는 3->4로 바꾸는것일뿐^

        static int[, ,] design = new int[, ,]
        {
            {{0,1,0,0},{0,1,0,0},{0,1,0,0},{0,1,0,0}},
            {{0,0,0,0},{0,1,1,0},{0,1,1,0},{0,0,0,0}},
            {{0,0,0,0},{0,1,0,0},{1,1,1,0},{0,0,0,0}},
            {{0,0,1,0},{0,1,1,0},{0,1,0,0},{0,0,0,0}},
            {{0,1,0,0},{0,1,1,0},{0,0,1,0},{0,0,0,0}},
            {{0,0,0,0},{0,1,0,0},{0,1,1,1},{0,0,0,0}},
            {{0,0,0,0},{0,1,1,1},{0,1,0,0},{0,0,0,0}}
        };

 

c_t_tris_4_4.cs
0.01MB

#거래소 & Koscom 정보분배 데이타 수신및 처리

1. 전용선데이타인 경우(UDP)

RcvUData ->Queue -> ReadQData -> Shared Memory

Test)

SendUData 127.0.0.1 19511 /web/krx/KRX_202101210900.dat

2. 인터넷데이타인 경우(TCP)

RcvTData -> Queue -> ReadQData -> Shared Memory

Test)

SendTData 127.0.0.1 19511 /web/krx/KRX_202101210900.dat

3. 데이타수신 패킷업무

data.koscom.co.kr 에서 확인가능

- 유가

- 코스닥

- 코넥스

- 선물(지수선물,상품선물,주식선물등)

- 옵션(지수옵션,상품옵션,주식옵션등)

- 지수

- ELW

 

 

#1

 "./command" 은 현재의 디렉토리에 있는 "command" 를 실행하라는 것입니다. 앞의 "./" 를 입력하지 않으려면 PATH 를 지정해 주면 됩니다.

쉘에 따라 다르지만 bash 가 보편적이므로

export PATH=./:$PATH

하면 됩니다. 윈도우즈는 기본적으로 현재의 디렉토리를 지정해 주지 않아도, 현재디렉토리를 최우선으로 찿기때문에 필요없는것 이지만 기본원리는 마찬가지 입니다. 리눅스에서 명확하게 지정하도록 하였으며, 이것은 다른 디렉토리에 같은 화일명이 있을 경우 사용자에게 어느 디렉토리의 파일을 실행시킬것인가의 주도권을 이양하는 의미도 있습니다.

 

#2

.profile
또는
.bash_profile
의 끝에 다음의 코드를 추가하는 것입니다:

PATH=${PATH}:.


${PATH} 은 기존의 패스 문자열을 나타내고,
점(.)은 현재 디렉토리를 나타냅니다.

이러면 현재 디렉토리가 어디든 상관 없이, 현재 디렉토리에 있는 파일을 항상 실행시킬 수 있습니다.

#JavaScript TeTTris Game 프로그램 코드(3*3배열모양)

 

____real_fast_no_ajax_tris.html
0.02MB

 

#주요코드

<script type="text/javascript">

var design = new Array(3,3)

/*variable definition*/

var realdesign1 = [0,1,1,1,1,0,0,0,0];

var realdesign2 = [0,1,1,1,1,0,0,0,0];

 

function design_init(____desc)

{

    if(____desc==1) design=realdesign1;

    else design=realdesign2;

}

</script>

첨부파일.확인. 문의는 xterm92@naver.com

+ Recent posts