Synergy 1.4.10 한글 패치 (32bit)

Synergy 1.4.10 한글 패치한 버전 입니다. (1.4.x 대 한글 패치 버전은 없는 것 같아 직접 빌드 해버렸습니다 (ㅠ_ㅠ))

* 설치 방법:
1. synergy 1.4.10 (32bit) download
3. 서비스 - Synergy - 중지
4. 첨부된 파일을 C:\Program Files\Synergy 안에 덮어 씌움


수정 된 소스 코드는 다음과 같습니다:

CMSWindowsKeyState.cpp
KeyTypes.cpp
KeyTypes.h

 
(수정 사항은 "Dimiden" 으로 검색 하시면 됩니다)
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2013/01/24 15:38 2013/01/24 15:38
Response
11 Trackbacks , 4 Comments
RSS :
http://b4you.net/blog/rss/response/265

bash에서 for 구문 사용하기

예전엔 1부터 10까지 expr를 이용해서 for문 같이 구현했었는데... 이외의 방법들도 많군요~


Bash For Loop Examples

by VIVEK GITE on OCTOBER 31, 2008 · 190 COMMENTS

How do I use bash for loop to repeat certain task under Linux / UNIX operating system? How do I set infinite loops using for statement? How do I use three-parameter for loop control expression?

A 'for loop' is a bash programming language statement which allows code to be repeatedly executed. A for loop is classified as an iteration statement i.e. it is the repetition of a process within a bash script.

For example, you can run UNIX command or task 5 times or read and process list of files using a for loop. A for loop can be used at a shell prompt or within a shell script itself.

for loop syntax

Numeric ranges for syntax is as follows:

for VARIABLE in 1 2 3 4 5 .. N
do
	command1
	command2
	commandN
done

This type of for loop is characterized by counting. The range is specified by a beginning (#1) and ending number (#5). The for loop executes a sequence of commands for each member in a list of items. A representative example in BASH is as follows to display welcome message 5 times with for loop:

#!/bin/bash
for i in 1 2 3 4 5
do
   echo "Welcome $i times"
done

Sometimes you may need to set a step value (allowing one to count by two's or to count backwards for instance). Latest bash version 3.0+ has inbuilt support for setting up ranges:

#!/bin/bash
for i in {1..5}
do
   echo "Welcome $i times"
done

Bash v4.0+ has inbuilt support for setting up a step value using {START..END..INCREMENT} syntax:

#!/bin/bash
echo "Bash version ${BASH_VERSION}..."
for i in {0..10..2}
  do
     echo "Welcome $i times"
 done

Sample outputs:

Bash version 4.0.33(0)-release...
Welcome 0 times
Welcome 2 times
Welcome 4 times
Welcome 6 times
Welcome 8 times
Welcome 10 times

The seq command (outdated)

WARNING! The seq command print a sequence of numbers and it is here due to historical reasons. The following examples is only recommend for older bash version. All users (bash v3.x+) are recommended to use the above syntax.

The seq command can be used as follows. A representative example in seq is as follows:

#!/bin/bash
for i in $(seq 1 2 20)
do
   echo "Welcome $i times"
done

There is no good reason to use an external command such as seq to count and increment numbers in the for loop, hence it is recommend that you avoid using seq. The builtin command are fast.

Three-expression bash for loops syntax

This type of for loop share a common heritage with the C programming language. It is characterized by a three-parameter loop control expression; consisting of an initializer (EXP1), a loop-test or condition (EXP2), and a counting expression (EXP3).

for (( EXP1; EXP2; EXP3 ))
do
	command1
	command2
	command3
done

A representative three-expression example in bash as follows:

#!/bin/bash
for (( c=1; c<=5; c++ ))
do
	echo "Welcome $c times..."
done

Sample output:

Welcome 1 times
Welcome 2 times
Welcome 3 times
Welcome 4 times
Welcome 5 times

How do I use for as infinite loops?

Infinite for loop can be created with empty expressions, such as:

#!/bin/bash
for (( ; ; ))
do
   echo "infinite loops [ hit CTRL+C to stop]"
done

Conditional exit with break

You can do early exit with break statement inside the for loop. You can exit from within a FOR, WHILE or UNTIL loop using break. General break statement inside the for loop:

for I in 1 2 3 4 5
do
  statements1      #Executed for all values of ''I'', up to a disaster-condition if any.
  statements2
  if (disaster-condition)
  then
	break       	   #Abandon the loop.
  fi
  statements3          #While good and, no disaster-condition.
done

Following shell script will go though all files stored in /etc directory. The for loop will be abandon when /etc/resolv.conf file found.

#!/bin/bash
for file in /etc/*
do
	if [ "${file}" == "/etc/resolv.conf" ]
	then
		countNameservers=$(grep -c nameserver /etc/resolv.conf)
		echo "Total  ${countNameservers} nameservers defined in ${file}"
		break
	fi
done

Early continuation with continue statement

To resume the next iteration of the enclosing FOR, WHILE or UNTIL loop use continue statement.

for I in 1 2 3 4 5
do
  statements1      #Executed for all values of ''I'', up to a disaster-condition if any.
  statements2
  if (condition)
  then
	continue   #Go to next iteration of I in the loop and skip statements3
  fi
  statements3
done

This script make backup of all file names specified on command line. If .bak file exists, it will skip the cp command.

#!/bin/bash
FILES="$@"
for f in $FILES
do
        # if .bak backup file exists, read next file
	if [ -f ${f}.bak ]
	then
		echo "Skiping $f file..."
		continue  # read next file and skip cp command
	fi
        # we are hear means no backup file exists, just use cp command to copy file
	/bin/cp $f $f.bak
done

Recommended readings:

  • See all sample for loop shell script in our bash shell directory.
  • man bash
  • help for
  • help {
  • help break
  • help continue

Updated for accuracy!

크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2011/11/04 11:16 2011/11/04 11:16
Response
5 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/264

최근 iOS 5로 업그레이드 후 많은 application에서 숫자 부분이 띄어쓰기 되는 현상이 있습니다.
예를 들어,

"1234"

인데

"1 2 3 4"

와 같이 나오는 경우죠.
자신이 개발한 앱에서도 이러한 현상이 발생 한다면 font를 apple gothic이 아닌 다른 종류로 설정 해 주시면 됩니다.
(스크린샷과 코드는 귀찮아서 생략 ~_~)
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2011/10/15 21:09 2011/10/15 21:09
Response
8 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/263

SVN external로 세팅하기

가끔 svn을 사용하다 보면 한 프로젝트에서 전혀 다른 곳의 repository에 있는 파일들을 가져다 사용 해야 될 때가 있습니다.
이를 일일히 update 한 뒤 수작업으로 copy 하고 실행하고.. 를 반복 해도 되지만, 이 방법에도 한계가 있죠.

svn에서는 이러한 상황에서 사용할 수 있는, external로 연결하는 기능을 제공하고 있습니다.
이 기능을 사용하기 위해서는

1. checkout 원하는 project checkout
2. 추가하길 원하는 곳으로 이동
3. 다음의 명령어를 실행
svn propedit svn:externals .
3-1. 만약 svn: None of the environment variables SVN_EDITOR, VISUAL or EDITOR are set, and no 'editor-cmd' run-time configuration option was found 와 같은 메시지가 표시 된다면,
export SVN_EDITOR="vim"
와 같이 입력 후 재시도
4. 편집기에서 <디렉토리 경로> <svn 주소> 와 같이 편집. 예를 들어, 현재 디렉토리에 http://path.to/svn 의 내용을 abc 디렉토리에 넣고자 한다면
abc http://path.to/svn
와 같이 작성

svn update 하였을 때 "Updated external to revision xxxx"와 같이 표시되면 성공
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2011/09/16 16:16 2011/09/16 16:16
Response
7 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/261

sendmail 재시작

/etc/init.d/sendmail restart
/etc/init.d/saslauthd restart
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2011/09/15 21:42 2011/09/15 21:42
,
Response
10 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/260

어이없는 다운로드 사이트

모 제품의 소스코드가 유출 되었다고 하여 인터넷에 검색 해봤는데, 모 다운로드 사이트에서 검색이 되더군요. (유료 사이트 입니다.) 몇 개의 파일들을 검색 해 봤는데 다 검색이 되더군요. 그래서.. "오 이 사이트는 좀 짱인듯?" 했는데.. 혹시나 해서 키워드를 좀 바꿔 보았죠. "xxxx source code"에서 "yyyy source code"로. 그랬더니 검색이 되는 것입니다.ㅎㅎㅎ 결국에는..

wtf

이런 것이 검색 되어버렸습니다.ㅎㅎㅎ ya-im-ma-sa-gi-chi-ji-ma.rar 라는 파일을 보유하고 있다니 대단 하군요.ㅋㅋ 니네들 제대로 안할래?-_-;;
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2011/01/30 11:49 2011/01/30 11:49
Response
14 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/259

예전에 Objective-C에서 Singleton 객체를 만드는 방법에 대해 써놓은 글(http://b4you.net/blog/210)이 있었는데 사용하다보니 몇 가지 제약이 있어 새로 만들어 보았습니다.

문제는 singleton 클래스를 하나 만들어 두고 그 클래스를 상속받으면 하위 클래스도 singleton 객체가 되게끔 하려고 하는데 여기서 여러 클래스가 상속을 받게 되면 static 객체를 공유한다는 것이었습니다.
각 객체마다 static 영역이 있어서 공유되는게 당연한데 상속 구조를 고려하지 않고 구현을 해놓은 바람에 귀찮은 문제가 발생하더군요. 이러한 것들은 C++이야 template를 사용하여 처리하면 되는데 Objective-C는 그렇게 되질 않아 다음과 같이 수정하였습니다.

+ (SingletonClass *)sharedSingletonClass
{
	static NSMutableDictionary *dictionary = nil;
	id sharedObject = nil;
	NSString *className;
	
	// for DCL
	if(dictionary == nil)
	{
		@synchronized(self)
		{
			if(dictionary == nil)
			{
				dictionary = [[NSMutableDictionary alloc] init];
			}
		}
	}
	
	className = NSStringFromClass([self class]);
	
	sharedObject = [dictionary objectForKey:className];

	// for DCL
	if(sharedObject == nil)
	{
		@synchronized(self)
		{
			sharedObject = [dictionary objectForKey:className];
			
			if(sharedObject == nil)
			{
				sharedObject = [[[self class] alloc] init];
				[dictionary setObject:sharedObject forKey:className];
			}
		}
	}
	
	return sharedObject;
}

달라진 부분은 NSDictionary를 사용한 점 입니다. 이렇게 처리하면 dictionary 내에서 search 할 때의 속도 때문에 overhead가 발생하긴 하겠지만, 상속 구조에서도 깔끔하게 잘 사용할 수 있습니다.

아직까진 다른 문제점은 없었으나 문제가 발생하면 3탄을 만들어야겠군요 ㅎㅎ
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2010/09/24 00:05 2010/09/24 00:05
Response
8 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/257

Xcode 자동 완성 부분 disable 하기

오랜만의 포스팅 입니다.

Xcode에서 자동 완성이 귀찮을 경우 또는 수정이 필요한 경우 해당 keyword를 disable 할 수 있습니다.


우선 Xcode 설치 디렉토리안의

Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources

디렉토리로 이동하신 뒤

(예: /Developer/Applications/Xcode.app/Contents/PlugIns/TextMacros.xctxtmacro/Contents/Resources)

C.xctxtmacro 파일을 편집 해 주시면 됩니다.


위 파일을 열면..

{
	Identifier = c.block.if;
	BasedOn = c.block;
	Name = "If Block";
	IsMenuItem = YES;
	OnlyAtBOL = YES;
	Command = "if";
	Expressions = "<#condition#>";
	CompletionPrefix = if;
	CycleList = (
		c.block.if,
		c.block.ifelse,
	);
},

와 같은 code block이 나오는데 이 부분을 적당히 검색 하셔서 삭제 또는 주석처리(/* ~ */) 하시면 됩니다.

수정한 뒤 Xcode를 재시작 하면 제대로 적용된 것을 보실 수 있습니다.

이 부분을 이용하여 자기가 원하는 자동완성을 등록해도 됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2010/08/09 17:19 2010/08/09 17:19
, ,
Response
15 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/255

Android SDK 문제 해결

Android SDK를 다운로드한 뒤 tools/android update sdk 를 실행하면

Failed to fetch URL https://dl-ssl.google.com/andr oid/repository/repository.xml

와 같이 오류가 발생할 때가 있습니다.
이럴땐

~/.android/androidtool.cfg 파일을 열어

sdkman.force.http = true

라고 입력 한 뒤 재시도 하면 됩니다. (파일이 없으면 생성)
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2009/12/04 10:19 2009/12/04 10:19
Response
7 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/254

Ubuntu 에서 man page 보기

기본으로 설정 되어 있는 Ubuntu 환경에서는 man page가 보이지 않는다.

이럴 경우 다음과 같은 package 추가를 통해 man page를 사용할 수 있다.

sudo apt-get install manpages-dev
크리에이티브 커먼즈 라이센스
Creative Commons License

Posted by 장현준

2009/12/01 17:46 2009/12/01 17:46
,
Response
9 Trackbacks , No Comment
RSS :
http://b4you.net/blog/rss/response/253

« Previous : 1 : 2 : 3 : 4 : 5 : ... 25 : Next »

블로그 이미지

빗소리를 먹는 사람.

- 장현준

Notices

Archives

Authors

  1. 장현준

Recent Trackbacks

Calendar

«   2017/09   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

Site Stats

Total hits:
1714566
Today:
3721
Yesterday:
3980