divendres, 31 de gener del 2014

GraphSketcher is now open source






GraphSketcher is a simple, elegant tool for quickly sketching graphs and plotting data — but you don’t even need data to get started. It’s perfect for reports, presentations, and problem sets where you need to produce sharp-looking graphs on the fly.

The OmniGroup stated on his blog that they will stop selling OmniGraphSketcher. Now is open source. You can download the source code from GitHub. I f you prefer to download the binary you can also do. Enjoy !

dijous, 23 de gener del 2014

NFC standart: Why Apple does not like it?



As you know Apple does not support NFC. Also Apple does not like NFC and promotes iBeacons, based on Bluetooth LE.

There are some reasons for this. NFC has a number of disadvantages:


  • Another radio? No way Smartphones have to accommodate a number of radios. An iPhone5 must include radios for LTE (or GSM), WIFI and Bluetooth.

  • Serial interaction. NFC works well in a one-to-one interaction. But what happens when 10 smartphones want to interact with an NFC tag? the tenth will have to wait until the first nine have had a go.


Bluetooth LE does not have this limitations, but it also have some disadvantages over NFC: is more expensive and the server part has shorter battery life. But overall Bluetooth LE is in a better position to prevail in the battle for short-range peer-to-peer transactions.

dimecres, 22 de gener del 2014

New features of iOS7: Dimiss the keyboard while scrolling


Now you can dismiss the keyboard while scrolling. Sure you know this nice experience from Messages.app. 

Now your app can behave like Messages.app just by changing a single property on your Storyboard, or alternatively by adding one line of code!
This property uses the new UIScrollViewKeyboardDismissMode enum. The possible values of this enum are as follows:
UIScrollViewKeyboardDismissModeNone        // the keyboard is not dismissed automatically when scrolling
UIScrollViewKeyboardDismissModeOnDrag      // dismisses the keyboard when a drag begins
UIScrollViewKeyboardDismissModeInteractive // the keyboard follows the dragging touch off screen, and may be pulled upward again to cancel the dismiss

Motorola provides an iCloud migration tool




Motorola appears to be making a play for iPhone users, launching a tool yesterday to allow an iPhone user to easily transfer their contacts and calendars from iCloud to a Google account, ready for use on an Android phone.
The option has been added to the Moto Maker customization tool for the Moto X handset, which allows buyers to choose from 32 color combinations


But the wording of Google’s announcement suggests it may be the first step in a more aggressive move on the iOS market by parent company Google. In his Google+ post, Motorola Mobility VP Punit Soni commented:
We added the ability to migrate your iPhone contacts and calendar to the Moto X (from Motomaker.com). There is a long way to go, but its a start…

New features of iOS 7: Check which wireless routes are available



Finally, in iOS7 you are able to able to know if a remote device is available via AirPlay, Bluetooth, or some other wireless mechanism. This allows your app to behave appropriately, such as hiding an AirPlay icon when that service isn’t available on other devices.
The following two new properties and notifications have been added to MPVolumeView:


@property (nonatomic, readonly) BOOL wirelessRoutesAvailable; // is there a route that the device can connect to?
@property (nonatomic, readonly) BOOL wirelessRouteActive; // is the device currently connected?
 
NSString *const MPVolumeViewWirelessRoutesAvailableDidChangeNotification;
NSString *const MPVolumeViewWirelessRouteActiveDidChangeNotification;




The MPVolumeViewWirelessRoutesAvailableDidChangeNotification notification allow us to know when the availability of AirPlay routes has changed. The MPVolumeViewWirelessRouteActiveDidChangeNotification notification allow the user to know when the user has changed the route currently in use.

dimarts, 21 de gener del 2014

Upgrade the RAM memory of your mac



Upgrading the memory of your mac is not difficult at all. May be the most important is knowing the maximum RAM memory our Mac could support. But you can easily know browsing the OWC guide

Shortcuts for Mac Safari


Open a link in a new tab

       Click the link + Cmd


Open a link in a new window

      Click the link + alt + Cmd


Cycle to tabs
     
      ctrl + TAB    (works also for Google Chrome)

      Cmd + Shift + left arrow (or Cmd + Shift + right arrow)


Close the active tab

       Cmd +  W


Refresh a tab

        Cmd + R


Save a link to the Reading list

   Shift + click the link


dilluns, 20 de gener del 2014

New features of iOS7: dismiss keyboard with a swipe gesture

Surely you know that in the Messages app you can dismiss the keyboard with a swipe gesture. Now with iOS 7 you can have this behaviour. Apple has added the property keyboardD on UIScrollView to make your life a little easier.

Here is the storyboard property to change to dismiss the keyboard on scroll:



New features of iOS 7: multilanguage text to speech




Now you can make your app speech !
 iOS7 introduces the classes AVSpeechSynthesizer and AVSpeechUtteranceUsing this two classes to provide speech synsthesis on your app is very easy. See the following code:


AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init];
AVSpeechUtterance *utterance = 
  [AVSpeechUtterance speechUtteranceWithString:@"Wow, I have such a nice voice!"];
utterance.rate = AVSpeechUtteranceMaximumSpeechRate / 4.0f;
utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-US"]; // defaults to your system language
[synthesizer speakUtterance:utterance];


That is! Only takes five lines of code to add speech to your app.


New features of iOS: detect when a user takes a screenshot




In any iOS device you can take an screenshot by:

1) Pressing and holding the Home button (the main button below the screen)
2) While the menu button is held down, press the power/lock button (the switch on the top edge of the device).

But how to detect if the user took an screenshot? Well, now with iOS is easy.  Welcome to the brand-new notification event UIApplicationUserDidTakeScreenshotNotification. Just subscribe to this event to know when an screenshot is taken.

New features of iOS7: method firstObject finally available



Until now, you (and many other people) asked the followed question:
Why NSArray does not have a firstObject method? Well, with iOS 7 finally Apple you can write:


NSArray *array = @[@1, @2, @3]; NSLog(@"First Object: %@", [array firstObject]); // 1 NSLog(@"Last Object: %@", [array lastObject]); // 3

New features of iOS7: iOS now request user consent to use the microphone





You know that iOS request user permission in order to retrieve user location. The same for accessing user contacts, reminders or photos. Now, with iOS 7 access to the microphone is also on that list. Note that if users denies access to the microphone, then the app will not be able to use the microphone.

In order to prompt the user to grant access to the microphone you can use the following code:


// The first time you call this method, the system prompts the user to grant your app access
// to the microphone; any other time you call this method, the system will not prompt the user
// and instead passes the previous value for 'granted'
[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
    if (granted) {
        // the user granted permission!
    } else {
        // maybe show a reminder to let the user know that the app has no permission?
    }
}];

New features of iOS7: Use native Base64




iOS 7 introduces the following four new NSData methods to manipulate Base64-encoded data:
// From NSData.h
 
/* Create an NSData from a Base-64 encoded NSString using the given options. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (id)initWithBase64EncodedString:(NSString *)base64String options:(NSDataBase64DecodingOptions)options;
 
/* Create a Base-64 encoded NSString from the receiver's contents using the given options.
*/
- (NSString *)base64EncodedStringWithOptions:(NSDataBase64EncodingOptions)options;
 
/* Create an NSData from a Base-64, UTF-8 encoded NSData. By default, returns nil when the input is not recognized as valid Base-64.
*/
- (id)initWithBase64EncodedData:(NSData *)base64Data options:(NSDataBase64DecodingOptions)options;
 
/* Create a Base-64, UTF-8 encoded NSData from the receiver's contents using the given options.
*/
- (NSData *)base64EncodedDataWithOptions:(NSDataBase64EncodingOptions)options;

These methods let you easily convert NSData objects to and from Base64, as shown in the following example:

NSData* sampleData = [@"Some sample data" dataUsingEncoding:NSUTF8StringEncoding];
 
NSString * base64String = [sampleData base64EncodedStringWithOptions:0];
NSLog(@"Base64-encoded string is %@", base64String); // prints "U29tZSBzYW1wbGUgZGF0YQ=="
 
NSData* dataFromString = [[NSData alloc] initWithBase64EncodedString:base64String options:0];
NSLog(@"String is %@",[NSString stringWithUTF8String:[dataFromString bytes]]); // prints "String is Some sample data"