We've been developing a video/audio player component for OpenLaszlo which works across HTML5 and Flash runtimes. We picked the jPlayer project to use as a base for this component, to leverage on their cross-platform support. jPlayer can be configured to prefer to instantiate a native HTML5 media element, and fall back to a Flash embedded object.
Safari's HTML5 media API on iOS restricts the
Monday, September 13, 2010
How To Undelete Text Messages from an iPhone
I wanted to recover some deleted text messages from my iPhone. It turns out this is marginally possible in some cases. The text messaging system in the iPhone uses the SQLite database library, and keeps text messages in a SQL table. When you delete rows, the storage in the database file will often retain at least some of the deleted message, though it will no longer be accessible to the SQL engine.
However, the raw text of the SQLite database file can be read in a text editor. Copies of the raw files themselves are accessible from your iTunes backup folder, as shown below.
1) sync your iphone to iTunes
2) make a copy of your iphone backup directory
cd /tmp cp -r "/Users/hqm/Library/Application Support/MobileSync/Backup" .
3) find the files which are SQLite databases, something like this script in bash
for i in * do echo `file $i` | grep SQLite done
To narrow down which of these files contains phone text messages, you might try grepping for a phone number you know was in the text messages
4) At this point, I just inspected these files in my favorite text editor, Emacs.
Fragments of the deleted rows are still sitting in the db file in many cases, even though you cannot access them via SQL.
I found that the phone number of the text message was usually sitting within a few characters of the content fragments, so search through the file for the phone number of the sender or recipient, and you will probably see some or all the messages that were deleted.
I use Emacs, which is a very versatile and powerful editor, that can deal with binary files which have ASCII in them fairly gracefully.
5) OPTIONALthe following is just if you are curious about the SQL schemas being used, or want to extract the non-deleted row data in a convenient way, it won't actually help view deletedSQL data
If you want to see the structure of the tables used in these SQL files, you can download the sqlite3 command line tool
The primary text message table looks like this .schema message CREATE TABLE message (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, address TEXT, date INTEGER, text TEXT, flags INTEGER, replace INTEGER, svc_center TEXT, group_id INTEGER, association_id INTEGER, height INTEGER, UIFlags INTEGER, version INTEGER, subject TEXT, country TEXT, headers BLOB, recipients BLOB, read INTEGER);
6) if you load one of the sqlite db files, and it is a text message database, you can select the content like this
new-host-8:f91c8fe610e0a45ab01b19ca0d064d3c030ba55e hqm$ sqlite3 /tmp/imsg sqlite3 /tmp/imsg SQLite version 3.6.12 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> select address,text from message; select address,text from message;
+1617622222|Im at livis +1617620227|Send me a pic of the chocolate ones +1617623387|Sure get me a size 9 of any of those
You can also download the SQLite graphical browser, to inspect the various database files, but this will NOT show you the deleted data, that data is just sitting in detached chunks in the databse file. But this is a useful way to browse a database file and see the list of tables.
The anti-aliasing of device fonts in the Flash player seems to have changed, and not for the better. Some of our OpenLaszlo developers are complaining that when they port their apps to Flash 10, the rendering of device fonts does not look as good as it did in Flash 8.
Indeed when we look at how the same text renders, in a SWF8 and SWF10 app, in the same Flash player, they are rendered differently.
The Flash 8 text has color dithering
But the same text rendered by the app when running as Flash 10 looks like this
Note that the Flash 10 rendering is grayscale only. Apparently on LCD monitors, the color dithering makes a noticable difference. Why is there no way to control it from AS3? Clearly Adobe can control how the device fonts anti-alias, so can someone explain what the purpose is of this change?
I have not been able to find a clear answer from Adobe on this. There was a reference in one thread to the grayscale dithering giving more uniform cross-platform appearance, but I don't understand how that would be the case.
I went to back up my Mac using Time Machine for the first time in a year, and it keeps failing. The Time Machine control panel gives no info whatsoever on what is failing, just said it got an error. I guess they figure that the users are too dumb to do anything about it, so they don't bother even indicating where to find more information.
I looked took a wild guess and looked in in /var/log/system.log and I see errors like this
May 8 00:09:06 badtzmaru /System/Library/CoreServices/backupd[403]: Error: (-36) SrcErr:YES Copying /Users/hqm/images/2009-01-15/MVI_0358.AVI to (null)
So, what is the matter with this file, that it chokes the backupd process??
Well, it's 962 MB, I wonder if that is too much for the thing to copy? If so, that's not really a very useful backup program...
I deleted the file, and now the backup seems to be getting further. It doesn't inspire confidence though...
I was reading about "simplex repeaters" which record a chunk of speech and then repeat it on the same frequency. It occurred to me that if people used radios that could handle digital data a little bit better, you could build a much more useful "realtime" simplex repeater.
The idea would be that as you speak, your radio collects up the audio for about, say, 300 milliseconds, and compresses it using modern voice compression and data coding, down to something which could be transmitted in a 100millisecond burst. Then it sends the data out in that burst.
The "repeater" receives these 100 millisecond bursts, and repeats them out. The people receiving have digital radios which reassemble the data into the 300 millisecond voice message, and seamlessly stitch them together.
It seems like this ought to work just fine, as long as radios can key on and off within, say, 50 milliseconds, and can tranmit data at rates of, say 19.2 kbaud or so.
Anyone done anything like this? Are there VHF radios that are set up to do digital tranmission as opposed to audio FM? Something like