{"id":946,"date":"2018-05-04T14:19:57","date_gmt":"2018-05-04T13:19:57","guid":{"rendered":"http:\/\/generic.wordpress.soton.ac.uk\/soparty\/?page_id=946"},"modified":"2018-05-04T14:20:09","modified_gmt":"2018-05-04T13:20:09","slug":"technical-research","status":"publish","type":"page","link":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/technical\/technical-research\/","title":{"rendered":"Technical Research"},"content":{"rendered":"<div class=\"pt-cv-wrapper\"><div class=\"pt-cv-view pt-cv-grid pt-cv-colsys\" id=\"pt-cv-view-59adf33thv\"><div data-id=\"pt-cv-page-1\" class=\"pt-cv-page\" data-cvc=\"1\"><div class=\"col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col\" ><div class='pt-cv-ifield'><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/android-or-ios\/\" class=\"_self pt-cv-href-thumbnail pt-cv-thumb-default\" target=\"_self\" ><\/a>\n<h1 class=\"pt-cv-title\"><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/android-or-ios\/\" class=\"_self\" target=\"_self\" >Android or IOS?<\/a><\/h1>\n<div class=\"pt-cv-content\"><p>We are going to develop our application SoSporty on both android and IOS. This is because both android and IOS have a large number of users. The IOS and android are two different platforms and also have their own similarities.<\/p>\n<p>Here are some comparisons of android and IOS from technical aspect.<\/p>\n<ul>\n<li>Language<\/li>\n<\/ul>\n<p>Android: Java, C<\/p>\n<p>IOS: C, OC, Swift<\/p>\n<ul>\n<li>Environment:<\/li>\n<\/ul>\n<p>Android: JDK, android SDK, Eclipse\/Studio, NDK<\/p>\n<p>IOS: Xcode<\/p>\n<ul>\n<li>Company:<\/li>\n<\/ul>\n<p>Android: Google<\/p>\n<p>IOS: Apple<\/p>\n<ul>\n<li>Design:<\/li>\n<\/ul>\n<p>Android:\u00a0easy to be changed to the preferable look<\/p>\n<p>IOS: cannot be changed, strict on customizing<\/p>\n<ul>\n<li>Online market:<\/li>\n<\/ul>\n<p>Android: Play Store and more<\/p>\n<p>IOS: Apple Store only<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"pt-cv-meta-fields\"><span class=\"entry-date\"> <time datetime=\"2018-05-04T13:41:16+01:00\">4th May 2018<\/time><\/span><span> \/ <\/span><span class=\"author\"> <a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/author\/alice\/\" rel=\"author\">Alice<\/a><\/span><span> \/ <\/span><span class=\"terms\"> <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/work\/' title='Daily Work' class='pt-cv-tax-work'>Daily Work<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/' title='Technical' class='pt-cv-tax-technical'>Technical<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/technical-research\/' title='Technical Research' class='pt-cv-tax-technical-research'>Technical Research<\/a><\/span><\/div><\/div><\/div>\n<div class=\"col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col\" ><div class='pt-cv-ifield'><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/sql-vs-nosql\/\" class=\"_self pt-cv-href-thumbnail pt-cv-thumb-default\" target=\"_self\" ><\/a>\n<h1 class=\"pt-cv-title\"><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/sql-vs-nosql\/\" class=\"_self\" target=\"_self\" >SQL vs NoSQL<\/a><\/h1>\n<div class=\"pt-cv-content\"><p>In our application SoSporty, we would like to choose relational database. In this post I will put advantages and disadvantages of SQL and NoSQL.<\/p>\n<p>SQL:<\/p>\n<ul>\n<li>Strength:<\/li>\n<\/ul>\n<ol>\n<li>Easy to understand: two-dimensional table structure is a concept very close to the logical world. Relational model is relatively easy to understand;<\/li>\n<li>Easy to use: a common SQL language makes it very convenient to operate relational database;<\/li>\n<li>Easy to maintain: rich integrity (entity integrity, referential integrity, and user-defined integrity) greatly reduces the \u00a0probability of data redundancy and data inconsistency;<\/li>\n<li>Can be used for complex queries;<\/li>\n<li>Maturity and stability;<\/li>\n<li>Good compatibility.<\/li>\n<\/ol>\n<ul>\n<li>Weakness:<\/li>\n<\/ul>\n<ol>\n<li>Its read and write performance is relatively poor;<\/li>\n<li>A fixed table structure;<\/li>\n<li>High concurrent reading and writing requirements;<\/li>\n<li>High-efficiency reading and writing of massive data.<\/li>\n<\/ol>\n<p>NoSQL:<\/p>\n<ul>\n<li>Strength:<\/li>\n<\/ul>\n<ol>\n<li>Without parsing the sql layer, read and write performance is high;<\/li>\n<li>Based on the key-value pairs, the data is not coupled, easy to expand;<\/li>\n<li>The format of stored data: NoSQL storage format is key, value form, document format, picture format, etc., while the relational database only supports the basic type;<\/li>\n<li>Relatively cheap.<\/li>\n<\/ol>\n<ul>\n<li>Weakness:<\/li>\n<\/ul>\n<ol>\n<li>Does not provide sql support and the cost of learning and use is high;<\/li>\n<li>No transaction processing, additional features such as BI support and reports are not good;<\/li>\n<li>Not mature;<\/li>\n<\/ol>\n<p>Summary: SQL database and NoSQL database both have their strengths and shortcomings. In general, the advantages of one are the disadvantages of the other. Currently, the techniques of using and maintaining NoSQL databases are relatively limited thus we choose to use relational SQL database.<\/p>\n<\/div>\n<div class=\"pt-cv-meta-fields\"><span class=\"entry-date\"> <time datetime=\"2018-05-04T10:49:29+01:00\">4th May 2018<\/time><\/span><span> \/ <\/span><span class=\"author\"> <a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/author\/alice\/\" rel=\"author\">Alice<\/a><\/span><span> \/ <\/span><span class=\"terms\"> <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/work\/' title='Daily Work' class='pt-cv-tax-work'>Daily Work<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/' title='Technical' class='pt-cv-tax-technical'>Technical<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/technical-research\/' title='Technical Research' class='pt-cv-tax-technical-research'>Technical Research<\/a><\/span><\/div><\/div><\/div>\n<div class=\"col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col\" ><div class='pt-cv-ifield'><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/several-technical-choices-in-our-software\/\" class=\"_self pt-cv-href-thumbnail pt-cv-thumb-default\" target=\"_self\" ><\/a>\n<h1 class=\"pt-cv-title\"><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/several-technical-choices-in-our-software\/\" class=\"_self\" target=\"_self\" >Several technical choices in our software<\/a><\/h1>\n<div class=\"pt-cv-content\"><p>&nbsp;<\/p>\n<p>Database: The database will be kept as a table format file in local sever, and the table will contains users&#8217; nickname, e-mail, age, etc, which should be kept safe and only can&#8217;t be shown to other users only if user chooses to do that. Also, the table of users should contain columns named &#8216;ParticipantScore&#8217; and &#8216;OrganiseScore&#8217;, which will show to other users in the profile, and this table should be changeable, cause the table data will change each time after each participants rate others after activities. (calculate the average)<\/p>\n<p>User Experience:<\/p>\n<p>We decided to have a welcome page to give users a brief introduction and direction to our app. And login button should be their to provide users an easy way to use, also, users can use google account or facebook account to login, so this two logos should just under the login button.<\/p>\n<p>We put the notification function in the user&#8217;s profile page. It will be easier for users to go through all the activities they are going to join, and the activities shown there should include time, location and chat room button. So in the technical parts, this interface should get all the data from the activity table and the link from chatroom button to chat room page should be set. Below activities table is logout button, users can logout with that.<\/p>\n<p>Continue\u2026\u2026<\/p>\n<\/div>\n<div class=\"pt-cv-meta-fields\"><span class=\"entry-date\"> <time datetime=\"2018-04-30T22:05:52+01:00\">30th April 2018<\/time><\/span><span> \/ <\/span><span class=\"author\"> <a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/author\/lin\/\" rel=\"author\">Lin<\/a><\/span><span> \/ <\/span><span class=\"terms\"> <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/work\/' title='Daily Work' class='pt-cv-tax-work'>Daily Work<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/technical-research\/' title='Technical Research' class='pt-cv-tax-technical-research'>Technical Research<\/a><\/span><\/div><\/div><\/div>\n<div class=\"col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col\" ><div class='pt-cv-ifield'><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/610-2\/\" class=\"_self pt-cv-href-thumbnail pt-cv-thumb-default\" target=\"_self\" ><\/a>\n<h1 class=\"pt-cv-title\"><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/610-2\/\" class=\"_self\" target=\"_self\" >Data storage<\/a><\/h1>\n<div class=\"pt-cv-content\"><p><strong>Data storage<\/strong><\/p>\n<p>Our approach to data storage differs according to the operating system used with our SoSporty application.<\/p>\n<p><strong>Android<\/strong> provides several options to save application data. <strong>Android<\/strong> provides 2 storage options for files \u2013 Internal and External. Internal is private to the app. External is world readable and accessible to all. External can be a partition of the internal memory or a removable storage media (like an SD card) or both.\u00a0the different data storage options available on Android are:<\/p>\n<ul>\n<li><strong>internal file storage<\/strong>: Store app-private files on the device file system.<\/li>\n<li><strong>External file storage:<\/strong> Store files on the shared external file system. This is for shared user files, such as photos and videos.<\/li>\n<li><strong>Shared preferences: <\/strong>Store private primitive data in key-value pairs.<\/li>\n<li><strong>Databases<\/strong>: Store structured data in a private database.<\/li>\n<\/ul>\n<p><strong>iOS Data Storage <\/strong>Everything in app\u2019s home directory is backed up, with the exception of the application bundle itself, the caches directory, and temp directory. Anything is Purchased is backed up as well. Because backups are done wirelessly and stored in iCloud for each user, it\u2019s best to minimize the amount of data that\u2019s stored in our app. Large files will lengthen the time it takes to perform a backup and consume more of a user\u2019s available iCloud storage. To ensure efficient as possible, app\u2019s data will be stored according to these options:<\/p>\n<ol>\n<li>Only documents and other data that is user-generated, or that cannot otherwise be recreated by the application, should be stored in the Documents directory and will be automatically backed up by iCloud.<\/li>\n<li>Data that can be downloaded again or regenerated should be stored in the Caches directory. Examples of that include database cache files and downloadable content, such as map applications.<\/li>\n<li>Data that is used only temporarily should be stored in the temporary directory. Although these files are not backed up to iCloud they should be deleted when done with them so that they do not continue to consume space on the user\u2019s\u00a0device.<\/li>\n<li>Use the attribute &#8220;do not back up&#8221; for specifying files that should remain on the device. Usable with data that can be recreated but needs to persist even in low storage situations for a proper functioning of the app or because users expect it to be available during offline use. these files do use on-device storage space, your app is responsible for monitoring and purging these files periodically.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>References<\/p>\n<p><a href=\"https:\/\/developer.android.com\/guide\/topics\/data\/data-storage\">https:\/\/developer.android.com\/guide\/topics\/data\/data-storage<\/a><\/p>\n<p><a href=\"http:\/\/codetheory.in\/android-saving-files-on-internal-and-external-storage\/\">http:\/\/codetheory.in\/android-saving-files-on-internal-and-external-storage\/<\/a><\/p>\n<p><a href=\"https:\/\/developer.apple.com\/icloud\/documentation\/data-storage\/index.html\">https:\/\/developer.apple.com\/icloud\/documentation\/data-storage\/index.html<\/a><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div class=\"pt-cv-meta-fields\"><span class=\"entry-date\"> <time datetime=\"2018-04-29T12:56:10+01:00\">29th April 2018<\/time><\/span><span> \/ <\/span><span class=\"author\"> <a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/author\/rana-shahini\/\" rel=\"author\">Rana Shahini<\/a><\/span><span> \/ <\/span><span class=\"terms\"> <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/work\/' title='Daily Work' class='pt-cv-tax-work'>Daily Work<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/' title='Technical' class='pt-cv-tax-technical'>Technical<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/technical-research\/' title='Technical Research' class='pt-cv-tax-technical-research'>Technical Research<\/a><\/span><\/div><\/div><\/div>\n<div class=\"col-md-12 col-sm-12 col-xs-12 pt-cv-content-item pt-cv-1-col\" ><div class='pt-cv-ifield'><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/the-database-used-in-sosporty\/\" class=\"_self pt-cv-href-thumbnail pt-cv-thumb-default\" target=\"_self\" ><\/a>\n<h1 class=\"pt-cv-title\"><a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/the-database-used-in-sosporty\/\" class=\"_self\" target=\"_self\" >The database used in SoSporty<\/a><\/h1>\n<div class=\"pt-cv-content\"><p style=\"text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><strong><span style=\"font-family: 'Arial',sans-serif;color: #555555\">The database used in SoSporty <\/span><\/strong><\/p>\n<p style=\"text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><span style=\"font-family: 'Arial',sans-serif;color: #555555\">There are many database systems to be used such as LevelDB and Couchbase Lite but they are compatible with android systems only. Since we are using both platforms and operating systems (android-IOS) for developing our application for the benefits and the convenience of our users. As our <strong>previous post<\/strong> mentioned. We will choose to produce and use SQLite as our database system since it is available in most mainstream programming languages. In addition, SQLite is included in both iPhone and Android operating systems. <\/span><\/p>\n<p style=\"text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><span style=\"font-family: 'Arial',sans-serif;color: #555555\">SQLite has many additional advantages since it is an open-source C library for managing relational databases that can be stored both on disk and in memory. It supports transactions, full-text search, single-writer\/multiple-reader access, efficient range queries (useful when storing <b>geographical<\/b> data), and shared <b>caching<\/b> (across connections opened by a single thread to the same database).<\/span><\/p>\n<p style=\"text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><span style=\"font-family: 'Arial',sans-serif;color: #555555\">\u00a0<\/span><\/p>\n<p style=\"text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><span style=\"font-family: 'Arial',sans-serif;color: #555555\">you can create an SQLite database on one machine and then use it on another machine with an entirely different architecture by simply copying the corresponding file. It is believed that it is \u201cthe most widely deployed SQL database\u201d.<\/span><\/p>\n<p>our database diagram is introduced in another blogpost.<\/p>\n<p style=\"margin: 0cm;margin-bottom: .0001pt;text-align: justify;line-height: 18.0pt;background: white;vertical-align: baseline\"><span style=\"font-family: 'Arial',sans-serif;color: #555555\"><a href=\"https:\/\/www.developereconomics.com\/five-popular-databases-for-mobile\">https:\/\/www.developereconomics.com\/five-popular-databases-for-mobile<\/a><\/span><\/p>\n<\/div>\n<div class=\"pt-cv-meta-fields\"><span class=\"entry-date\"> <time datetime=\"2018-04-29T11:09:15+01:00\">29th April 2018<\/time><\/span><span> \/ <\/span><span class=\"author\"> <a href=\"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/author\/rana-shahini\/\" rel=\"author\">Rana Shahini<\/a><\/span><span> \/ <\/span><span class=\"terms\"> <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/work\/' title='Daily Work' class='pt-cv-tax-work'>Daily Work<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/' title='Technical' class='pt-cv-tax-technical'>Technical<\/a>, <a href='https:\/\/generic.wordpress.soton.ac.uk\/soparty\/category\/technical\/technical-research\/' title='Technical Research' class='pt-cv-tax-technical-research'>Technical Research<\/a><\/span><\/div><\/div><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":2956,"featured_media":0,"parent":634,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"class_list":["post-946","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/P9It56-fg","_links":{"self":[{"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/pages\/946","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/users\/2956"}],"replies":[{"embeddable":true,"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/comments?post=946"}],"version-history":[{"count":1,"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/pages\/946\/revisions"}],"predecessor-version":[{"id":949,"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/pages\/946\/revisions\/949"}],"up":[{"embeddable":true,"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/pages\/634"}],"wp:attachment":[{"href":"https:\/\/generic.wordpress.soton.ac.uk\/soparty\/wp-json\/wp\/v2\/media?parent=946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}