Ruby developer. Musician. Traveler.
Idea of learning how to code came to my mind last year. After 3 years working as a Customer Support and Team Lead I noticed that work I'm doing doesn't satisfy me anymore. I started to think about what kind of job would fulfil me, in terms of doing something meaningful, stretch my brain, keep learning new things and developing myself. I was lucky to meet person who inspired me and I realized that it's never too late to learn new skills. At the same time I bought saxophone and started to learn how to play that :D
I've found a Skillcrush course and decided to take their Break into Tech course. I've started with basics: HTML, CSS, Git & GitHub. After that Responsive Web Design and basics of JavaScript and jQuery. Throughout the course I felt that back-end programming suits me better and I continued with Ruby on Rails course. I've learned Ruby language, Sinatra and eventually Rails. All of this while having full-time job. It was a busy time, but I learned I’m capable of pretty much anything if I put my mind to it. You can find all my projects in Portfolio section.
Saxophone isn't only instrument I play. Since I was a kid I was learning to play flute. At the age of 16 I won a music school competition and was the best flute player in Czech Republic. And I'm already 12 years flute player in Májovak Symphonic Band - the oldest wind orchestra in Czech Republic. I also know few songs on piano and play peruvian flute quena which I bought last year in Peru.
I traveled through 40 countries already, have a scratch-off map in my room and collection of magnets from each of countries I've been too. I like to meet people and learn about the country from locals, that's why mostly I do hitchhiking and use couchsurfing.org to find a place to stay. So far I traveled with my dear friend. One day I would like to try traveling solo too.
Hi, I am Daniela. And I am so excited to work with you.


555 555 5555
Search
Home
Services
Landscape Design
Landscape Contracting
Sustainable Landscaping
Planting Plans
Hardscaping
Water Features and Garden Structures
Booking
Blog
About
Contact & Location
Menu
Home
Services
Landscape Design
Landscape Contracting
Sustainable Landscaping
Planting Plans
Hardscaping
Water Features and Garden Structures
Booking
Blog
About
Contact & Location
About Leaf & Mortar


---
layout: single
title: "[How To] Forensic Acquisition in Linux - DCFLDD "
date: '2016-10-24T18:00:00.000+09:00'
author: Joshua James
tags:
- Digital Forensics
- dfir
- Forensic Acquisition
- HowTo
modified_time: '2016-10-24T18:00:00.180+09:00'
thumbnail: https://img.youtube.com/vi/5zSnCeaK-80/default.jpg
blogger_id: tag:blogger.com,1999:blog-2701259639305045003.single-3368826688028688929
blogger_orig_url: http://www.cybercrimetech.com/2016/10/how-to-forensic-acquisition-in-linux.html
---
This video shows how to use DCFLDD to acquire a disk image from a suspect device in the Linux command line. DCFLDD is an expanded version of 'dd' that supports additional features that are useful for digital forensic acquisitions.


--- layout: article title: "Failed to Ping Server" last_updated: ---
If you were trying to add a server (or view your server list) and were linked to this page, there it is likely that the server gave the game bad (corrupt) data to your game (client).
If you were trying to add a server (or view your server list) and were linked to this page, there it is likely that the server gave the game bad (corrupt) data to your game (client).
Fortunately, it is relatively simple to resolve this issue, although you
If you were trying to add a server to your multiplayer list, and got this error, then the server may have
returned unexpected data to the client which caused it to crash.
To fix this, you may need to reset your server list to default.
If you are getting this error after adding a server to the game, then the game may not recognize the server, and cause it to crash.
To fix this, you may need to reset your settings to default, by following these instructions:


--- layout: post title: 'Visual Studio Code: Yeoman Setup' date: 2015-05-05 12:35:30.000000000 -04:00 type: post published: true status: publish categories: - Development tags: - AngularJs - Visual Studio Code - Yeoman meta: _edit_last: '1' _oembed_127d97fc049aa79a375c045eb762c980: '{{unknown}}' _oembed_d707b850ad4b607e8aa818a2e5b75e83: '{{unknown}}' _oembed_81dc98a9b19aeb8d3caba48555573bc3: '{{unknown}}' _jetpack_related_posts_cache: a:1:{s:32:"8f6677c9d6b0f903e98ad32ec61f8deb";a:2:{s:7:"expires";i:1457871781;s:7:"payload";a:3:{i:0;a:1:{s:2:"id";i:1491;}i:1;a:1:{s:2:"id";i:2058;}i:2;a:1:{s:2:"id";i:2135;}}}} author: login: adminian email<EMAIL_ADDRESS>display_name: adminian first_name: '' last_name: '' ---
I'm a huge fan of Sublime Text (and a paying customer), so when I heard we'd released a light weight code editor called Visual Studio Code, I had to go see...
I was happy to see that it is trully light weight, shares some of the Sublime Text layout features, and is cross platform. Awesome... After downloading and installing it, I have to say I was a little lost. This is because I was thinking Visual Studio and not Sublime Text. Once I made that leap and realized there is no file -> New Project I went to work. Here is what I did...
First I noticed on the "Start" screen there is an instruction that states "If you don't have an existing project, we suggest using Yeoman to scaffold out a new one.".
[caption id="" align="aligncenter" width="878"] VSCode... use Yeoman[/caption]
Ok, so let's do that. I already had node installed so I just walked through verifying I had the latest and greatest node/npm bits using:
node --version && npm --version
This shows that I am in fact running better than:
From there let's get the Yeoman tool-set installed globally.
npm install --global yo bower grunt-cli
Once I've installed the tool set, I wanted a generator to scaffold out the project so I don't have too.
npm install --global<EMAIL_ADDRESS>Now! I have all the necessary tools to actually lay down some starter bits and get coding. Since I'm using the Yeoman tutorial as the basis to get my project going and I like Angular we'll scaffold out an Angular starter project.
yo angular
I'm not ready to use Sass right now so I will say no to that and accept the defaults from there.
[caption id="" align="aligncenter" width="1091"] Angular Gen Output[/caption]
Awesome! Now I have an Angular Web project ready to go. Let's open it in VSCode and start work. File -> Open Folder aaaannnd...
[caption id="" align="aligncenter" width="1044"] Ready to work![/caption]
Next post we'll do some work in VSCode... till then.


The login form is vulnerable to SQL injection, and it is possible to bypass the login by using ' OR 1=1--
as a username. Before we can dump all the passwords, we need to identify places on the page where data from the login
query is used.
Log in with ' OR 1=1--
as username.
The name of the currently logged-on user is displayed in the top right corner. It might be possible to dump the data here or in the session cookie. We can use a UNION-based attack to dump the passwords.
There are two key requirements that must be met for a UNION based injection to work:
To identify the number of columns, we can systematically inject queries with different numbers of columns until the query is successful, which in this case means that we will get logged in.
Try to log in with the examples below and increment the columns until the query is successful.
' UNION SELECT 1--
' UNION SELECT 1,2--
Using ' UNION SELECT 1,2--
as username, we match the number of columns in the original SQL query, and the
application lets us in. After logging in, we can see that the username is replaced with the integer 2 (top right
corner), which we used as a name for column two in the injected query.
The next step is to identify what database is in use. There are a few ways to do this, but the easiest way is to ask the database to identify itself. The following queries can be used to identify MySQL/MSSQL and SQLite:
# MySQL and MSSQL
' UNION SELECT 1, @@version--
# For SQLite
' UNION SELECT 1, sqlite_version()--
With this information, it is possible to enumerate the database. A cheat sheet can help with this, for example, PayloadsAllTheThings.
With the help of group_concat(), all passwords in the users
table can be dumped.
Log in with the following query to dump all the passwords:
' UNION SELECT 1,group_concat(password) FROM users--


Relative location within the checkout of your Pipeline As Yaml script.
Note that it will always be run inside a Groovy sandbox.
Default is Jenkinsfile.yaml
if left empty.
(just use checkout scm
to retrieve sources from the same location as is configured here)


Greetings!!! I am Mr Martins Imaa Lucas, a member of staff in a Corporate Securities firm. We keep valuables for high net worth individuals, blue chip corporations and diplomatic organisations. I am contacting you in regards to our client, the late Chief (Mrs.) Stella Obasanjo, who died on Sunday October 23, 2005 in a surgical operation in Spain. This client has a total deposit of Thirty Two Million United States Dollars in our vaults. After the 9/11 incidents, our company policy do not permit cash deposit, so he confided in me as the foreign operations officer to make this deposit since June 2004. She did this to avoid traces f the money to her since her husband, president Olusegun Obansanjo was against any corruption and embezzlement of funds. The last communication I had with her was on the 25th of August 2005, where she was making arrangements to claim the deposit. Thereafter it was revealed that she died of a surgical operation in Spain in October. After the acknowledgement of her death, it became apparent that there was no claim to her funds since she listed no next of kin in her bio-data form. She made the deposit under the name of Guardian Trust investment (GTI) and disclosed the content as company valuables and Antiques. This was for confidentiality and to reduce taxes. If no claim is made within six months, the company under its storage terms and conditions will legally auction the content of the deposit. If discovered that the content is cash, it will be confiscated and I would be penalised, since I accepted the cash deposit against the company�s regulations. As a staff, it is impossible for me to have access to the funds or claim it myself. More so, such valuable deposits are kept at a different branch, where we have our terminal facilities. Consequently, it is important that I find a credible candidate to play the role of the Trustee or representative of Guardian Trust investment to help claim the deposit. It is on this ground that I need your assistance to claim the funds which will be possible with the information I hold. Once this is achieved, you shall be entitled to 50% of the total funds while I shall retain the balance 50%. I am aware of the risks involved in this proposal, therefore I ask that you consider the factors above and keep it strictly confidential. However, if you feel you are unable to fulfil this role, I request you discard of this letter. I look forward to hearing form you. Thank you. Mr Martins Imaa Lucas


MBESS: The MBESS R Package
Implements methods that useful in designing research studies and analyzing data, with
particular emphasis on methods that are developed for or used within the behavioral,
educational, and social sciences (broadly defined). That being said, many of the methods
implemented within MBESS are applicable to a wide variety of disciplines. MBESS has a
suite of functions for a variety of related topics, such as effect sizes, confidence intervals
for effect sizes (including standardized effect sizes and noncentral effect sizes), sample size
planning (from the accuracy in parameter estimation [AIPE], power analytic, equivalence, and
minimum-risk point estimation perspectives), mediation analysis, various properties of
distributions, and a variety of utility functions. MBESS (pronounced 'em-bes') was originally
an acronym for 'Methods for the Behavioral, Educational, and Social Sciences,' but at this
point MBESS contains methods applicable and used in a wide variety of fields and is an
orphan acronym, in the sense that what was an acronym is now literally its name. MBESS has
greatly benefited from others, see <http://nd.edu/~kkelley/site/MBESS.html> for a detailed
list of those that have contributed and other details.
| Version: |
4.4.3 |
| Depends: |
R (≥ 3.2.0), stats |
| Imports: |
boot, gsl, lavaan, MASS, methods, mnormt, nlme, OpenMx, parallel, sem, semTools |
| Published: |
2018-01-10 |
| Author: |
Ken Kelley [aut, cre] |
| Maintainer: |
Ken Kelley <kkelley at nd.edu> |
| License: |
GPL-2 | GPL-3 |
| URL: |
http://nd.edu/~kkelley/site/MBESS.html |
| NeedsCompilation: |
no |
| In views: |
Psychometrics |
| CRAN checks: |
MBESS results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=MBESS
to link to this page.


Border agents seize 154 pounds of bologna at Texas crossing
EL PASO, Texas (AP) - No baloney: U.S. border agents seized more than 150 pounds of bologna from a driver entering the country from Mexico.
The U.S. Customs and Border Protection says in a news release that the driver told agents Thursday at the El Paso crossing that he had rolls of frozen turkey ham in his pickup truck. Upon further inspection, though, the agents determined that it was 154 pounds of Mexican bologna, which is made of pork.
The agency says the driver was released but the bologna was seized and destroyed. It says bologna can't be carried across the border because it could introduce foreign animal diseases to the domestic pork industry.
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


⇧⌘P, F1Show Command Palette
⌘PQuick Open, Go to File…
⇧⌘NNew window/instance
⌘WClose window/instance
⌘,User Settings
⌘K ⌘SKeyboard Shortcuts
⌘XCut line (empty selection)
⌘CCopy line (empty selection)
⌥↓ / ⌥↑Move line down/up
⇧⌥↓ / ⇧⌥↑Copy line down/up
⇧⌘KDelete line
⌘Enter / ⇧⌘EnterInsert line below/above
⇧⌘\Jump to matching bracket
⌘] / ⌘[Indent/outdent line
Home / EndGo to beginning/end of line
⌘↑ / ⌘↓Go to beginning/end of file
⌃PgUp / ⌃PgDnScroll line up/down
⌘PgUp /⌘PgDnScroll page up/down
⌥⌘[ / ⌥⌘]Fold/unfold region
⌘K ⌘[ / ⌘K ⌘]Fold/unfold all subregions
⌘K ⌘0 / ⌘K ⌘JFold/unfold all regions
⌘K ⌘CAdd line comment
⌘K ⌘URemove line comment
⌘/Toggle line comment
⇧⌥AToggle block comment
⌥ZToggle word wrap
⌥ + clickInsert cursor
⌥⌘↑Insert cursor above
⌥⌘↓Insert cursor below
⌘UUndo last cursor operation
⇧⌥IInsert cursor at end of each line selected
⌘LSelect current line
⇧⌘LSelect all occurrences of current selection
⌘F2Select all occurrences of current word
⌃⇧⌘→ / ←Expand / shrink selection
⇧⌥ + drag mouseColumn (box) selection
⇧⌥⌘↑ / ↓Column (box) selection up/down
⇧⌥⌘← / →Column (box) selection left/right
⇧⌥⌘PgUpColumn (box) selection page up
⇧⌥⌘PgDnColumn (box) selection page down
⌘FFind
⌥⌘FReplace
⌘G / ⇧⌘GFind next/previous
⌥EnterSelect all occurrences of Find match
⌘DAdd selection to next Find match
⌘K ⌘DMove last selection to next Find match
⌃SpaceTrigger suggestion
⇧⌘SpaceTrigger parameter hints
⇧⌥FFormat document
⌘K ⌘FFormat selection
F12Go to Definition
⌥F12Peek Definition
⌘K F12Open Definition to the side
⌘.Quick Fix
⇧F12Show References
F2Rename Symbol
⌘K ⌘XTrim trailing whitespace
⌘K MChange file language
⌘TShow all Symbols
⌃GGo to Line...
⌘PGo to File...
⇧⌘OGo to Symbol...
⇧⌘MShow Problems panel
F8 / ⇧F8Go to next/previous error or warning
⌃⇧TabNavigate editor group history
⌃- / ⌃⇧-Go back/forward
⌃⇧MToggle Tab moves focus
⌘WClose editor
⌘K FClose folder
⌘\Split editor
⌘1 / ⌘2 / ⌘3Focus into 1st, 2nd, 3rd editor group
⌘K ⌘← / ⌘K ⌘→Focus into previous/next editor group
⌘K ⇧⌘← / ⌘K ⇧⌘→Move editor left/right
⌘K ← / ⌘K →Move active editor group
⌘NNew File
⌘OOpen File...
⌘SSave
⇧⌘SSave As...
⌥⌘SSave All
⌘WClose
⌘K ⌘WClose All
⇧⌘TReopen closed editor
⌘KEnter Keep preview mode editor open
⌃Tab / ⌃⇧TabOpen next / previous
⌘K PCopy path of active file
⌘K RReveal active file in Finder
⌘K OShow active file in new window/instance
⌃⌘FToggle full screen
⌥⌘0Toggle editor layout (horizontal/vertical)
⌘= / ⇧⌘-Zoom in/out
⌘BToggle Sidebar visibility
⇧⌘EShow Explorer / Toggle focus
⇧⌘FShow Search
⌃⇧GShow Source Control
⇧⌘DShow Debug
⇧⌘XShow Extensions
⇧⌘HReplace in files
⇧⌘JToggle Search details
⇧⌘UShow Output panel
⇧⌘VOpen Markdown preview
⌘K VOpen Markdown preview to the side
⌘K ZZen Mode (Esc Esc to exit)
F9Toggle breakpoint
F5Start/Continue
F11 / ⇧F11Step into/ out
F10Step over
⇧F5Stop
⌘K ⌘IShow hover
⌃`Show integrated terminal
⌃⇧`Create new terminal
⌘CCopy selection
⌘↑ / ↓Scroll up/down
PgUp / PgDnScroll page up/down
⌘Home / EndScroll to top/bottom


The portfolio underperforms relatively to the benchmark, S&P 500, during the backtest period.
In general, stocks that have a low B/P ratio are considered to be value stocks, and similarly, stocks that have a high B/P ratio are referred to as growth stocks.
During a bull market, which is associated with high GDP growth, value stocks tend to underperform growth stocks, as investors are optimistic about future earnings growth.


{# # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -#} {% extends "email/_base/body.html" %} {% block content %}
Someone, perhaps you, has added this email address ({{ email_address }}
) to their PyPI account.
If you wish to proceed with this request, click this link to verify your email address
This link will expire in {{ n_hours }} hours.
If you did not make this request, you can safely ignore this email.
{% endblock %}


The following is a summary Sales report for the Brazilian E-Commerce company, Olist Store. The data, available here, spans from 2016 to 2018 and contains the variables shown below. The goal of this report is to enable executives, business managers, and finance managers to improve business practices, operations, customer service and ultimately, profitability.
Most Valuable Customers Top Performing Products Explore Market Trends Order Processing Times Overiew
On the left are the our top 15 customers (by revenue)
The total business with these customers ranges from ~12K at the top to ~4K at the bottom of the list. The jump is uniform from one customer to another as we go up the list.
Note: Clicking on any of the customer (bar) brings up the transactions in the time period covered by the data.
There are multiple transactions with some customers. The top customer has 8 equal sized transactions for a single product (Telephone gear). The bottom customer has 1 transaction for Small Appliances
.
Most customers have one transaction (single product), that is bigger in size than the individual transactions we have with our top customer.
How do we introduce our customers to other categories of products?
It is nice that our business is not concentrated with a few very large customers. It'll be good to keep it that way. The goal of getting Market + 3% growth with each customers should remain.
Our blockbusters are the top 4 products. ~50% of the business is these products. The products are
Note: Hover over a product category for more detail on the chart
A thing to note is that the bottom 4 in the chart (Garden Tools, Toys, Auto and Misc. Cool Stuff), make 25% of the business, which is not a trivial component.
Also, some of our bottom performers feature in the transactions with our most valuable customers (Telephone equipment is the single product that our top customer buys). Cutting these products could lead to a severe hit in top line.
It'll be worthwhile exploring a reduction in the portfolio. This has to be done with caution though i.e. we cannot lose the categories that in the transactions for our top customers.
A Market + 3% growth should remain our goal for the top 4 catetories. Growth in the bottom should be gravy i.e. we can choose to not invest in that growth.
Knowing what customers are purchasing provides insight into where the market is headed, allowing us to adjust as
a business. The line chart to the left visualizes this data to make it easier to draw these insights and better
understand trends.
A line on the chart represents a product category. As an example, we have the line drawn for our health and
beauty products. From each data point along the line, you are able to identify the amount of orders made for a
given month. In addition, the graph is interactive! At any time, hover over a line within the graph to reveal
additional information.
Scroll down to explore further!
The graph has been updated to highlight our top 5 most popular products. Popularity was measured by the amount of growth in purchase order volume over the past 12 months. This list includes health and beauty, housewares, computer accessories, auto, and construction tools.
Some interesting insights to draw:
The graph has been updated to solely look at last year's holday season, October to January. This provides large. scale trends across our entire product inventory. Understanding these major swings can help us allocate resources, adjust product inventory, and forecast finances.
Insights:
The previous examples showcase how a user might interact and draw insights from the visualization. At this point, the graph displays all of our products, but you can filter to specific products by using the dropdown selection.
The first graph shows the processing time (Order entry to delivery) for the states that have the biggest average processing times. The graph goes from highest to lowest (top to bottom).
The average processing times range from ~400 hrs to ~ 600 hrs on this graph. 500 is what we think is a respectable time for most of our customer (considering the average across products and geographies). We should investigate what's leading to higher delays in states that show "Red".
States from CE to MA are close to 500 hrs so there might be some low hanging fruits that bring us below the magic number.
States from PA to AP should get a lot of analysis with the aim of either explaining the delays or eliminating them.
The delays may not be caused by all products in a state, so its worth looking at products that are the bottleneck. Clicking on a state(bar) gets us that detail.
The products in 2nd chart are arranged by the average processing times (Averages with in a state). Clicking on AP shows that "Sports_leisure" is the worst offender. "Agro" and "Telephony" are actually doing fine there.
A thing to note (by clicking at the bottom of states graph) is that states with good averages have pretty much all the products doing fine with timing. There's no wide variances. Its only the "Red" states that have some products that are getting delayed.
The take away here would be to eliminate the worst delays for individual products in states where they are impacted. One way to get started would be to compare these products in problem states with states where they are not facing these delays.
Seeing less of "Red" on this chart could also be a metric.
In this view, we can see the overall top cities for number of orders and for total sales (R$). We can also see the most popular products and their earnings.
Upon examining the Total Order by Product Category and Total Sales by Product Category charts, we see that the "watches_gifts" category may not receive the most orders, but brings in the second highest amount in Total Sales (R$557,431), beating out "bed_bath_table" with nearly twice the number of orders (5,440 v 2,832 orders). Hove over the bars and points in the chart for more information.
In this view, we can also see that November has a pretty large spike in sales. Let's use this dashboard to explore our data.
Using the filters along the right, we will filter the data down to 2017 Q4. Generally, we see that the main patterns in terms of popular product categories ("watches_gifts", "bed_bath_table", and "heath_beauty") and cities (Sao Paulo and Rio de Janeiro) hold.
Before examining sales on the most spiked day, let's examine a different day in the month.
Using the Total Order by Date chart, we hover over the line and select November 12th, 2017.
Sao Paulo is the top city for number of orders and income, overall, but here we see a shift from Rio de Janiero. They had fewer than half the orders of Sao Paulo, but brought in more money. Let's drill down to what they ordered.
By clicking on the pink Rio de Janiero bar in the Total Orders by City chart, we filter the dashboard by order placed from Rio de Janiero only. We can use the Total Sales by City chart to confirm we are looking at only Rio de Janiero, as it should be the only bar listed in the chart.
Using the Product charts at the bottom of the dashboard, we an see they made some expensive orders in "sports_leisure" and "agro_industry_and_commerce".
Now, let's take a look at our the sales spike on November 24th, 2017.
Again, we use the first timeline chart to select a day to examine, in this case the spiked sales on Novemebr 24th, 2017. Use the navigation tips below to further explore the data!


Create a Custom Client Connector
Now that you have written a main program and written a passthrough service for integration scenarios, it is time to write a custom client connector to solve a problem.
This tutorial provides instructions on how to write a custom connector that invokes GitHub REST APIs.
This tutorial consists of the following main sections.
Prerequisites: Download Ballerina and set it up. For instructions on how to do this, see the Quick Tour. Use the Quick Tour to also get an understanding of the Ballerina Composer and how it works. It is also recommended to try to write a main program and write a passthrough service before trying this out. This helps you to get familiar with Ballerina and how it can help achieve integration scenarios.
About connectors and actions
When integrating and making a robust application, a need arises to make messaging channels in between various interfaces and weave a structure to encompass them together. When interacting with commonly available interfaces, rather than creating the structure of the messaging channel each and every time through code, it is worth keeping a programmed unit that can be reused. This component interacts with the given interface with ease and less complexity. In a way, such a unit can be described as a facade as it will mask any complexities that exist when interacting with the real interface and can be a facade to any party connecting to the particular interface.
Ballerina brings out a concept called connectors that makes the above possible with ease. Using Ballerina connectors, a custom Ballerina implementation can be made that can be used to communicate with a given interface. This custom connector can be made out-of-the-box just using Ballerina itself. The use of these custom connectors can span from a database to a REST endpoint and can even extend to a JMS queue as the requirement demands.
Connectors represents network services that are used by a Ballerina program. The term "network services" here is meant in the broadest possible sense - Ballerina is designed to connect with everything from a database to a JMS queue to an OAuth protected API to LDAP servers and more. Therefore, connectors are the representation of any such remote service in Ballerina.
Graphically, connectors are modeled as a separate lifeline to represent their independent and parallel execution. However, that lifeline is not a programmable thread of execution for the Ballerina developer - it only exists to represent the remote system.
Connectors may need to have usage specific parameters and, hence, must be instantiated prior to use. For example, an HTTP connector needs at least the URL to connect to.
A connector comes with a set of actions that represent the interactions that one can have with the remote service. Actions can be one directional or bi-directional and represent blocking from the calling worker's perspective. That is, the calling thread is blocked until the action has completed its remote interaction.
A connector contains the following syntax in Ballerina.
[ConnectorAnnotations]
[public] connector ConnectorName ([Connector initialize parameters]) {
VariableDeclaration;*
ActionDefinition;+
}
Any variables declared at the connector level is visible to all actions. The lifetime of the connector also defines the lifetime of the variables and they are local to each connector instance.
The structure of an action definition is as follows.
[ActionAnnotations]
action actionName ([Input parameters]) ([Output parameters]){
}
The execution semantics of an action are the same as that of a function: it runs using the caller's thread and the caller blocks until the action completes execution.
About custom client connectors
When creating a custom client connector, you need to be aware of the following.
- The capabilities you need to expose through the connector and logical separation. These is represented by separate actions when the connector is being created.
- Supportive extensions needed. These can be achieved by Ballerina itself or by integrating to an existing entity through Ballerina
- Packaging the connector
In order to demonstrate the above aspects, this tutorial uses a connector that can invoke GitHub REST APIs. GitHub contains a set of REST APIs that can be used to achieve a vast set of functionalities. Out of the collection, REST APIs that cover the following functionalities are used.
- View repositories for the authenticated user.
- List repositories for an organization.
- List issues per repository according to the state
The above can be categorized as the capabilities expected from the connector and these are represented by separate actions.
Furthermore, in order to invoke the APIs, an authentication header must be sent that encompasses the base64 encoded value of the username and the token. This is a supportive extension and can be powered by Ballerina itself by using its inbuilt base64encoder.
After creating the connector, you need to package it in a way that the connector can be distributed. As a comprehensive packaging mechanism is work in progress, currently we will be using the available packaging model to demonstrate the usage of the connector. The reason for using the package is that, when the inbuilt packaging is available, the structure available now can be extended and packaged to a distributable mode.
Create a custom client connector
This section of the tutorial explains the way a sample custom client connector is built.
-
On the tool palette, click More Connectors to see a list of all available connectors.
-
From the list that appears, expand ballerina.net.http and drag a ClientConnector onto the canvas.
- Provide the connector parameter list. In order to connect to GitHub APIs, this connector uses an authenticated user and a token obtained for that user. Furthermore, you need to initialize the connection to the GitHub API as shown below.
public connector ClientConnector (string username, string token) { endpoint<http:HttpClient> gitEP { create http:HttpClient("https://api.github.com", {});} }
- Prepare the base64 encoded key value to be sent in authorization header to the back end. The Ballerina built-in base64encoder is used for this purpose and the logic in this scenario is written in another function that resides in the same package as the connector.
package org.wso2.ballerina.connectors.github; import ballerina.util; function getBase64EncodedKey (string value1,string value2) (string encodedString) { string toEncode = value1 + ":" + value2; encodedString = <string>util:base64encode(toEncode); return; }
- The above function is called within the connector to obtain the encoded string as shown below.
public connector ClientConnector (string username, string token) { endpoint<http:HttpClient> gitEP { create http:HttpClient("https://api.github.com", {});} string authHeader = getBase64EncodedKey(username, token); }
- The first action retrieves the list of repositories per organization. The action defined takes in the desired organization as a parameter and returns a HTTP response and, within the action, the relevant REST API is invoked.
action getReposOfOrg (string orgnization) (http:Response, http:HttpConnectorError) { http:Request request = {}; string gitPath = string `/orgs/{{orgnization}}/repos`; request.setHeader("Authorization", "Basic "+ authHeader); http:Response response = {}; http:HttpConnectorError err; response, err = gitEP.get(gitPath, request); return response, err;}
Other actions can be configured in a similar manner.
Using the connector
In order to test the connector, you must have a Ballerina program with either a main function or a service. This tutorial uses a service for the purpose. This test service is created in another package.
- Import the client connector made above to the file where the service is written.
package com.test.sample; import org.wso2.ballerina.connectors.github;
- Inside a resource initialize and invoke the client connector as follows.
resource getReposForOrganization (http:Request req,http:Response res, string org) { endpoint<github:ClientConnector> gitHubConnector{ } string username = req.getHeader("Username"); string tokenEnc = req.getHeader("Token"); github:ClientConnector gitHubConn = create github:ClientConnector(username, tokenEnc); bind gitHubConn with gitHubConnector; http:Response gitHubResponse = {}; gitHubResponse, _ = gitHubConnector.getReposOfOrg(org); res.forward(gitHubResponse); }
The following is the full code of the sample.
package org.wso2.ballerina.connectors.github;
import ballerina.net.http;
@Description {
value:"GitHub Client Connector"
}
@Param {
value:"username: github username"
}
@Param {
value:"token: github personal token"
}
public connector ClientConnector (string username, string token) {
endpoint<http:HttpClient> gitEP { create http:HttpClient("https://api.github.com", {});}
string authHeader = getBase64EncodedKey(username, token);
@Description {
value:"Retrieve repositories for the authenticated user"
}
@Return {
value:"Response object"
}
action getReposOfUser () (http:Response, http:HttpConnectorError) {
http:Request request = {};
string gitPath = "/user/repos";
request.setHeader("Authorization", "Basic "+ authHeader);
http:Response response = {};
http:HttpConnectorError err;
response, err = gitEP.get(gitPath, request);
return response, err;
}
@Description {
value:"List repositories for an organization"
}
@Param {
value:"organization: name of the orgnization on which repositories should be fetched"
}
@Return {
value:"Response object"
}
action getReposOfOrg (string orgnization) (http:Response, http:HttpConnectorError) {
http:Request request = {};
string gitPath = string `/orgs/{{orgnization}}/repos`;
request.setHeader("Authorization", "Basic "+ authHeader);
http:Response response = {};
http:HttpConnectorError err;
response, err = gitEP.get(gitPath, request);
return response, err;
}
@Description {
value:"List all issues under a given repository"
}
@Param {
value:"organization: name of the orgnization on which issues should be fetched"
}
@Return {
value:"Response object"
}
action getIssuesOfRepoByState (string orgnization, string repository, string state) (http:Response, http:HttpConnectorError) {
http:Request request = {};
string gitPath = string `/repos/{{orgnization}}/{{repository}}/issues?state={{state}}`;
request.setHeader("Authorization", "Basic "+ authHeader);
http:Response response = {};
http:HttpConnectorError err;
response, err = gitEP.get(gitPath, request);
return response, err;
}
}


Click on a briefcase to see its content. If you stop and bet on the one with the highest amount of money, you win; otherwise you lose. Read more about this game.
Number of briefcases: 3 · 5 · 10 · 15 · 20 · 50 · 100 · 250 · 500
Find controls at the bottom.
Your record with {{game.n}} briefcases: {{game.record.gamesWon}}/{{game.record.gamesPlayed}} ({{100 * game.record.gamesWon / game.record.gamesPlayed | number:2}}%) - Reset


The bride proudly bestrode her handsome horse astride, symbolizing her newfound power and independence. [G|D]
Through the jeers and scorn, the brave chemist ignored the crowd's derision, proud to have discovered the previously unknown fluoridechloride compound. [G|D]
The happy couple embarked on a joyride in an old pickup truck, weaving through country roads while taking in the fresh air of the hayride and admiring the beauty of the hydride. [G|D]
The determined leader strode confidently forward, overriding any obstacles in his way with a single nitride of his sword as he propelled towards his destination. [G|D]


Recent talks
{% assign all_talks_sorted = all_talks | sort: "date" | reverse | slice: 0, 9 %}
{% for talk in all_talks_sorted %}
{% if talk.note %}
{% endif %}
{% if talk.meeting %}
{% endif %}
{% if talk.location %}
{% endif %}
{% endfor %}
{% assign current_members = site.data.people | where: "section", "Current members" | map: "members" | map: "name" %}
{% assign authors = site.data.talks | getkeys | uniq %}
{% assign current_authors = authors | intersection: current_members %}
{% assign former_authors = authors | complement: current_members %}
{% assign talk_sections = current_authors | gendict: "All talks given by current members" | appenddict: former_authors, "All talks given by former members" %}
{% for sec in talk_sections %}
{{ talk.author }}
{{ talk.note }}
{{ talk.meeting }}
{{ talk.location }}
{{ talk.date | date: "%B %-d, %Y" }}
{{ sec[1] }}
{% for author in sec[0] %}{{ author }}
{% assign author_talks_sorted = all_talks | where: "author", author | sort: "date" | reverse %}
{% for talk in author_talks_sorted %}
{% endfor %}
{% endfor %}
{% endfor %}
{% if talk.note %}
{% endif %}
{% if talk.meeting %}
{% endif %}
{% if talk.location %}
{% endif %}
{{ talk.note }}
{{ talk.meeting }}
{{ talk.location }}
{{ talk.date | date: "%B %-d, %Y" }}


Press n or j to go to the next uncovered block, b, p or k for the previous block.
| File | Statements | Branches | Functions | Lines | |||||
|---|---|---|---|---|---|---|---|---|---|
| ComparisonModal.jsx |
|
95.83% | 23/24 | 100% | 4/4 | 87.5% | 7/8 | 95.83% | 23/24 |
| OutfitList.jsx |
|
62.74% | 32/51 | 50% | 8/16 | 30% | 3/10 | 64.58% | 31/48 |
| ProductCard.jsx |
|
61.53% | 24/39 | 60% | 12/20 | 37.5% | 6/16 | 61.53% | 24/39 |
| RPList.jsx |
|
54.54% | 24/44 | 22.22% | 4/18 | 40% | 6/15 | 54.54% | 24/44 |


Our staff at A Cuppa Joe are all trained in the handling and preparation of our coffee beans, which are roasted fresh from our suppliers. We grind a variety of coffee blends daily, and always offer a fresh cup of coffee to you no matter what your tastes may be. Our flavored coffees are brewed, grinded, and served separately from our non-flavored blends to keep their flavors strong.
Our coffee beans are grown organically from Colombia. Our partners in Colombia are disciplined in the art of growing coffee beans for maximum quality using only organic techniques to ensure the integrity of our product before its shipped to our stores.
All of our coffee beans have been produced in a way to minimize our impact to the enviroment. Our partners are required to give each worker a fair wage and health services to ensure we do our part to help elimate poverty world wide.
Using the latest in coffee extraction we are experts at making your coffee at the optimal temperature.
We strive to make the best possible experience for you. With our wide selection of pasteries and coffees we are confindent you'll find what you need.
We encourage a quiet healthy atmosphere for our customers to enjoy their coffee. Its a great place to finish reading that book you've started or study hard for that exam.


public interface DataValidityFlagIF
| Modifier and Type | Method and Description |
|---|---|
java.lang.String |
getValidityFlag()
gets the Validity flag
|
boolean |
isClinicalIssue()
gets the clinical issue flag
|
boolean |
isFunctionalIssue()
gets the Functional issue flag
|
boolean |
isIssuePresent()
gets a general issues flag
|
boolean |
isManifestationSequenceIssue()
gets the Manifestation sequence issue flag
|
boolean |
isServiceIssue()
gets the Services issues flag
|
void |
reset()
Resets the values to false and the flag to 1, allowing for object re-use.
|
void |
setClinicalIssue(boolean bool)
Set to true if there is a Clinical issue.
|
void |
setFunctionalIssue(boolean bool)
Set to true if there is a Functional issue.
|
void |
setManifestationSequenceIssue(boolean bool)
Set to true if there is a Manifestation Sequence issue.
|
void |
setServiceIssue(boolean bool)
Set to true if there is a Services issue.
|
void |
setValidityFlag(java.lang.String val)
Sets the issues by setting the validity flag value.
|
boolean isManifestationSequenceIssue()
void setManifestationSequenceIssue(boolean bool)
bool
- boolean isClinicalIssue()
void setClinicalIssue(boolean bool)
bool
- boolean isFunctionalIssue()
void setFunctionalIssue(boolean bool)
bool
- boolean isServiceIssue()
void setServiceIssue(boolean bool)
bool
- java.lang.String getValidityFlag()
void setValidityFlag(java.lang.String val)
val
- void reset()
boolean isIssuePresent()


The QStackedLayout class lays out a set of child widgets, or "pages", and shows only one at a time, hiding the others from the user. The QStackedLayout itself is invisible and provides no intrinsic means for the user to change the page. The small arrows and the dark gray frame in Figure 6.5 are provided by Qt Designer to make the layout easier to design with. For convenience, Qt also includes QStackedWidget, which provides a QWidget with a built-in QStackedLayout.
The pages are numbered from 0. To make a specific child widget visible, we can call setCurrentIndex() with a page number. The page number for a child widget is available using indexOf().
The Preferences dialog shown in Figure 6.6 is an example that uses QStackedLayout. The dialog consists of a QListWidget on the left and a QStackedLayout on the right. Each item in the QListWidget corresponds to a different page in the QStackedLayout. Here's the relevant code from the dialog's constructor:
PreferenceDialog::PreferenceDialog(QWidget *parent) : QDialog(parent) { ... listWidget = new QListWidget; listWidget->addItem(tr("Appearance")); listWidget->addItem(tr("Web Browser")); listWidget->addItem(tr("Mail & News")); listWidget->addItem(tr("Advanced")); stackedLayout = new QStackedLayout; stackedLayout->addWidget(appearancePage); stackedLayout->addWidget(webBrowserPage); stackedLayout->addWidget(mailAndNewsPage); stackedLayout->addWidget(advancedPage); connect(listWidget, SIGNAL(currentRowChanged(int)), stackedLayout, SLOT(setCurrentIndex(int))); ... listWidget->setCurrentRow(0); }
We create a QListWidget and populate it with the page names. Then we create a QStackedLayout and call addWidget() for each page. We connect the list widget's currentRowChanged(int) signal to the stacked layout's setCurrentIndex(int) to implement the page switching and call setCurrentRow() on the list widget at the end of the constructor to start on page 0.
Forms such as this are also very easy to create using Qt Designer:
1. | Create a new form based on one of the "Dialog" templates or on the "Widget" template. |
2. | Add a QListWidget and a QStackedWidget to the form. |
3. | |
4. | Lay out the widgets side by side using a horizontal layout. |
5. | Connect the list widget's currentRowChanged(int) signal to the stacked widget's setCurrentIndex(int) slot. |
6. | Set the value of the list widget's currentRow property to 0. |
Since we have implemented page switching using predefined signals and slots, the dialog will exhibit the correct behavior when previewed in Qt Designer.
For cases where the number of pages is small and likely to remain small, a simpler alternative to using a QStackedWidget and QListWidget is to use a QTabWidget.


Web Developer
I'm a front end web developer with a background in music media technology. I make websites and applications that focus on user interface with intuitive and beautiful design. In my spare time I program hardware and build DIY electronics. If you're interested please reach out at Nathan Sheryak.


Florida man accused of stealing SUV with 2 children inside
by Bob D'Angelo, Cox Media Group National Content DeskLAKE WORTH, Fla. -
A South Florida man is accused of stealing an SUV with two children inside from a mobile home park, authorities said.
Wilmer Abrego, 22, of Lake Worth, was charged with grand theft auto and two counts of kidnapping, according to the Palm Beach County Sheriff's Office.
According to an arrest report, Abrego saw a Toyota Highlander parked in front of a West Palm Beach mobile home park Friday night, WPTV reported. The vehicle was running and there were two children inside, the television station reported.
According to the Sheriff's Office, Abrego crashed the vehicle and tried to flee on foot before he was arrested, WPEC reported.
There were no injuries, the Sheriff's Office said.
Deputies said Abrego admitted he stole the SUV but denied knowing there were two children inside, WPTV reported.
According to deputies, the mother of the children said she left her SUV running around 9:30 p.m. and went into her home, heard a noise and then saw her vehicle pull away, WPEC reported.
Abrego remains in the Palm Beach County Jail, ineligible to post bail because he missed a court hearing on an unrelated case, according to court records.


Vintage Baby Knits Trunk Show and Author Meet & Greet
Vintage Baby Knits Author, Kristen Rengren, will join us at ThreadBear for an author Meet & Greet to kick off a trunk show of projects from the book. Early reviews are spectacular. If you've got babies to knit for or just enjoy the art of baby knits for their own sake, this is a show not to be missed.
Save the date for June 20, 2009. We'll get more details to you as soon as they become available.


Extract named bakeoff colors as hex codes
bakeoff_colors(...)
| ... | Character names of bakeoff colors. If none specified, returns all If any specified, can be listed by names in quotes (no combine required) |
|---|
A named character vector of hex colors.
bakeoff_colors()#> rose peach garancemelon garancepeach desertflower #> "#fdaba3" "#edbba8" "#f27168" "#f7d2b1" "#ff9a90" #> tenderpeach livingcoral garanceyellow yellow lemon #> "#f8d6b8" "#fa7268" "#fbed87" "#fedb11" "#e2bf54" #> garancegold gold garancemarigold marigold orange #> "#b79f26" "#9d8e42" "#f4b31a" "#ff7436" "#f0a561" #> tangerine vibrantorange berry prismpink magenta #> "#ef8759" "#ff6d2d" "#ee5863" "#efa5c8" "#fb82b7" #> violet brightpink flush red maroon #> "#c6b7d5" "#ed259d" "#ca225e" "#e74a2f" "#5f1f29" #> burgundy cardinal mint garden green #> "#8e4866" "#b92f3b" "#deeee2" "#629d62" "#5b8c4d" #> hunter pear pine mason baltic #> "#284a29" "#d3dcaa" "#4c9a89" "#98c0b8" "#1a9a9d" #> agategreen riptide marina opal bluegrey #> "#5da19a" "#84d6d3" "#519199" "#bdd9d4" "#6999cd" #> cobalt sky starlightblue placidblue bluebell #> "#4254a7" "#7f8cb4" "#b5d2dc" "#8daed7" "#8d91c9" #> matisse brightnavy deepblue garanceblue bluesapphire #> "#187ba2" "#2f77c1" "#343c56" "#283338" "#126180" #> blue brick almond charcoal cocoa #> "#1c5c6e" "#bc643a" "#543f29" "#313131" "#a5774c" #> garanceblack garancegrey garancewhite grey nude #> "#1a1917" "#a09e9f" "#efede8" "#95918d" "#fdd9b9" #> white linen tobacco #> "#f0eee9" "#f0d8c3" "#9a7c37"bakeoff_colors("riptide")#> riptide #> "#84d6d3"bakeoff_colors("baltic", "yellow")#> baltic yellow #> "#1a9a9d" "#fedb11"#> [1] "rose" "peach" "garancemelon" "garancepeach" #> [5] "desertflower" "tenderpeach" "livingcoral" "garanceyellow" #> [9] "yellow" "lemon" "garancegold" "gold" #> [13] "garancemarigold" "marigold" "orange" "tangerine" #> [17] "vibrantorange" "berry" "prismpink" "magenta" #> [21] "violet" "brightpink" "flush" "red" #> [25] "maroon" "burgundy" "cardinal" "mint" #> [29] "garden" "green" "hunter" "pear" #> [33] "pine" "mason" "baltic" "agategreen" #> [37] "riptide" "marina" "opal" "bluegrey" #> [41] "cobalt" "sky" "starlightblue" "placidblue" #> [45] "bluebell" "matisse" "brightnavy" "deepblue" #> [49] "garanceblue" "bluesapphire" "blue" "brick" #> [53] "almond" "charcoal" "cocoa" "garanceblack" #> [57] "garancegrey" "garancewhite" "grey" "nude" #> [61] "white" "linen" "tobacco"#>#> Warning: package ‘scales’ was built under R version 3.6.2


|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object android.support.v4.view.MarginLayoutParamsCompat
public class MarginLayoutParamsCompat
Helper for accessing API features in
MarginLayoutParams
added after API 4.
| Constructor Summary | |
|---|---|
MarginLayoutParamsCompat()
|
| Method Summary | |
|---|---|
static int |
getLayoutDirection(ViewGroup.MarginLayoutParams lp)
Retuns the layout direction. |
static int |
getMarginEnd(ViewGroup.MarginLayoutParams lp)
Get the relative ending margin that was set. |
static int |
getMarginStart(ViewGroup.MarginLayoutParams lp)
Get the relative starting margin that was set. |
static boolean |
isMarginRelative(ViewGroup.MarginLayoutParams lp)
Check if margins are relative. |
static void |
resolveLayoutDirection(ViewGroup.MarginLayoutParams lp,
int layoutDirection)
This will be called by android.view.View#requestLayout() . |
static void |
setLayoutDirection(ViewGroup.MarginLayoutParams lp,
int layoutDirection)
Set the layout direction. |
static void |
setMarginEnd(ViewGroup.MarginLayoutParams lp,
int marginEnd)
Set the relative end margin. |
static void |
setMarginStart(ViewGroup.MarginLayoutParams lp,
int marginStart)
Set the relative start margin. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public MarginLayoutParamsCompat()
| Method Detail |
|---|
public static int getMarginStart(ViewGroup.MarginLayoutParams lp)
On platform versions supporting bidirectional text and layouts this value will be resolved into the LayoutParams object's left or right margin as appropriate when the associated View is attached to a window or when the layout direction of that view changes.
lp
- LayoutParams to query
public static int getMarginEnd(ViewGroup.MarginLayoutParams lp)
On platform versions supporting bidirectional text and layouts this value will be resolved into the LayoutParams object's left or right margin as appropriate when the associated View is attached to a window or when the layout direction of that view changes.
lp
- LayoutParams to query
public static void setMarginStart(ViewGroup.MarginLayoutParams lp, int marginStart)
On platform versions supporting bidirectional text and layouts this value will be resolved into the LayoutParams object's left or right margin as appropriate when the associated View is attached to a window or when the layout direction of that view changes.
lp
- LayoutParams to querymarginStart
- the desired start margin in pixelspublic static void setMarginEnd(ViewGroup.MarginLayoutParams lp, int marginEnd)
On platform versions supporting bidirectional text and layouts this value will be resolved into the LayoutParams object's left or right margin as appropriate when the associated View is attached to a window or when the layout direction of that view changes.
lp
- LayoutParams to querymarginEnd
- the desired end margin in pixelspublic static boolean isMarginRelative(ViewGroup.MarginLayoutParams lp)
public static int getLayoutDirection(ViewGroup.MarginLayoutParams lp)
ViewCompat.LAYOUT_DIRECTION_LTR
or
ViewCompat.LAYOUT_DIRECTION_RTL
.
public static void setLayoutDirection(ViewGroup.MarginLayoutParams lp, int layoutDirection)
layoutDirection
- the layout direction.
Should be either ViewCompat.LAYOUT_DIRECTION_LTR
or ViewCompat.LAYOUT_DIRECTION_RTL
.public static void resolveLayoutDirection(ViewGroup.MarginLayoutParams lp, int layoutDirection)
android.view.View#requestLayout()
. Left and Right margins
may be overridden depending on layout direction.
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


I am a India-based UX/UI designer, amateur illustrator and clumsy code learner.
While i was graduating from my bachelor’s degree in India, I worked as a UX/UI designer for more than two years and successfully provided design services and consultation for both non-commercial projects and several start-up companies in india. I am self taught & I embarked on my journey into Full Stack Web Developing from websites like w3school.com, stackoverflow.com, github.com, codepen.io and several others.
Self motivation, a strong sense of responsibility and excellent problem-solving skills come from my passion to bring delightful user experiences to life, by bridging the physical and digital worlds.


| Package | Description |
|---|---|
| javafx.animation |
Provides the set of classes for ease of use transition based animations.
|
| javafx.beans |
The package
javafx.beans contains the interfaces that
define the most generic form of observability. |
| javafx.beans.binding |
Characteristics of Bindings
|
| javafx.beans.property |
The package
javafx.beans.property defines read-only
properties and writable properties, plus a number of implementations. |
| javafx.beans.property.adapter | |
| javafx.beans.value |
The package
javafx.beans.value contains the two
fundamental interfaces ObservableValue and WritableValue and all of its sub-interfaces. |
| javafx.collections |
Contains the essential JavaFX collections and collection utilities
|
| javafx.collections.transformation | |
| javafx.concurrent |
Provides the set of classes for javafx.task.
|
| javafx.css |
Provides API for making properties styleable via CSS and for supporting
pseudo-class state.
|
| javafx.embed.swt |
Provides the set of classes to use JavaFX inside SWT applications.
|
| javafx.event |
Provides basic framework for FX events, their delivery and handling.
|
| javafx.geometry |
Provides the set of 2D classes for defining and performing operations on
objects related to two-dimensional geometry.
|
| javafx.print |
Provides the public classes for the JavaFX Printing API.
|
| javafx.scene |
Provides the core set of base
classes for the JavaFX Scene Graph API.
|
| javafx.scene.chart |
The JavaFX User Interface provides a set of chart components that
are a very convenient way for data visualization.
|
| javafx.scene.control |
The JavaFX User Interface Controls (UI Controls or just Controls) are
specialized Nodes in the JavaFX Scenegraph especially suited for reuse in
many different application contexts.
|
| javafx.scene.control.cell |
The
javafx.scene.control.cell package is where all cell-related
classes are located, other than the core classes such as
Cell , IndexedCell ,
ListCell , TreeCell ,
and TableCell . |
| javafx.scene.image |
Provides the set of classes for loading and displaying images.
|
| javafx.scene.input |
Provides the set of classes for mouse and keyboard input event handling.
|
| javafx.scene.layout |
Provides classes to support user interface layout.
|
| javafx.scene.media |
Provides the set of classes for integrating audio and video into Java FX
Applications.
|
| javafx.scene.paint |
Provides the set of classes for colors and gradients used to fill shapes and
backgrounds when rendering the scene graph.
|
| javafx.scene.shape |
Provides the set of 2D classes for defining and performing operations on
objects related to two-dimensional geometry.
|
| javafx.scene.text |
Provides the set of classes for fonts and renderable Text Node.
|
| javafx.scene.transform |
Provides the set of convenient classes to perform rotating, scaling,
shearing, and translation transformations for
Affine objects. |
| javafx.scene.web |
This package provides means for loading and displaying Web content.
|
| javafx.stage |
Provides the top-level container classes for JavaFX content.
|
| javafx.util |
Contains various utilities and helper classes.
|
| javafx.util.converter |
This package is for standard string converters for JavaFX.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
WeakListener
WeakListener is the super interface of all weak listener implementations
JavaFX runtime. |
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
WeakListener
WeakListener is the super interface of all weak listener implementations
JavaFX runtime. |
| Class and Description |
|---|
| InvalidationListener
An
InvalidationListener is notified whenever an
Observable becomes invalid. |
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
WeakListener
WeakListener is the super interface of all weak listener implementations
JavaFX runtime. |
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| DefaultProperty
Specifies a property to which child elements will be added or set when an
explicit property is not given.
|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| DefaultProperty
Specifies a property to which child elements will be added or set when an
explicit property is not given.
|
| NamedArg
Annotation that provides information about argument's name.
|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| DefaultProperty
Specifies a property to which child elements will be added or set when an
explicit property is not given.
|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| DefaultProperty
Specifies a property to which child elements will be added or set when an
explicit property is not given.
|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| Observable
An
Observable is an entity that wraps content and allows to
observe the content for invalidations. |
| Class and Description |
|---|
| DefaultProperty
Specifies a property to which child elements will be added or set when an
explicit property is not given.
|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
| Class and Description |
|---|
| NamedArg
Annotation that provides information about argument's name.
|
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 2008, 2021, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


In this step, we will enhance our web application by adding CSS and JavaScript animations on top of the template code we created earlier.
The animation functionality is provided by AngularJS in the ngAnimate
module, which is distributed
separately from the core AngularJS framework. In addition we will use jQuery in this project
to do extra JavaScript animations.
Since we are using Bower to install client-side dependencies, this step updates the
bower.json
configuration file to include the new dependencies:
bower.json
:
{
"name": "angular-phonecat",
"description": "A starter project for AngularJS",
"version": "0.0.0",
"homepage": "https://github.com/angular/angular-phonecat",
"license": "MIT",
"private": true,
"dependencies": {
"angular": "1.5.x",
"angular-animate": "1.5.x",
"angular-mocks": "1.5.x",
"angular-resource": "1.5.x",
"angular-route": "1.5.x",
"bootstrap": "3.3.x",
"jquery": "3.2.x"
}
}
"angular-animate": "1.5.x"
tells bower to install a version of the angular-animate module that
is compatible with version 1.5.x of AngularJS."jquery": "3.2.x"
tells bower to install the latest patch release of the 3.2 version of jQuery.
Note that this is not an AngularJS library; it is the standard jQuery library. We can use bower to
install a wide range of 3rd party libraries.Now, we must tell bower to download and install these dependencies.
npm install
bower install
, but for this project
we have preconfigured npm install
to run bower for us.
npm install
, then
you may have a problem with the bower install
due to a conflict between the versions of
angular.js that need to be installed. If you run into this issue, simply delete your
app/bower_components
directory and then run npm install
.
ngAnimate
To get an idea of how animations work with AngularJS, you might want to read the Animations section of the Developer Guide first.
In order to enable animations, we need to update index.html
, loading the necessary dependencies
(angular-animate.js and jquery.js) and the files that contain the CSS and JavaScript code
used in CSS/JavaScript animations. The animation module, ngAnimate, contains the
code necessary to make your application "animation aware".
app/index.html
:
...

<link rel="stylesheet" href="app.animations.css" />
...

...

...
jquery.js
before angular.js
.
Animations can now be created within the CSS code (app.animations.css
) as well as the JavaScript
code (app.animations.js
).
We need to add a dependency on ngAnimate
to our main module first:
app/app.module.js
:
angular.
module('phonecatApp', [
'ngAnimate',
...
]);
Now that our application is "animation aware", let's create some fancy animations!
ngRepeat
We will start off by adding CSS transition animations to our ngRepeat
directive present on the
phoneList
component's template. We need to add an extra CSS class to our repeated element, in
order to be able to hook into it with our CSS animation code.
app/phone-list/phone-list.template.html
:
...

{{phone.name}}

{{phone.snippet}}

...
Did you notice the added phone-list-item
CSS class? This is all we need in our HTML code to get
animations working.
Now for the actual CSS transition animation code:
app/app.animations.css
:
.phone-list-item.ng-enter,
.phone-list-item.ng-leave,
.phone-list-item.ng-move {
transition: 0.5s linear all;
}
.phone-list-item.ng-enter,
.phone-list-item.ng-move {
height: 0;
opacity: 0;
overflow: hidden;
}
.phone-list-item.ng-enter.ng-enter-active,
.phone-list-item.ng-move.ng-move-active {
height: 120px;
opacity: 1;
}
.phone-list-item.ng-leave {
opacity: 1;
overflow: hidden;
}
.phone-list-item.ng-leave.ng-leave-active {
height: 0;
opacity: 0;
padding-bottom: 0;
padding-top: 0;
}
As you can see, our phone-list-item
CSS class is combined together with the animation hooks that
occur when items are inserted into and removed from the list:
ng-enter
class is applied to the element when a new phone is added to the list and rendered
on the page.ng-move
class is applied to the element when a phone's relative position in the list
changes.ng-leave
class is applied to the element when a phone is removed from the list.The phone list items are added and removed based on the data passed to the ngRepeat
directive.
For example, if the filter data changes, the items will be animated in and out of the repeat list.
Something important to note is that, when an animation occurs, two sets of CSS classes are added to the element:
The name of the starting class is the name of the event that is fired (like enter
, move
or
leave
) prefixed with ng-
. So an enter
event will result in adding the ng-enter
class.
The active class name is derived from the starting class by appending an -active
suffix.
This two-class CSS naming convention allows the developer to craft an animation, beginning to end.
In the example above, animated elements are expanded from a height of 0px to 120px when they are added to the list and are collapsed back down to 0px before being removed from the list. There is also a catchy fade-in/fade-out effect that occurs at the same time. All this is handled by the CSS transition declaration at the top of the CSS file.
ngView
Next, let's add an animation for transitions between route changes in ngView.
Again, we need to prepare our HTML template by adding a new CSS class, this time to the ng-view
element. In order to gain more "expressive power" for our animations, we will also wrap the
[ng-view]
element in a container element.
app/index.html
:

We have applied a position: relative
CSS style to the .view-container
wrapper, so that it is
easier for us to manage the .view-frame
element's positioning during the animation.
With our preparation code in place, let's move on to the actual CSS styles for this transition animation.
app/app.animations.css
:
...
.view-container {
position: relative;
}
.view-frame.ng-enter,
.view-frame.ng-leave {
background: white;
left: 0;
position: absolute;
right: 0;
top: 0;
}
.view-frame.ng-enter {
animation: 1s fade-in;
z-index: 100;
}
.view-frame.ng-leave {
animation: 1s fade-out;
z-index: 99;
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes fade-out {
from { opacity: 1; }
to { opacity: 0; }
}
/* Older browsers might need vendor-prefixes for keyframes and animation! */
Nothing fancy here! Just a simple fade-in/fade-out effect between pages. The only thing out of the
ordinary here is that we are using absolute positioning to position the entering page (identified
by the ng-enter
class) on top of the leaving page (identified by the ng-leave
class). At the
same time a cross-fade animation is performed. So, as the previous page is just about to be removed,
it fades out, while the new page fades in right on top of it.
Once the leave
animation is over, the element is removed from the DOM. Likewise, once the enter
animation is complete, the ng-enter
and ng-enter-active
CSS classes are removed from the
element, causing it to rerender and reposition itself with its default CSS styles (so no more
absolute positioning once the animation is over). This works fluidly and the pages flow naturally
between route changes, without anything jumping around.
The applied CSS classes are much the same as with ngRepeat
. Each time a new page is loaded the
ngView
directive will create a copy of itself, download the template and append the contents. This
ensures that all views are contained within a single HTML element, which allows for easy animation
control.
For more on CSS animations, see the MDN web docs.
ngClass
with JavaScriptLet's add another animation to our application. On our phone-detail.template.html
view, we have a
nice thumbnail swapper. By clicking on the thumbnails listed on the page, the profile phone image
changes. But how can we incorporate animations?
Let's give it some thought first. Basically, when a user clicks on a thumbnail image, they are changing the state of the profile image to reflect the newly selected thumbnail image. The best way to specify state changes within HTML is to use classes. Much like before — when we used a CSS class to drive the animation — this time the animation will occur when the CSS class itself changes.
Every time a phone thumbnail is selected, the state changes and the .selected
CSS class is added
to the matching profile image. This will trigger the animation.
We will start by tweaking our HTML code in phone-detail.template.html
. Notice that we have changed
the way we display our large image:
app/phone-detail/phone-detail.template.html
:

...
Just like with the thumbnails, we are using a repeater to display all the profile images as a
list, however we're not animating any repeat-related transitions. Instead, we will be keeping our
eye on each element's classes and especially the selected
class, since its presence or absence
will determine if the element is visible or hidden. The addition/removal of the selected
class is
managed by the ngClass directive, based on the specified condition
(img === $ctrl.mainImageUrl
).
In our case, there is always exactly one element that has the selected
class, and therefore there
will be exactly one phone profile image visible on the screen at all times.
When the selected
class is added to an element, the selected-add
and selected-add-active
classes are added just before to signal AngularJS to fire off an animation. When the selected
class is removed from an element, the selected-remove
and selected-remove-active
classes are
applied to the element, triggering another animation.
Finally, in order to ensure that the phone images are displayed correctly when the page is first loaded, we also tweak the detail page CSS styles:
app/app.css
:
...
.phone {
background-color: white;
display: none;
float: left;
height: 400px;
margin-bottom: 2em;
margin-right: 3em;
padding: 2em;
width: 400px;
}
.phone:first-child {
display: block;
}
.phone-images {
background-color: white;
float: left;
height: 450px;
overflow: hidden;
position: relative;
width: 450px;
}
...
You may be thinking that we are just going to create another CSS-based animation. Although we could do that, let's take the opportunity to learn how to create JavaScript-based animations with the .animation() module method.
app/app.animations.js
:
angular.
module('phonecatApp').
animation('.phone', function phoneAnimationFactory() {
return {
addClass: animateIn,
removeClass: animateOut
};
function animateIn(element, className, done) {
if (className !== 'selected') return;
element.
css({
display: 'block',
position: 'absolute',
top: 500,
left: 0
}).
animate({
top: 0
}, done);
return function animateInEnd(wasCanceled) {
if (wasCanceled) element.stop();
};
}
function animateOut(element, className, done) {
if (className !== 'selected') return;
element.
css({
position: 'absolute',
top: 0,
left: 0
}).
animate({
top: -500
}, done);
return function animateOutEnd(wasCanceled) {
if (wasCanceled) element.stop();
};
}
});
We are creating a custom animation by specifying the target elements via a CSS class selector (here
.phone
) and an animation factory function (here phoneAnimationFactory()
). The factory function
returns an object associating specific events (object keys) to animation callbacks (object
values). The events correspond to DOM actions that ngAnimate
recognizes and can hook into, such
as addClass
/removeClass
/setClass
, enter
/move
/leave
and animate
. The associated
callbacks are called by ngAnimate
at appropriate times.
For more info on animation factories, check out the API Reference.
In this case, we are interested in a class getting added to/removed from a .phone
element, thus we
specify callbacks for the addClass
and removeClass
events. When the selected
class is added to
an element (via the ngClass
directive), the addClass
JavaScript callback will be executed with
element
passed in as a parameter. The last parameter passed in is the done
callback function. We
call done()
to let AngularJS know that our custom JavaScript animation has ended. The removeClass
callback works the same way, but instead gets executed when a class is removed.
Note that we are using jQuery's animate()
helper to implement the animation. jQuery
isn't required to do JavaScript animations with AngularJS, but we use it here anyway in order to
keep the example simple. More info on jQuery.animate()
can be found in the
jQuery documentation.
Within the event callbacks, we create the animation by manipulating the DOM. In the code above,
this is achieved using element.css()
and element.animate()
. As a result the new element is
positioned with an offset of 500px and then both elements — the previous and the new
— are animated together by shifting each one up by 500px. The outcome is a conveyor-belt
like animation. After the animate()
function has completed the animation, it calls done
to
notify AngularJS.
You may have noticed that each animation callback returns a function. This is an optional
function, which (if provided) will be called when the animation ends, either because it ran to
completion or because it was canceled (for example another animation took place on the same
element). A boolean parameter (wasCanceled
) is passed to the function, letting the developer know
if the animation was canceled or not. Use this function to do any necessary clean-up.
Reverse the animation, so that the elements animate downwards.
Make the animation run faster or slower, by passing a duration
argument to .animate()
:
element.css({...}).animate({...}, 1000 /* 1 second */, done);
Make the animations "asymmetrical".
Our application is now much more pleasant to use, thanks to the smooth transitions between pages and UI states.
There you have it! We have created a web application in a relatively short amount of time. In the closing notes we will cover where to go from here.


DOI resolution reports
November 2011
December 2011
January 2012
February 2012
March 2012
April 2012
May 2012
June 2012
July 2012
August 2012
September 2012
October 2012
November 2012
December 2012
January 2013
February 2013
March 2013
April 2013
May 2013
June 2013
July 2013
August 2013
September 2013
October 2013
November 2013
December 2013
January 2014
February 2014
March 2014
April 2014
May 2014
June 2014
July 2014
August 2014
September 2014
October 2014
November 2014
December 2014
January 2015
February 2015
March 2015
April 2015
May 2015
June 2015
July 2015
August 2015
September 2015
October 2015
November 2015
December 2015
January 2016
February 2016
March 2016
April 2016
May 2016
June 2016
July 2016
August 2016
September 2016
October 2016
November 2016
December 2016
January 2017
February 2017
March 2017
April 2017
May 2017
June 2017
July 2017
August 2017
September 2017
October 2017
November 2017
December 2017
January 2018
February 2018
March 2018
April 2018
May 2018
June 2018
July 2018
August 2018
September 2018
October 2018
November 2018
December 2018
January 2019
February 2019
March 2019
April 2019
May 2019
June 2019
July 2019
August 2019
September 2019
October 2019
November 2019
December 2019
January 2020


Supergods: What Masked Vigilantes, Miraculous Mutants, and a Sun God from Smallville Can Teach Us About Being Human
“Adults...struggle desperately with fiction, demanding constantly that it conform to the rules of everyday life. Adults foolishly demand to know how Superman can possibly fly, or how Batman can possibly run a multibillion-dollar business empire during the day and fight crime at night, when the answer is obvious even to the smallest child: because it's not real.” - Grant Morisson


{% extends "layout.html" %} {% block page_title %} GOV.UK prototype kit {% endblock %} {% block content %} {% include "includes/phase_banner_beta.html" %} Back Errors to fix Check the following details: Enter a valid email address Reset your password Enter your email address to get a password reset code. email address Email {% endblock %}
Check the following details:
Enter your email address to get a password reset code.


This is a smart bookmarks web app designed to make accessing internal and external resources easier as well as providing a way to build all sort of convenient tools.


--- layout: default --- Posts by Tag | Posts by Month | About | RSS See also - DirectX Developer Blog | DirectX Landing Page | C++ Team Blog


{% extends "tutorial.html" %} {% block html5badge %} {% endblock %} {% block iscompatible %} return Modernizr.websockets; {% endblock %} {% block content %}
The web has been largely built around the so-called request/response paradigm of HTTP. A client loads up a web page and then nothing happens until the user clicks onto the next page. Around 2005, AJAX started to make the web feel more dynamic. Still, all HTTP communication was steered by the client, which required user interaction or periodic polling to load new data from the server.
Technologies that enable the server to send data to the client in the very moment when it knows that new data is available have been around for quite some time. They go by names such as "Push" or "Comet". One of the most common hacks to create the illusion of a server initiated connection is called long polling. With long polling, the client opens an HTTP connection to the server which keeps it open until sending response. Whenever the server actually has new data it sends the response (other techniques involve Flash, XHR multipart requests and so called htmlfiles). Long polling and the other techniques work quite well. You use them every day in applications such as GMail chat.
However, all of these work-arounds share one problem: They carry the overhead of HTTP, which doesn't make them well suited for low latency applications. Think multiplayer first person shooter games in the browser or any other online game with a realtime component.
The WebSocket specification defines an API establishing "socket" connections between a web browser and a server. In plain words: There is an persistent connection between the client and the server and both parties can start sending data at any time.
You open up a WebSocket connection simply by calling the WebSocket constructor:
var connection = new WebSocket('ws://html5rocks.websocket.org/echo', ['soap', 'xmpp']);
Notice the ws:
. This is the new URL schema for WebSocket connections. There is also
wss:
for secure WebSocket connection the same way https:
is used for secure HTTP
connections.
Attaching some event handlers immediately to the connection allows you to know when the connection is opened, received incoming messages, or there is an error.
The second argument accepts optional subprotocols. It can be a string or an array of strings. Each string should represent a subprotocol name and server accepts only one of passed subprotocols in the array. Accepted subprotocol can be determined by accessing protocol
property of WebSocket object.
The subprotocol names must be one of registered subprotocol names in IANA registry. There is currently only one subprotocol name (soap) registered as of February 2012.
// When the connection is open, send some data to the server connection.onopen = function () { connection.send('Ping'); // Send the message 'Ping' to the server }; // Log errors connection.onerror = function (error) { console.log('WebSocket Error ' + error); }; // Log messages from the server connection.onmessage = function (e) { console.log('Server: ' + e.data); };
As soon as we have a connection to the server (when the open
event is fired) we can start sending data to the server using the send('your message')
method on the connection object. It used to support only strings, but in the latest spec it now can send binary messages too. To send binary data, you can use either Blob
or ArrayBuffer
object.
// Sending String connection.send('your message'); // Sending canvas ImageData as ArrayBuffer var img = canvas_context.getImageData(0, 0, 400, 320); var binary = new Uint8Array(img.data.length); for (var i = 0; i < img.data.length; i++) { binary[i] = img.data[i]; } connection.send(binary.buffer); // Sending file as Blob var file = document.querySelector('input[type="file"]').files[0]; connection.send(file);
Equally the server might send us messages at any time. Whenever this happens the onmessage
callback fires. The callback receives an event object and the actual message is accessible via the data
property.
WebSocket can also receive binary messages in the latest spec. Binary frames can be received in Blob
or ArrayBuffer
format. To specify the format of the received binary, set the binaryType property of WebSocket object to either 'blob' or 'arraybuffer'. The default format is 'blob'. (You don't have to align binaryType param on sending.)
// Setting binaryType to accept received binary as either 'blob' or 'arraybuffer' connection.binaryType = 'arraybuffer'; connection.onmessage = function(e) { console.log(e.data.byteLength); // ArrayBuffer object if binary };
Another newly added feature of WebSocket is extensions. Using extensions, it will be possible to send frames compressed, multiplexed, etc. You can find server accepted extensions by examining the extensions property of the WebSocket object after the open event. There is no officially published extensions spec just yet as of February 2012.
// Determining accepted extensions console.log(connection.extensions);
Being a modern protocol, cross origin communication is baked right into WebSocket. While you should still make sure only to communicate with clients and servers that you trust, WebSocket enables communication between parties on any domain. The server decides whether to make its service available to all clients or only those that reside on a set of well defined domains.
Every new technology comes with a new set of problems. In the case of WebSocket it is the compatibility with proxy servers which mediate HTTP connections in most company networks. The WebSocket protocol uses the HTTP upgrade system (which is normally used for HTTP/SSL) to "upgrade" an HTTP connection to a WebSocket connection. Some proxy servers do not like this and will drop the connection. Thus, even if a given client uses the WebSocket protocol, it may not be possible to establish a connection. This makes the next section even more important :)
WebSocket is still a young technology and not fully implemented in all browsers. However, you can use WebSocket today with libraries that use one of the fallbacks mentioned above whenever WebSocket is not available. A library that has become very popular in this domain is socket.io which comes with a client and a server implementation of the protocol and includes fallbacks (socket.io doesn't support binary messaging yet as of Februrary 2012). There are also commercial solutions such as PusherApp which can be easily integrated into any web environment by providing a HTTP API to send WebSocket messages to clients. Due to the extra HTTP request there will always be extra overhead compared to pure WebSocket.
Using WebSocket creates a whole new usage pattern for server side applications. While traditional server stacks such as LAMP are designed around the HTTP request/response cycle they often do not deal well with a large number of open WebSocket connections. Keeping a large number of connections open at the same time requires an architecture that receives high concurrency at a low performance cost. Such architectures are usually designed around either threading or so called non-blocking IO.
The wire protocol (a handshake and the data transfer between client and server) for WebSocket is now RFC6455. The latest Chrome and Chrome for Android are fully compatible with RFC6455 including binary messaging. Also, Firefox will be compatible on version 11, Internet Explorer on version 10. You can still use older protocol versions but it is not recommended since they are known to be vulnerable. If you have server implementations for older versions of WebSocket protocol, we recommend you to upgrade it to the latest version.
Use WebSocket whenever you need a truly low latency, near realtime connection between the client and the server. Keep in mind that this might involve rethinking how you build your server side applications with a new focus on technologies such as event queues. Some example use cases are:


| < Day Day Up > |
Hack 32 Automate Memorable Password Generation
Make it easier for your users to choose good passwords. It doesn't matter whether you're an administrator responsible for enforcing a password policy or an end user trying to comply with said policy. You're struggling against human nature when you ask users to choose—and remember—hard-to-guess passwords. Passwords that aren't random are easy to guess, and passwords that are too random tend to manifest themselves on sticky notes under users' keyboards or in their top drawers. Wouldn't it be great if you could somehow offer users random but memorable password choices? There's a standard designed for just this purpose: APG, the Automated Password Generator. 3.10.1 Installing and Using apgIf you're running FreeBSD, you can install apg from the ports collection: # cd /usr/ports/security/apg # make install clean Once the port is installed, any user can run apg to generate a list of random, but pronounceable and memorable, passwords: % apg -q -m 10 -x 10 -M NC -n 10 plerOcGot5 (pler-Oc-Got-FIVE) fobEbpigh6 (fob-Eb-pigh-SIX) Ekjigyerj7 (Ek-jig-yerj-SEVEN) CaujIvOwk8 (Cauj-Iv-Owk-EIGHT) yenViapag0 (yen-Viap-ag-ZERO) Fiwioshev3 (Fi-wi-osh-ev-THREE) Twomitvac4 (Twom-it-vac-FOUR) varbidCyd2 (varb-id-Cyd-TWO) KlepezHap0 (Klep-ez-Hap-ZERO) Naccudhav8 (Nac-cud-hav-EIGHT) Notice that each password comes with a pronunciation guide, since it's easier to remember something you can pronounce. Also, note that syntax. We're definitely going to have to do something about all of those switches! But first, let's take a look at Section 3.2 and make sure we understand them.
While this utility is very handy, we can definitely hack in our own improvements. For starters, users aren't going to use a utility that requires a line's worth of switches. Second, we don't want to install this utility on every system in our network. Instead, let's work out a CGI script. That way users can access the script from their web browsers. 3.10.2 Improving apgFirst, let's sort out all of the switches we'll use in the script. We need something to add a punctuation character in the middle, or we won't meet Air Force password regulations. The simplest fix is to run apg twice with smaller password requirements, concatenating the results. The first run, without punctuation characters, looks like this: % apg -q -m 4 -x 4 -M NC -E Ol -n 10 Dij6 (Dij-SIX) Voj6 (Voj-SIX) Pam0 (Pam-ZERO) Dev9 (Dev-NINE) Non6 (Non-SIX) Eyd7 (Eyd-SEVEN) Vig9 (Vig-NINE) Not8 (Not-EIGHT) Nog2 (Nog-TWO) Von9 (Von-NINE) Here I've reduced the minimum and maximum password length to four characters. I've also added the option -E Ol to exclude capital "oh" and small "ell" from passwords, because they're easily confused with the digits zero and one. The second run includes the -S option, which makes the password generator use special characters: % apg -q -m 4 -x 4 -M S -E Ol -n 10 orc) (orc-RIGHT_PARENTHESIS) tof| (tof-VERTICAL_BAR) fed^ (fed-CIRCUMFLEX) gos@ (gos-AT_SIGN) sig& (sig-AMPERSAND) eif) (eif-RIGHT_PARENTHESIS) eds{ (eds-LEFT_BRACE) lek> (lek-GREATER_THAN) tij: (tij-COLON) rot] (rot-RIGHT_BRACKET) Now for a CGI script to paste the results together. I've numbered each line of the script for explanation purposes. Don't include line numbers when you create your own script. This script is written in the Korn shell, but can be modified for any shell. To run as is, install the Korn shell from /usr/ports/shells/ksh93. 1 #!/bin/ksh 2 # run apg twice, concatenate results. 3 # exclude most special characters requiring shift key, 4 # capital "oh" (looks like zero), 5 # lowercase "ell" (looks like digit "one") 6 PATH=/bin:/usr/bin:/usr/local/bin; export PATH 7 umask 077 8 a=/tmp/apg.$RANDOM 9 b=/tmp/apg.$RANDOM 10 cat << EOF 11 Content-type: text/html 12 <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"> 13  14  15 <title>Help generating a new password</title> 16  17  18
Help generating a new password
 19
 20 These passwords should be reasonably safe. 21 Feel free to use one, or reload the page 22 for a new batch.
 23

  24 EOF 25 apg -q -m 4 -x 4 -M NC -E '!@#$%^&*( )\\' -n 10 > $a 26 apg -q -m 4 -x 4 -M S -E '!@#$%^&*( )\\' -n 10 > $b 27 # tr command is for bug workaround; apg is not supposed to 28 # include characters specified after -E option. 29 paste $a $b | 30 tr 'l' 'L' | 31 awk ' 32 BEGIN { 33 printf "Password\tRough guess at pronunciation\n
" 34 } 35 { 36 printf "%s%s\t%s %s\n", $1, $3, $2, $4 37 }' 38 cat << EOF 39  40
 41
 42
 43
 44  45  46 EOF 47 rm $a $b 48 exit 0 3.10.3 Script WalkthroughLine 6 sets the PATH to a known safe value. This lessens the possibility that an attacker can cause this program to execute a hazardous binary. Make sure apg is in this path. Line 7 sets the umask so that only this user can read the temporary files to be generated later. Lines 8 and 9 work because Korn shell scripts generate random numbers automatically. If /bin/ksh is not on your system, use mktemp to generate temporary files safely. Lines 10-24 print the page header. I usually make a sample page and then run it through /usr/ports/www/tidy to get a decent DOCTYPE header and indentation. Lines 25 and 26 issue apg commands to generate two separate files containing four-character passwords. Lines 31-37 use an awk script to print the password plus its pronunciation. The BEGIN section prints only once, before any lines are read. The printf section expects lines with four fields: two pairs of password and pronunciation strings from the temporary files. The first and third fields are printed together to form the password, and the second and fourth fields are printed together to form the pronunciation guess. Lines 38-46 finish the page. Lines 47 and 48 clean up the temporary files. 3.10.4 See Also
|
| < Day Day Up > |


Perl 6 Documentation
Not in Index (
try site search
)
Perl 6 homepage
Language
Types
Routines
Programs
Chat with us
All
Sub
Method
Term
Operator
Trait
Submethod
Disambiguation for '-->'
These disambiguation URLs are DEPRECATED. Please don't link to them. They will be eventually deleted in the next release of the documentation
'-->' is a reference
from
class Signature


| crashrpt | |
| A crash reporting system for Windows applications |
Open one of solution files available in the top level directory of CrashRpt archive, depending on your version of Visual Studio:
There are several projects in CrashRpt solution.
To build the solution, choose the Release build configuration and press F7 to start building process.
Note, that you should have x64 compiler tools and SDK files properly installed (ensure you have checked these components during Visual C++ installation).
CrashRpt depends on WTL. WTL itself depends on Microsoft's library called ATL (Active Template Library). ATL library is a part of Visual Studio SDKs. An older version, ATL 3.0, is included into Microsoft Platform SDK for Windows Server 2003. Since then, Platform SDK was renamed into Windows SDK. However, Microsoft doesn't include ATL into Windows SDK to encourage using of commercial Visual Studio having ATL.
So, there are two ways to compile CrashRpt in Visual C++ Express:
The first way. You need to have Platform SDK for Windows Server 2003, because this Platform SDK contains ATL 3.0 source code. Download and install Microsoft Platform SDK for Windows Server 2003, for example from here.
In VC++ Express window, open Tools->Options...->Projects and Solutions-> VC++ Directories. In the 'Show directories for' combo, select 'Include files' and then add <Platform_SDK_Folder>\Include\atl path to the list of include directories (replace the <Platform_SDK_Folder> with the actual directory name).
The second way. Install Windows Driver Kit, version 7.0 or later, because it contains ATL 7.1 source code. When WinDDK is installed, in VC++ Express window, open Tools->Options...->Projects and Solutions-> VC++ Directories. In the 'Show directories for' combo, select 'Include files' and then add C:\WinDDK\6001.18002\inc\crt\atl71 path to the list of include directories.
index.html
file in the top-level directory of CrashRpt distribution.You can also build documentation yourself. CrashRpt documentation can be generated using the Doxygen tool. You can download the tool from here.
To build the documentation, go to the docs
folder and type in the command line:
doxygen Doxyfile
When doxygen finishes, go to the top level directory and open index.html
.
What is the Release LIB build configuration?
The Release LIB configuration is an addition to the standard Debug and Release build configurations. Typically, you do not compile CrashRpt in this configuration. However, it may be useful if you use static CRT linkage.
In the Release LIB configuration, the build generates CrashSender.exe executable file and CrashRptLIB.lib static library. In this configuration, CrashSender.exe and CrashRptLIB.lib use static linkage to CRT.


[§440E-2] Assistants. The director may appoint and remove assistants to assist the director in carrying out the director's activities, duties, and other obligations under this chapter. [L 2007, c 279, pt of §1]


The six top jobs at South Gloucestershire Council worth £900,000
Wages bill includes salaries, fees, allowances and pensions
by Emma FlanaganSouth Gloucestershire Council forked out nearly £900,000 in wages across six job roles last year.
The bill included nearly £60,000 for an agency “interim director” hired for just 17 weeks, the authority’s annual report for 2018/19 shows.
The financial year to April 2019 was a year of churn for the council’s top officials, with two of the most senior officers leaving the organisation and the chief executive announcing her retirement after 14 years in the role.
Altogether, the six top official roles cost the council £892,309 in pay - salaries, fees and allowances - and pension contributions.
But, with three of the six top jobs each shared by at least two people across the financial year, individual senior officer pay paints a complicated picture.
Chief executive
Former chief executive Amanda Deeks received nearly £200,000 altogether, made up of £162,032 in pay and £36,295 in pension contributions.
Director of corporate resources
Dave Perry, who was Ms Deeks’s deputy and the director of corporate resources throughout 2018/19, was paid just over £130,000 and another £29,132 was put in his pension pot. Mr Perry replaced Ms Deeks as chief executive in May of this year.
Director for children, adults and health
This role was filled by two people, with the current post-holder Chris Sivers taking over in mid July 2018.
Starting on a lower salary than her predecessor, who retired at the end of May, Ms Sivers received a total of £105,161 during her first eight and a half months on the job, made up of £85,916 in pay and £19,245 in pension contributions.
Director for environment and community services
Three people did this job - including an interim agency director who held the fort after one director left in June 2018, and another one started four months later.
Employing a member of agency staff to plug the 17-week gap cost the council £58,468 - amounting to an additional £27,000 over and above what would have been paid during that period, a council spokesman said.
Including pension payments, the former environment and community services director received nearly £46,200 in the three months before leaving, while the new director got just over £67,500.
Head of legal, governance and democratic services
John McCormack, who is still in the job, was paid £100,934 and got another £22,609 in pension contributions.
Director of public health
The role was job shared by Mark Pietroni and Sara Blackmore until January 2017, when Ms Blackmore became the main office-holder.
The annual report does not name names, but shows one of them was paid £29,680 in 2018/19 while the other received just over £75,000 in pay and pension contributions.
Although staggering from most people’s perspective, the total spent on the six roles was actually lower than the year before by just over £6,000.
The total cost of employing council staff and officers in South Gloucestershire was £174.7million in 2018/19.
For the latest news in and around Bristol, visit and bookmark Bristol Live's homepage.