.NET에서 http://system.data.sqlite.org를 사용하는 경우 64bit O/S에서 System.BadImageFormatException이 발생하게 됩니다. 에러 메시지는 다음과 같습니다.


사용자 코드에서 System.BadImageFormatException이(가) 처리되지 않았습니다.
  Message=프로그램을 잘못된 형식으로 로드하려고 했습니다. (예외가 발생한 HRESULT: 0x8007000B)
  Source=System.Data.SQLite
  StackTrace:
       위치: System.Data.SQLite.UnsafeNativeMethods.sqlite3_config(Int32 op, SQLiteLogCallback func, IntPtr pvUser)
       위치: System.Data.SQLite.SQLite3.SetLogCallback(SQLiteLogCallback func)
       위치: System.Data.SQLite.SQLiteLog.Initialize()
       위치: System.Data.SQLite.SQLiteConnection..ctor(String connectionString)

       ...(중략)
       위치: System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
       위치: System.Threading.ExecutionContext.runTryCode(Object userData)
       위치: System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
       위치: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       위치: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       위치: System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
       위치: System.Windows.Forms.Control.InvokeMarshaledCallbacks()
  InnerException:


이 경우 빌드옵션에서 플랫폼 대상을 'x86'으로 설정해주세요. 하지만 일부 다른 사람들은 'Any CPU'로 바꿔서 해결이 되었다는 경우도 있으니 'x86'으로 안되면 모든 옵션을 시도해 보세요. 자세한 설정 방법은  http://westzero.net/106 여기를 참조하세요.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2012/04/30 11:28
에러 메시지 & 스택 트레이스
System.BadImageFormatException이(가) 처리되지 않았습니다.
  Message=은(는) 올바른 Win32 응용 프로그램이 아닙니다. (예외가 발생한 HRESULT: 0x800700C1)
  Source=mscorlib
  StackTrace:
       위치: System.Reflection.Assembly._nGetEntryPoint()
       위치: System.Reflection.Assembly.get_EntryPoint()
       위치: Microsoft.VisualStudio.HostingProcess.HostProc.GetEntryPointAptThreadState(String assemblyFile)
       위치: Microsoft.VisualStudio.HostingProcess.HostProc.RunParkingWindowThread()
       위치: System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       위치: System.Threading.ThreadHelper.ThreadStart()
  InnerException:

64bit O/S에서 프로젝트 빌드시 위와 같은 에러 메시지가 발생하면 빌드옵션에서 플랫폼 대상을 x86으로 설정해주세요.


이제 다시 빌드하시면 됩니다.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2012/02/20 13:19



저는 현재 .NET 4.0을 사용하고 있습니다. 하지만 프로젝트를 진행하다보면 하위버전의 DLL들을 사용하게 되는 경우가 종종 발생합니다.

몇 일전 저도 .NET 4.0에서 SqlLite.NET을 사용하려다가 이런 에러를 만났습니다.

System.IO.FileLoadException이(가) 발생했습니다.

  Message=혼합 모드 어셈블리는 런타임의 버전 'v2.0.50727'에 대해 빌드되며 추가 구성 정보 없이 '4.0' 런타임에 로드할 수 없습니다.

  Source=SqliteTest

  StackTrace:

       위치: SqliteTest.Form1.FastInsertMany()

       위치: SqliteTest.Form1.simpleButton2_Click(Object sender, EventArgs e) 파일 D:\TestBed\SqliteTest\Form1.cs:줄 126

  InnerException: 

 
뭐 메시지만 봐도 버전문제인줄 알겠더군요. 하지만 문제는 해결책이 옵션하나 바꾸는게 아니라는겁니다. 대부분은 그냥 VisualStudio에서 설정만 바꾸면 되게 해놓았으면서 이 문제는 옵션이 없더군요.

이 문제를 해결하기 위해서는 app.config 파일의 설정을 직접 바꿔줘야 합니다.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

   <startup useLegacyV2RuntimeActivationPolicy="true">

      <supportedRuntime version="v4.0"/>

   </startup>

</configuration>


빨간 글씨가 바뀐 부분입니다. 이렇게 바꿔주고 다시 빌드하시면 이제 정상적으로 돌아가는 프로그램을 볼 수 있습니다.^^
 


참고: http://msdn.microsoft.com/ko-kr/library/w4atty68.aspx  
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2011/10/20 12:40

Sublime Text



정말 이쁘고 강력해보이는 툴입니다만... 에디트플러스나 notepad++를 써오던 저는 간단한 폰트설정에서 막히더군요. ^^;;

그래서 역시 구글링으로 방법을 찾아봤습니다.

Preferences > File Settings - User 클릭~!!

빌드 2161 버전을 기준으로 Base File.sublime-settings라는 파일이 열리면 다음과 같은 내용이 입력되어 있을껍니다.
{
"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme"
}

음... 설정파일에 XML이 아니라 JSON을 사용했군요. 저도 개인적으로 XML보다 JSON을 좋아 합니다.^^

이제 저 안에 원하는 폰트와 사이즈를 입력합니다.
{
"color_scheme": "Packages/Color Scheme - Default/Monokai.tmTheme",
"font_face": "Bitstream Vera Sans Mono",
"font_size": 14
}

 저는 'Bitstream Vera Sans Mono'를 14로 설정했습니다. 그리고 저장하면 바로 적용~!!

간단하죠? ^^

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2011/10/07 08:38
  1. Play framework을 다운 받습니다. => http://www.playframework.org/download
  2. 각 압축파일들을 적당한 곳에 압축을 풀어주세요. 앞으로 압축파일이 풀린 경로를 %PLAY_HOME%, %MONGO_HOME%으로 적겠습니다.
  3. %PLAY_HOME% 경로로 가서 새로운 프로젝트를 생성합니다.

    play new PollCenter

    이렇게 치면 application name을 다시 물어보는데 그냥 엔터를 치시면 됩니다. 정상적으로 생성되었다면 이렇게 메시지가 뜹니다. 이때 PollCenter에 절대경로(예:D:\Git\PollCenter)를 지정해서 다른 경로에 프로젝트를 생성할 수도 있습니다.

    D:\play\play-1.2.1>play new PollCenter
    ~        _            _
    ~  _ __ | | __ _ _  _| |
    ~ | '_ \| |/ _' | || |_|
    ~ |  __/|_|\____|\__ (_)
    ~ |_|            |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ The new application will be created in D:\play\play-1.2.1\PollCenter
    ~ What is the application name? [PollCenter]
    ~
    ~ OK, the application is created.
    ~ Start it with : play run PollCenter
    ~ Have fun!
    ~

  4. 이제 이클립스에서 편집을 할수 있도록 eclipsify 명령어로 이클립스 프로젝트를 만들어 보겠습니다. play는 별도로 컴파일이 필요하지 않기 때문에 그냥 텍스트 에디터로 편집을 해도 되지만 IDE에 익숙해진 저는 주로 사용하는 java.util 패키지도 다 못외우고 있는 관계로 이클립스를 매우 선호합니다.^^;; 이번에도 %PLAY_HOME% 경로로 가서 다음 명령어를 실행합니다.

    play eclipsify PollCenter

    정상적으로 완료된 경우 다음과 같이 메시지가 나옵니다.

    D:\play\play-1.2.1>play eclipsify PollCenter
    ~        _            _
    ~  _ __ | | __ _ _  _| |
    ~ | '_ \| |/ _' | || |_|
    ~ |  __/|_|\____|\__ (_)
    ~ |_|            |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ OK, the application is ready for eclipse
    ~ Use File/Import/General/Existing project to import D:\play\play-1.2.1\PollCent
    er into eclipse
    ~
    ~ Use eclipsify again when you want to update eclipse configuration files.
    ~ However, it's often better to delete and re-import the project into your works
    pace since eclipse keeps dirty caches...
    ~

    이제 이클립스를 실행하고 임포트>Existing project to import로 설정하시면 이클립스 설정 완료입니다.~!

  5. 이제 플레이를 실행해보겠습니다. 이번에도 경로는 역시 %PLAY_HOME%입니다.

    play run PollCenter

    정상적으로 완료된 경우 다음과 같이 메시지가 나옵니다.

    D:\play\play-1.2.1>play run PollCenter
    ~        _            _
    ~  _ __ | | __ _ _  _| |
    ~ | '_ \| |/ _' | || |_|
    ~ |  __/|_|\____|\__ (_)
    ~ |_|            |__/
    ~
    ~ play! 1.2.1, http://www.playframework.org
    ~
    ~ Ctrl+C to stop
    ~
    Listening for transport dt_socket at address: 8000
    15:47:48,033 INFO  ~ Starting D:\play\play-1.2.1\PollCenter
    15:47:48,552 WARN  ~ You're running Play! in DEV mode
    15:47:48,635 INFO  ~ Listening for HTTP on port 9000 (Waiting a first request to
     start) ...

  6. 이제 http://localhost:9000/로 접속하면 다음과 같은 첫화면이 나옵니다.
이제 Play 셋팅 완료입니다.^^

다음에는 Play에 morphia 모듈을 사용해서 MongoDB를 Play와 함께 사용하는 법을 알아보도록 하겠습니다.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 이야기 > Play framework' 카테고리의 다른 글

Play framework 셋팅하기  (0) 2011/07/15
morphia 모듈로 MongoDB 사용하기  (0) 2011/07/15
MongoDB with Play  (0) 2011/07/03
by 서영아빠 2011/07/15 21:25


morphia 모듈은 play에서 MongoDB를 사용가능하게 해주는 역할을 합니다.
물론 그냥 MongoDB Java 드라이버로 개발도 가능합니다만... 기왕이면 JPA를 활용하기 위해서 morphia 모듈을 사용해 봅시다.

셋팅은 간단합니다. 다음 한줄만 입력해 주시면 됩니다.

play install morphia-1.2.1beta6

위 명령어 중에서 '1.2.1beta6'이 부분은 그때그때 최신버젼으로 입력해주시면 됩니다.
모듈 최신 버전 확인은 여기에서...

play에 morphia를 인스톨하면 %PLAY_HOME%/modules/morphia 경로에 morphia 관련 파일들이 생성됩니다.

그 다음 application.conf 파일에 다음과 같은 내용을 추가합니다.

## Morphia module configuration
# load morphia
# morphia가 인스톨된 경로를 지정합니다. 대부분 그냥 이대로 사용하시면 됩니다.
module.morphia=${play.path}/modules/morphia
# where your mongodb server located?
# 몽고디비가 설치되어 있는 주소를 입력합니다.
morphia.db.host=localhost
# what's your mongodb server port
# 몽고디비 포트를 입력합니다. 몽고디비 기본 포트는 27017입니다.
morphia.db.port=27017
# what's your database name
# 몽고디비내에 사용될 디비이름을 입력합니다. oracle의 유저와 비슷한 개념입니다.
morphia.db.name=PollCenter
# Authentication to your mongodb server
# 인증정보입니다. 몽고디비에서 유저와 암호를 설정한 경우 입력합니다. 하지만 몽고디비 홈페이지에서도 인증보다는 신뢰할 수 있는 환경(특정 컴퓨터만 접속이 가능하도록 제한하는 경우 등)에서 셋팅해서 사용하길 권장하고 있습니다.
#morphia.db.username=user
#morphia.db.password=pass
# configure your ID field type
# could be either ObjectId or Long, default to ObjectId
# 몽고디비에서 사용될 id필드의 타입을 지정합니다. Long을 사용하면 1,2,3,4... 식으로 생성되고 ObjectId로 하면 몽고디비 스타일의 아이디를 생성합니다.
morphia.id.type=Long

이제 play 셋팅은 끝났습니다. 이번에는 MongoDB를 설정할 차례입니다.
몽고디비는 여기서 다운받으세요.
몽고디비는 아주 간단하게 시작할 수 있습니다.

다운받은 몽고디비의 압축을 풀고 bin 디렉토리에 가서 mongod를 실행하면 끝입니다.
단, 처음에는 data를 저장할 폴더를 생성해줘야 합니다.
기본 경로는 C:/data/db/입니다.
만약 특정 경로를 디비 저장소로 사용하고 싶으시면

%MONGODB_HOME%/mongod --dbpath D:/mongodb/data

이렇게 해주시면 됩니다.
잊지마세요~ 해당 경로는 mongod를 실행하기전에 이미 만들어져 있어야 합니다.
디비가 제대로 실행되었는지 확인하시려면 http://localhost:28017/ 로 접속해 보면 쉽게 알 수 있습니다. 만약 페이지가 제대로 뜨지 않았다면 mongod를 실행할 때 에러메시지가 발생하지 않았는지 다시 확인해 보세요.

이제 셋팅은 끝났습니다. 다음에는 간단하게 JPA를 사용해서 CRUD를 만드는 법을 알아보도록 하겠습니다.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 이야기 > Play framework' 카테고리의 다른 글

Play framework 셋팅하기  (0) 2011/07/15
morphia 모듈로 MongoDB 사용하기  (0) 2011/07/15
MongoDB with Play  (0) 2011/07/03
by 서영아빠 2011/07/15 21:24


6월 19일날 JCO 컨퍼런스에서 MongoDB with Play라는 제목의 강의를 들었습니다.
MongoDB는 이야기는 들어봤는데 Play는 처음 들어본거라 강의를 듣기전에 검색을 해봤습니다.

"이게 뭘까?"하고 Play framework 홈페이지를 방문한 저는 신선한 충격에 3~4시간동안 Play framework 홈페이지를 떠나지 못했습니다.

프로그래밍에 대해서 항상 좀더 쉽고 깔끔한 방법을 찾던 저에게 Play는 저에게 새로운 해법으로 보였습니다. 그래서 틈이날 때 마다 Play로 간단한 프로그램을 만들고 있습니다.

하지만 혼자서 삽질하는게 생각보다 쉽지가 않았습니다. 머리가 좋은것도 아니고 영어를 잘하는 것도 아닌... 아주 평범한(평범한거라고 믿습니다 =ㅅ=;;) 프로그래머로서 제 삽질을 앞으로 하나씩 기록해 놓으려고 합니다.

[Play framework 셋팅하기]
[morphia 모듈로 MongoDB 사용하기]

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 이야기 > Play framework' 카테고리의 다른 글

Play framework 셋팅하기  (0) 2011/07/15
morphia 모듈로 MongoDB 사용하기  (0) 2011/07/15
MongoDB with Play  (0) 2011/07/03
by 서영아빠 2011/07/03 15:56
출처 : http://msdn.microsoft.com/en-us/library/bb386947.aspx#DefaultTypeMapping

.NET에서 사용되는 형식과 SQL-Server에서 사용되는 타입의 맵핑 테이블입니다.
매번 MSDN을 찾기가 번거로워서 가져다 놨습니다.^^;;



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2011/03/21 15:46




앵그리버드 PC판입니다.
저도 아이폰은 있지만 한국계정이라 처음해봤는데 나름 중독성이 있네요. ^^

DropBox가 해외서버라 다운로드 속도는 좀 걸릴수 있습니다.^^;;

torrent를 사용자분은 아래 torrent 파일로 받으세요.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
by 서영아빠 2011/02/09 14:05
CSS 사용시 IE 버전별 핵입니다.
개발하면서 매번 IE가 절 짜증나게 하지만 버릴수가 없군요...

body {
color: red; /* all browsers, of course */
color : green\9; /* IE8 and below */
*color : yellow; /* IE7 and below */
_color : orange; /* IE6 */
}

/* IE7일 경우만 해당 CSS 적용 */
<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="../css/common/IE7.css">
<![endif]-->

/* IE8일 경우만 해당 CSS 적용 */
<!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="../css/common/IE8.css">
<![endif]-->

/* IE7 이하일 경우만 해당 CSS 적용 (lt(less than)는 '<' 연산자를 의미합니다. gt(greater than)는 '>' 입니다.) */
<!--[if lt IE 7]>
<link rel="stylesheet" type="text/css" href="../css/common/IE7.css">
<![endif]-->
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'개발 이야기' 카테고리의 다른 글

CSS IE 핵  (1) 2011/02/04
[펌]색상 코드표  (0) 2009/03/05
원격 접속 포트 변경하기  (1) 2009/02/02
RIA to RxA 세미나 참가 후기  (0) 2008/11/24
by 서영아빠 2011/02/04 22:45
| 1 2 3 4 5 ... 9 |