https://item.gmarket.co.kr/Item?goodscode=2379787038
๊ฐ์ธ์ฉ ์์์ฝ์ฝํ ์ผ์์ ๊ธฐ๋กํ๋ ๋ธ๋ก๊ทธ
https://item.gmarket.co.kr/Item?goodscode=2379787038
http://item.gmarket.co.kr/Item?goodscode=2379787038
https://shopping.interpark.com/product/productInfo.do?prdNo=10069551821
ejs๋ฅผ ํ์ฉํ ๊ฒ์ํ ๋ง๋ค๊ธฐ
>npm install ejs
(1) ๋ช ๋ น์ด ์ ๋ ฅ์ผ๋ก..
ALTER TABLE userinfo AUTO_INCREMENT = 2;
※ ์ด ๋ฐฉ์ ๋๋๊ฒ ๊ฐ์๋ฐ ์ค๋ ๊ฐ์๊ธฐ ์๋จ.. ใ ก,.ใ กa
์ด์จ๋ ํ ์คํธ๋ฅผ ์ํด ์ด๊ฒ์ ๊ฒ ํ๋ค๊ฐ id๊ฐ ์์ฐจ์ ์ด์ง ์์ ๋ณด๊ธฐ ์ซ์ด์ ์ด๊ธฐํ ํจ!
(2) ๋ ์ฝ๋ ์ด๊ธฐํ ๋ฉ๋ด๋ก..
* EQS
Environment Query System
https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/ArtificialIntelligence/EQS/
(์์ค์ฝ๋)
(์์ค์ฝ๋)
# v2
npm install formidable
npm install formidable@latest
npm install formidable@v2
# or v3
npm install formidable@v3> npm install json ํจํค์ง ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ค์ ๋น๋ํด์ค
์ํด๋, ์ ํ๋ก์ ํธ ์์ฑ ํ ํ์ํ ๋ชจ๋ ๋น๋(์ค์น ํด์ค)
>npm install supervisor
>npm install express // express ์๋ฒ ๊ตฌ์ฑ
>npm install connect-multiparty
>npm init -y
(์์ค์ฝ๋)
(์์ค์ฝ๋)
(์์ค์ฝ๋)
(์์ค์ฝ๋)
์ฌ๋ฏธ๋ ์ฌ์ดํธ๋ฅผ ๋ฐ๊ฒฌ ํ๋ค.
https://www.marpple.com/kr/product/detail?bp_id=3203
์ปค์คํ ๋์์ธ ์๋ฅ ๋ฐ ์ฌ๋ฌ๊ฐ์ง ์ ์ธ์ฌ๋ฆฌ๋ฅผ ๋ง๋ค ์๋ ์๊ณ ์ ์ ํ์ฌ ํ๋งค๊น์ง ํ ์ ์๊ฒ ๋ง๋ค์ด ๋์ ์ฌ์ดํธ์ด๋ค.
๋์์ธ ์ค๋ ฅ์ ์๋๋ฐ ์ฌ์ ํ ๋ ์ด๊ฒ์ ๊ฒ ์์์ผ ํ ๋ณต์ก์ฑ(?)์ ๋จธ๋ฆฌ๊ฐ ์ํ๋ค๋ฉด ์ธํ๋ฒ ์ดํฐ๋ผ๊ณ ์๊ฐํ๊ณ ์ด ๊ณณ์์ ํ๋ฒ ์์ฅ ๋ง(?)์ ๋ณด๋ ๊ฒ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
์ธ๋ฆฌ์ผ ๋ก๊ณ ๊ตฌ๊ธ๋ง์ผ๋ก ์ฐพ์์ ๋ค์ด ๋ฐ์ ํฐ์ ์ธ ํจ ๋ง๋ค์ด๋ณผ๊น ์ถ์ด ๋์๋ค๋๋ค๊ฐ ์ฐพ๊ฒ ๋ ๊ณณ์ธ๋ฐ ์ด๋ฏธ ์ ๋ช ํ ๊ณณ์ด๋ ค๋? ใ ใ
ํ๋ก๊ทธ๋๋จธ๊ฐ ํ์์ ๋ช ์์ ์ผ๋ก ์ง์ ํ์ง ์์ ์ฝ๋ ์์(์ฃผ๋ก ๋ณ์)์ ํ์์ ์ปดํ์ผ๋ฌ๊ฐ ์ด๊ธฐ์น์ ๊ทผ๊ฑฐํด์ ๊ฒฐ์ ํ๋ ๊ฒ์ ํํ type inference๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. inference๋ ํํ ์ถ๋ก ์ด๋ผ๊ณ ๋ฒ์ญํ์ง๋ง, ๋ฌธ๋งฅ์ ๋ฐ๋ผ์๋ ‘์ถ๋ฆฌ’๋ผ๊ณ ๋ ํฉ๋๋ค(์๋ฅผ ๋ค์ด ์ ๋ฒ์ญ์ ์ธ๊ณต์ง๋ฅ: ํ๋์ ์ ๊ทผ๋ฐฉ์์์๋ ์ถ๋ก ์ inference๋ณด๋ค ์ข ๋ ํฌ๊ด์ ์ธ reasoning์๊ฒ ์๋ณดํ๊ณ , inference๋ ‘์ถ๋ฆฌ’๋ก ๋ฒ์ญํ์ต๋๋ค)1.๊ทธ๋ฐ๋ฐ Effective Modern C++์์ ์ ์ ์ค์ฝง ๋ง์ด์ด์ค(SM)๋ ์ผ๊ด๋๊ฒ type deduction, ์ฆ ‘ํ์ ์ฐ์ญ’์ด๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฒ์ญ์ p.27์ด๋ p.45๋ฅผ ๋ณด๋ฉด ์ ์ ์์ง๋ง, SM์ด ์ ์ด์ ํ์ ์ถ๋ก ์ด๋ผ๋ ์ฉ์ด๋ฅผ ๋ชฐ๋๋ ๊ฒ์ ์๋๋๋ค. ํนํ, p.45๋ฅผ ๋ณด๋ฉด type inference๊ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ๊ณ์์ “ํํ ์ฐ์ธ๋ค”๋ ์ ๋ ์๊ณ ์์์ ํ์ธํ ์ ์์ต๋๋ค.
๊ณ์ ๋ณด๊ธฐ => https://occamsrazr.net/tt/311
//by JSHong CodeBlock//
#include "Core.h"#include "TextureLoader.h"#include <DirectXTex.h>#include <Utility/STLException.h>
namespace STL{ std::unordered_map<std::wstring, ID3D11ShaderResourceView*> TextureLoader::textureMap;
ID3D11ShaderResourceView* TextureLoader::CreateShaderResourceView(ID3D11Device* device, const std::wstring& filename) { auto search = textureMap.find(filename); if (search != textureMap.end()) { return search->second; }
std::wstring extension = filename.substr(filename.find_last_of(TEXT(".")) + 1); std::transform(extension.begin(), extension.end(), extension.begin(), tolower);
static auto basePath = std::filesystem::current_path().parent_path();
auto finalPath = basePath; finalPath /= "Content\\Textures"; finalPath /= filename;
DirectX::ScratchImage image; HRESULT hr = E_FAIL; if (extension == TEXT("tga") || extension == TEXT("targa")) { hr = DirectX::LoadFromTGAFile( finalPath.c_str(), nullptr, image ); } else { hr = DirectX::LoadFromWICFile( finalPath.c_str(), DirectX::WIC_FLAGS_NONE, nullptr, image ); }
ThrowIfFailed(hr, "Failed to load scratch image.");
ID3D11Texture2D* texture = nullptr; hr = DirectX::CreateTexture( device, image.GetImages(), image.GetImageCount(), image.GetMetadata(), reinterpret_cast<ID3D11Resource**>(&texture) );
ThrowIfFailed(hr, "Failed to create texture.");
D3D11_SHADER_RESOURCE_VIEW_DESC srvDesc; memset(&srvDesc, 0, sizeof(srvDesc)); srvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; srvDesc.Texture2D.MipLevels = 1; srvDesc.Format = image.GetMetadata().format;
ID3D11ShaderResourceView* shaderResourceView = nullptr; hr = device->CreateShaderResourceView( texture, &srvDesc, &shaderResourceView );
SafeRelease(texture); ThrowIfFailed(hr, "Failed to shader resource view.");
textureMap.insert({ filename, shaderResourceView });
return shaderResourceView; }
void TextureLoader::Release() { for (auto pair : textureMap) { SafeRelease(pair.second); } }}