반응형


Failed to build gem native extension


아이폰 개발을 하다보니, 요즘 이쁜 오픈소스 UI 들을 사용하려고 하는데, cocoapods 라는 Gem 을 설치 해야 해서, 사용하고 있는 OS X Mountain Lion (이하 마운틴 라이온) 에 설치하려고 하니 오류가 났습니다. 


Failed to build gem native extension


해결책은 : http://www.zlu.me/blog/2012/02/21/install-native-ruby-gem-in-mountain-lion-preview/ 잘 나와있습니다.


1. xcode 에서 Command Line Tools 를 설치 한다. 




아래 내용은, 터미널 로그를 그대로 스크린 샷을 떴는데요, 

처음에 sudo gem install cocoapods 를 했을 시 나오는 오류입니다.


2. 터미널에서 아래의 명령어를 실행해 줍니다.

ln -s /usr/bin/gcc /usr/bin/gcc-4.2

gcc-4.2 의 sym 링크를 만들어 주는 명령어 입니다.


3. sudo gem install cocoapods 명령어를 재실행 하면 재대로 설치됩니다.




반응형
반응형

cocos2d-x 에서 파일 쓰기 입니다.



CCFileUtils::getWriteablePath() 로 iOS 앱 내 Domucment 폴더 위치를 가지고 와서 myfile.txt 이름으로 파일을 열어 내부에 숫자들을 적은 뒤 저장 합니다.


읽기는 같은 방법으로 fread 를 사용합니다.

반응형
반응형

The current deployment target does not support automated __weak references


iOS 5.0 이상에서 지원하는 ARC 를 사용하여 어플을 만들다 보니 ARC 는 무척 편하더군요. 근데 iOS5.0 이전 버전들을 지원하려면 어떻게 해야 할까 고민하다 인터넷을 뒤져보니.. 어느 멋진 분이 벌써 만들어놨네요. 


PLWeakCompatibility 를 다운받아 압축을 풀고



  1. PLWeakCompatibilityStubs.m 이 파일을 프로젝트에 넣어주세요 (전 h 파일도 같이 넣어줬어요)
  2. 그리고 xCode Target Settings 에 있는 Other C Flags 값을 -Xclang -fobjc-runtime-has-weak 로 바꿔주시면 됩니다.



타겟 클래스에 -release 와 -dealloc 을 적절히 섞어 넣어 주는 형식이라고 합니다. 디폴트로 PLWeakCompatibility 는 __weak 핸들링을 위해 MAZeroingWeakRef 를 사용합니다. MAZeroingWeakRef 를 사용하고 있다면, 있는걸 쓰겠지만, 없다면 내부적으로 알아서 처리하기 떄문에 뭐 그것도 상관은 없다고 하네요.


테스트 해보니 일단 위의 오류들은 깨끗하게 없어지네요. 작동을 잘 한다는 뜻이겠지요?


반응형
반응형

Select * from comments


1. Model : data_model.php


<?php


class Data_model extends CI_Model 

{

/* 스트링으로 바로 집어 넣는 방법

function getall()

{

$q = $this->db->query("SELECT * FROM comments");

if($q->num_rows() >0)

{

foreach($q->result() as $row)

{

$data[] = $row;

}

return $data;

}

}

*/

/* 액티브 레코드 사용 

function getAll()

{

$q = $this->db->get('comments');

if($q->num_rows()>0)

{

foreach ($q->result() as $row)

{

$data[] = $row;

}

return $data;

}


}

*/


/*

function getAll()

{

$this->db->select('title, contents');

$q= $this->db->get('comments');

if($q->num_rows()>0)

{

foreach ($q->result() as $row)

{

$data[] = $row;

}

return $data;

}

}

*/

/* 조건 붙어서 Select 하는 방법

function getAll(){

$sql = "SELECT title, author, contents FROM comments WHERE id=? OR author = ?";

$q = $this->db->query($sql, array(4, 'mike whoevers'));

if($q->num_rows()>0)

{

foreach ($q->result() as $row)

{

$data[] = $row;

}

return $data;

}

}

*/


       //

function getAll(){

$this->db->select('title, contents');

$this->db->from('comments');

$this->db->where('id', 5);

$q = $this->db->get();

if($q->num_rows()>0)

{

foreach ($q->result() as $row)

{

$data[] = $row;

}

return $data;

}


}


}


?>


2. Controller : test.php


<?php

class Test extends CI_Controller {


public function index()

{

$this->load->model('data_model');

$data['rows'] = $this->data_model->getAll();

$this->load->view('home', $data);

}

}

?>


3. View : home.php


<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="utf-8">

<title>Test Home </title>


</head>

<body>


<div id="container">

<p>I'm testing this page</p>



<?php foreach ($rows as $r)

{

echo '<h1>'.$r->title.'</h1>';

echo '<div>'.$r->contents.'</div>';

}

?> 



</div>


</body>

</html>


DB 에서 comments 라는 테이블에 있는 데이터들을 가지고 오는 예제입니다. CodeIgniter 동영상 강의 보면서 첫 자료 공유합니다. 


반응형

'초짜 IT보이 서바이벌 스토리 > cakePHP' 카테고리의 다른 글

ubuntu 14.04 LAMP 설치하기  (0) 2014.07.24
#hashtag 데이터 관리하기  (0) 2014.07.01
#LastCamping site built with #cakePHP 1.3  (0) 2011.09.26
cakePHP redirect  (0) 2011.06.17
CakePHP 루트 지정하기  (0) 2011.06.17
반응형


2011 년에 올라온 Joost de Valk 님의 The anatomy of a WordPress Theme 의 인포그래픽 내용입니다. :) 출처:Yoast




반응형
반응형


워드프레스를 MAMP 를 이용하여 Mac 의 localhost 에 설치해 보겠습니다.

MAMP 는 Macintosh, Apache, MySQL, 그리고 PHP 의 앞글자를 따 만들어진 약어이며, 로컬에 설치된 PHP 서버와 MySQL 서버에 접근할 수 있는 맥에 설치하는 어플입니다.


이 문서의 다음 네가지 목록을 완료하게 되면 당신의 맥 로컬에 워드프레스가 설치됩니다.


1. MAMP 설치하기

2. 기본 MAMP 세팅

3. MAMP 서버 시작 및 데이터베이스 만들기

4. 워드프레스 다운받아 설치하기.


자 그럼 목록을 하나씩 살펴봅니다.


1. MAMP 설치하기


MAMP 웹페이지를 방문하여 MAMP 를 다운받아 설치합니다. 




2. 기본 MAMP 세팅


Hosts 에서 General 탭을 보면 Disk location 란에 디폴트 웹 루트 경로를 넣어줍니다.(예:/Users/mike/Sites/wordpress)




Server 에서 세팅을 그대로 두며, 중간 PHP 탭을 눌러 버전을 확인해줍니다. PHP 버전 5.2.4 이상으로 설정해 주시면 됩니다.




3. MAMP 서버 시작 및 데이터베이스 만들기


MAMP 서버 시작은 간단하게 "Start Servers" 를 눌러주면 Apache 및 MySQL 이 시작합니다.

바로 옆에 있는 WebStart 버튼을 눌러주면 MAMP 페이지에 들어갑니다.

phpMyAdmin 으로 들어가 "새 데이터베이스 만들기" 에서 wordpress 라고 적어 주고 "만들기" 버튼을 눌러줍니다.




4. 워드프레스 다운받아 설치하기.


미리 다운닫아 놓은 워드프레스 파일의 압축을 풀고, "wordpress" 폴더 내에 있는 모든 파일을 웹루트 경로에 넣어줍니다.

(예:/Users/mike/Sites/wordpress/blog/)

워드프레스 웹경로는 http://localhost:8888/blog/ 가 됩니다.


그런뒤 마지막으로 WordPress 설치하기 - 1. 빠른설치편 을 참고하여 세팅을 해주면 바로 설치 완료 되며 업데이트와 함께 Mac 컴퓨터 로컬에 워드프레스 설치가 완료됩니다.



반응형
반응형


참고: wordPress.org : 설치  

워드프레스 설치 시 사용하게 될 프로그램

1. 웹서버 접속하기 (Shell 이나 FTP 를 통한)

2. 텍스트 에디터

3. FTP 클라이언트

4. 웹브라우저

워드프레스 설치 시 확인해야 할 사항

1. 워드프레스 최저사양 확인하기

PHP 버전 5.2.4 이상 

MySQL 버전 5.0 이상

mod_rewrite Apache module

2. 최신 워드프레스 다운로드

3. 하드드라이브에 다운로드 한 파일 압축 풀기

4. Secret Key 를 위한 보안이 잘 된 암호 준비하기

5. 현재 페이지를 출력하여 설치 시 참고하기

5분만에 설치하기

1. 워드프레스 패키지를 다운받아 압축을 풉니다.

2. 웹서버에 워드프레스를 위한 데이터베이스를 만들고 MySQL 사용자에게 모든 권한을 줍니다.

3. wp-config-sample.php 파일을 wp-config.php 파일로 이름을 바꿉니다.

4. wp-config.php 파일을 텍스트 에디터로 연 뒤 데이터베이스 상세내용을 적어줍니다. wp-config.php 파일을 수정한 뒤 보안키 암호를 사용합니다.

5. 워드프레스 파일들을 웹서버에 원하는 위치에 업로드 합니다.

도메인 루트에 워드프레스를 통합하려 한다면, 압축을 풀 상태의 모든 파일들을 웹서버의 루트 디렉트로로 옮기거나 업로드 합니다. (ex: http://www.example.com)

웹싸이트의 서브디렉토리에 설치하려고 한다면, 해당 폴더에 워드프레스 파일들을 업로드 합니다. (ex:http://www.example.com/blog/)

6. 웹브라우저에 wp-admin/install.php 를 접근하여 워드프레스 설치 스크립트를 실행시킵니다.

웹서버의 루트에 설치하였다면 http://www.example.com/wp-admin/install.php 주소를 실해합니다.

서브디렉토리 blog 에 설치하엿다면, http://www.example.com/blog/wp-admin/install.php 주소를 실행합니다.


반응형
반응형

UXMagazine : 5 Ways to Create Better iPad Applications

(더 나은 UX를 가진 iPad 어플 만들기 위한 5가지 방법)


iPad 호환 어플을 만들기 위해 시작하기 전에 좋은 내용이 있어 개인적으로 정리도 할꼄, 팀과 공유도 할꼄 UXMagazine 의 글을 정리해 봤습니다. 


iPad 가 출시되어 마켓에 소개된지 2년이 지났습니다. App Store 엔 200,000개의 iPad 전용 어플리케이션들이 올라오고 있습니다. 지금이 iPad 전용 어플리케이션들의 UX 에 대해 이야기해 볼 많한 적절한 시기인 듯 싶습니다.

여기 적혀진 아이디어들은 iPad 만이 아니라 다른 태블릿에도 반영되며, 5가지 인터페이스 가이드라인을 공유하여 iPad 어플의 UX 와 디자인 제작 시 도움이 되었으면 합니다.


1. Retiring the TabBar (탭바 사용안하기)



TabBar (이하: 탭바) 는 iPad에서는 사용하지 않아도 되는 구식 디자인 입니다. 아이폰에서 할일 위주로 "빠르게 넣고 빼기" 식의 탭바는 빠른 네비게이션으로써는 무척 유용합니다. 하지만 편안한 자세에서 사용되는 iPad 에선 그다지 추천되는 UX가 아닙니다. 아이폰 어플과는 달리 iPad 사용 시 사용자들은 더 많은 시간을 더 편안한 상태에서 사용되기 때문에, 항상 빠르게 뷰를 바꿔줄 수 있는 네비게인션, 즉 탭바가 필요하지 않기 때문입니다.


큰 스크린에서 또한 탭바의 사용 효율성도 떨어집니다. 아이폰에서의 탭바들은 엄지손가락으로 닿을 수 있는 거리에 있지만, iPad 같은 큰 스크린에서는 엄지손가락으로 닿을 수 있는 거리에 있지 않을 뿐더러 보기에도 좋지 않습니다. 



디자인을 겸비한 탭바 라면 Facebook 어플에서 사용한 Slide-Out 탭바 라든지, Paper 에서 사용된 gesture-based 탭바거나 USA Today 에서 사용된 컨텐츠 중심의 네비게이션을 추천합니다. 사용하기에도 편하지만, 미적으로도 눈이 즐거운 UX 의 조합으로 New iPad 의 레티나 디스플레이에 어울리는 UX 를 만들어 보십시오.





2. Stop Pinching Me (제스처 사용 시 유의할 점)


터치패드를 장착한 모바일 기기들에서 사용되는 Gesture(제스처:몸짓) 기능은 어플 사용 시 사용자들로 하여금, 어플이 직관적이며, 재밌고,  "내 것" 이라는 느낌을 제공하는 아주 특별한 기능입니다. 


하지만, 이런 유용한 제스처들도, 직관적이지 않거나, 일관성이 수준미달이라면, 사용자들에게 짜증만 제공 할 뿐입니다. 

더욱이 한가지가 아닌 여러 종류 (multi finger taps, pinches, swipes) 의 제스처를  사용한다면 iPad 어플 내 제스처들의 일관성 있는 사용 도입을 더욱 신중히 고려해야 합니다.


iPad 어플 제작 시 제스처를 도입할 경우


1. 사용자의 한손은 대부분 기기를 들고 있다는것을 잊지 말아야 하며

2. 사용자에게 관습적이지 않은 제스처에 대해서는 어플 사용 시 꼭 소개 하도록 하며

3. 2번의 제스처에 대해 애니메이션이나 시각적으로 한번이 아닌 여러번에 걸친 반복학습을 통해 어플 내 제공되는 제스처를 익힐 수 있도록 해야 합니다.

4. iOS 레벨 제스처들은 어플 내 사용을 피하도록 합니다. (Four-Finger Swipe up, Five-Finger Swipe Left/Right, Five Finger Pinch)



3. Over-Heightened Realism (과장된 현실주의)


과장된 현실감이나 오버된 인공적인 디자인은 iPad 가 처음 출시 했을때 매우 인기 있어서, Mac 에서의 어플리케이션에도 영향을 끼칠 정도였습니다. Human Interface 가이드라인을 통해 애플은 


어플리케이션 내 가상 객체들과 행동 패턴들이 현실에서의 객체들과 행동 패턴들과 흡사하다면 사용자들은 어플의 사용법을 빠르게 흡수할 수 있을 것이다


라고 적어놨습니다. 이론상으론 맞는 말이긴 하지만, 사실상, 그렇지 않습니다.


이유는 

첫번째로, UX 디자이너가 현실에서의 객체를 사용하는 방법이 어플을 사용하는 사용자들과 다를 수 있기 때문 입니다. 

두번째로는, 모든 현실적인 행동패턴 들을 녹여 넣지 않는다면, 어플리케이션에서 원치 않은 행위들이 발생하기 때문 입니다.



예를 들면, 애플 iPad 의 Notes 만 봐도 문제가 심각하다는 것을 알 수 있습니다.  Notes 어플은 가상의 전형적인 노트패드로 디자인 되어 있지만, 페이지들을 뒤로 넘길 수 있지 않습니다. 새로운 페이지를 시작하려면 "+" 버튼을 눌러 시작해야 하며, 사이드에 있는 네비게이션을 통해 적어 놓은 노트들을 훑어 볼 수 있습니다. 정확히 말해서, 어느선까지 현실의 노트패드와 같이 동작을 해야 하는지, 어느 선까지 어플에서 기능으로써 제공을 해야 하는지 불분명합니다.


이런 문제들 때문에, 과장된 현실감이나 오버된 인공적인 디자인에 대해서는, 가급적 사용을 피하라고 말하고 있습니다. 

또한 멀지 않은 미래에 어플리케이션의 인터페이스가 사용자들과 어플과의 상호작용 모델로써 더욱 보편화 될것이라 생각되므로 iPad 어플리케이션의 UX 에서는 현실감이 과장되거나 오버된 인공적인 디자인은 필요치 않다고 봅니다.



4. Split Views


아이폰에서는 없었지만, Split Views(이하 스플릿뷰) 는 iPad 와 함께 탄생 되었습니다. 그래서 그런지, 네비게이션이 들어가 있는 거의 모든 어플리케이션들의 가로모드에서 사용 되고 있을 정도입니다.




스플릿뷰의 예로는, iPad 의 Mail 어플입니다. 이 스플릿뷰를 아주 유명하게 만든 어플 당사자 이기도 하지요. 작은 메뉴바가 좌측에 위치하고, 넓은 상세 뷰가 우측에 위치하여 내용을 보여줍니다. 스플릿뷰는 Mail 에서만이 아니라 애플의 iPad 어플리케이션들 (Mail, Notes, Messages, Reminders, Settings) 을 보면 일반적으로 사용되고 있어 가로모드로 사용될 땐 기본적으로 볼 수 있는 뷰라 느껴질 정도입니다.


이러한 스플릿 뷰의 가장 큰 단점은,  복잡하며, 집중 하기 힘든 스크린 을 만들어 냅니다. Setting 정도의 어플리케이션에서는 문제가 없지만, Mail 같은 어플리케이션에서는 사용자들이 항상 email 들을 읽고 답장을 하거나, 지우거나 하는 작업을 해야 하는데, 작업을 위해 집중 하려고 세로모드 스크린으로 바꿔야 한다는 점은 무척이나 불편한 점입니다.


스플릿 뷰는 빠른시일내에 없어지거나 하지 않겠지만, 스플릿뷰의 사용을 줄일 수 있는 방법을 제시해 봅니다:


1. 아무런 생각없이 iPad 에서의 가로모드를 기본적으로 스플릿뷰로 정하지 않았으면 합니다.

2. 애플에서는 권장하지 않지만, 메뉴바를 숨기는 방법을 택하는것도 하나의 방법입니다. 좀더 나아가서는 가로모드에서 팝오버를 이용하는 방법도 있습니다. (예: iA Writer)





3. 리스트 뷰가 필요치 않지만, 네비게이션이 보여야 한다면, sidebar 나 toolbar 의 이용을 권합니다. (예: PBS)





5. Think Different, Think iPad


마지막으로 iPad 용 best 어플들을 살펴보면, 넓은 iPad 스크린을 하나의 빈 캔바스로 보며 새로운 사용자 경험을 새로 만들어 내었습니다. 마술 같은 애플의 iPad 에서 신선한 관점에서 만들어진 어플들은 다음과 같습니다.




  • Pennant (a 2011 Apple Design Award)
  • Nursery Rhymes
  • Flipboard
  • The History of Jazz
  • Paper
  • Magic Piano


위의 어플들은 애플의 슬로건인 "think different" 와 HI(Human Interface) 가이드라인과 커뮤니티에서 형성된 스탠다드를 따르고 있습니다. 

학교의 교실과, 부엌, 자동차, 사무실 그리고 커피샵에 자리잡은 iPad 의 어플을 만든다는 것, 너무나 즐거운 작업이 아닐수 없습니다. UX 와 디자인 프로페셔널들이 지속적인 iPad UX 변화에 적응하려면, 

사용자들처럼 새로운 어플들을 집착하듯 사용해 봐야 합니다. 그래야 가능/불가능 한 UX 를 생각/판단할 수 있다고 봅니다.


아직까지는, 그리고 어느정도 까지는 iPad 의 시대이기 때문에, 이제 다르게 생각하기(Think Different) 를 실천해야 할 때 입니다.

반응형
반응형


회사에서 오늘 MongoDB 관련 설명회 가 있었습니다.

주인공은 우리의 개발팀 팀장님.. :)

"이번 모바일 프로젝트에서 저희가 사용한 NoSql 중 유명한 오픈 소스 MongoDB .... "..... ㅡ,.ㅡ zzZZZZZ

말씀하시는 중에 쿨쿨 자버렸기 때문에.. 어쩔 수 없이.. 나중에 물어봤을 시..

대답을 하기 위해 설치를 하여 바로 설치해 보기로 헀습니다... 

제가 회사에서 사용하는 시스템은.. Mac 외에 데스크탑에 설치되어 있는 Ubuntu 11.10

참고한 싸이트 (http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages)

설치는 간단합니다.

1. sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

위의 명령어로 키를 받아 옵니다.

2. /etc/apt/sources.list 파일을 열어 3번을 추가한 뒤 저장합니다. 

3. deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen

4. 터미널 창에서 sudo apt-get update

5. 터미널 창에서 sudo apt-get install mongodb-10gen

끝입니다.

간단하지요? :)

아래는 설치가 끝난 뒤 mongo 명령어를 실행해 주자 버전과 test 에 연결되는 화면이네요.. :)

설치가 간략하게 끝이 났습니다.

ㅡ,.ㅡ 그리고 이젠 뭐 해야 하지? ㅋㅋ

여하튼 Ubuntu 11.10 에 MongoDB 설치하는 간략한 방법이였습니다. (시간도 그닥 걸리지 않네요)

설정하는 방법이 좀 기네요.. 설치는 일단 여기서 끝@!!

다음은.. CakePHP 랑 mongodb 같이 쓰기입니다. (참고링크: http://mark-story.com/posts/view/using-mongodb-with-cakephp)

반응형
반응형

[출처: http://stackoverflow.com/questions/6101286/making-a-button-call-a-phone-number-in-xcode ]

어플 내에서 버튼을 누르면 특정 전화번호로 전화를 걸어야 하는 기능이 들어가야 해서.. 찾아보니

아래와 같이 구현하면 바로 되네요.. 대신 전화번호 스트링의 형식이 있어요..

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]]; 

PhoneNo 는  @"tel:2135554321"

이렇게 넘겨야 하는군요. 중간에 " - " 이 있어도 되구요. 제가 테스트 한 번호는..


@"tel:010-222-3333" 입니다. 

-(void)PhoneCall:(NSString*)PhoneNo{
     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:PhoneNo]];
}    

반응형

+ Recent posts