GDCLUSTER A GENERAL DECENTRALIZED CLUSTERING ALGORITHM

In many popular applications like peer-to-peer systems, large amounts of data are distributed among multiple sources. Analysis of this data and identifying clusters is challenging due to processing, storage, and transmission costs. In this paper, we propose GDCluster, a general fully decentralized clustering method, which is capable of clustering dynamic and distributed data sets. Nodes continuously cooperate through decentralized gossip-based communication to maintain summarized views of the data set. We customize GDCluster for execution of the partition-based and density-based clustering methods on the summarized views, and also offer enhancements to the basic algorithm. Coping with dynamic data is made possible by gradually adapting the clustering model. Our experimental evaluations show that GDCluster can discover the clusters efficiently with scalable transmission cost, and also expose its supremacy in comparison to the popular method LSP2P.

Efficient Top-k Retrieval on Massive Data

Top-k query is an important operation to return a set of interesting points in a potentially huge data space. It is analyzed in this paper that the existing algorithms cannot process top-k query on massive data efficiently. This paper proposes a novel table-scan-based T2S algorithm to efficiently compute top-k results on massive data. T2S first constructs the presorted table, whose tuples are arranged in the order of the round-robin retrieval on the sorted lists. T2S maintains only fixed number of tuples to compute results. The early termination checking for T2S is presented in this paper, along with the analysis of scan depth. The selective retrieval is devised to skip the tuples in the presorted table which are not top-k results. The theoretical analysis proves that selective retrieval can reduce the number of the retrieved tuples significantly. The construction and incremental-update/batch-processing methods for the used structures are proposed.

Effective Key Management in Dynamic Wireless Sensor Networks

Recently, wireless sensor networks (WSNs) have been deployed for a wide variety of applications, including military sensing and tracking, patient status monitoring, traffic flow monitoring, where sensory devices often move between different locations. Securing data and communications requires suitable encryption key protocols. In this paper, we propose a certificateless-effective key management (CL-EKM) protocol for secure communication in dynamic WSNs characterized by node mobility. The CL-EKM supports efficient key updates when a node leaves or joins a cluster and ensures forward and backward key secrecy. The protocol also supports efficient key revocation for compromised nodes and minimizes the impact of a node compromise on the security of other communication links. A security analysis of our scheme shows that our protocol is effective in defending against various attacks.We implement CL-EKM in Contiki OS and simulate it using Cooja simulator to assess its time, energy, communication, and memory performance.

Discovery of Ranking Fraud for Mobile Apps

Ranking fraud in the mobile App market refers to fraudulent or deceptive activities which have a purpose of bumping up the Apps in the popularity list. Indeed, it becomes more and more frequent for App developers to use shady means, such as inflating their Apps’ sales or posting phony App ratings, to commit ranking fraud. While the importance of preventing ranking fraud has been widely recognized, there is limited understanding and research in this area. To this end, in this paper, we provide a holistic view of ranking fraud and propose a ranking fraud detection system for mobile Apps. Specifically, we first propose to accurately locate the ranking fraud by mining the active periods, namely leading sessions, of mobile Apps. Such leading sessions can be leveraged for detecting the local anomaly instead of global anomaly of App rankings. Furthermore, we investigate three types of evidences, i.e., ranking based evidences, rating based evidences and review based evidences, by modeling Apps’ ranking, rating and review behaviors through statistical hypotheses tests. In addition, we propose an optimization based aggregation method to integrate all the evidences for fraud detection.

DETECTION AND RECTIFICATION OF DISTORTED FINGERPRINTS

Elastic distortion of fingerprints is one of the major causes for false non-match. While this problem affects all fingerprint recognition applications, it is especially dangerous in negative recognition applications, such as watchlist and deduplication applications. In such applications, malicious users may purposely distort their fingerprints to evade identification. In this paper, we proposed novel algorithms to detect and rectify skin distortion based on a single fingerprint image. Distortion detection is viewed as a two-class classification problem, for which the registered ridge orientation map and period map of a fingerprint are used as the feature vector and a SVM classifier is trained to perform the classification task.

Distortion rectification (or equivalently distortion field estimation) is viewed as a regression problem, where the input is a distorted fingerprint and the output is the distortion field. To solve this problem, a database (called reference database) of various distorted reference fingerprints and corresponding distortion fields is built in the offline stage, and then in the online stage, the nearest neighbor of the input fingerprint is found in the reference database and the corresponding distortion field is used to transform the input fingerprint into a normal one. Promising results have been obtained on three databases containing many distorted fingerprints, namely FVC2004 DB1, Tsinghua Distorted Fingerprint database, and the NIST SD27 latent fingerprint database.

DATA-DRIVEN COMPOSITION FOR SERVICE-ORIENTED SITUATIONAL WEB APPLICATIONS

This paper presents a systematic data-driven approach to assisting situational application development. We first propose a technique to extract useful information from multiple sources to abstract service capabilities with set tags. This supports intuitive expression of user’s desired composition goals by simple queries, without having to know underlying technical details. A planning technique then exploits composition solutions which can constitute the desired goals, even with some potential new interesting composition opportunities. A browser-based tool facilitates visual and iterative refinement of composition solutions, to finally come up with the satisfying outputs. A series of experiments demonstrate the efficiency and effectiveness of our approach.

Data-driven composition technique for situational web applications by using tag-based semantics in to illustrate the overall life-cycle of our “compose as-you-search” composition approach, to propose the clustering technique for deriving tag-based composition semantics, and to evaluate the composition planning effectiveness, respectively. Compared with previous work, this paper is significantly updated by introducing a semi-supervised technique for clustering hierarchical tag based semantics from service documentations and human-annotated annotations. The derived semantics link service capabilities and developers’ processing goals, so that the composition is processed by planning the “Tag HyperLinks” from initialquery to the goals.

The planning algorithm is also further evaluated in terms of recommendation quality, performance, and scalability over data sets from real-world service repositories. Results show that our approach reaches satisfying precision and high-quality composition recommendations. We also demonstrate that our approach can accommodate even larger size of services than real world repositories so as to promise performance. Besides, more details of our interactive development prototyping are presented. We particularly demonstrate how the composition UI can help developers intuitively compose situational applications, and iteratively refine their goals until requirements are finally satisfied.

CONTINUOUS AND TRANSPARENT USER IDENTITY VERIFICATION FOR SECURE INTERNET SERVICES

Session management in distributed Internet services is traditionally based on username and password, explicit logouts and mechanisms of user session expiration using classic timeouts. Emerging biometric solutions allow substituting username and password with biometric data during session establishment, but in such an approach still a single verification is deemed sufficient, and the identity of a user is considered immutable during the entire session. Additionally, the length of the session timeout may impact on the usability of the service and consequent client satisfaction.

This paper explores promising alternatives offered by applying biometrics in the management of sessions. A secure protocol is defined for perpetual authentication through continuous user verification. The protocol determines adaptive timeouts based on the quality, frequency and type of biometric data transparently acquired from the user. The functional behavior of the protocol is illustrated through Matlab simulations, while model-based quantitative analysis is carried out to assess the ability of the protocol to contrast security attacks exercised by different kinds of attackers. Finally, the current prototype for PCs and Android smartphones is discussed.

Collision Tolerant and Collision Free Packet Scheduling for Underwater Acoustic Localization

To implement the system to solve the joint problem of packet scheduling and self-localization in an underwater acoustic sensor network with randomly distributed nodes. In terms of packet scheduling, our goal is to minimize the localization time, and to do so we consider two packet transmission schemes, namely a collision-free scheme (CFS), and a collision-tolerant scheme (CTS). The required localization time is formulated for these schemes, and through analytical results and numerical examples their performances are shown to be dependent on the circumstances.  When the packet duration is short (as is the case for a localization packet), the operating area is large (above 3 km in at least one dimension), and the average probability of packet-loss is not close to zero, the collision-tolerant scheme is found to require a shorter localization time.

CLOUD-BASED MULTIMEDIA CONTENT PROTECTION SYSTEM

We propose a new design for large-scale multimedia content protection systems. Our design leverages cloud infrastructures to provide cost efficiency, rapid deployment, scalability, and elasticity to accommodate varying workloads. The proposed system can be used to protect different multimedia content types, including 2-D videos, 3-D videos, images, audio clips, songs, and music clips. The system can be deployed on private and/or public clouds. Our system has two novel components: (i) method to create signatures of 3-D videos, and (ii) distributed matching engine for multimedia objects. The signature method creates robust and representative signatures of 3-D videos that capture the depth signals in these videos and it is computationally efficient to compute and compare as well as it requires small storage. The distributed matching engine achieves high scalability and it is designed to support different multimedia objects.

We implemented the proposed system and deployed it on two clouds: Amazon cloud and our private cloud. Our experiments with more than 11,000 3-D videos and 1 million images show the high accuracy and scalability of the proposed system. In addition, we compared our system to the protection system used by YouTube and our results show that the YouTube protection system fails to detect most copies of 3-D videos, while our system detects more than 98% of them. This comparison shows the need for the proposed 3-D signature method, since the state-of-the-art commercial system was not able to handle 3-D videos.

BRACER A DISTRIBUTED BROADCAST PROTOCOL IN MULTI-HOP COGNITIVE RADIO AD HOC NETWORKS

Broadcast is an important operation in wireless ad hoc networks where control information is usually propagated as broadcasts for the realization of most networking protocols. In traditional ad hoc networks, since the spectrum availability is uniform, broadcasts are delivered via a common channel which can be heard by all users in a network. However, in cognitive radio (CR) ad hoc networks, different unlicensed users may acquire different available channel sets. This non-uniform spectrum availability imposes special design challenges for broadcasting in CR ad hoc networks.

In this paper, a fully-distributed Broadcast protocol in multi-hop Cognitive Radio ad hoc networks with collision avoidance, BRACER, is proposed. In our design, we consider practical scenarios that each unlicensed user is not assumed to be aware of the global network topology, the spectrum availability information of other users, and time synchronization information. By intelligently downsizing the original available channel set and designing the broadcasting sequences and scheduling schemes, our proposed broadcast protocol can provide very high successful broadcast ratio while achieving very short average broadcast delay. It can also avoid broadcast collisions. To the best of our knowledge, this is the first work that addresses the unique broadcasting challenges in multi-hop CR ad hoc networks with collision avoidance.

A Methodology for Extracting Standing Human Bodies From Single Images

Segmentation of human bodies in images is a challenging task that can facilitate numerous applications, like scene understanding and activity recognition. In order to cope with the highly dimensional pose space, scene complexity, and various human appearances, the majority of existing works require computationally complex training and template matching processes.
We propose a bottom-up methodology for automatic extraction of human bodies from single images, in the case of almost upright poses in cluttered environments. The position, dimensions, and color of the face are used for the localization of the human body, construction of the models for the upper and lower body according to anthropometric constraints, and estimation of the skin color.
Different levels of segmentation granularity are combined to extract the pose with highest potential. The segments that belong to the human body arise through the joint estimation of the foreground and background during the body part search phases, which alleviates the need for exact shape matching. The performance of our algorithm is measured using 40 images (43 persons) from the INRIA person dataset and 163 images from the “lab1” dataset, where the measured accuracies are 89.53% and 97.68%, respectively. Qualitative and quantitative experimental results demonstrate that our methodology outperforms state-of-the-art interactive and hybrid top-down/bottom-up approaches.

Principles of navigation

Navigation between different screens and apps is a core part of the user experience. The following principles set a baseline for a consistent and intuitive user experience across apps. The Navigation component is designed to implement these principles by default, ensuring that users can apply the same heuristics and patterns in navigation as they move between apps.

Note: Even if you aren’t using the Navigation component in your project, your app should follow these design principles.

Fixed start destination

Every app you build has a fixed start destination. This is the first screen the user sees when they launch your app from the launcher. This destination is also the last screen the user sees when they return to the launcher after pressing the Back button. Let’s take a look at the Sunflower app as an example.

When launching the Sunflower app from the launcher, the first screen that a user sees is the List Screen, the list of plants in their garden. This is also the last screen they see before exiting the app. If they press the Back button from the list screen, they navigate back to the launcher.

Note: An app might have a one-time setup or series of login screens. These conditional screens should not be considered start destinations because users see these screens only in certain cases.

Navigation state is represented as a stack of destinations

When your app is first launched, a new task is created for the user, and app displays its start destination. This becomes the base destination of what is known as the back stack and is the basis for your app’s navigation state. The top of the stack is the current screen, and the previous destinations in the stack represent the history of where you’ve been. The back stack always has the start destination of the app at the bottom of the stack.

Operations that change the back stack always operate on the top of the stack, either by pushing a new destination onto the top of the stack or popping the top-most destination off the stack. Navigating to a destination pushes that destination on top of the stack.

The Navigation component manages all of your back stack ordering for you, though you can also choose to manage the back stack yourself.

Up and Back are identical within your app’s task

The Back button appears in the system navigation bar at the bottom of the screen and is used to navigate in reverse-chronological order through the history of screens the user has recently worked with. When you press the Back button, the current destination is popped off the top of the back stack, and you then navigate to the previous destination.

The Up button appears in the app bar at the top of the screen. Within your app’s task, the Up and Back buttons behave identically.

The Up button never exits your app

If a user is at the app’s start destination, then the Up button does not appear, because the Up button never exits the app. The Back button, however, is shown and does exit the app.

When your app is launched using a deep link on another app’s task, Up transitions users back to your app’s task and through a simulated back stack and not to the app that triggered the deep link. The Back button, however, does take you back to the other app.

Deep linking simulates manual navigation

Whether deep linking or manually navigating to a specific destination, you can use the Up button to navigate through destinations back to the start destination.

When deep linking to a destination within your app’s task, any existing back stack for your app’s task is removed and replaced with the deep-linked back stack.

Using the Sunflower app again as an example, let’s assume that the user had previously launched the app from the launcher screen and navigated to the detail screen for an apple. Looking at the Recents screen would indicate that a task exists with the top most screen being the detail screen for the Apple.

At this point, the user can tap the Home button to put the app in the background. Next, let’s say this app has a deep link feature that allows users to launch directly into a specific plant detail screen by name. Opening the app via this deep link completely replaces the current Sunflower back stack shown in figure 3 with a new back stack, as shown in figure 4:

Figure 4: Following a deep link replaces the existing back stack for the Sunflower app.

Notice that the Sunflower back stack is replaced by a synthetic back stack with the avocado detail screen at the top. The My Garden screen, which is the start destination, was also added to the back stack. This is important because the synthetic back stack must be realistic. It should match a back stack that could have been achieved by organically navigating through the app. The original Sunflower back stack is gone, including the app’s knowledge that the user was on the Apple details screen before.

The Navigation component supports deep linking and recreates a realistic back stack for you when linking to any destination in your navigation graph.

New Functions of PHP 5

In PHP 5 there are some new functions. Here is the list of them:

Arrays:

array_combine() – Creates an array by using one array for keys and another for its values

array_diff_uassoc() – Computes the difference of arrays with additional index check which is performed by a user supplied callback function

array_udiff() – Computes the difference of arrays by using a callback function for data comparison

array_udiff_assoc() – Computes the difference of arrays with additional index check. The data is compared by using a callback function

array_udiff_uassoc() – Computes the difference of arrays with additional index check. The data is compared by using a callback function. The index check is done by a callback function also

array_walk_recursive() – Apply a user function recursively to every member of an array

array_uintersect_assoc() – Computes the intersection of arrays with additional index check. The data is compared by using a callback function

array_uintersect_uassoc() – Computes the intersection of arrays with additional index check. Both the data and the indexes are compared by using separate callback functions

array_uintersect() – Computes the intersection of arrays. The data is compared by using a callback function

InterBase:

ibase_affected_rows() – Return the number of rows that were affected by the previous query

ibase_backup() – Initiates a backup task in the service manager and returns immediately

ibase_commit_ret() – Commit a transaction without closing it

ibase_db_info() – Request statistics about a database

ibase_drop_db() – Drops a database

ibase_errcode() – Return an error code

ibase_free_event_handler() – Cancels a registered event handler

ibase_gen_id() – Increments the named generator and returns its new value

ibase_maintain_db() – Execute a maintenance command on the database server

ibase_name_result() – Assigns a name to a result set

ibase_num_params() – Return the number of parameters in a prepared query

ibase_param_info() – Return information about a parameter in a prepared query

ibase_restore() – Initiates a restore task in the service manager and returns immediately

ibase_rollback_ret() – Rollback transaction and retain the transaction context

ibase_server_info() – Request statistics about a database server

ibase_service_attach() – Connect to the service manager

ibase_service_detach() – Disconnect from the service manager

ibase_set_event_handler() – Register a callback function to be called when events are posted

ibase_wait_event() – Wait for an event to be posted by the database

iconv:

iconv_mime_decode() – Decodes a MIME header field

iconv_mime_decode_headers() – Decodes multiple MIME header fields at once

iconv_mime_encode() – Composes a MIME header field

iconv_strlen() – Returns the character count of string

iconv_strpos() – Finds position of first occurrence of a needle within a haystack

iconv_strrpos() – Finds the last occurrence of a needle within a haystack

iconv_substr() – Cut out part of a string

Streams:

stream_copy_to_stream() – Copies data from one stream to another

stream_get_line() – Gets line from stream resource up to a given delimiter

stream_socket_accept() – Accept a connection on a socket created by stream_socket_server()

stream_socket_client() – Open Internet or Unix domain socket connection

stream_socket_get_name() – Retrieve the name of the local or remote sockets

stream_socket_recvfrom() – Receives data from a socket, connected or not

stream_socket_sendto() – Sends a message to a socket, whether it is connected or not

stream_socket_server() – Create an Internet or Unix domain server socket

Date and time related:

idate() – Format a local time/date as integer

date_sunset() – Time of sunset for a given day and location

date_sunrise() – Time of sunrise for a given day and location

time_nanosleep() – Delay for a number of seconds and nanoseconds

Strings:

str_split() – Convert a string to an array

strpbrk() – Search a string for any of a set of characters

substr_compare() – Binary safe optionally case insensitive comparison of two strings from an offset, up to length characters

Other:

convert_uudecode() – decode a uuencoded string

convert_uuencode() – uuencode a string

curl_copy_handle() – Copy a cURL handle along with all of its preferences

dba_key_split() – Splits a key in string representation into array representation

dbase_get_header_info() – Get the header info of a dBase database

dbx_fetch_row() – Fetches rows from a query-result that had the DBX_RESULT_UNBUFFERED flag set

fbsql_set_password() – Change the password for a given user

file_put_contents() – Write a string to a file

ftp_alloc() – Allocates space for a file to be uploaded

get_declared_interfaces() – Returns an array of all declared interfaces

get_headers() – Fetches all the headers sent by the server in response to a HTTP request

headers_list() – Returns a list of response headers sent (or ready to send)

http_build_query() – Generate URL-encoded query string

image_type_to_extension() – Get file extension for image-type returned by getimagesize(), exif_read_data(), exif_thumbnail(), exif_imagetype()

imagefilter() – Applies a filter to an image using custom arguments

imap_getacl() – Gets the ACL for a given mailbox

ldap_sasl_bind() – Bind to LDAP directory using SASL

mb_list_encodings() – Returns an array of all supported encodings

pcntl_getpriority() – Get the priority of any process

pcntl_wait() – Waits on or returns the status of a forked child as defined by the waitpid() system call

pg_version() – Returns an array with client, protocol and server version (when available)

php_check_syntax() – Check the syntax of the specified file

php_strip_whitespace() – Return source with stripped comments and whitespace

proc_nice() – Change the priority of the current process

pspell_config_data_dir() – Change location of language data files

pspell_config_dict_dir() – Change location of the main word list

setrawcookie() – Send a cookie without URL-encoding the value

scandir() – List files and directories inside the specified path

snmp_read_mib() – Reads and parses a MIB file into the active MIB tree

sqlite_fetch_column_types() – Return an array of column types from a particular table

International PHP Conference 2019 – Fall Edition

The International PHP Conference is the world’s first PHP conference and stands since more than a decade for top-notch pragmatic expertise in PHP and web technologies. At the IPC, internationally renowned experts from the PHP industry meet up with PHP users and developers from large and small companies. Here is the place where concepts emerge and ideas are born – the IPC signifies knowledge transfer at highest level.

All delegates of the International PHP Conference have, in addition to PHP program, free access to the entire range of the International JavaScript Conference taking place at the same time.

Basic facts:

Date: October 21 – 25, 2019

Location: Holiday Inn Munich City Centre, Munich

Highlights:

  • 60+ best practice sessions
  • 50+ international top speakers
  • PHPower: Hands-on Power Workshops
  • Expo with exciting exhibitors on October 22nd & 23rd
  • Conference Combo: Visit the International JavaScript Conference for free
  • All inclusive: Changing buffets, snacks & refreshing drinks
  • Official certificate for attendees
  • Free Swag: Developer bag, T-Shirt, magazines etc.
  • Exclusive networking events

Topics:

  • PHP Development
  • Web Development
  • JavaScript Development
  • Agile & Culture
  • DevOps
  • Architecture
  • Web Security
  • Testing & Quality

Android Studio 3.5 Beta 5 available


Android Studio 3.5 Beta 5 is now available in the Beta channel.

If you have Android Studio set up to receive updates on the Beta channel, you can get the update by choosing Help > Check for Updates (Android Studio > Check for Updates on macOS).

Fixed issues with predefined Android code styling

We fixed the underlying issues around applying the predefined Android code style for Java and XML, and it is now the default again both for IDE and project schemes. If you have local code style changes, those will be unaffected; you can always reapply the Android code style by selecting Set from > Predefined Style > Android on the Code Style settings page to reapply the defaults. (Issue #131581006)

General fixes

This update also includes fixes for the following public issues:

Core IDE

  • Issue #133666019: New Image Asset wizard (launcher / legacy) does not trim image to selected shape
  • Issue #133771451: IDE ERROR DISPLAY
  • Issue #133066328: Error preview when creating image asset > icon launcher (Preview rendering error: rendering failed – null)

Data Binding

  • Issue #131889243: Studio 3.5 deadlock (Kotlin resolve + databinding)
  • Issue #132367955: AS 3.5 Beta 1 assumes Databinding bindings are Views

Design Tools

  • Issue #133184665: Resource picker doesn’t appear when adding an attribute using Declared Attribute + button

Dexer (D8)

  • Issue #118842646: Ability to selectively suppress warnings during D8 desugaring

Gradle

  • Issue #132840182: ClassNotFoundException on API 21 or 22 device.
  • Issue #133273847: Error: Duplicate resources in gradle plugin 3.5.0-beta01 and 02

Layout Editor

  • Issue #132578769: ConstraintLayout v2.0.0-beta1: Impossible to drop element on layout with data element defined
  • Issue #133789726: GoTo navigation goes to the wrong property or doesn’t work
  • Issue #133225561: Completions does not seem to work in a newly added attribute
  • Issue #134522901: Android Studio full crash every time you undo widget rename
  • Issue #132323234: Long names don’t fit in dropdown menus for attributes and can’t be distinguished
  • Issue #133526948: attributes starting with “__removed” are showing up in the properties panel

Lint

  • Issue #131844902: DefaultJavaEvaluator.getProject sometimes returning /media for /media2/player/…MediaPlayer.java
  • Issue #111487505: Unnecessary warning for Attribute ‘importantForAutofill’ is only used in API level 26 and higher

Navigation

  • Issue #133280833: element can only be included in application manifest

Run Debug

  • Issue #134515798: Improve error reporting when ADB cannot be executed
  • Issue #131786506: IndexNotReadyException in AndroidTestRunConfiguration.getRunnerFromManifest

Shrinker (R8)

  • Issue #132549918: Using -keepparameternames has no effect
  • Issue #134304597: VerifyError: kotlinx/coroutines/AbstractCoroutine at API 17, 18
  • Issue #135210786: NoClassDefFoundError in runtime on API 19 and below when using AGP 3.5.0-beta04
  • Issue #134093979: Unsupported source file type (META-INF/versions/9/module-info.class)
  • Issue #133686361: R8 1.5 issue with Google play core library
  • Issue #134462736: R8 1.5.43 introduce again VerifyError
  • Issue #133215941: VerifyError with Android Annotations
  • Issue #133457361: AbstractMethodError when calling interface provided as Java 8 lambda with R8 on Android Gradle Plugin 3.4.1
  • Issue #132953944: java.lang.VerifyError at api19 and below
  • Issue #134838460: Add support for keep option modifier `includecode`


For information on new features and changes in all preview builds of Android Studio 3.5, see the Android Studio Preview release notes. For details of bugs fixed in each preview release, see previous entries on this blog.

We greatly appreciate your bug reports, which help us to make Android Studio better. If you encounter a problem, let us know by reporting a bug. Note that you can also vote for an existing issue to indicate that you are also affected by it.