반응형

프로그램을 짜다 보면 랜덤한 스트링을 사용해야 할 때가 간혹 있다.


보통 테스트를 할때 임의의 문자열 값이 필요할때가 그렇다.


C++ 로 짤때에는 char 배열에 a부터 z, 0부터 9 넣고

랜덤시드로 한개씩 찝어서 길이에 맞춰 스트링으로 만드는 함수를 사용했었다.



C#도 마찬가지로 비슷하게 작성해봤다.


        
private static Random random = new Random((int)DateTime.Now.Ticks & 0x0000FFFF); //랜덤 시드값

public static string RandomString(int _nLength = 12)
        {
            const string strPool = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";  //문자 생성 풀
            char[] chRandom = new char[_nLength];

            for (int i = 0; i < _nLength; i++ )
            {
                chRandom[i] = strPool[random.Next(strPool.Length)];
            }
            string strRet = new String(chRandom);   // char to string
            return strRet;
        }



반응형

현재 거주중인 곳에 KT의 하이브리드(?) 셋탑박스가 설치되어 있다.


평상시에는 Skylife 위성안테나를 통해 실시간 tv를 시청하고 기상이 안좋아 신호품질이 안좋을때 자동으로 kt iptv로 전환된다.


물론 vod서비스도 kt iptv 즉 네트워크를 통해 이용한다.


셋탑박스로  WAN이 연결되고 셋탑박스 LAN 포트에서 나오는 선이 공유기로 연결되서 무선랜을 사용할 수 있었다.


그런데 셋탑박스 전원을 꺼버리면 LAN포트가 죽으면서 무선랜과 각방 LAN포트를 사용할수 없게 되는거다.


대기전력도 그리 적을거 같진 않은데 이놈을 꺼버리고 싶었다.


그래서 공유기를 최상위에 두고 하위에 셋탑박스를 설치해보기로 했다.


좀 검색해보니 olleh skylife 셋탑박스는 별도의 사설ip로 서비스를 이용하는것 같다는 글을 찾아 볼 수 있었다.


그래서 최상위에 두어야만 작동한다는 내용.



그래도 해결방법은 있다.


공유기의 iptv 설정에서 해당 포트를 활성화해주면 된다.



'Network' 카테고리의 다른 글

ASUS 공유기 MAC주소 변경  (0) 2019.03.02
GoodbyeDPI 사용 HTTPS 차단 우회하기  (0) 2019.02.24
Angry IP scanner - 아이피, 포트 스캐너 (IP, Port scanner)  (1) 2015.05.05
IDC케이블 분해/조립하기  (0) 2013.06.26
Bluetooth  (0) 2013.03.12
반응형

프로그래밍을 하다 보면 입력 변위값에 대한 판정을 내리거나 입력받은 값의 유효성을 검사해야 될때가 많다.

 

예를 들어 1~100 까지의 정수만 허용이 되는데 110이 들어올때다..

 

물론 if문을 통해서 처리하는 방법이 가장 많이 쓰인다.

 

하지만 조건도 길어지고, 반복작업의 경우 지겹다;

 

그래서 템플릿 함수로 작성을 해봤다.

 

전역함수로 선언해놓고 여기저기서 끌어다 쓰면 편할듯 하다.

 

코드는 아래와 같다.

 

아.. 템플릿함수 정의는 헤더파일에서 해야한다. ( 관련글 : 

2018/07/09 - [Programming] - [C++]template 함수 사용간 error LNK2019 에러 발생 조치 방법)

 

 

 

 

 

 

template< typename type > 
extern bool IsInRange(type _min, type _max, type _val){ return ((_min <= _val) && (_val <= _max)); } 
 

 

 

피라메터는 3개다. 하한값, 상한값, 체크할 값

 

 

 

반응형

template을 사용하여 피라메터로 들어온 값을 계산하고 피라메터로 받은 range에 따라 true/false 반환하는 함수를 만들었는데


LINK2019 에러가 자꾸 발생한다.


구글링해보니 선언만 있고 정의가 없을때 발생한다는데 .h와 .cpp에 선언과 정의 잘 되어 있는데 자꾸 에러가 나서 삽질만 반나절 했다.


점심 먹고 들어와서 다시 템플릿은 클래스가 아니다 말그대로 '틀'일 뿐이다, 라는 설명과 함께 한곳에서 선언과 정의가 이뤄저야 한다는 것이다.


이것이 뭔말이냐 하면 그냥 헤더파일에 선언과 함께 동시에 정의까지 해버리라는거다.


선언부 ( test.h)

 template< typename type > extern bool IsInRange(type _min, type _max, type _val);

정의부 (testcpp)

template< typename type > bool IsInRange(type _min, type _max, type _val)
{
	return ((_min <= _val) && (_val <= _max)); 
}

위와 같이하면 LINK2019 에러 발생한다.


따라서 아래와 같이 헤더파일에 선언 정의 동시에 해줘야 한다.


template< typename type > extern bool IsInRange(type _min, type _max, type _val){ return ((_min <= _val) && (_val <= _max)); }


물론 선언과 정의를 따로 하는 방법도 있을것이다. 


헤더에 정의를 해도 무방할정도의 짧은 코드이기 때문에 이 방법을 사용한것이다.







반응형
isalpha()

 함수형태 

 isalpha(int c)

 파라미터

 c − 확인할 문자(ASCII)

 리턴

 0 != c가 알파벳, 0 = c는 알파벳이 아님




isdigit()

 함수형태 

 isdigit(int c)

 파라미터

 c − 확인할 문자(ASCII)

 리턴

 0 != c가 숫자, 0 = c는 숫자가 아님




	CString strTest = _T("ABCDEFG01234");
	if (isalpha(strTest[2]))
	{
		// true
		// ...
	}
	else
	{
		// false
		// ...
	}
	if (isdigit(strTest[7]))
	{
		// true
		// ...
	}
	else
	{
		// false
		// ...
	}


반응형

4월 Windows 업데이트 이후 디스크 목록에 800MB짜리 OEM 파티션이 보이기 시작했다.


보여도 상관없긴 하다만, 해당 디스크에 저장공간이 부족하다고 자꾸 알림이 떠서 숨기기로 하고 찾아봤다.


방법은 아래와 같다.


1. 명령 프롬프트 실행 (시작 - 실행 - CMD)


2. diskpart


3. list volume


4. select volume 지우고자 하는 드라이브 볼륨번호 (ex. 2)


5. remove letter 지우고자 하는 드라이브 문자 (ex. H)



+ Recent posts