글 목록 보기

Lyn
조회 수 51726 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

윈도우즈 정기 업데이트 날이죠 (...)


이번엔 꽤 중요한 보안 이슈(원격 실행 취약점)가 해결되었다고 하니 꼭 패치하세요


https://technet.microsoft.com/library/security/ms14-dec

?

Lyn
조회 수 12788 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

이게 정말 좋은 소식이지요 : )


http://www.visualstudio.com/en-us/products/visual-studio-community-vs


Pro급에 해당하는 에디션이며 사용 조건은 아래와 같습니다


Q: Who can use Visual Studio Community? 

A: Here’s how individual developers can use Visual Studio Community:

Any individual developer can use Visual Studio Community to create their own free or paid apps.

Here’s how Visual Studio Community can be used in organizations:

An unlimited number of users within an organization can use Visual Studio Community for the following scenarios: in a classroom learning environment, for academic research, or for contributing to open source projects.

For all other usage scenarios: In non-enterprise organizations, up to 5 users can use Visual Studio Community. In enterprise organizations (meaning those with >250 PCs or > $1MM in annual revenue), no use is permitted beyond the open source, academic research, and classroom learning environment scenarios described above.

?

Lyn
조회 수 64198 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

http://www.visualstudio.com/news/vs2015-preview-vs


기존에 14라고 부르던 버전이군요. 정식출시가 얼마 남지 않은 것 같습니다.
더 좋은 소식도 있지만

?

Lyn
조회 수 46404 추천 수 0 댓글 0
Atachment
첨부 '4'
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

1. nuget 사이트에서 nuget command-line utility 를 다운로드 받는다.

01.png


2. nuget.exe를 적당한곳에 복사하고 nuget install redis-64 를 입력한다

(redis-64 패키지의 주소는 http://www.nuget.org/packages/redis-64/   이지만 별로 중요하지 않다. 패키지 명만 알면 됨)

02.png


설치된 redis 는 C:\Redis-64.2.8.17 에 있다.(현재 최신버전인 2.8.17 기준)


3. redis 를 서비스로 등록하기 위해 redis 설치 폴더로 이동해서 아래와 같은 명령을 친다(관리자권한이 필요하다)

redis-server --service-install redis.windows.conf


여기서의 redis.windows.conf는 기본적으로 존재하는 redis 설정 파일이다. 만약 다른설정파일이 있으면 원하는대로 수정 하면 OK

만약 여러개 생성하는것이 목적이라면(사실 달랑 하나 쓸 경우보단 여러개 띄울 경우가 많을거다... redis 는 single thread밖에 사용하지 못하기 때문에)

–service-name redisServiceName –port 10000 처럼 서비스명과 포트번호를 추가하여 여러개 띄울 수 있다


03.png


4. 서비스를 시작시키고 redis-cli 를 실행시켜 테스트 해본다

04.png



정상이다 : ) 이제 잘 갈궈서 (...) 써먹을일만 남았다



TAG •
?

Lyn
조회 수 18180 추천 수 0 댓글 0
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

http://lunapiece.net/Article/14007327


이전글에서 나왔던 문제가 해결된 버전이 나왔습니다. 업데이트하세요104.png


?

Lyn
조회 수 22697 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

정성태님의 홈페이지를 정독하던중 오랫만에 C++ 관련 글이 하나 올라 왔길래 확인해 보았습니다.
바로 g++에서 inner 클래스를 사용한 템플릿이 제대로 선언 되지 않는다는 문제인데요, 코드는 아래와 같습니다(조금 다릅니다. 원본에 오타가 있어서 좀 고쳣습니다)


원본 : http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&pageno=0&detail=1&wid=1791


#include <iostream>
#include <vector>
#include <map>

typedef char BYTE;
typedef int _int;
typedef std::vector<BYTE> _byteArrayHolder;
typedef long _long;

template <class T, class V>
class KeepAliveReceiver
{
};

template<class Receiver, class ErrorAction, _int MAX_CONTENT_SIZE = 8192>
class MultiPartByteArrayReceiver : public KeepAliveReceiver< MultiPartByteArrayReceiver<Receiver, ErrorAction>, ErrorAction>
{
	class MultiPartByteArray
	{
	public:
		_int key;
		std::vector<BYTE> byteHolders;
		_long totalSize;

	public:
		MultiPartByteArray(_int _key) : key(_key), byteHolders(), totalSize(0)
		{
		}

		void AddBytes(_byteArrayHolder bytes)
		{
			totalSize += bytes.size();
		}
	};

	typedef KeepAliveReceiver< MultiPartByteArrayReceiver<Receiver, ErrorAction, MAX_CONTENT_SIZE>, ErrorAction> Super;
	typedef MultiPartByteArrayReceiver<Receiver, ErrorAction, MAX_CONTENT_SIZE> This;

public:
	typedef std::map<_int, MultiPartByteArray>  MultiPartBytesMap;
	MultiPartBytesMap receivedMultiPartedBytes;

public:

	MultiPartByteArrayReceiver() : Super(), receivedMultiPartedBytes()
	{}

	void Test()
	{
		MultiPartByteArray a(1);
		std::map<_int, MultiPartByteArray>::iterator iter = receivedMultiPartedBytes.find(1); //컴파일 오류
	}
};

int main()
{
	std::cout << "Hello World" << std::endl;

	MultiPartByteArrayReceiver<int, int> t;
	t.Test();

	return 0;
}


바로 위와 같은 코드인데, 이는 template 이 완전히 생성 되기 전에, 그 템플릿에 의존하는 type을 인식할 수 없기 때문에 발생합니다
(이런 경우는 템플릿 클래스가 부모 템플릿의 함수를 호출한다거나 할때도 발생합니다)

VC++은 그냥 적당히 알아서 (...) 인식해서 넘어 가는데 이걸 오류로 처리하는 컴파일러도 있습니다. 뭐 만드는사람 취향문제겟지만.


이 문제의 해결법은 바로 type을 인식하지 못하는 것이니 이게 template의 type 명을 나타낸다고 알려주는겁니다.
바로 typename 키워드를 쓰는것인데 그럼 아래와 같게 됩니다



typename std::map<_int, MultiPartByteArray>::iterator iter = receivedMultiPartedBytes.find(1); //컴파일 오류 


이렇게 하면 뒤의 템플릿 선언문을 타입으로 인식하여 정상적으로 컴파일 됩니다. 물론 VC에서도 마찬가지입니다.
또 템플릿을 선언 할 때 처럼 class 키워드를 써도 OK 입니다. 전 typename 키워드가 헤깔리지 않아 선호하는 편이지만요


PS. 사실 이 모든 문법적 지저분함을 해결하는 마법의 키워드가 C++에 있으니...

그냥 auto 쓰면 됩니다 (...) C++11에서 추가된 auto와 decltype 의 타입추론 시스템은 템플릿을 정말 간단하게 만들어주는 축복이지요

TAG •
?

Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

11월 6일 현재 해결되었습니다. VMWare 업데이트 하세요

관련링크 : http://lunapiece.net/Article/14007397



uhul.png


어제 업데이트 된 2014년 10월 정기 업데이트(한국시각 10월 15일) 이후 VMWare 에서 메모리 오류가 발생합니다.

이는 KB2995388 와 관련된 오류로서, 이를 업데이트 하지 않음으로서 일시적으로 방지할 수 있습니다.

(이미 업데이트 했다면 저것만 골라서 언인스톨해도 OK입니다)


아마 VMWare 측에서 새로운 업데이트가 나오지 않을까 싶네요



?

Atachment
첨부 '3'
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

오늘 같은 MS VC++ MVP이신 유영천 님께서 개인 프로젝트로 출시하신 Project D Online(Steam에서 즐기실 수 있습니다)에 재밋는 이슈가 발생하였습니다.

바로 vmovd eax,xmm0 명령어에서 illegal instruction 오류를 내면서 크래시가 난다는건데요, 원인분석의 결과를 한번 공유해 보겠습니다.


인텔에서는 2011년 새로운 SIMD 명령어인 AVX를 지원하는 CPU를 출시 하였고, 당연히 그 이후 각 컴파일러들은 해당 명령어에 대한 지원을 시작하엿고 당연히 현재 최신의 MS C++ 컴파일러인 VC++2013버전에서는 2011년에 출시된 AVX 명령어를 지원 하고 있습니다.


AVX를 지원하는 CPU는 아래와 같습니다. 출처는 영문판 위키입니다

원본 : http://en.wikipedia.org/wiki/Advanced_Vector_Extensions

 


인텔은 샌디브릿지 이상, AMD는 불도저 이상이군요. 저도 하스웰-E 가지고싶습니다...


VC++2013의 intrin.h에는 각 어셈명령어와 매칭되는 함수들과 타입이 제공 되고, dvec.h 에는 2개의 클래스 F32vec8과 F64vec4가 제공됩니다.
각각 단정밀도 8개, 배정밀도 4개를 동시에 계산할 수 있는 클래스인데요


극히 간단한 샘플 코드를 돌려 보겠습니다


#include <cstdio>
#include <dvec.h>

int main()
{	
	F32vec8 A(1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f);
	F32vec8 B(1.1f, 2.1f, 3.1f, 4.1f, 5.1f, 6.1f, 7.1f, 8.1f);		
	
	A += B;

	printf("%f %f %f %f %f %f %f %f", A[0], A[1], A[2], A[3], A[4], A[5], A[6], A[7]);
		
	return 0;
}


아래와 같은 경고가 발생하는데, 뭐 일단 여기에선 무시해도 상관 없고, 빌드 옵션에 추가해도 상관 없습니다.
어차피 바이너리엔 영향 없으니까요.


01.png


그럼 위 코드는 어떤 바이너리를 만들어 낼까요?

02.png


대충 이와 같습니다.
v 로 시작하는 명령어들이 AVX명령어 들인데 8개의 float += 연산을 단 한줄로 끝내는것을 볼 수 있습니다.


하지만 세상엔 똥컴(.....) 을 쓰시는분들이 참 많고 당연히 AVX를 지원하지 않는 CPU에서도 프로그램을 돌려야할 경우가 있습니다. 하지만 그렇게 되면 최적화를 상당부분 포기하게 되죠. java나 .net 처럼 JIT 을 지원하는 환경이라면 처음 실행할때 가상머신이 CPU 를 확인해서 최적의 명령어셋으로 만들어 내겠지만(이게 닷넷, 자바의 속도가 간혹 C보다 빨라지는 이유중 하나이기도 합니다) 미리 다 바이너리로 만들어져 있는 Native Application 들은 이런 방법이 불가능 합니다. 

그래서 자주 쓰는 방법은, 미리 CPU 종류별로 다 코드를 컴파일 해 두고, 실행할때 CPU가 지원하는 최적의 명령어를 실행하도록 분기하는거죠... 실제로 극한의 속도를 요하는 라이브러리 (Intel IPP 등) 에서는 당연하다시피 쓰이고 있는 방식이고, 일반적인 라이브러리를 만들때도 쓰이는 경우가 있습니다. 혹시 리눅스에 관심있으신분이라면 최근버전의 리눅스 커널에서 아주 오래된 CPU의 지원이 조금씩 끊기고 있다는것을 아실 수 있는데, 이게 특정 이상의 명령어 셋을 기본적으로 사용하겟다는 의미이기도 합니다.


네 중요한건 바로 여기에 있습니다. VS2013은 내부적 라이브러리에 AVX코드를 생성해서 쓰는 경우가 있다는것이고, cpu의 명령어 셋을 체크 한 후에 쓰기때문에 실행엔 문제가 없어야 합니다만... 현재 명령어 셋을 체크하는것은 cpu만이 아닙니다. 각종 코드 보안 관련 기능에 사용하기 위해 OS도 명령어를 체크하지요.
아래 내용은 역시 영문위키에서 가져왔습니다.... 일일히 찾기귀찮아서


원본 : http://en.wikipedia.org/wiki/Advanced_Vector_Extensions

  • Apple OS X: Support for AVX added in 10.6.8 (Snow Leopard) update[13] released on June 23, 2011.
  • Linux: supported since kernel version 2.6.30,[14] released on June 9, 2009.[15]
  • Windows: supported in Windows 7 SP1 and Windows Server 2008 R2 SP1,[16] Windows 8
  • Windows Server 2008 R2 SP1 with Hyper-V requires a hotfix to support AMD AVX (Opteron 6200 and 4200 series) processors, KB2568088
  • FreeBSD in a patch submitted on 21 January 2012,[17] which was included in the 9.1 stable release[18]
  • DragonFly BSD added support in early 2013.
  • Solaris 10 Update 10 and Solaris 11

  • 리눅스는 굉장히 삐른 편인데 대체 어디서 정보를 얻어서 구현했는진 모르겠습니다(....), 윈도우는 날자가 적혀있지 않아 확인해보니 2011년 3월 15일입니다. 맥은 좀 늦었군요 뭐 어차피 자기들이 하드웨어 내놓을때 같이 내 놓으면 상관없겠습니다. 어차피 OS가 아니라 펌웨어에 가까우니까요


    문제는 여기에서 발생합니다. 바로 CPU는 지원하는데 OS가 지원을 안할 경우입니다 (...)
    위에 써있는것을 보시면 알겠지만 Windows 7은 SP1 이상부터 AVX를 지원합니다. 즉 SP1이 설치되지 않은 구버전의 Windows 7 이라면 AVX명령어가 실행이 되지 않는다는 겁니다....


    그래서 MS는 VC++2013 재배포 패키지( http://www.microsoft.com/en-us/download/details.aspx?id=40784 )  에 다음과 같이 명시 해 두었습니다.

    Supported Operating System

    Windows 7 Service Pack 1, Windows 8, Windows 8.1, Windows Server 2003, Windows Server 2008 R2 SP1, Windows Server 2008 Service Pack 2, Windows Server 2012, Windows Server 2012 R2, Windows Vista Service Pack 2, Windows XP 


    네 분명히 Windows7 SP1 이라고 적혀 있지요.
    문제는... 저게 SP1이 아닌데도 설치가 된다는겁니다 (....)


    03.png



    그냥 재배포 패키지설치시 확인 해서 올리라고 했었어야 할거 같은데... 어쨋든 안해줍니다 그래서 만약을 대비해 버전 체크를 하시는게 좋습니다.
    빌드넘버로 확인할 수 있는 Windows 7은 6.1.7600, Windows7 SP1은 6.1.7601 로 다르니까요.

    안그러면 이런 크래시가 발생할 수 있습니다.


    사실 AVX 같은 확장명령어로 최적화 될 상황이 그리 많지는 않습니다... 저런걸 쓸 상황이 오는건 진짜 대량의 계산을 요하는 프로그램이나, 영상관련 프로그램, 아니면 게임정도니까요.
    그래도 만약을 대비해서 나쁠건 없겟죠.


    그리고 서비스팩이 설치되지 않은 7600버전의 Windows 7은 더이상 어떤 패치도 제공 되지 않는 상황입니다(Sp1을 올려야 나머지 패치가 적용 됩니다) 그러니까 웬만하면 패치좀 하고 씁시다 (...)

    PS. Project D Online 많이좀 해주세요.

    TAG •
    ?

    Lyn
    조회 수 7473 추천 수 0 댓글 0
    ?

    단축키

    Prev이전 문서

    Next다음 문서

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

    단축키

    Prev이전 문서

    Next다음 문서

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

    http://windows.microsoft.com/ko-kr/windows/preview-download?ocid=tp_site_downloadpage


    아쉽게도 한국어는 없군요. 설치 후기는 차후 올려보겠습니다.
    아직 자료 정리중이라

    ?

    Lyn
    조회 수 175106 추천 수 0 댓글 4
    ?

    단축키

    Prev이전 문서

    Next다음 문서

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

    단축키

    Prev이전 문서

    Next다음 문서

    크게 작게 위로 아래로 댓글로 가기 인쇄
    PS. 이 글은 어디까지나 "개발환경" 이야기지 "배포환경" 얘기가 아닙니다.
    배포시에는 대충 .net > java > python > php > ruby 정도로 순서가 뒤집어집니다...


    이번에 페이스북 SSAG 그룹의 조대협 님의 글을 보고 "빌드속도" 와 "리로딩속도" 에 대해서 고민해 보았습니다.
    사실 전 C++로 주로 작업을 하기 때문에 리로딩속도라는건 의미가 없었는데다가
    빌드속도는 빌드서버 몇개 더 둬서 장비빨로 해결하는게 당연시 되었고, 그 컴파일 느리다는 C++도 파일 몇개 바꾸는 정도면 Incremental link를 사용할 경우 링크 시간도 별로 안걸립니다.
    하지만 지금은 C#을 쓰고 있는데다가, "배포중" 이 아닌 "개발중" 이라면 was 를 다시 띄우는 속도가 생산성에 큰 지장을 줄 것이라고 생각되어 간단히 테스틀 해 보았습니다.
    제 주력플랫폼은 역시 Windows 인지라, 테스트 환경이 VM이 되어 버렷기에 성능이 중구난방이고(...) 애초에 각 프로젝트의 규모도 다르니 절대 적인 수치를 비교하는것은 의미가 없다고 생각되어 단순히 체감 순위만 
    나열해 보겠습니다.
    제가 모든 플랫폼을 잘 아는게 아니라서 그냥 인터넷에 흔하게 돌아다니는 개발환경을 기준으로 했습니다.
    테스트는 각 플랫폼에서 유명한 이슈트래커 솔루션(자바나 닷넷은 좀 미묘 ...) 으로 하였습니다(규모큰 프로젝트를 찾을수가 없어서...)
    node.js 기반 이슈트래커를 아는게 없어서 테스트를 못해본건 좀 아쉽네요
    perl 은 한국에선 쓰는 프로젝트가 아예 없다시피 한거같아서 빼둿습니다. 일본에선 php와 맞먹는 인기라는데
    1. apache + php + mantis
    2. python + trac (내장된 tracd 사용)
    3. ruby + redmine + webrick
    4. tomcat + java+ itracker
    5. iisexpress + C# + BugTracker.NET
    테스트 결과
    php > [넘사벽] > dotnet > python > [슬슬 짜증이 나기 시작함] > java > ruby
    아예 다시 띄울 필요가 없는 php가 이 상황에선 압도적이군요 (....)
    그 뒤로 닷넷 파이썬이 있고, java 정도만 가도 리로딩시간이 개발리듬에 영향을 줄 정도로 느렸습니다.
    작은 프로젝트라면 확실히 java에서 플랫폼을 갈아타는 것만으로 생산성 향상을 볼 수 있을지도 모르겠습니다.
    저는 조금만 프로젝트가 커져도 약타입 언어는 생산서에 한계가 온다는 입장이라 아마 쓸일은 없겠지만요...
    제가 공감하는 관련 글 링크 :http://youngrok.com/WeakTyping_%EC%96%B8%EC%96%B4%EC%9D%98%ED%95%9C%EA%B3%84 
    마침 이분도 오픈마루에서 이슈트래커를 만드셧던 분이라고 합니다 (...) 아무상관없지만
    하지만 ruby... 토나옵니다. 안떠요 안떠 ... 저보고 이거 가지고 개발하라 그러면 도망갈지도 모르겠어요(............)
    ?
    • ?
      미도반 2014.09.16 03:57 SECRET

      "비밀글입니다."

    • profile
      Lyn 2014.09.17 03:14
      ㅡ.ㅡ;;;;;
    • ?
      김선영 2014.12.17 21:37
      이런 문제때문인지 IT의 본고장 미국에서도 python쪽이 대세가 되는것 같더군요. 아무래도 개발, 배포 양쪽에서 크게 문제가 안된다고 생각하나 봅니다. 그런데 "슬슬 짜증이 나기 시작함"의 체감수치는 어느 정도일까요? 그게 더 궁금해지긴 합니다. ^^
    • profile
      Lyn 2015.01.05 02:00
      제가 체감하는 짜증이 나는 시점은 로딩되는거 안 지켜보고 웹툰 한편정돈 볼까.. 하는 마음이 생길 시간이었습니다 :)

    Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
    / 13