목차

반응형

Assertion failed: Assertion failed on expression: 'success && actual == (UInt64)size' UnityEditor.BuildPipeline:BuildAssetBundles(String, AssetBundleBuild[], BuildAssetBundleOptions, BuildTarget)AssetBundle:build() (at Assets/Editor/AssetBundle.cs:27)




유니티 에셋 번들을 만드는데 위와 같은 에러가 났다.

흐음 이해가 안가서 계속해보면 그냥 유니티가 에러나면서 꺼져버린다.



원인을 파악하지 못해서 아 빡치네 이러고 있다가

갑자기 카카오톡도 에러가 나면서 꺼져버린다

???



그리고나서 카카오톡 로그인을 하려고보니까 용량이 부족하댄다



용량 확보하고 다시만들어보니 잘된다.

반응형
반응형

상황은 이와 같다. 몽고디비를 몽구스로 사용하는데 최초등록한 key값을 나중에 지워야하는 경우가 발생하였다.

하지만 스키마에서 unique값만 바꾼다고해서 기존의 collection에 들어가 있던 키 설정이 지워지지 않기때문에 db로 들어가서 key를 삭제해줘야한다.


이 같은 상황에서는 주로 아래의 에러가 뜬다.

 MongoError: E11000 duplicate key error index car.wheel.$index_1 dup key: { : 3 }

=> 현재 index라는 key값이 중복되어서 문제가 발생한다고 보면 된다.


일단 해당 db로 들어가서 collection에 대한 인덱스(키라고 생각하면 편할듯)의 값들을 보자.

db.collection.getIndexes() 명령어를 친다.


내가 mongoose를 사용하여 key값으로 지정한 필드는 wheel_name, index임을 알 수있다. (_id는 기본 key값임 무시)

나같은 상황은 원래 index를 키값으로 사용했으나 이를 없애고 wheel_name을 인덱스로만 사용하고자 한다.

따라서 index라는 키 설정을 지워야한다.

위 사진의 "key":{"index":1} 의 key 필드에 대한 value값을 주목하자 해당 값으로 지워야한다.



db.collection.dropIndex({key에 해당하는 value값}) 명령어를 치면 index가 잘 지워진다.



몽고db reference

반응형
반응형

하나의 인스턴스에서 여러개의 앱을 작동시킬때는 스크린을 쓰는것이 편한것같아서 스크린을 쓰고 있다.(생각해보니까 핀란드에서 어떤 개발자는 아예 그냥 여러개의 스크린이 한화면에서 나오는 것을 쓰고있던데 찾아봐야겠다.)

스크린은 크롬의 탭같은 개념이라고 생각하면 된다.

나는 앱 3개를 돌리고 있고 추가로 db돌리는 앱, local로 mongo 접속해서 관리하는 용도로 총 5개가 있다.

지금도 매우 후회하는게 3개로 분할한 앱을 하나로 합쳐야한다.

초창기에는 오 ㄹㅇ 개잘나눈듯 이렇게 생각했지만 작업을 진행할수록 서로 겹치는 영역이 넓어지고 있어서 매우 비효율적이다. 에효... 역시 머가리가 나쁘면 사서 고생을 해요  결국 DB도 바꾸고 합쳤다. 토나왔다

 

아래는 자주 쓰는 screen 관련 명령어이다.

screen -S 이름 => 해당 이름으로 스크린이 생성된다.

screen -ls => 현재 생성되어있는 스크린을 확인 할 수있다.

screen -r 이름 => detached 되어있는 스크린에 attach(접속)할 수 있다.

screen -X -S 이름 kill => 스크린 삭제

screen -r -d => 스크린 강제로 detach

스크린 attach 이후 스크린 detach하는 단축키 Ctrl + a + d

 

위의 명령어만으로도 충분히 관리할 수 있지만

스크린을 자주 쓰다보면 두가지 문제사항이 발생한다.

알 수 없는 이유로 스크린이 attach 되어있어서 스크린에 attach 하지 못할때(이 상황은 정상적인 방법으로 스크린을 detach하지 않았을때 발생하는 것 같다 예를들자면 인터넷이 끊긴다거나 스크린에 접속한 상항에서 서버접속이 꺼진다거나)

이럴때는 screen -r -d 이름 으로 스크린을 강제로 detach 상태로 만든다. 이후 다시 -r로 attach하면 된다.

 

스크린을 삭제하고 싶을때 명렁어가 헷갈려서 ㄹㅇ 쓸때마다 찾아봐서 벌써 20번은 찾아본것같다 오늘 이 글을 쓴 기념으로 외워야겠다.

screen -X -S 이름 kill

반응형

'Linux' 카테고리의 다른 글

nginx 에러 페이지 설정  (0) 2021.05.11
Filezilla 하위 디렉토리 간편하게 생성 tip  (0) 2018.10.26
서버 SSL 인증서 파일 경로 찾기  (0) 2018.06.27
반응형

문제가 발생하게된 배경은 이러하다

에셋번들을 부르면 분류해서 클래스에 맞춰서 List에 넣어준다.

이후 특정 기능 작동시 해당 에셋번들 Destroy, List에서 지워준뒤 다른 에셋번들도 List에 넣어줌(교체 비슷)

하지만 분명히 말끔하게 에셋번들을 지우고난뒤 해당 List에 접근하려니까

MissingReferenceException: The object of type 'Transform' has been destroyed but you are still trying to access it.

에러가 뜨는것이다

오류 자체는 말그대로 이미 Destroy(gameObject)를 호출한 게임오브젝트의 Transform에 접근하려고 할때 생기는 문제다.

하지만 난 분명 저 오브젝트를 말끔히 삭제해서 절대 저 오브젝트를 호출할리가 없는데!

저 에러가 나는것이다. !@$!%#!!!#!@

분명 없는데 말이죠

그래서 계속 오류 찾아보다가 원인을 찾았다.

나같은경우는 알고보니 List에 에셋번들을 넣을때 중복해서 두번넣었는데 값을 잘못넣어서 삭제할때 필터링이 안돼서 계속 남아있던 것이다.

두번넣는것을 한번 넣는것으로 고치니까 말끔히 해결.


결국 내문제였음. 그래도 해결해서 기모띠하다

반응형
반응형

 

 

 웹회사임에도 불구하고 회사가 돈에 눈이멀어 웹 + rfid태그로 ios, android로 푸시알람 기능을 제공하는 관공서의 유지보수를 맡았다.

사내에는 android 개발을 해본사람이 나말고 없어서 이곳의 유지보수, 문제사항은 거의 내가맡고있다.(ㄹㅇ 이래서 걍 머해봤냐고 하면 알아도 모른다고 하는게 답인듯)

근데 갑자기 저번주 금요일에 야근하는데 회사로 "님 IOS 태그찍으면 아이패드 장치로 푸시알람이 안옴 이거 다음주 월요일날 아침에 와서 봐주셈" 라는 전화가왔다.

이 관공서의 배경사항은 우리가 해주는 것에 비해 돈을 많이줘서 호출하거나 요청사항이 있으면 꼼짝없이 해줘야한다.

그래서 오늘도 아침부터 부장님하고 관공서로 출근을 했다.

잡설이 길었다.

 

원래 RFID 태그를 찍으면 해당 RFID와 매칭되어있는 IOS 기기장치로 푸시알림을 쏴줘야한다.

하지만 푸시알람이 오지 않아서 문제를 해결해야했다.

 

가장 유력한 문제후보는 인증서다.

IOS 푸시알람은 2년인가마다 인증서를 갈아줘야한다.

 

위의 푸시 알림 인증서를 갱신해야한다는 메일이 와서 인증서를 교체해주었다.

 

인증서를 만드는 과정은 아래 사이트에 자세하게 나와있다.

http://ddirty.tistory.com/50

근데 이문제로 삽질하느라 인증서를 하두많이 만들어봐서 외웠다.

Mac에서 키체인가서 private키 뭐더라 기관에 인증요청하기 확장자도 엄청길었다. 그거 파일 만들어서

아이폰 개발자 사이트가서 갱신해야하는 앱 관리설정 들어가서 아까 만든 인증서 넣으면 cer파일 주고

cer 파일로 한번더 Mac에서 인증서 추출하기해서 비밀번호랑 같이 p12파일을 만들어서 서버에서 사용하면 된다.

크~ 거이그냥 ios 개발자

 

여튼 원래 저렇게하면 돼야하는데 문제는 안된다.

그래서 오늘 약 오전 9시부터 저녁 6시반까지 엄청난 삽질을 했다.

관공서라서 개발적인 이슈가 발생했는데 방법이 없으면 그거 만든곳에다가 전화를 해봐야한다.

애플 개발자 지원센터에다가 전화를 했다. 와 ㄹㅇ 오늘 여따가 전화만 5번한듯

080 860 9797

전화하면 한글 1번 영어 2번

1번을 누른다.

누르면 녹음한다, 뭐라뭐라 인트로가 내가 들어본 인트로중에 제일 길었다.

 

전화받으면 "반감숨니다 ~~ 상투적인 인사, 고갱님의 성함과 apple id를 말해주세요"그러면 apple id랑 성함을 말해준다.근데 apple id말고 뭐 teamid, email 알려드려도 괜찮은것같다.알려드리면 한 1~2분정도가 걸린다.(여기는 전산처리가 매우 느리다 ㄹㅇ 뭐확인하는데 기본이 3~4분)그리고나서 에러사항을 말한다.기술적인 문제면 기술팀으로 넘겨준다고 한다.근데 기술팀으로 전화를 넘겨주는게 아니라 기술팀으로 접수를 도와준답시고 앱 관리자 계정으로 오류발생 상황정보를 요구한다. 요구하는 정보는 아래와 같다.

• 인증서 변경 진행 과정 단계 설명 

• 진행시 사용하였던 웹 브라우저

• macOS 버전

• 문제가 발생한 사용자의 Apple ID (2-3개) 

• 시스템 정보(기기 모델 및 OS 버전 번호) (2-3개)

• 웹 브라우저 버전 번호

• Xcode 버전 번호

• 콘텐츠 이름

• 콘텐츠 Apple ID

• 계약이 유효하고 최신 상태라는 확인

 

 

 

 

뭔가 불친절한것같기도 하지만 물어볼 곳이 없으니까...

성실하게 작성해서 보내준다.

마지막에 계약이 유효하고 최신 상태라는 확인은 걍 무시해도 되는듯하다.

 

여튼 이메일 답장하면 보통 접수하는데 하루~이틀이 걸린다고 한다.

근데 오늘은 어째서인지 몇시간뒤에 연락이 왔다.

 

연락을 받아보니 그렇게 도움되는 정보는 주지 못했다.

기껏해야 푸시알람과 관련하여 인증서가 제대로 갱신되었는지, 갱신날짜확인, 인증서 교체 과정 안내

더욱 구체적인 정보를 원했던 관공서 관계자, 과장님, 나 세명은 부질없는 상담을 받으며 정신이 피폐해져갔다.

관공서 관계자분께서 "아니 고작 이런말 들으려고 오늘 하루종일 이렇게 삽질한거 아님! 이런 말 말고 실질적으로 도움이 되는 말을 해주셈"

이렇게 강하게 말하자 (ㄹㅇ 상담원들 불쌍함) 해당 상담은 코드 레벨 서포트라며 외국인 팀하고 이야기를 해야한다고 했다.

 

여기서 알게된것은 애플 개발자 지원 센터에는 한국인 기술자가 없는것같다. 흠... 애플에서 일부러 전문적이고 기술적인 내용은 안알려주나보다.

 

그래서 상담을 해야한답시고 여따가 내용을 적으라고 하셨다.

상담 내용을 적고 보냈다.

 

 

 

 

아 다음주 월요일에 또 저기로 출근해야함 ㅡㅡ

해결책은 찾아내지못했지만 월요일에 저기 가서 해결책을 다시 찾아보려고 한다.

반응형
반응형

그렇다. 2018 aws summit을 갔따왔다.

원래 평소에도 aws를 쓰고있고 앞으로도 서버가 필요할때마다 aws를 쓸것이기에 오 아마존같은 대기업이 컨퍼런스를 연다고? 꼭가야지! 하고 가게되었다.

 

 

 

 

집에서 코엑스까지 약 2시간, 한번에 가는 버스가 있어서 꿀잠자서 ㄱㅊ다.

 

코엑스 북문이다. 여기 사람이 엄청 많은줄 알았는데 코엑스 남문지점은 더 많더라...

 

 

 

키오스크에서 강연 주제, 간략한 설명들을 볼 수 있었다.

 

 

 

흐음... 여기 있는 사람들 전부다 나같은 개발자라는 것을 생각하니 약간 놀랐다.

왐마 이 컴퓨터 덕후들 아침 9시부터 이렇게 모이다니...

 

 

 

 

 

 

 

 

 

접수대로 가서 qr코드로 참석확인받고 명찰을 받았다. 명찰에도 qr코드가 있었는데, 강연을 들을때마다 해당 qr코드를 보여줘야지 들어갈수있다. qr코드를 찍어서 강의참석 여부를 확인하는 것 같다.

 

 

 

 

이곳은 아침 10시쯤인가 AWS CTO가 기조연설을 하는 곳이다. 규모가 굉장히 크다.

 

 

 

 

기조연설을 하는 내용은 재미없었다.

주로 내용은 

"우리 클라우드의 ㅁㅁ제품은 짱짱이다" => "클라우드 고객 ㅁㅁ회사 이사 ㅁㅁㅁ님의 발표가 있겠다" => "약 n년간의 역사를 이어온 우리회사 ..." => "AWS 클라우드로 갈아탔다." => "짱짱이다" => "우리 클라우드의 ㅁㅁ제품은 짱짱이다" ... 무한반복

이런내용이어서 차장님, 과장님은 그냥 주무셨다. 나라도 들어야지 하면서 꾸역꾸역들었는데 정말 위의 내용이다. ㅇㅇ

 

 

이후 다른 강연도 들어보았다.

주로 AWS의 제품들을 설명하는 내용이었다.

회사사람들과 나는 실습위주의 내용을 원했는데 정말 아마존의 제품설명이 주를 이뤄서 흥미를 가지기가 힘들었다.

어찌보면 대기업 클라스의 엔지니어들은 흥미를 가질수도 있을것같았다.

나는 개발을 오래한다고해서 오늘 가서 들은 내용들이 재미있을것같지는 않다.

이 서버 제품군은 트래픽 처리가 분산이고 뭐 빠르고 좋고 싸고...

어찌보면 개발과는 거리가 먼 컨퍼런스였다고 볼 수 있었다.

그래도 회사분들과 부스를 이곳저곳 돌아다니면서 사은품들을 긁어모았다.

 

 

 

원래 이런걸 모으는 성격은 아니지만 차장님께서 원래좀 얼굴에 철판을 잘까셔서 이리저리 긁어모았더니 꽤나 많다

 

 

 

여기는 몽고DB의 atlas를 주제로 한 부스였다.

부스 돌아다니는 내내 전부다 우리나라 기업들이 클라우드를 주제로 한 부스여서 하나같이 흥미가 없었지만, 평소 버스타면서 아니 왜 내 몽고db 쿼리는 그렇게 더러운걸까? 이 생각을 자주하는 나로서는 정말 반가운 부스였다.

가보니까 어떤 외국인 형씨가 "님 몽고 db 써보실생각있음?" 이러길래

"오 저 쓰고있음요"

이후 몽고db의 db 매니지먼트 콘솔 솔루션 atlas를 소개해주었다.

나는 우리나라 다른 기업들처럼 그냥 스타트업, 중소기업들만의 부스인줄 알고 몽고db atlas도 어디그냥 굴러다니던 회사가 만든건줄 알았는데 시연해주는 사이트의 주소를 보니까 슈퍼 도메인이 mongodb.com였다.

와 맨날 내가 레퍼런스 보러가는 그곳 ㄹㅇ 몽고db가 아니겠는가 그래서 오 님들 이거 ㄹㅇ 몽고디비에서 만든거네요?

하니까 "ㅇㅇ 우리 몽고디비임" 크 지렸다.

이후 너무 영광이어서 사진도 찍어달라했다.

원래 위에 부스에 나뭇잎 몽고db 그림이 붙어있는데 카메라가 안좋아서 묻혔따 ㅜㅜ 악수도 하고 이것저것 받았다.

 

ㅋㅋㅋㅋ 저거 명함보고 님명함 fancy하네요 이러니까 좋아했다.

저 스티커는 내방에 문에 붙여놨다.

왼쪽에 카드는 몽고db 아틀라스 100달러 사용권이다. 약 400시간 쓸수있다는데 가서 이거 써보라고 아저씨가 줬다.

 

 

뭐 솔트웨어 여기서는 장패드도 줬다.

 

 

스벅 5000원

 

 

이건 좀 흥미로워보였는데 우리나라의 fabric같은 업체다.

heatmap, 사용자 앱 사용 리플레이 이런것도 있길래 신기해서 찾아봤더니 패브릭에도 해당 기능을 지원하는 플러그인이 있다.

당장 팀원에게 설치하자고 했다. 꿀기능 알려줘서 ㄳㄳ

 

 

글고 셔츠도 받았는데 집에와서 받아보니 이런 셔츠였다. ㅋㅋㅋㅋ 그냥 보자마자 웃음이 나왔다.

와 저걸 입고다니면 얼마나 찐따같을까 그래도 멋있긴하다.

 

 

여기 와본사람은 알겠지만 거의 모든사람이 들고다니던 사은품 우산이다.

매우 고퀄이라서 만족스럽다.

 

 

 

원래는 내일까지 하는 행사지만 차장님이 내일걍 출근하자고 하셔서 못가게되었다.

전반적으로 좀 아쉽다.

도대체 어떤사람들이 와야지 오늘 들었던 강좌들을 흥미롭게 들을까

내가 많이 부족한건가

흐음... 절레절레

 

그래도 aws 스토리지라는거를 관심있게 들었다.

나중에 사업이 번창하면 특정 미디어는 aws 스토리지에 올려서 관리를 해야겠다는 생각을 하며...

큰수확은 없었던 하루였다.

반응형
반응형

사건 발단은 이렇다.

여느때처럼 노드서버 업데이트를 하기위해서 xshell로 ec2를 접속하려는데 


Connecting to ...

Connection established.

To escape to local shell, press 'Ctrl+Alt+]'.


만뜨고 접속이 안되는 것이 아닌가

회사에서 서버 렉걸리거나 할때 자주겪어본 일이라서 그냥 컨테이너 재부팅하면 되겠네 싶어서

컨테이너 인스턴스 중지, 재시작을 했다.


그리고 다시 접속하려는데 또 안되는것 아닌가

와 보니까 여태까지 IP가 유동IP라서 인스턴스 껐다키니까 IP가 바뀌어버린거임 PPAP인거임

여태까지 개발한 소스에 적혀있는 IP, db에 들어가있는 이미지 및 파일 경로(내 잘못이긴한데 거기에 http부터 .jpg까지 모든 주소가 다 들어가있음)가 전부다 무의미해져버린것이다.



어떻게든 기존에 쓰던 아이피로 돌아가려했지만 그런건 없는 것 같다.

그래서 개발자분들께 서버 IP가 바뀌었다고 말씀드리고 소스를 고쳤다.



아마존 ec2 콘솔 - 탄력적IP(elastic IP) - 새 주소 할당 - 고정 IP에 인스턴스 넣기

위 작업을 꼭 해주자

도메인이 있어서 끌어다 쓰면 상관없긴 한데, api 전용 서버라 ip가 바뀌면 나처럼 곤란한사람들은 꼭 확인하자


DB 데이터에 들어가있는 IP값들도 다 바꿨다.

다행스럽게도 서버에서는 최소한의 막장은 피하고자 connection이라는 모델파일에서 ip값을 지정하고 끌어다 쓰기 때문에 수정하는데 그렇게 오래걸리지는 않았다.


몽고 db에서는 ip 들어가는걸 다 바꾸려면 아래의 쿼리를 실행하면 된다.

db.table.find({}).forEach(function(e,i) {
    e.ip=e.ip.replace("찾을IP","바꿀IP");
    db.table.save(e);
});
잘작동해도 아무반응없음.


실제 서비스하는데 저런 실수가 나왔으면...
끔찍하다.

반응형
반응형

사실 윈도우에서 기본적으로 제공하는 기능인줄알았는데 울트라몬이라는 프로그램에서 제공해주는 기능이었다.

내 컴퓨터에서 작업하다가 다른사람 컴퓨터가서 작업하면 이 기능이 없어서 매우 불편하다.


모니터에 따라서 작업표시줄을 분리해주는 기능인데 개꿀이다.

ultramon



반응형
반응형

이 작업을 하게된 계기는 이렇다.

엑셀로 온 대량의 데이터를 워드프레스 사이트에다가 HTML 게시판 형태로 보여줘야하지만

해당 프로젝트의 워드프레스에서는 자바스크립트가 먹지를 않고, 게시판 모듈을 설치해서 처리하기가 매우 까다롭고 실제 게시물 조회처리까지는 필요없어서 그냥 자사의 아무서버에 간단한 게시판 리스트 페이지를 만들어서 iframe으로 불러와서 처리하기로 하였다.



이런 형태의 게시판을 만드는것이 목적(리스트만 나오도록)




처리하게된 데이터는 위와같다. 약 127개의 데이터로 아이디값, 서점이름, 주소, 번호, 부가정보

5개의 컬럼정보가 있다(부가정보는 나중에 필요없어서 버림)




흠 어떻게하면 가장빨리 처리할수있을까 생각하다가

저 정보들을 json 데이터로 바꾼뒤에 jquery와 js를 이용해서 뿌려주기로 했다.



일단 먼저 json데이터로 변환하기위해 csv 쉼표로 분리 이 형태로 저장을 하자





불러와보니 이런식으로 되어있다. 이거보면 바로 그냥 에디트플러스 교체기능 써먹어버리면 되는각아니겠음?







자 원하는 결과물은 위 사진과같다

[{"id":"1","name":"하이북","adres":"고양시 덕양구 통일로 140 삼송테크노밸리A동 B14호","tel":"02-336-8840","img":"하이북(*-******)-매장외부정면"},{} ...]

어떻게 해야할까





위의 텍스트처럼 하면된다.

.+ => .은 아무텍스트 +는 n번반복 => 아무텍스트나 무한반복

(.+) => 아무텍스트나 무한반복되는 것을 그룹화

(.+), => 쉼표를 만날때까지 아무텍스트나 무한반복 그리고 아무텍스트를 그룹화

요런 원리로 쉼표로 구분되어있는 텍스트들을 그룹화해서 인식한뒤에 \1 \2 이렇게 그룹화한 정보를 그대로 가져다가 json 형태로 가공한다.








그리하여 위와같은 간이 게시판이 생겼다.






<html>
<head>
<link rel="stylesheet" type="text/css" href="board.css">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
var arr = [{
"id": "127",
"name": "북스벨리(장안대점)",
"adres": "화성시 봉담읍 삼천병마로 1182(장안대학교사회과학관1층 구내서점)",
"tel": "031-244-4376",
"img": "북스벨리(장안대점)(*-******)-매장외부정면"
}
];
</script>
<script>
var page = [];
$(function () {
var i = 0, j = 0;
$.each(arr, function () {
if (i == 9) {
page[j] += "<tr>" +
"<td>" + this.id + "</td>" +
"<td>" + this.name + "</td>" +
"<td>" + this.adres + "</td>" +
"<td>" + this.tel + "</td>" +
"</tr>";
i++;
i = 0;
j++;
}
else {
page[j] += "<tr>" +
"<td>" + this.id + "</td>" +
"<td>" + this.name + "</td>" +
"<td>" + this.adres + "</td>" +
"<td>" + this.tel + "</td>" +
"</tr>";
i++;
}
});
select(0);
});

var select = function (index) {
$('#myTable > tbody:last').empty();
$('#myTable > tbody:last').append(page[index]);
}
</script>
</head>
<body>
<table id="myTable">
<caption>게시판 리스트</caption>
<colgroup>
<col style="width: 7%">
<col style="width: 10%">
<col>
<col style="width: 11%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">서점명</th>
<th scope="col">주소</th>
<th scope="col">사업장 전화번호</th>
</tr>
</thead>
<tbody class="body">
</tbody>
</table>
<script>
select(0);
</script>
<a href="#" onclick="javascript:select(0)">1</a>
<a href="#" onclick="javascript:select(1)">2</a>
<a href="#" onclick="javascript:select(2)">3</a>
<a href="#" onclick="javascript:select(3)">4</a>
<a href="#" onclick="javascript:select(4)">5</a>
<a href="#" onclick="javascript:select(5)">6</a>
<a href="#" onclick="javascript:select(6)">7</a>
<a href="#" onclick="javascript:select(7)">8</a>
<a href="#" onclick="javascript:select(8)">9</a>
<a href="#" onclick="javascript:select(9)">10</a>
<a href="#" onclick="javascript:select(10)">11</a>
<a href="#" onclick="javascript:select(11)">12</a>
<a href="#" onclick="javascript:select(12)">13</a>
</body>
</html>


게시판의 소스에 대한것은 위와같다 (페이지 네이션까지 넣음)



이후 퍼블팀이 더 에쁘게 꾸며주었다.





반응형

'IT > regex' 카테고리의 다른 글

editplus 검색한 regex 키워드 활용하기  (0) 2018.04.13
네이트온 채팅 데이터화, 시각화 word cloud  (0) 2018.04.12
반응형
button.GetComponent<Button>().onClick.AddListener(() =>
{
PartController.PanelOn();
WheelController.categoryPanelsOff();

})

코드는 위와 같아.

버튼을 클릭하면 패널이 하나 켜지고 기존에 켜져있던 패널이 꺼져야한다.

하지만 버튼을 눌러보면 아무 일도 일어나지않는다 (에러도 안나오고)



테스트삼아서 로그를 띄워보지만

button.GetComponent<Button>().onClick.AddListener(() =>
{
Debug.Log("test");
PartController.PanelOn();
WheelController.categoryPanelsOff();

})

심지어 로그자체도 먹지않는다.

클릭리스너가 아예 안먹는것같은느낌?



이것저것 뒤져도 딱히 안나왔다.

하지만 이상한것은

button.GetComponent<Button>().onClick.AddListener(() =>
{
PartController.PanelOff();
categoryPanelsOn();
wheelCategoryPanels.Find(item => item.panel.name == categoryName).listOn();
wheelCategoryPanelsParent.GetComponent<ScrollRect>().content =
wheelCategoryPanels.Find(item => item.panel.name == categoryName).recttransform;
})

위의 코드는 먹는다.

조금더 설명을 하자면 위의 코드를 포함하고있는 오브젝트는 정적으로 생성되고 PartController라는 외부변수 또한 정적으로 지정되어있었다.


button.GetComponent<Button>().onClick.AddListener(() =>
{
Debug.Log("test");
PartController.PanelOn();
WheelController.categoryPanelsOff();

})

하지만 위의 코드를 포함하고 있는 오브젝트는 동적으로 생성되고 그에따라 PartController라는 외부 변수도 물론 똑같은 정적 객체를 불러오지만 동적으로 할당이 된다.


차이점은 해당 코드를 포함하고 있는 오브젝트가 동적으로 생성되느냐 정적으로 생성되느냐 인것같다.

내가 직접 여러가지 테스트를 해봤는데 해결법을 찾았다.

외부변수를 사용했을때 제대로 작동이 안하는 오브젝트에서 해당 외부변수를 static으로 선언하는 것이다.

즉 PartController라는 변수를 static으로 지정한뒤 오브젝트가 생성될때 동적으로 스태틱할당을 해주면 잘 작동한다.

반응형