git 삭제된 파일 복구하기

물론.. commit 전인 파일이 삭제된거면.. 안됨..

git ls-files -d | xargs git checkout --
카테고리: Programming | 태그: | 댓글 남기기

가우 0.2

황치덕님이 개발한 리눅스 PC통신 프로그램.. 가우..
당시 소스코드를 올려본다.. 정말 추억이다..

gau-0.2.7z

카테고리: Linux, Programming | 댓글 남기기

CentOS 6 에서 php 5.6으로 업그레이드하기

dokuwiki 를 설치하는데 install.php 가 505 에러가 뜨면서 안된다..
확인해보니.. php 버전이 낮더라..
기본 CentOS 6 에는 php 5.3.3이 깔려있음.

# lsb_release -a
LSB Version:	:base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:	CentOS
Description:	CentOS release 6.9 (Final)
Release:	6.9
Codename:	Final

# php -v
PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09) 
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
[root@olddos-bbs html]# yum --enablerepo=remi-php56 install php
Loaded plugins: fastestmirror, refresh-packagekit, security

아래와 같이 업그레이드..

# rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
# yum remove php-common php php-gd php-xml
# yum install -y php56w php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring
# service httpd restart

단 yum install 중에.. 아래와 같이 에러가 뜨면..

Error: php56w-common conflicts with php-common-5.3.3-49.el6.x86_64
Error: Package: libmcrypt-2.5.8-13.el7.x86_64 (epel)
           Requires: libc.so.6(GLIBC_2.14)(64bit)

php56w-mcrypt 빼고 설치할것.

카테고리: Linux | 댓글 남기기

PCSX2 + SSX3 의 빨간줄 현상

pcsx2 로 ssx3 를 즐기는데.. 아래와 같이 빨간줄 현상이 생긴다면..

glitch

아래와 같이 해결.

Go to Config > Video (GS) > Plugin Settings, set Renderer to OpenGL (Hardware) and turn on Hardware Depth.

For DX11 you can remove the red lines by setting the CRC Hack Level(in the same Plugin Settings menu) to "Aggressive".

해보니 잘됨. 간만에 ssx3 나 한판!!!

카테고리: Emulator | 태그: , , | 댓글 남기기

DJGPP 크로스 컴파일러 설치

DJGPP는 도스용 32비트 C/C++ 컴파일러임.
그렇다고 무작정 도스에서 이 djgpp 를 사용해서 도스용 프로그램을 개발하자니..
컴파일 속도도 암울하고.. 하여..
개발은 윈도우에서 코드도 작성도하고.. 컴파일도하여.. 도스 실행파일도 생성하고..
실행은 도스박스나 Pcem 에서.. 하면 제일 좋을것임.

아래의 링크에서..
https://github.com/andrewwutw/build-djgpp/releases
djgpp-mingw-gcc494-standalone.zip 을 받아서 대충 PATH를 잡아서 사용하면됨.

카테고리: Dos | 태그: | 댓글 남기기

C용 List/Hash 라이브러리 테스트

Collections-C 라는 라이브러리가 있음. (https://github.com/srdja/Collections-C)
이 라이브러리는 hash, list등.. 유용한 C용 함수를 제공하는 꽤 괜찮은 라이브러리라 생각됨.

아래는 list를 테스트 해봄.

#include "src/common.c"
#include "src/list.c"

static List *list1;

typedef struct var_t {
    int id;
    char *name;
} var;

int main()
{
	var *v;

	list_new(&list1);

	v = malloc(sizeof(var));
	v->id = 1;
	v->name = strdup("abc");
	list_add(list1, v);

	v = malloc(sizeof(var));
	v->id = 2;
	v->name = strdup("def");
	list_add(list1, v);

	int i;
	for(i=0; i< list_size(list1); i++) {
		void *f;
        list_get_at(list1, i, &f);
		printf("%d\n", ((var*)f)->id);
		printf("%s\n", ((var*)f)->name);
	}
	
	for(i=0; i< list_size(list1); i++) {
		void *f;
        list_get_at(list1, i, &f);
		free(((var*)f)->name);
	}

	list_destroy(list1);
}
$ ./a.exe
1
abc
2
def

double 값을 넣는 두번째 테스트..

#include "src/common.c"
#include "src/list.c"
 
static List *list1;
 
int main()
{
    list_new(&list1);
 
    double v = 1.0;
    list_add(list1, &v);
 
    double v2 = 2.0;
    list_add(list1, &v2);
 
    int i;
    for(i=0; i< list_size(list1); i++) {
        double *f;
        list_get_at(list1, i, (void*)&f);
        printf("%llf\n", *f);
    }
     
    list_destroy(list1);
}

아래는 Hash 를 테스트..

#include "src/common.c"
#include "src/hashset.c"
#include "src/hashtable.c"
#include "src/array.c"

HashTable *hash;

typedef struct var_t {
    int id;
    char *name;
} var;

int main()
{
	var *v;

	int stat = hashtable_new(&hash);

	v = malloc(sizeof(var));
	v->id = 1;
	v->name = strdup("abc");
	hashtable_add(hash, "key1", v);
	
	v = malloc(sizeof(var));
	v->id = 2;
	v->name = strdup("def");
	hashtable_add(hash, "key2", v);
	
	v = malloc(sizeof(var));
	v->id = 3;
	v->name = strdup("ghi");
	hashtable_add(hash, "key3", v);

	// query
	var *v2;
	if (hashtable_get(hash, "key1", (void*) &v2) == CC_OK) {
		printf("id: %d, name: %s\n", ((var*)v2)->id, ((var*)v2)->name);
	}

	// remove key
	hashtable_remove(hash, "key1", NULL);

	// check removed
	if (hashtable_get(hash, "key1", (void*) &v2) != CC_OK) {
		printf("removed key1\n");
	}

	// size check
	size_t size = hashtable_size(hash);
	printf("hash size: %d\n", size);

	// free element for memory allocation
	Array *keys;
	hashtable_get_keys(hash, &keys);
	for (int i=0; i<array_size(keys); i++) {
		void *key;
		array_get_at(keys, i, &key);
	
		if (hashtable_get(hash, (char*)key, (void*) &v2) == CC_OK) {
			free(((var*)v2)->name);
			printf("free name of %s\n", (char*)key);
		}
	}

	// destroy 
	hashtable_destroy(hash);
}
$ ./a.exe
id: 1, name: abc
removed key1
hash size: 2
free name of key3
free name of key2
카테고리: Talk | 댓글 남기기

get keyboard inputs without blocking

블럭킹없이 키보드 입력 받는 코드..

#include <ros/ros.h>
#include <termios.h>

char getch()
{
	fd_set set;
	struct timeval timeout;
	int rv;
	char buff = 0;
	int len = 1;
	int filedesc = 0;
	FD_ZERO(&set);
	FD_SET(filedesc, &set);
	
	timeout.tv_sec = 0;
	timeout.tv_usec = 1000;

	rv = select(filedesc + 1, &set, NULL, NULL, &timeout);

	struct termios old = {0};
	if (tcgetattr(filedesc, &old) < 0)
		ROS_ERROR("tcsetattr()");
	old.c_lflag &= ~ICANON;
	old.c_lflag &= ~ECHO;
	old.c_cc[VMIN] = 1;
	old.c_cc[VTIME] = 0;
	if (tcsetattr(filedesc, TCSANOW, &old) < 0)
		ROS_ERROR("tcsetattr ICANON");

	if(rv == -1)
		ROS_ERROR("select");
	else if(rv == 0)
		ROS_INFO("no_key_pressed");
	else
		read(filedesc, &buff, len );

	old.c_lflag |= ICANON;
	old.c_lflag |= ECHO;
	if (tcsetattr(filedesc, TCSADRAIN, &old) < 0)
		ROS_ERROR ("tcsetattr ~ICANON");
	return (buff);
}


int main(int argc, char **argv)
{
	ros::init(argc, argv, "key_input_node");
	ros::NodeHandle n;

	ros::Rate loop_rate(10);
	while (ros::ok())
	{
		int c = 0;
		c=getch();
		ROS_INFO("%c", c);

		ros::spinOnce();

		loop_rate.sleep();
	}

	return 0;
}
카테고리: Linux, Programming | 태그: , , | 댓글 남기기

sftp 를 네트웍 드라이브로 추가하기

말그대로.. sftp 를 네트웍 드라이브로 추가하기..

https://www.eldos.com/sftp-net-drive/download-release.php

카테고리: Windows | 태그: , , | 댓글 남기기

Windows 10 폰트 흐릿한 문제

Windows 10 폰트 흐릿한 문제가 발생하면..

바탕화면 마우스 오른쪽키
-> 디스플레이 설정
-> 고급 디스플레이 설정
-> 텍스트 및 기타 항목의 고급 크기 설정
-> 항목의 크기 변경에서 “사용자 지정 수준을 설정할 수 있습니다” 클릭
-> 100%로 변경
-> 재시작

카테고리: Windows | 댓글 남기기

사운드 블래스터 2.0 점퍼 셋팅

사운드 블래스터 2.0 점퍼 셋팅 문서.

IRQ나 CMS 셋팅시 참고

SB2.0_JUMPER_SETTINGS.PDF

카테고리: Dos | 댓글 남기기