Skróty klawiszowe do Xcode

Skróty klawiszowe do Xcode
2010-01-18 01:24

Na blogu Colin’a Wheeler’a znanym również jako Cocoa Samurai pojawił się niedawno wpis z dokumentem opisującym skróty klawiszowe dla środowiska Xcode. Pomyślałem, że też wrzucę te skróty na swojego bloga, ponieważ mogą się one przydać niejednemu developerowi. Edytor jaki jest dostępny w narzędziach developerskich Apple jest bez wątpienia najlepszym narzędziem do pisania w tym środowisku, a wiadomo, że znajomość skrótów klawiszowych drastycznie przyśpiesza pracę nad projektami.

Pobierz: Xcode Shortcuts
Licencja: Creative Commons 3.0

Moim zdaniem najfajniejszym skrótem klawiszowym w XCode jest ESC, który odpowiada za świetnie działającą funkcję – Autocomplete no i oczywiście Command + R, który powoduje kompilacje aktualnego projektu. Jeśli znacie jakieś inne ciekawe skróty, które zostały pominięte w ww. dokumencie, zachęcam Was do publikowania ich w komentarzach.

Kilka przydatnych linków dla programistów Cocoa

Kilka przydatnych linków dla programistów Cocoa
2009-12-29 22:17

Dzisiaj zamieszczam kilka przydatnych linków dla osób, które są zainteresowane programowaniem w Objective-C / Cocoa, jak również dla tych którzy chcieliby się dowiedzieć coś o tych technologiach. Publikuje je na tym blogu, ponieważ sam miałem pewne trudności z odnalezieniem dokumentacji na stronach Apple Developer, a materiałów do ogarnięcia jest na prawdę sporo. Zamieszczam tutaj moim zdaniem najważniejsze źródła oraz blogi na jakie natrafiłem w Internecie. Poza tym zachęcam do zapoznania się z lekturą „Cocoa® Programming for Mac OS® X For Dummies”, która może nie jest jakąś zachwycającą pozycją w tej dziedzinie, jednak w dosyć fajny sposób wprowadza do programowania z użyciem środowiska XCode 3.2.

Oficjalna Dokumentacja

Mac OSX Reference Liblary
Mac OSX Glossary
The Objective-C Programming Language
Objective-C Runtime Reference
Objective-C Runtime Programming Guide
Object-Oriented Programming with Objective-C

Cocoa Fundamentals Guide
Memory Management Fundamentals Guide
Cocoa Event Handling Guide
Foundation Functions Reference
Core Data Programming Guide
Core Data Utility Tutorial
Notification Programming Topics for Cocoa
Cocoa Bindings Programming Topics
Key-Value Coding Programming Guide
Key-Value Observing Programming Guide

Getting Started with User Expirience
Getting Started with Graphics and Animation
Getting Started with Networking, Internet, and Web
Getting Started with Performance

Xcode IDE

A Tour of Xcode
Xcode Workspace Guide

Blogi / Społeczność

CocoaHeads – Międzynarodowe seminaria Cocoa
Borkware Quickies – Snippety Cocoa
Call me Fishmeal – Blog autorstwa Wila Shipleya
Domain of the Bored – Blog autorstwa Petera Hoseya
Cocoa Builder – Forum Developerów Cocoa
Cocoa Dev Central – Ciekawe kursy i tutoriale
CocoaDev – Wiki Developerów Mac OSX
CocoaLab – Kolejna ciekawa stronka
CocoaSamurai – Blog Colina Wheeler’a

Wiadomo, że nie są to wszystkie możliwe źródła, a jedynie ich bardzo mała cząstka. W miarę wolnego czasu postaram się uzupełniać ten spis o nowe ciekawe pozycje. Sam drążę temat Cocoa od ponad 3 miesięcy i jestem jeszcze początkujący w tej dziedzinie, więc jeśli ktoś znalazłby inne ciekawe linki, których nie ma na tej liście, to zachęcam do opublikowania ich w komentarzach.

Świątecznie: SpeakingSanta.com

Świątecznie: SpeakingSanta.com
2009-12-21 01:43

Przedwczoraj uruchomiliśmy nasz nowy serwis www.speakingsanta.com. To świąteczny viral marketingowy IVO Software, który został zrobiony we współpracy z pracownią animacji Esy-Floresy. W tym miejscu chciałbym podziękować im za na prawdę profesjonalne podejście do sprawy, terminowość i miła współpracę. Dziękuję też chłopakom ode mnie z firmy, którzy wykonali back-end w PHP i przygotowali specjalne modyfikacje głosów. Patronat medialny, a w sumie to bardziej marketingowy ( o ile mogę to tak nazwać ) objęła Wirtualna Polska. Cały projekt udało nam się zrealizować w ok 3 tygodnie, co jest moim zdaniem niezłym osiągnięciem, jak na taki serwis, choć muszę przyznać, że jako jedyny koder Flasha miałem trochę roboty na głowie, co odbiło się nawet jedną nieprzespaną nocką.

Speaking Santa

Rzecz polega na wyborze odpowiedniej postaci i wprowadzeniu tekstu, którym będzie dana postać mówiła. Wygenerowany tekst wraz z mową możemy przesłać później znajomym lub opublikować gdzieś na Internecie. Do wyboru mamy 4 postacie: Mikołaja, Renifera, Misia oraz Panią Zając. Serwis dostępny jest w 3 wersjach językowych: w polskiej, amerykańsko-angielskiej i brytyjsko-angielskiej. W polskiej wersji możemy usłyszeć postacie, które posiadają wadę wymowy np. Renifer się jąka, a Pani Zając sepleni. Osobiście uważam, że nie jest to fajny pomysł, ale cóż … „de gustibus non est disputandum ” … mam nadzieje, że chociaż Wam się to spodoba ;)

Korzystając z okazji chciałbym również życzyć wszystkim Zdrowych i radosnych świąt Bożego Narodzenia, bogatego Mikołaja oraz wiele inspiracji i powodzenia na Nowy Rok !!!.

ActionScript 3 Multiple Sound Player

ActionScript 3 Multiple Sound Player
2009-12-19 23:27

Przedwczoraj kierownik zlecił mi napisanie prostego programiku we Flashu, który na wejściu dostawałby tablicę z adresami URL do dźwięków, wczytywałby je do pamięci podręcznej, a następnie można było odpalić dany dźwięk wywołując odpowiednią funkcję z parametrem, który byłby wskaźnikiem do odpowiedniego obiektu w tej tablicy. Jak tylko znalazłem wolną chwilkę, zabrałem się do pisania i po 2 godzinkach kodowania udało mi się rozwiązać następujący problem w taki sposób:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package
{
	import flash.display.MovieClip;
	import flash.external.*;
	import flash.events.*;
	import flash.net.URLRequest;
	import flash.media.Sound;
	import flash.media.SoundChannel;
 
	public class MultipleSoundPlayer extends MovieClip {
 
		public var myChannel:SoundChannel = new SoundChannel();
		public var soundArray:Array = new Array();
		public var urlArray:Array = new Array();
		public var canPlay:Boolean = false;
		public var count:int = 0;
 
		public function MultipleSoundPlayer() 
		{
			ExternalInterface.addCallback("loadAudio", loadAudioFiles);
			ExternalInterface.addCallback("playAudio", playAudioFile);
			ExternalInterface.addCallback("stopAudio", stopAudioFile);
			ExternalInterface.call("askForVars",null);
		}
 
		public function playAudioFile(i:Number):void
		{
			if(soundArray[i] && canPlay)
			{
				var sndToPlay:Sound = soundArray[i];
				myChannel.stop();
				myChannel = sndToPlay.play(0);
			}
			else if(!canPlay)
			{
				ExternalInterface.call("notLoadedError",null);
			}
			else if(!soundArray[i])
			{
				ExternalInterface.call("outOfRangeError",null);
			}
		}
 
		public function stopAudioFile():void
		{
			myChannel.stop();
		}
 
		public function loadAudioFiles(arr:Array):void
		{
			var ar:Array = arr
 
			try
			{
				for(var i:int;i<ar.length;i++)
				{
					createSound(ar[i]);	
				}	
			} 
			catch (e:Error)
			{
				ExternalInterface.call("audioArrayInputError",null);
			}
 
			loadRequests();	
		}
		public function createSound(s:String):void
		{
			var snd:Sound = new Sound();
			soundArray.push(snd);
			urlArray.push(s);
		}
		private function completeHandler(e:Event):void
		{
			soundArray[count].removeEventListener(Event.COMPLETE,completeHandler);
			count++;
			loadRequests();
		}
		public function loadRequests():void
		{
			if(count < soundArray.length)
			{
				soundArray[count].load(new URLRequest(urlArray[count]));
				soundArray[count].addEventListener(Event.COMPLETE,completeHandler);		  
			}
			else
			{
				canPlay = true;
				ExternalInterface.call("soundsLoaded",null);
			}
		}
 
	}
}

Całość spakowana zipem jest dostępna do pobrania z tego adresu. W środku zipa znajdują się również przykładowe dźwięki, osadzenie Flasha oraz funkcje JavaScript potrzebne do prawidłowego funkcjonowania.

AS3 Multiple Sound Player jest wydany na licencji MIT, zatem zachęcam do jego modyfikowania i używania w każdego rodzaju projektach. Warunek jest jeden. Proszę o umieszczenie informacji o autorze wraz z linkiem do tej stronki.

Problemy z długością tekstu we Flashu

Problemy z długością tekstu we Flashu
2009-12-14 20:39

Pracując nad ostatnim projektem napotkałem bardzo dziwnego buga we Flashu. Problem dotyczy długości tekstu dla pola w którym zmieniono kerning. Napisałem w AS3 taką regułkę, która nie wiadomo czemu nie chciała działać:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
ta.addEventListener(Event.CHANGE, taFieldChangeHandler);
private function taFieldChangeHandler(event:Event):void
{
	if ('' != event.currentTarget.text )
	{
		trace("Text is not null")
 
	}
	else
	{
		trace("Text is null")
	}
 
}

Nie miałem pojęcia dlaczego Flash zawsze wyświetlał mi trace: Text is not null, mimo tego że pole do wprowadzania tekstu było puste. Po niespełna godzinie różnych prób i testów, zirytowany problemem postanowiłem zajrzeć do pliku Flasha, ponieważ instancja pola tekstowego była tworzona z poziomu pliku fla. I eureka. Zauważyłem, że moje pole miało zmieniony kerning (albo inaczej letter spacing) na -0.5. Wartość ta została ustawiona przez innego designera, od którego dostałem pliki źródłowe. Kiedy ustawiłem tą wartość na 0 kod w końcu zaczął poprawnie działać.

Nie wiadomo mi, czy jest jakiś Workaround dla tego buga. Może gdybym miał trochę więcej czasu udało by mi się coś wykombinować, ale ostatecznie ustawiłem kerning na 0 i dałem sobie spokój. Próbowałem też wyciągnąć wartość pola do zmiennej i następnie porównywać tą zmienną, lecz efekt był taki sam, jak w przypadku pola tekstowego. Wydaje mi się to dziwne, bo wychodzi na to, że Flash dokleja jakieś dziwne znaki do zmiennych, kiedy letter spacing jest różny od 0, a przecież tak nie powinno być.

Swoją drogą nie jest to pierwszy i na pewno nie ostatni babol z jakim spotkałem się we Flashu. Jeśli ktoś zajmował się troszkę programowaniem w AS3 na pewno zrozumie o co mi chodzi. Nasuwa mi się na myśl jedno pytanie. Dlaczego Adobe wypuszcza kolejne wersje Flasha z nowymi bugami, zamiast skoncentrować się na wydaniu porządnej platformy dla aplikacji webowych ?

NeoOffice – darmowy i szybki Office

NeoOffice - darmowy i szybki Office
2009-12-02 16:56

Dzisiaj nadszedł ten dzień, w którym postanowiłem powiedzieć „Asta la vista” programowi OpenOffice, bo znalazłem bardzo dobrą alternatywę dla tego softu. Używałem również MS Office na Maca, ale zarówno ten jak i poprzedni strasznie muliły mój system. W końcu nadszedł czas, żeby to zmienić i przywitać się z NeoOffice.
NeoOffice
Ta darmowa aplikacja, pozwala edytować dokumenty tekstowe zapisane w formacie Word i OpenOffice. Aplikacja przeznaczona jest dla systemów Tiger, Leopard i Snow Leopard w wersji 32 bitowej. Muszę przyznać, że Neo, to kawał niezłej roboty, bo na prawdę szybko się odpala (3-4 razy szybciej) w porównaniu do OpenOffice napisanego w Javie. O ile mi wiadomo to w NeoOffice wykorzystano otwarty kod OpenOffice, z tą różnicą, że został przepisany na o wiele wydajniejszy Objective-C. Oznacza to, że program posiada te same funkcje, co produkt firmy Sun Microsystems, a to tego posiada profesjonalny i elegancki wygląd, który zapewniają mu komponenty rodem z Cocoa .

Program do pobrania za darmo z tej strony.

Aplikacje na iPhone w Adobe Flash CS5

Aplikacje na iPhone w Adobe Flash CS5
2009-11-30 23:49

Właśnie przeglądałem RSS, a tu nagle wpada mi w oko pewien tajemniczy nagłówek o nazwie New tutorial on iPhone development with Flash CS5, a w środku tutorial, w którym stary wyjadacz Lee Brimelow opisuje prosty sposób napisania aplikacji na iPhone’a za pomocą Flasha CS5. Muszę przyznać, że nie mogę się doczekać, kiedy będę mieć możliwość wypróbowania nowych bibliotek na własnym iPhonie i Macu. Znając życie jeszcze poczekamy trochę na CS5 :(
Flash iPhone
Ten krótki tutorial moim zdaniem pokazuje, jak wielką moc może mieć Flash w takich zastosowaniach i pisze tutaj głównie o aspekcie wydajnościowym, bo widać, że aplikacja wcale nie śmiga wolno. Jestem ciekaw, ile linii kodu trzeba byłoby napisać w Objective-C/Cocoa, żeby uzyskać podobny efekt? Oby tak dalej. Fajnie, że będe mógł w końcu napisać jakiś soft, który będę wykorzystywał na swoim telefonie. Cieszy mnie również fakt, że Apple w końcu doszło do porozumienia z Adobe, jeśli chodzi o kwestie Flasha na iPhone, bo przecież wiadomo, że firma od CS5 będzie miała niemałe wpływy w AppStore.

Hello World

Hello World
2009-11-26 17:25

Witam wszystkich serdecznie!

Nazywam się Paweł Dobierski. Pracuję w firmie IVO Software na stanowisku Software Developer. Specjalizuję się głównie w tworzeniu dynamicznych stron internetowych w oparciu o technologie PHP czy Javascript. Ostatnio coraz więcej czasu poświęcam programowaniu w środowisku Xcode. W wolnych chwilach produkuję nagrania, które możecie usłyszeć na tej stronie

Blog Metadata.pl to miejsce, w którym będę starał się (w miarę regularnie) umieszczać, niektóre rozwiązania programistyczne z jakimi miałem styczność. Nie chciałbym się ograniczać jedynie do kilku technologi, a raczej prezentować szerokie spectrum narzędzi i języków. Ponieważ jestem użytkownikiem MacBook’a Pro, na pewno nie zabraknie tutaj opisów przydatnego softu i rożnych wskazówek, które sprawiają, że praca na Mac OSX staje się jeszcze fajniejsza.