The YUI Library is a set of utilities and controls, written with
JavaScript and CSS, for building richly interactive web applications
using techniques such as DOM scripting, DHTML and AJAX. YUI is
available under a BSD license and is free for all uses.
So
you have a killer idea for an iPhone app, but when you describe it to
people they just don’t get it. Maybe you have a client that is a visual
thinker and needs you to draw it out for him. That’s when wireframes,
mockups and stencils can be your saving grace.
There are many different types of tools
available to developers, from low-tech stencil kits to high-tech
collaborative software. So I’ve rounded up a few of the more popular
ones people are using specifically for iPhone development. It’s far from
being the definitive list, but it’s definitely a good place to start.
Low Tech Solutions
Notepod
Notepod is a notepad shaped like an iPhone. Each notepod is 100 pages
of 60 x 110mm double sided paper. The front has 52mm x 77mm blank space
(the iPhone screen), the back is a 6mm grid.
The iPhone ui stencil kit is a stainless steel, laser cut stencil kit
for drawing quick mock-ups and wireframes for iPhone apps. It also comes
with a Zebra mechanical pencil.
The App Sketchbook has 50 Double-sided, perforated pages each with 3
actual sized iPhone templates. Each page also has has 20px ruler
markings and a ruled section for notes.
Graffletopia’s stencil kit for Omnigraffle.
It is for quick sketching of iPhone ideas. Use the outline for
printouts so you can hand sketch as well. The symbols are meant as a
check list for included features in your app development.
This is a plug-in to browser Mozilla FireFox for prototyping interface
of iPhone applications for creating an iPhone mock-up. Currently Alpha –
not compatible with FF 3.55.
Pencil is a free and opensource tool for making diagrams and GUI
prototyping. Pencil runs on the Mozilla Gecko engine, turning the
Firefox browser into a sketching tool with just a 400-kilobyte
installation package.
This plug-in combines Fireworks with some jQuery and PHP to give you a
prototype you can not only view, but interact with, directly on your
iPhone, just as if it’s a live app.
Liveview is an iPhone app that consists of two parts: the ScreenCaster
and the Application itself. ScreenCaster launches a simple iPhone skin
on your Mac. From the same network, launch the LiveView app in your
iPhone. Whatever the ScreenCaster is highlighting is now seen in the
LiveView App. It also interprets touches as mouse clicks, turning it
into a two way interactive prototype.
Mockingbird is a web based mockup/wireframe tool built using the
Cappucino framework, so there’s no flash to wrestle with. While you
can’t actually design your mockups from an iPhone (who’d want to?), the
tool does have some very handy features. You can drag elements onto the
screen, create multiple pages, link to other pages and share directly
from the web.
Pidoco is a web-based tool that lets you create clickable wireframes
via drag & drop ui and then collaborate with remote users on each
project. The tool also includes iPhone stencils.
iPhone mockup is a web based tool that is currently in Alpha release
only. You can design your mockup as a hand sketch or illustration, and
mockups can contain user-uploaded images and user-entered text. Your
mockups will be accessible via url so they are unsecured.
The developer makes this perfectly clear and warns that he could
discontinue hosting mockups at anytime, thereby deleting any work. That
makes this a handy tool for quick and dirty mockups you want to print or
share with someone on the fly, but not for much more.
Protoshare is a collaborative, web-based prototyping tool that helps
teams visualize requirements for interactive projects and work together
in real-time. It has an iPhone component that can be seen here.
With iPlotz you can create clickable, navigable wireframes to create
the experience of a real website or software application. You can also
invite others to comment on the designs, and once ready, you can then
manage the tasks for developers and designers to build the project.
CogTool is a general purpose UI prototyping tool simply using a
storyboard of your design idea with sketches, images or on a canvas.
Demonstrate tasks on that storyboard, then press a button to produce a
valid cognitive model predicting how long it will take a skilled user to
complete those tasks.
Balsamiq mockups is desktop software that is designed to help teams or
clients collaborate on wireframes and mockups. There are iPhone specific
controls included.
OmniGraffle is award winning diagraming mockup or graphic design software. Combined with Graffletopia’s iPhone stencil kit, this software is a great addition to any app developers toolbox.
iRise for iPhones gives developers a way to quickly prototype the look,
feel and behavior of Apple iPhone applications through pre-defined
visualization widgets and templates that can be quickly assembled into a
high definition mobile applications.
//새 Person 클래스를 만든다.
var Person = Base.extend({
// Person 클래스 생성자
constructor: function( name ) {
this.name = name;
},
//Person 클래스의 간단한 메서드
getName: function() {
return this.name;
}
});
// Person 클래스를 상속하는 새 User 클래스를 만든다.
var User = Person.extend({
// User 클래스의 생성자를 만든다.
constructor: function( name, password ) {
// 부모 클래스의 생성자 메서드를 호출한다.
this.base( name );
this.password = password;
},
// User 클래스에 간단한 메서드를 추가한다.
getPassword: function() {
return this.password;
}
});
Function.prototype.method : 이 함수는 그저 생성자의 프로토타입에 함수를 붙인다. 이런 식으로 method 함수를 정의하면,
모든 생성자는 함수이므로 모두 'method'메서드를 갖게 된다.
Function.prototype.inherits : 이 함수는 간단한 단일 부모 상속을 지원한다.
이 함수에서 대부분의 코드는 어떤 객체 메서드 안에서든 this.uber('methodName')을 호출해 그 객체가 오버라이드한
부모 객체의 메서드를 호출할 수 있게 하려고 작성되었다. 오버라이드한 부모 객체의 메서드를 호출 할 수 있는 기능은
자바스크립트 상속모델에서 기본으로 지원하지 않는 기능이다.
Function.prototype.swiss : 이 함수는 .method() 함수의 고급버전으로 한 부모 객체에서 여러 메서드를
상속받는데 사용한다. 이 함수를 여러부모 객체에 대해 사용하면 다중 상속 시능을 사용하는 것과 마찬가지가 된다.
//프로토타입에 새 함수를 연결하는 간단한 헬퍼
Function.prototype.method = function(name,func){
this.prototype[name] = func;
return this;
}
//다른 객체로부터 우아한 방식으로 함수를 상속받으면서 여전히 부모 객체의 함수를
//호출할 수 있게 해 주는 (약간 복잡한) 함수
Function.method('inherits', function(parent){
//상속 계층 안에서 얼마나 깊이 들어왔는지 추척한다.
var depth = 0;
//부모의 메서드를 상속 받는다.
var proto = this.prototype = new parent();
//'uber'라는 privileged 함수를 만든다.
//이 함수는 상속 과정에서 덮어쓴 함수를 실행할 수 있게 해 준다.
this.method('uber', function(name){
var func; //실행할 함수
var ret; //함수의 반환값
var v = parent.prototype; //부모의 프로토타입
//이미 다른 'uber'함수 안이라면
if(depth){
//근원 프로토타입을 찾아 필요한 만큼 깊이 들어간다.
for( var i = depth; i > o; i -= 1){
v = v.constructor.protptype;
}
//그리고 그 프로토타입에서 함수를 가져온다.
func = v[name];
//아니면 'uber'를 처음 호출하는 상황이다.
}else{
//실행할 함수를 프로토타입에서 가져온다.
func = proto[name];
//함수가 이 프로토타입의 일부였다면
if(func == this[name]){
//대신 부모 프로토타입에 간다.
func = v[name];
}
}
//상속 스택에서 얼마나 깊이 들어왔는지를 추척한다.
depth += 1;
//첫 번째 전달인자를 제외한 모든 전달인자를 넘기면서 함수를 호출한다.
//(첫 번째 전달인자는 우리가 호출하려는 함수 이름을 담고 있다.)
ret = func.apply(this, Array.prototype.slice.apply(arguments, [1]));
//스택의 깊이를 변경한다.
depth -= 1;
//함수 호출의 결과값을 되돌려준다.
return ret;
});
return this;
});
//parent 객체에서 new parent()를 사용해 모든 함수를
// 상속받지 않고, 오직 함수 몇개만을 상속받는 함수
Function.method('swiss', function(parent){
for(var i = 1; i < arguments.length; i+= 1){
//상속받을 메서드들을 모두 방문한다.
var name = arguments[i];
//메서드를 이 객체의 프로토타입으로 가져온다.
this.prototype[name] = parent.prototype[name];
}
return this;
});
객체의 타입을 검사하는 첫번째 방법은 typeof 가 있다. typeof 연산자는 변수가 담고 있는 값의 타입을 나타내는 문자열 이름을 반환하는데, 객체,배열 또는 사용자 정의 객체를 담은 변수에 대해서는 object라는 문자열만 반환하기 때문에 이 객체들을 구별하기가 어렵다는 점을 제외하고는, typeof 연산자를 사용하는 방법이 타입을 검사하는 최적의 방법이라고 할 수 있다.
두번째 방법은 모든 자바스크립트객체에 존재하는 constructor라는 프로퍼티를 참조하는 방법인데, 이 프로퍼티는 맨 처음 객체를 생성할때 사용한 함수를 가리킨다.
아래의 표는 위 두 방법을 사용해 여러 객체의 타입을 검사 할 때 반환되는 결과를 보여주는데, 첫번째열은 타입을 알아보려는 객체이고, 두번째열은 typeof, 세번째는 첫번째열의 객체에 대해 Variable.constructor 를 실행한 결과이다. 셋째열은 모두 객체다.
As part of Microsoft’s commitment to Interoperability, this open source
project is an effort bridge PHP developers to Windows Azure. PHPAzure is
an open source project to provide software development kit for Windows
Azure and Windows Azure Storage – Blobs, Tables & Queues
Overview
Enables PHP developers to take advantage of the Microsoft Cloud Services Platform – Windows Azure.
Provides consistent programming model for Windows Azure Storage (Blobs, Tables & Queues)
Features
PHP classes for Windows Azure Blobs, Tables & Queues (for CRUD operations)
Helper Classes for HTTP transport, AuthN/AuthZ, REST & Error Management
Manageability, Instrumentation & Logging support
Support for storing PHP sessions in Azure Table Storage
2. Project contributors
Windows Azure SDK for PHP is an open source collaboration project driven by RealDolmen and Microsoft, based on a blog post of Maarten Balliauw.
The RealDolmen
Microsoft Competence Centre is occupied with the supply of
made-to-measure professional Microsoft solutions to customers and is the
largest Microsoft integrator in Belgium. RealDolmen has over 10 years
of experience of complete implementation of Microsoft projects in terms
of strategy, architecture, implementation, integration of systems,
maintenance, training as well as support.
Microsoft is the project sponsor and provides Architectural & Technical Guidance on its Windows Azure platform.
3. What is Windows Azure?
Windows Azure
is the name for Microsoft’s Software + Services platform, an operating
system in the cloud providing services for hosting, management, scalable
storage with support for simple blobs, tables, and queues, as well as a
management infrastructure for provisioning and geo-distribution of
cloud-based services, and a development platform for the Azure Services
layer.
Windows Azure SDK for PHP provides access to Windows Azure's storage,
computation and management interfaces by abstracting the REST/XML
interface Windows Azure provides into a simple PHP API.
Deployment scenarios
An application built using Windows Azure SDK for PHP can access Windows
Azure's features, no matter if it is hosted on the Windows Azure
platform or on an in-premise web server.
Firefox는 언제나 HTML5를 훌륭히 지원해왔으며 기록상 마지막 버전 빌드는 보다 진보된 기능을 가지고 있습니다.
Firefox는 HTML5 형식을 충족하며
새로운 입력 형식, 데이터 목록 지원, autofucus나 placeholder와 같은 새 입력 속성, 분리된 형식, 형식
옵션, 유효성 기법, 강제 유효성, 그리고 이를 한데 묶을 새 CSS 선택기를 지원합니다. 보다 자세한 정보를 원하시면, 저희의 Hacks site를 방문하십시오.
Firefox는 사용료를 지불할 필요가 없는 새로운 웹용 비디오 포맷인 WebM을 지원합니다. 유튜브의 HTML5 베타에 참여하시면 작동하며 새로운 iframe 엠베딩 API를 사용할 경우 엠베딩된 유튜브 비디오에서도 작동합니다. 베타에 참여하시고 이 글의 아래에 있는 예제가 작동하는 것을 보십시오.
Firefox는 초기 버전의 calc를 -moz-calc와 같은 특별한 형태로 지원합니다. 이는 개발자들이 CSS
페이지 배치를 훨씬 간단하게 만들 수 있는 length를 어디에서나 사용해(더이상 빈칸을 위해 divs를 사용하지 않아도
됩니다!) 간단한 표현을 사용할 수 있게 해줍니다.
Firefox의 CSS 가상-선택자인 -moz-focusring은 한 요소가 focus되었을 경우 그리고 focus
ring이 주위에 그려질 시 어떻게 보일지를 지정하게 해 줍니다. focus ring이 그려지거나 그렇지 않을 경우에 대한 규칙은
운영체제마다 다르나 이것은 기반 규칙을 유지 보수하는 동안 form control의 모양새를 제어하게 해 줍니다.
Firefox는 숨겨진 파일 제어의 .click()을 호출해서 파일 업로드 위젯 기반을 가져올 수 있으며 이는 (볼품 없는) 파일 업로드 제어를 여러분만의 것으로 확장할 수 있다는 뜻입니다. 만약 여기에 새 File API와 progress event를 조합시키면 매우 훌륭한 파일 업로드 경험 기법이 될 것입니다.
Firefox 는 Blob API와 딸려오는 .slice API를 지원합니다. 이는 전체 파일을 메모리로 올리지 않고
JavaScript를 사용해 큰 파일 객체의 부분만 처리하고 싶은 경우 도움이 됩니다. 신뢰할 수 있는 대용량 파일 업로드를
원하는 경우에는 서버와 JavaScript 코드를 사용해 큰 파일을 여러 부분으로 나누어 전체 덩어리를 업로드하며 이 과정에서
재-재시도 실패 부분이나 심지어는 동시에 여러 부분을 전송하는 것이 포함됩니다.
컨텐츠 보안 정책(CSP: Content Security Policy)은 개발자가 여러 다른 종류의 공격을 방지에는 데
도움을 주는 도구의 모음입니다. 구체적으로, 이는 cross-site scripting 공격과 click-jacking, 그리고
패킷 스니핑 공격을 누그러뜨리는 도구를 제공합니다. 만일 규칙을 위반하게 되면 Firefox는 웹 사이트에 위반사항에 대한
정보를 보내 다른 브라우저의 보안도 향상되도록 돕습니다.
Firefox는 HTTP Strict Transport Security (HSTS) 헤더를 지원합니다. 이 헤더는
반드시, 절대로 사이트를 암호화되지 않은 HTTP로 연결하지 않도록 브라우저에게 알리는데 사용됩니다. Firefox 사용자는 또한
HSTS 목록의 사이트를 추가하거나 지우는 STS UI 부가기능을 심지어는 사이트가 HSTS에 대한 직접적인 지원을 하지 않아도 사용할 수 있습니다.