강유틸리티 KSC에 포함된 스크립트 화일 2개

hitel.scf

 ; 다음은 전화를 걸어서 하이텔로 자동으로 접속을 시켜주는
 ; 예제이다. ;뒤에는 주석으로 처리한다.


 받기시간(30)  ; 시간제한을 30초로 제한한다.
 반복(!연결)   ; 연결이 않되었으면 반복한다.
   글보내기(|) ; 엔터를 보내어서 전화를 걸고 있으면 중지시킨다.
   기다리기(1) ; 1초정도 기다린다.
   글보내기(atdt 01411|) ; 하이텔(전국)으로 전화를 건다.
   글받기(CONNECT)       ; "CONNECT"문장을 기다린다.
   만약(성공)            ; 만일 성공이라면
     빠지기()            ; 반복함수를 빠져나간다.
   만약끝()              ; 만약함수의 끝
;   기다리기(1)   ; 1초 정도 기다린다.
 반복끝()    ;  반복함수의 끝을 지정해 준다.


 글받기(입력하세요)  ; "입력하세요"란 문자를 받는다.
 만약(성공)      ; 성공이라면...
   글보내기(3|)  ; 3번(하이텔)과 엔터를 보낸다.
 아니면()        ; 문자를 못받았으면,
   종료()        ; 혼잣말을 끝낸다.
 만약끝()        ; "만약" 함수의 끝을 지정한다.


 글받기(이용자ID)   ; "이용자번호"란 글자가 검출되면 "성공"을참
                      ;  으로, 아니면 "성공"을 거짓으로 만든다.
 만약(성공)
   글보내기(jeonghwa|) ; kang002와 엔터를 보낸다.
 만약끝()

 글받기(비밀번호)   ; "비밀  번호"란 글자가 검출되면 "성공"을참
                      ;  으로, 아니면 "성공"을 거짓으로 만든다.
 만약(성공)
   글보내기(7805|) ; 비밀번호를 보낸다.
 만약끝()

 

nownuri.scf

 ; 다음은 전화를 걸어서 나우누리로 자동으로 접속을 시켜주는
 ; 예제이다. ;뒤에는 주석으로 처리한다.


 받기시간(30)  ; 시간제한을 30초로 제한한다.
 반복(!연결)   ; 연결이 않되었으면 반복한다.
   글보내기(|) ; 엔터를 보내어서 전화를 걸고 있으면 중지시킨다.
   기다리기(1) ; 1초정도 기다린다.
   글보내기(atdt 01411|) ; 하이텔(전국)으로 전화를 건다.
   글받기(CONNECT)       ; "CONNECT"문장을 기다린다.
   만약(성공)            ; 만일 성공이라면
     빠지기()            ; 반복함수를 빠져나간다.
   만약끝()              ; 만약함수의 끝
;   기다리기(1)   ; 1초 정도 기다린다.
 반복끝()    ;  반복함수의 끝을 지정해 준다.


 글받기(입력하세요)  ; "입력하세요"란 문자를 받는다.
 만약(성공)      ; 성공이라면...
   글보내기(now|)  ; now(나우누리)와 엔터를 보낸다.
 아니면()        ; 문자를 못받았으면,
   종료()        ; 혼잣말을 끝낸다.
 만약끝()        ; "만약" 함수의 끝을 지정한다.

 글받기(나 우 ID)   ; "나 우 ID"란 글자가 검출되면 "성공"을참
                      ;  으로, 아니면 "성공"을 거짓으로 만든다.
 만약(성공)
   글보내기(kang002|) ; kang002와 엔터를 보낸다.
 만약끝()

; 글받기(비밀번호)   ; "비밀번호"란 글자가 검출되면 "성공"을참
                      ;  으로, 아니면 "성공"을 거짓으로 만든다.
; 만약(성공)
;   글보내기(xxxxxxxx|) ; 비밀번호를 보낸다.
; 만약끝()

 


by 소데초 | 2008/04/19 15:17 | 분류하기 어려운 글 | 트랙백 | 덧글(0)

Telnet hosts list - 이중에 지금도 있는 게 있을까?

엑스넷 telnet 210.127.194.18
블루컴 telnet 210.113.215.2
야호넷 telnet 210.113.215.101
헤드넷 telnet 210.127.194.14
프로넷 telnet 210.127.194.70
하이밴 telnet 210.111.37.1
알파넷 telnet bbs.alpha.co.kr
멀티넷 telnet 210.236.85.10 login:multi
일주일 telnet 203.229.164.1
한통신 telnet 210.124.103.2
나드리 telnet nadri.co.kr login:nadri
신천지 telnet scjnet.jsd.or.kr
체인스 telnet chains.or.kr logim:chains
케이넷 telnet knet.alpha.co.kr
코코텔 telnet 168.126.145.1
뮤직넷 telnet musicnet.co.kr
워드넷 telnet 210.127.194.18
스마트라인 telnet 210.123.193.3
키스코넷 telnet 203.233.144.1
아바투아 telnet 210.111.23.1
코리아넷 telnet 210.127.194.10
키텔 telnet kitel1.kitel.or.kr
블루넷 telnet blue.alpha.co.kr
느낌하나 telnet 210.111.8.11

없겠지?
이 파일 타임스탬프는 2000년 9월 24일, 오전 11:32.

궁금한건, 저기 있는 자료들은 다 어디로 갔을까 하는것.

by 소데초 | 2007/08/31 14:09 | Old | 트랙백 | 덧글(0)

하이텔의 glitch - sz가 나온 화면


파일 전송 프로토콜을 선택하십시오.
1.Zmodem 2.Kermit 3.예약다운로드(DNCART) 0.취소
번호선택(ENTER:Zmodem) >>

전송 준비중입니다. 잠시만 기다리십시오 !!
Login failed.

2243 자료전송에 실패했습니다.

파일 전송 프로그램을 실행시켜 주십시오 !!

sz 3.48 01-27-98 for SYS III/V by Chuck Forsberg, Omen Technology INC
"The High Reliability Software"
Send Files and Commands with ZMODEM/YMODEM/XMODEM Protocol

Usage: sz [-+abcdefgklLnNuvwxyYZ] [-] file ...
zcommand [-egv] COMMAND
zcommandi [-egv] COMMAND
sb [-adfkuv] [-] file ...
sx [-akuv] [-] file

Copyright (c) 1997 Omen Technology INC All Rights Reserved
See sz.doc and README for option descriptions and licensing information.

This program is designed to talk to terminal programs,
not to be called by one.


hitel─────────────────────────────────────
PRG 분류:OPER #2243/2715
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
제 목: COFF구조 문서. HTML포맷. 2/2
저작권:
등록자: 박정근(half8man) UP: 1997-01-25 DN: 2000-08-08 전송: 167
파일명: coff.zip OS환경: 분류: OPER 크기: 12K
───────────────────────────────────────
입니다.


-- 성배

───────────────────────────────────────
받기(DN) 자료등록(UP) 자료수정(E) 자료삭제(DD) 화면인쇄(PR) 상위메뉴(P)
기타(ETC) 도움말(H) >>


2000년 9월에 갈무리.

2007-9-3 추가: naver의 디버깅? 화면 from KLDP.
 http://kldp.org/files/naverdebug_429.gif
 http://kldp.org/files/naversql.JPG

by 소데초 | 2007/08/31 02:40 | 나중에 옮길 글 | 트랙백 | 덧글(0)

Language sketch

스케치해본 ICL 소스.


2002.4

class Point
{
Int _x;
Int _y;

def _constructor (Int x = 0, Int y = 0)
{
self._x = x;
self._y = y;
}

def _destructor
{
}

def Int x
{


미완성.
역시 그때와 많이 바뀌었구나.

이건 2001년 3월 4일 일요일, 오전 1:16:58에 작성한 것.

import sys;

object counter_t {
[private]
int count;
[public]
proc __init__ () {
count = 0;
}
proc __close__ () {
}
proc inc_val() {
if count < __MAX_int {
inc count;
}
}
proc query_val() {
return count;
}
}

counter_t counter;

proc main() {

sys.exit(sys.good);
}

Python과 비슷해졌다.

2001년 3월 31일 토요일, 오후 2:27:20 버전:

@module helloworld;
@from system import sys;
@from vendor.Microsoft import Direct3D D3D, DirectX DX;
@def MAX_STACK 1000;

proc devant(int_t d_v) :
D3D.MoveRel(d_v * 100, d_v / 100);
DX.InitAllRendering();
sys.write(stdout, "%d\n", d_v);
fin

object stack:
(safe)int_t[1..MAX_STACK] stack ;
int_t stack_p;
proc __init__:
.stack_p = 0;
fin
proc push (int_t d_v) :
.stack_p = .stack_p + 1;
.stack[.stack_p] = d_v;
fin
func int_t pop :
pop = .stack[.stack_p];
.stack_p = .stack_p - 1;
fin
fin (object stack);

proc do_helloworld :
sys.write(sys.stdout, "Hello, world\n");
fin

proc __init__ :
do_something();
self.devant();
do_helloworld();
fin

2002.1.31에 작성한 PICL 스케치



PICL Specification

Picl Means 'Pre-Icl': A Primitive version of 'Interpretable and Compilable Language'.
I decided to make it for system programming purpose, instead of C.

Syntax:

@module ;
: Declares that this file is a module.
@application ;
: Declares that this file is an application.
@use <16 or 32>;
: Declares bit depth of an integer.
@import ;
: Import external module. (dynamic binding)
@staticimport ;
: Import external module. (static binding)

proc () { }
: Procedure returns no value.
func () { }
: Function returns a vaule.
filter () () { }
: Filter returns multiple values. There is no call-by-reference in PICL.

In statements:

int a;
: Declare an auto integer variable whose name is 'a'.
native { ... }
: Use IA32 Assembly code.
if { } [elif { } ] [else { }]
: if.
for = .. [step ] { }
: for.
:
: label.
goto ;
: goto.
while { }
: while.
do { } until ;
: do ~ until.
do { } while ;
: do ~ while.
case {
: ...
:
...
[else] ...
}
: case.

Array

int a[3,4];
a[1,1] = 3;



아래아한글 문서파일로 있던것 여기로 옮기고 지움.

2000년 8월 7일 월요일, 오전 6:59:40 a.tl



/* A.TL: TL Testing Program */

#include "startup.h";
#include "startup.h";
#include "startup.h";
#include "startup.h";

#define void proc;

a:
b:
gogogo:

void proc_1(int param_1, int param_2)
int i;
{
if 3 {
goto a;
}
` else {
goto b;
}`

` i = 3;
return;`
}

`gogogo:`

func int func_1(int param_1, int param_2)
int i;
{
while 3 {
goto gogogo;
break;
}

for (goto a; 3; goto b) {
goto gogogo;
break;
}

` i = param_1 + param_2 * 3;
return i;`
}

void main(int argc, char* param)
int i;
{
` proc_1(0, 0);
i = func_1(0, 0);`
}




2002년 11월 17일 일요일, 오후 3:14:38 synt.txt



for i in lvalue to rvalue
{
for j in 1..100
{
for (i = 0; i < 100; i++)
{
for item in f
{
for


for i in (1 to 100)
{
for j in (0 until 100)
{
for i

g: list of integer;
l: pointer of integer;

g = 1 to 100;
l points g[0];

if @l == 3
{
l points next;
@l = 4;
}
}
import cgi;

cgi.MakeHTTPRequest('kr.yahoo.com:80') whenerror 'Not able to connect';

println 'We have to return to thepch.' to stdout;
print "Content-type: text/html\n\nhey!"
to HttpRequestResponser;

import sys;
sys.exit(0);

}

by 소데초 | 2007/08/31 02:17 | 나중에 옮길 글 | 트랙백 | 덧글(0)

file manager: features

directory가 비어 있다면 커서만 갖대대도 비어 있다는걸 알 수 있었음 좋겠다
그래야 더블클릭해서 들어가고 다시 나오는 헛짓을 안해도 된다.

아울러 간단한 정보도 알 수 있었음 한다. 윈도 탐색기도 지원중. 예를 들면

여기에 덧붙여 1초정도만 더 오래 hover하면 안에 있는 그림들의 thumbnail도 보여주면 좋을것이다

이상한 것 : 윈도 xp, 폴더에 아무것도 없었는데 이렇게 나오더군. 숨은 파일도 없는데 왜 있다고 나오는거야. 더블클릭해서 들어갔다가 다시 나오는 헛수고 해야 하잖아. 182라는 숫자는 뭐지.

by 소데초 | 2007/01/09 13:36 | File manager | 트랙백 | 덧글(2)

다른 GUI 동영상 모음

OLPC User Interface (via KLDP 권순선님)


다양한 의견을 볼 수 있는 글
멋진 리눅스 데스크탑 경연대회? | KLDP

by 소데초 | 2007/01/06 09:03 | GUI | 트랙백 | 덧글(0)

progress bar

unix에서는 오래 걸리는 명령, 예를 들면
 cat /dev/hda1 > /dev/hdb1
같은 백업 명령은, 실행시켜놓고 마냥 기다려야 한다.

하지만 간단하게 짜여진 command line utility로도 progress bar를 함께 보여줄 수 있다.
cat같은 간단한 유틸리티에, 현재 data중 얼마가 처리되었는지의 여부를 client(usually shell)이 query하고 server(utility)가 response(answer)할 수 있는 message 표준을 만들면 된다.

물론 user에게 보이는 위치는 client가 누구냐에 따라 (graphic console일수도, window application일수도) 있고, 표시하는 방법 역시 client가 전적으로 결정한다.

progress bar 표시를 위한 message (protocol?) 표준안을 만들어 보자.

* 일단 처음에 client가 integer entire_size를 query (not int!)
* 그후 oneof{ 1.주기적으로(1초에 한번씩? interval 지정 가능?), 2.client가 원할때마다(overhead의 위험이 있다), 3. --- 어떻게 하는게 좋을까?... }
 server가 processed_size를 response 한다.

by 소데초 | 2007/01/06 09:00 | UI | 트랙백 | 덧글(2)

doubleclick이 필요 없는 곳에서는 할 필요가 없어야 한다.


제어판 같이 내용의 (다중선택/수정/...)이 필요없는 icon이 여럿 있는 곳에서는 one click만으로 실행가능하게 하는게 좋다. 다만 사용자에게 이 상황을 notify하기 위해 mouse pointer hover시에 버튼이 생겨야 한다.

Windows에도 옵션 조정하면 이런거 되는 거 알고 있다. (누가 딴지걸까봐 소심) 지금은 default option이 어떻게 되어야 하나 얘기하고 있다.

Q: Vista에서는 어떻게 되지?

by 소데초 | 2007/01/04 16:50 | GUI | 트랙백 | 덧글(0)

keyboard input

원칙
* 키 재지정은 쉬워야 한다.

modifier key의 통합 문제.
control, option, apple, windows, alt, ctrl, shift - .......
그외 한/영, .....
그외 PrintScreen/SysRq, ......

단일 Shift는 좌우 구별 없음, 다른 modifier key와 같이 쓰일 경우 좌우 구별 함. - 이것은 프로그램의 재량에 맡겨야 할듯.
이유는 단일 입력 상태에서, 자주 입력되지 않는, 입력 가능한 글자의 종류를 2배로 하기 위함.
LeftShift-x와 RightShift-x는 같은 글자이나,
Ctrl-LeftShift-x와 Ctrl-RightShift-x는 서로 다른 글자임.

CapsLock 재지정 문제
이름을 Command키로 바꿀까?
CapsLock 자체는 어디로 유배시킬까?

~ 재지정 문제
어떤 vim사용자들은 이 키를 ESC로 재지정하여 사용한다. (바꾸거나.)
기본값으로, tab과 비슷한 역할을 하는 특수키로 만들면 어떨까 한다.

Qwerty가 아닌 자판에서의 단축키 문제
Q: Qwerty가 아닌 자판 사용시 창닫기는 1. C-w인지 2. C-(tab오른쪽오른쪽의키)인지 택일할 수 있어야 하나?
1번의 근거: 아마 다른 곳에선 저렇게 할 거 같다
2번의 근거: C-x C-c C-v 같이 비슷한 일을 하는 경우 위치가 모여있는 키들이 있다.
1번만 지원해야 하나, 아님 1번 2번중 택일할 수 있어야 하나?

by 소데초 | 2007/01/04 16:45 | UI | 트랙백 | 덧글(0)

현재 입력되고 있는 field(control?)

Windows는 커서만 깜빡이고
Mac은 반전되고

이걸
1. 타협점을 찾아 그걸 기본값으로 하고
2. 또는 선택할 수 있게 하면 좋겠다

by 소데초 | 2007/01/04 16:34 | UI | 트랙백 | 덧글(0)

복잡한 command-line parameter를 전달하는 간명한 문법의 정의가 요구됨.

find / \( -name *.c -o -name *.txt \) -exec rm {} \;
이걸 분석해보면

Command find
(cond:
(base_location: '/')
(cond: name∈'*.c' OR name∈'*.txt')
(action: 'rm %1')
)

이제 script language의 문법을 어떻게 정의하는게 좋으냐 하는 문제만 남았다.

by 소데초 | 2007/01/04 15:57 | Script | 트랙백 | 덧글(1)

네트워크에서, 개인 정보와 개인 정보가 아닌 것

Local storage에 있는 "private content"는 물론 100% 개인 정보이며, 그 외의 것에 대해 생각해보자.

IP address
개인 정보라고 볼 수 없지만, 제 3자나 사이트 주인으로 하여금 대략적인 위치를 추정할수 있게 해 준다. 이글루스의 익명 덧글 같이 IP주소가 공개되지 않는 곳보다는 디시인사이드의 덧글 같이 IP주소가 공개되는 곳에서 사용자의 행적이 추적당하기 쉽다.
속이기는 어렵다. Proxy 등의 편법이 있지만 완전하지 않으며 느리다.
client에서 100% 보내는 것이므로 (X)
User-Agent
역시 개인 정보라고 보기 어렵다. 다만 일부 사이트들은 IE가 아닐 경우 아예 사이트 입장을 막는 무례한 모습을 보여주기도 한다.
쉽게 속일 수 있다.
client에서 100% 보내는 것이므로 (X)
사용하는 해상도, 창의 크기, 그외 bpp등
이것은 얼마든지 공개하지 않아도 된다. 창을 중앙에 놓고 싶다면, 서버에서 해상도, 폭, 높이 등을 받아서 그것을 2로 나누어 다시 클라이언트로 보낼 게 아니라, 처음부터 새 창의 위치를 퍼센테이지 비율로 지정할 수 있는 프로토콜로 개선해야 한다.
(O)
마우스의 움직임 읽기
웹페이지에서 JS를 원활히 사용하려면 이것을 막는 것은 어렵다. 다만 E.의 프로세스와 시스템 사이의 입장에서, 이것은 명시적 authorization을 필요로 하는 '권한'이다. 이게 없는 프로세스에게는 click은 물론이고 마우스가 hover중인지 여부도, x/y좌표도 알 수 없어야 한다.
따라서 JS를 사용하는 웹 브라우저는 이 권한을 필요로 한다.
(O)

cf. 마우스의 움직임을 읽어 조세 포탈 여부를 알아낼 수 있다고 하던 외국 어떤 사람의 주장(사이비)에 대한 링크?

cf. 방문자의 행동을 녹화해서 보여주는 Clicktale

by 소데초 | 2006/12/29 13:19 | Security | 트랙백 | 덧글(0)

있으나 마나한 도움말 - 메뉴를 줄줄이 나열해 놓은 도움말.

File메뉴
 File메뉴에는 New, Open, Close, Save, Save As, ..... 가 있다.

New
 새 파일을 생성한다.

Open
 작성한 파일을 오픈한다.

Close
 작성된 파일을 닫는다.

Save
 파일을 저장한다. Ctrl+S와 동일한 기능을 수행한다.
.............



어디서 시작된 관습인지는 모르지만, 특히 윈도 프로그램 중에 이런 식의 뻔한 내용을 "도움말"이랍시고 만들어 놓은 프로그램이 꽤 있다. 이런 내용을 F1키에 배치하면 F1키가 아깝다.
그리고 종이에 인쇄된 매뉴얼 중에서도 이런 것을 볼 수 있다. 종이가 아깝다.

풀다운 메뉴에서 "이것을 선택하는것은 무엇을 뜻하는지?" 알고 싶다면 그 자리에서 직접 알 수 있어야 한다. 각 메뉴에 대한 도움말은 별도의 파일(단일한 .hlp파일), 별도의 메뉴(보통 가장 오른쪽의)가 아닌 풀다운 메뉴 자체에 통합되어 있어야 한다. 풀다운 메뉴 선택시 status bar에 설명이 나오는 프로그램이 많은데 그곳은 적절한 위치가 아닌곳으로 사료됨.

도움말 메뉴에는 "이것을 선택하는것은 무엇을 뜻하는지?"에 대해 써놓지 말고 문제 해결, FAQ, 등 별도의 메뉴에 있어야 하는 것만 존재한다.

by 토모요 | 2006/12/27 17:45 | GUI | 트랙백 | 덧글(0)

Packing variables



= 같은 것들을 묶기 =
array(array)
첨자
struct(struc/struct/?)
field,record: 각 field에는 이름이 있다.

배열과 구조체는 형이 같냐 다르냐의 차이 밖에 없나?
첨자는 단순히 숫자일 뿐이며, field에는 하나하나 이름이 있고 순서는 중요하지 않지.
순서가 중요하다면 별도로 지정을 해야 한다. 이게 뭐였지? pascal에서 packed가 그거 맞나? gcc에서는 컴파일러 옵션으로 조정하던가?

list
queue

enum(one_of/enum/?)은 전혀 다른 개념.

= 뭔가 다른 것들을 묶기 =
tuple
위에 =같은것들을묶기=에서 list와 겉모양만 비슷하다.
--pair--
원소가 2개인 tuple을 pair라는 이름으로 분리시킬까 생각을 해봤는데, 그럴 필요는 없겠다.

= 사상시키기 =

hash(map/dictionary/ --dict-- /hash/?)
hash는 위에 =같은것들을묶기=에서 struct와 비슷하다. 각 field의 이름이 key, 각 값이 value에 해당하므로 비슷하다.

요새 나온 언어들의 이것에 대한 유연성은 놀라울 정도다. 특히 perl, php.
그런데 유연한 만큼 난잡해 지는 것도 분명히 생길 것이다. 그것은 최대한 avoid해야 한다.
이 언어는 ized casting으로 최대한 깔끔한 문법을 제공한다. ....가 아니라 하려고 노력해야 된다.

by 토모요 | 2006/11/21 17:34 | Language~ | 트랙백 | 덧글(1)

Variables

= 前文 =
1. 변수 선언을 하지 않는 언어. / 변수 선언을 해야 하는 언어.
스크립트 언어 용으로는 전자가, 일반적 언어로는 후자가 낫겠다.
1.

= C와의 비교 =
C는 변수를 이렇게 나눈다.. (아주 일반적 상식.)

통용 범위에 따라, one_of(
`local`,
`global`);

기억 장소/방식에 따라, one_of(
`automatic`, -- 스택에 저장.
`static`, -- 힙에 저장.
`external`, -- 이것은 프로그램을 여러 파일로 분할 작성할 때 쓸모있는 개념이다. 이 언어에서 필요가 있을까?
`register`); -- 이것 역시 필요없다. 이것은 자동으로 되어야 한다...

local var
당연한 것
유효 범위(scope)를 갖는다. 밖에서는 효력을 상실한다.
C에서는
scope 바깥의 변수와 안의 변수 이름이 겹칠 수 있다. 이때 안쪽 변수명이 채택된다. 이것은 혼란을 일으키지 않을까?

by 토모요 | 2006/11/21 17:30 | Language~ | 트랙백 | 덧글(1)

Euphoria의 문법을 보고 느낀 것

내가 생각하는 언어의 문법은 오래 전부터 많이 변해 왔다, 즉 수많은 수정을 거쳐 왔다. 그런데 그 문법이 어느정도 확정되어 나가고 있는데.... 알고 보니, 예전부터 이름은 알고 있었지만 안 배운, 하이텔의 BASIC동호회에서 처음 안, Euphoria라는 언어와

정말로 비슷해져가고 있던 것이다.

아직 확정된 것은 하나도 없지만, 각 statement의 끝에 ;을 붙인다는 것을 제외하면, 내가 나름대로 ALGOL의 후손, 특히 Ada/Pascal 문법을 뜯어고치면서 생각해왔던 이 문법은 이미 오래 전부터 쓰였던 것이었구나... 라는 약간의 허탈감.

하지만 단편적인 예제 소스 몇개만 보고 느낀 것이므로, 내 언어에 OOP, Generic programming, 등등...(계획만 있는.... 과연 실제 구현될지는 미지수인 것들)을 추가하면 좀 많이 다르겠지. 유포리아 말고도 Lua 소스를 보고도 이와 비슷한 느낌을 가졌음. 결국 깔끔한 syntax를 만들고자 하는 사람들의 이상향엔 어느 정도 유사한 점이 있었던 것이다.

Euphoria에 대해선 아는 게 전혀 없다. 예제 소스 몇개만 보고 썼음. 시간이 나면 Euphoria도 배워 보고 더 많은 장점을 느껴보아야.

by 토모요 | 2006/11/12 18:17 | Language~ | 트랙백 | 덧글(2)

bool과 함께 있는, yesno

yesno
yesorno
yes_or_no

if stmt에서 boolean과 똑같이 쓰인다. true=yes/false=no

x = yes_or_no ized true;

by 토모요 | 2006/10/16 22:43 | Language~ | 트랙백 | 덧글(2)

설계의 hiatus 의심



무엇의 문제인가? XUL의 문제? 프로그램상의 문제?
XUL은 아직 안배웠지만... 프로그램상의 문제라 해도 저런 상황이 가능하게 하는 것 자체가 XUL 어딘가에 설계의 hiatus가 있는 것이 아닌지 의심이 든다.

저건 그래도 버튼 일부를 클릭할 수는 있는데, 중요한 컴포넌트 몇개가 (해상도/폰트크기/테마/창크기 등등)을 바꿨다고 해서 아예 안보이는 일이 있을 수 있게 해서는 안된다.


Added at 2007-8-8: 다음과 같은 경우도 마찬가지. 오른쪽에 뭐가 있는지 볼 수가 없어서 정확한 선택이 절대 불가능한 상태.

by 토모요 | 2006/05/04 00:32 | GUI | 트랙백 | 덧글(0)

md, rd

왜 UNIX는 굳이 mkdir, rmdir이라고 하는지 모르겠다. cd도 아예 chdir이라고 하지? 이렇게 줄여도 의미가 너무 명확히 구별되는데.

하는 일은 너무 명확하므로 굳이 서술하지 않는다.

단 하나의 디렉터리만 파라미터로 받는다. n개의 디렉터리를 처리하려면 n번의 명령을 실행해야 한다.
이유는 실수를 방지하기 위함이다. rm a* -rf를 실행해야 하는데 rm a * -rf로 타이핑 한 사람의 사례를 보았다.
다만 엘리먼트의 리스트도 리스트임이 확실히 명시된 경우라면 받을 수 있다. rm --rf Files( a b c )(문법은 확정되지 않았음) 같은 방법을 통해 한 명령으로 여러개를 삭제 가능하다.

질문: rm에도 rd 권한을 주어야 하나?

by 토모요 | 2006/02/23 22:35 | Basic utilities~ | 트랙백 | 덧글(1)

Stream (Port?) - I/O

WikiPedia:stdin - bytestream, 칼라 없음
WikiPedia:stdout
* stdin과 stdout은 stdio라는 하나의 이름으로 통합하는게 좋겠다.
WikiPedia:stderr
여기까진 UNIX에 항상 들어있는 것이고, (fd가 각각 0 1 2)

WikiPedia:stdaux
WikiPedia:stdprn
이것은 각종 서적에서 언급되는데 정체를 정확히 모르겠다. 위키로 옮기면 wp를 읽어보자.

여기부턴 내가 만들어본 것들.
stdwarn - stderr가 있길래 내가 만들어본거. 이런게 쓸모 있을까?

wwwget - name=value의 모임, 즉 storage
wwwpost - bytestream in에 불과하면...안되고, storage로 처리.

= Rejected =
coloredout ------ 이름이 맘에 안드는군.
colorederr
nono. coloredout이란건 따로 없고 stdout에 (monocolor 환경에서는 무시되는) 패킷 종류를 추가한 것 뿐.

by 토모요 | 2006/01/26 17:16 | CLI~ | 트랙백 | 덧글(2)

Image button

button으로 쓰일 (icon|image)의 상태는 여러가지가 있을 수 있다.

버튼1, 버튼2, 버튼3, ... 또는 왼쪽버튼, 가운데버튼, 오른쪽버튼. 또는 버튼.(버튼이 하나일 때)

이 각각의 버튼에 대해서 이런 순간이 있다.
* press
* release

그리고 순간의 사이마다 이런 상태가 있다.
* 보통 (HTML의 경우: 일반텍스트, 마우스포인터: 보통)
* 마우스 hover (HTML의 경우: link, 마우스포인터: 손가락)
* 이미 방문했음? (HTML의 경우: vlink, 마우스포인터: 손가락)
* 눌림(pressed,clicked) (HTML의 경우: alink, 마우스포인터: 손가락)

by 토모요 | 2006/01/26 17:10 | GUI | 트랙백 | 덧글(1)

Desktop: Trash

name it: one of
  • Trash
  • Trash Can
  • Waste Basket
  • Recycle Bin
  • 휴지통
  • 쓰레기통 (표현이 너무 강하다)
  • 재활용품
  • 분리수거함
  • ....그리고 사용자가 이름을 지을수도 있다. 맘에 안드는 놈 이름 등등 - 물론 그 사용자 계정의 desktop에만 한정되어야 함


지운지 얼마 되었는지 보여주면 좋겠다.

실제로 삭제될 날이 얼마 남았는지 보여줄 필요는 없다. (불필요하게 신경쓰이게 된다.)
뭐 원한다면 보여주지.
아니면 사용자가 직접 비워주지 않으면 속에 있는 내용은 자동으로 안 없어지는 게 나을까?
약간 불편할텐데.

by 토모요 | 2006/01/24 03:52 | GUI | 트랙백 | 덧글(1)

Mouse: Pointer (stub)

ToSearch:

안쪽이 투명한 그 cur파일(win3.1에서 썼던) 그건 어딨지.
ⓐ100% 투명한 것과 ⓑ50% 투명한 것이 있었음.

노이즈가 나오는 버튼도 있었고.

옹언욱님의 composer에서 시계 모양의 포인터가 이뻤던 걸로 기억한다.

by 토모요 | 2006/01/20 09:46 | GUI | 트랙백 | 덧글(0)

Redirection

todo:*******아래에 있는 내용 여기로 mv
Ref. [http://trustinlee.blogspot.com/2005/11/windows-xp-stderr.html Trustin Lee's GLEAMYNODE.net: Windows XP 명령행 STDERR 리다이렉션]

관련 유틸:

대략 이런걸 생각해봤다
cmd -option -> $v => $data e> tmpfile
또는
$v <- cmd -option | $data e> tmpfile


아무래도 실행결과값으로 다른 운영체제처럼 정수만 되돌리는 것보다는 MyShellScriptLanguage(unnamed yet)이 가질 수 있는 어떤 스칼라 형이라도 되돌릴 수 있는 게 좋겠지. 이 경우 '명령'은 '함수'와 비슷해진다.

프로세스의 stdout을 file에 쓰는것(cmd > filename)을 dog으로 대치해야 할지를 생각해본다. ***
만약 그렇게 한다면, append(cmd >> filename)를 dog -a 로 대치한다.
둘 다 가능하게 하는건 BAD, needless to say sth.

대입

*******다른 section으로 mv
1. 일단 일반적인 대입은
$variable_name <- value
형식 외에는 대안이 없는것 같다.
2. setting, 또는, environment variable의 문제인데.
여기에 쓰일 수 있는 keyword는 Set, Let, Define, Alias 등으로 다양하다.
생각해 봐야 할 것은 ****이 keyword에 각각 어떤 기능을 나눠줄 것인가 하는 문제.

look options 기능을 갖는 Show나 Options같은 명령은 필요 없겠다. print $ENV 같이 print 명령으로 대치 가능하니까.


mu-law(MIME type sound/basic, 확장자 .au) 파일은 유닉스에서 이렇게 실행시키더라.
cat soundfile.au > /dev/audio
만약 E.라면 이런 식으로 하겠지.
cat SomeFile | filter -uncompress | filter -decodeaudio | dogdev audio

by 토모요 | 2006/01/19 18:43 | Shell~ | 트랙백 | 덧글(0)

cd

인자 하나를 받아, 그 디렉토리로 이동한다.

인자가 주어지지 않은 cd 명령의 행동에 대하여


cd 명령을 인자(*** 용어의 disambiguation 필요) 없이 실행시켰을 경우
  • Windows에선 현재 path를 출력 (UNIX의 pwd 명령에 해당)
  • UNIX에선 home directory로 이동
한다. E. 에서는 둘 중 어떤 행동을 하는 게 나을지 생각해 본다.

cd의 행동을 print $CURDIR ($CWD?) 으로 정의하면, cwd 명령을 만들 필요가 없다.
cd의 행동을 cd $HOME ($MYDIR?) 으로 정의하면, cd ~ 같은 명령이 필요가 없어진다.

프롬프트의 기본값이 현재 디렉터리를 출력하게 되어 있고, cwd 명령도 필요시 alias( cwd equ print $CWD ; )로 정의할 수 있으므로, cd가 현재 path를 출력할 필요는 없어 보인다.

결론: UNIX style대로 사용자의 home directory(/usr/$ID)로 이동한다. 또한 프롬프트 모양을 바꾼 사람을 고려해서 cwd명령을 기본 명령에 포함시킨다.

기타


FTP에서 따온 cdup 명령의 필요성: Define cdup ( cd .. ; ) 같이 alias로 정의하면 될텐데, 필요성은 느껴지지 않는다. 어떻게 해야 할지 잘 모르겠다. *** 그리고 cdup RequiresLicense Storage.ChangeDirectory

Added at 2006-01-24: 필요 없다. 하나로 표현할 수 있는 것을 굳이 둘 이상의 표현법으로 가능하도록 하는 것은 맘에 안든다. Perl보다 Python의 철학을 좋아한다.

by 토모요 | 2006/01/19 18:26 | Basic utilities~ | 트랙백 | 덧글(0)

달력 출력 명령

UNIX에서는 cal 명령이 이 일을 하지만 달력 출력만을 위해 명령어 하나를 늘리는 것은 FS namespace 낭비라고 생각한다.
print $calendar -month=Jan -year=1999

위의 $calendar를 함수(&calendar), 변수($calendar), 내장 명령어(Calendar) 중 어느 것으로 정해야 할지는 아직 정하지 못함. *****

by 토모요 | 2006/01/19 18:10 | Basic utilities~ | 트랙백(26) | 덧글(0)

Shell: Prompt

프롬프트의 기본값은
[username@hostname]cwd>
(> 오른쪽에 빈칸 하나) 의 형태.
eg.)
[admin@mycom]/usr/admin> _


색깔을 입힐 수 있게 하는 방법을 제공해야 한다. 이 방식을 정의할때는 VTxxx 표준과 ANSI 표준을 참조.

by 토모요 | 2006/01/19 18:04 | Shell~ | 트랙백 | 덧글(0)

Partly transparent always-on-top window


*는 마우스 포인터1). 항상 위에 있는 창2)이라도 ①클릭할 필요가 없고 ②다른 창에 spot***(순화필요)이 있을 땐 마우스 포인터의 주변은 spot 창을 비춰준다. 이것은 항상 위에 있는 창 뒤의 자료를 보기 위해 항상 위에 있는 창을 임시로 움직이거나 최소화할 필요를 줄여준다. 컨트롤 버튼을 눌러야 할 경우(위의 자료를 예로 들면 pause 또는 seek 하려 할 경우) 에는 그 부분이 spot 창 위에 투명하게 나온다.

그러므로 항상 위에 있는 창을 만들 때는 ⓐ클릭할 필요가 없어서 spot 창만 보여주는 영역(예제 그림처럼), ⓑ항상 위에 있는 창을 spot 창 위에 alphablend하는 영역, ⓒ항상 위에 있는 창만 보여주는 영역, 이 세가지로 영역을 구분해야 한다. ⓑ의 경우 사용자가 각각의 창 별로 투명도를 설정할 수 있어야 하며 설정된 값은 (창의 위치처럼) non-volatile storage에 저장되어야 한다. *****(이때 마우스 입력은 어디로 전해져야 하는지의 문제가 생김)ⓒ를 실행하기 위해선 화면을 모두 덮어버릴 위험 때문에 허가증이 필요하다.

포토샵을 잘 몰라서 그라데이션은 넣지 않았지만 실제 구현시에는 그라데이션 한다. 그리고 마우스의 움직임이 멈추면 항상 위에 있는 창이 서서히 복원된다.

1 Not 마우스 커서. 커서는 텍스트 입력 시 깜박이는 것(Windows의 캐럿)만을 칭함.
2 순화: Window, 윈도우 → 창

by 토모요 | 2006/01/14 00:35 | GUI | 트랙백 | 덧글(0)

_ 변수의 용도

Perl의 $_와 같은 용도로 쓰일 수도 있겠고,
Python의 _와 같은 용도로 쓰일 수도 있겠다.
it같은 명칭으로 바꿀 수 있을지도 모르겠다. (적당한 용어는 생각해 보기로 하자.)

아무래도 인터프리터가 아니므로 $_ 용도가 좋지 않을까 한다.

Shell Script Language에선 인터프리터인데, Python의 _ 용도의 변수는 꼭 하나 필요하다. 그것의 이름이 $_가 될지 아니면 $something_else가 될지는 생각해 봐야 할 문제.

by 토모요 | 2006/01/12 10:34 | Language~ | 트랙백 | 덧글(0)

Array

1.

var
x as array(1..40) of integer;
x as array(1, 40) of integer;
x as array[1..40] of integer;
어떤 문법이 가장 깔끔할까?

by 토모요 | 2006/01/12 10:14 | Language~ | 트랙백 | 덧글(2)

◀ 이전 페이지다음 페이지 ▶