반응형

웹개발을 하다보면 동적으로 테이블을 구성해야 하는 상황이 종종 발생한다. colspan은 그나마 쉽지만 rowspan은 쥐약이다. 하지만 jQuery로 간단히 해결 할 수 있어 공유한다.



위 테이블을 아래처럼 합치는 jQuery



구분쎌의 class에 targetCell이라 설정한 후 호출만 해주면 끝남

$(window).load(function () { $(".targetCell").each(function () { var rows = $(".targetCell:contains('" + $(this).text() + "')"); if (rows.length > 1) { rows.eq(0).attr("rowspan", rows.length); rows.not(":eq(0)").remove(); } }); });


반응형
Posted by Hippalus
,

반응형

피들러(fiddler) 홈페이지로 가서 다운로드 링크를 누르던지

http://www.telerik.com/fiddler


아래 링크를 눌러 바로 다운로드를 하던지 마음이지만

https://www.telerik.com/download/fiddler


링크타고 가보면 이메일을 입력하라 귀찮게 구는데 대충 형식 맞게 쓰면 그만임 가라로 적는걸 추천.


다운받고 설치까지 했다면

이제 모바일 설정차례

메뉴의 Tools에서 Option선택 후




Connections 탭 눌러보면

포트는 8888이니 그대로 두고 Allow remote 부분에 체크한 후 반드시 프로그램을 종료했다 다시 켜야 함. 사실 이게 예전부터 그래와서 지금도 그런진 모르겠으나 괜히 프록시로 어리버리 한 상태에서 되네 안되네 할바엔 그냥 손쉽게 껐다 켜면 그만이니 정신건강을 위하여 껏다 켜길 추천




여기까지 다 했으면 이젠 폰 설정 차례

일단 폰에서 피들러가 동작중인 PC로 접속해야 하니 PC에서 ipconfig를 실행하여 아이피를 얻어야 함

IPv4부분의 주소를 확인




iPhone/iPad


설정 > 네트워크 > Wifi로 이동

연결된 Wifi 네트워크를 선택 후 아래로 가보면 http 프록시 부분을 수동탭 선택 후 앞서 확인한 피들러가 설치된 PC의 IP와 피들러에서 확인한 port입력


Android

환경설정의 Wifi에서 연결된 Wifi를 누르고 있으면 팝업이 호출되며 그 팝업에서 [네트워크 설정 변경]을 선택

최하단 고급옵션표시 체크 후 나머진 아이폰과 동일



폰에서 인터넷 사용이 가능하다면 정상 설정 완료임.

피들러를 확인해보면 패킷들이 오고감을 확인할 수 있음


반응형
Posted by Hippalus
,

반응형

mssql 날짜 증가시키기

select dateadd(day, 추가기간, 기준일자)


mssql 날짜 증가시킨 후 yyyy.mm.dd형태로 바꿔보여주기

select convert(varchar(10), dateadd(day, 추가기간, 기준일자), 102)



classic asp 일별 증가시키기

dim strDate

strDate = dateadd("d", 추가기간, 기준일자)

strDate = dateadd("d"추가기간, now())

반응형
Posted by Hippalus
,

반응형

전통적으로(그래봐야 10여년) 주소 검색이 필요한 서비스를 구축할 경우 우체국에서 내려받은 MDB등을 통해 로컬 DB에 올려두고 일일이 구현을 해야 했다면 

이젠 도로명주소가 도입된 이후 다음 같은 포털 서비스의 팝업을 이용하거나 행정자치부에서 잘 만들어놓은 도로명주소 안내시스템을 이용하는 방식으로 바뀌었다.


다음의 도로명 주소 검색 서비스도 괜찮겠지만 상용서비스를 구축하면서 타 회사의 로고가 박히는건 탐탁치 않기 때문에 행정자치부에서 구현해 놓은 서비스를 이용하는게 맞다.


일단 PC버전은 팝업만 호출하고 호출된 결과에 따라 callback javascript 함수를 호출해주면 끝나는데 문제는 요즘 대세인 모바일이다.


왜그런지 모르겠으나 행정자치부 개발자센터에선 모바일은 웹이든 앱이든 무조건 검색 API를 이용하라 답할 뿐 개발 예정은 없다란 답변만을 해대고 있다.


이부분이 참 아쉽다.

정말 잘 만들어놓고 왜 끝에 똥볼을 차버리는지...

여러 개발 API를 사용해 보았지만 정부에서 구축한 API중 행안부 도로명+지번 주소 서비스는 참 편리하게 잘 만들어놨다.


웃기는건 모바일용 도로명 주소 검색 서비스 구축을 위해 해당 안내 페이지에 가면 90% 정도 다 구축해놨다란 점이다.

아니 이게 무슨 변태짓도 아니고....

도무지 무슨 생각인지 알다가도 모를일이다.


어쩌겠는가 나님께서 살짝 오류를 바꿔 구현해 놓은 소스를 어린백셩을 홀빼이셔 맹가노니 시간 아끼기 위해 웹개발자들은 소스를 디자인만 입혀 사용하면 되겠다.


일단 API이므로 API신청은 해야 한다.

http://www.juso.go.kr/addrlink/main.htm


가보면 오픈API라고 있다.

자세히 보기 버튼 누르면 이 페이지로 이동하는데 

https://www.juso.go.kr/addrlink/devAddrLinkRequestSample.htm


우측에 보면 신청하기가 있다.

https://www.juso.go.kr/addrlink/devAddrLinkRequestWrite.do?returnFn=write&cntcMenu=URL


AP유형은 검색API로 라디오버튼을 선택 후 자신에 맞는 IP든 도메인이든 알아서 넣고 신청하면 바로 사용 가능하다.


이제부터 소스 나간다.

POST-example.zip


행정자치부 개발자센터 홈페이지만 봐도 아래 링크를 눌러 상세한 소스가 구축되어 있어 copy&paste를 해도 어느정도 구축은 가능하다.



어느정도 구현은 가능하지만 앞서 말했듯이 90%정도 완성도를 보인다.

무엇이냐면 소스에 오류가 있다.

가령 이렇게 값을 변수에 넣을때 parseInt를 넣어줘야 하는데 없다거나

var PAGEBLOCKdocument.form.countPerPage.value;


완성된 서비스를 위해 페이징을 처리해야 하는데 이게 한번에 안되어 있고 소스들이 나뉘어서 이걸 이어줘야 한다던가...



이런 검색시 필터링 작업을 해야 하지만 이 소스도 나뉘어 있는 등



여하튼 첨부된 소스엔 jquery파일도 추가했고 이런 저런 오류와 필요한 페이징 작업들을 모두 처리해 놓은 페이지이다.

asp파일이지만 javascript기반이므로 어디에나 붙일 수 있겠다.

반응형
Posted by Hippalus
,

반응형

<input name="bookbuydiv" type="checkbox" id="bookbuydiv" value="1" checked onclick='return false;' />


readonly속성이 없기 때문에 그렇다고 disable시키면 값을 받아낼 수 없음

반응형
Posted by Hippalus
,

반응형

알기쉽게 CocoaPod를 사용해보자.

cocoapod를 사용하지 않는다면 매번 업데이트된 공개소스를 변경해주어야 하지만 cocoapod를 사용하면 그럴필요 없으며 애시당초 오픈소스 적용시 다운받을 필요조차 없다.

처음엔 이 개념이 조금 헷갈렸었다.
하지만 확실히 오픈소스 다운로드 자체가 불필요하다.


이제 설명 시작



이런 소셜 서비스 공개소스를 예로 들어진행해보자

https://github.com/pjebs/EasySocial


1.프로젝트 생성하자(기존에 개발중이던 프로젝트가 존재할 경우 해당 프로젝트로 그대로 사용하면 된다.)

이동하는 방법은 터미널에서 

cd 를 입력 후 한칸 띄운 후 압축을 푼 폴더를 드래그 & 드롭 하면 쉽게 이동이 가능하다.


2.해당 프로젝트에 cocoapod를 다운받자

터미널에서 아래 명령어를 입력한다.

sudo gem install cocoapods

(참고로 제거는 sudo gem uninstall cocoapods)




3.그다음은 pds setup

터미널에서 아래 명령어를 입력한다.

pod setup



4.셋업까지 진행되었다면 다음은 podfile이란걸 생성한다.

터미널에서 아래 명령어를 입력한다.

touch podfile


5.생성을 마쳤다면 편집을 한다.

터미널에서 아래 명령어를 입력한다.

open -e podfile


그러면 편집기가 새로 뜬는데 다 필요없고 아까 github 웹페이지를 다시 가보면 pod를 이렇게 설정하라는 부분이 보인다.

pod 'EasySocial', '~> 1.0'

이부분을 카피 떠스 편집기로 이동하여 붙여넣는다. 물론 저장!


  target '어쩌고저쩌고프로젝트명' do

    이곳에 붙여넣기

  end


참고로 구글맵과 팝업오픈소스인 CZPicker 등 n개의 pod를 추가하려면 아래처럼 하면 된다.

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.1'


target '어쩌고저쩌고프로젝트명' do

    pod 'GoogleMaps'

    pod 'CZPicker'

end





6.이제 거의 막바지. 인스톨

터미널에서 아래 명령어를 입력한다. (참고로 update는 pod update)

pod install


7.정상적이면 

프로젝트명.xcworkspace 라는 프로젝트파일이 생기며, 이 파일로 xcode를 실행하여 프로젝트를 진행하면 된다.






반응형
Posted by Hippalus
,

반응형

delegate로 부모뷰컨트롤러의 함수를 호출할 수 있지만 배보다 배꼽이 더 큼

아래처럼 notificationcenter를 통하면 엄청 간단함

주로 리스트에서 글쓰기 뷰컨트롤러를 호출 후 되돌아 왔을때 리스트를 갱신해야 할때 사용하면 유용함.



// * 부모뷰 컨트롤러임 *

BOOL bDataCreate; // 데이터를 갱신해야 하는지 확인용으로 bool형 변수 하나 선언


- (void)viewDidLoad {

   bDataCreate = NO; // NO로 초기화(안해도 되지만) 

   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveNotiDataCreate:) name:@"NotiDataCreate" object:nil];    // noti 등록

}


- (void)viewWillAppear:(BOOL)animated {

    if (bDataCreate == YES) {   // 되돌아왔을때 YES면 데이터 갱신 후 다시 NO로 초기화

        // 데이터 갱신 (ex: data select add .... [tableview reload] )

        bDataCreate = NO;

    }

}


- (void)dealloc {   // 뷰 날라갈땐 등록한 noti 제거

    [[NSNotificationCenter defaultCenter] removeObserver:self];

}


- (void)receiveNotiDataCreate:(NSNotification *) notification {

    bDataCreate = YES;  // 자식뷰컨트롤러로 부터 변경하라는 노티가 왔다면 YES로 변경

}



// * 자식뷰컨트롤러 *

// 자식 viewcontroller에서 데이터가 추가되었을 경우 호출만 해주면 됨

[[NSNotificationCenter defaultCenter] postNotificationName:@"NotiDataCreate" object:self];







참고삼아 delegate로 호출하는 방법도 남겨둠

간단구현법!

1. 자식창(아래 포스트에선 SecondViewControllerDelegate)에서 프로토콜 및 딜리게이트 설정

1-1. 헤더

@protocol SecondViewControllerDelegate;

@interface SecondViewController : UIViewController {

 UITextField *textField;

 

 id<SecondViewControllerDelegate> delegate;

}

@property (nonatomic,assign) id<SecondViewControllerDelegate> delegate;


@end


@protocol SecondViewControllerDelegate<NSObject>;


@required


-(void) secondViewControllerInputDidEnd:(NSString *)text; <-- 요걸 마음대로 정의


@end

1-2. m

@synthesize delegate; 

[self.delegate secondViewControllerInputDidEnd:textField.text];


2.부모창(아래 포스트에선 FirstViewController)

2-1. h

자식창에서 정의된 딜리게이트를 헤어에 포함 및 해당 헤더 임포트

UIViewController<SecondViewControllerDelegate>


2-2. m

자식 딜리게이트에 셀프 할당

secondViewController.delegate = self;

자식 호출(호출 방법은 [self presentModalViewController:vc animated:YES]; 등 많음)

실질적으로 자식창에서 호출할 부모창 구현

-(void)secondViewControllerInputDidEnd:(NSString *)text{

 NSLog(@"delegate"); 

 delegateLabel.text = text;

}

반응형
Posted by Hippalus
,

반응형

이젠 애플이 강요질을 해대다 해대다 이런식으로까지 갑질을 해댐

XIB기반으로 된 프로젝트를 열어 XIB를 클릭하면 

"Choose an initial device view"

미친!


Close Document를 누르면 XIB가 닫히고 Choose Device를 누르면 기존 Xcode7에서 기본 설정이었던 600 X 600 사이즈로 디자인된 해당 뷰는 선택된 사이즈로 셋팅되므로 모두 Autolayout Warning이 뜬다.

미친! 어째 하는 짓마다 이리 밉상인지

애플이 별걸 가지고 다 엿을 먹임


Attributes Inspector 메뉴로 이동하여 Freeform을 선택


Size Inspector로 다시 이동하여 예전 사이즈인 600 X 600으로 눌러주면 Warning이 사라짐을 확인할 수 있다.


모든 XIB View마다 이 미친짓을 해줘야 한다란점

에휴......... 안드로이드한테 망해라


반응형
Posted by Hippalus
,

반응형

오늘 리뷰는 안드로이드와 아이폰에서 무료로 제공되는 게임인 언제나 여름방학이란 게임이야.

링크는 안드로이드, 아이폰 이러하니 가보던지 아니면 키워드를 언제나여름방학으로 해서 검색해서 다운받으면 될 것 같아.


그림체와 앱 이름에서 느껴지듯 상당히 조용한 게임이야.

룰은 간단해 시골에 놀러간 초딩이 동네 주민들로 부터 퀘스트를 받아 해결해주면 골드를 받게 되고 골드를 통해 장비를 구입해서 다음 퀘스트에 도전한다는 내용이거든.

사실 몬스터를 잡거나 그런 활동적 화려함을 기대한다면 조용히 뒤로가기를 누르길 바래


그럼 시작한다.

게임이 너무 쉽기 때문에 중요한 키포인트만 잡으려해

사실 공략이란게 필요 없는 게임이거든.

시간과 노오력만 있다면 누구나 클리어가 가능한 게임이야.


주변 NPC에게 말을 걸면 


깻잎, 소젖, 사과, 배, 쏘가리 같이 시골에서 접할 수 있는 물푸을 갖다 달라고 해

그러면 장소를 터치하면 획득하게 되고


다시 요청한 NPC를 터치해서 말을 걸면 골드를 줘

좌측 하단에 보면 오늘 할일이 몇개 남음 이라 나와있는데 하단 중간에 타임일기를 눌러보면 뭘 해야 하는지 나와

그 타임일기를 따라 말을 걸며 퀘스트를 모두 수행하면 보오람찬 하루일과를 끝내고 삼촌과 이야기를 나누고


시골 사촌들과 하루 이야기를 나누며 


꿀잠을 자고 일어나면


다음날이 밝아오게 되며 새로운 퀘스트들이 등장하는 식이지


모든 새로운 날마다 새 아이템이 필요한건 아니지만 대체로 새로운 날이 밝아 신규 지역이 오픈되면 필요한 장비가 구매 가능하게 오픈되므로 꾸준히 노오력을 해가며 골드를 모아놔야 해


내 경우 오늘이 29일째 오픈이 되었는데 사금쟁반이랑 


곡괭이가 필요하다라는데...

가격이 참... 너무 유저를 붙잡아 놓으려는 경향이 짙어서 이부분은 실망이야.


여기까지가 기본 골격이고 이제 팁 들어가볼게

아! 한가지
아이폰, 안드로이드 무료게임 언제나 여름방학 공략이니 솔직한 안좋은 소식도 전해야겠지?
게임이 자주튕겨
하루에 10번 접속하면 게임중에 3~4번은 튕기더라고
왜 이러나 몰라...

정신 바짝 차려  아이폰, 안드로이드 무료게임 언제나 여름방학 공략 들어간당~

일단 내가 해본 바 평소에 많이 비축해야 하는 아이템은 사과, 배, 은어, 연어, 지렁이, 계란, 각종(염)소젖,  칡뿌리, 초롱꽃, 붕어, 참새, 나팔꽃 정도야.
다른것들은 그때그때 구하면 되는데 위에 것들은 빈도수도 높고 연어 같이 해산물들은 한번 채취하면 다시 채취하는데 한시간이 넘게 걸리거든

다만 깻잎 같은건 초반엔 조금 필요하지만 비축할 수준은 아니라서 제외시켰어.




그리고 하다보면 알겠지만 퀘스트들은 주로 뒤로 갈수록 마을이나 과수원 같이 초반 퀘스트들은 보상이 적어서 중반부터는 그냥 스킵하는게 좋아.
시간 낭비고 어쩌다가 고급퀘스트에서 초급에서 필요한 아이템을 필요로 할 수 있는데 그때마다 다시 가면 불편해.


꺽지 같은것들은 해산물이지만 별로 찾지도 않아서 제외시켰고


참고로 낚은 생선은 모닥불에서 2차 가공해야 하는 퀘스트들도 존재하지만 그닥 빈도수가 높지 않았기에 이것도 제외


다만 생선을 낚기 위한 미끼인 지렁이는 곳곳에 널려있지만 많다고 평소에 수집을 게을리 하면 필요할때 전 맵을 돌아다녀야 하므로 가끔씩 지렁이를 보충해주는 센스 탑재가 필요해


이렇게 중반 퀘스트에서 나타나는 도라지꽃 같은건 보상도 쎄고 평소 모아뒀다면 금방 클리어가 가능하므로 평소에 꽃이나 생선류는 반드시 10개 이상씩 쟁겨두길 바래


그밖에 의상실에서 3시간마다 리필되는 산도 같은것들도 가끔씩 챙기길 바래


반면 황소 퀘스트랑 선생님 퀘스트는 즐~

가뜩이나 배나무 개수도 적은데 매번 배를 구해달라하니

여기까지 아이폰, 안드로이드 무료게임 언제나 여름방학 공략 끝~

반응형
Posted by Hippalus
,

반응형

아이폰 iOS10이 릴리즈 되고 나서 여러 기능들이 개선 및 추가되었는데 가징 마음에 드는 기능은 바로 나이트 쉬프트 (Night Shift) 기능 되시겠다.
이게 뭐냐믄 밤에 눈 피로를 줄이기 위해 따뜻한 색으로 자동 바꿔주는 기능


이렇게 노란색감으로 바꿔주는 그런 기능

예전 신문중에 도올 김용옥이 연재를 했던 신문이 한겨레였던가
여튼 이런 톤의 신문이 있었는데 그 색감과 유사해서 눈이 불편하지 않다.

설정 방법은 설정 > 디스플레이 및 밝기 > Night Shift에서 가능하다

반응형
Posted by Hippalus
,