글 목록 보기

Lyn
조회 수 175125 추천 수 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
    제가 체감하는 짜증이 나는 시점은 로딩되는거 안 지켜보고 웹툰 한편정돈 볼까.. 하는 마음이 생길 시간이었습니다 :)

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

주의 : 본 글은 거의 2년전 시점에 씌여진 글을 깜빡하고 안올리고 (...) 있던걸 꺼낸라 현재의 boost 최신버전하고는 상황이 다를 수 있습니다.


boost::interprocess::managed_shared_memory(이하 msm)에 관하여.

 

msm는 내부적으로 Red-Black Tree 를 이용하여 구현되어 있다

서로 다른 프로세스에서 공유 가능한 std::map<string, void*> 라고 보면 간단하게 이해된다.

공유메모리를 map의 형태로 기능확장한 것.

 

msm 는 생성시 mutex를 가지게 됨. Msm rb-tree를 구성하는 boost::rbtree_best_fit boost::interprocess::interprocess_mutex 를 상속받은 header_t 구조체를 소유하고 있음.

header_t 구조체는 추가적으로 msm의 헤더를 관리하기위한 멤버를 소유하고 있고, 이것들은 메모리 세그먼트를 관리할때 자동으로 scoped lock 이 걸림

 

msm 생성시 POXIS에서는 shm_open 를 이용하고윈도우에서는 CreateFile를 이용한다

 msm 생성 과정에서는 OS에 의해서 보호된다여기서 의문인 것은 왜 CreateFileMapping 을 이용한 Windows OS의 공유메모리 메커니즘을 사용 하지 않았는가 이다.

물론 FILE_ATTRIBUTE_TEMPORARY 플래그를 주어 파일을 메모리에 생성 하긴 했지만 그다지 효율적으로 보이지는 않는다궂이 예측 하자면 CreateFileMapping이 생성시의 이름을 어떻게 주느냐에 따라  세션관련 제어 기능을 가지게 되는데 그것을 의도적으로 피하고자 함이 아닌가 싶다

boost의 기본 설계 방침은 “플랫폼 특화” 된 기능을 막아서라도 같은 인터페이스를 제공 하는 것이라고 하니까아니면 그냥 단순히 POSIX랑 똑같이 하고 싶어서 일수도 있고.

 

msm는 윈도우에서는 추가적인 과정이 있는데만약 공유위반으로 인해 생성이 실패 할 경우 250ms 간격으로 최대 3번까지 재시도 하게 된다

이는 MSDN 에 명시된 동작으로 실제 사용 하지 않더라도 OS의 백그라운드 조각모음 때문에 일시적으로 파일이 잠길 수 있다고 하고 있다또한 FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE 권한이 있다 하더라도 파일 생성 중에는 lock이 걸려 공유위반이 발생 할 수 있다단 이것은 임시파일이 아닐 경우인데실제 테스트 결과 임시파일에서는 아무리 빠르게 반복해도 관련 현상을 재현할 수 없었다.

 

어쨋든 Windows, POSIX 양쪽 다 OS 차원에서 “파일 생성” 이라는 부분은 완벽히 동기화 시켜주기 때문에 절대로 “같은 이름을 가진 msm 객체가 생성 될 수 없다” 또한 open_or_create를 사용 하여 생성 할 경우 반드시 성공한다는 것을 보장 하게 된다.

 

msm 의 읽기,쓰기 동작(find, construct )도 일부러 nolock 버전의 함수를 호출하지 않는 이상 thread safe 하다 find → add 의 동작을 반복 할 필요가 없다.

 

construct 는 이미 존재하는 Key 대해 요청 할 경우 exception 을 발생 시킨다.

이것의 예외 처리는 매우 중요한데만약 한쪽에서 construct 가 중복 실행되어 exception 이 발생 될 경우 예외처리를 제대로 하지 않으면 msm 내부의 lock이 풀리지 않아 무한히 대기 하게 된다. Windows , POSIX 양쪽 다 프로세스가 Crash 되어 종료된 상황에서도 lock 이 해제되지 않는것이 확인되었다이런 경우를 방지하기 위해 find_or_construct 를 제공 하므로 이쪽을 사용 하는 것이 바람직하다.

 

위의 내용에 덧붙이면 사실 윈도우에서 제공하는 모든 동기화 객체는 lock의 재진입을 지원하고 프로세스 레벨의 레퍼런스 카운팅을 제공하여 프로세스가 죽으면 그 프로세스가 획득한 모든 Lock이 해제되도록 되어있다문제는 boost의 구현방법에 있는데 posix 에서는 pthread mutex를 사용하는것이 기본인 반면 Windows 시스템에서는boost가 자체 구현한 spin_mutex를 사용하는것이 default로 되어 있다그런데 이녀석은 커널 레벨에서 시스템 전체를 관리하는게 아니라 프로세스 레벨에서 atomic operation을 이용해 임의로 구현한 기능이므로프로세스가 Exception에 의해 Crash 되었을 경우의 뒷처리를 전혀 할 수 없다 Windows 시스템의 안정적인 관리 기능을 사용하려면 boost::interprocess::windows_mutex를 명시적으로 선언해야 한다이는 공유메모리도 마찬가지로기본적으로는 위에 적은것 처럼 CreateFile 을 사용 하고 있지만 boost::interprocess::windows_shared_memory 를 명시적으로 사용하면 CreateFileMapping를 이용하는 공유메모리가 생성되며 Windows에서 제공하는 기능 전체를 사용할 수 있다.

 

TAG •
?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

우분투 14.04 에서 apt-get 으로 libssh2-php만 나중에 따로 설치시 php5-mysql 모듈이 날라가버리는 버그가 있다 (....)

어이없지만 조심해야할부분.


다시설치하면 되긴한다

TAG •
?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

sudo apt-get install libssh2-php


이름이 좀 애매하다. 보통 php가 앞에붙지않나

TAG •
?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

우분투 서버 설치시 LAMP 를 고르면 아파치가 자동으로 설치되는데...

이때 정말로 아파치만 설치되고 관련 툴들이 전혀 설치되지 않는다 .


sudo apt-get install apache2-utils 

를 실행해서 apache2-utils 패키지를 설치해 줘야, rotatelogs 를 포함한 각종 툴이 설치된다.


TAG •
?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

뭐 달라진건 별로 없지만 아마 속도는 좀 빨라졋을거에요 (...)


그동안 왜 뻘짓을 후 ...

?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

VC++ 2013 컴파일러는 기본적으로 XP를 지원하지 않으며, 궂이 필요한 경우에 한해 XP 지원 툴셋을 쓸 수 있습니다.


아래처럼 플랫품 툴셋을 v120_xp 로 바꾸면 됩니다


asd.png



?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

http://blogs.msdn.com/b/visualstudio/archive/2014/07/29/visual-studio-tools-for-unity-1-9.aspx


가장유행하는 도구를 최고의 개발툴과 함께 쓰는것이좋겟죠.
더이상 Unity3D 개발 환경을 고민 할 이유는 없겠습니다.


VS 자체로도 훌륭한 개발툴이지만 C#을 만든 MS 보다 C#을 잘 지원하는 개발툴이 없는게 사실이죠


3302.VisualStudioToolsforUnity1.9_749E74D0.png



?

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

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

권한을 줄 아이디를 입력할 때 

IIS AppPool\[풀 이름] 


처럼 하면 권한을 줄 아이디가 나타난다

?

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