Thursday, March 31, 2011
Jakarta on my point.
This is what you do when you have very little space and you need to build a pedestrian bridge across the road. I call it clever even not eye catching. most of the shelter bridge was built in tiny space. thats clever but ohh pliss I see there are somany bridge around jakarta.
and what about this picture?? thief.. yup I've read a lot of new which is said that the busway facilities has been robed. wow proudly being Indonesian.
Regards,
Freakkaito
Following Notepad++ To Heavens Via Scientology
I use notepad++ for everything for such a long time that it has become a part of my desktop. Like a browser, it is constantly on my desktop, helping me with writing code snippets for a SQL query to full pledged code projects.
Today, Don Ho said that he has joined Scientology and after reading his article I am following him, if my donations are going there why not me!
Transgender = geeks?
"I've always wondered why so many transsexual/transgender people are geeky. I see them all the time at the Rennaisance fairs, cosplay conventions, etc I've seen a few fb profiles and they all seem to be into rpgs, manga, and stuff like that.
Back to Blog
they called me SiMbah, its mean grandpa, pure Indonesian. what a nice country for me. nicely and friendly that what my friends says about me, even I prefer said that I have Avoidant personality disorder, or in the other word introvert person.
I'll write a lot of thing about my interest which is happened around me, enjoyed it guys and please leave your comment on it.
c ya
Sprint Drops Froyo Powered Samsung Galaxy Tab To $199!
Looks like the tablet wars are sprinting in to action, beginning with Sprint and Samsung Galaxy Tab. Sprint's is taking away full $100 from the current contract price of $299.99 for its Samsung Galaxy Tab starting on Sunday. So from this Sunday, Galaxy Tab will be the most affordable Android powered (Froyo) 3G-enabled tablet in the market.
That is if you sign the 2 year commitment to Sprint. If you are the type who does not like the commitments, you can pickup the tablet for $429.00
Now to wait for those Galaxy Tab 10" tablets to drop their prices.
Via Engadget
Check Stock Ticker On the Go On Your Mobile With Google.
But now Google search is taking a new approach to the idea of presenting stock information on small screens.
As you can see from the images above, when you visit Google.com on your iPhone or Android powered device and search for a sticker symbol, you will see a all encompassing graph or a card and you can navigate the information using the buttons at the bottom.
Swipe on the card from right to left, you get the latest financial news about the company. Once more will get you market overview and one more will show you the summery of your portfolio.
Currently the feature is available in English with other languages coming soon, give it a try.
Stay connected to the market, wherever you are - Official Google Mobile Blog
Google Makes Kansas City Happy With Ultra high-speed Broadband, Gigabit Fiber To Home.
It is more than just a faster network and an example of what high speed network and applications could do to a community. What ever the selection criteria, Google has chosen Kansas city and is working with with local organizations including the Kauffman Foundation, KCNext and the University of Kansas Medical Center to help develop the Gigabit applications of the future.
Congratulations Kansas City!
Official Google Blog: Ultra high-speed broadband is coming to Kansas City, Kansas
Smartphone Patent Lawsuit Targets Developers In Addition To Apple, Android, Blackberry and Microsoft
I come back from a small spring break to find a bunch of smatphone related lawsuits. iPhone, Blackberry, Android and Microsoft are all targeted in these suits. Google / Android alone seem to have attracted 38 such lawsuits.
But the latest lawsuit targeting 32 entities is covering developers in addition to hardware and Smartphone OS manufacturers like Google and Apple. Texas-based H-W Technology L.C. filed a complaint in Eastern Texas March 30, 2011, asserting a Patent on an "Internet protocol (IP) phone with search and advertising capability" against 32 legal entities. H-W Technology L.C. claims that the patent covers systems and methods that "allow users of [smartphones] via domain specific applications to receive information and offers from merchants and to complete a transaction with one of said merchants without having to generate a voice call.", which sounds to me like web browsing me who knows next to nothing about law and patents!
This is setting a pathway for patent hoarders as well as real patent holders to go after app developers. USPTO should really be checking these stuff well. At least we can be happy that Florian Mueller is doing the hard work of sorting things out for us.
He has drawn out the main pieces of the complaint (which is supposed to be very large);
- Google and Microsoft are sued for providing software that is installed on smartphones. With respect to Microsoft, the Windows Phone 7-powered Samsung Focus is mentioned. In Google's case, the Android application store is mentioned.
- Device makers: specifically named products include the iPhone, the BlackBerry Torch, and five Android devices (LG G2x, Samsung Galaxy S, Motorola Droid X, HTC Thunderbolt, and Kyocera Echo).
- All of the accused apps are basically mobile online shops: Amazon.com's, eBay's, Hotels.com's, Expedia's, Priceline.com's, Orbitz Worldwide's and Kayak.com's apps, and Verizon's VCast app.
Verizon Overcharges 133000 Customers With A Phantom $7 LateFee In Florida, Texas and California
Verizon customers in Florida, Texas and California, 133000 of them, were over billed by the company because of an operator error.
An operator or someone of of same capability from North Carolina billing center programmed the computers with wrong instructions to bill customers with a phantom late fee of $7 or 1.5 percent of most users' bills (whichever was greater). This brought in closer to a million dollars from state of Florida alone.
Someone in a Durham, N.C., billing center entered the wrong instructions into a computer that generated the bills for customers in Florida, California and Texas, said Bob Elek, a Verizon spokesman. Verizon says customers should get a credit for the fee on one of their next two bills.Last October Verizon agreed to pay closer to $90 million in refunds for unauthorized $1.99 data charge billed to customers.
It pays to check your bills regularly.
St. Petersburg Times, via DSLreports
Teknik Digital Wujudkan Imajinasi
Saat ini Disney Park sedang membuat program ”Let the Memories Begin”. Dongeng-dongeng Disney akan diperankan berbagai bintang terkenal dan direalisasikan dalam bentuk foto oleh wanita fotografer terkenal Annie Leibovitz. Anda mungkin ingat karya Leibovitz yang sangat legendaris, yaitu foto John Lennon memeluk Yoko Onno. Lennon dan Onno sama-sama telanjang, tetapi foto itu tidak vulgar. Juga foto Demi Moore sedang hamil tua, difoto setengah telanjang.
Dalam program terbaru Disney ini, Penelope Cruz, misalnya, akan memerankan The Beauty dari dongeng The Beauty and The Beast, Olivia Wilde akan memerankan Ratu Jahat dari dongeng Snow White and the Seven Dwarfs, serta Queen Latifah memerankan Ursula dalam dongeng The Little Mermaid.
Seperti telah disebut di atas, dongeng menjadi indah karena daya khayal orang yang didongengi bekerja membentuk berbagai imaji yang diperlukan agar dongeng bisa ”berjalan”. Dalam proyek Disney kali ini, semua imaji akan direalisasikan dalam bentuk rekayasa digital.
Dalam pemotretan Queen Latifah sebagai Ursula, misalnya, Latifah adalah tokoh nyata, sedangkan guritanya adalah tokoh khayali. Maka, saat pemotretan, Latifah dipasangkan dengan gurita raksasa buatan dari bahan lateks. Setelah pemotretan, foto diselesaikan dengan rekayasa digital, misalnya pembuatan latar belakang lautan dan ombak-ombaknya.
Proyek Disney ini menunjukkan bahwa dunia fotografi digital sudah merambah ke mana-mana. Tidak cuma di dunia iklan dan keperluan sehari-hari, tapi juga dunia dongeng! Arbain Rambey
Wednesday, March 30, 2011
Movies : Husk 2011 R1 NTSC DVDR-CME
Husk 2011 R1 NTSC DVDR-CME
IMDB Info
Language: English
83 mins | DVD/R | 48.0 KHz | 4.47 GB
Genre: Horror
A group of friends stranded near a desolate cornfield find shelter in an old farmhouse, though they soon discover the dwelling is the center of a supernatural ritual.
http://www.filesonic.com/file/418872444/Hu...-CME.part01.rar
http://www.filesonic.com/file/418873134/Hu...-CME.part02.rar
http://www.filesonic.com/file/418868154/Hu...-CME.part03.rar
http://www.filesonic.com/file/418872494/Hu...-CME.part04.rar
http://www.filesonic.com/file/418876614/Hu...-CME.part05.rar
http://www.filesonic.com/file/418876654/Hu...-CME.part06.rar
http://www.filesonic.com/file/418876764/Hu...-CME.part07.rar
http://www.filesonic.com/file/418828214/Hu...-CME.part08.rar
http://www.filesonic.com/file/418818884/Hu...-CME.part09.rar
http://www.filesonic.com/file/418818764/Hu...-CME.part10.rar
http://www.filesonic.com/file/418818924/Hu...-CME.part11.rar
Mirror:
Download - FileServe
http://www.fileserve.com/file/b9yEnmU/Husk...-CME.part01.rar
http://www.fileserve.com/file/PzW5sVU/Husk...-CME.part02.rar
http://www.fileserve.com/file/urruVKT/Husk...-CME.part03.rar
http://www.fileserve.com/file/TKTNMfM/Husk...-CME.part04.rar
http://www.fileserve.com/file/bu42Zx7/Husk...-CME.part05.rar
http://www.fileserve.com/file/JpyQ2mD/Husk...-CME.part06.rar
http://www.fileserve.com/file/rQjFnHb/Husk...-CME.part07.rar
http://www.fileserve.com/file/5jawnZ8/Husk...-CME.part08.rar
http://www.fileserve.com/file/7b2BR7H/Husk...-CME.part09.rar
http://www.fileserve.com/file/rT4TYTd/Husk...-CME.part10.rar
http://www.fileserve.com/file/VtPD9JM/Husk...-CME.part11.rar
Mirror:
Download - UserShare
http://www.usershare.net/a5xtpuxs7658/Husk...-CME.part01.rar
http://www.usershare.net/zj14bvavsjwc/Husk...-CME.part02.rar
http://www.usershare.net/9xdgpga4ip0g/Husk...-CME.part03.rar
http://www.usershare.net/qiql5q3pzpn1/Husk...-CME.part04.rar
http://www.usershare.net/4gccwhxnf3j6/Husk...-CME.part05.rar
http://www.usershare.net/26jnk3aigvh5/Husk...-CME.part06.rar
http://www.usershare.net/j3sc07bp5u4a/Husk...-CME.part07.rar
http://www.usershare.net/uok09rexxi8q/Husk...-CME.part08.rar
http://www.usershare.net/ofpmj1m5sv82/Husk...-CME.part09.rar
http://www.usershare.net/5dyumvg11nq4/Husk...-CME.part10.rar
http://www.usershare.net/ruh8nv2maff5/Husk...-CME.part11.rar
Identifying App Installations
[The contents of this post grew out of an internal discussion featuring many of the usual suspects who’ve been authors in this space. — Tim Bray]
In the Android group, from time to time we hear complaints from developers about problems they’re having coming up with reliable, stable, unique device identifiers. This worries us, because we think that tracking such identifiers isn’t a good idea, and that there are better ways to achieve developers’ goals.
Tracking Installations
It is very common, and perfectly reasonable, for a developer to want to track individual installations of their apps. It sounds plausible just to call TelephonyManager.getDeviceId() and use that value to identify the installation. There are problems with this: First, it doesn’t work reliably (see below). Second, when it does work, that value survives device wipes (“Factory resets”) and thus you could end up making a nasty mistake when one of your customers wipes their device and passes it on to another person.
To track installations, you could for example use a UUID as an identifier, and simply create a new one the first time an app runs after installation. Here is a sketch of a class named “Installation” with one static method Installation.id(Context context)
. You could imagine writing more installation-specific data into the INSTALLATION
file.
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
Identifying Devices
Suppose you feel that for the needs of your application, you need an actual hardware device identifier. This turns out to be a tricky problem.
In the past, when every Android device was a phone, things were simpler: TelephonyManager.getDeviceId()
is required to return (depending on the network technology) the IMEI, MEID, or ESN of the phone, which is unique to that piece of hardware.
However, there are problems with this approach:
Non-phones: Wifi-only devices or music players that don’t have telephony hardware just don’t have this kind of unique identifier.
Persistence: On devices which do have this, it persists across device data wipes and factory resets. It’s not clear at all if, in this situation, your app should regard this as the same device.
Privilege:It requires READ_PHONE_STATE permission, which is irritating if you don’t otherwise use or need telephony.
Bugs: We have seen a few instances of production phones for which the implementation is buggy and returns garbage, for example zeros or asterisks.
Mac Address
It may be possible to retrieve a Mac address from a device’s WiFi or Bluetooth hardware. We do not recommend using this as a unique identifier. To start with, not all devices have WiFi. Also, if the WiFi is not turned on, the hardware may not report the Mac address.
Serial Number
Since Android 2.3 (“Gingerbread”) this is available via android.os.Build.SERIAL. Devices without telephony are required to report a unique device ID here; some phones may do so also.
ANDROID_ID
More specifically, Settings.Secure.ANDROID_ID. This is a 64-bit quantity that is generated and stored when the device first boots. It is reset when the device is wiped.
ANDROID_ID seems a good choice for a unique device identifier. There are downsides: First, it is not 100% reliable on releases of Android prior to 2.2 (“Froyo”). Also, there has been at least one widely-observed bug in a popular handset from a major manufacturer, where every instance has the same ANDROID_ID.
Conclusion
For the vast majority of applications, the requirement is to identify a particular installation, not a physical device. Fortunately, doing so is straightforward.
There are many good reasons for avoiding the attempt to identify a particular device. For those who want to try, the best approach is probably the use of ANDROID_ID on anything reasonably modern, with some fallback heuristics for legacy devices.
HTC HD2 Apps: SciLor's GrooveDownloaderWM Alpha v9
Download any MP3 file from the Grooveshark(tm) network straight to your phone, FREE!
How to use:
1) Simply search by song or artist name.
2) Select the files you want to download.
3) Add them to the download queue.
4) Start Downloading your free MP3's !
This new version also lets you search and download the most popular music with one click!
All MP3 files are saved in your storage card in this folder:
Storage Card\Program Files\SciLor's GrooveDownloaderWM\Downloads\
Requirements: Microsoft .NET CF 3.5
Download This HD2 App Here:
|
Tuesday, March 29, 2011
In-app Billing Launched on Android Market
[This post is by Eric Chu, Android Developer Ecosystem. —Dirk Dougherty]
Today, we're pleased to announce the launch of Android Market In-app Billing to developers and users. As an Android developer, you will now be able to publish apps that use In-app Billing and your users can make purchases from within your apps.
In-app Billing gives you more ways to monetize your apps with try-and-buy, virtual goods, upgrades, and other billing models. If you aren’t yet familiar with In-app Billing, we encourage you to learn more about it.
Several apps launching today are already using the service, including Tap Tap Revenge by Disney Mobile; Comics by ComiXology; Gun Bros, Deer Hunter Challenge HD, and WSOP3 by Glu Mobile; and Dungeon Defenders: FW Deluxe by Trendy Entertainment.
To try In-app Billing in your apps, start with the detailed documentation and complete sample app provided, which show how to implement the service in your app, set up in-app product lists in Android Market, and test your implementation. Also, it’s absolutely essential that you review the security guidelines to make sure your billing implementation is secure.
We look forward to seeing how you’ll use this new service in your apps!
Saturday, March 26, 2011
ASUS U31JG-A1 Full Review
- 13.3-inch 720p (1366x768) glossy display with LED backlighting
- Windows 7 Home Premium 64-bit
- Intel Core i3-380M dual-core processor (2.53GHz, 3MB L2, 4.8GT/s QPI, 35W TDP)
- Intel HM55 chipset
- Switchable graphics via Nvidia Optimus technology:
- Nvidia GeForce GT 415M 1GB
- Integrated Intel HD graphics
- 4GB DDR3-1066 dual-channel RAM (2x 2GB)
- 500GB 5400RPM Seagate hard drive (ST9500325AS)
- Realtek RTL8191SE 802.11n wireless LAN
- No internal optical drive
- 2-year global limited warranty w/ 1 year accidental damage coverage
- 8-cell battery (14.4V, 5800mAh, 83Wh)
- Weight: 3.74 lbs.
- Dimensions: 13.1 x 9.3 x 1.14 inches
- MSRP: $849
The U31JG has a moderately attractive two-tone exterior. The silver trim wrapping around the chassis is a nice touch. ASUS made the unfortunate decision to use glossy plastic for the keyboard and screen surrounds; it looks good only in pictures. In real life, it smudges up too fast and is a chore to keep clean.
The U31JG's chassis is made of plastic. Overall build quality is about average for a consumer notebook; the chassis exhibits moderate flex when twisted by the corners. The palm rest and keyboard surround area tend to cave inwards when pressed down upon, though not alarmingly so. The palm rest is not actually made of aluminum; alas it is only lookalike plastic.
One positive aspect of the U31JG's design is the relative lack of LED lights; using this machine in the dark is not distracting. Although that's a nice feature, I wish ASUS had included dedicated volume control buttons.
Ports and Features
The port selection on the U31JG is quite basic, the only notable inclusion being HDMI for connection to HDTVs and projectors. It lacks ExpressCard, USB 3.0, DisplayPort, and eSATA. All picture descriptions are left to right.
Front: Speakers
Back: Battery pack
Left: Kensington Lock slot, AC power, cooling exhaust vent, USB 2.0, microphone and headphone jacks
Right: 2x USB 2.0, HDMI, 4-in-1 card reader, Ethernet, VGA
Apple iPod Nano (5th Gen.)
Apple iPod Nano (5th Gen.)
The Apple iPod Nano was been one of the leading MP3 players in the world for quite a while. It’s light weight, compact and has a sleek design which makes the portable aspect very nice. Probably for that very reason this has become a popular MP3 player to people who want something for on the go. After only about a year, it seems Apple decided to move on from the fourth generation Nano and brought out the latest fifth generation. The back to back releases sort of make sense because the fifth generation is almost the same as the forth. It seems like they basically just added a few little goodies to boost sales with the “new” factor. Although it may make been just a marketing tactic, there are some decent new additions.
One more minute addition is the fitness program. It’s basically just a pedometer unless you get the Nike + iPod Sport Kit to go with it. If this is important to you than the extra kit is essential since knowing how many steps you take isn’t the most useful information. With a few more numbers and some quick math it could but those other numbers like distance walked, aren’t available without the Nike kit. The other thing is that the pedometer works based off the accelerometer which means when it gets jostled it reads as a step. With all the potential jostling of everyday life, many are skeptical to how accurate it can be.
The final major point we’d like to mention is the video recording. This feature probably doesn’t deserve the hype that Apple gave it. The video quality is equal to that of the camera on your cell phone. That is basically what it is except that it can’t take still frames like your phone can. If your cell phone is one of the rare ones that doesn’t have a camera yet or you don’t take your phone with you always but you do take your iPod, then the video could be nice. For most thought that isn’t the case so it’s a feature that ends up not being used. Another downside to this camera is the location of it. It sits right where most people would naturally hold the thing to shoot video or do anything else on it. Not one of Apple’s most brilliant moments.
Thursday, March 24, 2011
In-App Billing on Android Market: Ready for Testing
[This post is by Eric Chu, Android Developer Ecosystem. —Dirk Dougherty]
Back in January we announced our plan to introduce Android Market In-app Billing this quarter. We're pleased to let you know that we will be launching In-app Billing next week.
In preparation for the launch, we are opening up Android Market for upload and end-to-end testing of your apps that use In-app Billing. You can now upload your apps to the Developer Console, create a catalog of in-app products, and set prices for them. You can then set up accounts to test in-app purchases. During these test transactions, the In-app Billing service interacts with your app exactly as it will for actual users and live transactions.
Note that although you can upload apps during this test development phase, you won’t be able to actually publish the apps to users until the full launch of the service next week.
To get you started, we’ve updated the developer documentation with information about how to set up product lists and test your in-app products. Also, it is absolutely essential that you review the security guidelines to make sure your billing implementation is secure.
We encourage you start uploading and testing your apps right away.
Color Buys Color.com ($350,000) and Colour.com (?) For Sharing your Photos Publicly.
Looks alike early adopters, adopters and venture capitalists are going crazy over color (coulour, I will get to that in abit), a new location based photo, video sharing service that started yesterday.
Color uses mobile apps in iPhone and Android (so far) to snap and share photos in a particular location, automatically with others. The others is decided by color, not you. So make sure you do not send up private photos.
Color in itself is a very simple to use as is the idea. There is no setup, you download the app and run it, enter your name, take a photo of yourself (or your dog) and you are good to go.
Your photos sent via color get associated with other users based on your location activity etc. Like if you are at a concert, and if many people start sending photos from the concert, color will create a group album from the photos everyone send in from that event. Color can dig a little deep in to information by taking into account the content of your pictures, the orientation of your device in relation to other devices using the service and similar signals.
The surprise is in the funding, they got $41 Million even before they set foot in the public. Color also spent closer to $500,000 securing the color.com and colour.com, more than many startups dream of earning in their life time. Color them up clour, please make mine green.
Color.com
Keep Your PBX in a Flash ( PIAF ) Running During An Internet Outage!
If you experienced PIAF server was not able to route any calls after losing your Internet connection, even between local extensions Ward Mundy just Tweeted how we could avoid this.
The solution is to run a Bind DNS Caching Server running on your PIAF box to keep it going with an Internet outage. If you decided to use this solution, and if you are using FDQNs on your phones, the primary DNS server address must internal or external IP address of your server, where your phones are attached.
Ward Mundy, on the PIAF forum, has provided a simple script to run on your server and a set of files to get everything setup properly like ROOT server information and forwarding DNS queries to Google DNS servers.. The script is not shell script so you will have to run each line by themselves. (You can convert it into a shell script, if you have many PIAF servers running.)
After logging into your server with root capability (root or a sudo account) run the following code at the end of the article. Once you run the code and satisfied that everything is fine, run a dig command (e.g. dig inbound1.vitelity.net) for each of the FQDNs of your SIP trunk providers! This will cache the DNS information on your server to be used when the need arises. You can find the info with FreePBX: Tools, Asterisk Info, SIP Info, SIP Registry. Happy calling;
yum -y install bind*
cd /var/named
service named stop
wget http://pbxinaflash.net/source/bind/bind.tgz
tar zxvf bind.tgz
rm bind.tgz
echo nameserver 127.0.0.1 > /etc/resolv.conf
sed -i 's|$nameserver|127.0.0.1|' /sbin/dhclient-script
service named start
service network restart
dig pbxinaflash.com
dig pbxinaflash.com
# look at the output for the second dig command issued above
# 2d dig command should show a very short DNS lookup time, e.g.
#;; Query time: 1 msec
#;; SERVER: 127.0.0.1#53(127.0.0.1)
# IF ALL IS WELL...
#be sure to set named for auto start on bootup
chkconfig named on --level 2345
chkconfig --list named
# named should be configured to start with RunLevels 2,3,4,5
Memory Analysis for Android Applications
[This post is by Patrick Dubroy, an Android engineer who writes about programming, usability, and interaction on his personal blog. — Tim Bray]
The Dalvik runtime may be garbage-collected, but that doesn't mean you can ignore memory management. You should be especially mindful of memory usage on mobile devices, where memory is more constrained. In this article, we're going to take a look at some of the memory profiling tools in the Android SDK that can help you trim your application's memory usage.
Some memory usage problems are obvious. For example, if your app leaks memory every time the user touches the screen, it will probably trigger an OutOfMemoryError
eventually and crash your app. Other problems are more subtle, and may just degrade the performance of both your app (as garbage collections are more frequent and take longer) and the entire system.
Tools of the trade
The Android SDK provides two main ways of profiling the memory usage of an app: the Allocation Tracker tab in DDMS, and heap dumps. The Allocation Tracker is useful when you want to get a sense of what kinds of allocation are happening over a given time period, but it doesn't give you any information about the overall state of your application's heap. For more information about the Allocation Tracker, see the article on Tracking Memory Allocations. The rest of this article will focus on heap dumps, which are a more powerful memory analysis tool.
A heap dump is a snapshot of an application's heap, which is stored in a binary format called HPROF. Dalvik uses a format that is similar, but not identical, to the HPROF tool in Java. There are a few ways to generate a heap dump of a running Android app. One way is to use the Dump HPROF file button in DDMS. If you need to be more precise about when the dump is created, you can also create a heap dump programmatically by using the android.os.Debug.dumpHprofData()
function.
To analyze a heap dump, you can use a standard tool like jhat or the Eclipse Memory Analyzer (MAT). However, first you'll need to convert the .hprof file from the Dalvik format to the J2SE HPROF format. You can do this using the hprof-conv
tool provided in the Android SDK. For example:
hprof-conv dump.hprof converted-dump.hprof
Example: Debugging a memory leak
In the Dalvik runtime, the programmer doesn't explicitly allocate and free memory, so you can't really leak memory like you can in languages like C and C++. A "memory leak" in your code is when you keep a reference to an object that is no longer needed. Sometimes a single reference can prevent a large set of objects from being garbage collected.
Let's walk through an example using the Honeycomb Gallery sample app from the Android SDK. It's a simple photo gallery application that demonstrates how to use some of the new Honeycomb APIs. (To build and download the sample code, see the instructions.) We're going to deliberately add a memory leak to this app in order to demonstrate how it could be debugged.
Imagine that we want to modify this app to pull images from the network. In order to make it more responsive, we might decide to implement a cache which holds recently-viewed images. We can do that by making a few small changes to ContentFragment.java. At the top of the class, let's add a new static variable:
private static HashMap<String,Bitmap> sBitmapCache = new HashMap<String,Bitmap>();
This is where we'll cache the Bitmaps that we load. Now we can change the updateContentAndRecycleBitmap()
method to check the cache before loading, and to add Bitmaps to the cache after they're loaded.
void updateContentAndRecycleBitmap(int category, int position) {
if (mCurrentActionMode != null) {
mCurrentActionMode.finish();
}
// Get the bitmap that needs to be drawn and update the ImageView.
// Check if the Bitmap is already in the cache
String bitmapId = "" + category + "." + position;
mBitmap = sBitmapCache.get(bitmapId);
if (mBitmap == null) {
// It's not in the cache, so load the Bitmap and add it to the cache.
// DANGER! We add items to this cache without ever removing any.
mBitmap = Directory.getCategory(category).getEntry(position)
.getBitmap(getResources());
sBitmapCache.put(bitmapId, mBitmap);
}
((ImageView) getView().findViewById(R.id.image)).setImageBitmap(mBitmap);
}
I've deliberately introduced a memory leak here: we add Bitmaps to the cache without ever removing them. In a real app, we'd probably want to limit the size of the cache in some way.
Examining heap usage in DDMS
The Dalvik Debug Monitor Server (DDMS) is one of the primary Android debugging tools. DDMS is part of the ADT Eclipse plug-in, and a standalone version can also be found in the tools/
directory of the Android SDK. For more information on DDMS, see Using DDMS.
Let's use DDMS to examine the heap usage of this app. You can start up DDMS in one of two ways:
- from Eclipse: click Window > Open Perspective > Other... > DDMS
- or from the command line: run
ddms
(or./ddms
on Mac/Linux) in thetools/
directory
Select the process com.example.android.hcgallery
in the left pane, and then click the Show heap updates button in the toolbar. Then, switch to the VM Heap tab in DDMS. It shows some basic stats about our heap memory usage, updated after every GC. To see the first update, click the Cause GC button.
We can see that our live set (the Allocated column) is a little over 8MB. Now flip through the photos, and watch that number go up. Since there are only 13 photos in this app, the amount of memory we leak is bounded. In some ways, this is the worst kind of leak to have, because we never get an OutOfMemoryError
indicating that we are leaking.
Creating a heap dump
Let's use a heap dump to track down the problem. Click the Dump HPROF file button in the DDMS toolbar, choose where you want to save the file, and then run hprof-conv
on it. In this example, I'll be using the standalone version of MAT (version 1.0.1), available from the MAT download site.
If you're running ADT (which includes a plug-in version of DDMS) and have MAT installed in Eclipse as well, clicking the “dump HPROF” button will automatically do the conversion (using hprof-conv) and open the converted hprof file into Eclipse (which will be opened by MAT).
Analyzing heap dumps using MAT
Start up MAT and load the converted HPROF file we just created. MAT is a powerful tool, and it's beyond the scope of this article to explain all it's features, so I'm just going to show you one way you can use it to detect a leak: the Histogram view. The Histogram view shows a list of classes sortable by the number of instances, the shallow heap (total amount of memory used by all instances), or the retained heap (total amount of memory kept alive by all instances, including other objects that they have references to).
If we sort by shallow heap, we can see that instances of byte[]
are at the top. As of Android 3.0 (Honeycomb), the pixel data for Bitmap objects is stored in byte arrays (previously it was not stored in the Dalvik heap), and based on the size of these objects, it's a safe bet that they are the backing memory for our leaked bitmaps.
Right-click on the byte[]
class and select List Objects > with incoming references. This produces a list of all byte arrays in the heap, which we can sort based on Shallow Heap usage.
Pick one of the big objects, and drill down on it. This will show you the path from the root set to the object -- the chain of references that keeps this object alive. Lo and behold, there's our bitmap cache!
MAT can't tell us for sure that this is a leak, because it doesn't know whether these objects are needed or not -- only the programmer can do that. In this case, the cache is using a large amount of memory relative to the rest of the application, so we might consider limiting the size of the cache.
Comparing heap dumps with MAT
When debugging memory leaks, sometimes it's useful to compare the heap state at two different points in time. To do this, you'll need to create two separate HPROF files (don't forget to convert them using hprof-conv
).
Here's how you can compare two heap dumps in MAT (it's a little complicated):
- Open the first HPROF file (using File > Open Heap Dump).
- Open the Histogram view.
- In the Navigation History view (use Window > Navigation History if it's not visible), right click on histogram and select Add to Compare Basket.
- Open the second HPROF file and repeat steps 2 and 3.
- Switch to the Compare Basket view, and click Compare the Results (the red "!" icon in the top right corner of the view).
Conclusion
In this article, I've shown how the Allocation Tracker and heap dumps can give you get a better sense of your application's memory usage. I also showed how The Eclipse Memory Analyzer (MAT) can help you track down memory leaks in your app. MAT is a powerful tool, and I've only scratched the surface of what you can do with it. If you'd like to learn more, I recommend reading some of these articles:
- Memory Analyzer News: The official blog of the Eclipse MAT project
- Markus Kohler's Java Performance blog has many helpful articles, including Analysing the Memory Usage of Android Applications with the Eclipse Memory Analyzer and 10 Useful Tips for the Eclipse Memory Analyzer.
Wednesday, March 23, 2011
Are You An Digium / Asterisk Innovator?
Digium just announced that they are now accepting submissions for the 2011 Asterisk Innovation Awards! The Digium Innovation Award is designed to recognize developers, customers and partners for outstanding achievements with Asterisk that are improving business processes, overcoming technology challenges and enhancing the company’s bottom line. Digium first introduced the Innovation awards at Astricon 2006 and has been an industry wide accepted award and awaited ever since.
This is open to any and all Digium|Asterisk customers and partners world-wide with solutions that are running and in production. There is also no limits to the number of projects and you can submit as many projects as long as you remember that each project requires a separate submission.
Digium will select this year’s winner based upon a number of criteria that include:
- Your description of what makes your Asterisk-based solution innovative.
- The amount to which your solution improved processes.
- The technology challenges that were overcome to achieve your goal.
- The size or breadth of your solution.
- The measurable ROI and competitive advantages generated by project.
- The things that can be achieved with the solution today that couldn’t be previously accomplished.
- The creativity demonstrated in the implementation of the project
- The overall presentation of your solution
- Hotel accommodations (2 nights) and airfare for one
- Presentation of the award with a profile of your company in the AstriCon Conference General session
- Congratulatory press release from Digium, Inc.
- Listing on the Digium Web site
- Chance to highlight the accomplishments of you and your team
- Recognition by your industry, friends and family
http://www.asterisk.org/innovation
Submissions are due by August 1, 2011 and winners will be announced at Astricon, 2011.
Switching To Gmail As Easy As Walking Away!
We all know the benefits of using GMail (We have switched to GMail and other Google services like Google Docs for our work at DiorDna Group now.) and switching from other email providers are becoming much easier.
Almost two years ago, GMail told us how to switch from other providers like AOL or Hotmail. With all the services GMail providing now like easy and free calling and receiving calls from Google Voice it is really beneficial to switch over to GMail.
But the GMail team has thought about all the contacts and mail you have accumulated over the years in your previous accounts. So the team continue to add new email providers to the list you can import contacts and email from. There are 14 new providers in the list of supported email providers:
- aol.com.br
- hotmail.es
- hotmail.it
- hotmail.co.jp
- Kimo.com
- live.jp
- yahoo.es
- yahoo.cn
- yahoo.com.cn
- yahoo.com.hk
- yahoo.com.sg
- yahoo.com.tw
- yahoo.co.jp
- yahoo.it
Switch to Gmail - Official Gmail Blog
Octasic’s Vocallo MGW Multi-Core Processor Selected For OpenVox’ DE430P solution
Joyce Radnor or Bree Bolognese
SVM Public Relations
+1-617-787-5192 or +1-760-754-7025
joyce.radnor@svmpr.com or bree.bolognese@svmpr.com
A Sprint In Your Google Voice, Or Vise Versa.
Yesterday we wrote about Google Nexus S 4G on Sprint with integrated Google Voice. I was so excited about the Nexus S 4G, I almost did not pay attention to the Google Voice part of it. By reading a Post on Googleblog (Cross-posted from the Google Voice Blog) explains to process in bit more depth.
Google Voice has come a long way since the Grand Central days, where I got my feet wet with what is now Google Voice.
Google Voice already comes in as mobile versions and you can use it with your existing numbers or as of lately, you can even port your mobile number to the Google Voice. By doing so means one can make the mobile number you’ve always used your Google Voice number, so it can ring any phone or computer you want.
So obviously the next step is to work with Carriers to integrate Google Voice with mobile phones. If you remember the AT&T / iPhone / Google Voice fiasco, you will understand how short sighted some carriers are. They even went as far as complaining to FCC about how bad Google Voice for not connecting to spam numbers! But then again, there are others who see the light early on, like Sprint.
Sprint customers will be the first in line to be able to do so. So now Sprint customers who uses Google Voice, will be able to use their mobile number as their Google Voice number.
This means a lot to Sprint customers as they can have all the benefits of Google Voice without having to port or change their numbers.
Additionally if so desired, Google Voice users can replace Sprint number with Google Voice number when making calls or sending TEXT messages from their Sprint phone.
In both the above cases, Google Voice will assume the tasks of Sprint Voicemail allowing Sprint customers to receive transcribed voicemail as email or TEXT messages. Another benefit is the International calls at low rates. International calls made from Google Voice users’ Sprint phones will be connected by Google Voice at Google's very low rates.
Also all other feature of Google Voice, like call recording, blocking unwanted calls, and personalized voicemail greetings based on the callers number, will be available to users.
These benefits will be avilable to Sprint users in the USA and will gradually be availble to all Google Voice users. Check your Google Voice account.
To learn more please visit google.com/voice/sprint.
Official Google Blog: Sprint integrates Google Voice
Design Behind Android Renderscript .. Renderscript Part 2
If you were interested in the earlier article about the native Android Renderscript API, introduced to us by Google engineer, Jason Sams, you will be delighted to know that Jason has followed up with even better part two of the subject loaded with theories and examples.
The new article focuses on how the Renderscript was designed, Portability, Performance and Usability were the main objectives. Jason explains why C99 was selected as the base for the Renderscript and how 'compute' offloading of data processing from Dalvik code to Renderscript code.
I have not tried the examples yet but I will do as soon as I find some time, just to understand the graphics processing with Renderscript.
Follow the link below for the original article on Android developers blog
Android Developers Blog: Renderscript Part 2
Tuesday, March 22, 2011
Samsung GALAXY Tab 10.1 and GALAXY Tab 8.9, Tablets Unveiled (Including Pricing) Yet More iPad2 Challengers
- Galaxy Tab 10.1 WiFi-only 16GB: $499, available June 8th
- Galaxy Tab 10.1 WiFi-only 32GB: $599, available June 8th
- Galaxy Tab 8.9 WiFi-only 16GB: $469, available "early summer"
- Galaxy Tab 8.9 WiFi-only 32GB: $569, available "early summer"
Tablet Specs;
Network | HSPA+ 21Mbps 850/900/1900/2100 EDGE/GPRS 850/900/1800/1900 |
---|---|
OS | Android™ 3.0 (Honeycomb) |
Display | 10.1" WXGA 1280x800 |
Processor | 1GHz Dual Core application processor |
Camera | Main(Rear) : 3.0-Mega Pixel Camera AF with LED Flash Front : 2.0-Mega Pixel Camera |
Video | Format : MPEG4/H263/H264,Divx/Xvid Playback : 1080p Full HD Video @ 30fps Recording : 720p HD Video |
Audio | MP3, AAC, AAC+, eAAC+, OGG, MIDI, AMR-NB/WB 3.5mm Ear Jack, Surround Sound Stereo Speakers |
Enterprise Solutions | Microsoft Exchange ActiveSync |
Quickoffice HD Editor | |
Value-added Features | Android Market™ |
Google Mobile Services : Google™ Talk Video Chat, Google™ Maps, Books, etc. | |
Samsung TouchWiz UX | |
Samsung Mini Apps Tray | |
Social Hub, Music Hub, Readers Hub *Availability differs by region | |
Adobe Flash Player 10.2 | |
Connectivity | Bluetooth® technology v 2.1 + EDR USB 2.0 WiFi 802.11 (a/b/g/n) |
Sensor | Gyroscope, Accelerometer, Digital Compass, Ambient Light sensor |
Memory | 16G / 32G / 64G, microSD (up to 32GB) |
*Size | 256.6 x 172.9 x 8.6 mm, 595g |
Battery | 6800mAh |
Network | HSPA+ 21Mbps 850/900/1900/2100 EDGE/GPRS 850/900/1800/1900 |
---|---|
OS | Android™ 3.0 (Honeycomb) |
Display | 8.9" WXGA 1280x800 |
Processor | 1GHz Dual Core application processor |
Camera | Main(Rear) : 3.0-Mega Pixel Camera AF with LED Flash Front : 2.0-Mega Pixel Camera |
Video | Format : MPEG4/H263/H264, Divx/Xvid Playback : 1080p Full HD Video @ 30fps Recording : 720p HD Video |
Audio | MP3, AAC, AAC+, eAAC+, OGG, MIDI, AMR-NB/WB 3.5mm Ear Jack, Stereo Speaker |
Enterprise Solutions | Microsoft Exchange ActiveSync |
Quickoffice HD Editor | |
Value-added Features | Android Market™ |
Google Mobile Services : Google™ Talk Video Chat, Google™ Maps, Books, etc | |
Samsung TouchWiz UX | |
Samsung Mini Apps Tray | |
Social Hub, Music Hub, Readers Hub *Availability differs by region | |
Adobe Flash Player 10.2 | |
Connectivity | Bluetooth® technology v 3.0 USB 2.0 WiFi 802.11 (a/b/g/n) |
Sensor | Gyroscope, Accelerometer, Digital Compass, Ambient Light sensor |
Memory | 16G / 32G / 64G, microSD (up to 32GB) |
*Size | 230.9 x 157.8 x 8.6 mm, 470g |
Battery | 6000mAh |