블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2839)
Unity3D (887)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (188)
협업 (64)
3DS Max (3)
Game (12)
Utility (140)
Etc (99)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (52)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (19)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday


[링크] http://codingcoding.tistory.com/382


반응형
Posted by blueasa
, |

.NET> 4.0에서는 다음을 사용할 수 있습니다.

TimeSpan time = TimeSpan.FromSeconds(seconds);

//here backslash is must to tell that colon is
//not the part of format, it just a character that we want in output
string str = time .ToString(@"hh\:mm\:ss\:fff");

또는 날짜 형식을 원할 경우이 작업을 수행 할 수도 있습니다.

TimeSpan time = TimeSpan.FromSeconds(seconds);
DateTime dateTime = DateTime.Today.Add(time);
string displayTime = date.ToString("hh:mm:tt");

더 많은 정보는 Custom TimeSpan Format Strings를 확인하십시오.

 Question

초를 (Hour : Minutes : Seconds : Milliseconds) 시간으로 변환하는 가장 좋은 방법은 무엇입니까?

내가 80 초를 가지고 있다고 가정 해 봅시다. .NET에서 80 초를 DateTime이나 그와 비슷한 형식 (00h : 00m : 00s : 00ms)으로 변환 할 수있는 특수화 된 클래스 / 기술이 있습니까?







private string ConvertTime(double miliSeconds)
{
    var timeSpan = TimeSpan.FromMilliseconds(totalMiliSeconds);
    // Converts the total miliseconds to the human readable time format
    return timeSpan.ToString(@"hh\:mm\:ss\:fff");
}

//테스트

    [TestCase(1002, "00:00:01:002")]
    [TestCase(700011, "00:11:40:011")]
    [TestCase(113879834, "07:37:59:834")]
    public void ConvertTime_ResturnsCorrectString(double totalMiliSeconds, string expectedMessage)
    {
        // Arrange
        var obj = new Class();;

        // Act
        var resultMessage = obj.ConvertTime(totalMiliSeconds);

        // Assert
        Assert.AreEqual(expectedMessage, resultMessage);
    }



VB.NET에서는 C #과 동일합니다.

Dim x As New TimeSpan(0, 0, 80)
debug.print(x.ToString())
' Will print 00:01:20



가장 빠른 방법을 알기 위해 몇 가지 벤치 마크를 수행했으며 이는 내 결과 및 결론입니다. 각 방법을 10M 번 실행하고 실행 당 평균 시간을 주석을 추가했습니다.

입력 된 밀리 초가 1 일로 제한되지 않으면 (결과는 143 : 59 : 59.999  수 있음) 다음과 같은 옵션이 있습니다.

// 0.86 ms
static string Method1(int millisecs)
{
    int hours = millisecs / 3600000;
    int mins = (millisecs % 3600000) / 60000;
    // Make sure you use the appropriate decimal separator
    return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}", hours, mins, millisecs % 60000 / 1000, millisecs % 1000);
}

// 0.89 ms
static string Method2(int millisecs)
{
    double s = millisecs % 60000 / 1000.0;
    millisecs /= 60000;
    int mins = millisecs % 60;
    int hours = millisecs / 60;
    return string.Format("{0:D2}:{1:D2}:{2:00.000}", hours, mins, s);
}

// 0.95 ms
static string Method3(int millisecs)
{
    TimeSpan t = TimeSpan.FromMilliseconds(millisecs);
    // Make sure you use the appropriate decimal separator
    return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}",
        (int)t.TotalHours,
        t.Minutes,
        t.Seconds,
        t.Milliseconds);
}

입력 된 밀리 초가 1 일로 제한되는 경우 (결과가 23 : 59 : 59.999보다 클 수 없습니다) 이러한 옵션은 더 빠르거나 느릴 때까지 있습니다.

// 0.58 ms
static string Method5(int millisecs)
{
    // Fastest way to create a DateTime at midnight
    // Make sure you use the appropriate decimal separator
    return DateTime.FromBinary(599266080000000000).AddMilliseconds(millisecs).ToString("HH:mm:ss.fff");
}

// 0.59 ms
static string Method4(int millisecs)
{
    // Make sure you use the appropriate decimal separator
    return TimeSpan.FromMilliseconds(millisecs).ToString(@"hh\:mm\:ss\.fff");
}

// 0.93 ms
static string Method6(int millisecs)
{
    TimeSpan t = TimeSpan.FromMilliseconds(millisecs);
    // Make sure you use the appropriate decimal separator
    return string.Format("{0:D2}:{1:D2}:{2:D2}.{3:D3}",
        t.Hours,
        t.Minutes,
        t.Seconds,
        t.Milliseconds);
}

입력이 불과 몇 초일 경우, 메소드가 약간 더 빠릅니다. 다시 말하지만, 입력 초가 1 일로 제한되지 않으면 결과가 143 : 59 : 59  수 있습니다.

// 0.63 ms
static string Method1(int secs)
{
    int hours = secs / 3600;
    int mins = (secs % 3600) / 60;
    secs = secs % 60;
    return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, mins, secs);
}

// 0.64 ms
static string Method2(int secs)
{
    int s = secs % 60;
    secs /= 60;
    int mins = secs % 60;
    int hours = secs / 60;
    return string.Format("{0:D2}:{1:D2}:{2:D2}", hours, mins, s);
}

// 0.70 ms
static string Method3(int secs)
{
    TimeSpan t = TimeSpan.FromSeconds(secs);
    return string.Format("{0:D2}:{1:D2}:{2:D2}",
        (int)t.TotalHours,
        t.Minutes,
        t.Seconds);
}

그리고 입력 한 초가 1 일로 제한되는 경우 (결과는 결코 23:59:59보다 클 수 없습니다) :

// 0.33 ms
static string Method5(int secs)
{
    // Fastest way to create a DateTime at midnight
    return DateTime.FromBinary(599266080000000000).AddSeconds(secs).ToString("HH:mm:ss");
}

// 0.34 ms
static string Method4(int secs)
{
    return TimeSpan.FromSeconds(secs).ToString(@"hh\:mm\:ss");
}

// 0.70 ms
static string Method6(int secs)
{
    TimeSpan t = TimeSpan.FromSeconds(secs);
    return string.Format("{0:D2}:{1:D2}:{2:D2}",
        t.Hours,
        t.Minutes,
        t.Seconds);
}

마지막 의견으로, string.Format 가 00 대신 D2 를 사용하면 조금 더 빠르다는 것을 알았습니다.


[출처] https://code.i-harness.com/ko/q/7131a

반응형
Posted by blueasa
, |


[링크] http://golang.site/


반응형
Posted by blueasa
, |


[링크] https://github.com/JanKallman/EPPlus


반응형
Posted by blueasa
, |

[주의] 레지스트리를 수정하는 내용이니 주의해서 사용하세요.



C# 으로 OleDB를 이용해서 Excel을 읽어 들이고, Sqlite(.db)로 변환하는 Converter를 만들어서 사용하는 데


긴 문자열을 넣었더니 잘려서 컨버팅 되길래 확인해보니 255 글자 제한이 걸려 있다.


검색해서 확인해보니 여러가지 해결 방법들이 포스팅 돼 있는데 조금씩 안맞아서 확인해보고 정리해서 올려 놓는다.



[레지스트리 수정으로 255 글자 제한 풀기]


아래 버전 및 OS bit에 맞는 레지스트리를 찾아가서 TypeGuessRows 값을 0으로 바꾸면 된다.

(참고: 개발에 사용된 Excel 버전임. 윈도우 설치된 엑셀 버전이 아님)

(기본 값은 8인데, DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.

 기본 글자 제한은 255자이고, 0으로 바꾸면 전체를 검사해서 DataType 길이로 잡는다고 함.)


[주의] 성능상의 이유로 글자수를 제한(Default:8) 하는 거라고 하니 감안해서 사용할 사람만 하기를..


  [Windowns 32bit]

Excel 2000, 2003 (xls)

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

  (Excel 97 = 3.5)


- Excel 2013 (xlsx)

  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel

  (2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)


  [Windowns 64bit]

Excel 2000, 2003 (xls)

  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Jet\4.0\Engines\Excel

  (Excel 97 = 3.5)


- Excel 2013 (xlsx)

  HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\15.0\Access Connectivity Engine\Engines\Excel

 (2016 = 16.0, 2013 = 15.0, 2010 = 14.0, 2007 = 12.0)



[레지스트리 파일 다운로드]

Fix_255_Char_32bit_Excel_2000_2003.reg

Fix_255_Char_32bit_Excel_2007.reg

Fix_255_Char_32bit_Excel_2010.reg

Fix_255_Char_32bit_Excel_2013.reg


Fix_255_Char_64bit_Excel_2000_2003.reg

Fix_255_Char_64bit_Excel_2007.reg

Fix_255_Char_64bit_Excel_2010.reg

Fix_255_Char_64bit_Excel_2013.reg



    [Excel 데이터 수정으로 255 글자 제한 풀기] (확인 안해봤음)


- 위에도 적었지만 DataSet을 만들 때 기본으로 설정 된 윗 8줄에 있는 가장 큰 글자수를 DataType 길이로 잡는다고 한다.

  8줄 이내에 255 글자 이상의 사용하지 않는 Dummy 데이터를 넣으면 해결 된다고 함. 




[참조] http://www.todal.net/241?category=367351

[참조] http://it-developer.tistory.com/427

[참조] http://lemondory.tistory.com/129

[참조] http://ariswear.tistory.com/37

반응형
Posted by blueasa
, |
아래는 info.plist에서 사용되는 키 값에 대한 설명, 자료형, 사용 가능한 버전 기준, 필수여부, 지역화 가능 여부를 표로 정리한 것이다.
  애플이 제공하는 레퍼런스 문서에 이보다 자세하게 나와 있지만, 빠르게 원하는 것만 보기 위해 만들었다.


분류

자료형

버전

필수

지역

설명

Core Foundation 

Bundle creator OS Type code

(CFBundleSignature)

String

 

O 

 

네 글자로 이뤄진 번들 식별 코드

Bundle display name

(CFBundleDisplayName)

String

 

O 

O 

번들의 보여지는 이름

Bundle identifier

(CFBundleIdentifier) 

String

 

O 

 

번들을 구분하기 위한 유일한 식별키

Bundle name

(CFBundleName) 

String

 

O

O 

열여섯 글자 미만으로 이뤄진 번들 이름 또는 어플리케이션 이름

Bundle OS Type code

(CFBundlePackageType) 

String

 

O 

 

번들 종류를 나타내는 코드

Bundle version

(CFBundleVersion)

String

 

O 

 

번들의 빌드 버전

Bundle versions string, short

(CFBundleShortVersionString)

String

  

O 

번들의 릴리즈 버전

Document types

(CFBundleDocumentTypes)

Array

(Dictionary)

   

앱에서 지원하는 문서 형식 목록

Executable file

(CFBundleExecutable)

String

 

O 

 

번들의 실행 파일 이름

Icon file

(CFBundleIconFile) 

String

   

번들 아이콘(iOS 3.2 미만)

Icon files

(CFBundleIconFiles)

Array

(String)

3.2 

  

번들 아이콘(iOS 3.2 이상)

Icon files (iOS 5) or none

(CFBundleIcons)

Dictionary

5.0 

  

번들 아이콘(iOS 5.0 이상)

InfoDictionary version

(CFBundleInfoDictionaryVersion)

String

 

O 

 

Info.plist 형식의 버전

Localization native development region

(CFBundleDevelopmentRegion)

String

 

O 

 

번들의 주 언어 또는 주 지역

Localizations

(CFBundleLocalizations)

Array

(String)

   

지원하는 언어 또는 국가 목록

Localized resources can be mixed

(CFBundleAllowMixedLocalizations)

Boolean

   

다른 프레임워크 또는 프로젝트에서 추가한 지역화 리소스를 사용할지

URL types

(CFBundleURLTypes)

Array

(Dictionary)

   

번들이 지원하는 URL-scheme 목록

Launch Services

Application requires iPhone environment

(LSRequiresIPhoneOS)

Boolean

 

O

 

iOS에서만 실행할 번들인지

MapKit

Maps routing app supported modes

(MKDirectionsApplicationSupportedModes)

Array

(String)

6.0

   

Cocoa

Main nib file base name

(NSMainNibFile)

String

 

O

 

앱의 메인 nib/xib 파일 이름

(UIMainStoryboardFile과 같이 쓸 수 없다)

Main nib file base name (iPad)

(NSMainNibFile~ipad)

String

    

Main nib file base name (iPhone)

(NSMainNibFile~iphone)

String

    

Privacy - Bluetooth Peripheral Usage Description

(NSBluetoothPeripheralUsageDescription)

String

6.0 

 

O 

블루투스가 필요한 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Calendars Usage Description

(NSCalendarsUsageDescription)

String

6.0 

 

O 

캘린더에 접근해야 하는 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Camera Usage Description

(NSCameraUsageDescription)

String

7.0 

 

O 

카메라가 필요한 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Contacts Usage Description

(NSContactsUsageDescription)

String

6.0 

 

O 

연락처에 접근해야 하는 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Location Usage Description

(NSLocationUsageDescription)

String

6.0 

 

O 

위치 정보에 접근해야 하는 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Microphone Usage Description

(NSMicrophoneUsageDescription)

String

7.0 

 

O 

마이크가 필요한 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Motion Usage Description

(NSMotionUsageDescription)

String

7.0 

 

O 

모션센서6가 필요한 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Photo Library Usage Description

(NSPhotoLibraryUsageDescription)

String

6.0 

 

O 

앨범에 접근해야 하는 이유

(권한 요청 대화 상자에 표시된다)

Privacy - Reminders Usage Description

(NSRemindersUsageDescription)

String

6.0 

 

O 

미리 알림에 접근해야 하는 이유

(권한 요청 대화 상자에 표시된다)

none

(NSUbiquitousDisplaySet)

String

   

앱의 저장소를 관리하기 위해 iTunes-Connect의 앱 등록 과정에서 입력한 식별자

Exported Type UTIs

(UTExportedTypeDeclarations)

Array

(Dictionary)

5.0 

  

앱에서 내보낼 수 있는 UTI 형식 목록

Imported Type UTIs

(UTImportedTypeDeclarations)

Array

(Dictionary)

   

앱에서 가져올 수 있는 UTI 형식 목록

none

(GKGameCenterBadgingDisabled) 

Boolean

7.0 

  

게임센터의 벳지에 앱에서 발생되는 이벤트가 표시되지 않도록 할지

none

(GKShowChallengeBanners) 

Boolean

7.0 

  

앱 내에서 게임센터의 '도전 과제' 배너를 표시할지

UIKit

Application does not run in background

(UIApplicationExitsOnSuspend)

Boolean

4.0 

  

앱을 종료할 때 백그라운드로 보내지 않고 완전히 종료시킬지

Application presents content in Newsstand

(UINewsstandApp)

Boolean

5.0 

  

앱이 뉴스가판대에 콘텐츠를 제공하는지

Application supports iTunes file sharing

(UIFileSharingEnabled)

Boolean

3.2 

  

아이튠즈가 앱과 파일 공유를 하도록 허용할지

Application uses Wi-Fi

(UIRequiresPersistentWiFi)

Boolean

 

O

 

앱이 Wi-Fi 연결을 필요로 하는지

Fonts provided by application

(UIAppFonts)

Array

(String)

3.2 

  

앱 전용 서체 목록

Icon already includes gloss effects

(UIPrerenderedIcon)

Boolean

   

이미 번들 아이콘에 광택 효과가 있는지

Initial interface orientation

(UIInterfaceOrientation)

String

3.2 

O

 

앱이 구동될 때 사용할 인터페이스의 방향

Launch image

(UILaunchImageFile)

String

3.2 

  

앱이 구동될 때 나타날 인트로 이미지

Launch image (iPad)

(UILaunchImageFile~ipad)

String

3.2 

   

Launch image (iPhone)

(UILaunchImageFile~iphone)

String

3.2 

   

none

(UILaunchImages)

Array

(Dictionary)

7.0 

   

Main storyboard file base name

(UIMainStoryboardFile)

String

5.0 

O

 

앱의 메인 storyboard 파일 이름

(NSMainNibFile과 같이 쓸 수 없다)

Main storyboard file base name (iPad)

(UIMainStoryboardFile~ipad)

String

5.0 

   

Main storyboard file base name (iPhone)

(UIMainStoryboardFile~iphone)

String

5.0 

   

Renders with edge antialiasing

(UIViewEdgeAntialiasing)

Boolean

3.0 

  

픽셀 경계에 정렬되지 않은 레이어를 그릴 때 안티 앨리어싱을 적용할지

Renders with group opacity

(UIViewGroupOpacity)

Boolean

3.0 

  

서브 레이어가 슈퍼 레이어의 블투명도를 상속받아 사용할지

Required background modes

(UIBackgroundModes)

Array

(String)

4.0 

  

백그라운드에서 앱이 제공하는 서비스 목록 또는 멀티테스킹의 형태

Required device capabilities

(UIRequiredDeviceCapabilities)

Array

(String)

3.0 

O

 

앱 실행에 필요한 요구조건들

Targeted device family

(UIDeviceFamily) 

Number 

or

Array

(Number)

3.2 

  

앱 실행이 가능한 제품군 하나 또는 목록

Status bar is initially hidden

(UIStatusBarHidden)

Boolean

   

상태 바를 숨길지

Status bar style

(UIStatusBarStyle)

String

 

O

 

상태 바 스타일

Status bar tinting parameters

(UIStatusBarTintParameters)

Dictionary

7.0 

  

상태 바 색

Supported external accessory protocols

(UISupportedExternalAccessoryProtocols)

Array

(String)

3.0 

  

앱이 지원하는 외부 액세사리와 통신하는데 사용되는 프로토콜 목록

Supported interface orientations

(UISupportedInterfaceOrientations)

Array

(String)

3.2 

  

앱이 지원하는 인터페이스 방향

Supported interface orientations (iPad)

(UISupportedInterfaceOrientations~ipad)

Array

(String)

3.2 

   

Supported interface orientations (iPhone)

(UISupportedInterfaceOrientations~iphone)

Array

(String)

3.2 

   

View controller-based

status bar appearance

(UIViewControllerBasedStatusBarAppearance)

Boolean

7.0 

  

상태 바가 그려지는 방식을 컨트롤러의 설정에 따라 다르게 할지



+ Bundle OS Type code(CFBundlePackageType)에 사용되는 값들.  


APPL : 어플리케이션

FMWK : 프레임워크 또는 라이브러리

BNDL : 로드 가능한 번들(다른 문자가 들어가도 된다)



Document types(CFBundleDocumentTypes)의 요소 구성.     


 

자료형

 지역화

설명

 none

 (CFBundleTypeIconFiles)

 Array

 

 해당 문서 형식에 사용될 아이콘 이미지 파일 이름 목록

 (아이콘 사이즈 규격은 여기를 참조)

 Document Type Name

 (CFBundleTypeName)

 String

O 

 문서 형식의 이름

 Document Content Type UTIs

 (LSItemContentTypes)

Array 

 

 문서 형식에 대한 UTI



Icon files (iOS 5) or none(CFBundleIcons)의 요소 구성.   


 키

자료형

버전

 필수

설명

 CFBundleIconFiles

Array or String 

5.0 

 O

 아이콘 파일 이름 또는 목록

 UIPrerenderedIcon

Boolean 

5.0 

 

 아이콘 파일에 광택 효과가 들어가 있는지



+ Localization native development region(CFBundleDevelopmentRegion)에 사용되는 값들.    

Canada : en_CA                         France : fr_FR                    Japan : ja_JP                    United Kingdom : en_GB

Canada (French) : fr_CA            Germany : de_DE               Korea : ko_KR                  United States : en_US

China : zh_CH                            Italy : it_IT                           Taiwan : zh_TW



+ Localizations(CFBundleLocalizations)에 사용되는 값들.   

en, fr, de, ko, ja, nl, it, es, pt, da, fi, nb, sv, zh-Hans, zh-Hant, ru, pl, tr, uk, ar, hr, cs, el, he, ro, sk, th, id, ms, ca, hu, vi



+ URL Types(CFBundleURLTypes)의 요소 구성.    


자료형

 필수

 지역화

설명

 Document Role

 (CFBundleTypeRole)

 String

O

 

 URL에 대하여 앱의 수행할 일

Editor : 읽기, 쓰기, 저장

Viewer : 읽기, 출력

Shell : 다른 앱 위에 특정 일을 수행

None : 신호만 받음

 Document Icon File Name

 (CFBundleURLIconFile)

String 

 

 

 URL을 수행함에 있어 사용될 아이콘 이미지 파일 이름

 URL Identifier

 (CFBundleURLName)

 String

 

O 

 URL을 식별할 수 있는 이름

 (보통 번들 식별키를 접두로 쓰고 뒤에 이름을 붙인다)

 URL Schemes

 (CFBundleURLSchemes)

Array 

 

 

 URL 값



Maps routing app supported modes(MKDirectionsApplicationSupportedModes)에 사용되는 값들.    


Airplane, Bike, Bus, Car, Ferry, Pedestrian, StreetCar, Subway, Taxi, Train, Other



Exported/Imported Type UTIs(UTExportedTypeDeclarations, UTImportedTypeDeclarations)의 요소 구성.    


 키

자료형

버전

필수

지역화

설명

 Conforms to UTIs

 (UTTypeConformsTo)

 Array


O

 

 이 형식이 속하는 범주를 나타내는 UTI 목록

 (자세한 내용은 여기를 참조)

 Description

 (UTTypeDescription)

String

 

 

 내보내기 형식에 대한 설명

 Identifier

 (UTTypeIdentifier)

String

 

 

 

 내보내기 형식에 대한 UTI

 none

 (UTTypeSize64IconFile)

 String

 

 

 

 이 형식에 대한 아이콘(작은 것)

 none

 (UTType320IconFile)

String

 

 

 

 이 형식에 대한 아이콘(큰 것)

 Equivalent Types

 (UTTypeTagSpecification)

 Dictionary

 

O

 

 이 형식에 매핑되는 MIMEType, OSType codes8, pastboard types과 확장자 정보



Required background modes(UIBackgroundModes)에 사용되는 값들.    

버전

설명 

 Audio and AirPlay

 (audio)

4.0

 - 앱은 백그라운드 재생(오디오 한정)을 지원한다.

 - 백그라운드로 빠져나간 상태에서도 재생을 유지한다.

  (동지재생에 대한 부분은 별도의 코드로 해결해야함)

 Location updates

 (location)

4.0

 - 앱은 사용자 위치정보 기반으로 서비스를 제공한다.

 - OS에 의해 주기적으로 위치 정보를 업데이트 받는다.

 - 업데이트 받을때 마다 앱을 깨운다.

 Voice over IP

 (voip)

4.0

 - 앱 Voice-over-iP 서비스를 제공한다.

 - 시스템 부팅 및 설치 후 또는 실행 후로 부터 OS가 네트워크를 감시하여 앱에 연관된 통화가 걸려오면 앱을 깨운다.

 - 백그라운드 재생이 가능하다.

 Background fetch

 (fetch)

7.0

 - 앱은 백그라운드 다운로드를 사용한다.

 - 앱의 콘텐츠를 업데이트할 때 OS에서 일정 시간을 할애하여 백그라운드 작업을 통해 콘텐츠를 다운 받을 수 있도록 한다.

 - 이 백그라운드 다운로드는 OS 차원에서 관리한다.

 Remote notification

 (remote notification)

7.0

 - 앱은 향상된 푸쉬 서비스를 지원한다.

 - 기존 푸쉬는 메시지를 받아오는 시점이 사용자가 화면을 슬라이드해서 메시지를 보기로 선택한 후 이지만, 이것은 푸쉬를 받으면 곧바로 메시지를 다운받고 기존 푸쉬처럼 사용자에게 알려준다.

 Newsstand downloads

 (newsstand content)

5.0

 - 앱은 뉴스 가판대를 서비스한다.

 - 원하는 시점에 새 콘텐츠를 받을 수 있도록 백그라운드 다운로드를 지원한다.

 - 다운로드 처리는 뉴스 가판대 프레임워크를 사용한다.

 External accessory communication

 (external accessory)

5.0 

 - 앱 iOS 기반의 기기를 대상으로 통신을하는 블루투스 액세사리 또는 iOS 디바이스 커넥터를 이용한 서비스를 제공한다.

 - 정기적으로 기기와 통신한다.

 - 이 모드를 사용할 경우 추가적으로 UISupportedExternalAccessoryProtocols 값 입력을 요한다. 자세한 내용은 여기를 참조.

 Uses Bluetooth LE accessories

 (bluetooth central)

5.0

 - 앱은 블루투스 액세사리 연동(중앙장치 모드)을 지원한다.

 - CoreBluetooth 프레임워크를 사용하여 정기적으로 통신한다.

 Acts as a Bluetooth LE accessory

 (bluetooth peripheral)

6.0 

 - 앱은 블루투스 액세사리 연동(주변장치 모드)을 지원한다.

 - CoreBluetooth 프레임워크를 사용하여 정기적으로 통신한다.

 - 블루투스 사용에 대한 경고 창을 띄운다.



Required device capabilities(UIRequiredDeviceCapabilities)에 사용되는 값들.   


 값

버전

설명

 telephony

3.0

 전화 기본 앱이 있어야 한다. (전화가 가능한 기기여야 한다)

 wifi

3.0

 네트워크에 액세스할 수 있어야 한다. (Wi-Fi 연결이 가능한 기기여야 한다)

 sms

3.0

 메시지 기본 앱이 있어야 한다. (iMessage 또는 SMS, MMS를 보낼 수 있는 기기여야 한다)

 still-camera

3.0

 카메라가 탑재된 기기여야 한다.

 auto-focus-camera

3.0

 자동 초점 기능을 지원하는 카메라가 탑재된 기기여야 한다.

 front-facing-camera

3.0

 전면부 카메라가 탑재된 기기여야 한다.

 camera-flash

3.0

 카메라 플래쉬가 탑재된 기기여야 한다.

 video-camera

3.0

 비디오 촬영이 가능한 카메라가 탑재된 기기여야 한다.

 accelerometer

3.0

 가속도계가 탑재된 기기여야 한다.

 gyroscope

3.0

 자이로스코프가 탑재된 기기여야 한다.

 location-services

3.0

 CoreLocation 프레임워크를 사용할 수 있는 기기여야 한다.

 (높은 수준의 정확도를 요하지 않는 위치 서비스에 해당됨)

 gps

3.0

 GPS 또는 AGPS가 탑재된 기기여야 한다.

 (이 값은 'location-services'와 같이 사용해야 한다)

 magnetometer

3.0

 자력계가 탑재된 기기여야 한다.

 gamekit

4.1

 Game Center 기본 앱이 있어야 한다.

 microphone

3.0

 내장 마이크 탑재된 또는 외장 마이크를 연결한 기기여야 한다.

 opengles-1

3.0

 OpenGL ES 1.1을 지원할 수 있는 기기여야 한다.

 opengles-2

3.0

 OpenGL ES 2.0을 지원할 수 있는 기기여야 한다.

 opengles-3

7.0

 OpenGL ES 3.0을 지원할 수 있는 기기여야 한다.

 armv6

3.1

 ARMv6 명령어 셋을 지원하는 기기여야 한다.

 armv7

3.1

 ARMv7 명령어 셋을 지원하는 기기여야 한다.

 peer-peer

3.1

 블루투스를 통해 Peer-to-Peer 통신이 가능한 기기여야 한다.

 bluetooth-le

5.0

 저에너지형 블루투스 장치가 탑재된 기기여야 한다.



Targeted device family(UIDeviceFamily)에 사용되는 값들.    

1 : 아이폰, 아이팟 터치 제품군            2 : 아이패드 제품군            3 : 애플TV 제품군



Status bar style(UIStatusBarStyle)에 사용되는 값들.     

Gray style (default)            Transparent black style(alpha of 0.5)            Opaque black style



Supported interface orientations(UISupportedInterfaceOrientations)에 사용되는 값들.    


Portrait (bottom home button)

Portrait (top home button)

Landscape (left home button)

Landscape (right home button)



출처: http://padgom.tistory.com/entry/iOS-infoplist-Key-목록과-사용 [Padgom]




출처: http://rudalstb.tistory.com/54 [모바일 게임 일기]

반응형
Posted by blueasa
, |
  1.  
  2.         Dictionary<string, string> dict = new Dictionary<string, string>()
  3.         {
  4.             { "A""String A" },
  5.             { "B""String B" },
  6.             { "C""String C" },
  7.         };
  8.         string[] keys = new string[dict.Keys.Count];
  9.         dict.Keys.CopyTo(keys0);
  10.         for (int i = 0; i < keys.Length++i)
  11.         {
  12.             Debug.Log(dict[keys [i]]);
  13.         }
  14.  


[출처] https://forum.unity.com/threads/c-dictionary-loop.337804/

반응형
Posted by blueasa
, |
반응형
Posted by blueasa
, |


[Link] https://www.scratchapixel.com/lessons/3d-basic-rendering/introduction-to-ray-tracing/how-does-it-work

반응형
Posted by blueasa
, |

프로그래밍을 할 때 있어서 모든 일이 처음 설계한대로 흘러간다면 얼마나 좋을까? 하지만 Hello World를 출럭하는 프로그램이 아닌 이상에야 그런 일은 있을 수 없다.


확장성을 위해, 재사용성을 위해, 더 나은 구조를 위해 코드와 설계는 변하기 마련이다. 그 와중에 많은 함수나 변수, 클래스가 추가되고 삭제된다. 물론 혼자서만 하는 작업이라면 코드를 바꾸고 바꾼 코드를 바로 적용하면 되지만, 코드 베이스를 만드는 사람과 그 베이스를 이용해서 작업하는 사람이 따로 있는 상황이라면 이야기가 조금 달라진다. 


만약 베이스를 작업하는 사람이 몇몇의 함수를 삭제하고 다른 이름의 함수로 대체했다면 그 베이스를 응용하는 사람 역시 그에 대한 사실을 알아야 한다. 물론 일반적인 상식으로 베이스 작업자가 베이스를 변경했다면 다른 작업자에게 바로 알려주고 다른 작업자는 바로 변경하는게 맞는 이야기지만, 사람과 사람 사이의 의사소통이라는게 말처럼 쉽기만 하던가. 베이스 작업자가 변경사항을 몇 개는 빠뜨리고 알려줄 수도 있고, 다른 작업자는 이야기를 들었지만 까먹을 수도 있는 일이다. 여튼 의사소통 과정에서 문제가 발생했다면 다른 작업자는 뜬금없이 바뀐 베이스 코드에 당황을 금치 못할 것이다.


그런 상황을 맞이한 다른 작업자는 당연히 문제를 해결하기 위해서 베이스 작업자에게 어떻게 변경된 것인지 물어보던지, 코드를 뒤져서 바뀐 함수를 적용하던지 하는 노력을 하겠지만 아무래도 이런 방식은 해결 속도도 느릴 뿐더러 효율적이지 못하다.


그렇기 때문에 나온 해결책이 바로 [Obsolete] 라는 어트리뷰트이다. 


class TestClass
{
    [Obsolete]
    public void Function1()
    {
    }
}


더 이상 사용하지 않거나 그럴 예정인 클래스나 함수, 변수의 앞에 [Obsolete] 어트리뷰트를 붙여주면 된다. 그렇게 하면 해당 함수를 호출할 때 초록색 밑줄과 함께 더 이상 사용하지 않는 함수라는 경고가 뜬다.



그리고 툴팁에서는 함수 앞에 [deprecated]가 붙게 된다.


이 [Obsolete]는 세 가지 방식의 오버로딩을 지원한다.


class TestClass
{

    [Obsolete]
    public void Function1()
    {

    }

    [Obsolete("Not use anymore.")]
    public void Function2()
    {

    }

    [Obsolete("Not use anymore.", true)]
    public void Function3()
    {

    }
}


[Obsolete] :: 더 이상 사용하지 않는 코드라는 경고만 출력한다.


[Obsolete(string message)] :: 더 이상 사용하지 않는다는 경고에 추가적인 메시지를 남길 수 있다. 이 메시지를 통해 더 이상 사용하지 않는 코드 대신에 사용할 코드를 사용자에게 알릴 수 있다.


[Obsolete(string message, bool error)] :: 추가적인 로그와 함께 이 코드를 사용할 경우에 컴파일 에러를 띄울지를 결정한다. true를 넣어주면 컴파일 에러를 띄워서 이 코드를 사용하면 컴파일을 할 수 없게 된다.



이런 식으로 [Obsolete]를 적절하게 사용하면 베이스 작업자는 코드 작업만으로 다른 작업자에게 코드가 변경되었음을 알림과 동시에 그에 대한 해결책도 전해줄 수 있다. 베이스 작업자가 코드를 변경하고 다른 작업자에게 변경사항을 일일이 알리는 것보다 훨씬 빠르고 효율적인 해결책이다.



출처: http://wergia.tistory.com/23 [베르의 프로그래밍 노트]



참조 : http://answers.unity3d.com/questions/559529/how-to-mark-a-method-obsolete.html

반응형

'Programming > C#' 카테고리의 다른 글

ODBC/OleDB로 Excel 읽어서 처리할 때, 255자로 짤리는 경우  (0) 2018.04.13
Dictionary for Loop in C#  (0) 2017.12.05
[펌] string을 byte[] 배열로 변환?  (0) 2017.01.10
[펌] 반복문 유틸  (0) 2016.12.07
[펌] Loop Dictionary  (0) 2016.12.07
Posted by blueasa
, |