Instantly share code, notes, and snippets.

View MyGithubSummary.md

ParkJunChul

Since my github account has so many repositories, I've made a selected list.
Here's my key projects, some of them doesn't have source code inside because I lost it.
You may ignore them or just guessing with some screenshots or dev docs.

Contact: pjc0247@naver.com

Unity (Non-Game)

View Champ.cs
class MainScript : MonoBehaviour {
public static MainScript instance;
void Awake() {
instance = this;
}
public void OnSelectChamp(Champ champ) {
// ignore if state is not a `picking`
if (state != "PICKING_CHAMPS") return;
View VR_FollowingHUD.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using NewtonVR;
public class FollowingHUD : MonoBehaviour {
public enum FollowingType
{
/// <summary>바로바로 따라옴</summary>
View ㄷㄷㄷㄷㄷㄷㄷㄷㄷ
ㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷㄷ
View f.cpp
#define LOG_WARNING(x, ...) UE_LOG(LogTemp, Warning, TEXT("%s - "##x), TEXT(__FUNCTION__), __VA_ARGS__)
#define LOG_ERROR(x, ...) UE_LOG(LogTemp, Error, TEXT("%s - "##x), TEXT(__FUNCTION__), __VA_ARGS__)
View ccc.md

[CI] 새 PR이 올라오면 답글 달고, 빌드하기

C.EventSource<NewPullRequest>("pjc0247", "Rinity")
    .Task<WriteIssueComment>()
        .In<ConstantTemplate>(WriteIssueComment.IN_Message,
            "Thank you for your contribution. We'll review your PR and reply soon.")
    .Task<CakeBuild>("src")
    .Task<SetPullRequestStatus>();
View jwvg.md
View avoid_boxing.md

Avoid Boxing

IL2CPP OPTIMIZATION : Avoid Boxing

__Boxing__은 코스트가 높은 연산이다. 이 글에서는 기존 C# 컴파일러는 특정한 상황에서 불필요한 Boxing이 수행되고, IL2CPP가 이를 어떻게 회피하는지를 보여준다.

기존 C# 컴파일러의 방식

View behind_aync_await.md

behind_async_await

static async void Foo()
{
    Console.WriteLine("A");

    await Task.Delay(1000);
View to.cpp.md

to::_string w/ C++

https://github.com/pjc0247/to.cpp/blob/master/to.h

컴파일 타임 타입 가지고 놀기

C++에는 기본적으로 타입이라는 타입이 없고, __RTTI__의 기능은 굉장히 제한적입니다. 하지만 컴파일 타임에는 해당 타입의 여러가지 정보를 가져오거나, 두개의 타입이 같은지 비교하는것도 가능합니다.
이미 __std__네임스페이스 아래에는 수많은 타입 유틸리티들이 포함되어 있으며, to.cpp 프로젝트에서는 아래와같은 함수들을 사용하였습니다. (이름이 직관적이기 때문에 별도의 설명은 달지 않도록 하겠습니다.)

  • std::is_same
  • std::is_pointer