Friday, August 29, 2008
Wh00t!
If anyone's interested in becoming a committer on the SQLite Persistent Objects project, drop me a line at jeff underscore lamarche at mac dot com.
Thursday, August 28, 2008
The DevTeam Launched PwnageTool 2.0.3.
The new version has a few additional features:
* Updated Installer.app to beta 6;
* Support for iPhone and iPod touch firmware 2.0.2 5C1;
* Adds .de localization for those who read German;
DevTeam also launched the ‘150’ beta update to the Windows QuickPwn application. This update improves the user interface as well as fixing a number of bugs for YouTube.
There is also support for BootNeuter, so that you can unlock 2G iPhones. DevTeam have issued a warning that the new PwnageTool 2.0.3 must only be downloaded as a .tbz file from their servers. They should not decompress it by using The Unarchiver application.
References:
http://blog.iphone-dev.org/
Wednesday, August 27, 2008
iVerse Comics For iPhone And iPod Touch
iVerse’s application lets you read comics in landscape mode on your iPhone or iPod touch, flicking through pages with a swipe of your finger. Each comic built on iVerse’s technology will be available as its own application and can sport a custom icon and title.
“We have developed an extremely simple iPhone Application that allows us to display comics that have been specifically formatted for the iPhone/iPod Touch,” - said iVerse Media owner Michael Murphey. “What we’re doing is creating new comics, and adapting existing comics into a format that makes reading comic books an enjoyable and easy experience on these devices. There’s no “zooming” or “pinching” required. All you have to do is flick your finger.”
The company is also inviting comic book authors and studios to provide content for the service, which will be made available through iTunes.
Comics adapted using the iVerse Media software will be available in the iTunes App Store for as little as $.99.
iVerse Comics is a digital comic company that produces digital long form comic books for the iPhone and iPod Touch. The company has almost 10 Million iPhone and iPod Touch users.
Monday, August 25, 2008
The New ToughSkin Case For iPhone 3G
"ToughSkin has always been and continues to be an extremely popular case for Speck worldwide" said Irene Baran, CEO of Speck. "Our refresh of ToughSkin for iPhone 3G focused on expanding upon the versatility, styling and protection that have all become the hallmarks of the ToughSkin design."
The ToughSkin case has additional features its rubberized skin with slightly thicker corners will specially protect your iPhone from accidental bumps. Also it has a hinged bottom that can be pulled back for docking while in the case. The included detachable holster and swivel belt-clip has also been refreshed to offer an extra-secure, positive-lock on the case and allows the iPhone to be placed face-in or face-out in the holster. Openings in the case provide access to all controls, functions and ports.
The ToughSkin, along with the recently announced SeeThru and PixelSkin, are available online at www.speckproducts.com for $34.95 USD.
Founded in 2001 Speck Products (Palo Alto, CA) has become a dominant market leader in the iPod, cell phone, satellite radio and electronic accessory category. Since the first product release at Mac World 2001, Speck has released in excess of 100 SKU’s.
The company is best-known for its focus on creating refreshing designs that offer quality, thoughtful features, and distinctive style.
SQLitePersistentObjects now in Google Code Repository
http://code.google.com/p/sqlitepersistentobjects/
There aren't any substantive changes since the initial release - I'm starting to get chapters back now fast and furious and have to get as much done as I can before I leave on vacation. Anyone who is interested in contributing to the project, just drop me a line.
Thursday, August 21, 2008
Audi Releases A4 iPhone Driving Game
The game is not all very complicated. The accelerometer is used to control the steering of the vehicle and buttons on the screen are used to accelerate and hit the brakes. The goal of the games is to drive the A4 through three different laps on five courses, each of which is more difficult than the last.
Audi anticipates the A4 sedan to reach dealerships nationwide starting in September, with prices starting around $30,000.
Audi is the first vehicle maker to reach out to customers by releasing an iPhone application. What's more, Audi has set up a "microsite" especially for iPhone users to provide them with more information about the A4, including special videos, wallpaper, a dealer locator and other information.
iPhone 3G Mobile Telescope
The new design to run of rays can effectively avoid the contortion of image, and makes the super wide angle, the larger luminous flux, the higher visual acuteness, good for color reduction, which makes the high quality of photography.
Here are terms of usage of new iPhone 3G telescope:
- Install the crystal case first enclosed with the telescope.
- Adjust the clear focus with the naked eye.
- It can take a picture while fixing the telescope on back crystal case. (If the screen of your cellphone is analyzed degree enough, you can adjust the focus with the screen of the cellphone).
The iPhone 3G Telescope is available from the Mobile Brando website for $19.
Mobile Brando offers a wide range of accessories of PDA, iPod, Smartphone, etc. Online shopping is possible by credit card payments over the internet via WorldPay and PayPal. Accepting Visa and Mastercard. All payments in US Dollars and deliver worldwide.
References:
http://shop.brando.com.hk/prod_detail.php?prod_id=02794
Tuesday, August 19, 2008
SQLite Persistent Objects
Well, now you can. I've been talking about this project for a while, but it got put on hold for the book. I have now finished the first draft of the code. This is very much a beta release, but I am interested in feedback from people, so am releasing it. In the next release, I will provide more sample code and unit tests, and other niceties, but for this release, you just get the source code files and a little bit of information about how to use them.
What does it do?
It lets you create Objective-C classes that know how to persist themselves into a SQLite database. Not only that, but it completely hides the implementation details from you - you do not need to create the database, create the tables, or do anything else except work with your ojbects. you simply subclass SQLitePersistentObject and create Objective-C 2.0 properties for every data element you want persisted. When you create an instance of this object and send it the save message, it will get saved into the database.
How does it work
Every subclass of SQLitePersistentObject gets its own table in the database. Every property that's not a collection class (NSDictionary, NSArray, NSSet or mutable variants) will get persisted into a column in the database. Properties that are pointers to other objects that are also subclasses of SQLitePersistentObject will get stored as a reference to the right row in that object's corresponding table. Collection classes gets stored as child tables, and are capable of storing either a foreign key reference (when the object they hold is a subclass of SQLitePersistentObject) or in a field on the child table.
Can all properties be stored?
No. But most can. This currently does not support properties that are c-strings, void pointers, structs, or unions. All scalars (ints, floats, etc) get saved into appropriate fields. When it comes to Cocoa objects, any class that conforms to NSCoding can be stored in a column. It is also possible to provide support for specific classes by adding a category on the class you wish to support that tells the system how to store and retrieve that object from a column's data. There are provided categories for NSDate, NSString, NSData, NSMutableData, NSNumber, and (of course) NSObject. Creating new ones to let other objects be persisted is relatively easy - just look at one of the included categories and implement the same methods. The methods are documented in NSObject-SQLitePersistence.h.
Classes that don't have direct support (the ones listed above or any that you add), will use NSObject's persistence mechanism, which archives the object into a BLOB using an NSKeyedArchiver. This is inefficient for some objects because you can't search or compare on these fields, but at least most object can be persisted. Some classes like NSImage, this method actually works quite well and there's probably no reason to add a specific category.
How do I use it?
Add all the files from the zip file to your project, link in libsqlite3.dylib. Then, declare data objects like this:
#import <foundation/foundation.h>
#import "SQLitePersistentObject.h"
@interface PersistablePerson : SQLitePersistentObject {
NSString *lastName;
NSString *firstName;
}
@property (nonatomic, retain) NSString * lastName;
@property (nonatomic, retain) NSString * firstName;
@end
Once you've done that, you can just create your objects as usual:
PersistablePerson *person = [[PersistablePerson alloc] init];
person.firstName = @"Joe";
person.lastName = @"Smith";
Now, you can save it to the database (which will be created if necessary) like so:
[person save];
Loading it back in is almost as easy. Any persistable object gets dynamic class methods added to it to allow you to search. So, we could retrieve all the PersistablePerson objects that had a last name of "Smith" like so:
NSArray *people = [PersistablePerson findByLastName:@"Smith"]
Or, you could specify the exact criteria like this:
PeristablePerson *joeSmith = [PersistablePerson findFirstByCriteria:@"WHERE last_name = 'Smith' AND first_name = 'Joe'];
Notice that the camel case word divisions (marked by capital letters) got changed into an underscore, so if you want to use findByCriteria: or findFirstByCriteria: you have to make sure you get the column names correct. I plan on adding additional dynamic class methods to allow searching based on multiple criteria, but for now, if you want to search on more than one field you have to manually specify the criteria. Don't worry, it's not hard.
Can I create Indexes?
Yep. Just need to override a class method
+(NSArray *)indices;
You should return an NSArray of NSArrays. Each array contained in the returned array represents one index, and should contain the name of the properties to build the index on. Use the property names - although, in some cases, the names are changed, this method should return the actual property names, not the database column names. Here is an example implementation of indices
+(NSArray *)indices
{
NSArray *index1 = [NSArray arrayWithObject:@"lastName"];
NSArray *index2 = [NSArray arrayWithObjects:@"lastName", @"firstName", nil];
NSArray *index3 = [NSArray arrayWithObjects:@"age", @"lastName", @"firstName", nil];
return [NSArray arrayWithObjects:index1, index2, index3, nil];
}
Assuming the strings passed back all describe valid properties, the table that holds this class' data will have three indices. Easy enough, right?
What happens if I load the same object in multiple times?
These classes maintain a map of all persistable objects in memory. If you load one that's already in memory, it returns a reference to that instead of going back to the database. If you need to be able to make a copy of the object, you'll have to implement NSCopying, as SQLitePersistableObject does not currently conform to NSCopying, though it probably will before I consider this "done".
How is this Licensed
It's a very liberal license. You can use it however you want, without attribution, in any software commercial or otherwise. You are not required to contribute back your changes (although they are certainly welcome), nor are you required to distribute your changed version. The only restriction that I place on this is that if you distribute the source code, modified or unmodified, that you leave my original comments, copyright notice, and contact information, and ask that you comment your changes.
Is it fully functional?
Close to it. As I said earlier, I want to add more robust methods for finding objects. I also haven't implemented rollback. Because this maintains a memory map, it's actually difficult right now to go back to the way an object was when it was last saved because you have to make sure that every object that has a reference to that object releases it, make sure that it is gone, then re-load it from the database. Rollback is high on my priority list. Because this is an early release, there are bound to be bugs and I'm sure you can come up with enhancements that could make it better.
Does it use private or undocumented libraries?
No. It does not. It does make extensive use of the Objective-C runtime, but that is fully documented and open to developers. There is also nothing in here covered by the NDA. It was developed under Cocoa for OS X, but since it only uses foundation objects, it should, in theory, work just as well on the iPhone. Because of the NDA, I'm not actually going to say it works on the iPhone... I can neither confirm or deny that it works on said platform. But it should.
So, Where is it Already?
You can get it right here.
You should check out the file SQLitePersistentObject.h, which contains fairly extensive documentation in headerdoc format.
Monday, August 18, 2008
Apple Releases iPhone Update 2.0.2
The update is expected to fix many longstanding bugs found since the release of revision 2.0.1 regarding various applications and device reception with no specific changes and is intended to be a full firmware update.
The update is 248.7MB in size and you can download it via iTunes.
References:
http://www.macnn.com/articles/08/08/18/apple.offers.iphone.202/
Apple Releases iPhone Update 2.0.2
Apple releases version 2.0.2 firmware for 3G iPhone and iPod touch. The 248.7MB update is available only through iTunes and comes just two weeks after version 2.0.1.
The update is expected to fix many longstanding bugs found since the release of revision 2.0.1 regarding various applications and device reception with no specific changes and is intended to be a full firmware update.
AT&T stores will also be receiving a big shipment of iPhone 3Gs.
The update is 248.7MB in size and you can download it via iTunes.
References:
Dynamically adding class objects
Today, I'm going to post one of the little gotchas that bit me while writing that code, and which is really, really hard to figure out from Apple's documentation: how to dynamically add a class method at runtime. What I did in my persistence classes was to create class methods to help you retrieve objects. So, if you wanted to retrieve all the objects in the database where the name property equaled "John", you could do this
NSArray *johns = [Person findByName:@"John"];
Anybody who has worked with Ruby's excellent ActiveRecord implementation will recognize this pattern as the one used there. The way to implement this is to override resolveClassMethod: (you would use resolveInstanceMethod: to do the same thing for instance methods, but that is documented well and easy to implement so I won't discuss it here).
The resolveClassMethod: documentation refers you to resolveInstanceMethod: for an example implementation, which looks like this:
+ (BOOL) resolveInstanceMethod:(SEL)aSEL
{
if (aSEL == @selector(resolveThisMethodDynamically))
{
class_addMethod([self class], aSEL, (IMP) dynamicMethodIMP, "v@:");
return YES;
}
return [super resolveInstanceMethod:aSel];
}
If you use code like that in your resolveClassMethod:, however, you'll get an unrecognized selector error at runtime. Why? Because that code adds a method to the class object, which means you added an instance method to that class. That's not what you want. What you want is to add a method to your class' metaclass object instance, which means going to the runtime to get the Class object that represents the class' metaclass object (say that five times fast!). So, the example above, when turned into a class method override, would look like this:
+ (BOOL) resolveClassMethod:(SEL)aSEL
{
if (aSEL == @selector(resolveThisMethodDynamically))
{
Class selfMetaClass = objc_getMetaClass([[self className] UTF8String]);
class_addMethod([selfMetaClass, aSEL, (IMP) dynamicMethodIMP, "v@:");
return YES;
}
return [super resolveClassMethod aSEL];
}
And, in the immortal words of Bugs Bunny: Viola! You've added a class method to your class at runtime. Of course, you have to create the function dynamicMethodIMP in order for this to work and do all the other assorted steps necessary to make dynamic methods work, but this isn't a tutorial on dynamic method creation, just a solution to one gotcha you may encounter while doing it.
Saturday, August 16, 2008
iPhone Stylus with Flexible Tip
The stylus is specially designed for the iPhone which typically only responds to finger touches due to its capacitive sensor. Also it works with iPod touch. The $14.99 stylus is available from ThinkGeek. This metal construction is made in two colors – black and silver. In length it is 10.2 cm.
Reference:
http://www.thinkgeek.com/gadgets/cellphone/a8cd/
Thursday, August 14, 2008
ScanLife 2D Barcode Reader For iPhone
The software allows for scanning an EZcode using the iPhone's camera then instantaneously executing an individual action that the code is associated to, such as launching a Web site without you having to remember its URL and typing it on the phone's browser.
ScanLife can launch any URL address and with Wi-Fi access, the application can also send a user directly to an iTunes page to preview and purchase a specific song or to watch a video on YouTube.
“The iPhone represents a reinvention of the mobile phone that seeks to enable better navigation and easier access to information, making it perfectly compatible with Scanbuy’s objectives,” said Jonathan Bulkeley, Chief Executive Officer of Scanbuy. “We are committed to expanding 2D barcode usage, and iPhone compatibility is a significant step in engaging key mobile adopters and reaching millions of new consumers worldwide.”
ScanLife is available for other smartphones, too. You can get it by texting the word "SCAN" to 43588 to receive the download instructions or go to www.getscanlife.com on your mobile browser. ScanLife supports hundreds of other camera cell phones running major mobile operating systems including BREW, Java, Symbian, Palm, Blackberry, and Windows Mobile.
You can download Scanlife for your iPhone from the App store.
Scanbuy is the leading global provider of mobile marketing solutions that use the camera phone as the link between the physical world and the digital world was founded in 2000. Scanbuy has a strong and growing intellectual property base and was highlighted as a Fortune’s 25 breakout company in 2005 and honored as one of Red Herring’s 100 most innovative companies of 2006.
Scanbuy’s 2D barcode capture technology is revolutionizing the way media companies, marketers, handset manufacturers and carriers around the world provide information and services to consumers on their mobile phones.
References:
http://scanbuy.com/article.view.php?id=20&press=1&page=company
Wednesday, August 13, 2008
New Juicy Couture Gel Cases For iPhone
The three new cases- lime green, strawberry, and white cost $55, but they are not different from other gel cases, except for the stamp on the back that reads "iChoose Juicy."
References:
http://www.geeksugar.com/1857767
Tuesday, August 12, 2008
Apple iPhone eBook Reader
While you can’t purchase brand new books through the app, it can read so any e-books you do buy and download onto your computer could be transferred over.
It is a simple eBook reader for the iPhone which supports HTML and text files stored in your Media/EBooks folder, and is smart enough to enter subdirectories.
Well, this is an awesome application indeed. But be careful, as this is unauthorized by Apple. Damage or any adverse effects it has on your iPhone will be your own fault.
For more information check our reference.
Reference:
Google Translate For iPhone
Google Translate for the iPhone has been specially optimized for speed so you don’t have to wait a long time on uncertain wireless connectivity in front of the waiter who speaks nothing else but German. In addition to the speed Google Translate also supports all existing language pairs that are supported on the web based version of the translator, and uses a client-side data store to store past translations on your iPhone. This enables you to have the previous words and phrases on your device to access them inside a Metro tunnel with limited connectivity to the outside world.
The web app is cleanly laid out, with selector menus for the source and target languages, a field for entering your phrase, and an arrow that lets you toggle which direction the translation goes. Best of all, the Google Translate web app stores your recent queries, so you can load it up with a few handy phrases and not worry about erasing the earlier ones when you add more.
You can try Google Translate for iPhone, by point your iPhone web browser to translate.google.com.
Saturday, August 9, 2008
“I am Rich” for $999.99
The developer states he does not know why Apple removed the application: Heinrich, a German software developer, has yet to hear back from Apple concerning the removal. "I have no idea why they did it and am not aware of any violation of the rules to sell software on the App Store," Heinrich said in an e-mail with The Times today.
According to Heinrich, six people in the U.S., one from Germany and one from France bought the $999.99 application. This brought Heinrich $5600 in net revenue.
Reference:
http://latimesblogs.latimes.com/technology/2008/08/iphone-i-am-ric.html
Friday, August 8, 2008
Book's Almost Done
The book has ended up being a lot longer than we first envisioned it. Our original concept was a very basic, very beginner-level book. What we ended up writing was almost a soup-to-nuts book that will end up being over 500 pages including front and back matter. The current manuscript is at 470 pages with two chapters left, and that doesn't include the index, TOC, preface.
I'm a little bummed, we ended up cutting a chapter that I would have liked to write. It would have made the book too long and it didn't really belong in a book with "Beginning" in the title, but I thought it was important and kinda wish we had the luxury to include it.
Looks like we missed our deadline by probably ten days. Not bad considering it's over 150 pages longer than our contractual requirement. We probably could have made the deadline, but I think the quality would have suffered, and since the NDA is still in effect, we can't deliver the manuscript anyway, so I think we did the right thing by taking an extra week or two.
I'm actually really, really happy with the book. Dave's a great writer and our tech reviewer is phenomenal, so having the two of them keeping me honest can't help but make me look good.
Man, am I tired. I haven't had a day off in two months, and I haven't had a day shorter than 13 hours in six weeks. Once I send the last chapter to Dave, I'm going to jump for joy, and then sleep for a week.
Thursday, August 7, 2008
Frogger - Now Avaliable For iPhone And iPod Touch
"We see the iPhone platform as an opportunity to showcase the legendary Konami brands in a truly unique fashion. Each Konami game has been specifically designed with the strengths of the iPhone platform in mind," said Joe Morris, Vice President of Konami Mobile. "Konami is committed to providing players with games that leverage the latest technology. Fans of the best-selling Frogger franchise can now experience the title unlike ever before, and we look forward to releasing more of our popular titles for the iPhone soon."
Konami is a leading developer, publisher and manufacturer of electronic entertainment properties. Konami's titles include the popular franchises Metal Gear Solid, Silent Hill, DanceDanceRevolution and Castlevania, among other top sellers.
Konami Corporation is a publicly traded company based in Tokyo, Japan with subsidiary offices, Konami Digital Entertainment Co., Ltd. in Tokyo, Japan, Konami Digital Entertainment, Inc. in the United States and Konami Digital Entertainment GmbH in Frankfurt, Germany.
Wednesday, August 6, 2008
Softbank Mobile Creates Two-Ceiling System To Increase iPhone Use
After this revision one can get an iPhone 3G with minimum ¥2,990 (27 USD) subscription a month. Previously the minimum charges were 67 USD a month.
The revision will add two ceilings to the ‘Packet Flat-rate Full’ fixed charge (¥1,695-¥5,985), which will vary according to usage. The revised plan will be applied from the usage of August 2008 on. After this revision one can enjoy iPhone 3G, from minimum ¥2,990 a month.
The prices are also depended on on your data transfer usage, the wireless data charges will start from minimum 20MB (1695 ¥) to 70MB (5985¥). The changes are the same when you exceeded 70MB data transfer.
Tuesday, August 5, 2008
Copy and Paste on Your Iphone
The $3.99 app allows you to:
- Cut, Copy and Paste
- Choose from 6 different font styles, 5 different sizes, and 8 unique colors
- Send your Rich Text documents by email
Reference:
http://www.youtube.com/watch?v=dv4q8fkJeio
Monday, August 4, 2008
More Than 1,000 Apps Available For The iPhone
Apple Applications like PhoneSaber which are targeted to most of the audiences are free. Currently there are 6 apps that cost over $50 and due to this the average price on an app is $6.70, but the overall cost on all apps is $4.96.
Expensive apps have also started to make their way in the App Store. Two MyAccountsToGo apps are running for $449.99, and another iChart EMR is charging $139.99. Of course, these are targeted at professionals who will heavily rely on them.
Many feel that the apps available for the device and its capabilities as a software platform may actually be more important than the device itself, so the growth is good for iPhone owners.
References:
http://www.apple.com/iphone/features/appstore.html
Saturday, August 2, 2008
3G/EDGE Tethering App for iPhone
NetShare's inclusion in the App Store is a curiosity, as Apple must have manually approved its inclusion. It's unclear if the Application would go against AT&T user agreements. AT&T typically charges Smart Phone users $30/month extra to use tethering applications. Screenshots of the application's instructions have been included here:
This application has been confirmed to work by multiple users. NetShare is available on the iTunes App Store. Update: The application appears to have gone missing from the App Store. While the application listing still appears, if you try to purchase it now, iTunes says "The item you tried to buy is no longer available".
Update 2: For those who were fortunate enough to get the app, forum user Mac-Addict has posted a detailed tutorial.
Update 3: Developer reply: It is not clear yet why Apple took down the application yet, we've received no communication from Apple thus far. NetShare did not violate any of the Developer or AppStore agreements.
Friday, August 1, 2008
New iPhone Case with Rechargable Battery
http://www.chinavasion.com/product_info.php/pName/iphone-battery
-case-portable-on-the-go-recharging/