
Putty로 접속시 괘선이 깨지는 경우, 위와 같이 설정하면 된다.

'Tip > Android' 카테고리의 다른 글
| [Javascript] Gemini로 만든 메모리 게임 (0) | 2026.01.04 |
|---|---|
| CLion를 이용하여 Termux로 원격 개발하기 (0) | 2025.09.11 |
| ULTRA 워드 개인 정보 처리 방침 / ULTRA Word Application Privacy Policy (0) | 2025.05.08 |

Putty로 접속시 괘선이 깨지는 경우, 위와 같이 설정하면 된다.

| [Javascript] Gemini로 만든 메모리 게임 (0) | 2026.01.04 |
|---|---|
| CLion를 이용하여 Termux로 원격 개발하기 (0) | 2025.09.11 |
| ULTRA 워드 개인 정보 처리 방침 / ULTRA Word Application Privacy Policy (0) | 2025.05.08 |
package main
import (
"fmt"
"io"
"os"
"golang.org/x/text/encoding/korean"
"golang.org/x/text/transform"
)
func main() {
if len(os.Args) < 2 {
// 표준 입력(stdin)에서 euc-kr로 인코딩된 데이터를 읽습니다.
eucKrReader := transform.NewReader(os.Stdin, korean.EUCKR.NewDecoder())
// euc-krReader에서 읽은 데이터를 utf-8로 변환하여 표준 출력(stdout)에 씁니다.
_, err := io.Copy(os.Stdout, eucKrReader)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(1)
}
} else if len(os.Args) == 2 && os.Args[1] == "-kr" {
// 표준 출력(stdout)을 EUC-KR 인코더로 래핑합니다.
eucKrWriter := transform.NewWriter(os.Stdout, korean.EUCKR.NewEncoder())
// 표준 입력(stdin)에서 읽은 UTF-8 데이터를 EUC-KR로 변환하여 씁니다.
_, err := io.Copy(eucKrWriter, os.Stdin)
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
os.Exit(1)
}
} else {
print("Chobocho's EUC-KR to UTF-8 Converter V0.2\n" +
"Usage: utf.exe < euc_kr_file.txt\n" +
" utf.exe -kr > euc_kr_file.txt\n")
}
}| [AWK] 파일을 분류해서 A-Z 폴더로 이동하기 (0) | 2025.11.08 |
|---|---|
| 노트북 중고 거래시 참고 사항 (0) | 2025.09.13 |
| 시작 프로그램에서 삭제된 프로그램 찌꺼기 지우기 (0) | 2024.11.13 |
진짜 포장만 뜯고 안 쓴 노트북인지 확인하는 방법

부팅해서 cmd창 열고 위 명령어 넣으면 됨

생성된 파일 battery-report.html을 열어보면 아래와 같이 배터리 충방전 이력이 표시됨

| EUR-KR to UTF8 변환 코드 (0) | 2025.09.30 |
|---|---|
| 시작 프로그램에서 삭제된 프로그램 찌꺼기 지우기 (0) | 2024.11.13 |
| [C#] PictureBox 로 간단한 이미지 뷰어 만들기 (0) | 2023.09.22 |
%{
#include <string.h>
%}
EXIT [quit()|exit()]
MSG \"[a-zA-Z0-9_\-\$:; ]{0,128}\"
NAME [a-zA-Z][_\-\$a-zA-Z0-9]{0,19}
NUMBER [0-9]+
%%
{EXIT} { exit(0); }
{MSG} {
int len = yyleng - 2;
strncpy(yylval.sMsg, yytext + 1, len);
yylval.sMsg[len] = '\0';
return MSG;
}
{NAME} { strcpy(yylval.sVal, yytext); return NAME; }
{NUMBER} { yylval.iVal = atoi(yytext); return NUMBER; }
[ \t] ;
"?" { return PRINT; }
"\n" { return '\n'; }
"\r" { return '\n'; }
. { return yytext[0]; }
%{
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
extern int yylex();
void yyerror(const char *s);
int getVarIndex(const char *name);
#define MAX_VARS 100
#define MAX_NAME_LEN 20
typedef struct {
char name[MAX_NAME_LEN + 1];
int value;
} Variable;
Variable vars[MAX_VARS];
int varCount = 0;
char **fileList;
unsigned int currentFile = 0;
unsigned int nFiles = 0;
%}
%union {
int iVal;
char sVal[40];
char sMsg[128];
}
%token <iVal> NUMBER
%token <sVal> NAME
%token <sMsg> MSG
%token PRINT
%type <iVal> expr
%left '-' '+'
%left '*' '/'
%nonassoc UMINUS
%%
stat_list:
| stat_list stat '\n'
;
stat:
| PRINT MSG NAME {
int idx = getVarIndex($3);
int value = (idx != -1) ? vars[idx].value : 0;
printf("%s %d\n", $2, value);
}
| PRINT MSG { printf("%s\n", $2); }
| NAME '=' expr {
int idx = getVarIndex($1);
if (idx != -1) {
vars[idx].value = $3;
}
}
| expr { printf("= %d\n", $1); }
;
expr: NUMBER { $$ = $1; }
| NAME {
int idx = getVarIndex($1);
$$ = (idx != -1) ? vars[idx].value : 0;
}
| expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
| expr '*' expr { $$ = $1 * $3; }
| expr '/' expr {
if ($3 == 0) {
yyerror("Divide by zero");
$$ = 0;
} else {
$$ = $1 / $3;
}
}
| '-' expr %prec UMINUS { $$ = -$2; }
| '(' expr ')' { $$ = $2; }
;
%%
#include "lex.yy.c"
void yyerror(const char *s){
fprintf(stderr, "Error: %s\n", s);
}
int getVarIndex(const char *name) {
for (int i = 0; i < varCount; i++) {
if (strcmp(name, vars[i].name) == 0) {
return i;
}
}
if (varCount < MAX_VARS) {
strcpy(vars[varCount].name, name);
vars[varCount].value = 0;
return varCount++;
}
yyerror("Variable table full");
return -1;
}
int main(int argc, char **argv) {
printf("Chobocho'c Calc V0.1\n");
FILE *file = NULL;
fileList = argv + 1;
nFiles = argc - 1;
if (argc == 2) {
currentFile = 1;
file = fopen(argv[1], "r");
if (!file) {
fprintf(stderr, "Could not open %s\n", argv[1]);
exit(1);
}
yyin = file;
}
return yyparse();
}
CC = gcc
LIBS = -lfl
LEX = flex
YACC = yacc
all: calc2
calc2: y.tab.c lex.yy.c
$(CC) -o calc2 y.tab.c $(LIBS)
y.tab.c: calc.y
$(YACC) -dv calc.y
lex.yy.c: calc.l
$(LEX) calc.l
clean:
rm y.tab.h
rm y.tab.c
rm y.tab.h.pch
rm lex.yy.c
rm calc2
10 + 20
rabbit = 20
dog = 30
cat = 10
chicken = 10
total_legs = dog * 4 + rabbit * 4 + chicken * 2 + cat * 4
? "Total legs:" total_legs
totalAnimals = rabbit + dog + cat + chicken
? "Total Animals:" totalAnimals

| [Termux] VS Code 설치 및 실행 (0) | 2025.12.11 |
|---|---|
| LEX 기초 (0) | 2025.09.09 |
| Lex & Yacc로 간단한 사칙연산 계산기 만들기 (0) | 2025.09.02 |
1. Termux에서 sshd 실행 및 IP 확인
예제에서는 192.168.0.20이 Termux가 설치된 휴대폰의 IP 이다.
2. CLion 실행
3. SFTP 구성




4. CLion에서 휴대폰으로 접속하기

그럼 우측에 아래와 같이 화면이 뜨면, 위에서 설정한 SFTP 의 이름을 선택한다.
그리고 작업하려는 폴더를 선택한다.

5. CLion 에서 SSH 세션 실행

| [Termux] Putty로 접속시 괘선이 깨지는 경우 (0) | 2025.10.30 |
|---|---|
| ULTRA 워드 개인 정보 처리 방침 / ULTRA Word Application Privacy Policy (0) | 2025.05.08 |
| Galaxy(갤럭시) 에서 키보드 번역 기능 사용하기 (1) | 2024.10.09 |
%{
unsigned int charCount = 0, wordCount = 0, lineCount = 0;
%}
word [^ \t\n]+
eol \n
%%
{word} { wordCount++; charCount += yyleng; }
{eol} { charCount++; lineCount++; }
. { charCount++; }
%%
int main(int argc, char **argv) {
yylex();
printf(" %d %d %d\n", lineCount, wordCount, charCount);
return 0;
}

%{
unsigned int charCount = 0, wordCount = 0, lineCount = 0;
%}
word [^ \t\n]+
eol \n
%%
{word} { wordCount++; charCount += yyleng; }
{eol} { charCount++; lineCount++; }
. { charCount++; }
%%
int main(int argc, char **argv) {
FILE *file = NULL;
if (argc > 1) {
file = fopen(argv[1], "r");
if (!file) {
fprintf(stderr, "Could not open %s\n", argv[1]);
exit(1);
}
yyin = file;
}
yylex();
printf(" %d %d %d %s\n", lineCount, wordCount, charCount,
(file == NULL ? "" : argv[1]));
return 0;
}

| Lex & Yacc로 간단한 사칙연산 계산기 만들기2 (0) | 2025.09.12 |
|---|---|
| Lex & Yacc로 간단한 사칙연산 계산기 만들기 (0) | 2025.09.02 |
| 컴파일러 관련 기초 서적 정리 (한글판만) (0) | 2025.01.18 |
%{
%}
%%
"quit" { exit(0); }
[0-9]+ { yylval = atoi(yytext); return NUMBER; }
"+" { return PLUS; }
"-" { return MINUS; }
"*" { return TIMES; }
"/" { return DIVIDE; }
"(" { return '('; }
")" { return ')'; }
[ \t] ;
"\n" { return '\n'; }
. ;
%{
#include <stdio.h>
extern int yylex();
void yyerror(const char *s);
%}
%token NUMBER
%token PLUS MINUS TIMES DIVIDE
%left PLUS MINUS
%left TIMES DIVIDE
%%
stat_list:
| stat_list stat
;
stat: expr '\n' { printf("= %d\n", $1); }
;
expr: NUMBER { $$ = $1; }
| expr PLUS expr { $$ = $1 + $3; }
| expr MINUS expr { $$ = $1 - $3; }
| expr TIMES expr { $$ = $1 * $3; }
| expr DIVIDE expr {
if ($3 == 0) yyerror("Divide by zero");
else $$ = $1 / $3;
}
| MINUS expr %prec MINUS {$$ = -$2; }
| '(' expr ')' { $$ = $2; }
;
%%
#include "lex.yy.c"
void yyerror(const char *s){
fprintf(stderr, "Error: %s\n", s);
}
int main() {
printf("Chobocho'c Calc V0.1\n");
return yyparse();
}
CC = gcc
LIBS = -lfl
LEX = flex
YACC = yacc
all: calc2
calc2: y.tab.c lex.yy.c
$(CC) -o calc2 y.tab.c $(LIBS)
y.tab.c: calc.y
$(YACC) -dv calc.y
lex.yy.c: calc.l
$(LEX) calc.l
clean:
rm y.tab.h
rm y.tab.c
rm y.tab.h.pch
rm lex.yy.c
rm calc2

| Lex & Yacc로 간단한 사칙연산 계산기 만들기2 (0) | 2025.09.12 |
|---|---|
| LEX 기초 (0) | 2025.09.09 |
| 컴파일러 관련 기초 서적 정리 (한글판만) (0) | 2025.01.18 |
ULTRA 워드 앱은 어떠한 개인 정보도 수집하지 않습니다.
ULTRA Word does not collect any personal information.

다운로드 링크:
https://play.google.com/store/apps/details?id=com.chobocho.wordmaster&pcampaignid=web_share
UltraWord - Google Play 앱
초 간단 단어장 입니다
play.google.com
| CLion를 이용하여 Termux로 원격 개발하기 (0) | 2025.09.11 |
|---|---|
| Galaxy(갤럭시) 에서 키보드 번역 기능 사용하기 (1) | 2024.10.09 |
| Galaxy(갤럭시) 에서 한자 입력하기 (0) | 2024.10.09 |
Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C
https://www.yes24.com/Product/Goods/123859288
Crafting Interpreters 로버트 나이스트롬의 인터프리터 in Java, C - 예스24
프로그래밍 언어 디자인에 관한 최고의 책! Dragon Book보다 재미있다!OOP와 함수형 프로그래밍을 모두 지원하는, 현대 프로그래밍 언어의 실용적 구현! 매일 사용하고 있는 프로그래밍 언어가 어떻
www.yes24.com
만들면서 배우는 컴파일러 첫걸음
예제코드: https://github.com/KazumaHanada/my_first_compiler
https://www.yes24.com/Product/Goods/102185325
만들면서 배우는 컴파일러 첫걸음 - 예스24
“작은 컴파일러를 만들며 익히는 컴파일러 기본기”컴파일러 개발은 이론적으로도 복잡하고 엔지니어링적으로도 많은 노력이 필요하다 보니 대부분 다가가기를 꺼리게 되는 분야다. 그런데
www.yes24.com
컴파일러 만들기
https://www.yes24.com/Product/Goods/103153057
컴파일러 만들기 - 예스24
현대 소프트웨어는 하드웨어의 성능 발전에 힘입어 많은 부분에서 추성화된 덕택에 코딩에 입문하기도 쉬워졌고 원하는 프로그램을 만들기도 쉬워졌다. 하지만 컴퓨터를 더 잘 이해하고 싶고
www.yes24.com
| Lex & Yacc로 간단한 사칙연산 계산기 만들기2 (0) | 2025.09.12 |
|---|---|
| LEX 기초 (0) | 2025.09.09 |
| Lex & Yacc로 간단한 사칙연산 계산기 만들기 (0) | 2025.09.02 |
제어판에서 프로그램 삭제를 했는데도, 시작 프로그램에 찌꺼기가 남아 있는 경우가 있다.
이럴 땐 다음과 같이 아래 폴더로 가서, 그 프로그램 바로가기 파일을 지우면 된다.
C:\Users\[사용자계정]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

| 노트북 중고 거래시 참고 사항 (0) | 2025.09.13 |
|---|---|
| [C#] PictureBox 로 간단한 이미지 뷰어 만들기 (0) | 2023.09.22 |
| [ScanSnap] 스캔스냅 사용팁 (0) | 2021.08.09 |