CSharp
2017.12.29 16:19

윈도우 타이틀명으로 창닫기

조회 수 1548 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

예제코드

[DllImport("user32.dll")]
public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);

[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

[DllImport("user32.dll")]
public static extern int SetForegroundWindow(IntPtr hWnd);



public void CloseWindowByTitleText(string titleTxt)
{
    try
    {
        if (titleTxt.Length > 0)
        {
            IntPtr hWnd = FindWindow(null, titleTxt);

            if (hWnd != IntPtr.Zero)
            {
                SetForegroundWindow(hWnd); // 윈도우 활성화
                SendMessage(hWnd, 0x0010, 0, 0); // 종료 메시지 보냄
                // SendKeys.Send("{ENTER}"); // 엔터키를 누름
                // SendMessage(hWnd, 0x102, (int)Keys.Enter, 0); // 엔터키 메시지를 보냄
            }
        }
    }
    catch (Exception err)
    {
        Console.WriteLine(err.StackTrace);
    }
}

CSharp
2017.11.10 10:43

Properties config 파일 위치 열기

조회 수 339 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
string path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
MessageBox.Show(path);
if (File.Exists(path)) {
    Process.Start(new ProcessStartInfo("explorer.exe", " /select, " + path));
}

Python
2013.11.19 17:23

E-mail 전송

조회 수 125777 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
# coding: utf-8
# 이메일을 보내기 위한 smtplib 모듈을 import 한다
import smtplib

# 이메일을 보내기 위한 email 모듈을 import 한다
# MIME (Multipurpose Internet Mail Extensions) 는 전자우편을 위한 인터넷 표준이라고 한다.
from email.mime.text import MIMEText

def send_email(from_mail, to_mail, subject, msg):
    # 읽어들인 파일의 텍스트를 MIME 형식으로 바꾼다.
    msg = MIMEText(msg)

    # me == 보내는 사람의 이메일 주소
    # you == 받는 사람의 이메일 주소
    msg['Subject'] = subject # 이메일 제목
    msg['From'] = from_mail
    msg['To'] = to_mail

    # 로컬 SMTP 서버가 없을 경우 계정이 있는 다른 서버를 사용하면 된다.
    s = smtplib.SMTP_SSL('smtp.gmail.com', 465)
    s.login("로그인ID", "로그인암호")
    s.sendmail(from_mail, to_mail, msg.as_string())
    s.quit()

send_email("송신자이메일주소", "수신자이메일주소", "test e-mail", "For test")
TAG •

Cpp
2013.11.01 10:37

Makefile - wildcard

조회 수 26728 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

컴파일해야할 파일이 main.c, a.c, b.c, c.c가 있다면 아래와 같이 Makefile을 작성한다.

SRC = main.c
SRC += a.c
SRC += b.c
SRC += c.c

아래와 같이하면 더 간편해진다.

SRC = $(wildcard *.c)

이렇게 하면 파일을 추가하더라도 Makefile을 수정할 필요가 없겠군~ 

TAG •

CSharp
2013.04.26 11:36

비동기 소켓 클라이언트

조회 수 52874 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

비동기 소켓 클라이언트 클래스 만들어 봄.

.NET Compact Framework 2.0 용

사용법)

private void SockDataReceived(Socket sock, byte[] data, int readBytes)
{
  // 수신된 메시지 처리
}

...
AsyncSocketClient asc = new AsyncSocketClient();
asc.StartSend("192.168.1.100", 7788, "hello world\r\n", this.SockDataReceived, true);
...

현재 ASCII 엔코딩만 지원함.ㅋㅋㅋ

public class AsyncSocketClient
    {
        private byte[] txMessage;
        private Socket client;
        private Boolean doEndConnection;
        private DataReceivedCallback dataReceivedCallback;

        public delegate void DataReceivedCallback(Socket sock, byte[] data, int bytesRead);
        private class StateObject
        {
            // Client socket.
            public Socket workSocket = null;
            // Size of receive buffer.
            public const int BufferSize = 256;
            // Receive buffer.
            public byte[] buffer = new byte[BufferSize];
            // Received data string.
            public StringBuilder sb = new StringBuilder();
        }

        public AsyncSocketClient()
        {
            this.txMessage = null;
            this.client = null;
            this.doEndConnection = false;
            this.dataReceivedCallback = null;
        }

        public void SetDataReceivedCallback(DataReceivedCallback callback)
        {
            this.dataReceivedCallback = new DataReceivedCallback(callback);
        }

        private void ConnectCallback(IAsyncResult ar)
        {
            Socket s = (Socket)ar.AsyncState;
            try
            {
                s.EndConnect(ar);

                // 연결되었으면
                if (s.Connected)
                {
                    // 전송할 메시지가 있으면
                    if (this.txMessage != null)
                    {
                        // 전송한다.
                        s.Send(this.txMessage);
                    }
                    if (this.dataReceivedCallback != null)
                    {
                        // 수신시작
                        StateObject state = new StateObject();
                        state.workSocket = s;
                        s.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(this.ReceiveCallback), state);
                    }
                }
                else
                {
                    // 소켓 리소스 해제
                    s.Shutdown(SocketShutdown.Both);
                    s.Close();
                }
            }
            catch (Exception) { }
        }

        private void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                StateObject state = (StateObject)ar.AsyncState;
                Socket client = state.workSocket;

                int bytesRead = client.EndReceive(ar);

                if (bytesRead > 0)
                {
                    // There might be more data, so store the data received so far.
                    state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));

                    // 응용의 콜백 호출
                    if (this.dataReceivedCallback != null)
                    {
                        byte[] recvData = Encoding.ASCII.GetBytes(state.sb.ToString());
                        this.dataReceivedCallback(client, recvData, recvData.Length);
                    }

                    if (this.doEndConnection)
                    {
                        client.Shutdown(SocketShutdown.Both);
                        client.Close();
                    }
                    else
                    {
                        // Get the rest of the data.
                        client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(this.ReceiveCallback), state);
                    }
                }
                else
                {

                    if (client.Connected)
                    {
                        client.Shutdown(SocketShutdown.Both);
                        client.Close();
                    }
                }
            }
            catch (Exception e)
            {
                e.ToString();
            }
        }

        /// <summary>
        /// 현재 연결되어 있는 상태에서 전송하고 싶은 때 사용하라
        /// </summary>
        /// <param name="msg">전송하고싶은 문자열</param>
        /// <returns></returns>
        public Boolean Send(String msg)
        {
            if (this.client == null) return false;
            if (this.client.Connected == false) return false;
            return this.client.Send(Encoding.ASCII.GetBytes(msg)) > 0;
        }

        /// <summary>
        /// 최초 전송시작시 사용하라
        /// </summary>
        /// <param name="serverIP">대상 IP</param>
        /// <param name="port">대상 포트</param>
        /// <param name="msg">전송할 메시지</param>
        /// <param name="rxCallback">데이터 수신 콜백</param>
        /// <param name="doEndConnection">데이터 수신후 접속종료 여부</param>
        /// <returns></returns>
        public Boolean StartSend(String serverIP, int port, String msg, DataReceivedCallback rxCallback, Boolean doEndConnection)
        {
            // 이미 연결되어 있으면 소켓을 종료시킨다.
            if (this.client != null && this.client.Connected)
            {
                this.client.Shutdown(SocketShutdown.Both);
                this.client.Close();
            }

            this.client = null;
            this.doEndConnection = doEndConnection;
            this.SetDataReceivedCallback(rxCallback);

            try
            {
                // 소켓 생성
                IPAddress ipAddress = IPAddress.Parse(serverIP);
                IPEndPoint ipEP = new IPEndPoint(ipAddress, port);
                this.client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                // 전송할 데이터 지정
                this.txMessage = System.Text.Encoding.ASCII.GetBytes(msg);
                // 연결 시작
                IAsyncResult asyncResult = client.BeginConnect(ipEP, new AsyncCallback(this.ConnectCallback), this.client);
            }
            catch (Exception)
            {
                if (this.client != null)
                {
                    if (this.client.Connected)
                    {
                        this.client.Shutdown(SocketShutdown.Both);
                        this.client.Close();
                    }
                }
                return false;
            }
            return true;
        }
    }

Python
2012.12.14 16:10

django / DB 강제 갱신

조회 수 44786 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

>>> MyModel.objects.count()
885
# (Here I added some more data from another process.)
>>> MyModel.objects.count()
885
>>> MyModel.objects.update()
0
>>> MyModel.objects.count()
1025

http://stackoverflow.com/questions/3346124/how-do-i-force-django-to-ignore-any-caches-and-reload-data
TAG •

Cpp
2012.11.15 14:51

gcc 4.3.x __attribute__((packed))

조회 수 22827 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

Example)

#include <stdio.h>

typedef unsigned char UINT8;
typedef unsigned short int UINT16;

typedef struct __test_type {
    UINT8 id:8;
    UINT8 type:3;
    UINT8 reserved:5;
} TEST_T;

Alignment

id              Mxxxxxxx.00000000
type            00000000.00000Mxx
reserved        00000000.Mxxxx000

M은 MSBit이며,
각 타입의 크기 단위로 오른쪽 비트부터 채워진다.
Unpack할 때 유의하자.



조회 수 20814 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

버전: Ext JS 4 (4.0.1), Ext.grid.Panel

...
doSomething: function(gridView) {
    console.debug('do something...');
},
listeners: {
    ...
    afterrender: function(grid) {
        var view = grid.getView();
        if(view) {
            view.on('refresh', grid.doSomething, grid);
        }
    }
    ...
}
...
TAG •

조회 수 32676 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

데이터가 추가될 때마다 아래 코드를 호출하면, 맨 밑으로 자동 스크롤 됨

richEditCtrl.LineScroll(richEditCtrl.GetLineCount())
TAG •

조회 수 28014 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

Thread 안에서 컨트롤 속성을 변경하고 싶을 때는 아래와 같이 한다.

delegate void SetTextCallback(string text);

// This event handler creates a thread that calls a 
// Windows Forms control in a thread-safe way. 
private void setTextSafeBtn_Click( 
            object sender, 
            EventArgs e)
{
    this.demoThread = 
    new Thread(new ThreadStart(this.ThreadProcSafe));

    this.demoThread.Start();
}
// This method is executed on the worker thread and makes
// a thread-safe call on the TextBox control.
private void ThreadProcSafe()
{
    this.SetText("This text was set safely.");
}

// This method demonstrates a pattern for making thread-safe
// calls on a Windows Forms control. 
//
// If the calling thread is different from the thread that
// created the TextBox control, this method creates a
// SetTextCallback and calls itself asynchronously using the
// Invoke method.
//
// If the calling thread is the same as the thread that created
// the TextBox control, the Text property is set directly.

private void SetText(string text)
{
    // InvokeRequired required compares the thread ID of the
    // calling thread to the thread ID of the creating thread.
    // If these threads are different, it returns true.
    if (this.textBox1.InvokeRequired)
    { 
         SetTextCallback d = new SetTextCallback(SetText);
         this.Invoke(d, new object[] { text });
    }
    else
    {
         this.textBox1.Text = text;
    }
}
TAG •

Cpp
2011.08.02 13:44

pkg-config

조회 수 37701 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
# PKG_CONFIG_PATH 지정
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/local/lib/pkgconfig

# pkg-config 를 이용하여 대상 라이브러리의 컴파일 및 링크 옵션을 알 수 있다.
pkg-config --cflags --libs xerces-c

# 결과
-I/usr/local/include  -L/usr/local/lib -lxerces-c
TAG •

조회 수 50814 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
>>> convert_hexstr_to_str("30,31,32,33")
>>> '0123'

def convert_hexstr_to_str(s, delim=','):
    l = []
    if delim is None:
        for i in range(0, len(s), 2):
            l.append(s[i:i+2])
    else:
        l = s.split(delim)
    ss = ''
    for e in l:
        ss += chr(string.atoi(e, 16))
    return ss
TAG •

조회 수 33731 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
#include <iostream>
#include <string>
using namespace std;
class Base {
    private:
        string name;
    public:
        Base() {
            cout << "Base()" << endl;
        }
        Base(string name) {
            this->name = name;
            cout << "Base(" << this->name << ")" << endl;
        }
};

class Derived : public Base {
    public:
        Derived(string name);
};

Derived::Derived(string name) : Base(name)
{
    cout << "Derived()" << endl;
}

int main(void)
{
    Derived d("wittgens");
}
TAG •

Python
2011.05.06 10:27

JSON encoder and decoder

조회 수 29044 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

simplejson

JSON (JavaScript Object Notation): 경량 데이터 교환 형식으로 사용되는 자바 스크립트 문법 중의 하나이다.

Python에서의 JSON 모듈: simplejson


http://simplejson.github.com/simplejson/#

import simplejson as json

json.dumps([1,2,3,{'4': 5, '6': 7}], separators=(',',':'))
'[1,2,3,{"4":5,"6":7}]'


obj = [u'foo', {u'bar': [u'baz', None, 1.0, 2]}]

json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]') == obj

json.loads('"\\"foo\\bar"') == u'"foo\x08ar'

Cpp
2011.05.02 13:49

typeid()

조회 수 24074 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
#include <iostream>
#include <typeinfo.h>

class Base {
public:
   virtual void vvfunc() {}
};

class Derived : public Base {};

using namespace std;
int main()
{
   Derived* pd = new Derived;
   Base* pb = pd;
   cout << typeid( pb ).name() << endl;   //prints "class Base *"
   cout << typeid( *pb ).name() << endl;   //prints "class Derived"
   cout << typeid( pd ).name() << endl;   //prints "class Derived *"
   cout << typeid( *pd ).name() << endl;   //prints "class Derived"
   delete pd;
}

Python
2011.03.29 10:29

String 조작 예제 #1

조회 수 46279 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
def ascii_list(s):
    """return a list of ascii values of the characters in string s"""
    return [ord(c) for c in s]
 
s = 'cat'
alist = ascii_list(s)
print alist  # [99, 97, 116]
 
# manipulate the list elements
alist[0] += 1
alist[1] += 14
alist[2] -= 13
 
# convert ascii to char
clist = [chr(e) for e in alist]
# join to form a word
print "".join(clist)  # dog
TAG •


조회 수 31387 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
// 유닉스타임스탬프를 인자로 주면 현재일시를 스트링으로 반환한다.
char* from_unixtime(time_t unix_timestamp)
{
    static char szDatetime[25];
    struct tm *tm_infop;
    tm_infop = localtime(&unix_timestamp);
    memcpy(szDatetime, asctime(tm_infop), 24);
    szDatetime[24] = '\0';
    return szDatetime;
}
TAG •

Cpp
2010.08.31 09:47

CCITT CRC-16

조회 수 45872 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form


#define POLY 0x8408
/*
//                                      16   12   5
// this is the CCITT CRC 16 polynomial X  + X  + X  + 1.
// This works out to be 0x1021, but the way the algorithm works
// lets us use 0x8408 (the reverse of the bit pattern).  The high
// bit is always assumed to be set, thus we only use 16 bits to
// represent the 17 bit value.
*/

UINT16 CCITT_CRC16(char *data_p, UINT16 length)
{
    unsigned char i;
    unsigned int data;
    unsigned int crc = 0xffff;

    if (length == 0)
        return (~crc);

    do
    {
        for (i=0, data=(unsigned int)0xff & *data_p++;i < 8; 
                i++, data >>= 1)
        {
            if ((crc & 0x0001) ^ (data & 0x0001))
                crc = (crc >> 1) ^ POLY;
            else  crc >>= 1;
        }
    } while (--length);

    crc = ~crc;
    data = crc;
    crc = (crc << 8) | ((data >> 8) & 0xff);

    return (crc);
}


TAG •

Cpp
2010.07.15 11:14

Object Serialization Example

조회 수 36943 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    TestClass obj; // TestClass 클래스 객체 생성
    obj.init("delay_time", "ms", "UINT32", 4); // TestClass에는 init() 맴버 함수가 있다고 가정함.
    obj.set("012345"); // TestClass에는 set() 맴버 함수가 있다고 가정함.
    cout << "obj => " << obj << endl; // TestClass는 연산자 << 를 오버로딩함.

    fstream fs("mibentry.bin", ios::binary);
    // 객체 직렬화 - 쓰기
    fs.write((char*)&obj, sizeof(obj));

    MibEntry copied_obj;
    fs.seekg(0);
    // 객체 직렬화 - 읽기
    fs.read((char*)&copied_obj, sizeof(copied_obj));

    cout << "copied_obj => " << copied_obj << endl;
    return 0;
}
TAG •

Board Pagination Prev 1 2 3 4 Next
/ 4