2015년 3월 18일 수요일
2015년 3월 16일 월요일
Node.js로 푸시서비스 구현하기 2. 안드로이드(android) 푸시서버 구현하기 (Google Play Service를 이용한 GCM)
get-todays-photo-from-album-in-ios
2015년 3월 12일 목요일
2015년 3월 11일 수요일
2015년 3월 10일 화요일
영상처리-수학-기본
고급 오토레이아웃(auto layout) -AutoLayout Programmatically 사용하기
animating-an-uiimageview-view-from-point-a-to-point-b-with-constraints-program
2015년 3월 9일 월요일
xcode 에서 svn 연동하기
위처럼 한다음
checkout 에서 임포트했던 프로젝트를 선택한다음 , 다시 맥에서 새로운 폴더에 받으면
자동으로 xcode 가 열리면서 보임.
이제 작업하고 commit 하면 됨.
아이폰에서 화면터치 무시하기
NSURLRequest-서버에-POST-요청-쿠키정보까지 가능
connecting-to-php-service-from-ios.html
NSThread 를 통한 데이터 병렬처리
2015년 3월 4일 수요일
iOS - Uploading image by HTTP POST
http://parangma.tistory.com/109 -한글
ios multipart http post
http://stackoverflow.com/questions/24250475/post-multipart-form-data-with-objective-c
http://vulpecula.tistory.com/40 한글
2015년 3월 3일 화요일
2015년 3월 2일 월요일
2015년 3월 1일 일요일
[objc] 앨범에서 마지막으로 찍은 사진 가져오기
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
// Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos.
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group,BOOL *stop) {
// Within the group enumeration block, filter to enumerate just photos.
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
// Chooses the photo at the last index
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:([group numberOfAssets] - 1)]options:0 usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) {
// The end of the enumeration is signaled by asset == nil.
if (alAsset) {
ALAssetRepresentation *representation = [alAsset defaultRepresentation];
UIImage *latestPhoto = [UIImage imageWithCGImage:[representation fullScreenImage]];
[latestPhoto resizeImageToWidth:50];
if (latestPhoto){
[self.imgBtn setBackgroundImage:latestPhoto forState:UIControlStateNormal];
[self.imgBtn setBackgroundImage:latestPhoto forState:UIControlStateHighlighted];
}
}
}];
} failureBlock: ^(NSError *error) {
}];
tableview 에 앨범 제목표시
http://www.mindfiresolutions.com/Using-Groups-How-to-retrieve-data-from-Photos-Application-in-iOS-device-1720.php
앨범에서 마지막 찍은 사진 가져오기
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
// Enumerate just the photos and videos group by using ALAssetsGroupSavedPhotos.
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group,BOOL *stop) {
// Within the group enumeration block, filter to enumerate just photos.
[group setAssetsFilter:[ALAssetsFilter allPhotos]];
// Chooses the photo at the last index
[group enumerateAssetsAtIndexes:[NSIndexSet indexSetWithIndex:([group numberOfAssets] - 1)]options:0 usingBlock:^(ALAsset *alAsset, NSUInteger index, BOOL *innerStop) {
// The end of the enumeration is signaled by asset == nil.
if (alAsset) {
ALAssetRepresentation *representation = [alAsset defaultRepresentation];
UIImage *latestPhoto = [UIImage imageWithCGImage:[representation fullScreenImage]];
[latestPhoto resizeImageToWidth:50];
if (latestPhoto){
[self.imgBtn setBackgroundImage:latestPhoto forState:UIControlStateNormal];
[self.imgBtn setBackgroundImage:latestPhoto forState:UIControlStateHighlighted];
}
}
}];
} failureBlock: ^(NSError *error) {
}];
커링 함수에 bind 사용하기
function SimpleURL(protocol, domain, path){
return protocol + "://"+domain+"/"+path;
}
1.ㅂㅏ인드를 ㅅㅏ용하지 않는 일반적인 방법
var urls=paths.map(function(path){
return SimpleURL("http",sitedomain,path);
});
2.바인드를 사용 하여 심플 하게 변경
기 존의 함수에 bind(this, arg,arg) 식으로 선언하면, arg 개수 를 가진 무명의 함수를 생성하여 이를 리 턴하고 다시 원래의 함수 를 호출(위임)하여 준다.
아래 예제에서는 simpleURL 에서는 this 등이 사용되지 않기 때문에 null 을 첫번째 인자로,
protocol과 domain 을 두번쨰 인자로 취하여 bind 가 새로운 함수를 생성한다음 함수리턴을 하고,
리턴된 함수 의 마지막에 path(map 에 의해 추출된 변수..여기서는 무명변수) 를 인자로 붙여 simpleurl 을 실행한다.
var urls=paths.map(SimpleURL.bind(null,"http",sitedomain));
고차함수
------------
var a=[3,1,4,5,6].sort(function(x,y){
if(x<y) {return -1;}
if(x>y) {return 1;}
return 0;
});
console.log(a);
----------------------
맵을 이용한 고차함수
var a=["Fred","Willar","Peblle"].map(function(name){
return name.toUpperCase();
});
console.log(a);
----------------------
callback 이용한 고차함수
var aIndex="a".charCodeAt(0);
function buildString(n,callback){
var result="";
for(var i=0;i<n;i++){
result +=callback(i);
}
return result;
}
var alphabet=buildString(26,function(i){
return String.fromCharCode(aIndex+i);
});
var digit=buildString(10,function(i){
return i;
});
console.log(alphabet);
console.log(digit);
this 에 대한 심플예제1
obj 의 this 는 obj2,obj3 에서 사용될 때 호이스트 규칙에 의해 자신 을 포함하는 객체가 된다.
var obj={
hello:function(){
return "hi,"+this.username;
},
username:"hehe"
};
var obj2={
hello:obj.hello,
username:"taeho"
};
var obj3={
hello:obj.hello,
username:"yejin"
};
console.log(obj2.hello());
console.log(obj3.hello());
지연변수 스코프를 만들기위해 즉시 실행함수 표현식 사용법
--------------
function wrapElements(a){
var result=[];
for(var i=0,n=a.length;i<n;i++){
result[i]=function(){return a[i];};
}
}
var wrapped=wrapElements([10,20,30]);
var f=wrapped[0];
f();
이때,클로 져를 즉시실행함수로 감싸서 즉 시 실행함수에서 별도의 변 수 에 반복문의 반복 변수등을 복사저장한다음 클로져를 사용하면 된다.
function wrapElements(a){
var result=[];
for(var i=0,n=a.length;i<n;i++){
//즉시실행함수에서 i 값을 j 로 복제한다.
(function(j){
//result[i] 값이 객체로 온다는 것 주의
result[i]=function(){return a[j];};
})(i);
}
return result;
}
var wrapped=wrapElements([10,20,30]);
//리턴
var f=wrapped[1];
console.log(f());
클로저 심플예제
클로저는 외부 변수의 값을 복사하지 않고 참조한다.
1.자바스크립트는 현재함수의 외부에 있는 변수를 가져와서 사용할수도 있다.
----------------------------------------
function makeSandwich(){
var magicIngredient="peanut butter";
function make(filling){
return magicIngredient + "and "+ filling;
}
return make;
}
var f=makeSandwich();
console.log(f("hehe"));
console.log(f("jelly"));
console.log(f("bananas"));
--------------------------------------
2.함수는 외부함수가 무언가ㄴ를 리턴한 이후에도 외부함수에 선언도니 변수를 참조할수 있다. 즉 함수내의 변수를 지속적으로 고정,공유할수 있다.
function makeSandwich(magicIngredient){
return function (filling){
return magicIngredient + " and "+ filling;
}
return make;
}
var f=makeSandwich("ham");
console.log(f("hehe"));
console.log(f("jelly"));
-----------------------------------
3.클로져는 외부 변수의 값을 변경할수 있다.
function box(){
var val=undefined;
return {
set:function(newVal){ val=newVal;},
get:function(){return val;},
type:function(){return typeof val;}
}
}
var b=box();
b.type();
b.set("76.1");
console.log(b.get());
console.log(b.type());