"분류 전체보기"에 해당되는 글 - 371건
- 2018.08.03 VirtualBox 화면 크기 조정
- 2018.07.27 구글 프로토콜 버퍼 C++ Window 예제 (Google Protocol buffer)
- 2018.07.27 Cygwin 설치 설정 방법
- 2018.07.15 티스토리 에드센스에 좋은 스킨으로 바꾸자!
- 2018.07.08 네이버에서 검색되도록 하는 법
- 2018.07.08 티스토리 스킨 변경하는 법
- 2018.07.05 기본 서버 예제의 문제점
- 2018.06.30 C4996 inet_addr Error Solution
- 2018.06.22 VBA 오류들
- 2018.06.20 서버 파싱 중 이진수 데이터 조합
Post
버츄얼박스 메뉴
파일 - 환경설정 -입력
호스트 키 조합을 Ctrl + Alt
하고 나서 호스트 키 + C 하면 스케일 모드로 전환된다고 뜬다.
전환 누르면 virtualBox 화면 크기를 마음대로 조정할 수 있다
'이전게시판 > etc' 카테고리의 다른 글
visual studio 2017 빈 프로젝트 만들기 (0) | 2018.09.30 |
---|---|
Jenkins svn, msbuild 설정 (0) | 2018.09.13 |
Jenkins MSBuild 오류 해결방법 (0) | 2018.09.13 |
Unable to access the repository Jenkins (0) | 2018.09.12 |
VirtualBox 호스트 게스트 연결 (0) | 2018.08.29 |
VisualSVN Server 설치 및 설정 (0) | 2018.08.22 |
Jenkins(젠킨스) Window 설치 Unlock Jenkins (0) | 2018.08.20 |
VirtualBox 복사 붙여넣기 (0) | 2018.08.20 |
Post
프로젝트 실행 후 알맞은 데이터를 입력한다.
'이전게시판 > Server' 카테고리의 다른 글
IOCP window 채팅 클라이언트 소스 (0) | 2018.10.04 |
---|---|
IOCP 채팅 서버 소스 예제 (0) | 2018.10.04 |
C4996 에러 (0) | 2018.09.28 |
LNK2019: __imp__closesocket@4 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다. (0) | 2018.09.28 |
기본 서버 예제의 문제점 (0) | 2018.07.05 |
C4996 inet_addr Error Solution (0) | 2018.06.30 |
ip주소 추적 (0) | 2018.04.21 |
hosts파일, DNS (0) | 2018.04.21 |
Post
구글 프로토콜 버퍼를 Window에서 사용하려고 이것저것 검색하다보니
윈도우에서 리눅스 프로그램을 사용할 수 있는 Cygwin 을 알게되었다.
설치는 어렵지 않았지만 몇가지 삽질했던 것을 적어본다.
1. select Packages 선택 시 Default 만 깔지 말자
Default 선택 설치했는데 bin 폴더에 bash가 없었다..
그래서 그냥 ALL 설치를 했는데 그래도 없는 패키지가 있었다..
2. Choose a Download Site에서 사이트 선택
http://mirror.kakao.com
(다음에서 카카오로 바뀌었다..)
3.
1번과 연속적인 상황인데 정말 중요한 wget이 없었다.
난 분명 all 설치해서 다 선택하고 설치된줄 알았다..
알고보니 아래 그림처럼 wget 검색 시 Web의 1.19.1-2 의 Bin? 을 한번 선택해줘야
네모박스 안이 x표시가 되고 선택이 되는거였다ㅠㅠ....
4. Cygwin Path 설정
제어판 - 시스템 - 시스템 속성 - 고급 - 환경변수 - 시스템 변수 - Path
D:\cygwin64\bin;
라고 입력
cygwin64 은 설치폴더이므로 환경마다 이름이 다를 수 있다
'이전게시판 > C, C++' 카테고리의 다른 글
Visual studio 단축키 (0) | 2024.10.03 |
---|---|
C++ csv 파일 읽기 (0) | 2024.09.25 |
c++ 전처리기 region 이란 (0) | 2018.09.30 |
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
서버 파싱 중 이진수 데이터 조합 (0) | 2018.06.20 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
Post
티스토리 에드센스에 좋은 스킨으로 바꾸는 법
feat. 오른쪽 메뉴 너비 늘리는법, 포스트 크기 늘리는 법
(사족이 깁니다^^;; 바쁘신 분들은 바로 아래로 가시면 됩니다)
직장일 때문에 일주일간 티스토리에 한번도 들어가질 못했다.
정신없는 평일을 보낸 후 일요일이 되어서야 티스토리에 들어왔는데
전에 신청해놓은 애드센스가 승인이 되어있었다!
(애드센스 광고 승인이 어렵다고 들었는데 쉬운것인지??
아무튼 1000자 넘는 50개의 포스팅을 안써도 되니 다행이다^^)
그리고 애드센스 승인 후에야 왜 사람들이 오른쪽메뉴바를 선호하는지 깨닫게 되었다.
마우스커서가 오른쪽에 있어야 편해서 광고 클릭을 잘하니까..
그걸 깨닫고 부랴부랴 애드센스에 알맞는 광고를 찾았다.
최소 조건은 반응형, 2단, 오른쪽이 너비가 넓을 것 3가지 조건이었다.
그런데 메뉴 넓이가 넓은건 단 한개도 없었다..
다행히 HTML, CSS는 대략 알았다.
그래서 HTML CSS 스킨 편집으로 가서 그럴듯한 이름?을 가진 스타일에 weith = 1000px; 를 넣으며
한땀한땀 노가다했다^^;;;
그리고 드디어 광고가 잘 보이기 위해
오른쪽 메뉴 너비를 크게 수정하는 법을 알았다!
수정 결과는 이렇다.
아래는 바꾸기 전
바꾸고 난 후
프로필 사진의 크기로 메뉴바 너비가 확실히 넓어진 것을 알 수 있다.
오른쪽 메뉴 너비 늘리는법
블로그 관리 - 꾸미기 - 스킨편집 - 사용중인 스킨 편집 - html 편집을 누른다.
아래와 같은 화면에 들어왔을 것이다.
여기서 HTML을 누르지말고 CSS를 누른다.
왠 이상한 영어들이 보일 것이다.
이 모든 영어를 복사해서 메모장에 붙여넣는다.
**잠시 알아야 할 것**
이제부터 영어 단어로 메뉴와 콘텐츠를 유추해야한다.
(내가 사용하는 스킨은 만든사람이 포스트 스타일을 .contentArea 라고 썻지만 당신이 사용하는 스킨의 포스트이름은 다를 수 있다)
이걸 만든것도 사람이 만든것이다. 그렇기 때문에 스타일(글자특징. 핑크색, 크기... 특징의 집합)이란것에 이름을 부칠 때
사람들은 비슷한 생각을 한다.
예를들어 티스토리 블로그 이름 크기 스타일을 만들고싶다... 만든사람은 스타일 이름을 뭘로 지을까?
아마 HeadName 이나 Ttitle 로 이름을 짓지 않을까??
그런식으로 메뉴와 포스트의 스타일 이름이 무엇일까 유추를 해야한다
그리고 유추된 스타일 이름에 width을 하나씩 바꿔본다!!
만약 메뉴 너비가 바뀌면? 그 스타일이 내가 수정하고 싶던 메뉴 너비에 관한 스타일이다!
내가 찾은 포스트 스타일은 contentArea 이다.
.contentArea 와 width: 가 같이있는 문장을 찾는다.
.contentArea {float:left; width:60%; margin:20px 0; padding:0 20px 20px 10px; font-size:12px; font-size:1.2rem; box-sizing:border-box; border-right:1px solid #dfdfdf;}
.sidebarArea {float:right; width:40%; margin-top:20px; padding:0 10px 20px 20px; font-size:12px; font-size:1.2rem; box-sizing:border-box;}
여기서 contentArea는 포스트 너비 sidebarArea는 메뉴 너비이다.
반응형이라서 그런지 퍼센트로 되어있다.
둘을 합쳐서 100%가 되게하고, 광고가 잘 나올것 같은 알맞은 비율을 주면된다.
(나는 위와 같이 했다)
포스트 너비 늘리는 법
근데 메뉴가 엄청 넓어져서 그런지 콘텐츠 영역은 쪼그라들어 보인다.
그럼 포스트 너비를 늘려야한다.
포스트 너비를 늘리는 법은 간단하다.
.containerArea 를 찾는데 width 와 같이 있는 문장을 찾으면 된다.
나는 아래처럼 1000px로 변경했다. 훨씬 넓어보인다.
/* LAYOUT */
.menuS {position:absolute; top:0; list-style-type:none; width:430px; margin:0; padding:0 10px;}
.menuS li {display:inline; margin:0; padding:0; font-size:12px; font-size:1.2rem; color:#000;}
.menuS a {position:absolute; top:-200px; left:0; display:block; padding:5px 10px 7px; background-color:#dfdfdf;}
.menuS a:focus {top:0; left:0;}
.containerArea {width:100%; max-width:1000px; margin:40px auto 15px;}
'etc > tistory' 카테고리의 다른 글
소소하지만 확실한 공부법 소확공 책 리뷰 (0) | 2024.11.14 |
---|---|
구글 애드센스 수동 광고 추가 방법 (8) | 2024.11.14 |
티스토리 앵커 광고 위치 변경(왜 하단 광고만 되지?) (0) | 2024.06.13 |
애드센스 탈락 거절😭 애드센스 주의❗ 필요 단계일 때 해결법 (0) | 2023.10.20 |
네이버에서 검색되도록 하는 법 (0) | 2018.07.08 |
티스토리 스킨 변경하는 법 (0) | 2018.07.08 |
Post
네이버에서 검색되도록 하는 법
네이버에서 내 티스토리가 검색되게 하고 싶다면
네이버 웹마스터도구를 사용합니다.
링크는 아래와 같습니다.
https://webmastertool.naver.com/board/main.naver
현재 가지고 있는 네이버 아이디로 로그인을 누르면 됩니다.
그리고 나서 사이트 추가 버튼을 누르면
사이트 소유 확인 절차 창이 뜹니다.
티스토리에서
관리자설정 - 꾸미기 - 스킨변경 - 스킨편집 - html 을 눌러서
head 쪽에 위 메타태그를 붙여넣습니다.
그리고 위 설정을 저장합니다.
위 메타태그를 넣었다면 정상적으로 확인완료 될 것이다.
사이트 등록 후 이제 사이트의 페이지를 수집해가라고 해야한다.
웹 페이지 수집을 게시물의 웹페이지 주소를 등록한다.
수집은 조금만 기다리면 금방 완료된다.
네이버에서 검색되도록 하는 법은 여기서 끝이다.
'etc > tistory' 카테고리의 다른 글
소소하지만 확실한 공부법 소확공 책 리뷰 (0) | 2024.11.14 |
---|---|
구글 애드센스 수동 광고 추가 방법 (8) | 2024.11.14 |
티스토리 앵커 광고 위치 변경(왜 하단 광고만 되지?) (0) | 2024.06.13 |
애드센스 탈락 거절😭 애드센스 주의❗ 필요 단계일 때 해결법 (0) | 2023.10.20 |
티스토리 에드센스에 좋은 스킨으로 바꾸자! (0) | 2018.07.15 |
티스토리 스킨 변경하는 법 (0) | 2018.07.08 |
Post
티스토리 스킨 변경하는 법
https://www.tistory.com/skin
여기서 자신이 원하는 티스토리 스킨을 다운 받습니다.
그리고 다운 받은 압축파일을 풉니다.
그리고 나서 블로그 설정 페이지에 들어가서
꾸미기 - 스킨 변경 - 스킨 등록을 클릭합니다.
그러면 스킨 등록창이 나오는데,
아까 압축풀었던 파일안의 파일들을 모조리 등록해주면 됩니다.
등록 완료 후 스킨 보관함에 들어가시면
이렇게 등록된 스킨이 보입니다.
등록된 스킨를 클릭해서 적용하면 끝입니다.
처음에 네이버블로그와 달리 티스토리 스킨 변경하는 법이 하질 않았는데 이렇게 쉽다니^^;;
진작에 할 걸 그랬어요 ㅎㅎ
티스토리 스킨 변경하는 법 포스팅이 많은 도움이 되었길 바랍니다.
'etc > tistory' 카테고리의 다른 글
소소하지만 확실한 공부법 소확공 책 리뷰 (0) | 2024.11.14 |
---|---|
구글 애드센스 수동 광고 추가 방법 (8) | 2024.11.14 |
티스토리 앵커 광고 위치 변경(왜 하단 광고만 되지?) (0) | 2024.06.13 |
애드센스 탈락 거절😭 애드센스 주의❗ 필요 단계일 때 해결법 (0) | 2023.10.20 |
티스토리 에드센스에 좋은 스킨으로 바꾸자! (0) | 2018.07.15 |
네이버에서 검색되도록 하는 법 (0) | 2018.07.08 |
Post
아래의 기본 서버 예제는 문제점이 있다.
클라이언트가 많아지면 접속을 제 때 받지 못한다.
또 처리하는 부분(send)도 시간이 많이 걸리면 클라이언트 접속 대기 시간이 생긴다.
둘 다 분리되어있지 않고, 원스레드에서 해결하기 때문이다.
아래는 원스레드 서버의 처리시간이 길어지면 어떤문제점이 있는지 보여주는 예제이다.
상황설정
서버는 원스레드로, 클라이언트 접속 후에 1초걸리는 일을 처리하고 패킷을 전달한다.
클라이언트는 배치 파일을 만들어서 7개가 동시에 Connect를 요청하고 서버의 응답을 기다린다.
bat 파일은 아래와 같이 작성했다.
( ConsoleApplication2.exe 가 클라이언트다.. .;; )
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
start /d "C:\Users\MyDirectory\Documents\Visual Studio 2017\ConsoleApplication2\Debug\" ConsoleApplication2.exe
<server>
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 | #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #define BUF_SIZE 30 void ErrorHandling(const char* message); int main() { WSADATA wsaData; SOCKET hServSock, hClntSock; SOCKADDR_IN servAddr, clntAddr; int strLen = 0; int szClntAddr; char message[] = "Hello World!"; if (0 != WSAStartup(MAKEWORD(2, 2), &wsaData)) { ErrorHandling("WSAStartup() error!"); } hServSock = socket(PF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == hServSock) ErrorHandling("socket() error"); memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(atoi("8888")); if (SOCKET_ERROR == bind(hServSock, (SOCKADDR*)&servAddr, sizeof(servAddr))) { ErrorHandling("bind error \n"); } if(SOCKET_ERROR == listen(hServSock, 5)) { ErrorHandling("listen error \n"); } szClntAddr = sizeof(clntAddr); int i = 0; while(true) { hClntSock = accept(hServSock, (SOCKADDR*)&clntAddr, &szClntAddr); if (-1 == hClntSock) { ErrorHandling("accept() error \n"); } else { printf("Connected clinet : %d \n", i + 1); } ++i; Sleep(1000); send(hClntSock, message, BUF_SIZE, 0); closesocket(hClntSock); } closesocket(hServSock); WSACleanup(); return 0; } void ErrorHandling(const char* message) { fputs(message, stderr); fputc('\n', stderr); exit(1); } | cs |
<Client>
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 | #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <ws2tcpip.h> #include <windows.h> #define BUF_SIZE 30 void ErrorHandling(const char* message); int main() { WSADATA wsaData; SOCKET hSocket; SOCKADDR_IN servAddr; char message[30]; int strLen; if (0 != WSAStartup(MAKEWORD(2, 2), &wsaData)) { ErrorHandling("WSAStartup() error!"); } hSocket = socket(PF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == hSocket) { ErrorHandling("WSAStartup() error!"); } memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; //servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); inet_pton(AF_INET, "127.0.0.1", &servAddr.sin_addr); servAddr.sin_port = htons(atoi("8888")); if(SOCKET_ERROR == connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr))) { printf("error:%d \n", WSAGetLastError()); ErrorHandling("connect() error"); } else { puts("Connected......"); } int beginTime = GetTickCount(); strLen = recv(hSocket, message, BUF_SIZE - 1, 0); int endTime = GetTickCount(); int passTime = endTime - beginTime; message[strLen] = 0; printf("Message from server ms:%d second:%f message:%s \n", passTime, (passTime * 0.001), message); closesocket(hSocket); WSACleanup(); system("pause"); return 0; } void ErrorHandling(const char* message) { fputs(message, stderr); fputc('\n', stderr); exit(1); } | cs |
<결과>
서버는 1초짜리 일을 했지만 접속순서대로 차례대로 일을 처리했기 때문에,
후순위로 Connect한 클라이언트는 5~6초나 지나서 결과를 받았다.
멀티스레드 서버를 사용해야하는 이유다.
'이전게시판 > Server' 카테고리의 다른 글
IOCP 채팅 서버 소스 예제 (0) | 2018.10.04 |
---|---|
C4996 에러 (0) | 2018.09.28 |
LNK2019: __imp__closesocket@4 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다. (0) | 2018.09.28 |
구글 프로토콜 버퍼 C++ Window 예제 (Google Protocol buffer) (0) | 2018.07.27 |
C4996 inet_addr Error Solution (0) | 2018.06.30 |
ip주소 추적 (0) | 2018.04.21 |
hosts파일, DNS (0) | 2018.04.21 |
DHCP란? (0) | 2018.04.20 |
Post
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 | // ConsoleApplication2.cpp: 콘솔 응용 프로그램의 진입점을 정의합니다. // #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <winsock2.h> #include <ws2tcpip.h> void ErrorHandling(const char* message); int main() { WSADATA wsaData; SOCKET hSocket; SOCKADDR_IN servAddr; char message[30]; int strLen; if (0 != WSAStartup(MAKEWORD(2, 2), &wsaData)) { ErrorHandling("WSAStartup() error!"); } hSocket = socket(PF_INET, SOCK_STREAM, 0); if (INVALID_SOCKET == hSocket) { ErrorHandling("WSAStartup() error!"); } memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; // servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); inet_pton(AF_INET ,"127.0.0.1", &servAddr.sin_addr); servAddr.sin_port = htons(atoi("8888")); if(SOCKET_ERROR == connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr))) { ErrorHandling("connect() error!"); } strLen = recv(hSocket, message, sizeof(message) - 1, 0); if (-1 == strLen) { ErrorHandling("read() error!"); } printf("Message from server : %s \n", message); closesocket(hSocket); WSACleanup(); return 0; } void ErrorHandling(const char* message) { fputs(message, stderr); fputc('\n', stderr); exit(1); } | cs |
오류 C4996 'inet_addr': Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API
'이전게시판 > Server' 카테고리의 다른 글
IOCP 채팅 서버 소스 예제 (0) | 2018.10.04 |
---|---|
C4996 에러 (0) | 2018.09.28 |
LNK2019: __imp__closesocket@4 외부 기호(참조 위치: _main 함수)에서 확인하지 못했습니다. (0) | 2018.09.28 |
구글 프로토콜 버퍼 C++ Window 예제 (Google Protocol buffer) (0) | 2018.07.27 |
기본 서버 예제의 문제점 (0) | 2018.07.05 |
ip주소 추적 (0) | 2018.04.21 |
hosts파일, DNS (0) | 2018.04.21 |
DHCP란? (0) | 2018.04.20 |
Post
'etc' 카테고리의 다른 글
클립스튜디오 자기 브러쉬 등록하는 법 (0) | 2024.05.06 |
---|---|
tortoisesvn Path (0) | 2018.05.30 |
No bootable medium found ( VirtualBox Window 10 설치 ) (0) | 2018.05.09 |
[R데이터]네이버 뉴스 크롤링 (0) | 2018.01.09 |
R 기초 - 프로그램 설치 (0) | 2018.01.09 |
래퍼런스, 포인터 차이, 프로시저 사용이유, 외래키? (0) | 2016.04.07 |
Post
'이전게시판 > C, C++' 카테고리의 다른 글
C++ csv 파일 읽기 (0) | 2024.09.25 |
---|---|
c++ 전처리기 region 이란 (0) | 2018.09.30 |
pragma message 출력창에 내용 출력 (0) | 2018.08.29 |
Cygwin 설치 설정 방법 (0) | 2018.07.27 |
flyweight(플라이웨이트) 패턴 (0) | 2018.06.16 |
VisualStudio 줄번호 바로가기 단축키 (0) | 2018.06.05 |
const와 포인터 (0) | 2018.05.30 |
C3083 왼쪽의 기호는 형식이어야 합니다 에러 정방선언... (0) | 2018.05.03 |