Microsoft MVP성태의 닷넷 이야기
Java: 23. Azure - 자바(Java)로 만드는 Web App Service - Tomcat 호스팅 [링크 복사], [링크+제목 복사],
조회: 17614
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 3개 있습니다.)
(시리즈 글이 7개 있습니다.)
기타: 46. Microsoft의 응용 프로그램을 클라우드로 제공하는 서비스 - Azure RemoteApp 소개
; https://www.sysnet.pe.kr/2/0/1672

Java: 22. Azure - 자바(Java)로 만드는 Web App Service - Java SE (Embedded Web Server) 호스팅
; https://www.sysnet.pe.kr/2/0/12686

Java: 23. Azure - 자바(Java)로 만드는 Web App Service - Tomcat 호스팅
; https://www.sysnet.pe.kr/2/0/12690

.NET Framework: 1998. Azure Functions를 사용한 간단한 실습
; https://www.sysnet.pe.kr/2/0/13037

개발 환경 구성: 736. 파이썬 웹 앱을 Azure App Service에 배포하기
; https://www.sysnet.pe.kr/2/0/13830

개발 환경 구성: 749. 파이썬 - Azure App Service에 응용 프로그램 배포하기 전의 환경
; https://www.sysnet.pe.kr/2/0/13946

개발 환경 구성: 750. 파이썬 - Azure App Service에 응용 프로그램 배포 후의 환경
; https://www.sysnet.pe.kr/2/0/13947




Azure - 자바(Java)로 만드는 Web App Service - Tomcat 호스팅

지난 글에서는,

Azure - 자바(Java)로 만드는 Web App Service - Java SE (Embedded Web Server) 호스팅
; https://www.sysnet.pe.kr/2/0/12686

Microsoft에서 제공한 Spring boot 예제 웹 애플리케이션을 Azure에서 호스팅하는 방법을 설명했습니다. 이번에는, 제가 만들어 두었던 일반적인 Java Web App을,

IntelliJ - 자바(Java)로 만드는 Web App을 Tomcat에서 실행하는 방법
; https://www.sysnet.pe.kr/2/0/12673

Azure Web App의 Tomcat 호스팅에 배포하는 방법을 IntelliJ IDE로 알아보겠습니다.




사실 이미 아래의 문서에서 잘 설명해 주고 있는 내용입니다.

Create a Hello World web app for Azure App Service using IntelliJ
; https://docs.microsoft.com/en-us/azure/developer/java/toolkit-for-intellij/create-hello-world-web-app

그래도 한번 실습을 해볼 필요가 있겠지요. ^^

우선, 개발 환경인 IntelliJ에 Azure Toolkit for IntelliJ을 설치해야 하는데 굳이 페이지에서 다운로드할 필요 없이 IntelliJ 시작 화면의 "Plugins"에서 다음과 같이 설치하면 됩니다.

azure_java_web_app_0.png

그리고, 지난번에 만들어 둔 Java Web App 프로젝트를 열고, "Tools" / "Azure" / "Azure Sign In..." 메뉴를 선택해 자신이 구독하고 있는 Azure Subscription을 로그인 및 선택해 줍니다.

한편으론 Azure Portal에서 해당 Java web app을 호스팅할 Web App Service를 하나 미리 만들어 둡니다. (Portal에서 만들어 주는 것이 더 세세하게 제어도 할 수 있고 편합니다.) 유의할 것은 이때의 "Java Web Server" 유형은 반드시 Tomcat으로 설정합니다.

azure_java_web_app_1.png

이제 마지막으로 IDE의 프로젝트 창에서 해당 Java 프로젝트를 마우스 우 클릭해 "Azure" / "Deploy to Azure Web Apps" 메뉴를 선택하면,

azure_java_web_app_2.png

아래 화면과 같이 "Artifact"와 함께 Azure에 만들어 두었던 "Web App"이 콤보박스에 나열되므로 적절한 선택을 한 후,

azure_java_web_app_3.png

"Run" 버튼을 누르면 다음의 메시지가 IDE Run 창에 출력되면서,

Stopping web app...
Deploy succeed, restarting web app...
Deploy succeed
URL: https://[...].azurewebsites.net

배포와 함께 웹 브라우저가 뜨면서 해당 웹 사이트를 방문하게 됩니다. 그런데 웹 브라우저가 뜨긴 하지만, 대개의 경우 Java Web App이 내려갔다 올라오는데 시간이 걸려 "Error 403 - This web app is stopped." 오류 화면을 보게 됩니다. (약간의 시간이 흐른 다음 재시도를 하면 정상적으로 웹 애플리케이션이 실행되는 것을 확인할 수 있습니다.)

이후 배포가 필요할 때마다 "Run" / "Run... (Alt + Shift + F10)" 메뉴를 선택하면 나오는 메뉴에서 "Azure" / "Deploy to Azure Web Apps"로 등록했던 설정을 선택하면 됩니다.

패키징된 app.war 파일은 (기본 프로젝트다 보니) 겨우 3KB에 불과하고 D:\home\site\wwwroot에 위치합니다. (지난번 Spring Boot 기초 예제는 19MB 정도였습니다.)




Tomcat으로 호스팅하는 경우 D:\home\LogFiles\Application 디렉터리가 생성되며 catalina 관련 로그 파일들이 해당 디렉터리에 생성되는 것을 확인할 수 있습니다.

D:\home\LogFiles\Application> dir /b
catalina.75b559099...[생략]...425b7b07.2021-06-26.log
host-manager.75b55...[생략]...67425b7b07.2021-06-26.log
localhost.75b5...[생략]...7425b7b07.2021-06-26.log
manager.75b559...[생략]...6d67425b7b07.2021-06-26.log

또한 웹 액세스 로그는 별도로 "D:\home\LogFiles\http\RawLogs" 디렉터리에 "site_access_log.75b559...[생략]...7425b7b07.2021-06-26.txt" 식의 이름으로 남습니다.

아울러, Kudu의 Process Explorer를 보면 "w3wp.exe" / "JavaBootstrapper" / "cmd" / "java" 프로세스 계층으로 웹 호스팅이 되는 것을 확인할 수 있고, Handles 탭의 내용은 대충 이렇게 나옵니다.

D:\home\site\wwwroot
...
C:\DWASFiles\Sites\testhello\NtTracing\nt-trace.pid20264.log
C:\DWASFiles\Sites\testhello\Temp\catalina.bat.Y
C:\DWASFiles\Sites\testhello\Temp\hsperfdata_RD00155D4D9669$\20264
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\rt.jar
...
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\legacy8ujsse.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\openjsse.jar
...
D:\home\LogFiles\Application\localhost.75b55909...[생략]...67425b7b07.2021-06-26.log
D:\home\LogFiles\Application\manager.75b559099a6...[생략]...67425b7b07.2021-06-26.log
D:\Program Files\apache-tomcat-8.5.57\lib\servlet-api.jar
D:\Program Files\apache-tomcat-8.5.57\lib\azure.appservice.jar
D:\Program Files\apache-tomcat-8.5.57\bin\bootstrap.jar
D:\Program Files\apache-tomcat-8.5.57\bin\commons-daemon.jar
D:\Program Files\apache-tomcat-8.5.57\bin\tomcat-juli.jar
...
D:\Program Files\apache-tomcat-8.5.57\lib\jaspic-api.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-api.jar
D:\Program Files\apache-tomcat-8.5.57\lib\jasper.jar
D:\Program Files\apache-tomcat-8.5.57\lib\catalina-ant.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\resources.jar
D:\Program Files\apache-tomcat-8.5.57\lib\ecj-4.6.3.jar
D:\Program Files\apache-tomcat-8.5.57\lib\jasper-el.jar
D:\Program Files\apache-tomcat-8.5.57\lib\annotations-api.jar
D:\Program Files\apache-tomcat-8.5.57\lib\azure.appservice.easyauth.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\jsse.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\jfr.jar
D:\home\LogFiles\Application\catalina.75b559099a6...[생략]...7b07.2021-06-26.log
D:\home\LogFiles\Application\host-manager.75b5590...[생략]...25b7b07.2021-06-26.log
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-coyote.jar
D:\Program Files\apache-tomcat-8.5.57\lib\jsp-api.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\dnsns.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\cldrdata.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\localedata.jar
D:\Program Files\apache-tomcat-8.5.57\lib\catalina-ha.jar
D:\Program Files\apache-tomcat-8.5.57\lib\catalina-storeconfig.jar
D:\Program Files\apache-tomcat-8.5.57\lib\catalina-tribes.jar
D:\Program Files\apache-tomcat-8.5.57\lib\el-api.jar
D:\Program Files\apache-tomcat-8.5.57\lib\catalina.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-dbcp.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-ja.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-de.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-es.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-fr.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-ko.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-ru.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-i18n-zh-CN.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-jdbc.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-jni.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-util-scan.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-util.jar
D:\Program Files\apache-tomcat-8.5.57\lib\tomcat-websocket.jar
D:\Program Files\apache-tomcat-8.5.57\lib\websocket-api.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\jce.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\sunec.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\sunjce_provider.jar
C:\Program Files\Java\zulu8.48.0.53-jre8.0.265-win_x64\lib\ext\sunmscapi.jar
D:\home\LogFiles\http\RawLogs\site_access_log.75b55909...[생략]...b7b07.2021-06-26.txt

그리고 아래는 jcmd의 결과입니다.

D:\> jcmd 9696 VM.system_properties
9696:
#Mon Jun 26 13:12:23 GMT 2021
java.vendor=Azul Systems, Inc.
sun.java.launcher=SUN_STANDARD
catalina.base=D\:\\Program Files\\apache-tomcat-8.5.57
sun.management.compiler=HotSpot 64-Bit Tiered Compilers
port.http=1097
catalina.useNaming=true
os.name=Windows Server 2016
sun.boot.class.path=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\resources.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\rt.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\sunrsasign.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\jsse.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\jce.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\charsets.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\jfr.jar;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\classes;
java.util.logging.config.file=D\:\\Program Files\\apache-tomcat-8.5.57\\conf\\logging.properties
sun.desktop=windows
java.vm.specification.vendor=Oracle Corporation
site.unpackwars=true
java.runtime.version=1.8.0_265-b11
site.logdir=D\:\\home\\LogFiles\\
user.name=RD00155D4D9669$
tomcat.util.scan.StandardJarScanFilter.jarsToScan=log4j-taglib*.jar,log4j-web*.jar,log4javascript*.jar,slf4j-taglib*.jar
shared.loader=
tomcat.util.buf.StringCache.byte.enabled=true
user.language=en
java.naming.factory.initial=org.apache.naming.java.javaURLContextFactory
sun.boot.library.path=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\bin
jdk.tls.ephemeralDHKeySize=2048
java.version=1.8.0_265
java.util.logging.manager=org.apache.juli.ClassLoaderLogManager
user.timezone=GMT
java.net.preferIPv4Stack=true
sun.arch.data.model=64
java.util.concurrent.ForkJoinPool.common.threadFactory=org.apache.catalina.startup.SafeForkJoinWorkerThreadFactory
java.endorsed.dirs=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\endorsed
sun.cpu.isalist=amd64
sun.jnu.encoding=Cp1252
site.home=C\:/DWASFiles/Sites/testhello/Temp/tomcatFiles/DFAF388C-C2BD-4611-9164-D50CCE933D31
file.encoding.pkg=sun.io
package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.tomcat.
file.separator=\\
java.specification.name=Java Platform API Specification
java.class.version=52.0
user.country=US
java.home=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64
java.vm.info=mixed mode
os.version=10.0
catalina.instance.name=75b5590...[생략]...7425b7b07
path.separator=;
java.vm.version=25.265-b11
site.appbase=C\:/DWASFiles/Sites/testhello/Temp/tomcatFiles/DFAF...[생략]...33D31/site/wwwroot/webapps
user.variant=
java.protocol.handler.pkgs=org.apache.catalina.webresources
java.awt.printerjob=sun.awt.windows.WPrinterJob
sun.io.unicode.encoding=UnicodeLittle
awt.toolkit=sun.awt.windows.WToolkit
package.definition=sun.,java.,org.apache.catalina.,org.apache.coyote.,org.apache.jasper.,org.apache.naming.,org.apache.tomcat.
user.script=
java.naming.factory.url.pkgs=org.apache.naming
user.home=D\:\\Users\\testhello
java.specification.vendor=Oracle Corporation
tomcat.util.scan.StandardJarScanFilter.jarsToSkip=azure.appservice.jar,azure.appservice.easyauth.jar,applicationinsights-*.jar,annotations-api.jar,ant-junit*.jar,ant-launcher.jar,ant.jar,asm-*.jar,aspectj*.jar,bootstrap.jar,catalina-ant.jar,catalina-ha.jar,catalina-jmx-remote.jar,catalina-storeconfig.jar,catalina-tribes.jar,catalina-ws.jar,catalina.jar,cglib-*.jar,cobertura-*.jar,commons-beanutils*.jar,commons-codec*.jar,commons-collections*.jar,commons-daemon.jar,commons-dbcp*.jar,commons-digester*.jar,commons-fileupload*.jar,commons-httpclient*.jar,commons-io*.jar,commons-lang*.jar,commons-logging*.jar,commons-math*.jar,commons-pool*.jar,dom4j-*.jar,easymock-*.jar,ecj-*.jar,el-api.jar,geronimo-spec-jaxrpc*.jar,h2*.jar,hamcrest-*.jar,hibernate*.jar,httpclient*.jar,icu4j-*.jar,jasper-el.jar,jasper.jar,jaspic-api.jar,jaxb-*.jar,jaxen-*.jar,jdom-*.jar,jetty-*.jar,jmx-tools.jar,jmx.jar,jsp-api.jar,jstl.jar,jta*.jar,junit-*.jar,junit.jar,log4j*.jar,mail*.jar,objenesis-*.jar,oraclepki.jar,oro-*.jar,servlet-api-*.jar,servlet-api.jar,slf4j*.jar,taglibs-standard-spec-*.jar,tagsoup-*.jar,tomcat-api.jar,tomcat-coyote.jar,tomcat-dbcp.jar,tomcat-i18n-*.jar,tomcat-jdbc.jar,tomcat-jni.jar,tomcat-juli-adapters.jar,tomcat-juli.jar,tomcat-util-scan.jar,tomcat-util.jar,tomcat-websocket.jar,tools.jar,websocket-api.jar,wsdl4j*.jar,xercesImpl.jar,xml-apis.jar,xmlParserAPIs-*.jar,xmlParserAPIs.jar,xom-*.jar
java.library.path=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\bin;D\:\\Windows\\Sun\\Java\\bin;D\:\\Windows\\system32;D\:\\Windows;D\:\\Python27;D\:\\Program Files (x86)\\nodejs;D\:\\Windows\\system32;D\:\\Windows;D\:\\Windows\\System32\\Wbem;D\:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;D\:\\Program Files\\Git\\cmd;D\:\\Program Files\\Microsoft Network Monitor 3\\;D\:\\Users\\Administrator\\AppData\\Roaming\\npm;D\:\\Program Files (x86)\\nodejs\\;D\:\\Program Files (x86)\\Mercurial\\;d\:\\Program Files (x86)\\Microsoft ASP.NET\\ASP.NET Web Pages\\v1.0\\;D\:\\Program Files (x86)\\dotnet;D\:\\Program Files\\dotnet;D\:\\Windows\\system32\\config\\systemprofile\\AppData\\Local\\Microsoft\\WindowsApps;;E\:\\base\\x64;E\:\\base\\x86;;D\:\\Packages\\GuestAgent\\GuestAgent\\LegacyRuntime\\x64;D\:\\Packages\\GuestAgent\\GuestAgent\\LegacyRuntime\\x86;;D\:\\Program Files (x86)\\dotnet;D\:\\Program Files\\dotnet;D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\bin;;.
java.vendor.url=http\://www.azulsystems.com/
java.vm.vendor=Azul Systems, Inc.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar","${site.home}/tomcat/lib","${site.home}/tomcat/lib/*.jar"
java.runtime.name=OpenJDK Runtime Environment
sun.java.command=org.apache.catalina.startup.Bootstrap start
java.class.path=D\:\\Program Files\\apache-tomcat-8.5.57\\lib\\servlet-api.jar;D\:\\Program Files\\apache-tomcat-8.5.57\\lib\\azure.appservice.jar;D\:\\Program Files\\apache-tomcat-8.5.57\\bin\\bootstrap.jar;D\:\\Program Files\\apache-tomcat-8.5.57\\bin\\tomcat-juli.jar;
java.vm.specification.name=Java Virtual Machine Specification
site.xmlbase=C\:/DWASFiles/Sites/testhello/Temp/tomcatFiles/DFAF38...[생략]...933D31/site/wwwroot/
java.vm.specification.version=1.8
catalina.home=D\:\\Program Files\\apache-tomcat-8.5.57
sun.cpu.endian=little
sun.os.patch.level=
site.tempdir=D\:\\local\\Temp
java.io.tmpdir=D\:\\local\\Temp
java.vendor.url.bug=http\://www.azulsystems.com/support/
server.loader=
os.arch=amd64
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.ext.dirs=D\:\\Program Files\\Java\\zulu8.48.0.53-jre8.0.265-win_x64\\lib\\ext;D\:\\Windows\\Sun\\Java\\lib\\ext
user.dir=D\:\\home\\site\\wwwroot
line.separator=\r\n
java.vm.name=OpenJDK 64-Bit Server VM
jdk.vendor.version=Zulu 8.48.0.53-win64
ignore.endorsed.dirs=
file.encoding=Cp1252
java.specification.version=1.8




참고로, Tomcat이 아닌 "Java SE(Embedded Web Server)"로 선택된 Web App으로 이번 글에서 실습하고 있는 프로젝트를 배포하는 경우 다음과 같은 오류가 발생합니다.

The specified CGI application encountered an error and the server terminated the process.

제가 자알못이라 왜 저런 오류가 발생하는지 몰랐는데, 우리 회사의 자바 Guy가 ^^ Tomcat에서 호스팅 해야 한다고 알려줬습니다.

반대로 Tomcat 호스팅으로 설정된 Java Web App에 "Azure - 자바(Java)로 만드는 Web App Service - Java SE (Embedded Web Server) 호스팅"의 gs-spring-boot을 배포해도 이런 오류가 발생합니다.

HTTP 상태 404 – 찾을 수 없음
타입 상태 보고

설명 Origin 서버가 대상 리소스를 위한 현재의 representation을 찾지 못했거나, 그것이 존재하는지를 밝히려 하지 않습니다.

Apache Tomcat/8.5.57

마지막으로 제가 겪었던 것 중에, 특정 환경에서 Azure Web App Extension이 설치된 경우 배포 중 다음과 같은 식의 오류가 발생하면서 배포에 실패했습니다.

Azure Toolkit Error

Failed to execute run configuration, as upload artifact([...].war) to app([...]) failed
Call Stack:
Execute run configuration
Deploy artifact to web app ([...])
Upload artifact([...].war) to app([...])

따라서 이럴 때는 일단 해당 Web App에 설치된 Extension을 모두 제거 후 배포를 다시 하면 됩니다. 재미있는 것은, 일단 한 번 정상적으로 배포된 이후에는 다시 Extension을 설치해도 그다음부터는 배포 시 오류가 발생하지 않았습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 8/7/2021]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
11792정성태12/11/201819911Graphics: 34. .NET으로 구현하는 OpenGL (11) - Per-Pixel Lighting파일 다운로드1
11791정성태12/11/201820081VS.NET IDE: 130. C/C++ 프로젝트의 시작 프로그램으로 .NET Core EXE를 지정하는 경우 닷넷 디버깅이 안 되는 문제 [1]
11790정성태12/11/201819042오류 유형: 507. Could not save daemon configuration to C:\ProgramData\Docker\config\daemon.json: Access to the path 'C:\ProgramData\Docker\config' is denied.
11789정성태12/10/201833059Windows: 153. C# - USB 장치의 연결 및 해제 알림을 위한 WM_DEVICECHANGE 메시지 처리 [2]파일 다운로드2
11788정성태12/4/201818902오류 유형: 506. SqlClient - Value was either too large or too small for an Int32.Couldn't store <2151292191> in ... Column
11787정성태11/29/201823066Graphics: 33. .NET으로 구현하는 OpenGL (9), (10) - OBJ File Format, Loading 3D Models파일 다운로드1
11786정성태11/29/201820037오류 유형: 505. OpenGL.NET 예제 실행 시 "Managed Debugging Assistant 'CallbackOnCollectedDelegate'" 예외 발생
11785정성태11/21/201821989디버깅 기술: 120. windbg 분석 사례 - ODP.NET 사용 시 Finalizer에서 System.AccessViolationException 예외 발생으로 인한 비정상 종료
11784정성태11/18/201821105Graphics: 32. .NET으로 구현하는 OpenGL (7), (8) - Matrices and Uniform Variables, Model, View & Projection Matrices파일 다운로드1
11783정성태11/18/201819903오류 유형: 504. 윈도우 환경에서 docker가 설치된 컴퓨터 간의 ping IP 주소 풀이 오류
11782정성태11/18/201818362Windows: 152. 윈도우 10에서 사라진 "Adapters and Bindings" 네트워크 우선순위 조정 기능 - 두 번째 이야기
11781정성태11/17/201822263개발 환경 구성: 422. SFML.NET 라이브러리 설정 방법 [1]파일 다운로드1
11780정성태11/17/201822961오류 유형: 503. vcpkg install bzip2 빌드 에러 - "Error: Building package bzip2:x86-windows failed with: BUILD_FAILED"
11779정성태11/17/201823794개발 환경 구성: 421. vcpkg 업데이트 [1]
11778정성태11/14/201820875.NET Framework: 803. UWP 앱에서 한 컴퓨터(localhost, 127.0.0.1) 내에서의 소켓 연결
11777정성태11/13/201821800오류 유형: 502. Your project does not reference "..." framework. Add a reference to "..." in the "TargetFrameworks" property of your project file and then re-run NuGet restore.
11776정성태11/13/201820038.NET Framework: 802. Windows에 로그인한 계정이 마이크로소프트의 계정인지, 로컬 계정인지 알아내는 방법
11775정성태11/13/201821163Graphics: 31. .NET으로 구현하는 OpenGL (6) - Texturing파일 다운로드1
11774정성태11/8/201820176Graphics: 30. .NET으로 구현하는 OpenGL (4), (5) - Shader파일 다운로드1
11773정성태11/7/201819924Graphics: 29. .NET으로 구현하는 OpenGL (3) - Index Buffer파일 다운로드1
11772정성태11/6/201821392Graphics: 28. .NET으로 구현하는 OpenGL (2) - VAO, VBO파일 다운로드1
11771정성태11/5/201820475사물인터넷: 56. Audio Jack 커넥터의 IR 적외선 송신기 - 두 번째 이야기 [1]
11770정성태11/5/201829467Graphics: 27. .NET으로 구현하는 OpenGL (1) - OpenGL.Net 라이브러리 [3]파일 다운로드1
11769정성태11/5/201820028오류 유형: 501. 프로젝트 msbuild Publish 후 connectionStrings의 문자열이 $(ReplacableToken_...)로 바뀌는 문제
11768정성태11/2/201821117.NET Framework: 801. SOIL(Simple OpenGL Image Library) - Native DLL 및 .NET DLL 제공
11767정성태11/1/201821380사물인터넷: 55. New NodeMcu v3(ESP8266)의 IR LED (적외선 송신) 제어파일 다운로드1
... 76  77  78  79  80  81  82  83  84  85  86  [87]  88  89  90  ...