SlideShare una empresa de Scribd logo
1 de 16
Съхранение на данни в Tizen уеб
приложения
Леон Анави
@leonanavi
leon@anavi.org
Съдържание
 Какво е Tizen?
 Tizen web applications
 Запис и четене на файлове
 Сваляне на файлове
 Web Storage
 Web SQL Database
 IndexedDB
Какво е Tizen?
 Софтуерна платформа с отворен код и Linux ядро
 Подходяща за мобилни, вградени и преносими
устройства
 Съвместима е ARM и x86 процесори
 Могат да се разработват HTML5 и native C++
приложения
2012 2013 2013
Tizen 1.0
Larkspur
Tizen 2.0
Magnolia
Tizen 3
2014
Tizen устройства
Tizen web applications
 Препоръчителен подход за създаване на apps заTizen
 Технологии: HTML, CSS, JavaScript
 Формат на инсталационните файлове wgt
 Поддържа HTML5 APIs
 Поддържа допълнителни Tizen APIs
Запис на файлове
function write(fileStream) {
try {
fileStream.write('bar');
fileStream.close();
} catch (err) {
console.log('Unable to save file: ' + err.message);
}
}
try {
documentsDir.createFile('foo.txt');
file = documentsDir.resolve('foo.txt');
file.openStream('w', write, onError);
} catch (errWrite) {
console.log('Error: ' + errWrite.message);
}
Четене на файлове
 С поток
 Като текст без поток
Подготовка
var documentsDir;
function onError(e) {
console.log('error: ' + e.message);
}
function onResolveSuccess(dir) {
documentsDir = dir;
}
tizen.filesystem.resolve('documents', onResolveSuccess, onError, 'w');
Четене на файлове с поток
function read(fileStream) {
try {
var sFileContent = fileStream.read(fileStream.bytesAvailable);
console.log('file content: ' + sFileContent);
fileStream.close();
} catch (err) {
console.log('Unable to read file: ' + err.message);
}
}
function readFile() {
try {
file = documentsDir.resolve('foo.txt');
file.openStream('r', read, onError);
} catch (err) {
console.log('Error: ' + err.message);
}
}
Четене на файлове без поток
function showFileContent(data) {
console.log(data);
}
function readFileWithoutStream() {
try {
var file = documentsDir.resolve('foo.txt');
file.readAsText(showFileContent, onError);
} catch (err) {
console.log('Error:' + err.message);
}
}
Сваляне на файлове
var listener = {
onprogress: function(id, receivedSize, totalSize) { /* … */ },
onpaused: function(id) { /* … */ },
oncanceled: function(id) { /* … */ },
oncompleted: function(id, sFullPath) { /* … */ },
onfailed: function(id, error) { /* … */ },
};
var downloadRequest = new tizen.DownloadRequest(
"http://tuxcon.mobi/themes/yellow-swan/img/Tux.png", "images");
var nDownloadId = tizen.download.start(downloadRequest, listener);
tizen.download.pause(nDownloadImageId);
tizen.download.resume(nDownloadImageId);
Web Storage
 Session storage
 Local storage
//Запаметяване на стойност bar за ключ foo.
localStorage.setStorage('foo', 'bar');
//Прочитане на стойността на foo
var foo = localStorage.getItem('foo');
Web SQL Database
 SQL база от данни, която е базира на SQL Lite
 Поддържа се от Tizen
 Отпадна от HTML5 стандартите през 2010г.
Desktop Browsers
 Работи на Chrome, Opera и Safari
 Не работи на Firefox и Internet Explorer
Създаване на Web SQL DB
var db = null;
var dbVersion = 1.0;
var dbName = "TuxCon2014";
var dbDesc = "FOSS conference";
var dbSize = 1024 * 1024; //1MB
try {
db = openDatabase(dbName, dbVersion, dbDesc, dbSize);
}
catch(err) {
console.log(err.message);
}
Изпълнение на заявки
//Създаване на таблица
db.transaction(function (transaction) {
transaction.executeSql("CREATE TABLE IF NOT EXISTS
tbl (id INTEGER PRIMARY KEY, content TEXT)");
});
//Добавяне на данни
db.transaction(function (transaction) {
transaction.executeSql("INSERT INTO tbl(id, content)
VALUES (?, ?)", [1, 'foo']);
});
IndexedDB
 Усъвършенствана система за съхрание на големи
количества обекти с ключове и стойности
 Част от HTML5
 Поддържа се от всички модерни браузъри (дори и
Safari в близко бъдеще)
KEEP CALM
AND
SUPPORT
FOSS

Más contenido relacionado

Destacado (17)

Vocabulario basico web 20 español
Vocabulario basico web 20 españolVocabulario basico web 20 español
Vocabulario basico web 20 español
 
Oola k asee
Oola k aseeOola k asee
Oola k asee
 
CORREO ELECTRONICO
CORREO ELECTRONICOCORREO ELECTRONICO
CORREO ELECTRONICO
 
SEO
SEOSEO
SEO
 
Вълшебен воден хотел
Вълшебен воден хотелВълшебен воден хотел
Вълшебен воден хотел
 
Mapa
MapaMapa
Mapa
 
Lectura ritmica 2 voces este
Lectura ritmica 2 voces esteLectura ritmica 2 voces este
Lectura ritmica 2 voces este
 
Prova no planejamento 08 04-13- dra. fabiana
Prova no planejamento 08 04-13- dra. fabianaProva no planejamento 08 04-13- dra. fabiana
Prova no planejamento 08 04-13- dra. fabiana
 
27 julie 2014 jou seisoen
27 julie 2014 jou seisoen27 julie 2014 jou seisoen
27 julie 2014 jou seisoen
 
Circolare ministero lavoro 18 2014
Circolare ministero lavoro 18 2014Circolare ministero lavoro 18 2014
Circolare ministero lavoro 18 2014
 
Trabajo de recuperacion
Trabajo de recuperacionTrabajo de recuperacion
Trabajo de recuperacion
 
臟腑關係圖
臟腑關係圖臟腑關係圖
臟腑關係圖
 
Intro to bm25
Intro to bm25Intro to bm25
Intro to bm25
 
Benhhoc
BenhhocBenhhoc
Benhhoc
 
Thema 2 les 9 - haar haar
Thema 2   les 9 - haar haarThema 2   les 9 - haar haar
Thema 2 les 9 - haar haar
 
P
PP
P
 
Flemming Koch hos Aalborg Universitet
Flemming Koch hos Aalborg UniversitetFlemming Koch hos Aalborg Universitet
Flemming Koch hos Aalborg Universitet
 

Más de Leon Anavi

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Leon Anavi
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Leon Anavi
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedLeon Anavi
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Leon Anavi
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLeon Anavi
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesLeon Anavi
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware MakersLeon Anavi
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareLeon Anavi
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureLeon Anavi
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive KioskLeon Anavi
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Leon Anavi
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiLeon Anavi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Leon Anavi
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsLeon Anavi
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiLeon Anavi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareLeon Anavi
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiLeon Anavi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxLeon Anavi
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux DevicesLeon Anavi
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT BrokersLeon Anavi
 

Más de Leon Anavi (20)

Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
Screen Sharing on Raspberry Pi 5 Using VNC in Weston and Wayland with the Yoc...
 
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
Как да играем компютърни игри с Nintendo Wii Nunchuk чрез Raspberry Pi RP2040...
 
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbeddedIntegrating VNC in Weston with the Yocto Project and OpenEmbedded
Integrating VNC in Weston with the Yocto Project and OpenEmbedded
 
Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?Как да убием и последната дискета с Open Source технологии?
Как да убием и последната дискета с Open Source технологии?
 
Linux обновления с RAUC и Docker
Linux обновления с RAUC и DockerLinux обновления с RAUC и Docker
Linux обновления с RAUC и Docker
 
How to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux DevicesHow to Choose a Software Update Mechanism for Embedded Linux Devices
How to Choose a Software Update Mechanism for Embedded Linux Devices
 
Open Hardware Makers
Open Hardware MakersOpen Hardware Makers
Open Hardware Makers
 
Open Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source HardwareOpen Source Tools for Making Open Source Hardware
Open Source Tools for Making Open Source Hardware
 
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the futureA/B Linux updates with RAUC and meta-rauc-community: now & in the future
A/B Linux updates with RAUC and meta-rauc-community: now & in the future
 
Surfing on an Interactive Kiosk
Surfing on an Interactive KioskSurfing on an Interactive Kiosk
Surfing on an Interactive Kiosk
 
Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства Linux дистрибуции и софтуерни обновления за вградени устройства
Linux дистрибуции и софтуерни обновления за вградени устройства
 
Getting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry PiGetting started with AGL using a Raspberry Pi
Getting started with AGL using a Raspberry Pi
 
Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?Automotive Grade Linux on Raspberry Pi: How Does It Work?
Automotive Grade Linux on Raspberry Pi: How Does It Work?
 
Comparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation ToolsComparison of Open Source Software Home Automation Tools
Comparison of Open Source Software Home Automation Tools
 
Практични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry PiПрактични примери за device tree overlays на Raspberry Pi
Практични примери за device tree overlays на Raspberry Pi
 
The Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source HardwareThe Software Developer’s Guide to Open Source Hardware
The Software Developer’s Guide to Open Source Hardware
 
Making Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry PiMaking Open Source Hardware for Retrogaming on Raspberry Pi
Making Open Source Hardware for Retrogaming on Raspberry Pi
 
Вграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с LinuxВграждане на умни гласови асистенти в устройства с Linux
Вграждане на умни гласови асистенти в устройства с Linux
 
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 Comparison of Voice Assistant SDKs for Embedded Linux Devices Comparison of Voice Assistant SDKs for Embedded Linux Devices
Comparison of Voice Assistant SDKs for Embedded Linux Devices
 
Open Source MQTT Brokers
Open Source MQTT BrokersOpen Source MQTT Brokers
Open Source MQTT Brokers
 

TuxCon 2014: Съхранение на данни в Tizen уеб приложения

  • 1. Съхранение на данни в Tizen уеб приложения Леон Анави @leonanavi leon@anavi.org
  • 2. Съдържание  Какво е Tizen?  Tizen web applications  Запис и четене на файлове  Сваляне на файлове  Web Storage  Web SQL Database  IndexedDB
  • 3. Какво е Tizen?  Софтуерна платформа с отворен код и Linux ядро  Подходяща за мобилни, вградени и преносими устройства  Съвместима е ARM и x86 процесори  Могат да се разработват HTML5 и native C++ приложения 2012 2013 2013 Tizen 1.0 Larkspur Tizen 2.0 Magnolia Tizen 3 2014
  • 5. Tizen web applications  Препоръчителен подход за създаване на apps заTizen  Технологии: HTML, CSS, JavaScript  Формат на инсталационните файлове wgt  Поддържа HTML5 APIs  Поддържа допълнителни Tizen APIs
  • 6. Запис на файлове function write(fileStream) { try { fileStream.write('bar'); fileStream.close(); } catch (err) { console.log('Unable to save file: ' + err.message); } } try { documentsDir.createFile('foo.txt'); file = documentsDir.resolve('foo.txt'); file.openStream('w', write, onError); } catch (errWrite) { console.log('Error: ' + errWrite.message); }
  • 7. Четене на файлове  С поток  Като текст без поток Подготовка var documentsDir; function onError(e) { console.log('error: ' + e.message); } function onResolveSuccess(dir) { documentsDir = dir; } tizen.filesystem.resolve('documents', onResolveSuccess, onError, 'w');
  • 8. Четене на файлове с поток function read(fileStream) { try { var sFileContent = fileStream.read(fileStream.bytesAvailable); console.log('file content: ' + sFileContent); fileStream.close(); } catch (err) { console.log('Unable to read file: ' + err.message); } } function readFile() { try { file = documentsDir.resolve('foo.txt'); file.openStream('r', read, onError); } catch (err) { console.log('Error: ' + err.message); } }
  • 9. Четене на файлове без поток function showFileContent(data) { console.log(data); } function readFileWithoutStream() { try { var file = documentsDir.resolve('foo.txt'); file.readAsText(showFileContent, onError); } catch (err) { console.log('Error:' + err.message); } }
  • 10. Сваляне на файлове var listener = { onprogress: function(id, receivedSize, totalSize) { /* … */ }, onpaused: function(id) { /* … */ }, oncanceled: function(id) { /* … */ }, oncompleted: function(id, sFullPath) { /* … */ }, onfailed: function(id, error) { /* … */ }, }; var downloadRequest = new tizen.DownloadRequest( "http://tuxcon.mobi/themes/yellow-swan/img/Tux.png", "images"); var nDownloadId = tizen.download.start(downloadRequest, listener); tizen.download.pause(nDownloadImageId); tizen.download.resume(nDownloadImageId);
  • 11. Web Storage  Session storage  Local storage //Запаметяване на стойност bar за ключ foo. localStorage.setStorage('foo', 'bar'); //Прочитане на стойността на foo var foo = localStorage.getItem('foo');
  • 12. Web SQL Database  SQL база от данни, която е базира на SQL Lite  Поддържа се от Tizen  Отпадна от HTML5 стандартите през 2010г. Desktop Browsers  Работи на Chrome, Opera и Safari  Не работи на Firefox и Internet Explorer
  • 13. Създаване на Web SQL DB var db = null; var dbVersion = 1.0; var dbName = "TuxCon2014"; var dbDesc = "FOSS conference"; var dbSize = 1024 * 1024; //1MB try { db = openDatabase(dbName, dbVersion, dbDesc, dbSize); } catch(err) { console.log(err.message); }
  • 14. Изпълнение на заявки //Създаване на таблица db.transaction(function (transaction) { transaction.executeSql("CREATE TABLE IF NOT EXISTS tbl (id INTEGER PRIMARY KEY, content TEXT)"); }); //Добавяне на данни db.transaction(function (transaction) { transaction.executeSql("INSERT INTO tbl(id, content) VALUES (?, ?)", [1, 'foo']); });
  • 15. IndexedDB  Усъвършенствана система за съхрание на големи количества обекти с ключове и стойности  Част от HTML5  Поддържа се от всички модерни браузъри (дори и Safari в близко бъдеще)