<

Visual Studio 사용하다 보면 최근 열어본 프로젝트나 파일이 시작화면과, 파일 메뉴에 노출이 된다.


가끔 이 목록을 삭제할 필요가 있는데 찾아보니 레지스트리에서 항목을 삭제해 주면 된다.


HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0(버전명)\FileMRUList

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0(버전명)\ProjectMRUList


FileMRUList : 최근 열어본 파일 목록


ProjectMRUList : 최근 열어본 프로젝트 목록




심심해서 로또 번호 생성 코드를 짜봤다.


일단 로또번호는 1부터 45까지의 수에서 중복없이 6개로 이뤄진다.


그래서 rand함수로 번호를 뽑은다음, 중복값인지 체크하는 루틴도 있어야 한다.


배열 이용하는 방법이 가장 쉽고 간편하지만, 여기서는 STL 리스트를 이용해 본다.


#define LOTTONUM 6

	std::list listNum;
	srand((unsigned)time(NULL));
	int nNum = 0;
	listNum.clear();
	for (int i = 0; i < LOTTONUM; i++)
	{
		nNum = rand() % 45 + 1;

		if (std::find(listNum.begin(), listNum.end(), nNum) == listNum.end())
			listNum.push_back(nNum);
	}


프로그램을 짜다 보면 하드코딩이 아닌 사용자가 입력한 텍스트로 수식을 계산해야 하는 경우가 종종 있다.


계산식이 하드코딩(hard coding)으로 짜면 매우 편하지만 계산식이 하나로 정해져있지 않거나 상황에 따라서 변경되는 경우에는 한계가 있다.


사용자가 정의한 수식은 텍스트 형태로 저장되므로 이를 파싱(parsing)하는 작업은 그리 어려운 작업은 아니다. 물론 4칙연산의 경우엔..



사용자가 입력한 수식에 x^2꼴이나 제곱근(√), 로그함수, 지수함수 등이 들어있으면 모두 대응하기가 어렵다.


따라서 개발 시간 단축과 스트레스 감소를 위해 관련 라이브러리를 사용하기로 한다.


관련된 라이브러리는 구글링하면 다양하게 나온다.


내가 선택한 라이브러리는 바로 muparser이다. 무엇보다 MIT라이센스로 사용에 별도의 제한이 없기 때문이다.


사용법은 여타 외부 라이브러리와 같다.


VS 프로젝트에 추가하고, include로 땡겨서 사용하면 된다.


예제에 나온 코드도 매우 심플하다.


#include 
#include "muParser.h"

// Function callback
double MySqr(double a_fVal) 
{ 
  return a_fVal*a_fVal; 
}

// main program
int main(int argc, char* argv[])
{
  using namespace mu;

  try
  {
    double fVal = 1;
    Parser p;
    p.DefineVar("a", &fVal); 
    p.DefineFun("MySqr", MySqr); 
    p.SetExpr("MySqr(a)*_pi+min(10,a)");

    for (std::size_t a=0; a<100; ++a)
    {
      fVal = a;  // Change value of variable a
      std::cout << p.Eval() << std::endl;
    }
  }
  catch (Parser::exception_type &e)
  {
    std::cout << e.GetMsg() << std::endl;
  }
  return 0;
}

DefineVar : 수식에 존재하는 a라는 문자를 fVal 값으로 정의

DefineFun : 수식에 존재하는 MySqr이라는 문자를 위에 정의한 Mysqr함수로 정의

SetExpr : 텍스트 형태의 수식. 여기에 수식을 입력하면 된다.

Eval() : 수식 계산


예제코드 조금만 보면 금방 응용이 가능하다.


그리고 반드시 try ~ catch 구문을 추가하여 올바르지 않은 수식이 들어왔을 경우 예외처리를 해주자.

내용 참고 : https://luckygg.tistory.com/55?category=684086


GigE Interface의 Vision을 사용한다면 Maker에서 권장하는 NIC가 있는데 대부분 인텔의 NIC를 추천하는 경우가 많다.


GigE Vision 사용시 끊김, 또는 지연 발생시 아래와 같은 설정을 통해 최적화를 해주는게 좋다.


  • 점보 프레임 또는 패킷(Jumbo Frame / Packet) : 설정값(최대치)- 9014Byte



  • 수신 버퍼(Receive Buffers) : 설정값(최대치) - 2048


  • 인터럽트 조절 속도(Interrupt Moderation Rate) : 설정값(최대치) - Extreme


https://iknowwhatyoudownload.com/en/peer/

위 주소로 접속하면 접속한 기기의 외부IP 기준으로 토렌트 다운로드 기록을 보여준다.



물론 100% 정확한 결과는 아니다.


대부분의 일반 인터넷 가입자는 유동IP(할당되는 IP가 고정이 아니라 모뎀이나 공유기에 상황에 따라 매번 다른 IP부여)이기 때문에 현재 IP를 다른 사람이 사용했을수도 있다.

정식 펌웨어(3.0.0.4.384_45149) 기준

좌측메뉴의 고급설정 → WAN → ISP의 특수요건입니다. → MAC 어드레스


+ Recent posts