Hue consists in 4 apps in a single page interface that allow the users to perform data analyses without losing any context. The goal is to promote self service and stay simple like Excel so that 80% of the user can find, explore and query data and become more data driven.
1. Find or import your data
Use the left metadata assists to browse your existing data without losing your editor. The top search will look through your saved queries and matching tables, columns and databases. Objects can be tagged for a quick retrieval or assigning a more “humane” name. If the data does not exist yet, just drag & drop it to trigger the Create Table wizard and to import it in just two steps.
2. Query your data
When you found your data, the Editor's autocomplete is extremely powerful as they support 90-100% of the language syntax and will highlight any syntax or logical error. The right assistant provides quick previews of the datasets, which columns or JOINs are popular and recommendations on how to type optimized queries. After the querying, refine your results before exporting to S3/HDFS/ADLS or downloaded as CSV/Excel.
4 applications
Each app of Hue can be extended to support your own languages or apps as detailed in the SDK.
The layout simplifies the interface and is now single page app, and this makes things snappier and unifies the apps together.
From top to bottom we have:
Learn more on the The Hue 4 user interface in detail.
The new search bar is always accessible on the top of screen, and it offers a document search and metadata search too if Hue is configured to access a metadata server like Cloudera Navigator.
Embedded Search & Tagging
Have you ever struggled to remember table names related to your project? Does it take much too long to find those columns or views? Hue now lets you easily search for any table, view, or column across all databases in the cluster. With the ability to search across tens of thousands of tables, you're able to quickly find the tables that are relevant for your needs for faster data discovery.
In addition, you can also now tag objects with names to better categorize them and group them to different projects. These tags are searchable, expediting the exploration process through easier, more intuitive discovery.
Through an integration with Cloudera Navigator, existing tags and indexed objects show up automatically in Hue, any additional tags you add appear back in Cloudera Navigator, and the familiar Cloudera Navigator search syntax is supported.
A top search bar now appears. The autocomplete offers a list of facets and prefills the top values. Pressing enter lists the available objects, which can be opened and explored further in the sample popup, the assist or directly into the table browser app.
Granular Search
By default, only tables and views are returned. To search for columns, partitions, databases use the ‘type:' filter.
Example of searches:
b
of the table web_logs
in the database default
.Learn more on the Search and Tagging.
Data where you need it when you need it
You can now find your Hue documents, HDFS and S3 files and more in the left assist panel, right-clicking items will show a list of actions, you can also drag-and-drop a file to get the path in your editor and more.
This assistant content depends on the context of the application selected and will display the current tables or available UDFs.
This popup offers a quick way to see sample of the data and other statistics on databases, tables, and columns. You can open the popup from the SQL Assist or with a right-click on any SQL object (table, column, function…). In this release, it also opens faster and caches the data.
These visualizations are convenient for plotting chronological data or when subsets of rows have the same attribute: they will be stacked together.
The goal of the importer is to allow ad hoc queries on data not yet in the clusters thereby expedite self-service analytics.
If you want to import your own data instead of installing the sample
tables, open the importer from the left menu or from the little +
in the left assist.
If you've ever struggled with creating new SQL tables from files, you'll be happy to learn that this is now much easier. The wizard has been revamped to two simple steps and also offers more formats. Now users just need to:
And that's it!
To learn more, watch the video on Data Import Wizard.
Although you can create tables by executing the appropriate Hive HQL DDL query commands, it is easier to create a table using the create table wizard.
From a File
If you've ever struggled with creating new SQL tables from files, you'll be happy to learn that this is now much easier. With the latest Hue release, you can now create these in an ad hoc way and thereby expedite self-service analytics. The wizard has been revamped to two simple steps and also offers more formats. Now users just need to:
Files can be dragged & dropped, selected from HDFS or S3 (if configured), and their formats are automatically detected. The wizard also assists when performing advanced functionalities like table partitioning, Kudu tables, and nested types.
Manually
In the past, indexing data into Solr to then explore it with a Dynamic Dashboard has been quite difficult. The task involved writing a Solr schema and a Morphlines file then submitting a job to YARN to do the indexing. Often times getting this correct for non trivial imports could take a few days of work. Now with Hue's new feature you can start your YARN indexing job in minutes. This tutorial offers a step by step guide on how to do it.
Read more about ingesting data from traditional databases.
Similarly to Google Doc, queries, workflows... can be saved and shared with other.
Sharing happens on the main page or via the top right menu of the application. Users and groups with Read or Write permissions can be selected.
Via the Home page, saved documents can be exported for backups or transferring to another Hue.
The language is automatically detected from the Browser or OS. English, Spanish, French, German, Korean, Japanese and Chinese are supported.
The language can be manual set by a user in the "My Profile" page. Please go to My Profile > Step2 Profile and Groups > Language Preference and choose the language you want.
The goal of Hue's Editor is to make data querying easy and productive.
It focuses on SQL but also supports job submissions. It comes with an intelligent autocomplete, search & tagging of data and query assistance.
The custom SQL Editor page also describes the configuration steps. Any editor can be starred
next to its name so that it becomes the default editor and the landing page when logging in.
First, in your hue.ini file, you will need to add the relevant database connection information under the librdbms section:
[librdbms] [[databases]] [[[postgresql]]] nice_name=PostgreSQL name=music engine=postgresql_psycopg2 port=5432 user=hue password=hue options={}
Secondly, we need to add a new interpreter to the notebook app. This will allow the new database type to be registered as a snippet-type in the Notebook app. For query editors that use a Django-compatible database, the name in the brackets should match the database configuration name in the librdbms section (e.g. – postgresql). The interface will be set to rdbms. This tells Hue to use the librdbms driver and corresponding connection information to connect to the database. For example, with the above postgresql connection configuration in the librdbms section, we can add a PostgreSQL interpreter with the following notebook configuration:
[notebook] [[interpreters]] [[[postgresql]]] name=PostgreSQL interface=rdbms
Note: To run a query, you must be logged in to Hue as a user that also has a Unix user account on the remote server.
If there are multiple statements in the query (separated by semi-colons), click Next in the Multi-statement query pane to execute the remaining statements.
When you have multiple statements it's enough to put the cursor in the statement you want to execute, the active statement is indicated with a blue gutter marking.
Note: Use CTRL/Cmd + ENTER to execute queries.
Note: Under the logs panel, you can view any MapReduce or Impala jobs that the query generated.
To get things started, press the export icon, the bottom last element of the action bar to the top left of the results. There are several ways you can export results of a query.
Two of them offer great scalability: 1. Export to an empty folder on your cluster's file system. This exports the results using multiple files. In the export icon, choose Export and then All. 2. Export to a table. You can choose an already existing table or a new one. In the export icon, choose Export and then Table.
Two of them offer limited scalability: 1. Export to a file on your cluster's file systems. This exports the results to a single file. In the export icon, choose Export and then First XXX. 2. Download to your computer as a CSV or XLS. This exports the results to a single file in comma-separated values or Microsoft Office Excel format. In the export icon, choose Download as CSV or Download as XLS.
Download and export options with limited scalability can be limited in the number of rows or bytes transferred using the following options respectively in your hue.ini:
[beeswax] # A limit to the number of rows that can be downloaded from a query before it is truncated. # A value of -1 means there will be no limit. download_row_limit=-1# A limit to the number of bytes that can be downloaded from a query before it is truncated. # A value of -1 means there will be no limit. download_bytes_limit=-1
In addition, it is possible to disable the download and export feature in the editor, dashboard, as well as in the file browser with the following option in your hue.ini:
[desktop] # Global setting to allow or disable end user downloads in all Hue. # e.g. Query result in Editors and Dashboards, file in File Browser... enable_download=false
The download feature in the file browser can be disabled separately with the following options in your hue.ini:
[filebrowser] show_download_button=false
The pane to the top of the Editor lets you specify the following options:
| DATABASE | The database containing the table definitions. |
| SETTINGS | Override the Hive and Hadoop default settings. To configure a new
setting:
|
| FILE RESOURCES | Make files locally accessible at query execution time available on the
Hadoop cluster. Hive uses the Hadoop Distributed Cache to distribute the
added files to all machines in the cluster at query execution time.
|
| USER-DEFINED FUNCTIONS | Specify user-defined functions. Click Add to configure a new setting. Specify the function name in the Name field, and specify the class name for Classname. You *must* specify a JAR file for the user-defined functions in FILE RESOURCES. To include a user-defined function in a query, add a $ (dollar sign) before the function name in the query. For example, if MyTable is a user-defined function name in the query, you would type: SELECT $MyTable |
| PARAMETERIZATION | Indicate that a dialog box should display to enter parameter values when a query containing the string $parametername is executed. Enabled by default. |
To make your SQL editing experience better we've created a new autocompleter for Hue 3.11. The old one had some limitations and was only aware of parts of the statement being edited. The new autocompleter knows all the ins and outs of the Hive and Impala SQL dialects and will suggest keywords, functions, columns, tables, databases, etc. based on the structure of the statement and the position of the cursor.
The result is improved completion throughout. We now have completion for more than just SELECT statements, it will help you with the other DDL and DML statements too, INSERT, CREATE, ALTER, DROP etc.
Smart column suggestions
If multiple tables appear in the FROM clause, including derived and joined tables, it will merge the columns from all the tables and add the proper prefixes where needed. It also knows about your aliases, lateral views and complex types and will include those. It will now automatically backtick any reserved words or exotic column names where needed to prevent any mistakes.
Smart keyword completion
The new autocompleter suggests keywords based on where the cursor is positioned in the statement. Where possible it will even suggest more than one word at at time, like in the case of IF NOT EXISTS, no one likes to type too much right? In the parts where order matters but the keywords are optional, for instance after FROM tbl, it will list the keyword suggestions in the order they are expected with the first expected one on top. So after FROM tbl the WHERE keyword is listed above GROUP BY etc.
UDFs
The improved autocompleter will now suggest functions, for each function suggestion an additional panel is added in the autocomplete dropdown showing the documentation and the signature of the function. The autocompleter know about the expected types for the arguments and will only suggest the columns or functions that match the argument at the cursor position in the argument list.
Sub-queries, correlated or not
When editing subqueries it will only make suggestions within the scope of the subquery. For correlated subqueries the outside tables are also taken into account.
All about quality
We've fine-tuned the live autocompletion for a better experience and we've introduced some options under the editor settings where you can turn off live autocompletion or disable the autocompleter altogether (if you're adventurous). To access these settings open the editor and focus on the code area, press CTRL + , (or on Mac CMD + ,) and the settings will appear.
The autocompleter talks to the backend to get data for tables and databases etc. by default it will timeout after 5 seconds but once it has been fetched it's cached for the next time around. The timeout can be adjusted in the Hue server configuration.
We've got an extensive test suite but not every possible statement is covered, if the autocompleter can't interpret a statement it will be silent and no drop-down will appear. If you encounter a case where you think it should suggest something but doesn't or if it gives incorrect suggestions then please let us know.
Learn more about it in Autocompleter for Hive and Impala.
Variables are used to easily configure parameters in a query. They can be of two types:
Single Valued
select * from web_logs where country_code = "${country_code}"The variable can have a default value.
select * from web_logs where country_code = "${country_code=US}"Multi Valued
select * from web_logs where country_code = "${country_code=CA, FR, US}"In addition, the displayed text for multi valued variables can be changed.
select * from web_logs where country_code = "${country_code=CA(Canada), FR(France), US(United States)}"For values that are not textual, omit the quotes.
select * from boolean_table where boolean_column = ${boolean_column}
A little red underline will display the incorrect syntax so that the query can be fixed before submitting. A right click offers suggestions.
Read more about the Query Assistant with Navigator Optimizer Integration .
The autocompleter will suggest popular tables, columns, filters, joins, group by, order by etc. based on metadata from Navigator Optimizer. A new “Popular” tab has been added to the autocomplete result dropdown which will be shown when there are popular suggestions available.
Risk and suggestions
While editing, Hue will run your queries through Navigator Optimizer in the background to identify potential risks that could affect the performance of your query. If a risk is identified an exclamation mark is shown above the query editor and suggestions on how to improve it is displayed in the lower part of the right assistant panel.
Turns a list of semi-colon separated queries into an interactive presentation. It is great for doing demos or basic reporting.
Use the query editor with any JDBC or Django-compatible database.
Tez
An external contribution provided support for sending multiple queries when using Tez (instead of a maximum of just one at the time). You can turn it on with this setting:
[beeswax]
max_number_of_sessions=10
The Hive Editor enables you to perform queries on Apache Hive, a data warehousing system designed to work with Hadoop. For information about Hive. You can create Hive databases, tables and partitions, load data, create, run, and manage queries, and download the results in a Microsoft Office Excel worksheet file or a comma-separated values file.
Hive Editor is installed and configured as part of Hue. For information about installing and configuring Hue, see the Hue Installation manual.
Hive Editor assumes an existing Hive installation. The Hue installation instructions include the configuration necessary for hive to access Hive. You can view the current Hive configuration from the Settings tab in the Hive Editor.
By default, a Hive Editor user can see the saved queries for all users - both his/her own queries and those of other Hive Editor users. To restrict viewing saved queries to the query owner and Hue administrators, set the share_saved_queries property under the [beeswax] section in the Hue configuration file to false.
Note: The Hive Editor used to be known as Beeswax. Note: The Job Browser integrates nicely with the Impala Query Editor.
With Solr 5+, query collections like we would query a regular Hive or Impala table.
As Solr SQL is pretty recent, there are some caveats, notably Solr lacks support of:
which prevents a SQL UX experience comparable to the standard other databases (but we track it in HUE-3686).
Apache Kylin is an open-source online analytical processing (OLAP) engine. See how to configure the Kylin Query Editor.
Extend with JDBC or your own connectors.
The Editor application enables you to create and submit jobs to the cluster. You can include variables with your jobs to enable you and other users to enter values for the variables when they run your job.
All job design settings except Name and Description support the use of variables of the form $variable_name. When you run the job, a dialog box will appear to enable you to specify the values of the variables.
| Name | Identifies the job and its collection of properties and parameters. |
| Description | A description of the job. The description is displayed in the dialog box that appears if you specify variables for the job. |
| Advanced | Advanced settings:
|
| Prepare | Specifies paths to create or delete before starting the workflow job. |
| Params | Parameters to pass to a script or command. The parameters are expressed using the JSP 2.0 Specification (JSP.2.3) Expression Language, allowing variables, functions, and complex expressions as parameters. |
| Job Properties | Job properties. To set a property value, click Add Property.
|
| Files | Files to pass to the job. Equivalent to the Hadoop -files option. |
| Archives | Files to pass to the job. Archives to pass to the job. Equivalent to the Hadoop -archives option. |
A MapReduce job design consists of MapReduce functions written in Java. You can create a MapReduce job design from existing mapper and reducer classes without having to write a main Java class. You must specify the mapper and reducer classes as well as other MapReduce properties in the Job Properties setting.
| Jar path | The fully-qualified path to a JAR file containing the classes that implement the Mapper and Reducer functions. |
A Java job design consists of a main class written in Java.
| Jar path | The fully-qualified path to a JAR file containing the main class. |
| Main class | The main class to invoke the program. |
| Args | The arguments to pass to the main class. |
| Java opts | The options to pass to the JVM. |
A Pig job design consists of a Pig script.
| Script name | Script name or path to the Pig script. |
A Sqoop job design consists of a Sqoop command.
| Command | The Sqoop command. |
A Shell job design consists of a shell command.
| Command | The shell command. |
| Capture output | Indicate whether to capture the output of the command. |
A DistCp job design consists of a DistCp command.
This is a quick way to submit any Jar or Python jar/script to a cluster via the Scheduler or Editor.
How to run Spark jobs with Spark on YARN? This often requires trial and error in order to make it work.
Hue is leveraging Apache Oozie to submit the jobs. It focuses on the yarn-client mode, as Oozie is already running the spark-summit command in a MapReduce2 task in the cluster. You can read more about the Spark modes here.
Here is how to get started successfully. And how to use the Spark Action.
Hue relies on Livy for the interactive Scala, Python and R snippets.
Livy got initially developed in the Hue project but got a lot of traction and was moved to its own project on livy.io. Here is a tutorial on how to use a notebook to perform some Bike Data analysis.
Read more about it:
Make sure that the Notebook and interpreters are set in the hue.ini, and Livy is up and running:
[spark] # Host address of the Livy Server. livy_server_host=localhost [notebook] ## Show the notebook menu or not show_notebooks=true [[interpreters]] # Define the name and how to connect and execute the language. [[[hive]]] # The name of the snippet. name=Hive # The backend connection to use to communicate with the server. interface=hiveserver2 [[[spark]]] name=Scala interface=livy [[[pyspark]]] name=PySpark interface=livy
Read more about extending connectors.
Dashboards are an interactive way to explore your data quickly and easily. No programming is required and the analysis is done by drag & drops and clicks.
Read more about Dashboards.
Simply drag & drop widgets that are interconnected together. This is great for exploring new datasets or monitoring without having to type.
Any CSV file can be dragged & dropped and ingested into an index in a few clicks via the Data Import Wizard [link]. The indexed data is immediately queryable and its facets/dimensions will be very fast to explore.
The Collection browser got polished in the last releases and provide more information on the columns. The left metadata assist of Hue 4 makes it handy to list them and peak at their content via the sample popup.
The search box support live prefix filtering of field data and comes with a Solr syntax autocomplete in order to make the querying intuitive and quick. Any field can be inspected for its top values of statistic. This analysis happens very fast as the data is indexed.
The top search bar offers a full autocomplete on all the values of the index.
The “More like This” feature lets you selected fields you would like to use to find similar records. This is a great way to find similar issues, customers, people... with regard to a list of attributes.
This is work in progress but dashboards will soon offer a classic reporting option.
Read more about extending connectors.
Hue's Browsers powers your Data Catalog. They let you easily search, glance and perform actions on data or jobs in Cloud or on premise clusters.
The Table Browser enables you to manage the databases, tables, and partitions of the metastore shared by the Hive and Impala. You can use Metastore Manager to perform the following operations:
Tables
The File Browser application lets you browse and manipulate files and directories in the Hadoop Distributed File System (HDFS), S3 or ADLS. With File Browser, you can:
Hue can be setup to read and write to a configured S3 account, and users get autocomplete capabilities and can directly query from and save data to S3 without any intermediate moving/copying to HDFS.
Create Hive Tables Directly From S3 Hue's Metastore Import Data Wizard can create external Hive tables directly from data directories in S3. This allows S3 data to be queried via SQL from Hive or Impala, without moving or copying the data into HDFS or the Hive Warehouse.
To create an external Hive table from S3, navigate to the Metastore app, select the desired database and then click the “Create a new table from a file” icon in the upper right.
Enter the table name and optional description, and in the “Input File or Directory” filepicker, select the S3A filesystem and navigate to the parent directory containing the desired data files and click the “Select this folder” button. The “Load Data” dropdown should automatically select the “Create External Table” option which indicates that this table will directly reference an external data directory.
Choose your input files' delimiter and column definition options and finally click “Create Table” when you're ready to create the Hive table. Once created, you should see the newly created table details in the Metastore.
Save Query Results to S3
Now that we have created external Hive tables created from our S3 data, we can jump into either the Hive or Impala editor and start querying the data directly from S3 seamlessly. These queries can join tables and objects that are backed either by S3, HDFS, or both. Query results can then easily be saved back to S3.
S3 Configuration
Learn more about it on the ADLS integration post.
Users gets autocomplete capabilities and more:
Exploring ADLS in Hue's file browser Once Hue is successfully configured to connect to ADLS, we can view all accessible folders within the account by clicking on the ADLS root. From here, we can view the existing keys (both directories and files) and create, rename, move, copy, or delete existing directories and files. Additionally, we can directly upload files to ADLS.
Create Hive Tables Directly From ADLS Hue's table browser import wizard can create external Hive tables directly from files in ADLS. This allows ADLS data to be queried via SQL from Hive or Impala, without moving or copying the data into HDFS or the Hive Warehouse. To create an external Hive table from ADLS, navigate to the table browser, select the desired database and then click the plus icon in the upper right. Select a file using the file picker and browse to a file on ADLS.
Save Query Results to ADLS Now that we have created external Hive tables created from our ADLS data, we can jump into either the Hive or Impala editor and start querying the data directly from ADLS seamlessly. These queries can join tables and objects that are backed either by ADLS, HDFS, or both. Query results can then easily be saved back to ADLS.
ADLS Configuration
You can use File Browser to view the input and output files of your MapReduce jobs. Typically, you can save your output files in /tmp or in your home directory if your system administrator set one up for you. You must have the proper permissions to manipulate other user's files.
To change to your home directory, click Home in the path field at the top of the File Browser window.
Note:
The Home button is disabled if you do not have a home directory. Ask a Hue administrator to create a home directory for you.
You can upload text and binary files to the HDFS.
You can download text and binary files to the HDFS.
You can extract zip archives to the HDFS. The archive is extracted to a directory named archivename.
File Browser supports the HDFS trash folder (home directory/.Trash) to contain files and directories before they are permanently deleted. Files in the folder have the full path of the deleted files (in order to be able to restore them if needed) and checkpoints. The length of time a file or directory stays in the trash depends on HDFS properties.
In the File Browser window, click .
Note:
Only the Hadoop superuser can change a file's or directory's owner, group, or permissions. The user who starts Hadoop is the Hadoop superuser. The Hadoop superuser account is not necessarily the same as a Hue superuser account. If you create a Hue user (in User Admin) with the same user name and password as the Hadoop superuser, then that Hue user can change a file's or directory's owner, group, or permissions.
Owner or Group
Click Submit to make the changes.
Permissions
You can view and edit files as text or binary.
View
Edit
Sentry roles and privileges can directly be edited in the Security interface.
Solr privileges can be edited directly via the interface.
For listing collections, query and creating collection:
Admin=*->action=*
Collection=*->action=*
Schema=*->action=*
Config=*->action=*
The Job Browser application lets you to examine multiple types of jobs jobs running in the cluster. Job Browser presents the job and tasks in layers. The top layer is a list of jobs, and you can link to a list of that job's tasks. You can then view a task's attempts and the properties of each attempt, such as state, start and end time, and output size. To troubleshoot failed jobs, you can also view the logs of each attempt.
If there are jobs running, then the Job Browser list appears.
Note: At any level you can view the log for an object by clicking the icon in the Logs column.
To view job information for an individual job:
To view details about the tasks associated with the job:
To view information about an individual task:
To view details about a task attempt:
There are three ways to access the new browser:
Best: Click on the query ID after executing a SQL query in the editor. This will open the mini job browser overlay at the current query. Having the query execution information side by side the SQL editor is especially helpful to understand the performance characteristics of your queries. Open the mini job browser overlay and navigate to the queries tab. Open the job browser and navigate to the queries tab.
Query capabilities
Read more about it on Browsing Impala Query Execution within the SQL Editor .
List submitted workflows, schedules and bundles.
List Livy sessions and submitted statements.
The application lets you build workflows and then schedule them to run regularly automatically. A monitoring interface shows the progress, logs and allow actions like pausing or stopping jobs.
The Oozie Editor/Dashboard application allows you to define Oozie workflow, coordinator, and bundle applications, run workflow, coordinator, and bundle jobs, and view the status of jobs. For information about Oozie, see Oozie Documentation.
A workflow application is a collection of actions arranged in a directed acyclic graph (DAG). It includes two types of nodes:
A coordinator application allows you to define and execute recurrent and interdependent workflow jobs. The coordinator application defines the conditions under which the execution of workflows can occur.
A bundle application allows you to batch a set of coordinator applications.
In the Workflow Editor you can easily perform operations on Oozie action and control nodes.
The Workflow Editor supports dragging and dropping action nodes. As you move the action over other actions and forks, highlights indicate active areas. If there are actions in the workflow, the active areas are the actions themselves and the areas above and below the actions. If you drop an action on an existing action, a fork and join is added to the workflow.
Copy an action by clicking the Copy button.
The action is opened in the Edit Node screen.
Edit the action properties and click Done. The action is added to the end of the workflow.
Delete an action by clicking the button.
Note: worfklows.xml and their job.properties cab also directly be selected and executed via the File Browser.
In Coordinator Manager you create Oozie coordinator applications and submit them for execution.
In the Coordinator Editor you specify coordinator properties and the datasets on which the workflow scheduled by the coordinator will operate by stepping through screens in a wizard. You can also advance to particular steps and revisit steps by clicking the Step "tabs" above the screens. The following instructions walk you through the wizard.
A bundle consists in a collection of schedules.
In the Bundle Editor, you specify properties by stepping through screens in a wizard. You can also advance to particular steps and revisit steps by clicking the Step "tabs" above the screens. The following instructions walk you through the wizard.
Those modules are not active enough to be officially maintained in the core Hue but those are pretty functional and should still fit your needs. Any contribution is welcomed!
Check the SDK guide or contact the community about how to build your own custom app.
We'll take a look at the new HBase Browser App.
Prerequisites before using the app:
1. Have HBase and Thrift Service 1 initiated (Thrift can be configured)
2. Configure your list of HBase Clusters in hue.ini to point to your Thrift IP/Port
Note: With just a few changes in the Python API, the HBase browser could be compatible with Apache Kudu.
The smartview is the view that you land on when you first enter a table. On the left hand side are the row keys and hovering over a row reveals a list of controls on the right. Click a row to select it, and once selected you can perform batch operations, sort columns, or do any amount of standard database operations. To explore a row, simple scroll to the right. By scrolling, the row should continue to lazily-load cells until the end.
To initially populate the table, you can insert a new row or bulk upload CSV/TSV/etc. type data into your table.
On the right hand side of a row is a '+' sign that lets you insert columns into your row
To edit a cell, simply click to edit inline.
If you need more control or data about your cell, click “Full Editor” to edit.
In the full editor, you can view cell history or upload binary data to the cell. Binary data of certain MIME Types are detected, meaning you can view and edit images, PDFs, JSON, XML, and other types directly in your browser!
Hovering over a cell also reveals some more controls (such as the delete button or the timestamp). Click the title to select a few and do batch operations:
If you need some sample data to get started and explore, check out this howto create HBase table tutorial.
The "Smart Searchbar" is a sophisticated tool that helps you zero-in on your data. The smart search supports a number of operations. The most basic ones include finding and scanning row keys. Here I am selecting two row keys with:
domain.100, domain.200
Submitting this query gives me the two rows I was looking for. If I want to fetch rows after one of these, I have to do a scan. This is as easy as writing a '+' followed by the number of rows you want to fetch.
domain.100, domain.200 +5
Fetches domain.100 and domain.200 followed by the next 5 rows. If you're ever confused about your results, you can look down below and the query bar and also click in to edit your query.
The Smart Search also supports column filtering. On any row, I can specify the specific columns or families I want to retrieve. With:
domain.100[column_family:]
I can select a bare family, or mix columns from different families like so:
domain.100[family1:, family2:, family3:column_a]
Doing this will restrict my results from one row key to the columns I specified. If you want to restrict column families only, the same effect can be achieved with the filters on the right. Just click to toggle a filter.
Finally, let's try some more complex column filters. I can query for bare columns:
domain.100[column_a]
This will multiply my query over all column families. I can also do prefixes and scans:
domain.100[family: prefix* +3]
This will fetch me all columns that start with prefix* limited to 3 results. Finally, I can filter on range:
domain.100[family: column1 to column100]
This will fetch me all columns in 'family:' that are lexicographically >= column1 but <= column100. The first column ('column1') must be a valid column, but the second can just be any string for comparison.
The Smart Search also supports prefix filtering on rows. To select a prefixed row, simply type the row key followed by a star *. The prefix should be highlighted like any other searchbar keyword. A prefix scan is performed exactly like a regular scan, but with a prefixed row.
domain.10* +10
Finally, as a new feature, you can also take full advantage of the HBase filteringlanguage, by typing your filter string between curly braces.  You can apply filters to rows or scans.
domain.1000 {ColumnPrefixFilter('100-') AND ColumnCountGetFilter(3)}
This doc only covers a few basic features of the Smart Search. You can take advantage of the full querying language by referring to the help menu when using the app. These include column prefix, bare columns, column range, etc. Remember that if you ever need help with the searchbar, you can use the help menu that pops up while typing, which will suggest next steps to complete your query.
Iport data from relational databases to HDFS file or Hive table using Apache Sqoop 1. It enables us to bring large amount of data into the cluster in just few clicks via interactive UI. This Sqoop connector was added to the existing import data wizard of Hue.
In the past, importing data using Sqoop command line interface could be a cumbersome and inefficient process. The task expected users to have a good knowledge of Sqoop . For example they would need put together a series of required parameters with specific syntax that would result in errors easy to make. Often times getting those correctly can take a few hours of work. Now with Hue's new feature you can submityour Sqoop job in minutes. The imports run on YARN and are scheduled by Oozie. This tutorial offers a step by step guide on how to do it.
Learn more about it on the Importing data from traditional databases into HDFS/Hive in just a few clicks post.
The Sqoop UI enables transfering data from a relational database to Hadoop and vice versa. The UI lives uses Apache Sqoop to do this. See the Sqoop Documentation for more details on Sqoop.
There's a status on each of the items in the job list indicating the last time a job was ran. The progress of the job should dynamically update. There's a progress bar at the bottom of each item on the job list as well.
NOTE: If this does not work, it's like because a job is using that connection. Make sure not jobs are using the connection that will be deleted.
The text field in the top, left corner of the Sqoop Jobs page enables fast filtering of sqoop jobs by name.
The main two features are:
ZooKeeper Browser requires the ZooKeeper REST service to be running. Here is how to setup this one:
First get and build ZooKeeper:
git clone https://github.com/apache/zookeeper cd zookeeper ant Buildfile: /home/hue/Development/zookeeper/build.xml init: [mkdir] Created dir: /home/hue/Development/zookeeper/build/classes [mkdir] Created dir: /home/hue/Development/zookeeper/build/lib [mkdir] Created dir: /home/hue/Development/zookeeper/build/package/lib [mkdir] Created dir: /home/hue/Development/zookeeper/build/test/lib ...
And start the REST service:
cd src/contrib/rest nohup ant run&
If ZooKeeper and the REST service are not on the same machine as Hue, go update the Hue settings and specify the correct hostnames and ports:
[zookeeper] [[clusters]] [[[default]]] # Zookeeper ensemble. Comma separated list of Host/Port. # e.g. localhost:2181,localhost:2182,localhost:2183 ## host_ports=localhost:2181 # The URL of the REST contrib service ## rest_url=http://localhost:9998
A basic read only version is done HUE-951.


Welcome to Freedom.
Fedora creates an innovative, free, and open source platform for hardware, clouds, and containers that enables software developers and community members to build tailored solutions for their users.
Fedora Workstation is a polished, easy to use operating system for laptop and desktop computers, with a complete set of tools for developers and makers of all kinds.
Fedora Server is a powerful, flexible operating system that includes the best and latest datacenter technologies. It puts you in control of all your infrastructure and services.
Emerging Fedora Editions
Preview the future of Fedora.
Fedora CoreOS is an automatically updating, minimal, container-focused operating system.
Fedora Silverblue is an immutable desktop operating system aimed at good support for container-focused workflows.
Fedora IoT provides a trusted open source platform as a strong foundation for IoT ecosystems.
Fedora is always free for anyone to use, modify, and distribute. It is built and used by people across the globe who work together as a community.


Kevin is a 4th year undergraduate student at UCSD and is currently taking CSE 170 for a technical elective. He is currently attempting to earn his bachelor's degree in Computer Science, and really enjoys the field. In his free time, he enjoys hanging out with friends, playing video games, and watching TV shows.


Incluses a 30min indoor session at the studio with one-two outfit changes. Perfect for professional or commercial work!
Inclues a 1 or 2 hour session, indoors or outdoors. You get to pick the location and can coordinate one-two outfits. Animals are welcome and incouraged!
These sessions can be booked together or seperately. Includes a 1 hour engagement session indoors or outdoors, multiple outfits and or locations. Weddings are booked by the day and can include other optional packages.
Wether you like to ski, fish, hike, or climb, there is an activity you can do. These photos will help capture you in what you love to do, and can be very vercital.
Session includes in-game shots as well as studio session pictures of your choice.
Photos of the event set up, small detailed items, group photos, and much more. An easy way to document the whole event and pictures you will be able to send to guests.


About
SOARlab's research mission is to improve the reliability and resilience of complex software systems by empowering developers with practical tools and techniques for analysis of their artifacts. We are interested in any technique or method that supports our research mission, including but not limited to: extended static checking, automated theorem proving, model checking, and runtime verification. Currently, our emphasis is on highly automatic and scalable analysis techniques for software, in particular for concurrent software.We are part of the School of Computing at the University of Utah.


Data Catalogue
Toggle navigation
Home
Logged in as {{authSvc.authUsr.username}} |
Logout
×
Warning!
{{$root.data.messages.warning}}
×
Info:
{{$root.data.messages.info}}
Menu
Current organization
Manage data sources
Manage data sets
Manage layers
Manage group layers
Manage users
Manage roles
Manage role membership
Manage organizations
Manage functions
Manage permissions
Manage applications


BigDL Estimator
Introduction
Analytics Zoo Orca BigDL Estimator provides a set APIs for running BigDL model on Spark in a distributed fashion.
Orca BigDL Estimator
Orca BigDL Estimator is an estimator to do BigDL training/evaluation/prediction on Spark in a distributed fashion.
It can support various data types, like XShards, Spark DataFrame, etc.
It supports BigDL backend in the unified APIs.
Create Estimator from BigDL Model
You can create Orca BigDL Estimator with BigDL model.
from zoo.orca.learn.bigdl import Estimator
Estimator.from_bigdl(*, model, loss=None, optimizer=None, feature_preprocessing=None,
label_preprocessing=None, model_dir=None)
model
: BigDL Model to be trained.optimizer
: BigDL optimizer.loss
: BigDL criterion.feature_preprocessing
: Used if the input data in fit function is Spark DataFrame.The param converts the data in feature column to a Tensor or to a Sample directly. It expects a List of Int as the size of the converted Tensor, or a Preprocessing[F, Tensor[T]] If a List of Int is set as feature_preprocessing, it can only handle the case that feature column contains the following data types: Float, Double, Int, Array[Float], Array[Double], Array[Int] and MLlib Vector. The feature data are converted to Tensors with the specified sizes before sending to the model. Internally, a SeqToTensor is generated according to the size, and used as the feature_preprocessing. Alternatively, user can set feature_preprocessing as Preprocessing[F, Tensor[T]] that transforms the feature data to a Tensor[T]. Some pre-defined Preprocessing are provided in package zoo.feature. Multiple Preprocessing can be combined as a ChainedPreprocessing. The feature_preprocessing will also be copied to the generated NNModel and applied to feature column during transform.label_preprocessing
: Similar to feature_preprocessing, but applies to Label data.model_dir
: The path to save model. During the training, if checkpoint_trigger is defined and triggered, the model will be saved to model_dir.
Train BigDL model with orca BigDL Estimator
After an Estimator is created, you can call estimator API to train BigDL model:
fit(self, data, epochs, feature_cols="features", labels_cols="label", batch_size=32,
caching_sample=True, val_data=None, val_trigger=None, val_methods=None,
checkpoint_trigger=None)
data
: Training data. SparkXShard and Spark DataFrame are supported.epochs
: (int) Number of epochs to train the model.feature_cols
: (string or list of string) Feature column name(s) of data. Only used when data is a Spark DataFrame. Default: "features".labels_cols
: (string or list of string) Label column name(s) of data. Only used when data is a Spark DataFrame. Default: "label".batch_size
: (int) Batch size used for training. Default: 32.caching_sample
: (Boolean) Whether to cache the Samples after preprocessing. Default: True.val_data
: Validation data. SparkXShard and Spark DataFrame are supported. Default: None.val_trigger
: BigDL Trigger to validate model.val_methods
: BigDL validation methods.checkpoint_trigger
: BigDL Trigger to set a checkpoint.
Inference with orca BigDL Estimator
After training or loading trained model, you can call estimator API to inference:
predict(self, data, batch_size=8, feature_cols="features", sample_preprocessing=None)
data
: Inference data. SparkXShard and Spark DataFrame are supported.batch_size
: (int) Batch size used for inference. Default: 8.feature_cols
: (string or list of string) Feature column name(s) of data. Only used when data is a Spark DataFrame.sample_preprocessing
: Used if the input data in predict function is Spark DataFrame. The user defined sample_preprocessing will directly compose Sample according to user-specified Preprocessing.
Evaluate model
After Training, you can call estimator API to evaluate BigDL model:
evaluate(self, data, validation_methods=None, batch_size=32)
data
: Validation data. SparkXShard and Spark DataFrame are supported.validation_methods
: BigDL validation methods.batch_size
: Batch size used for evaluation. Only used when data is a SparkXShard.
Get model
You can get model using get_model(self)
Save model
You can save model using save(self, model_path)
* checkpoint
: (str) Path to model saved folder.
Load model
You can load saved model using
load(self, checkpoint, optimizer=None, loss=None, feature_preprocessing=None,
label_preprocessing=None, model_dir=None, is_checkpoint=False):
checkpoint
: (str) Path to target checkpoint file or saved model folder.optimizer
: BigDL optimizer.loss
: BigDL criterion.feature_preprocessing
: Used if the input data in fit function is Spark DataFrame.The param converts the data in feature column to a Tensor or to a Sample directly. It expects a List of Int as the size of the converted Tensor, or a Preprocessing[F, Tensor[T]] If a List of Int is set as feature_preprocessing, it can only handle the case that feature column contains the following data types: Float, Double, Int, Array[Float], Array[Double], Array[Int] and MLlib Vector. The feature data are converted to Tensors with the specified sizes before sending to the model. Internally, a SeqToTensor is generated according to the size, and used as the feature_preprocessing. Alternatively, user can set feature_preprocessing as Preprocessing[F, Tensor[T]] that transforms the feature data to a Tensor[T]. Some pre-defined Preprocessing are provided in package zoo.feature. Multiple Preprocessing can be combined as a ChainedPreprocessing. The feature_preprocessing will also be copied to the generated NNModel and applied to feature column during transform.label_preprocessing
: Similar to feature_preprocessing, but applies to Label data.model_dir
: The path to save model. During the training, if checkpoint_trigger is defined and triggered, the model will be saved to model_dir.is_checkpoint
: (boolean) Whether load BigDL saved model or checkpoint.
Set TensorBoard & get Training and Validation Summary
During training and validation, Orca BigDL Estimator would save summary data to specified log_dir. This data can be visualized in TensorBoard, or you can use estimator's APIs to retrieve it. You can set the logdir and app name with such API:
set_tensorboard(log_dir, app_name)
log_dir
: The base directory path to store training and validation logs.app_name
: The name of the application.
This method sets summary information during the training process for visualization purposes. Saved summary can be viewed via TensorBoard. In order to take effect, it needs to be called before fit.
Training summary will be saved to 'log_dir/app_name/train' and validation summary (if any) will be saved to 'log_dir/app_name/validation'.
You can get Training summary with get_train_summary(self, tag=None)
and Validation summary with get_validation_summary(self, tag=None)
.
Clear gradient clipping
You can clear gradient clipping parameters using clear_gradient_clipping(self)
. In this case, gradient clipping will not be applied.
Note: In order to take effect, it needs to be called before fit.
Set constant gradient clipping
You can Set constant gradient clipping during the training process using set_constant_gradient_clipping(self, min, max)
.
* min
: The minimum value to clip by.
* max
: The maximum value to clip by.
Note: In order to take effect, it needs to be called before fit.
Set clip gradient to a maximum L2-Norm
You can set clip gradient to a maximum L2-Norm during the training process using set_l2_norm_gradient_clipping(self, clip_norm)
.
* clip_norm
: Gradient L2-Norm threshold.
Note: In order to take effect, it needs to be called before fit.


Broadband and web2.0 applications
Singapore is one of the most wired companies in the world with a Broadband penetration exceeding 100% (Korea take that ). I recently switched to Starhub from SingTel on one of their midrange plans (not the alledged 100 MBPS one), so I was curious and headed over to SpeedTest to check how I'm doing. Locally I got 8.42 Mbps and overseas 5.37 (Boston), 4.76 (San Franscisco) and 5.3 (Texas) Mbps.
Should be ample power for any web based application isn't it? Not so fast. Just recall how most of the web 2.0 applications with their Ajax goodness actually work:
(Image shamelessly borrowed from JustGoodDesign.com
You will realize that while you want all the speed you can get for watching video or download files, you want fast reaction to your requests too. Reaction time in the internet is called latency. How long does it take the other side to react. There are many factors influencing latency. Physical distance, quality of lines, number of nodes to traverse, things happening on that nodes (packet inspections, firewall activities) etc. In a local network you can expect latency in the range of less than a milisecond up to 3-4ms. Once firewalls get inbetween figures get higher. Here the Singapore figures (mesured using ) look different:
Locally I got 31ms (just 15x slower than a 2ms local network), overseas between 200ms and 350ms (just 100x and 150x slower than the lan). You can imagine what that does to your "chatty" web2.0 application. While 100 calls in the lan take just a fifth of a second you would need to wait 20sec on the slow connection.  My recommendation for all web2.0 developers: Schedule some time in a remote development facility (Yes people actually write code there) but leave your servers at home.
Should be ample power for any web based application isn't it? Not so fast. Just recall how most of the web 2.0 applications with their Ajax goodness actually work:
(Image shamelessly borrowed from JustGoodDesign.com
You will realize that while you want all the speed you can get for watching video or download files, you want fast reaction to your requests too. Reaction time in the internet is called latency. How long does it take the other side to react. There are many factors influencing latency. Physical distance, quality of lines, number of nodes to traverse, things happening on that nodes (packet inspections, firewall activities) etc. In a local network you can expect latency in the range of less than a milisecond up to 3-4ms. Once firewalls get inbetween figures get higher. Here the Singapore figures (mesured using ) look different:
Locally I got 31ms (just 15x slower than a 2ms local network), overseas between 200ms and 350ms (just 100x and 150x slower than the lan). You can imagine what that does to your "chatty" web2.0 application. While 100 calls in the lan take just a fifth of a second you would need to wait 20sec on the slow connection.  My recommendation for all web2.0 developers: Schedule some time in a remote development facility (Yes people actually write code there) but leave your servers at home.
Posted by Stephan H Wissel on 14 March 2010 | Comments (2) | categories: Buying Broadband


Frame Class
Frame
Instantiation
- scrawl.makeFrame()
Purpose
- Defines a Frame entity
Access
- scrawl.entity.FRAMENAME - for the Frame entity object
Constructor
Frame
-
[items]
Parameters:
-
[items]
Object optionalKey:value Object argument for setting attributes
Item Index
Methods
- checkCorners
- checkHit
- clear
- clearShadow
- clearWithBackground
- clip
- clone
- collisionsEntityRegisterInLibrary
- draw
- drawFill
- drawImage
- drawPath
- dropEntity
- fill
- fillDraw
- filtersEntityInit
- floatOver
- forceStamp
- get
- getAngle
- getCorners
- getLength
- getMaxDimensions
- getPosition
- lockOn
- none
- numberConvert
- parse
- pickupEntity
- prepareStamp
- redrawCanvas
- resetEasel
- set
- setCorners
- setDestinationEngine
- setEasel
- setEngine
- setLockElementAttributes
- sinkInto
- stamp
- stampFilter
- stampFilterActions
- stampFilterDefault
- updateCurrentCopy
Properties
- bottomLeft
- bottomLeftDeltaPathPlace
- bottomLeftLockX
- bottomLeftLockY
- bottomLeftPath
- bottomLeftPathPlace
- bottomLeftPathSpeedConstant
- bottomLeftPivot
- bottomRight
- bottomRightDeltaPathPlace
- bottomRightLockX
- bottomRightLockY
- bottomRightPath
- bottomRightPathPlace
- bottomRightPathSpeedConstant
- bottomRightPivot
- cell
- comment
- currentFrame
- engine
- filterLevel
- filterOnStroke
- filters
- flipReverse
- flipUpend
- globalAlpha
- globalCompositeOperation
- group
- height
- height
- interferenceFactor
- interferenceLoops
- lineCap
- lineDash
- lineDashOffset
- lineJoin
- lineWidth
- localHeight
- localWidth
- lockElementAttributes
- lockElementAttributesList
- lockFrameTo
- lockX
- lockY
- maxDimensions
- method
- miterLimit
- mouseIndex
- name
- order
- path
- pivot
- redraw
- shadowBlur
- shadowColor
- shadowOffsetX
- shadowOffsetY
- source
- strokeStyle
- timestamp
- title
- topLeft
- topLeftDeltaPathPlace
- topLeftLockX
- topLeftLockY
- topLeftPath
- topLeftPathPlace
- topLeftPathSpeedConstant
- topLeftPivot
- topRight
- topRightDeltaPathPlace
- topRightLockX
- topRightLockY
- topRightPath
- topRightPathPlace
- topRightPathSpeedConstant
- topRightPivot
- type
- visibility
- width
Methods
checkCorners
-
items
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
checkHit
-
items
Check Cell coordinates to see if any of them fall within this entity's path - uses JavaScript's isPointInPath function
Argument object contains the following attributes:
- tests - an array of Vector coordinates to be checked; alternatively can be a single Vector
- x - X coordinate
- y - Y coordinate
Either the 'tests' attribute should contain a Vector, or an array of vectors, or the x and y attributes should be set to Number values
Parameters:
-
items
ObjectArgument object
Returns:
The first coordinate to fall within the entity's path; false if none fall within the path
clear
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'clear' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
clearShadow
-
ctx
-
cellname
-
cell
stamp helper function - clear shadow parameters during a multi draw operation (drawFill and fillDraw methods)
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
clearWithBackground
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'clearWithBackground' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
clip
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'clip' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
clone
-
items
Augments Base.clone()
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
collisionsEntityRegisterInLibrary
()
private
Frame.registerInLibrary hook function - modified by collisions extension
draw
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'draw' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
drawFill
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'drawFill' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
drawImage
-
ctx
-
cellname
-
cell
stamp helper function - fill thge entity
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
drawPath
-
ctx
-
cellname
-
cell
stamp helper function - draw the path between the corner points
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
dropEntity
-
[items]
Revert pickupEntity() actions, ensuring entity is left where the user drops it
Parameters:
-
[items]
String optionalAlternative pivot String
Returns:
This
fill
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'fill' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
fillDraw
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'fillDraw' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
filtersEntityInit
()
private
Entity constructor hook function - modified by filters module
floatOver
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'floatOver' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
forceStamp
-
[method]
-
[cellname]
-
[cell]
-
[mouse]
Stamp function - instruct entity to draw itself on a Cell's <canvas> element, regardless of the setting of its visibility attribute
Permitted methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Parameters:
-
[method]
String optionalPermitted method attribute String; by default, will use entity's own method setting
-
[cellname]
String optionalCELLNAME of cell on which entitys are to draw themselves
-
[cell]
Object optionalcell wrapper object
-
[mouse]
Vector optionalcoordinates to be used for any entity currently pivoted to a mouse/touch event
Returns:
This
get
-
item
Retrieve an attribute value. If the attribute value has not been set, then the default value for that attribute will be returned.
Parameters:
-
item
StringAttribute key
Returns:
Attribute value
Example:
var box = scrawl.makeBlock({
width: 50,
});
box.get('width'); //returns 50
box.get('height'); //returns 0
box.get('favouriteAnimal'); //returns undefined
getAngle
()
private
redrawCanvas helper function
getCorners
()
Returns:
Object containing x/y coordinate objects for each corner
Example:
Returns an object with the following structure:
{
topLeft: {x: 0, y:0},
topRight: {x: 0, y:0},
bottomRight: {x: 0, y:0},
bottomLeft: {x: 0, y:0}
}
getLength
()
private
redrawCanvas helper function
getMaxDimensions
-
cell
-
entity
Calculate the box position of the entity
Returns an object with the following attributes:
- left - x coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- top - y coordinate of top-left corner of the enclosing box relative to the current cell's top-left corner
- bottom - x coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
- left - y coordinate of bottom-right corner of the enclosing box relative to the current cell's top-left corner
Parameters:
-
cell
Objectobject
-
entity
Objectobject
Returns:
dimensions object
getPosition
()
private
redrawCanvas helper function
lockOn
-
items
Attach a Frame entity to an existing stack element, or create a new stack <div> element
Parameters:
-
items
ObjectObject consisting of key:value attributes
none
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'none' method draw. This involves setting the <canvas> element's context engine's values with this entity's context values, but not defining or drawing the entity on the canvas.
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
numberConvert
-
val
-
dim
Stamp helper function - convert string percentage values to numerical values
Parameters:
-
val
Stringcoordinate String
-
dim
Numberdimension value
Returns:
Number - value
parse
()
Turn the object into a JSON String
Returns:
object of object's currently set attributes
pickupEntity
-
items
Set entity's pivot to 'mouse'; set handles to supplied Vector value; set order to +9999
Parameters:
-
items
VectorCoordinate vector; alternatively an object with {x, y} attributes can be used
Returns:
This
prepareStamp
-
ctx
-
cellname
-
cell
stamp helper function
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
redrawCanvas
()
private
Draw Frame entity in its own local canvas, then copy over to destimation canvas
resetEasel
()
private
redrawCanvas helper function
set
-
items
Augments Base.set()
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setCorners
-
items
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
setDestinationEngine
-
Object
-
String
-
Object
Parameters:
-
Object
Objectctx - 2d context engine
-
String
Object- CELLNAME
-
Object
Object- scrawl Cell object
setEasel
()
private
redrawCanvas helper function
setEngine
-
items
Parameters:
-
items
ObjectObject consisting of key:value attributes
setLockElementAttributes
-
items
Parameters:
-
items
ObjectObject consisting of key:value attributes
Returns:
This
sinkInto
-
ctx
-
cellname
-
cell
Stamp helper function - perform a 'sinkInto' method draw
Parameters:
-
ctx
ObjectJavaScript context engine for Cell's <canvas> element
-
cellname
StringCELLNAME string of Cell to be drawn on; by default, will use the Cell associated with this entity's Group object
-
cell
Objectscrawl Cell object
Returns:
This
stamp
-
[method]
-
[cellname]
-
[cell]
-
[mouse]
Stamp function - instruct entity to draw itself on a Cell's <canvas> element, if its visibility attribute is true
Permitted methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Parameters:
-
[method]
String optionalPermitted method attribute String; by default, will use entity's own method setting
-
[cellname]
String optionalCELLNAME of cell on which entitys are to draw themselves
-
[cell]
Object optionalcell wrapper object
-
[mouse]
Vector optionalcoordinates to be used for any entity currently pivoted to a mouse/touch event
Returns:
This
stampFilter
()
private
Entity.stamp hook function - add a filter to an Entity, and any background detail enclosed by the Entity
stampFilterActions
()
private
reciprocal assignment - also occurs in scrawlFilters as there's no way to tell which file (scrawlFrame, scrawlFilters) will be loaded first
stampFilterDefault
()
private
Entity.stamp hook helper function
updateCurrentCopy
()
private
redrawCanvas helper function - updates copy parameters
Properties
bottomLeft
Object - x:Number, y:Number
private
Current coordinate for bottom left corner
Default: false
bottomLeftDeltaPathPlace
Number
Attribute cascaded to appropriate FramePoint object deltaPathPlace attribute
Default: false
bottomLeftLockX
Boolean
Attribute cascaded to appropriate FramePoint object lockX attribute
Default: false
bottomLeftLockY
Boolean
Attribute cascaded to appropriate FramePoint object lockY attribute
Default: false
bottomLeftPath
String
Attribute cascaded to appropriate FramePoint object path attribute
Default: false
bottomLeftPathPlace
Number
Attribute cascaded to appropriate FramePoint object pathPlace attribute
Default: false
bottomLeftPathSpeedConstant
Boolean
Attribute cascaded to appropriate FramePoint object pathSpeedConstant attribute
Default: false
bottomLeftPivot
String
Attribute cascaded to appropriate FramePoint object pivot attribute
Default: false
bottomRight
Object - x:Number, y:Number
private
Current coordinate for bottom right corner
Default: false
bottomRightDeltaPathPlace
Number
Attribute cascaded to appropriate FramePoint object deltaPathPlace attribute
Default: false
bottomRightLockX
Boolean
Attribute cascaded to appropriate FramePoint object lockX attribute
Default: false
bottomRightLockY
Boolean
Attribute cascaded to appropriate FramePoint object lockY attribute
Default: false
bottomRightPath
String
Attribute cascaded to appropriate FramePoint object path attribute
Default: false
bottomRightPathPlace
Number
Attribute cascaded to appropriate FramePoint object pathPlace attribute
Default: false
bottomRightPathSpeedConstant
Boolean
Attribute cascaded to appropriate FramePoint object pathSpeedConstant attribute
Default: false
bottomRightPivot
String
Attribute cascaded to appropriate FramePoint object pivot attribute
Default: false
cell
DOM canvas element
private
Every Frame entity includes its own personal <canvas> element, which is not part of the DOM and which can only be accessed through this attribute
Default: false
comment
String
Comment, for accessibility
Default: ''
currentFrame
DOM element object
private
If present, the DOM <div> element being used to position entity within the stack
Default: false
engine
CanvasRenderingContext2D interface
private
The Frame entity's <canvas> element's 2d context engine - not stored in the scrawl library and can only be accessed through this attribute
Default: false
filterLevel
String
The filterLevel attribute determines at which point in the display cycle the filter will be applied. Permitted values are:
- 'entity' - filter is applied immediately after the Entity has stamped itself onto a cell
- 'cell' - filter is applied after all Entites have completed stamping themselves onto the cell
- 'pad' - filter is applied to the base canvas after all cells have completed copying themselves onto it, and before the base cell copies itself onto the display cell
Default: 'entity'
filterOnStroke
Boolean
Filter flag - when true, will draw the entity; on false (default), the clip method is used instead
Default: false
filters
Array
Array of FILTERNAME strings, for filters to be applied to this entity
Default: []
flipReverse
Boolean
Reflection flag; set to true to flip entity, cell or element along the Y axis - this has no meaning to Frame entitys (which can be repositioned either by directly repositioning corners, or by rotating any associated stack element), but has to be included for compatibility with core entity functionality
Default: false
flipUpend
Boolean
Reflection flag; set to true to flip entity, cell or element along the X axis - this has no meaning to Frame entitys (which can be repositioned either by directly repositioning corners, or by rotating any associated stack element), but has to be included for compatibility with core entity functionality
Default: false
globalAlpha
Number
private
Entity transparency - a value between 0 and 1, where 0 is completely transparent and 1 is completely opaque
Default: 1
globalCompositeOperation
String
Compositing method for applying the entity to an existing Cell (<canvas>) display. Permitted values include
- 'source-over'
- 'source-atop'
- 'source-in'
- 'source-out'
- 'destination-over'
- 'destination-atop'
- 'destination-in'
- 'destination-out'
- 'lighter'
- 'darker'
- 'copy'
- 'xor'
Be aware that different browsers render these operations in different ways, and some options are not supported by all browsers
Default: 'source-over'
group
String
GROUPNAME String for this entity's default group
Note: an entity can belong to more than one group by being added to other Group objects via the scrawl.addEntitysToGroups() and Group.addEntityToGroup() functions
Default: false
height
Number
private
Enclosing height of entity
Default: 1
height
Number
Top left corner reference point for enclosing dimension box of entity
Default: 1
interferenceFactor
Number
The current Frame drawing process often leads to moire interference patterns appearing in the resulting image. Scrawl uses resizing to blur out these patterns. The interferenceFactor attribute sets the resizing ratio; if patterns still appear in the final image, change this value to something more appropriate
Default: 1.03
interferenceLoops
Number
The current Frame drawing process often leads to moire interference patterns appearing in the resulting image. Scrawl uses resizing to blur out these patterns. The interferenceLoops attribute sets the number of times the image gets resized; if patterns still appear in the final image, increase this value
Default: 2
lineCap
String
Outline cap styling. Permitted values include:
- 'butt'
- 'round'
- 'square'
Default: 'butt'
lineDash
Array
Outline dash format - an array of Numbers representing line and gap values (in pixels), for example [5,2,2,2] for a long-short dash pattern
Default: []
lineDashOffset
Number
Outline dash offset - distance along the entity's outline at which to start the line dash. Changing this value can be used to create a 'marching ants effect
Default: 0
lineJoin
String
Outline join styling. Permitted values include:
- 'miter'
- 'round'
- 'bevel'
Default: 'miter'
lineWidth
Number
Outline width, in pixels
Default: 0
localHeight
Number
private
Used as part of core entity collision detection functionality - must always be the same as height attribute
Default: 1
localWidth
Number
private
Used as part of core entity collision detection functionality - must always be the same as width attribute
Default: 1
lockElementAttributes
Object
private
JavaScript Object containing key:value pairs - used to cascade data to underlying stack element (if present)
Default: false
lockElementAttributesList
Array
private
Array of key Strings used to whitelist the permitted attributes for cascade to stack element, if present. Used by lockElementAttributes attribute
Default: ['start', 'startX', 'startY', 'handle', 'handleX', 'handleY', 'deltaStart', 'deltaStartX', 'deltaStartY', 'deltaHandle', 'deltaHandleX', 'deltaHandleY', 'width', 'height', 'scale', 'deltaScale', 'deltaRoll', 'deltaPitch', 'deltaYaw', 'roll', 'pitch', 'yaw', 'includeCornerTrackers', 'pivot', 'path', 'pathPlace', 'deltaPathPlace', 'pathSpeedConstant', 'translate', 'translateX', 'translateY', 'translateZ', 'mouseIndex', 'cursor']
lockFrameTo
String
ELEMENTNAME of stack element which frame entity will use for positioning data
Default: false
lockX
Boolean
Positioning flag; set to true to ignore path/pivot/mouse changes along the X axis - will only affect any underlying stack div element used for positioning the frame entity. Note that each corner can also be individually restricted
Default: false
lockY
Boolean
Positioning flag; set to true to ignore path/pivot/mouse changes along the Y axis - will only affect any underlying stack div element used for positioning the frame entity. Note that each corner can also be individually restricted
Default: false
maxDimensions
Object
private
Maximum dimensions - used as part of entity filter and collision detection functionality
Default: {top:0, bottom:0, left:0, right:0, flag:true}
method
String
Entity drawing method. A entity can be drawn onto a <canvas> element in a variety of ways; these methods include:
- 'draw' - stroke the entity's path with the entity's strokeStyle color, pattern or gradient
- 'fill' - fill the entity's path with the entity's fillStyle color, pattern or gradient
- 'drawFill' - stroke, and then fill, the entity's path; if a shadow offset is present, the shadow is added only to the stroke action
- 'fillDraw' - fill, and then stroke, the entity's path; if a shadow offset is present, the shadow is added only to the fill action
- 'floatOver' - stroke, and then fill, the entity's path; shadow offset is added to both actions
- 'sinkInto' - fill, and then stroke, the entity's path; shadow offset is added to both actions
- 'clear' - fill the entity's path with transparent color 'rgba(0, 0, 0, 0)'
- 'clearWithBackground' - fill the entity's path with the Cell's current backgroundColor
- 'clip' - clip the drawing zone to the entity's path (not tested)
- 'none' - perform all necessary updates, but do not draw the entity onto the canvas
Note: not all entitys support all of these operations
Default: 'fill'
miterLimit
Number
miterLimit - affecting the 'pointiness' of the outline join where two lines join at an acute angle
Default: 10
mouseIndex
String
Index of mouse vector to use when pivot === 'mouse'
The Pad.mice object can hold details of multiple touch events - when an entity is assigned to a 'mouse', it needs to know which of those mouse trackers to use. Default: mouse (for the mouse cursor vector)
Default: 'mouse'
name
String
Unique identifier for each object; default: computer-generated String based on Object's type
order
Number
Entity order value - lower order entitys are drawn on <canvas> elements before higher order entitys
Default: 0
path
String
The ENTITYNAME of a Path entity to be used for setting this entity's start point - will only affect any underlying stack div element used for positioning the frame entity.
Note that each corner can also have its own path reference
Default: null
pivot
String
The ENTITYNAME or POINTNAME of a entity or Point object to be used for setting this object's start point - will only affect any underlying stack div element used for positioning the frame entity.
Note that each corner can also have its own pivot reference
Default: null
redraw
Boolean
private
Dirty flag - sets to true when certain entity attributes change
Default: false
shadowBlur
Number
Blur border for a entity's shadow, in pixels
Default: 0
shadowColor
String
Color used for entity shadow effect. Can be:
- Cascading Style Sheet format color String - '#fff', '#ffffff', 'rgb(255,255,255)', 'rgba(255,255,255,1)', 'white'
- COLORNAME String
Default: '#000000'
shadowOffsetX
Number
Horizontal offset of a entity's shadow, in pixels
Default: 0
shadowOffsetY
Number
Vertical offset of a entity's shadow, in pixels
Default: 0
source
String
ASSETNAME or CANVASNAME of source asset used to fill frame
Default: false
strokeStyle
String
Color, gradient or pattern used to outline a entity.


Area: API: AWT
Standard/Platform: Java SE 7
Synopsis: The java.awt.Cursor class contained a
"protected static field" called "predefined." This field has been
removed.
Area: API: AWT
Standard/Platform: Java SE 7
Synopsis: Color alpha values are now preserved by
java.awt.Color.darker() and
java.awt.Color.lighter() methods.
RFE: 6783910
Area: API: AWT
Standard/Platform: JDK 7
Synopsis: Limited mixing of heavyweight (e.g. AWT) and
lightweight (e.g. Swing) components is now officially supported.
Details are available in the API specification (see the java.awt.Component
class specification and its "See Also" link), and the
Mixing Heavyweight and Lightweight Components article. If an
application uses custom code to address the mixing issue and
experiences problems with the built-in support for mixing, the
feature can be turned off by specifying the
-Dsun.awt.disableMixing=true system property.
RFE: 4811096
Area: API: AWT
Standard/Platform: JDK 7
Synopsis: The mechanism used to detect whether the window
manager supports a system tray (and therefore the TrayIcon
API) has been changed. Instead of looking at the current window
manager, the
System Tray Protocol Specification is used.
RFE: 6438179
Area: API: AWT
Standard/Platform: JDK 7
Synopsis: In the JDK 7 release there are two AWT toolkits
that are supported. WToolkit on Windows and
XToolkit on Linux/Solaris. The MToolkit
implementation on Linux/Solaris is no longer supported.
Area: API: AWT
Standard/Platform: JDK 7
Synopsis: With this fix, all java.awt.Window
objects (not frames or dialogs) are regular top-level windows on
X11. In the JDK 6 release, they were OverrideRedirect
windows.
RFE: 6380835
Area: API: AWT
Standard/Platform: JDK 7
Synopsis: Windows that enable the
PERPIXEL_TRANSLUCENT kind of transparency by means of
setting a non-opaque background color may not display heavyweight
(e.g. AWT) child components correctly. AWT supports lightweight
(e.g. Swing) components in per-pixel translucent windows only. More
information on the difference between the two kinds of components
can be found in the Component class specification and in
the
Mixing Heavyweight and Lightweight Components article.
RFE: 6802853


|
goog.uri.utils.appendKeyValuePairs_(key, value, pairs)
Appends key=value pairs to an array, supporting multi-valued objects.
|
code » | ||||||||
|
Appends a single URI parameter.
Repeated calls to this can exhibit quadratic behavior in IE6 due to the
way string append works, though it should be limited given the 2kb limit.
|
code » | ||||||||
|
Appends URI parameters to an existing URI.
The variable arguments may contain alternating keys and values. Keys are
assumed to be already URI encoded. The values should not be URI-encoded,
and will instead be encoded by this function.
appendParams('http://www.foo.com?existing=true', 'key1', 'value1', 'key2', 'value?willBeEncoded', 'key3', ['valueA', 'valueB', 'valueC'], 'key4', null); result: 'http://www.foo.com?existing=true&' + 'key1=value1&' + 'key2=value%3FwillBeEncoded&' + 'key3=valueA&key3=valueB&key3=valueC'A single call to this function will not exhibit quadratic behavior in IE, whereas multiple repeated calls may, although the effect is limited by fact that URL's generally can't exceed 2kb. |
code » | ||||||||
|
Appends query parameters from a map.
|
code » | ||||||||
|
Generates a URI path using a given URI and a path with checks to
prevent consecutive "//". The baseUri passed in must not contain
query or fragment identifiers. The path to append may not contain query or
fragment identifiers.
|
code » | ||||||||
|
Appends a URI and query data in a string buffer with special preconditions.
Internal implementation utility, performing very few object allocations.
Arguments:
Returns:
The concatenated URI and query data.
|
code » | ||||||||
|
goog.uri.utils.assertNoFragmentsOrQueries_(uri)
Asserts that there are no fragment or query identifiers, only in uncompiled
mode.
Arguments:
|
code » | ||||||||
|
goog.uri.utils.buildFromEncodedParts(opt_scheme, opt_userInfo, opt_domain, opt_port, opt_path, opt_queryData, opt_fragment)
⇒
Builds a URI string from already-encoded parts.
No encoding is performed. Any component may be omitted as either null or
undefined.
Arguments:
Returns:
The fully combined URI.
|
code » | ||||||||
|
Builds a query data string from a sequence of alternating keys and values.
Currently generates "&key=&" for empty args; there is no way to generate
"&key&" arguments with no equal sign.
Arguments:
Returns:
The encoded query string, in the for 'a=1&b=2'.
|
code » | ||||||||
|
Builds a buffer of query data from a map.
Arguments:
|
code » | ||||||||
|
goog.uri.utils.buildQueryDataBuffer_(buffer, keysAndValues, opt_startIndex)
⇒
Builds a buffer of query data from a sequence of alternating keys and values.
Arguments:
|
code » | ||||||||
|
Builds a query data string from a map.
Currently generates "&key=&" for empty args; there is no way to generate
"&key&" arguments with no equal sign.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
Finds the next instance of a query parameter with the specified name.
Does not instantiate any objects.
Arguments:
Returns:
The position of the first character in the key's name, immediately after either a question mark or a dot.
|
code » | ||||||||
|
Gets a URI component by index.
It is preferred to use the getPathEncoded() variety of functions ahead,
since they are more readable.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
Extracts everything up to the port of the URI.
|
code » | ||||||||
|
Gets the first value of a query parameter.
|
code » | ||||||||
|
Gets all values of a query parameter.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
Extracts the path of the URL and everything after.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
No description.
|
code » | ||||||||
|
Determines if the URI contains a specific key.
Performs no object instantiations.
|
code » | ||||||||
|
goog.uri.utils.hashOrEndRe_()
Regular expression for finding a hash mark or end of string.
|
code » | ||||||||
|
Ensures that two URI's have the exact same domain, scheme, and port.
Unlike the version in goog.Uri, this checks protocol, and therefore is
suitable for checking against the browser's same-origin policy.
|
code » | ||||||||
|
Sets the zx parameter of a URI to a random value.
|
code » | ||||||||
|
Gets the URI with the fragment identifier removed.
|
code » | ||||||||
|
Removes all instances of a query parameter.
|
code » | ||||||||
|
Replaces all existing definitions of a parameter with a single definition.
Repeated calls to this can exhibit quadratic behavior in IE6 due to the
way string append works, though it should be limited given the 2kb limit.
|
code » | ||||||||
|
Splits a URI into its component parts.
Each component can be accessed via the component indices; for example:
goog.uri.utils.split(someStr)[goog.uri.utils.CompontentIndex.QUERY_DATA];
Arguments:
Returns:
Each component still URI-encoded. Each component that is present will contain the encoded value, whereas components that are not present will be undefined or empty, depending on the browser's regular expression implementation. Never null, since arbitrary strings may still look like path names.
|
code » | ||||||||
|
goog.uri.utils.splitRe_()
A regular expression for breaking a URI into its component parts.
{@link http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#RFC2234} says
As the "first-match-wins" algorithm is identical to the "greedy"
disambiguation method used by POSIX regular expressions, it is natural and
commonplace to use a regular expression for parsing the potential five
components of a URI reference.
The following line is the regular expression for breaking-down a
well-formed URI reference into its components.
^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))? 12 3 4 5 6 7 8 9The numbers in the second line above are only to assist readability; they indicate the reference points for each subexpression (i.e., each paired parenthesis). We refer to the value matched for subexpression as $. For example, matching the above expression to http://www.ics.uci.edu/pub/ietf/uri/#Relatedresults in the following subexpression matches: $1 = http: $2 = http $3 = //www.ics.uci.edu $4 = www.ics.uci.edu $5 = /pub/ietf/uri/ $6 = $7 = $8 = #Related $9 = Relatedwhere indicates that the component is not present, as is the case for the query component in the above example. Therefore, we can determine the value of the five components as scheme = $2 authority = $4 path = $5 query = $7 fragment = $9The regular expression has been modified slightly to expose the userInfo, domain, and port separately from the authority. The modified version yields $1 = http scheme $2 = userInfo -\ $3 = www.ics.uci.edu domain | authority $4 = port -/ $5 = /pub/ietf/uri/ path $6 = query without ? $7 = Related fragment without # |
code » | ||||||||
|
goog.uri.utils.trailingQueryPunctuationRe_()
Regexp to find trailing question marks and ampersands.
|
code » |
|
An array representing a set of query parameters with alternating keys
and values.
Keys are assumed to be URI encoded already and live at even indices. See
goog.uri.utils.QueryValue for details on how parameter values are encoded.
Example:
var data = [ // Simple param: ?name=BobBarker 'name', 'BobBarker', // Conditional param -- may be omitted entirely. 'specialDietaryNeeds', hasDietaryNeeds() ? getDietaryNeeds() : null, // Multi-valued param: &house=LosAngeles&house=NewYork&house=null 'house', ['LosAngeles', 'NewYork', null] ]; |
Code » |


Delhi’s air quality likely to improve in two days
The night temperatures have also dropped and the wind speed is expected to improve by Saturday.
DELHI: The air quality further worsened in the national capital on Friday taking the Air Quality Index (AQI) towards the higher end of the ‘very poor’ category at several places and on the lower end of the ‘severe’ zone in outer Delhi. The night temperatures have also dropped and the wind speed is expected to improve by Saturday.
The overall AQI in Delhi was 339. The Ministry of Earth Sciences’ System of Air Quality and Weather Forecasting and Research (SAFAR) has predicted an AQI of 329 across Delhi NCR for today which is towards the lower end of the ‘very poor’ category.
“An increase in surface and boundary layer wind speeds is forecasted from Friday afternoon for the next two days. The condition is forecasted to improve significantly to the lower end of the ‘very poor’ category; further improvement to the poor category is expected by 24 November. The high wind speed is likely to flush out accumulated pollutants over the Delhi region,” SAFAR stated.
It also underlined that by the next few days, wind speeds are likely to have a positive impact on the AQI of northwest India. As per the Central Pollution Control Board (CPCB), the AQI recorded in ‘severe’ category, on Friday, included outer Delhi’s Anand Vihar with 412 and Rohini with 420 in the evening.
In south and central Delhi, most places recorded an AQI of over 300, on the higher end of the ‘very poor’ category including ITO at 358, JLN Stadium at 366, Lodhi Road at 326 and Mandir Marg at 335.


--- layout: post status: publish published: true title: "看图说话：四级单词书的新用途" author: Leask author_login: leask author_email<EMAIL_ADDRESS>author_url: https://leaskh.com wordpress_id: 270 wordpress_url: http://leaskh.wordpress.com/2008/03/21/%e7%9c%8b%e5%9b%be%e8%af%b4%e8%af%9d%ef%bc%9a%e5%9b%9b%e7%ba%a7%e5%8d%95%e8%af%8d%e4%b9%a6%e7%9a%84%e6%96%b0%e7%94%a8%e9%80%94 date: '2008-03-21 09:07:42 +0800' date_gmt: '2008-03-21 09:07:42 +0800' categories: tags: [] comments: [] ---


← offliner-updater-reinstall.js |
|
|---|---|
|
How to write an update implementation |
|
|
Remember including offliner will export the |
|
|
Should check for the latest version. It must return a promise resolving with a version tag, which is a string representing the version. |
|
|
For this demo we are checking the hash of the HEAD of gh-pages branch on GitHub. We will use the free GitHub API for that end. |
|
|
api.github.com/' + path; |
|
|
Once we know the API URL, simply fetch and extract the hash field from the response. |
|
|
Should check if the version from the step above is a new version given the current one. Notice offliner is not aware about the meaning of your versions but you could write middleware understanding semver for instance. |
|
|
The update process set some flags you can check in the |
|
|
We have a new version every time the hash changes. |
|
|
Should implement how to update the current cache. |
|
|
The callback |
|
|
Of course you can provide as many extra functions as you need. |
|


ProtoSerde(parser: Parser<T>)
The ProtoSerde class is a Kafka Serde/Serializer/Deserializer for Proto, version 2 and 3, objects.
T
- is the concrete Proto type to construct the ProtoSerde for.
parser
- for serialization and deserialization of T.
See Also


The method used in here was designed from the beginning to handle hundreds, possibly thousands of pages easily by running a few commands in linux shell, requiring only a basic text editor capable of detecting changed content(gedit is fine), but no additional software what so ever. This is for sites that are constantly expanding, like OSRC, blogs, news page, shops, etc, where changes must be applied to possibly thousands of pages at once... This process may not be appropriate, if you're looking for a few page online presence.
Even with that in mind, the scripts may or may not require changes to suit your specific needs. I can not guarantee that this is gonna make your life easier.
I also will not add features on request! I only add features that I need, the rest is up to you. Open source does not mean that I'm gonna make your wish a reality, it means that it's available for you to use/modify/re-distribuite it according to the license.
Copyright (c) 2018, Tibor Áser Veres
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

- Hover the mouse to the left, or tap the arrow at the top left corner to reveal the menu.
- Click/tap the Sun/Moon in the top right corner to switch between light and dark themes.


Isar735.github.io
Using First Person in an Academic Essay: Microsoft Word to write this essay. If I tried to avoid first-person essay is being written. Writing in first person means writing from the author’s point of view or perspective. Some examples illustrate how this works. Can a persuasive essay be written in first person - Benefit from our cheap custom term paper writing service and get the most from perfect quality forget about.
When to Use First-Person Writing in Your Essays - Kibin. The Don’ts of Persuasive Writing 1. Don’t be negative. Crafting a First-person Essay WritersDigest.com.
This post will cover when it s okay to use first-person writing in your essays and when it s . Try writing an essay about the first Login to access the Upswing Virtual Learning Center for Houston Community College.
Crafting a First-person Essay. By: Tom Bentley the alchemy that occurs when the written word collides with the chemicals of your consciousness. The Don’ts of Persuasive Writing 1. . Do use the editorial “we” rather than the first person “I . writing can be in the form of an essay, letter Can a persuasive essay be written in first person. Examples of Writing in First Person - YourDictionary. Login Houston Community College Online Tutoring. Is A Research Paper Written In First Person. Can I Use First-Person Be creative writing rutgers when using this study or first analysis essay using personal pronouns as the first one or two written. Can a persuasive essay be written in first person - No Fs with our high class essay services. leave behind those sleepless nights working on your essay
Buy Essay Online Now Urgent Papers The First Person - Writing Commons.
Welcome to CoolEssay. Buy Essays Online - Professional Essay Writing Get your custom-written essay from a professional writer at CoolEssay. Using First Person in an Academic Essay: Written by Fredrik DeBoer Parent part of the power of the first person in an academic essay is that it is a rarely used alternative to the typical. Can a persuasive essay be written in first person


Running MAVROS after system boot¶
Sometimes, It is more convenient to run ROS launch files automatically after robot’s computer boots up. For example, if you are working with multiple drones in a swarm, it is painful to log into each drone and run mavros manually. So, to solve this issue, we can run mavros automatically after system boots. This tutorial shows you one way on how to run ROS launch file after system starts.
Create a simple systemd service¶
Create mavros.service
file in /lib/systemd/system
cd /lib/systemd/system
sudo nano mavros.service
Add the following contents:
[Unit]
Description=mavros
[Service]
Type=forking
ExecStart=/bin/bash -c "source /opt/ros/kinetic/setup.bash; /usr/bin/python /opt/ros/kinetic/bin/roslaunch mavros px4.launch"
Restart=on-failure
[Install]
WantedBy=multi-user.target
Save and exit by hitting CTRL+X
, then Y
, then [ENTER]
Then run:
sudo systemctl daemon-reload
And enable it on boot:
sudo systemctl enable mavros.service
Then, reboot and px4.launch
should be executed after boot.


Angular directives are used to attach new behavior to DOM elements or to create reusable components. Most of the commonly found Angular functions, such as ngModel, ngController, ngHide and ngShow are directives. Most of the features you will need in your application are already available using the built-in Angular directives. However, it may become necessary to create a custom directive. Directives are created using the .directive(name, [dependencies, function()])
function on the Angular module object.
// mymodule-directive.js // Retrieve previously created module and create directive with no dependencies angular.module('myModule') .directive('myDirective', [function() { 'use strict'; return { restrict: 'EA', // Restrict to element and attribute, templateUrl: 'template.html', scope: { // Create isolate scope name: '=', // Bind to property in parent scope age: @', // Bind to evaluated value of a property in parent scope update: '&' // Bind to function in parent scope }, link: function(scope, element, attrs, controllers) { // Setup any observers or watchers and do DOM manipulation here } } } ]); //template.html <div ng-controller="myController as myController"> <!-- Use element syntax --> <my-directive name="myController.userName" age="21" update="myController.updateName(name)"> </my-directive> <!-- Use attribute syntax --> <div my-directive name="myController.userName" age="21" update="myController.updateName(name)"> </div> </div>
=
and @
in the isolate scope definition. The =
binds the scope property to a property on the parent scope. The @
binds the scope property to the evaluated value of the passed in DOM attribute. What this means is that the attribute value is always a string and is necessitates using $observe
in the link function if you want to respond to changes in the bound attribute.


Home
features
team
gallery
contact
ULTIMATE MINDS
Exploring technologies
developing the world and reaching the greater heights everyday
LOGIN
SIGNUP