300x250
반응형

이 글을 보시는 분들은 다른사이트에서 

session.cookie_lifetime  

session.cache_expire 

관련 변수를 변경하였는데 세션유지가 안되서 이 글을 보고있을 껍니다.

 

 

세션 설정 외에도 GC(c#의 garbage collection) 이라고 하는 동작이 있습니다.

관련 설정 변수는 아래 3개 입니다. 아마 아래와 같은 기본값으로 설정되어 있을껍니다.

session.gc_probability = 0

session.gc_divisor = 1000    <-- 1/1000 으로 0.1% 확률로 쿠키파일이 청소 됩니다.

session.gc_maxlifetime = 0

 

 

아래와같이 수정해보세요

저는 etc/php/5.6/apache2 경로에 있는 php.ini를 수정하겠습니다.

 

아래와 같이 vi 편집기로 php.ini 파일을 열어줍니다.

 

session.cookie_lifetime = 0

session.cache_expire = 14400  (분단위)

session.gc_maxlifetime = 65535    <-- 대략 16시간 마다 쿠키파일이 청소되게 하였습니다. (초단위)

 

 

:wq! 로 수정 후 나와서

아래와 같이 꼭 아파치를 재시작 해줘야 합니다.

service apache2 restart

 

 

세션 30일 저장 만든 php 설정 값 입니다.

 

 

 

자동 로그인 처리(저장된 세션 쿠키 사용)

 

로그인 시 savesession 이라는 쿠키를 만들어서 PHPSESSIONID 값을 저장 합니다.

이후 브라우저를 다시 켰을때 만약 savesession 쿠키 값이 있으면
저장했던 savesessino 쿠키 값으로 PHPSESSIONID 필드를 만들어서 값을 넣습니다.

이렇게 되면 서버에 세션(30일)이 남아있는한 무한 자동 로그인이 됩니다.

 

 

 

 

 

세션정보는 파일관리로 했을경우 아래 경로에 저장 됩니다.

/var/lib/php/sessions 

만약 세션설정이 실패 했다면, 이 경로의 파일들의 수정날짜를 보면 30분전 파일은 다 지워진걸 확인 할 수 있습니다.

 

php 소스에서 수정시에는 session_start 하는 코드에 입력되어야 합니다.

session_cache_limiter('private');
ini_set("session.cookie_lifetime", "0");
ini_set("session.cache_expire", "14400");
ini_set("session.gc_maxlifetime", "2592000");

session_start();

 

300x250
반응형
300x250
반응형

김해 장유에 있는 모산스시에 다녀왔습니다.

장유에서 맛볼수 없는 퀄리티의 오마카세 입니다.

메뉴는 아래와 같습니다.

맛있습니다. 맛있다는 말밖엔 할게 없군요 ㅎㅎ

강추 강추

아래 사진들을 보시죠 ㅎㅎ

우니가 올라가있는 감자입니다. 감태에 싸먹습니다 ㅎ

맛있게 먹고 갑니다 ㅎㅎ

 

  
모산

경상남도 김해시 율하4로 46 엔스퀘어 1층 122,123호

 

 
300x250
반응형

'후기 > 맛집후기' 카테고리의 다른 글

부산 - 수영산8193  (0) 2022.09.29
부산 - 소수인  (0) 2022.09.15
부산 파라다이스호텔 사까에  (0) 2022.08.25
동일참치 (부산 대연점)  (0) 2022.08.25
산미정 (부산시 남구 대연동)  (0) 2022.08.25
300x250
반응형

부산 해운대 일식 코스 중 하나인

부산 파라다이스호텔 3층에 위치한 사까에를 방문 했습니다.

1인 190,000 인 시그니쳐 메뉴 입니다.

맥주 한잔에 21,000원 ㅋ

제일 처음 나오는 전채요리!

연어 알이라고 합니다!


참치가 입에서 녹습니다 ㅎ


1차 초밥


2차 초밥

초밥의 밥알이 입에서 따로 놉니다


연어!



마지막은 국수 입니다.

메뉴에 있는 주방장 추천 메뉴 입니다.

여기는 양보다는 음식이 질이 다르네요

사까에는 해운대 해변가 근처에 위치해 있습니다.

 

파라다이스호텔 부산

부산광역시 해운대구 해운대해변로 296

 

051-749-2248

영업시간

평일 12:00 - 14:30 Break time 14:30~18:00 평일 18:00 - 21:30

주말 12:00 - 15:00 Break time 15:00~18:00 주말 18:00 - 22:00

주차가능

예약필수

300x250
반응형

'후기 > 맛집후기' 카테고리의 다른 글

부산 - 수영산8193  (0) 2022.09.29
부산 - 소수인  (0) 2022.09.15
김해 장유 모산 [ 오마카세 ]  (0) 2022.08.25
동일참치 (부산 대연점)  (0) 2022.08.25
산미정 (부산시 남구 대연동)  (0) 2022.08.25
300x250
반응형

대연역 근처에 있는 동일참치 집으로 갔습니다~


리필 코스 메뉴를 주문하였습니다.


먼저 집게다시가 나옵니다 ㅎ


빨간고기가 나오네요 ㅎ


참치는 역시 하얀 핑크색 고기죠 뱃살 ㅋ

간장이 배달로 먹는것과는 다른거 같네요. 참치와 잘 맛네요


5번 리필로 먹은것 같네요 ㅎ (너무 먹은듯...)


맛있습니다 ㅎ


초밥도 맛있네요 ㅎ


벽에는 일본풍 인테리어가 ㅎ



냉모밀도 맛있네요 ㅎ


새우 + 고구마 튀김 ㅋ


사장님이 참치머리 서비스를 주시네요 ㅎ

서비스가 아닌가? -_-? 모르겠네요 ㅎ


사시미 칼보세요 비싸보입니다 ?


 
 
 

 

 
참치 서비스

잘먹고 갑니다 사장님 ㅎ

담에또 갈께요 ㅎㅎ

 


 
 
 
동일참치대연점

부산광역시 남구 진남로 7-3

 

부산시 지하철 2호선 대연역 근처 5분거리 바로 있습니다!

300x250
반응형

'후기 > 맛집후기' 카테고리의 다른 글

부산 - 수영산8193  (0) 2022.09.29
부산 - 소수인  (0) 2022.09.15
김해 장유 모산 [ 오마카세 ]  (0) 2022.08.25
부산 파라다이스호텔 사까에  (0) 2022.08.25
산미정 (부산시 남구 대연동)  (0) 2022.08.25
300x250
반응형

오늘저녁은 산미정에서 왕갈비탕 배달입니다.!

왕갈비탕 1인분 15,000 원




오랜만에 먹는데 국물이 진하고 고기가 가득합니다.

맛이 다시 돌아온것 같아요.


잘먹었습니다 ㅎㅎ


산미정

부산광역시 남구 수영로219번길 9 1층

 

대연역 근처 6번출구 5분 거리에 있습니다!

 

300x250
반응형

'후기 > 맛집후기' 카테고리의 다른 글

부산 - 수영산8193  (0) 2022.09.29
부산 - 소수인  (0) 2022.09.15
김해 장유 모산 [ 오마카세 ]  (0) 2022.08.25
부산 파라다이스호텔 사까에  (0) 2022.08.25
동일참치 (부산 대연점)  (0) 2022.08.25
300x250
반응형

 

 

 

SQLLite 라는 프로그램 기준으로 작성하였습니다.

 

 

[ 기본 테이블 구조 ]

 

쿼리를 날리기전 테이블 구조는 아래와 같습니다.

테이블 생성 쿼리

create table back_data(volume_sq integer primary key, data_dt datetime, value float, flow float, type integer )

 

 

 

인덱스 추가

 

data_dt, type 2개 항목을 인덱스 추가 하겠습니다. 추가되는 인덱스 명은 index1 입니다.

 

create index index1 ON back_data(data_dt, type)

                   [ 인덱스명]      [테이블명(컬럼, 컬럼 ...)]

 

 

인덱스를 추가하게 되면 인덱스 명 Index1 이라는 항목에 data_dt, type 2항목이 추가된걸 볼 수 있습니다.

 

 

 

 

 

 

300x250
반응형
300x250
반응형

 

 

 

 

걸으면 메디블록이 적립

 

오늘은 좋은 앱이 있어서 앱을 소개 해 드립니다.

건강하게 하루 최대 1만보 걷고 메디블록 코인을 받아보아요

2000, 5000, 10000 걸음 당 받을 수 있습니다.

현재 코인 가격이 저점이라 이기회에 많이 모아보아요

하루 7메디 블록 적립 가능

( 현재 시세로 약 원화 : 190원)

 

메디블록은 업비트에 상장된 코인입니다

 

 


 

 

 

저는 현재 22 코인을 벌었습니다.

(약 598 원 ㅋ)

 

 

 

 

 


 

 

 

사진 설명을 입력하세요.

 

 

 

 

 

[ 초대코드로 가입하기 ]

초대 코드 : AU9H01

가입 시 초대코드를 입력하면 3개의 코인을

더 받을 수 있습니다.

감사합니다 ^^

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

300x250
반응형
300x250
반응형

 

 

[ 프로그램 UI ]

프린트 버튼을 누르면

 

위와 같이 프린트 다이얼로그가 뜨면서 인쇄할 수 있습니다.

(프린트 다이얼로그가 안뜨게 하는 코드도 첨부)

 

 

[ 주요 메인 코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
void CPrintTestDlg::OnBnClickedButton1()
{
    CTime t = CTime::GetCurrentTime();
    CString str_time;
 
    int temp_year = (int)(t.GetYear() / 100* 100;
    temp_year = t.GetYear() - temp_year;
 
    str_time.Format(_T("Capture_%02d%02d%02d_%02d%02d%02d.png"), temp_year, t.GetMonth(),
        t.GetDay(), t.GetHour(), t.GetMinute(), t.GetSecond());
    save_path_png_ = GetExecutedPath() + str_time;
 
    //1. 이미지 저장
    Capture(save_path_png_);
 
    //2. 이미지 프린트
    PrintOutImage(save_path_png_);
 
    //3. 파일 삭제
    DeleteFile(save_path_png_);
}
 
cs

버튼을 누르면 현재 시간으로 파일 경로를 만듭니다.  그 이 후

 

1. Capture() : 이미지 캡쳐 및 저장 함수 ( 듀얼 모니터 인식 )

2. PrintOutImage() : 이미지 출력 함수 ( 출력 다이얼로그 ON / OFF 가능)

3. DeleteFile() : 파일 삭제 함수

 

와 같은 순으로 함수가 호출 됩니다.

 

 

[ 나머지 함수 코드 ]

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
 
CString CPrintTestDlg::GetExecutedPath()
{
    //실행파일 경로 구하는 함수
    CString strResult;
    CString strPath;
 
    if (GetModuleFileName(nullptr, strPath.GetBuffer(_MAX_PATH + 1), MAX_PATH) != FALSE)
    {
        strPath.ReleaseBuffer();
        strResult = strPath.Left(strPath.ReverseFind('\\'+ 1);
    }
 
    return strResult;
}
 
 
CPoint CPrintTestDlg::GetPopupOffset()
{
    CPoint point;
 
    CRect rect;
    this->GetWindowRect(rect); // 메인 다이얼로그 Rect를 받아야 함
    point.x = rect.left;
    point.y = rect.top;
 
    return point;
}
 
 
void CPrintTestDlg::Capture(CString file_name)
{
    CRect rect;
    GetClientRect(rect);
 
    CWnd* pWndDesktop = GetDesktopWindow();
    CWindowDC ScrDC(pWndDesktop);
 
 
    int sx = rect.left;
    int sy = rect.top;
 
    const CPoint offset = GetPopupOffset();
    sx += offset.x;
    sy += offset.y;
 
    int cx = rect.Width();
    int cy = rect.Height();
 
    CImage Image;
    (void)Image.Create(cx, cy, ScrDC.GetDeviceCaps(BITSPIXEL));
    CDC* pDC = CDC::FromHandle(Image.GetDC());
    (void)pDC->BitBlt(00, cx, cy, &ScrDC, sx, sy, SRCCOPY);
    Image.ReleaseDC();
 
    CString str_save;
    str_save = file_name;
    long result = Image.Save(str_save, Gdiplus::ImageFormatPNG);
 
    if (result < 0)
    {
        (void)AfxMessageBox(_T("캡쳐 오류"));
    }
}
 
 
void CPrintTestDlg::PrintOutImage(CString file_name)
{
    int nWidth, nHeight;
    CClientDC dc(this);//this->pImgWnd
    CDC MemDC;
    MemDC.CreateCompatibleDC(&dc);
 
    CRect rect;
    GetClientRect(rect);
    nWidth = rect.Width();
    nHeight = rect.Height();
 
    CBitmap BMP;
 
    CImage image;
    image.Load(file_name);
    if (image.IsNull() == false)
    {
        int si = image.GetWidth();
        int sih = image.GetHeight();
        BMP.Attach(image.Detach());
 
        HANDLE hDib;
        LPSTR pDib;
        LPBITMAPINFO lpBitInfo;
        HANDLE hlpBitInfo;
 
        hDib = GlobalAlloc(GHND, nWidth*nHeight * 3);
        pDib = (LPSTR)GlobalLock(hDib);
        hlpBitInfo = GlobalAlloc(GHND, sizeof(BITMAPINFOHEADER) + sizeof(BITMAPINFO));
        lpBitInfo = (LPBITMAPINFO)GlobalLock(hlpBitInfo);
 
        lpBitInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
        lpBitInfo->bmiHeader.biWidth = nWidth;
        lpBitInfo->bmiHeader.biHeight = nHeight;
        lpBitInfo->bmiHeader.biPlanes = 1;
        lpBitInfo->bmiHeader.biBitCount = 24;
        lpBitInfo->bmiHeader.biCompression = BI_RGB;
        lpBitInfo->bmiHeader.biSizeImage = nWidth * nHeight * 3;
        lpBitInfo->bmiHeader.biXPelsPerMeter = 0;
        lpBitInfo->bmiHeader.biYPelsPerMeter = 0;
        lpBitInfo->bmiHeader.biClrUsed = 0;
        lpBitInfo->bmiHeader.biClrImportant = 0;
 
        HDC hdc = ::GetDC(this->m_hWnd);
        GetDIBits(hdc, (HBITMAP)BMP, 0, nHeight, pDib, lpBitInfo, DIB_RGB_COLORS);
        ::ReleaseDC(this->m_hWnd, hdc);
 
        static DOCINFO docinfo = { sizeof(DOCINFO), _T("프린트"), NULL };
 
 
        //팝업창 안띠우고 기본 설정 프린터로 인쇄
        //CPrintDialog dlg(TRUE, PD_RETURNDEFAULT);
        //dlg.DoModal();
 
        //팝업창 뛰우고 프린터 선택해서 인쇄
        CPrintDialog dlg(FALSE);
        if (dlg.DoModal() == IDCANCEL)
        {
 
        GlobalUnlock(hDib);
        GlobalFree(hDib);
        GlobalUnlock(hlpBitInfo);
        GlobalFree(hDib);
 
        DeleteObject(BMP.m_hObject);
 
        DeleteDC(MemDC.m_hDC);
        DeleteDC(dc.m_hDC);
 
        return;
        }
 
 
        DEVMODE *pDevmode = (DEVMODE*)dlg.GetDevMode();
        pDevmode->dmOrientation = 2;
        
        HDC hpdc = dlg.CreatePrinterDC();
 
        int cy = GetDeviceCaps(hpdc, VERTRES);
        int cx = GetDeviceCaps(hpdc, HORZRES);
 
        if (StartDoc(hpdc, &docinfo))
        {
            if (StartPage(hpdc))
            {
                StretchDIBits(hpdc,
                    00, cx, cy, 0, nHeight - sih, si, sih, pDib, lpBitInfo, DIB_RGB_COLORS, SRCCOPY);
                //image.StretchBlt(image.GetDC(), 0, 0, nWidth, nHeight, SRCCOPY);
                EndPage(hpdc);
            }
            EndDoc(hpdc);
        }
 
        GlobalUnlock(hDib);
        GlobalFree(hDib);
        GlobalUnlock(hlpBitInfo);
        GlobalFree(hlpBitInfo);
 
        DeleteObject(BMP.m_hObject);
 
        DeleteDC(dc.m_hDC);
        DeleteDC(MemDC.m_hDC);
        ::RestoreDC(hpdc, -1);
    }
}
cs

GetExecutedPath(); // 실행 파일 경로 확인
GetPopupOffset(); // 듀얼 모니터 좌표인식
Capture(CString file_name); : 화며 캡쳐 및 이미지 저장
PrintOutImage(CString file_name); : 출력

 

 

[소스파일 다운로드] 아래

PrintTest.zip
3.48MB

300x250
반응형

+ Recent posts