고급 컴파일러 문제 풀이, 파싱 테이블, LL 파서 4.9 다음 『파서 문법』을 생각해보시오 lexp ⟶ atom | listatom ⟶ number | identifierlist ⟶ (lex-seq)lexp-seq ⟶ lexp, lexp-seq | lexp a. 이 문법에 대한 좌측 인수 분해한 결과의 파서 문법을 구하시오. lexp ⟶ atom | listatom ⟶ number | identifierlist ⟶ (lexp-seq)lexp-seq ⟶ lexp lexp-seq'lexp-seq' ⟶ , lexp-seq | ε b. 결과 문법의 비단말기호에 대한 First와 Follow 집합을 생성하시오. First(lexp) = { number, identifier, ( }First(atom) = { n..
C# Dictionary, ContainsValue, 인덱서, Clear 예제 3개 ContainsValue. 이 함수는 ContainsKey 보다 아주 느립니다. 전체를 순회하는 복잡한 선형 구조입니다. 모든 요소를 탐색하며 일치하는 항목을 찾거나, 순회가 끝나면 종료합니다. 123456789101112131415161718using System;using System.Collections.Generic; class Program{ static void Main() { Dictionary d = new Dictionary(); d.Add("cat", 1); d.Add("dog", 2); if (d.ContainsValue(1)) { Console.WriteLine(true); // True. } }} ..
C# 속도 최적화 9가지, 성능 튜닝 방법 타입 유추 일반적으로 C#에선 아래와 같이 (최적화 되기 전) 정의합니다. 1string MyString = “Hello World”;cs =의 우측에 하나의 데이터 타입(string)을 적어 선언하는 건 일반적입니다. (속도 또한 일반적) 근데, 이런 작업을 컴파일러가 대신하여 개선할 순 없을까요? 1var MyString = “Hello World”;cs 바로 위의 코드 또한 〈MyString〉라는 C# 문자열 변수를 생성합니다. 일반적인 상황에서 유추(inference)를 통해 처리 성능이 향상되진 않습니다. 컴파일 시, 어떤 작업 과정이든 데이터 타입을 먼저 생각하진 않습니다. 아래 예를 통해 유추를 알아볼 수 있습니다. 1234var SeniorStaf..
일본판 개인저축계좌 ISA 제도란, 소액투자 비과세 설명 2014년 일본판 개인 저축 계좌 제도(NISA) = 소액 투자 비과세 제도 시행. 1. NISA : Nippon Individual Savings Account - 은행 금융 그룹은 산하 은행과 증권사 간에 제휴를 통한 판매 전략 수립- 증권 금융 그룹은 2014년 한 해 1인당 1개 전용계좌 개설로 제한되었음- 증권사는 전용 상품과 기존 고객 선점에 주력함 주 요 내 용 1. 비과세 대상 상장주식 및 주식투자신탁의 양도차익과 배당소득 2. 비과세 투자액 연간 신규투자액 상항 100만엔 3. 비과세 투자총액 500만엔 (100만엔 * 5년) 4. 비과세 존속기간 최장 10년 5. 중도매각 제한없음 (단, 중도매각 금액만큼 재투자가 인정되지 않음)..
C++, QString -> std::string 변환 예제 소스 UTF-8 형식에서 작업할 때와 윈도우 환경에서 작업할 때 구현 소스가 조금 다릅니다. 1234567QString qs; // Either this if you use UTF-8 anywherestd::string utf8_text = qs.toUtf8().constData(); // or this if you're on Windows :-)std::string current_locale_text = qs.toLocal8Bit().constData();cs 출처는 스택 오버 플로우 출처 : How to convert QString to std::string? [링크] C++ QString -> std::string(CString) 변환 예..
[절세전략] 감가상각비 계산 방법과 정액법, 정률법 세금 아끼는 효과 감가상각 방법에는 정액법과 정률법이 있다 감가상각은 어느 회사를 막론하고 비용 중 중요한 위치를 차지하고 있다. 어떻게 관리하느냐에 따라 세금의 차이가 있다. 따라서 실무자이건 사장이건 관계없이 이에 대한 관심을 두고 있어야 한다. 절세 전략에 관심이 있어야 한다. 유형 자산은 시간이 지남에 따라 점차 소모되거나 파손되거나 경제적 여건의 변화 등으로 인해 효용 가치가 점차로 감소한다. 이 감소분을 측정하여 비용으로 처리하는 것은 매우 어렵다. 따라서 자산의 내용 연수에 걸쳐 감가상각비를 체계적으로 측정하는 방법이 필요하다. 크게 정액법과 정률법으로 구분해 볼 수 있다. - 정액법 : 내용 연수에 따라 균등하게 감가상각비를 배분하는 방법..
Visual Studio 텍스트 전체 찾기 버그 해결, 레지스트리 편집 방법 UI가 예쁜 2017 쓰다가 일이 생겨 2013을 쓰게 되었는데 느닷없이 찾기 버그가 생겼네요. VisualStudio 전체 찾기 버그- Ctrl + Shit + F로 전체 검색 시도- 전체 결과가 아닌 마지막 결과 1줄만 찾기 창에 나타남 전체 검색이 안 되다 보니 답답한 게 많았는데, 알고 봤더니 이거 비주얼스튜디오 버그였습니다. 해결책은 단순한데, 아래 코드를 텍스트 편집기에 붙여넣으세요. 그리고 확장자를 .reg로 하여 저장합니다. 파일 이름은 마음대로 지으세요. 12345678Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{73B7DC..
MFC 가이드, 코딩 표준 방법 3가지 (함수, 초기화, 반환, 변수, if문) MFC로 코딩하는 C++ 개발자분들이 보셔야할 표준 코딩 방법입니다. 큰 주제로 3가지, 기타 분류로는 십여가지가 있으니 천천히 가이드를 읽어보세요. 함수의 중간에서 리턴값을 보내지 마세요 함수의 중간에서 다른 코드의 로직으로 "점프"하도록 구성하면 코드를 이해하고 수정하는게 힘들어집니다. 항상 함수는 처음부터 끝까지 구동하는게 좋고 그렇지 않을 경우엔 함수 자체를 정리해야 합니다. (기능별 분할) 선언과 초기화 단 한번만 정의하면 되거나 정의된 이후 값이 변경되지 않는다면 const를 사용하세요. 은닉 변수(Shadow Variable)를 사용하지 마세요 아래는 너무나도 어처구니 없는 코드입니다. MFC 가이드에서 따로 소..
C언어 순차탐색, 이진탐색 코드 (Sequential Search, Binary Search) C언어로 구현한 두 개의 소스 코드를 소개합니다. 아마도 학교 다닐 때 구했던 소스 같은데 출처는 기억이 안 나네요. 1. C언어 순차탐색 코드 (Sequential Search) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859#include#include#include#include #define MAX_ELEMENTS 10000000Lint list[MAX_ELEMENTS]; int count; //수행횟수 int seqsearch(int list[], int ..
DevExpress GridControl Column Header 클릭 막기 (Click Disable) 그리드컨트롤 컬럼을 클릭하면 정렬이 됩니다. 하지만, 이 기능을 사용하고 싶지 않을 때가 있죠.그럴 경우 GridControl의 정렬 기능을 꺼두시면 됩니다. 클릭 자체를 막는 방법은 모르겠네요. 아무튼, UI 편집창에서 GridControl 디자이너를 엽니다. 그리고 아래 순서에 맞춰 설정값들을 변경하세요. Main Columns - Columns 선택 1. OptionsColumn - AllowSort : False2. OptionsFilter - AllowAutoFilter : False3. OptionsFilter - AllowFilter : False 위 그림처럼 따라해보세요. 결과적으로 포..
MFC Edit Control 문자열 추가 (에디트 박스 텍스트, 에디트 컨트롤) MFC 에디트 컨트롤(Edit Control)에 텍스트를 추가하는 방법으로는 GetWindowText()를 호출한 다음에, 텍스트 정보를 불러들여 새로운 내용을 추가한 다음 SetWindowText()로 다시 설정하는 것이죠. GetWindowText() -> 텍스트 정보에 내용 추가 -> SetWindowText() 그렇지만, 이미 창의 텍스트에 길이가(GetLength()) 너무 길면, 매우 비효율적인 방법이 됩니다. 새로 설정한 텍스트에 맞춰 길이까지 매번 조절해야 하고, 그 때문에 발생할 UI의 전체 문제까지 생각해 보면 머리가 아픕니다. 그래서 위의 방법은 전반적인 방향 정도로만 생각하고 조금 다른 방법을 찾아서 ..
개인사업자 사무실 월세 때문에 세금이 늘어나는 이유 [창업 주의] 건물주가 개인사업자인 당신에게 월세를 낮춰 쓰자고 한다. 어떻게 할까? 사업장을 빌린 경우, 월세 등을 쓸 때 주의해야 한다. 만약 건물주의 요청에 따라 월세 금액을 낮추거나 보증금으로 기재하는 경우 비용으로 인정받는 부분이 낮아져 세금을 더 내는 결과를 불러온다. 건물주는 세금계산서의 금액을 실제보다 낮은 금액으로 (개인사업자에게) 교부해 주어 비용으로 처리할 수 있는 금액이 줄기 때문이다. 「예를 들어」 월세가 200만원 인데 건물주의 요청으로 100만원이 기재된 세금계산서를 받았을 때 적용세율이 38.5%라면 다음과 같이 세금을 추가로 부담하게 된다. 38.5% 적용 세율 예시 추가로 부담하는 세금= 월 1,000,000원 X 12개..