Unfortunately, javascript is required to use this site. Please enable javascript and reload the page.


Run a facial analysis on either a file or URL to assess the numberical value of the emotions being displayed.
Then view previously scanned Emotes to compare and contrast
Here.
Use Link:
Enter image URL that includes a face, then click
Analyze Face button.


Exercises to gain weight for females and males
Female and male bodies store fatTrusted Source and distribute muscle massTrusted Source differently. Focus on the exercises that give you the most promising results for your body type.
Pushups
Pushups are simple and help build muscle in your arms and shoulders. To do a pushup:
- Lie face down on the ground.
- Put your hands on the ground, palms flat, with your arms out at your sides and your hands shoulder-width apart.
- Slowly push your body up until your arms are fully extended. Keep your back and legs straight so that your body makes a straight line.
- Slowly lower yourself back down until your nose nearly touches the floor.
- Repeat as many times as you feel comfortable.
Pullups
You’ll need some kind of pullup bar or sturdy cylindrical object to do pullups. Otherwise, this exercise is a simple way to build arm and shoulder muscles.
- Grip the pullup bar with both hands.  Keep your arms shoulder-width apart.
- Pull yourself up enough to hang off the bar so that your feet aren’t touching the ground and your arms are straight.
- Continue to pull yourself up until your chin is above the bar.
- Slowly lower yourself down so that your arms are straight again.
- Repeat as many times as you want.
Bench press
or this exercise, you’ll need a flat bench to lie on and a weighted bar. Don’t overload the bar, though, because you can injure yourself.
Bench presses help build shoulder, tricep, and chest muscles. This is a good exercise for bulking up. The more weight you can bench, the more muscle you’ll build.
You may want to perform this exercise with the help of a spotter for safety.
- Lie on your back on the bench. If the bench has a rack for the bar, face the bar. If there’s no rack, hold the bar carefully and slowly lie backward on the bench until you’re comfortable.
- If there’s a rack, grab the bar with both hands, including your thumbs. Feel free to spread your fingers a bit.
- Extend your arms to take the bar out of the rack.
- Slowly lower your arms to bring the bar down to your chest.
- Slowly straighten your arms and raise the bar back toward the rack. If there’s no rack, make sure you have the strength to sit back up after you’re done.
- Repeat steps 4 and 5 as many times as you feel comfortable.
Overhead press
You’ll need a weighted bar to perform this exercise. Overhead presses will help bulk up the muscles in your arms, shoulders, back, abs, and legs.
- Grip the bar with your hands about shoulder-width apart.
- Lift the bar up to just above the front of your chest, even with your shoulders.
- Slowly lift the bar above you until your arms are straight. Keep your elbows locked and raise your shoulders like you’re shrugging.
- Slowly lower the bar back to shoulder height.
- Repeat steps 3 and 4 as many times as comfortable.
What to eat to bulk up
It’s not hard to gain weight by eating more. But be mindful of what you eat to gain healthy weight. A diet to bulk up mainly consists of healthy fats, proteins, and complex carbohydrates that help build muscle and use fat to burn energy.
Try some of the following foods:
- lean proteins, such as chicken and fish
- red meat with no growth hormones, such as grass-fed beef
- eggs
- full-fat dairy, such as whole milk and full-fat Greek yogurt
- fat-rich fruits, such as avocados
- nuts, such as almonds
- whole-grain breads
Take notes of what you eat in a journal or an app that tracks nutrients. It’s surprisingly hard to know exactly how much you eat unless you write it down. You may find that you aren’t consuming enough calories or that your food choices aren’t nutritious enough for a healthy diet.
Take notes of what you eat in a journal or an app that tracks nutrients. It’s surprisingly hard to know exactly how much you eat unless you write it down. You may find that you aren’t consuming enough calories or that your food choices aren’t nutritious enough for a healthy diet.
Nice, keep going
here is some tips for build muscle :
At-home workout routine
Whether you’re a seasoned expert or new to strength training, working out at home is a great option when you can’t get to the gym or need a change of pace.
The at-home workouts below require a limited amount of equipment. Plus, some of the movements can be substituted for bodyweight exercises in which you use your body’s own weight as resistance.
These exercises can serve as a weeklong beginner’s routine or cycled to provide several sessions per week for advanced trainees.
If your goal is weight loss, you can add a form of cardio, such as running or cycling, between sessions.
Equipment required flat-weight bench, appropriate adjustable dumbbells based on your level of experience.
If you’re just starting out you may want to get expert advice at a specialty store to select the right equipment, but if you know what you’re looking for, you can also purchase adjustable dumbbells online.
Rest intervals : 60–90 seconds
Day 1: legs, shoulders, and abs
- Legs : dumbbell squats — 3 sets of 6–8 reps
- Shoulders : standing shoulder press — 3 sets of 6–8 reps
- Legs: dumbbell lunge — 2 sets of 8–10 reps per leg
- Shoulders : dumbbell upright rows — 2 sets of 8–10 reps
- Hamstrings : Romanian dumbbell deadlift — 2 sets of 6–8 reps
- Shoulders : lateral raises — 3 sets of 8–10 reps
- Calves : seated calf raises — 4 sets of 10–12 reps
- Abs: crunches with legs elevated — 3 sets of 10–12 reps
Day 2: chest and back
- Chest: dumbbell bench press or floor press — 3 sets of 6–8 reps
- Back : dumbbell bent over rows — 3 sets of 6–8 reps
- Chest : dumbbell fly — 3 sets of 8–10 reps
- Back : one-arm dumbbell rows — 3 sets of 6–8 reps
- Chest : pushups — 3 sets of 10–12 reps
- Back/chest : dumbbell pullovers — 3 sets of 10–12 reps
Day 3: arms and abs
- Biceps : alternating bicep curls — 3 sets of 8–10 reps per arm
- Triceps : overhead tricep extensions — 3 sets of 8–10 reps
- Biceps: seated dumbbell curls — 2 sets of 10–12 reps per arm
- Triceps : bench dips — 2 sets of 10–12 reps
- Biceps : concentration curls — 3 sets of 10–12 reps
- Triceps : dumbbell kickbacks — 3 sets of 8–10 reps per arm
- Abs : planks — 3 sets of 30-second holds


Every Hand An Adventure is a natural, agressive bidding system. It is a four-card major system whose main features are a mini (10-12 HCP) notrump and obligatory two-level preempts in all four suits.
Since 2♣ is a preempt, there is no forcing opening bid. This means that 2N openings are often semi-balanced (and sometimes unbalanced) and that bidding very strong opening hands may be impossible. This is by design — in an average tournament, the strong 2♣ might be opened once (or never), and the preemptive version is much more common. Sacrificing the ability to bid a slam for several distruptive openings can be favourable at matchpoints1,
The 1N opening promises a balanced hand with 10-12 HCP. It usually denies a five-card suit — such hands can open either one- or two of that suit. The exception is a 5-3-3-2 hand, with five cards in a minor and values concentrated in the short suits.
2♣ is non-promissory Stayman, with the standard meaning and response structure.
Responder can bid a five-card suit to try to improve the contract (3♣ with clubs, two-level with anything else). This is non-constructive and the opener is expected to pass.
With 5-5 in the minors, responder bids 2N, after which opener chooses his better minor. Responder can pass or invite game by raising.
All responses at the three level (except 3♣, which is a non-constructive attempt at improving the contract) are preemptive, showing at least six cards and not promising any values.
Any two of a suit opening3 shows 6-11 HCP and at least five cards in that suit. These openings are obligatory — the opener must not pass with a hand that fits this description. Therefore, passing an opening shows either a balanced hand (with less than 12HCP) or at most five HCP.
The wide range of points and shapes that the opener might have makes bidding game precisely impossible. Sometimes, a responder with a decent hand will not be able to try for game4.
Non-jump bids in new suits are non-constructive, non-forcing attempts to improve the contract. They are generally made holding at least four cards more in that suit than in the opener's. Over an overcall, these show values and are constructive (but still non-forcing).
With an invitational hand, responder can raise or bid 2N (depending on whether he has support). Jump bids in new suits are natural and game-forcing. Because of the wide point range opener can have, these bids are necessarily slam tries if he holds a maximum.
A jump to game in opener's suit5 is two-way, either preempting the opponents with a weak hand or expecting to make. Opener is expected to pass.
Hands that can be opened at the two level should generally not be opened below game. Therefore, all three-level preempts (4♣ and 4♦ as well) are very weak, showing at most 5 HCP and at least six cards when non-vulnerable and seven when vulnerable6. The number of losers they promise depends on vulnerability:
Game-level preempts follow the same guidelines for suit length and number of losers, but may be made on hands that can open with a weak-two bid.
EHAA is a four-card major system, and one-level openings promise at least four cards in the suit opened and at least 13 HCP. Conventional responses can be used after these, including Jacoby 2N and Bergen raises after major-suit openings (promising a good four-card or any five-card support).
Notrump rebids show 13-15 HCP for a non-jump, 16-18 for a jump to NT and 19-20 for a direct 3N rebid.
At IMPs, playing EHAA is probably not a good idea.↩
4-3-3-3 or 4-4-3-2, rarely 5-3-3-2.↩
Note that this includes 2♣.↩
For example, with 13 HCP, game might be possible if opener is maximal, but opposite a minimum it is easy to get into a bad penalty.↩
Both 2♥–4♥ and 2♣–5♣, but not 2♣–4♣, which is always preemptive.↩
Seven and eight respectively for 4♣ and 4♦.↩
For all of these, 4♣ and 4♦ show one loser less.↩


This beautifier can process your messy or compacted javascript, making it all neatly and consistently formatted and readable.
You can always see the latest version of the code in github, and you can download the beautifier for local use (zip, tar.gz) as well.
The beautifier has a simple unpacker for Dean Edward's packer. To unpack javascript, paste (p,a,c,k,e,d) scripts and they'll hopefully get decoded. Your feedback is welcome.
To beautify from the command-line you can use provided beautify-cl.js script, using Rhino javascript engine. See the file contents for the details.
This popular web debugging proxy for Windows has a Javascript Formatter addon (based on this beautifier) which can reformat javascript on the fly.
Aj3423 converted the script to vimscript — and so now there is a vim plugin for the quality javascript beautifying.
If you're writing javascript code, JSLint is a really fine piece of software, too. You don't have to follow its recommendations blindly, but understanding what it says about your code can greatly improve your skills.
If you find some problems with the generated javascript, adapt the script for your favorite editor, or something, my email is einars@gmail.com.


Apache Felix Shell TUI
The Apache Felix Shell TUI (Textual User Interface) sub-project provides a simple, text-based user interface for the Apache Felix Shell Service. This bundle is not of much use by itself and should always be used in conjunction with the shell service bundle. The shell service and shell TUI bundles are used by the standard Felix launcher to provide a means for interacting with the launched Felix framework instance. The shell TUI bundle is not required to use the shell service; it is possible to use a GUI interface or remote access interface for interacting with the shell service.


A hover effect where the gradient follows the mouse cursor. - Declare two CSS variables, `--x` and `--y`, used to track the position of the mouse on the button. - Declare a CSS variable, `--size`, used to modify the gradient's dimensions. - Use `background: radial-gradient(circle closest-side, pink, transparent);` to create the gradient at the correct position. - Use `Document.querySelector()` and `EventTarget.addEventListener()` to register a handler for the `'mousemove'` event. - Use `Element.getBoundingClientRect()` and `CSSStyleDeclaration.setProperty()` to update the values of the `--x` and `--y` CSS variables.


“When something is limitless, there's an unending amount or supply of it. If you truly believe there are limitless possibilities in life, you see no limit to what people can achieve.”
Let us take your company on a journey to limitless health, happiness and performance.
We do this through tailored online journeys that bring harmony to the four key elements of health:
mind - be present
rest - play more
fuel - fill up
move - level up
For more information or to book a consultation, please contact us below.


Twisted is very large. At last count, it has around 80 thousand lines of code (yes, that is very large for a Python project, maybe not so for a C++ project. ;). We broke it into several smaller packages with the 2.0 release.
The biggest reason was to make our release process more agile. A regression in twisted.names, for example, could hold up the release of the entire thing, when really it should only be holding up the release of twisted.names.
The other big reason is visibility. Twisted has a ton of functionality, but many people miss out on it because they don't know where it is hidden inside Twisted. The Twisted split gave every sub-project its own web site and thus more visibility.
Yes. Tarball and Windows releases for Twisted and all of its sub-projects will still be maintained. We encourage maintainers of packages for OSes with automatic packaging systems to break up the packages as well, so, for example, Debian will have python2.3-twisted-core, python2.3-twisted-conch, python2.3-twisted-names, and so on.
A list of Twisted projects is available on the website. The list includes maintainer information and links to project-specific pages with more detailed information.
[1]: twisted.protocols is very stripped down now; it only includes the protocols that didn't belong anywhere else. It still contains the simple protocols, the helper utilities, and, ahem, FTP.
No existing code should break, however, many modules were moved. Backwards compatibility support does exist in older versions of Twisted, but was removed in Twisted 9.0.
It depends on your OS and how you installed Twisted originally. If you're using Debian, we are planning on breaking up the Debian packages to e.g. python2.3-twisted-core, python2.3-twisted-web, and so on. If you're using Windows, or generally install Twisted from the tarball or from an SVN checkout, monolithic options will still be available.
If you try to run code that imports a sub-package when that sub-package is not available on the system, an ImportError will be raised directing the user to the web site for that particular sub-project.
This is controversial. While this does mean that there is a
mashed-together namespace under twisted.
, it's also the
simplest thing to do, and means less breakage for user-code, so we did that.
Not much. The repository is rearranged a bit; protocols have been moved to their relevant packages and documentation is now stored in doc/subproject/ instead of everything at the top-level of doc/. Everything is still in the same repository and everyone still has the same access levels they used to.


{% extends "layout.html" %} {% block page_title %} Apply for European Structural and Investment Funding {% endblock %} {% block content %} {% include "includes/phase_banner_alpha.html" %} Home Call list Application overview Project Capital Projects {% include 'includes/page_errors.html' %} Project (3 of 4) Capital Projects back Capital Projects List all approvals needed for the project to proceed as envisaged a) which have already been obtained b) which are to be obtained (include timescales) List all existing charges on the project site(s) at the end of the application Add another Provide details of any charges the Applicant expects to be removed or added to the site(s) in the 6 months following the submission of this application List all options to purchase the project site(s) at the date of the Application or which are expected to be put in place within 6 months of the submission of this application Add another Provide a clear statement on the sources of match funding This should detail the source, the contribution amount, its current status and any conditionality Provide a clear statement on the intended use of the completed asset(s) and the secors you are targeting for the occupiers Provide details of any planned disposals Warning Confirm that you have reviewed DCLG's precedent legal documentation and are willing to enter into these. If the project is awarded ERDF funding you will be expected to enter into DCLG's precedent legal documentation. This includes a Grant Funding Agreement, a Deed of Covenant, a Collateral Warranty (for your Quantity Surveyor) and a Legal Charge. I confirm I have reviewed the legal documentation and agree to enter into the terms specified Sites where project undertaken For a capital project, provide the following information about the sites where project activities will be undertaken, and also upload accompanying documents as advised by the Managing Authority Site name Land Registry Number What is the Applicant's legal interest on the site Site was purchased for the project Add another 1. Eccleston Square Site name Eccleston Square Land registry number 1A - SN1A Legal Interest Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 2. Battersea Power Station Site name Battersea Power Station Land registry number 1A - SN1A Legal Interest Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Save and continue Cancel and return to dashboard {% include "includes/application_info.html" %} {% include "includes/secondary_nav.html" %} {% endblock %}
If the project is awarded ERDF funding you will be expected to enter into DCLG's precedent legal documentation. This includes a Grant Funding Agreement, a Deed of Covenant, a Collateral Warranty (for your Quantity Surveyor) and a Legal Charge.


Construction costs:
{{player.turnStatistics.constructionCost | money}} $
Personnel costs:
{{player.turnStatistics.personnelCosts | money}} $
Running costs:
{{player.turnStatistics.runningCosts | money}} $
Misc:
{{player.turnStatistics.misc | money}} $
Customers:
{{player.turnStatistics.customers}}
Earnings:
{{player.turnStatistics.earnings | money}} $


Work Day Scheduler
A simple calendar app for scheduling your work day
9am
💾
10am
💾
11am
💾
12pm
💾
1pm
💾
2pm
💾
3pm
💾
4pm
💾
5pm
💾
Clear Schedule


THE PRISONER OF ZENDA A film review by Andrew Hicks Copyright 1996 Andrew Hicks / Fatboy Productions
(1937) ***1/2 (out of four)
Of at least five filmings of the Anthony Hope novel, this 1937 version is the most famous and -- I'm sure -- the best. Ronald Colman (not to be confused with sci-fi schlock director Roger Corman), one of those great old-time actors with a distinctive Shakespearean voice, plays a dual role as the King of Ruritania and traveling Britishman Rudolf Rassendyll, a fisherman with an uncanny resemblance to the king.
Indeed, it is the resemblance that gets him into the king's castle for a private party the night before the coronation, when the alcoholic king drinks a cup of drugged wine. It's all part of an insidious plan by the king's evil brother Michael and his henchman Rupert of Hentzau (Douglas Fairbanks, another great old-time actor) to gain control of the throne. When the king's aides realize this, they call on commoner Rudolph to impersonate the king. (Almost sixty years later, a guy named Dave would be in a similar situation.)
So Rudolph attends the coronation and meets Princess Flavin (Madeleine Carroll), who may or not be marrying the king. He, of course, instantly falls in love with her and she with him, noticing how incredibly different he has become (what a difference today makes). This causes the usual romantic complications, leading Rudolph to ask the immortal question, "Would you love me if I weren't king?" before an all-knowing aide whisks him away.
This great old-time drama continues, with Michael and Rupert kidnapping the king and Rudolph going in to rescue him. Even in the 30's movies had those overblown climax scenes, THE PRISONER OF ZENDA's featuring a swordfight, several shootouts and even an army on horseback. The movie is almost entirely entertaining even today, with only a few romantic melodrama scenes with the obligatory string score in the background seeming laughable today, probably more laughable than the 1979 comedy version of THE PRISONER OF ZENDA starring David Niven.
--
Visit the Movie Critic at LARGE homepage at http://www.missouri.edu/~c667778/movies.html Serving America For Over 1/50 of a Century!
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


CV and ML at the edge, with Intel RealSense
10 Jun 2021Intel RealSense is known in the robotics community for its plug-and-play stereo cameras. These cameras make gathering 3D depth data a seamless process, with easy integrations into ROS to simplify the software development for your robots. From the RealSense team, Joel Hagberg talks about how they built this product, which allows roboticists to perform computer vision and machine learning at the edge.
Through Fluid Design Consultancy, we have come into contact with the RealSense line of products extensively. The ability to add an off the shelf component to instantly give us depth data is a win by itself. The ability to leverage an active, open source community that develops software packages on top of this to extract more value out of the product is magical.
Joel Hagberg
Joel Hagberg leads the Intel® RealSense™ Marketing. Product Management and Customer Support teams. He joined Intel in 2018 after a few years as an Executive Advisor working with startups in the IoT, AI, Flash Array, and SaaS markets. Before his Executive Advisor role, Joel spent two years as Vice President of Product Line Management at Seagate Technology with responsibility for their $13B product portfolio. He joined Seagate from Toshiba, where Joel spent 4 years as Vice President of Marketing and Product Management for Toshiba’s HDD and SSD product lines. Joel joined Toshiba with Fujitsu’s Storage Business acquisition, where Joel spent 12 years as Vice President of Marketing, Product Management, and Business Development. Joel’s Business Development efforts at Fujitsu focused on building emerging market business units in Security, Biometric Sensors, H.264 HD Video Encoders, 10GbE chips, and Digital Signage.


I believe in evidence. I believe in observation, measurement, and reasoning, confirmed by independent observers. I'll believe anything, no matter how wild and ridiculous, if there is evidence for it. The wilder and more ridiculous something is, however, the firmer and more solid the evidence will have to be.
Isaac Asimov
Find us...


A major weakness of the HTTP protocol is its inability to share a single connection between multiple simultaneous transactions — to multiplex a number of transactions over a single connection. In HTTP, a client can either request all instances sequentially, which significantly increases latency, or else open multiple concurrent connections, with all the problems that this implies (see Persistent connections).
Poor Man's Multiplexing (PMM) is a technique that simulates multiplexing by requesting an instance in multiple segments; because the segments are fetched in independent transactions, they can be interleaved with requests for other resources.
Obviously, PMM only makes sense in the presence of persistent connections; additionally, it is only effective in the presence of pipelining (see Pipelining).
PMM poses a number of reliability issues. If the resource being fetched is dynamic, it is quite possible that it will change between segments; thus, an implementation making use of PMM needs to be able to switch to full-resource retrieval when it detects a dynamic resource.
Polipo supports PMM, but it is disabled it by default (see PMM).


Register offsets | |
|
| |
| #define | ADC_CTRLA 0x00 |
| Control register A. | |
| #define | ADC_CTRLB 0x01 |
| Control register B. | |
| #define | ADC_REFCTRL 0x02 |
| Reference control. | |
| #define | ADC_EVCTRL 0x03 |
| Event control. | |
| #define | ADC_PRESCALER 0x04 |
| ADC clock prescaling. | |
| #define | ADC_INTFLAGS 0x06 |
| Interrupt flags for ADC channels. | |
| #define | ADC_TEMP 0x07 |
| Temporary register for 16-bit reads. | |
| #define | ADC_CALL 0x0C |
| ADC calibration low byte. | |
| #define | ADC_CALH 0x0D |
| ADC calibration high byte. | |
| #define | ADC_CH0RESL 0x10 |
| ADC channel 0 result low byte. | |
| #define | ADC_CH0RESH 0x11 |
| ADC channel 0 result high byte. | |
| #define | ADC_CH1RESL 0x12 |
| ADC channel 1 result low byte. | |
| #define | ADC_CH1RESH 0x13 |
| ADC channel 1 result high byte. | |
| #define | ADC_CH2RESL 0x14 |
| ADC channel 2 result low byte. | |
| #define | ADC_CH2RESH 0x15 |
| ADC channel 2 result high byte. | |
| #define | ADC_CH3RESL 0x16 |
| ADC channel 3 result low byte. | |
| #define | ADC_CH3RESH 0x17 |
| ADC channel 3 result high byte. | |
| #define | ADC_CMPL 0x18 |
| ADC compare low byte. | |
| #define | ADC_CMPH 0x19 |
| ADC compare high byte. | |
Bitfields in CTRLA | |
|
| |
| #define | ADC_ENABLE_BIT 0 |
| ADC enable. | |
| #define | ADC_FLUSH_BIT 1 |
| ADC flush. | |
| #define | ADC_CHSTART_START 2 |
| ADC channel start single conversion. | |
| #define | ADC_CHSTART_SIZE 4 |
| ADC channel start single conversion. | |
| #define | ADC_DMASEL_START 6 |
| ADC channel DMA request selection. | |
| #define | ADC_DMASEL_SIZE 2 |
| ADC channel DMA request selection. | |
CHSTART bitfield values | |
|
| |
| #define | ADC_CHSTART_0 1 |
| Start conversion on ADC channel 0. | |
| #define | ADC_CHSTART_1 2 |
| Start conversion on ADC channel 1. | |
| #define | ADC_CHSTART_2 4 |
| Start conversion on ADC channel 2. | |
| #define | ADC_CHSTART_3 8 |
| Start conversion on ADC channel 3. | |
DMASEL bitfield values | |
|
| |
| #define | ADC_DMASEL_OFF 0 |
| No combined DMA request. | |
| #define | ADC_DMASEL_CH01 1 |
| ADC channel 0 and 1 can trigger DMA. | |
| #define | ADC_DMASEL_CH012 2 |
| ADC channel 0, 1 and 2 can trigger DMA. | |
| #define | ADC_DMASEL_CH0123 3 |
| All ADC channels can trigger DMA. | |
Bitfields in CTRLB | |
|
| |
| #define | ADC_RESOLUTION_START 1 |
| ADC conversion resolution. | |
| #define | ADC_RESOLUTION_SIZE 2 |
| ADC conversion resolution. | |
| #define | ADC_FREERUN_BIT 3 |
| ADC free running mode. | |
| #define | ADC_CONVMODE_BIT 4 |
| ADC signed/unsigned conversion mode. | |
RESOLUTION bitfield values | |
|
| |
| #define | ADC_RESOLUTION_12BIT 0 |
| 12-bit result, right adjusted | |
| #define | ADC_RESOLUTION_8BIT 2 |
| 8-bit result, right adjusted | |
| #define | ADC_RESOLUTION_LEFT12BIT 3 |
| 12-bit result, left adjusted | |
Bitfields in REFCTRL | |
|
| |
| #define | ADC_TEMPREF_BIT 0 |
| Enable temperature reference for measurement. | |
| #define | ADC_BANDGAP_BIT 1 |
| Enable bandgap for measurement. | |
| #define | ADC_REFSEL_START 4 |
| ADC reference selection. | |
| #define | ADC_REFSEL_SIZE 2 |
| ADC reference selection. | |
REFSEL bitfield values | |
|
| |
| #define | ADC_REFSEL_INT1V 0 |
| Internal 1.00 V as reference. | |
| #define | ADC_REFSEL_INTVCC 1 |
| Internal VCC/1.6 V as reference. | |
| #define | ADC_REFSEL_AREFA 2 |
| External reference from AREFA. | |
| #define | ADC_REFSEL_AREFB 3 |
| External reference from AREFB. | |
Bitfields in EVCTRL | |
|
| |
| #define | ADC_EVACT_START 0 |
| ADC event mode. | |
| #define | ADC_EVACT_SIZE 3 |
| ADC event mode. | |
| #define | ADC_EVSEL_START 3 |
| ADC event line selection. | |
| #define | ADC_EVSEL_SIZE 3 |
| ADC event line selection. | |
| #define | ADC_SWEEP_START 6 |
| ADC channel sweep selection. | |
| #define | ADC_SWEEP_SIZE 2 |
| ADC channel sweep selection. | |
EVACT bitfield values | |
|
| |
| #define | ADC_EVACT_NONE 0 |
| < No event action | |
| #define | ADC_EVACT_CH0 1 |
| Lowest event line triggers conversion on ADC channel 0. | |
| #define | ADC_EVACT_CH01 2 |
| Two lowest event lines trigger conversions on ADC channels 0 and 1. | |
| #define | ADC_EVACT_CH012 3 |
| Three lowest event lines trigger conversions on ADC channels 0, 1 and 2. | |
| #define | ADC_EVACT_CH0123 4 |
| All event lines trigger conversions on the respective ADC channels. | |
| #define | ADC_EVACT_SWEEP 5 |
| Lowest event line triggers channel sweep. | |
| #define | ADC_EVACT_SYNCSWEEP 6 |
| Lowest event line triggers channel sweep with synchronization. | |
EVSEL bitfield values | |
|
| |
| #define | ADC_EVSEL_0123 0 |
| Event channels 0, 1, 2 and 3 as event lines. | |
| #define | ADC_EVSEL_1234 1 |
| Event channels 1, 2, 3 and 4 as event lines. | |
| #define | ADC_EVSEL_2345 2 |
| Event channels 2, 3, 4 and 5 as event lines. | |
| #define | ADC_EVSEL_3456 3 |
| Event channels 3, 4, 5 and 6 as event lines. | |
| #define | ADC_EVSEL_4567 4 |
| Event channels 4, 5, 6 and 7 as event lines. | |
| #define | ADC_EVSEL_567 5 |
| Event channels 5, 6, and 7 as event lines. | |
| #define | ADC_EVSEL_67 6 |
| Event channels 6 and 7 as event lines. | |
| #define | ADC_EVSEL_7 7 |
| Event channel 7 as event line. | |
SWEEP bitfield values | |
|
| |
| #define | ADC_SWEEP_0 0 |
| Sweep ADC channel 0 only. | |
| #define | ADC_SWEEP_01 1 |
| Sweep ADC channels 0 and 1. | |
| #define | ADC_SWEEP_012 2 |
| Sweep ADC channels 0, 1 and 2. | |
| #define | ADC_SWEEP_0123 3 |
| Sweep all ADC channels. | |
Bitfields in PRESCALER | |
|
| |
| #define | ADC_PRESCALER_START 0 |
| ADC clock prescaling. | |
| #define | ADC_PRESCALER_SIZE 3 |
| ADC clock prescaling. | |
PRESCALER bitfield values | |
|
| |
| #define | ADC_PRESCALER_DIV4 0 |
| Prescale peripheral clock by 4. | |
| #define | ADC_PRESCALER_DIV8 1 |
| Prescale peripheral clock by 8. | |
| #define | ADC_PRESCALER_DIV16 2 |
| Prescale peripheral clock by 16. | |
| #define | ADC_PRESCALER_DIV32 3 |
| Prescale peripheral clock by 32. | |
| #define | ADC_PRESCALER_DIV64 4 |
| Prescale peripheral clock by 64. | |
| #define | ADC_PRESCALER_DIV128 5 |
| Prescale peripheral clock by 128. | |
| #define | ADC_PRESCALER_DIV256 6 |
| Prescale peripheral clock by 256. | |
| #define | ADC_PRESCALER_DIV512 7 |
| Prescale peripheral clock by 512. | |
Bitfields in INTFLAGS | |
|
| |
| #define | ADC_CH0IF_BIT 0 |
| ADC channel 0 interrupt flag. | |
| #define | ADC_CH1IF_BIT 1 |
| ADC channel 1 interrupt flag. | |
| #define | ADC_CH2IF_BIT 2 |
| ADC channel 2 interrupt flag. | |
| #define | ADC_CH3IF_BIT 4 |
| ADC channel 3 interrupt flag. | |
Bit manipulation macros | |
|
| |
| #define | ADC_BIT(name) (1U << ADC_##name##_BIT) |
| Create a mask with bit name set. | |
| #define | ADC_BF(name, value) ((value) << ADC_##name##_START) |
| Create a mask with bitfield name set to value. | |
| #define | ADC_BFMASK(name) (((1U << ADC_##name##_SIZE) - 1) << ADC_##name##_START) |
| Create a mask of the bitfield name. | |
| #define | ADC_BFEXT(name, regval) |
| Extract the value of bitfield name from regval. | |
| #define | ADC_BFINS(name, value, regval) |
| Return regval with bitfield name set to value. | |
Register access macros | |
|
| |
| #define | adc_read_reg(base, reg) mmio_read8((void *)((uintptr_t)(base) + ADC_##reg)) |
| Read the value of register reg on ADC with base address base. | |
| #define | adc_write_reg(base, reg, value) mmio_write8((void *)((uintptr_t)(base) + ADC_##reg), (value)) |
| Write value to register reg on ADC with base address base. |
| #define ADC_BANDGAP_BIT 1 |
Enable bandgap for measurement.
Definition at line 122 of file xmega_adc.h.
| #define ADC_BF | ( | name, | |||
| value | ) | ((value) << ADC_##name##_START) |
Create a mask with bitfield name set to value.
Definition at line 216 of file xmega_adc.h.
Referenced by touch_priv_adc_init(), and touch_priv_adc_start().
| #define ADC_BFEXT | ( | name, | |||
| regval | ) |
(((regval) >> ADC_##name##_START) \ & ((1U << ADC_##name##_SIZE) - 1))
Extract the value of bitfield name from regval.
Definition at line 222 of file xmega_adc.h.
| #define ADC_BFINS | ( | name, | |||
| value, | |||||
| regval | ) |
(((regval) & ~(((1U << ADC_##name##_SIZE) - 1) \ << ADC_##name##_START)) \ | ADC_BF(name, value))
Return regval with bitfield name set to value.
Definition at line 226 of file xmega_adc.h.
| #define ADC_BFMASK | ( | name | ) | (((1U << ADC_##name##_SIZE) - 1) << ADC_##name##_START) |
Create a mask of the bitfield name.
Definition at line 219 of file xmega_adc.h.
Referenced by board_disable_touch_adc().
| #define ADC_BIT | ( | name | ) | (1U << ADC_##name##_BIT) |
Create a mask with bit name set.
Definition at line 213 of file xmega_adc.h.
Referenced by board_disable_touch_adc(), touch_priv_adc_clear_int_flag(), touch_priv_adc_init(), and touch_priv_adc_start().
| #define ADC_CALH 0x0D |
ADC calibration high byte.
Definition at line 63 of file xmega_adc.h.
| #define ADC_CALL 0x0C |
ADC calibration low byte.
Definition at line 62 of file xmega_adc.h.
| #define ADC_CH0IF_BIT 0 |
ADC channel 0 interrupt flag.
Definition at line 204 of file xmega_adc.h.
| #define ADC_CH0RESH 0x11 |
ADC channel 0 result high byte.
Definition at line 66 of file xmega_adc.h.
| #define ADC_CH0RESL 0x10 |
ADC channel 0 result low byte.
Definition at line 65 of file xmega_adc.h.
| #define ADC_CH1IF_BIT 1 |
ADC channel 1 interrupt flag.
Definition at line 205 of file xmega_adc.h.
| #define ADC_CH1RESH 0x13 |
ADC channel 1 result high byte.
Definition at line 68 of file xmega_adc.h.
| #define ADC_CH1RESL 0x12 |
ADC channel 1 result low byte.
Definition at line 67 of file xmega_adc.h.
| #define ADC_CH2IF_BIT 2 |
ADC channel 2 interrupt flag.
Definition at line 206 of file xmega_adc.h.
| #define ADC_CH2RESH 0x15 |
ADC channel 2 result high byte.
Definition at line 70 of file xmega_adc.h.
| #define ADC_CH2RESL 0x14 |
ADC channel 2 result low byte.
Definition at line 69 of file xmega_adc.h.
| #define ADC_CH3IF_BIT 4 |
ADC channel 3 interrupt flag.
Definition at line 207 of file xmega_adc.h.
| #define ADC_CH3RESH 0x17 |
ADC channel 3 result high byte.
Definition at line 72 of file xmega_adc.h.
| #define ADC_CH3RESL 0x16 |
ADC channel 3 result low byte.
Definition at line 71 of file xmega_adc.h.
| #define ADC_CHSTART_0 1 |
Start conversion on ADC channel 0.
Definition at line 90 of file xmega_adc.h.
Referenced by touch_priv_adc_start().
| #define ADC_CHSTART_1 2 |
Start conversion on ADC channel 1.
Definition at line 91 of file xmega_adc.h.
Referenced by touch_priv_adc_start().
| #define ADC_CHSTART_2 4 |
Start conversion on ADC channel 2.
Definition at line 92 of file xmega_adc.h.
| #define ADC_CHSTART_3 8 |
Start conversion on ADC channel 3.
Definition at line 93 of file xmega_adc.h.
| #define ADC_CHSTART_SIZE 4 |
ADC channel start single conversion.
Definition at line 83 of file xmega_adc.h.
| #define ADC_CHSTART_START 2 |
ADC channel start single conversion.
Definition at line 82 of file xmega_adc.h.
| #define ADC_CMPH 0x19 |
ADC compare high byte.
Definition at line 74 of file xmega_adc.h.
| #define ADC_CMPL 0x18 |
ADC compare low byte.
Definition at line 73 of file xmega_adc.h.
| #define ADC_CONVMODE_BIT 4 |
ADC signed/unsigned conversion mode.
Definition at line 109 of file xmega_adc.h.
| #define ADC_CTRLA 0x00 |
Control register A.
Definition at line 53 of file xmega_adc.h.
| #define ADC_CTRLB 0x01 |
Control register B.
Definition at line 54 of file xmega_adc.h.
| #define ADC_DMASEL_CH01 1 |
ADC channel 0 and 1 can trigger DMA.
Definition at line 99 of file xmega_adc.h.
| #define ADC_DMASEL_CH012 2 |
ADC channel 0, 1 and 2 can trigger DMA.
Definition at line 100 of file xmega_adc.h.
| #define ADC_DMASEL_CH0123 3 |
All ADC channels can trigger DMA.
Definition at line 101 of file xmega_adc.h.
| #define ADC_DMASEL_OFF 0 |
No combined DMA request.
Definition at line 98 of file xmega_adc.h.
| #define ADC_DMASEL_SIZE 2 |
ADC channel DMA request selection.
Definition at line 85 of file xmega_adc.h.
| #define ADC_DMASEL_START 6 |
ADC channel DMA request selection.
Definition at line 84 of file xmega_adc.h.
| #define ADC_ENABLE_BIT 0 |
ADC enable.
Definition at line 79 of file xmega_adc.h.
| #define ADC_EVACT_CH0 1 |
Lowest event line triggers conversion on ADC channel 0.
Definition at line 151 of file xmega_adc.h.
| #define ADC_EVACT_CH01 2 |
Two lowest event lines trigger conversions on ADC channels 0 and 1.
Definition at line 153 of file xmega_adc.h.
| #define ADC_EVACT_CH012 3 |
Three lowest event lines trigger conversions on ADC channels 0, 1 and 2.
Definition at line 155 of file xmega_adc.h.
| #define ADC_EVACT_CH0123 4 |
All event lines trigger conversions on the respective ADC channels.
Definition at line 157 of file xmega_adc.h.
| #define ADC_EVACT_NONE 0 |
< No event action
Definition at line 149 of file xmega_adc.h.
| #define ADC_EVACT_SIZE 3 |
ADC event mode.
Definition at line 139 of file xmega_adc.h.
| #define ADC_EVACT_START 0 |
ADC event mode.
Definition at line 138 of file xmega_adc.h.
| #define ADC_EVACT_SWEEP 5 |
Lowest event line triggers channel sweep.
Definition at line 159 of file xmega_adc.h.
| #define ADC_EVACT_SYNCSWEEP 6 |
Lowest event line triggers channel sweep with synchronization.
Definition at line 161 of file xmega_adc.h.
| #define ADC_EVCTRL 0x03 |
Event control.
Definition at line 56 of file xmega_adc.h.
| #define ADC_EVSEL_0123 0 |
Event channels 0, 1, 2 and 3 as event lines.
Definition at line 166 of file xmega_adc.h.
| #define ADC_EVSEL_1234 1 |
Event channels 1, 2, 3 and 4 as event lines.
Definition at line 167 of file xmega_adc.h.
| #define ADC_EVSEL_2345 2 |
Event channels 2, 3, 4 and 5 as event lines.
Definition at line 168 of file xmega_adc.h.
| #define ADC_EVSEL_3456 3 |
Event channels 3, 4, 5 and 6 as event lines.
Definition at line 169 of file xmega_adc.h.
| #define ADC_EVSEL_4567 4 |
Event channels 4, 5, 6 and 7 as event lines.
Definition at line 170 of file xmega_adc.h.
| #define ADC_EVSEL_567 5 |
Event channels 5, 6, and 7 as event lines.
Definition at line 171 of file xmega_adc.h.
| #define ADC_EVSEL_67 6 |
Event channels 6 and 7 as event lines.
Definition at line 172 of file xmega_adc.h.
| #define ADC_EVSEL_7 7 |
Event channel 7 as event line.
Definition at line 173 of file xmega_adc.h.
| #define ADC_EVSEL_SIZE 3 |
ADC event line selection.
Definition at line 141 of file xmega_adc.h.
| #define ADC_EVSEL_START 3 |
ADC event line selection.
Definition at line 140 of file xmega_adc.h.
| #define ADC_FLUSH_BIT 1 |
ADC flush.
Definition at line 80 of file xmega_adc.h.
| #define ADC_FREERUN_BIT 3 |
ADC free running mode.
Definition at line 108 of file xmega_adc.h.
| #define ADC_INTFLAGS 0x06 |
Interrupt flags for ADC channels.
Definition at line 59 of file xmega_adc.h.
| #define ADC_PRESCALER 0x04 |
ADC clock prescaling.
Definition at line 57 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV128 5 |
Prescale peripheral clock by 128.
Definition at line 197 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV16 2 |
Prescale peripheral clock by 16.
Definition at line 194 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV256 6 |
Prescale peripheral clock by 256.
Definition at line 198 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV32 3 |
Prescale peripheral clock by 32.
Definition at line 195 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV4 0 |
Prescale peripheral clock by 4.
Definition at line 192 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV512 7 |
Prescale peripheral clock by 512.
Definition at line 199 of file xmega_adc.h.
Referenced by touch_priv_adc_init().
| #define ADC_PRESCALER_DIV64 4 |
Prescale peripheral clock by 64.
Definition at line 196 of file xmega_adc.h.
| #define ADC_PRESCALER_DIV8 1 |
Prescale peripheral clock by 8.
Definition at line 193 of file xmega_adc.h.
| #define ADC_PRESCALER_SIZE 3 |
ADC clock prescaling.
Definition at line 187 of file xmega_adc.h.
| #define ADC_PRESCALER_START 0 |
ADC clock prescaling.
Definition at line 186 of file xmega_adc.h.
| #define adc_read_reg | ( | base, | |||
| reg | ) | mmio_read8((void *)((uintptr_t)(base) + ADC_##reg)) |
Read the value of register reg on ADC with base address base.
Definition at line 235 of file xmega_adc.h.
Referenced by board_disable_touch_adc(), and touch_priv_adc_get_x().
| #define ADC_REFCTRL 0x02 |
Reference control.
Definition at line 55 of file xmega_adc.h.
| #define ADC_REFSEL_AREFA 2 |
External reference from AREFA.
Definition at line 132 of file xmega_adc.h.
| #define ADC_REFSEL_AREFB 3 |
External reference from AREFB.
Definition at line 133 of file xmega_adc.h.
| #define ADC_REFSEL_INT1V 0 |
Internal 1.00 V as reference.
Definition at line 130 of file xmega_adc.h.
| #define ADC_REFSEL_INTVCC 1 |
Internal VCC/1.6 V as reference.
Definition at line 131 of file xmega_adc.h.
Referenced by touch_priv_adc_init().
| #define ADC_REFSEL_SIZE 2 |
ADC reference selection.
Definition at line 125 of file xmega_adc.h.
| #define ADC_REFSEL_START 4 |
ADC reference selection.
Definition at line 124 of file xmega_adc.h.
| #define ADC_RESOLUTION_12BIT 0 |
12-bit result, right adjusted
Definition at line 114 of file xmega_adc.h.
Referenced by touch_priv_adc_init().
| #define ADC_RESOLUTION_8BIT 2 |
8-bit result, right adjusted
Definition at line 115 of file xmega_adc.h.
| #define ADC_RESOLUTION_LEFT12BIT 3 |
12-bit result, left adjusted
Definition at line 116 of file xmega_adc.h.
| #define ADC_RESOLUTION_SIZE 2 |
ADC conversion resolution.
Definition at line 107 of file xmega_adc.h.
| #define ADC_RESOLUTION_START 1 |
ADC conversion resolution.
Definition at line 106 of file xmega_adc.h.
| #define ADC_SWEEP_0 0 |
Sweep ADC channel 0 only.
Definition at line 178 of file xmega_adc.h.
| #define ADC_SWEEP_01 1 |
Sweep ADC channels 0 and 1.
Definition at line 179 of file xmega_adc.h.
| #define ADC_SWEEP_012 2 |
Sweep ADC channels 0, 1 and 2.
Definition at line 180 of file xmega_adc.h.
| #define ADC_SWEEP_0123 3 |
Sweep all ADC channels.
Definition at line 181 of file xmega_adc.h.
| #define ADC_SWEEP_SIZE 2 |
ADC channel sweep selection.
Definition at line 143 of file xmega_adc.h.
| #define ADC_SWEEP_START 6 |
ADC channel sweep selection.
Definition at line 142 of file xmega_adc.h.
| #define ADC_TEMP 0x07 |
Temporary register for 16-bit reads.
Definition at line 60 of file xmega_adc.h.
| #define ADC_TEMPREF_BIT 0 |
Enable temperature reference for measurement.
Definition at line 121 of file xmega_adc.h.
| #define adc_write_reg | ( | base, | |||
| reg, | |||||
| value | ) | mmio_write8((void *)((uintptr_t)(base) + ADC_##reg), (value)) |
Write value to register reg on ADC with base address base.
Definition at line 238 of file xmega_adc.h.
Referenced by board_disable_touch_adc(), touch_priv_adc_clear_int_flag(), touch_priv_adc_init(), and touch_priv_adc_start().


'A remarkable case': How media wrongly accused Richard Jewell of the Olympic Park bombing
by Julia MustoAfter more than 20 years since the 1996 Olympic Park bombing, a new book is exposing FBI investigators and the media's rush to find the culprit. It was a desperate search that ultimately led to a wrongful accusation against an innocent man.
Former case prosecutor and U.S. attorney in Georgia Kent Alexander and Kevin Salwen -- who ran the southeastern coverage for the Wall Street Journal at the time -- told "Fox & Friends" host Brian Kilmeade on Friday that their own investigation into security guard Richard Jewell while writing "The Suspect" was "fascinating."
Jewell discovered a pipe bomb in a knapsack at a park near the Olympic grounds. Although he reportedly helped clear bystanders out of harm’s way, he was later named as the primary suspect in the case. He endured countless media outlets naming him a lone bomber and terrorist, only to be cleared of all charges three months later.
"Well, I was thinking that this was a remarkable case of a man being wrongly accused and a remarkable case of a man who is truly an unsung hero and I wanted to figure out why that happened," said Salwen.
Kilmeade noted Jewell had said some strange things that pushed investigators to believe that he might have been the culprit.
Alexander agreed, adding: "While the Centennial Park where this bomb went off -- 50,000 people in it -- was being built, he asked if the tower would withstand a blast. He said he was going to be famous: 'take a picture of him' beforehand. He said something big was going to be in the park and he was going to be in the middle."
"And so, there are just odd things that he said and other things that just came together," he explained.
CLINT EASTWOOD SUES MEDICAL COMPANY OVER PATENTS, REPORT SAYS
Salwen said that 1996 was a "fascinating year in media," as Fox News Channel and MSNBC joined CNN on cable and The Wall Street Journal and the New York Times went online for the first time.
"All of a sudden the pace of news really accelerates," he explained. "And, in many ways, it's very much a pre-social media social media story."
"And the risk here, of course, is that someone like a Richard Jewell gets caught up in the swirl of all this," he added.
CLICK HERE TO GET THE FOX NEWS APP
"He's a fascinating guy. He's a really fun guy. I love Richard Jewell," Alexander commented. "A lot of it ended here and then the story keeps going because there are a lot of things that happen with him afterward."
"The Suspect" is available now and Clint Eastwood's new movie, "The Ballad of Richard Jewell,” will hit theaters December 13.
Jewell died of diabetes-related heart failure at age 44 in 2007.


Pag-IBIG Fund home loan payments up 12%
by Manila Standard BusinessBuoyed by the strong collection of home loan payments in the last nine months, Pag-IBIG Fund’s performing loans ratio climbed to an all-time high, its top executives said.
The agency collected P38.56 billion from January to September, up 12 percent or P4.17 billion year-on-year. The amount is also a record high in terms of home loan payments collected by the agency for any January-to-September period.
“Collections remain robust as we sustained our momentum from 2018, which is our best year yet. We still have another quarter to go before this year ends but we are confident that 2019 will be another banner year because we continue to grow at a double-digit pace,” said Secretary Eduardo del Rosario, who heads both the Housing and Urban Development Coordinating Council and the 12-member Pag-IBIG Fund board of trustees.
“In the third quarter alone, home loan payments grew 20 percent year-on-year to P13.98 billion. Strong collections not only reinforce Pag-IBIG Fund’s financial sustainability, but also benefits our members because the amount we collect are then plowed back to our housing portfolio so that more members can avail of affordable home loans from Pag-IBIG Fund,” he added.


Toggle navigation
TicketTaker
Link
Dropdown
Action
Another action
Something else here
Separated link
Jobs
Porta ac consectetur ac
Vestibulum at eros
Other Settings


{:img_cdn_url('__TMPL__langrui/css/slide5.css')}
{:img_cdn_url('__TMPL__langrui/js/placeholder.js')}
{:img_cdn_url('__TMPL__picbanners/logo.png')}
{$r.thumb}
direction: rtl;
object-fit: fill; //视频铺满
4 2
{:getVisits(zcurl($r['url'],$r['moveurl']))}
javascript:void(0);
http://<IP_ADDRESS>/aitewo/themes/simplebootx/style/
http://<IP_ADDRESS>/chengpu/themes/simplebootx/picbanners
Video
Provide an intergrated service of construction industry for our customers, individual, Brickies, contractors, developers, with a wide range of products that they can perform any work in anytime.
Video
Yangzhou Hiwin International Trading Co.,Ltd is a professional nonwoven machineery manufacturer located in Changshu city near Shanghai.
{$r.alt}
{:L('RNPREVIOUS')}:
{:L('RNNEXT')}:
{$r.alt}


Next: try, Previous: compose, Up: chez-a-sync reference
As explained in the general overview, each ’a-sync’ block (see (a-sync coroutines)) or ’compose-a-sync’ block (see (a-sync compose)) is a separate unit of computation which appears within itself to proceed sequentially but which also appears to execute concurrently with other ’a-sync’ or ’compose-a-sync’ blocks running on the same event loop. Each ’a-sync’ or ’compose-a-sync’ block is therefore in some sense analogous to a thread of execution.
This (a-sync meeting) library file provides a ’meeting’ type which can be used to synchronize between such "pseudo-threads" (that is, between a-sync or compose-a-sync blocks). A ’meeting’ object is, in terms of communicating sequential processes, an unbuffered (synchronous) channel. Unbuffered channels in the CSP style are a natural fit for use with coroutines running on a single native thread (but not necessarily for native threads running in parallel unless combined with work stealing). They are therefore a natural fit for synchronizing the "pseudo-threads" provided by this library.
Some of the things that can be done by using meetings can also be done using await-generator!. Note also that any one meeting object is strictly for use by "pseudo-threads" which are running on the same event loop, and so ’ipso facto’ running in the same native OS thread. To have other native OS threads communicate with an event-loop, use await-task-in-thread!, await-task-in-event-loop!, await-task-in-thread-pool!, await-generator-in-thread!, await-generator-in-event-loop! or await-generator-in-thread-pool! (see (a-sync event-loop) and (a-sync thread-pool)). Having said that, some things, such as having one "pseudo-thread" join on another "pseudo-thread", are more easily done with meeting objects.
A "pseudo-thread" enters a meeting by applying meeting-receive (where it is to receive a datum at the meeting) or meeting-send (where it is to provide the datum) to a meeting object. Once a "pseudo-thread" enters a meeting it cannot leave until another co-operating "pseudo-thread" also enters the meeting so the datum exchange can take place, or until the meeting-close procedure is applied. Once a datum exchange has taken place, a meeting object can be reused for making another exchange (provided the meeting object has not been closed).
Synchronization occurs at the moment that the exchange of the datum takes place. Once one of the "pseudo-threads" leaves the meeting upon meeting-receive or meeting-send (or both) returning, all subsequent events are unsynchronized until another datum exchange is arranged. This means that where two "pseudo-threads" share access to objects other than the datum exchanged and they might be mutated, one "pseudo-thread" is guaranteed to see a value of the unexchanged shared objects which is not earlier than the value they held at the moment of datum exchange, but it may or may not see a later value.
Here is an example of the use of a meeting object:
(set-default-event-loop!) ;; if none has yet been set (define m1 (make-meeting)) (a-sync (lambda (await resume) (let loop ([datum (meeting-receive await resume m1)]) (when (not (eq? datum 'stop-iteration)) (display datum) (newline) (loop (meeting-receive await resume m1)))))) (a-sync (lambda (await resume) (let loop ([count 0]) (if (< count 4) (begin (meeting-send await resume m1 count) (loop (+ count 1))) (meeting-close m1))))) (event-loop-run!)
And here is one possible implementation of a parallel-map procedure using a meeting object, for a program with an event loop (this uses await-task-in-thread! for simplicity, but in real life you might want to use await-task-in-thread-pool!):
(import (a-sync coroutines) (a-sync event-loop) (a-sync meeting) (a-sync compose) (chezscheme)) (set-default-event-loop!) ;; if none has yet been set (event-loop-block! #t) (define (parallel-map await resume proc lst) (if (null? lst) '() (let ([head (car lst)] [tail (cdr lst)] [m1 (make-meeting)]) (compose-a-sync ([hd (await-task-in-thread! (lambda () (proc head)))]) (meeting-send m1 hd)) (let* ([tl (parallel-map await resume proc tail)] [hd (meeting-receive await resume m1)]) (cons hd tl))))) ;; simulate a computational task which takes 1 second to complete (define (do-work i) (sleep (make-time 'time-duration 0 1)) (* i 2)) (a-sync (lambda (await resume) (let ([lst (parallel-map await resume do-work (list 1 2 3 4 5))]) (display lst)(newline) (event-loop-block! #f)))) (event-loop-run!)
See the documentation on the meeting-send and meeting-receive procedures below for an example of multiple "pseudo-threads" sending to or receiving from a single meeting object for fan in and fan out, and for an example of those procedures ’selecting’ on more than one meeting object.
The (a-sync meeting) library file provides the following procedures:
This procedure makes and returns a meeting object. Meetings are objects on which a-sync or compose-a-sync blocks running on the same event loop can synchronize by one passing a datum to another. The ’loop’ argument specifies the event loop (as constructed by make-event-loop in the (a-sync event-loop) library file) with respect to which the meeting will be held: it is an error if the meeting-send or meeting-receive procedures are passed a different event loop as an argument. The ’loop’ argument is optional - if none is passed, or #f is passed, then the default event loop will be chosen.
Strictly speaking this procedure can be called in any native OS thread, but since it carries out no synchronization of native threads the user would have to provide her own synchronization if called in other than the thread of the event loop with respect to which the meeting will be held; so it is best if this procedure is called in the thread of that event loop.
This procedure is first available in version 0.13 of this library.
This procedure indicates whether ’obj’ is a meeting object constructed by make-meeting.
This procedure is first available in version 0.13 of this library.
This closes a meeting object. It’s purpose is to wake up any "pseudo-thread" (that is, any a-sync or compose-a-sync block) waiting in meeting-send or meeting-receive by causing either procedure to return with a ’stop-iteration value.
Where that is not necessary (say, the receiver already knows how many items are to be sent), then this procedure does not need to be applied. It is not needed in order to release resources.
This procedure is first available in version 0.13 of this library.
This indicates whether applying meeting-send or meeting-receive (as the case may be) to the meeting object ’meeting’ will return immediately: in other words, this procedure will return #t if another a-sync or compose-a-sync block is already waiting on the object or the meeting object has been closed, otherwise #f.
This procedure is first available in version 0.13 of this library.
This sends a datum to a receiver which is running on the same event loop as the sender, via one or more meeting objects ’m0 m1 ...’. If no receiver is waiting for the datum, this procedure waits until a receiver calls meeting-receive on one of the meeting objects to request the datum. If a receiver is already waiting, this procedure passes on the datum and returns immediately.
The ’loop’ argument is optional. If not supplied, or #f is passed, this procedure will use the default event loop. It is an error if this procedure is given a different event loop than the one which was passed to make-meeting on constructing the ’meeting’ objects.
This procedure is intended to be called within a waitable procedure invoked by a-sync (which supplies the ’await’ and ’resume’ arguments).
With version 0.13 of this library, a sender could not invoke this procedure when another a-sync or compose-a-sync block running on the event loop concerned was already waiting to send on the same ’meeting’ object. From version 0.14, multiple senders may wait on a meeting object to permit fan in. The provided datum of each sender will be passed to a receiver (as and when a receiver becomes available) in the order in which this procedure was invoked.
Here is an example of such a fan in:
(set-default-event-loop!) ;; if none has yet been set (define m1 (make-meeting)) (a-sync (lambda (await resume) (meeting-send await resume m1 "Hello from a-sync1"))) (a-sync (lambda (await resume) (meeting-send await resume m1 "Hello from a-sync2"))) (a-sync (lambda (await resume) (let next ([count 0]) (when (< count 2) (display (meeting-receive await resume m1)) (newline) (next (+ count 1)))))) (event-loop-run!)
In addition, with version 0.13 of this library, only a single meeting object could be passed to this procedure. From version 0.14 this procedure has ’select’-like behavior: multiple meeting objects may be passed and this procedure will send to the first one which becomes available to receive the datum.
Here is an example of selecting on send (here, meeting-send will send to the first meeting which becomes available for receiving, which is m2):
(set-default-event-loop!) ;; if none has yet been set (define m1 (make-meeting)) (define m2 (make-meeting)) (a-sync (lambda (await resume) (meeting-send await resume m1 m2 "Hello"))) (a-sync (lambda (await resume) (format #t "meeting-send says: ~a~%" (meeting-receive await resume m2)))) (event-loop-run!)
Once a datum exchange has taken place, the meeting object(s) can be reused for making another exchange (provided the meeting objects have not been closed).
This procedure must be called in the native OS thread in which the event loop concerned runs. To have other native OS threads communicate with an event-loop, use await-task-in-thread!, await-task-in-event-loop!, await-task-in-thread-pool!, await-generator-in-thread!, await-generator-in-event-loop! or await-generator-in-thread-pool!.
This procedure always returns #f unless meeting-close has been applied to a meeting object, in which case ’stop-iteration is returned. Note that if multiple meeting objects are passed to this procedure and one of them is then closed, this procedure will return ’stop-iteration and any wait will be abandonned. It is usually a bad idea to close a meeting object on which this procedure is waiting where this procedure is selecting on more than one meeting object.
This procedure is first available in version 0.13 of this library.
This receives a datum from a sender running on the same event loop as the receiver, via one or more meeting objects ’m0 m1 ...’. If no sender is waiting to pass the datum, this procedure waits until a sender calls meeting-send on one of the meeting objects to provide the datum. If a sender is already waiting, this procedure returns immediately with the datum supplied.
The ’loop’ argument is optional. If not supplied, or #f is passed, this procedure will use the default event loop. It is an error if this procedure is given a different event loop than the one which was passed to make-meeting on constructing the ’meeting’ objects.
This procedure is intended to be called within a waitable procedure invoked by a-sync (which supplies the ’await’ and ’resume’ arguments).
With version 0.13 of this library, a receiver could not invoke this procedure when another a-sync or compose-a-sync block running on the event loop concerned was already waiting to receive from the same ’meeting’ object. From version 0.14, multiple receivers may wait on a meeting object to permit fan out. The waiting receivers will be released (as and when a sender provides a datum) in the order in which this procedure was invoked.
Here is an example of such a fan out:
(set-default-event-loop!) ;; if none has yet been set (define m1 (make-meeting)) (a-sync (lambda (await resume) (display (meeting-receive await resume m1)) (newline))) (a-sync (lambda (await resume) (display (meeting-receive await resume m1)) (newline))) (a-sync (lambda (await resume) (let next ([count 0]) (when (< count 2) (meeting-send await resume m1 count) (next (+ count 1)))))) (event-loop-run!)
In addition, with version 0.13 of this library, only a single meeting object could be passed to this procedure. From version 0.14 this procedure has ’select’-like behavior: multiple meeting objects may be passed and this procedure will receive from the first one which sends a datum.
Here is an example of selecting on receive:
(set-default-event-loop!) ;; if none has yet been set (define m1 (make-meeting)) (define m2 (make-meeting)) (a-sync (lambda (await resume) (meeting-send await resume m1 "m1"))) (a-sync (lambda (await resume) (meeting-send await resume m2 "m2"))) (a-sync (lambda (await resume) (let next ([count 0]) (when (< count 2) (format #t "Message received from ~a~%" (meeting-receive await resume m1 m2)) (next (+ count 1)))))) (event-loop-run!)
Once a datum exchange has taken place, the meeting object(s) can be reused for making another exchange (provided the meeting objects have not been closed).
This procedure must be called in the native OS thread in which the event loop concerned runs. To have other native OS threads communicate with an event-loop, use await-task-in-thread!, await-task-in-event-loop!, await-task-in-thread-pool!, await-generator-in-thread!, await-generator-in-event-loop! or await-generator-in-thread-pool!.
This procedure always returns the datum value supplied by meeting-send unless meeting-close has been applied to a meeting object, in which case ’stop-iteration is returned. Note that if multiple meeting objects are passed to this procedure and one of them is then closed, this procedure will return ’stop-iteration and any wait will be abandonned. It is usually a bad idea to close a meeting object on which this procedure is waiting where this procedure is selecting on more than one meeting object.
This procedure is first available in version 0.13 of this library.
Next: try, Previous: compose, Up: chez-a-sync reference


Constructor
new Canvas(elementopt, widthopt, heightopt, resizeopt)
In the instance that width & height aren't specifed, one assumes a fullscreen canvas which resets styling on the body & html elements.
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
element |
string |
<optional> |
'canvas' | string representing element: such as 'canvas' or '#screen'. It is optional, if nothing is set one of two things occurs, the instatiation will try to find a canvas element in the HTML, if it doesn't find one it will create one automatically. So for the most part don't bother setting anything! Let the class do the work. |
width |
* |
<optional> |
CSS.vw(100) | sets the viewed width of the canvas, defaults to full width of window. Takes a CSS value type only. |
height |
* |
<optional> |
CSS.vh(100) | sets the viewed height of the canvas, defaults to full height of window. Takes a CSS value type only. |
resize |
boolean |
<optional> |
true | canvas sizes will resize if window is resized, draw will disappear atm though if no rqf is running |
Members
_passedEl
canvas
canvas
centerX
returns pixels to center of width
centerY
returns pixels to center of height
dpr
dpr
height
returns height of canvas (in pixels), based on device pixel ratio and wrapper element
width
returns width of canvas (in pixels), based on device pixel ratio and wrapper element
Methods
(private) _appendCanvasEl()
appends canvas to div wrapper and div wrapper to whatever parent element is either found, or to body if canvas el is getting created. Returns wrapper.
Returns:
wrapper element
(private) _canvasCSS()
sets canvas to be 100% width and height so dpr works
Returns:
this
(private) _fullScreenStyles()
removes padding & margin on html and body for fullscreen canvas
Returns:
this
(private) _getWrapperClass()
creates a class for the wrapping div element, based on divs already in dom. canvas-1, canvas-2 etc...
Returns:
class as string
(private) _getWrapperDimensions()
sets the pixel width and height of the wrapper element
Returns:
this
(private) _makeCanvasEl()
Set's the canvas element. If it's specified, if it's found in the DOM or creates one
Returns:
canvas element
(private) _setSize()
sets the canvas elements height & width
Returns:
this
(private) _setup()
sets CSS styles of dom elements, sets initial size of canvas, sets up initial canvas styling like linecap & linejoin
Returns:
this
(private) _styleWrapper()
adds CSS width & height styles to wrapper based on instatiation of class. If no arguments are passed in, set to full width & height of window
Returns:
this
clear('black' | CSS colour valopt)
Clears the canvas & fills in a 'background' rectangle with the colour specified. Defaults to black.
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
'black' | CSS colour val |
string |
<optional> |
Returns:
this
createFile(png/jpg/webpopt)
Creates a link and adds to the DOM which allows image download of whatever is on canvas
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
png/jpg/webp |
string |
<optional> |
image type |
0.92 |
number |
<optional> |
quality |
Returns:
this
dataURL(png/jpg/webpopt)
Returns a data url of whatever is on the canvas
Parameters:
| Name | Type | Attributes | Description |
|---|---|---|---|
png/jpg/webp |
string |
<optional> |
image type |
0.92 |
number |
<optional> |
quality |
Returns:
data url
resize()
resets height & width of the canvas if window is resized
Returns:
this


Start building Application now
1.DOM Exercise
2.JQuery Exercise
3.AJAX Exercise
4.Production Page Using Bootstrap And JQuery
5.Production Page Using Bootstrap And Handlebar
6.Production Page Using Bootstrap And AngularJs


TS Scraper
File Index
{% for file in files %}
{{ file.mod_path }}
{% endfor %}
This file was auto-generated by TS Scraper.
TS Scraper is written in Python 2.7 by Robert MacGregor.


Hi guys
Got a weird problem..
My emonTX has suddenly stopped working.. It has been working flawlessly for months sitting next to the fuse box recording all the import / export from our Solar setup.. Suddenly last night the GLCD reported 0 for both useage and generation.. Weird..
Iv had a play around this morning and it seems to be working.. As the voltage from the grid is reporting correctly.
But the CT 1 / 2 are dead.. CT3 (normaly unused) works with both the solar clamp and the import / export clamp so i can rule that out.. Iv looked at the board and cant see any falts on it.
any ideas.. Its reporting to vis.openenergymonitor.org fine just no import / export / generation..
we have not had a power cut and my other energy monitor (alertme.com) is working fine..
No one as been in the fuse box and nothing has moved..
HELP....
Thanks
Rob.
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Pics..
Please click for bigger versions..
Should add when you plug the clamp into the board it does see it as it sends the data to the GLCD but it looks like noise as it shows 8kW+ then drops down to 1kW then 500W (example).
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
I've had a little problem with corrosion on the barrel plugs - unscrew them to see if they look okay.
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Thanks for the idea Stuart..
but there is no corrosion inside the barrel plugs they look good as new.. Also this does not explain why both of them work in CT3 plug.
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
That is most likely the digital filter on the input settling. If that happens when you power up the emonTx, it doesn't help. If it happens when you plug in the c.t., it might indicate the analogue input is at least reading something.
When you say CT 3 "works", I assume you mean it reads a sensible value, thus ruling out a fault in both c.t's and their cables and plugs?
Have you reloaded the sketch? (Just in case it's 'lost its marbles'?) I presume you actually loaded another sketch to test C.T.3?
What voltage do you read on the burden resistor? - it should be 1.65 V or thereabouts.
Write a 'one-line' sketch to read the analogue inputs and print to serial. If you read 512 or thereabouts, the analogue input is probably OK. For a more complete test, wire a potentiometer (any value 1 k < R < 100 k) across the battery connection points (3.3 V) and connect the wiper to the tip connection of the c.t's socket. If varying the pot. from one end to the other gives you readings from 0 to 1023 (or thereabouts) the analogue input is OK. Else you have a dry joint or your chip is dead.
A dry joint is a possibility (especially after a year or two - you don't say how many months). You need to touch all the soldered joints with a hot iron and a tiny amount of flux (or new solder if you are using the flux-cored variety - who doesn't?).
What is the temperature in the fuse box?
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Robert Thanks for the reply..
The unit has been in operation since end of March 2012
Im using the standard emonTx_CT123_Voltage
I Admit its a bit older than the current one on github but iv never had to update it in the months iv had it installed..
This has the 3rd ct enabled (I forgot to disable it..) and when pluging in the import / export CT or Solar CT i get the correct readings from this plug reported to Vis.openenergymonitor.org and to the serial port..
Iv current not tried to reload the sketch.. WIll give that a go tonight and see how that works..

Where is the burden resistor? Iv read lots about this but to be honest no idea where it is... Im using the standard kit off of the website.. Noting fancy.. The only hacks are to the GLCD.
Will also try the wiper with a 1k pot etc..
Will try the dry joint option but it seems weird that both CT1 and CT2 dropped at the same time on the same day..looking at the graphs all was fine and then suddenly 0 all the way.
The temp of the fuse box is a few degress lower than our house.. Its in the hallway but its got a wooden box round it.. Looking at the alertme graphs never above 25c and never below 15c
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
You need to look at the circuit diagram and layout of the pcb. The burden resistor is the 15 Ohm or 18 Ohm right across the c.t. - it's R6, R3 & R16, there are 3 groups of 3 resistors, 2 x 470 k and the burden, close by the c.t. sockets.
I agree, most unlikely that 2 dry joints have happened together, so probably not worth resoldering at this stage. How do you get your mains electricity, is it on poles and overhead lines or underground? Were there any thunderstorms about at the time? If the answer is yes to either or both, and the pot. test is negative, I would tend to favour the theory that the c.t's have seen a spike of current that has blown the ADC inputs of the processor. Time for a new processor.
And if it is the processor that's blown, I don't really know the answer to the next question, "What can I do to stop it happening again?" You could consider something like this: http://uk.farnell.com/fairchild-semiconductor/p6ke11ca/tvs-diode-600w-11... in parallel with the burden resistor, though it may well be cheaper to just replace the processor.
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Under ground cables. 1930's house average surban area. (big green shed, (transformer) 35+ houses down, another 15 up the street also before main road.
We have had thunder in the area but not at 1603 (according to vis.openenergymonitor.com) My computer was on also (working from home currently have an ear infection) and did not notice anything happning.
The high readings only happen when the emonTX is on and you unplug and plug a CT back in..
Will try looking at it all again in a bit.. sorry side tracked by work.. Gerrr
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Well after reloading the sketch
all the problem was, was the 3.5mm sockets.. bendin the contact in them back in slightly works.. Weird how both went at the same time.. Maybe there is a better connector out there?
Re: emonTX suddenly not working CT1 + CT2 but CT3 and voltage are ok
Hi Robert,
Sorry to hear of the problem. We are aware that the 3.5mm sockets currently used on the emontx are not the best. Iv been looking at alternatives. Iv recently just finished a prototype design for an emontx arduino shield board. On this board iv gone for using the same 3.5mm jack as on the raspberry pi. Its a bit bigger but has a nice plugging action and doesn't cost too much more. I'll leave look into fitting this to future emontx versions but it would neccesitate making the PCB bigger. The emontx smt will also use a better jack plug
Sorry about this, it sounds like it was a tricky issue to track down. More often than not the sockets work fine.


I like to position myself as a Web engineer/architect with substantial experience that revolves around anything related to privacy and decentralization -- ranging from identity and authentication, to access control and data ownership.
During my career I have acquired extensive technical experience working together at MIT with Sir Tim Berners-Lee, where I lead the Solid project. During this time I have also been a data and privacy expert within GovLab, an interdisciplinary think tank that aims to strengthen the ability of institutions – including but not limited to governments – and people to work more openly, collaboratively, effectively and legitimately to make better decisions and solve public problems.
Last but not least, I am a former W3C team member. There I participated in Web standards work together with experts from numerous companies such as IBM, Apple, Fujitsu, and BBC, as well as from governments. You will find more details in the Activity section below.
Below you can find a list of things I can help you with. Keep in mind that I am a No bullshit™ person that likes to get things done properly and I take pride in what I do.
Web Architecture Web Services GDPR Privacy Open Data Linked Data Information Security Applied Cryptography Blockchain Web Standards Open Governance
Ph.D. in Computer Science • Oct 2013
My Ph.D involved research into decentralized identity, authentication, and access control. My manuscript is publicly available at archives-ouvertes.fr.
M.Sc. in Computer and Communication Networks • June 2010
This Masters programme covered subjects on general communication networks, computer security and applied cryptography.
B.Sc. in Electrical Engineering and Computers • Sept 2006
My studies covered a variety of topics ranging from theoretical electrical engineering subjects to networking and computer science.
https://akasha.org • 2018 - present
Helping the team with topics related to privacy and decentralization, in a full time consulting position.
https://stratagema.co • 2018 - present
CEO and co-founder. Consulting services in topics related to privacy and decentralization.
https://qwant.com • 2017 - 2018
Technical Lead. Managing projects related to privacy and data ownership that are GDPR compliant by design.
https://www.databook.one/ • 2018 - present
Technical Advisor. Helping to define overall strategy and architecture for a product that uses blockchain technology to give you the ability to control and monetize your data.
http://catch.co/ • 2018 - present
Technical Advisor. Helped define the overall architecture and the technical stack, as well as recruiting talent during the initial stage of the company.
https://solid.mit.edu • 2014 - 2017
I lead a team of developers, researchers and students for Solid, an exciting project led by Sir Tim Berners-Lee, inventor of the World Wide Web. I also oversaw the collaboration with international partners like MasterCard and the Qatar Computing Research Institute, as well as participated in the Solid advisory board.
http://www.thegovlab.org • 2016 - 2017
Data & privacy expert. I have represented MIT by participating in different events and meetings where I provided information and advice on privacy related topics to projects that required it. The GovLab network includes NYU, MIT, Harvard Business School, Arizona State University Center for Policy Informatics, George Washington University and Columbia Business School.
https://www.w3.org • 2014 - 2017
As a staff member, I participated in the Linked Data Platform Working Group which provides an architecture for read-write Linked Data on the Web. This standard, which is used not just in Solid but by other industry technologies, progressed at a quick pace and involved cross-industry collaboration, testing and multiple implementations. I am also the author of the Linked Data Patch Format, which defines a language for expressing a sequence of operations for patching Linked Data resources.
Speaker • 2018
Build decentralized services that offer privacy and real data ownership: case study and architecture
Panel member • 2018
Starting the Internet All Over Again panel at South by Southwest© 2018 [audio / video]
Panel member • 2017
Disruptive approaches in transparency: Implementing Transparency panel at Data Transparency Lab 2017
Watch recording on Youtube
W3C Recommendation 26 February 2015
W3C Spec
W3C Working Group Note 28 July 2015
W3C Spec
W3C Editor's Draft 05 March 2014
W3C Spec
W3C Editor's Draft 05 March 2014
W3C Spec
Chairs: Ruben Verborgh, Andrei Sambra, Tobias Kuhn• 2017
The 16th International Semantic Web Conference (ISWC 2017)
Workshop homepage
Chairs: Oshani Seneviratne, Andrei Sambra, Lalana Kagal• 2016
25th International Conference Companion on World Wide Web (WWW 2016)
Workshop homepage
Andrei Sambra and Lalana Kagal• 2017
Proceedings of the 2017 ACM on Web Science Conference
BibTeX file
Andrei Sambra, Amy Guy, Sarven Capadisli, Nicola Greco• 2016
25th International Conference Companion on World Wide Web (WWW 2016)
BibTeX file
Essam Mansour, Andrei Vlad Sambra, Sandro Hawke, et al.• 2016
25th International Conference Companion on World Wide Web (WWW 2016)
BibTeX file
Andrei Sambra, Sandro Hawke, Timothy Berners-Lee, et al.• 2014
International Semantic Web Conference (ISWC 2014)
BibTeX file
Hitoshi Uchida, Ralph Swick, Andrei Sambra• 2014
International Semantic Web Conference (ISWC 2014)
BibTeX file
Sebastian Tramp, Henry Story, Andrei Sambra, et al.• 2012
International Semantic Web Conference (ISWC 2012)
BibTeX file
Andrei Vlad Sambra, Maryline Laurent• 2012
IEEE Eighth World Congress on Services (SERVICES)
BibTeX file
Tony Cheneau, Andrei Vlad Sambra, Maryline Laurent• 2011
5th International Conference on Network and System Security (NSS)
BibTeX file
Andrei Vlad Sambra, Maryline Laurent• 2011
W3C's Federated Social Web Workshop (FSW2011)
BibTeX file
Andrei Vlad Sambra, Henry Story, Sebastian Tramp• 2011
W3C's Federated Social Web Workshop (FSW2011)
BibTeX file
Andrei Vlad Sambra, Maryline Laurent• 2011
1st International Conference on Secure networking and Applications (ICSNA)
BibTeX file
Andrei Vlad Sambra
Qwant Research
7 rue Spontini
Paris 75016, France
a.sambra [at] qwant.com


Folders
<Go Back>
File
File
File
File
channel.js
directMes...ead.js
usersChannels.js
usersSettings.js
channelSettings.js
message.js
usersComm...ies.js
usersThreads.js
community.js
notification.js
usersDire...ads.js
web-push-...ion.js
community...ngs.js
thread.js
Folders: 1
Files: 14
Size of all files: 13865 KB


{% include head.html %}
{% include sidebar.html %}
Announcements!
(
See All
)
{% for announcement in site.data.announcements %}
{{announcement}}
{% endfor %}
{{ content }}
{% include analytics.html %}


HUSH is a truly innovative coffee experience dedicated to serving gourmet coffee in a high-class lounge environment. We're a full-service coffee bar specializing in creating unique coffee cocktails and putting our spin on classics like iced teas and coffees. Using only housemade ingredients, each drink is individually hand-crafted by the best baristas in the city and served to you by our world-class cocktail staff. We also boast 20 High-Definition TVs to show all the major sports games and host a DJ that transforms HUSH from a relaxing lounge during the day to an energetic club by night. Stop in for a drink, leave with an experience.


"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidIpV4Address = exports.isValidTldMatch = exports.isValidSchemeUrl = exports.isKnownTld = exports.isUrlSuffixStartChar = exports.isPathChar = exports.isDomainLabelChar = exports.isDomainLabelStartChar = exports.isSchemeChar = exports.isSchemeStartChar = exports.tldUrlHostRe = exports.schemeUrlRe = exports.invalidSchemeRe = exports.urlSuffixedCharsNotAllowedAtEndRe = exports.httpSchemePrefixRe = exports.httpSchemeRe = exports.urlSuffixNotAllowedAsLastCharRe = exports.urlSuffixAllowedSpecialCharsRe = exports.urlSuffixStartCharsRe = exports.domainNameCharRegex = void 0; var regex_lib_1 = require("../regex-lib"); var tld_regex_1 = require("./tld-regex"); /** * A regular expression that is simply the character class of the characters * that may be used in a domain name, minus the '-' or '.' */ exports.domainNameCharRegex = regex_lib_1.alphaNumericAndMarksRe; /** * The set of characters that will start a URL suffix (i.e. the path, query, and * hash part of the URL) */ exports.urlSuffixStartCharsRe = /[\/?#]/; /** * The set of characters that are allowed in the URL suffix (i.e. the path, * query, and hash part of the URL) which may also form the ending character of * the URL. * * The {@link #urlSuffixNotAllowedAsLastCharRe} are additional allowed URL * suffix characters, but (generally) should not be the last character of a URL. */ exports.urlSuffixAllowedSpecialCharsRe = /[-+&@#/%=~_()|'$*\[\]{}\u2713]/; /** * URL suffix characters (i.e. path, query, and has part of the URL) that are * not allowed as the *last character* in the URL suffix as they would normally * form the end of a sentence. * * The {@link #urlSuffixAllowedSpecialCharsRe} contains additional allowed URL * suffix characters which are allowed as the last character. */ exports.urlSuffixNotAllowedAsLastCharRe = /[?!:,.;^]/; /** * Regular expression to match an http:// or https:// scheme. */ exports.httpSchemeRe = /https?:\/\//i; /** * Regular expression to match an http:// or https:// scheme as the prefix of * a string. */ exports.httpSchemePrefixRe = new RegExp('^' + exports.httpSchemeRe.source, 'i'); exports.urlSuffixedCharsNotAllowedAtEndRe = new RegExp(exports.urlSuffixNotAllowedAsLastCharRe.source + '$'); /** * A regular expression used to determine the schemes we should not autolink */ exports.invalidSchemeRe = /^(javascript|vbscript):/i; // A regular expression used to determine if the URL is a scheme match (such as // 'http://google.com', and as opposed to a "TLD match"). This regular // expression is used to parse out the host along with if the URL has an // authority component (i.e. '//') // // Capturing groups: // 1. '//' if the URL has an authority component, empty string otherwise // 2. The host (if one exists). Ex: 'google.com' // // See https://www.rfc-editor.org/rfc/rfc3986#appendix-A for terminology exports.schemeUrlRe = /^[A-Za-z][-.+A-Za-z0-9]*:(\/\/)?([^:/]*)/; // A regular expression used to determine if the URL is a TLD match (such as // 'google.com', and as opposed to a "scheme match"). This regular // expression is used to help parse out the TLD (top-level domain) of the host. // // See https://www.rfc-editor.org/rfc/rfc3986#appendix-A for terminology exports.tldUrlHostRe = /^(?:\/\/)?([^/#?:]+)/; // optionally prefixed with protocol-relative '//' chars /** * Determines if the given character may start a scheme (ex: 'http'). */ function isSchemeStartChar(char) { return regex_lib_1.letterRe.test(char); } exports.isSchemeStartChar = isSchemeStartChar; /** * Determines if the given character is a valid character in a scheme (such as * 'http' or 'ssh+git'), but only after the start char (which is handled by * {@link isSchemeStartChar}. */ function isSchemeChar(char) { return (regex_lib_1.letterRe.test(char) || regex_lib_1.digitRe.test(char) || char === '+' || char === '-' || char === '.'); } exports.isSchemeChar = isSchemeChar; /** * Determines if the character can begin a domain label, which must be an * alphanumeric character and not an underscore or dash. * * A domain label is a segment of a hostname such as subdomain.google.com. */ function isDomainLabelStartChar(char) { return regex_lib_1.alphaNumericAndMarksRe.test(char); } exports.isDomainLabelStartChar = isDomainLabelStartChar; /** * Determines if the character is part of a domain label (but not a domain label * start character). * * A domain label is a segment of a hostname such as subdomain.google.com. */ function isDomainLabelChar(char) { return char === '_' || isDomainLabelStartChar(char); } exports.isDomainLabelChar = isDomainLabelChar; /** * Determines if the character is a path character ("pchar") as defined by * https://tools.ietf.org/html/rfc3986#appendix-A * * pchar = unreserved / pct-encoded / sub-delims / ":" / "@" * * unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" * pct-encoded = "%" HEXDIG HEXDIG * sub-delims = "!" / "$" / "&" / "'" / "(" / ")" * / "*" / "+" / "," / ";" / "=" * * Note that this implementation doesn't follow the spec exactly, but rather * follows URL path characters found out in the wild (spec might be out of date?) */ function isPathChar(char) { return (regex_lib_1.alphaNumericAndMarksRe.test(char) || exports.urlSuffixAllowedSpecialCharsRe.test(char) || exports.urlSuffixNotAllowedAsLastCharRe.test(char)); } exports.isPathChar = isPathChar; /** * Determines if the character given may begin the "URL Suffix" section of a * URI (i.e. the path, query, or hash section). These are the '/', '?' and '#' * characters. * * See https://tools.ietf.org/html/rfc3986#appendix-A */ function isUrlSuffixStartChar(char) { return exports.urlSuffixStartCharsRe.test(char); } exports.isUrlSuffixStartChar = isUrlSuffixStartChar; /** * Determines if the TLD read in the host is a known TLD (Top-Level Domain). * * Example: 'com' would be a known TLD (for a host of 'google.com'), but * 'local' would not (for a domain name of 'my-computer.local'). */ function isKnownTld(tld) { return tld_regex_1.tldRegex.test(tld.toLowerCase()); // make sure the tld is lowercase for the regex } exports.isKnownTld = isKnownTld; /** * Determines if the given `url` is a valid scheme-prefixed URL. */ function isValidSchemeUrl(url) { // If the scheme is 'javascript:' or 'vbscript:', these link // types can be dangerous. Don't link them. if (exports.invalidSchemeRe.test(url)) { return false; } var schemeMatch = url.match(exports.schemeUrlRe); if (!schemeMatch) { return false; } var isAuthorityMatch = !!schemeMatch[1]; var host = schemeMatch[2]; if (isAuthorityMatch) { // Any match that has an authority ('//' chars) after the scheme is // valid, such as 'http://anything' return true; } // If there's no authority ('//' chars), check that we have a hostname // that looks valid. // // The host must contain at least one '.' char and have a domain label // with at least one letter to be considered valid. // // Accept: // - git:domain.com (scheme followed by a host // Do not accept: // - git:something ('something' doesn't look like a host) // - version:1.0 ('1.0' doesn't look like a host) if (host.indexOf('.') === -1 || !regex_lib_1.letterRe.test(host)) { return false; } return true; } exports.isValidSchemeUrl = isValidSchemeUrl; /** * Determines if the given `url` is a match with a valid TLD. */ function isValidTldMatch(url) { // TLD URL such as 'google.com', we need to confirm that we have a valid // top-level domain var tldUrlHostMatch = url.match(exports.tldUrlHostRe); if (!tldUrlHostMatch) { // At this point, if the URL didn't match our TLD re, it must be invalid // (highly unlikely to happen, but just in case) return false; } var host = tldUrlHostMatch[0]; var hostLabels = host.split('.'); if (hostLabels.length < 2) { // 0 or 1 host label, there's no TLD. Ex: 'localhost' return false; } var tld = hostLabels[hostLabels.length - 1]; if (!isKnownTld(tld)) { return false; } // TODO: Implement these conditions for TLD matcher: // ( // this.longestDomainLabelLength <= 63 && // this.domainNameLength <= 255 // ); return true; } exports.isValidTldMatch = isValidTldMatch; // Regular expression to confirm a valid IPv4 address (ex: '<IP_ADDRESS>') var ipV4Re = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; // Regular expression used to split the IPv4 address itself from any port/path/query/hash var ipV4PartRe = /[:/?#]/; /** * Determines if the given URL is a valid IPv4-prefixed URL. */ function isValidIpV4Address(url) { // Grab just the IP address var ipV4Part = url.split(ipV4PartRe, 1)[0]; // only 1 result needed return ipV4Re.test(ipV4Part); } exports.isValidIpV4Address = isValidIpV4Address; //# sourceMappingURL=uri-utils.js.map


It is a long established fact that a reader will be distracted by the readable content of a page.
There are many variations of passages of Lorem Ipsum available, but the majority have suffered.
联系我们
地址：加悦大厦 龙口大厦电话：(123) 456-7890
It is a long established fact that a reader will be distracted by the readable content of a page.
There are many variations of passages of Lorem Ipsum available, but the majority have suffered.


gokrazy will arrange for each included package to be started at boot. For example, given the following packer command:
gokr-packer \
-update=yes \
github.com/gokrazy/hello \
github.com/gokrazy/breakglass \
github.com/gokrazy/serial-busybox
…gokrazy will start the hello
, breakglass
and serial-busybox
programs.
This article shows how you can configure different aspects of individual packages.
Each bit of configuration lives in its own directory: flags
, env
or
buildflags
.
Within these directories, create a directory named after the package import
path, then place your configuration in a text file: flags.txt
, env.txt
or
buildflags.txt
.
The breakglass package provides emergency/debugging access to a gokrazy installation.
To enable SSH port forwardings to localhost, set the -forward
flag to loopback
:
mkdir -p flags/github.com/gokrazy/breakglass
echo '-forward=loopback' > flags/github.com/gokrazy/breakglass/flags.txt
Environment variables such
as the Go runtime’s GODEBUG
variable can be
set as follows:
mkdir -p env/github.com/gokrazy/breakglass
echo 'GODEBUG=gctrace=1' > env/github.com/gokrazy/breakglass/env.txt
If you want to influence the build of the package at image-creation time (as opposed to runtime), you can specify flags to be passed to the Go build invocation.
This example overwrites the value of the world
variable
using the -X
linker flag, which is a common
technique to embed version information:
mkdir -p buildflags/github.com/gokrazy/hello
echo '-ldflags=-X main.world=Welt' > buildflags/github.com/gokrazy/hello/buildflags.txt


--- layout: post esbma_id: 1192 title: Law #10: The Law of Division date: 2004-06-14 14:52:44 keywords: law ---
(This entry is part of a series I am writing on The 22 Immutable Laws of Marketing.)
The Law of Division observes that over time, a category tends to divide and become two or more categories.
A new market category starts out very broad. For example, in the beginning of the automobile industry, the only category was "cars". Over time, categories break up into smaller and more specialized subcategories. Today, there are quite a few brands of car, each catering to a specialized niche.
This effect is an obvious and natural consequence of other laws. Each company will try to setup a new category in which it can be #1. Not all of these categories will end up becoming real, but some will.
This law is a good place to remind ourselves that Ries and Trout primarily consult for companies like Pepsi, McDonalds, and General Motors, not for small ISVs. There is a bit of an impedance mismatch between their world and ours. Those companies do business in mature industries selling mass market consumer products. Those products are easily interchangeable. I can switch from Pepsi to Coke with no major costs associated with the transition and deployment. Categories split into subcategories over very slight differences in consumer preference. Brand building is absolutely critical. General Motors understands that some car buyers want to feel like they are buying something sporty, whereas others want to feel like they are buying something conservative. So, they sell basically the same car under the Pontiac and the Buick name, managing each of these brands very carefully. The underlying engineering is identical, but the message of these two brands is very different.
Software isn't usually like that. When people are choosing between Dundas Chart and Chart FX, brand can be an issue, but it is certainly not the only issue. Those two products are not identical under the hood. They are not completely interchangeable. There are significant differences in features.
So the Law of Division still matters, but it happens a lot less. In software, categories don't divide quite as easily as in commodity markets.
But even though categories in software don't usually divide over matters of pure message, they do still divide, especially over matters of greater substance. My own market is a decent example. In the beginning, there was simply "source control". Now, we've got several subcategories which came as the market divided over lines such as platform, process and integration.


Psalms 123:4
Our soul is exceedingly filled with the scorning of those that are at ease, and with the contempt of the proud.


Cucumber
How we use it in the scolaris projects
- Quick reminder
- How it's set up
- cucumber-jvm
- JUnit runner
- Maven config
- Example
What's it for?
- BDD
- Human readable
- (Programming & Spoken) language agnostic
Syntax
- Language called Gherkin
- Stored in
.feature
files
Business Readable, Domain Specific Language that lets you describe software’s
behaviour without detailing how that behaviour is implemented.
Syntax
Feature: Some terse yet descriptive text of what is desired
In order to realize a named business value
As an explicit system actor
I want to gain some beneficial outcome which furthers the goal
# This is a comment
Scenario: Some determinable business situation
Given some precondition
And some other precondition
When some action by the actor
And some other action
And yet another action
Then some testable outcome is achieved
And something else we can check happens too
Scenario: A different situation
...
How it's set up
- cucumber-jvm - Allows us to implement step definitions in java (or other JVM languages)
- JUnit runner - Lets us run cucumbers as you would any other JUnit test
- Maven setup - config in sipp2-parent, included in project frontends.
Lets write one!
Feature: Personalisation. All the features of the site that require you to log in using your personal email address.
Scenario: Log in
Given my username is<EMAIL_ADDRESS>And my password is cucumber
When I sign in
Then I should see that I am logged in as Cucumber
And I should be able to log out again.
Actually… here's one I made earler.
The Future
- TestNG runner
- Continous deployment
- Spread the cucumbers (specs, QA, monitoring)
Here is a kitten
The End


Memoize functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input
$ npm install --save mem
```js const mem = require(‘mem’);
let i = 0; const counter = () => ++i; const memoized = mem(counter);
memoized(‘foo’); //=> 1
// cached as it’s the same arguments memoized(‘foo’); //=> 1
// not cached anymore as the arguments changed memoized(‘bar’); //=> 2
memoized(‘bar’); //=> 2 ```
```js const mem = require(‘mem’);
let i = 0; const counter = () => Promise.resolve(++i); const memoized = mem(counter);
memoized().then(a => { console.log(a); //=> 1
memoized().then(b => {
// the return value didn't increase as it's cached
console.log(b);
//=> 1
}); }); ```
```js const mem = require(‘mem’); const got = require(‘got’); const memGot = mem(got, {maxAge: 1000});
memGot(‘sindresorhus.com’).then(() => { // this call is cached memGot(‘sindresorhus.com’).then(() => { setTimeout(() => { // this call is not cached as the cache has expired memGot(‘sindresorhus.com’).then(() => {}); }, 2000); }); }); ```
Type: Function
Function to be memoized.
Type: number
Default: Infinity
Milliseconds until the cache expires.
Type: Function
Determines the cache key for storing the result based on the function arguments. By default, if there’s only one argument and it’s a primitive, it’s used directly as a key, otherwise it’s all the function arguments JSON stringified as an array.
You could for example change it to only cache on the first argument x => JSON.stringify(x)
.
Type: Object
Default: new Map()
Use a different cache storage. Must implement the following methods: .has(key)
, .get(key)
, .set(key, value)
, and optionally .clear()
. You could for example use a WeakMap
instead.
Clear all cached data of a memoized function.
Type: Function
Memoized function.
If you want to know how many times your cache had a hit or a miss, you can make use of stats-map as a replacement for the default cache.
```js const mem = require(‘mem’); const StatsMap = require(‘stats-map’); const got = require(‘got’);
const cache = new StatsMap(); const memGot = mem(got, {cache});
memGot(‘sindresorhus.com’) .then(() => memGot(‘sindresorhus.com’)) .then(() => memGot(‘sindresorhus.com’));
console.log(cache.stats); //=> {hits: 2, misses: 1} ```
MIT © Sindre Sorhus


- Guide »
- Getting started
Getting started¶
How to start quickly ? Just follow the following steps:
Programming Guide¶
If you you want to know more about how to program through qpython, just follow these steps:
- QPython’s main features
- Use the best way for developing
- QPython built-in Libraries
- Python 3rd Libraries
- Androidhelper APIs
- AndroidFacade
- ApplicationManagerFacade
- CameraFacade
- CommonIntentsFacade
- ContactsFacade
- EventFacade
- LocationFacade
- PhoneFacade
- MediaRecorderFacade
- SensorManagerFacade
- SettingsFacade
- SmsFacade
- SpeechRecognitionFacade
- ToneGeneratorFacade
- WakeLockFacade
- WifiFacade
- BatteryManagerFacade
- ActivityResultFacade
- MediaPlayerFacade
- PreferencesFacade
- QPyInterfaceFacade
- TextToSpeechFacade
- EyesFreeFacade
- BluetoothFacade
- SignalStrengthFacade
- WebCamFacade
- UiFacade
- USB Host Serial Facade
- QPython Open API
- QPython Online Service
QPython project is not only a powerful Python engine for android, but is a active technology community also.
Developers’ Guide¶
QPython developers’ goal is pushing out a great Python for android.
Contributors’ Guide¶
Welcome to join QPython contributors team, you are not just a user, but a creator of QPython.