GSI

인스톨쉴드에서 설치다되고나서 특정파일 실행하기 위한 방법



위와 같이 InstallScriptProject로 만드셔야 합니다.



다른 부분들은 다 아실겁니다.

해당 파일들을 추가하고 나서 위의 이미지와 같이 InstallScript 에서 OnMoved() 함수 안에 위의 코드를 추가 하면 됩니다.


//---------------------------------------------------------------------------

// OnMoved

//

// The OnMoved event is called as a result of the setup calling

// FeatureTransferData or FeatureMoveData. The event is called when

// all file transfer operations are completed except for batch

// self-registration which is performed immediately after this event returns.

// During uninstallation this event sent after uninstallation is completed,

// therefore you should not modify system state in this event.

//---------------------------------------------------------------------------

function OnMoved()

string svDir;

begin       

svDir = TARGETDIR^"aaaa.exe";

if(LaunchAppAndWait(svDir, "", WAIT) < 0) then

//MessageBox("aaa", SEVERE);

//else

// MessageBox("bbb", SEVERE);

endif;

end;

//---------------------------------------------------------------------------

// OnMoved




Posted by gsi
:

"Android virtual keyboard has white characters on white background "


Unity 5.4.0f3 (32-bit)

이 툴을 이용해서 작업하다가

안드로이드에서 Input Field의 글자가 아래 이미지 처럼 안보이는 현상이 나올때가 있습니다.

이때는 아래와 같이 저 구문을 넣으니 해결되는걸로 보이네요.


[이렇게 되어 있다면]

android:icon="@drawable/app_icon"

android:label="@string/app_name"


[이렇게 해보세요.!!]

android:icon="@drawable/app_icon"

android:label="@string/app_name"

android:theme="@style/UnityThemeSelector"


[관련 이미지]



Posted by gsi
:

bufferStr = "abcdefgh"


response.write LEFT(bufferStr, 4) & "<br>"

response.write MID(bufferStr, 5, 2) & "<br>"

response.write RIGHT(bufferStr, 4) & "<br>"


[결과]

abcd

ef

efgh





Posted by gsi
:

[asp 에 지메일 연동 방법]

  • 2차 보안설정만 하고 2차 보안설정은 하지 않음
  • 보안 수준이 낮은 앱의 엑세스가 가능하게 처리
  • 전달 및 POP/IMAP에 별도 설정은 하지 않아도 발송되는부분은 확인했습니다

지메일 설정항목은 아래 부분을 참조 하시면 됩니다.
  • 발신 메일(SMTP) 서버 - TLS 필요
    • smtp.gmail.com
    • 포트: 465 또는 587
    • SSL 필요: 예
    • 인증 필요: 예
    • 받는 메일 서버와 동일한 설정 사용
  • 이름 또는 표시 이름: [사용자 이름]
  • 계정 이름 또는 사용자 이름: 전체 Gmail 주소(username@gmail.com). Google Apps 사용자는 username@your_domain.com을 입력하세요.
  • 이메일 주소: 전체 Gmail 주소(username@gmail.com). Google Apps 사용자는 username@your_domain.com을 입력하세요.
  • 비밀번호: Gmail 비밀번호


메일 발송이 되지 않을시 아래 보안 수준이 낮은 앱을 사용 처리로 하면 정상적으로 발송이 되실거예요.


[ASP 소스]


<!--#Include Virtual="/Include/initialize.asp"-->

<!--#Include Virtual="/Include/DBCon.asp"-->

<!--#Include Virtual="/Include/Common.asp"-->


<!-- 메일 전송 -->

<%

'/////////////////////////////////////////////////////////////////

'SMTP 기본정보 입력

SMTP_USER = "유저아이디"

SMTP_PASS = "비밀번호"

SMTP_SERVER = "smtp.gmail.com"

SMTP_PORT = 465 ' SMTP 포트번호

SMTP_EMAIL_CERT_HTTP = "리턴받을 웹주소"


'// GUID 생성해서 값을 리턴하는 함수

Function fnGetGUID()

Dim myTypeLib

Set myTypeLib = Server.CreateObject("Scriptlet.Typelib")

fnGetGUID = myTypeLib.guid

Set myTypeLib = Nothing

End Function


'// GUID 생성하기

Dim strGUID

'// 좌우 {} 빼기

strGUID = Trim(fnGetGuid())

strGUID = Left(strGUID, Len(strGUID)-3)

strGUID = Right(strGUID, Len(strGUID)-1)

'Response.Write strGUID & "<br/>"


' 호출주소와 guid를 합친다.

SMTP_EMAIL_CERT_HTTP = SMTP_EMAIL_CERT_HTTP & strGUID

'Response.Write SMTP_EMAIL_CERT_HTTP


' Body

htmlBody = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>"

htmlBody = htmlBody & "<HTML>"

htmlBody = htmlBody & "<HEAD>"

htmlBody = htmlBody & "<TITLE> 이메일 인증 </TITLE>"

htmlBody = htmlBody & "</HEAD>"

htmlBody = htmlBody & "<BODY>"

htmlBody = htmlBody & "<table border='0' cellpadding='0' cellspacing='0' width='720' style='font-family: '맑은 고딕', '돋움', 'Dotum', sans-serif;font-size: 14px; font-weight: 400;text-align: left; background-color: #202835; color:#BFC1C5;-webkit-font-smoothing: antialiased;'>"

htmlBody = htmlBody & "<tbody>"

htmlBody = htmlBody & "<tr>"

htmlBody = htmlBody & "<td style='font-family: '맑은 고딕', 'Malgun Gothic', '애플산돌고딕네오', 'AppleSDGothicNeo', '애플고딕', 'AppleGothic', '돋움', 'Dotum', sans-serif;text-align: left; background-color: #242D3D; border-top-width: 1px; border-top-style: solid; border-top-color: #3E424E; color: #BFC1C5; padding: 0 30px 0 30px;'>"

htmlBody = htmlBody & "<br>" & SMTP_USERID & " 님, 안녕하세요.<br> <br>"

htmlBody = htmlBody & "이메일 주소를 인증하려면 아래 링크를 클릭해 주세요.<br>"

htmlBody = htmlBody & "<a href='" & SMTP_EMAIL_CERT_HTTP & "' target='_blank'>메일 인증하기</a><br> <br>"

htmlBody = htmlBody & "</td>"

htmlBody = htmlBody & "</tr>"

htmlBody = htmlBody & "</tbody>"

htmlBody = htmlBody & "</table>"

htmlBody = htmlBody & "</BODY>"

htmlBody = htmlBody & "</HTML>"


'Response.Write htmlBody


'이메일 smtp

Set iConf = Server.CreateObject("CDO.Configuration")

Set Flds = iConf.Fields

With Flds

        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTP_SERVER

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTP_PORT

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1

        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = SMTP_USER

        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = SMTP_PASS

        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1

        .Update

End With

Set CDOMail = server.CreateObject("CDO.Message")

Set CDOMail.Configuration = iConf

CDOMail.From = "<userid@gmail.com>"  ' 자신의 E-mail 주소를 쓰세요

CDOMail.To = "<userid@gmail.com>"   ' 받는이도 자신의 E-mail 주소를 쓰세요

CDOMail.Subject = "인증 메일 입니다. 확인해 주세요."

CDOMail.HtmlBody = htmlBody

CDOMail.Fields.update

CDOMail.Send

response.write "발송완료"

Set Flds   = Nothing

Set iConf = Nothing

Set CDOMail = Nothing

%>



이상입니다.






Posted by gsi
:

[윈도우 서버 R2 보안강화 해제방법]



위와 같이 보안강화 구성 사용 상태가 되면 서버에서 인터넷 익스플로러를 열면 좀 귀찮아 집니다.

이 부분은 아래와 같이 해제하면 됩니다.



관리도구 > 서버 관리자 를 클릭 합니다.



왼쪽 탭에서 서버 관리자를 클릭 합니다.

오른쪽 보안 정보 탭에 IE ESC 구성 을 클릭 합니다.



사용안함 체크



위와 같이 인터넷 익스플로러를 열어서 보안 강화 구성이 사용되지 않습니다. 라는 메시지를 확인하면 됩니다.


이상입니다.




Posted by gsi
:

C# 공부도 할겸

네임드 사다리 게임결과를 파싱하는 코드 입니다.


http://www.named.com/game/ladder/v2_index.php

처음에는 이 웹 주소를 사용해서 했지만

게임결과값이 내부 iframe로 들어가 있어서 바로 안되는걸로 확인됨

그래서 내부 iframe 의 값을 사용해서 게임 결과값을 파싱 하는 형태로 진행


간단하게 게임결과 파싱하는 코드이기 때문에 참고하실 분만 받으세요.



게임소스

20160802_Sadari_게임결과파싱.zip





Posted by gsi
:

528i M Aerodynamic Pro 자동차 차키 입니다.

자동차 키는 2개를 제공 합니다.




Posted by gsi
:



Posted by gsi
:





Posted by gsi
:



Posted by gsi
:




Posted by gsi
:

NGUI를 처음 접하면서 화면 구성을 하고 나서 핸드폰에 적용하면

틀어 지는 현상이 나온다.


내가 기존에 2D를 작업 하던 사이즈는

800 X 1280 이다. (세로)


여기서 NGUI를 적용할려고 자료를 찾아 보니 결국

스크립트 수정을 해줘야 하는것으로 보여 진다.

아래와 같이 수정하니 문제 없이 된다.


1. NGUI 의 UI 스크립트 UIRoot.cs 열기


2. Inspector Window 에서 설정

   Scaling Style - constrained On Mobiles

   Content Width - 800 Fit Check

   Content Height - 1280 Fit Check


3. UIRoot.cs 스크립트의 Update() 함수에서 아레 부분을 수정한다.

   mTrans.localScale = new Vector3(size, size, size);


   >>>


   float fX = (NGUITools.screenSize.x / 800f);

   float fTemp = (1280f * fX);

   float fY = NGUITools.screenSize.y / fTemp;

   mTrans.localScale = new Vector3(size, size * fY, size);


이상입니다.

Posted by gsi
:

요즘 날씨가 좋으면 무조건 하루에 한번 하부약수터를 간다.

올라 갈때는 조금 힘들지만 도착한 약수터 풍경은 매일 나한테 좋은 생각들을 만들어 준다.








Posted by gsi
:

Button을 Prefab로 등록한후 게임상에서 환경에 따라서 Button을 여러개 생성해야할 경우가 생긴다.

부모가 되는 GameObject의 Transform 객체 하부로 연결하면 된다.


> GameController 는 Main Camera 에 스크립트로 등록한다.

> uiRoot는 UI의 최상의 Canvas 객체이다.

> tileButton는 Prefab로 등록되어 있는 버튼 객체이다.


Start() 함수에서

Instantiate (tileButton); 이 코드만 실행하면 Root의 자식으로 생기기 때문에 

원래 의도한 Canvas의 자식으로 생성되지 않는다.

아래와 같은 코드로 하게 되면 자식으로 등록이 된다.


-- 코드 --

using UnityEngine;

using UnityEngine.UI;

using System.Collections;


public class GameController : MonoBehaviour {


public GameObject uiRoot;

public Button tileButton;


// Use this for initialization

void Start () {

Button child = Instantiate (tileButton);

child.transform.parent = uiRoot.transform;

}

// Update is called once per frame

void Update () {

}

}


하지만 위와 같이 하면 동작은 되지만 아래와 같은 메시지가 뜨게 된다.

Parent of RectTransform is being set with parent property. Consider using the SetParent method instead, with the worldPositionStays argument set to false. This will retain local orientation and scale rather than world orientation and scale, which can prevent common UI scaling issues.


이 경우 SetParent()를 사용하면 된다.


child.transform.parent = uiRoot.transform;

child.transform.SetParent (uiRoot.transform);

Posted by gsi
:

안드로이드에서 Back 버튼에 대한 이벤트는 아래와 같이 처리 하면된다.


if( Input.GetKeyDown( KeyCode.Escape ) )

{

   // 처리할 로직을 여기에 넣으면 된다.

}


Update()에서 값을 체크 해서 사용하면 된다.

Posted by gsi
: