[(’A’, ’C’), (’B’, ’D’), (’C’, ’E’), (’D’, ’A’), (’E’, ’B’)] .Although it’s possible to choose any letter as the ciphertext for any other letter, this tutorial deals mainly with the type of cipher where we encipher each letter by shifting it the same number of spots around a circle, for the whole English alphabet.
Main> rotate 3 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "DEFGHIJKLMNOPQRSTUVWXYZABC"Open lab4.hs and complete the function rotate :: Int -> [Char] -> [Char]. When given a number n greater than 0 and smaller than the length of the input list, your function should rotate the list by n items. Your function should return an error if the number n is negative or too large.
makeKey :: Int -> [(Char, Char)]that returns the cipher key with the given offset. See above for the description of how the cipher key is represented as a list of pairs. Example:
Main> makeKey 5 [(’A’,’F’),(’B’,’G’),(’C’,’H’),(’D’,’I’),(’E’,’J’),(’F’,’K’), (’G’,’L’),(’H’,’M’),(’I’,’N’),(’J’,’O’),(’K’,’P’),(’L’,’Q’), (’M’,’R’),(’N’,’S’),(’O’,’T’),(’P’,’U’),(’Q’,’V’),(’R’,’W’), (’S’,’X’),(’T’,’Y’),(’U’,’Z’),(’V’,’A’),(’W’,’B’),(’X’,’C’), (’Y’,’D’),(’Z’,’E’)]The cipher key should show how to encrypt all of the uppercase English letters, and there should be no duplicates: each letter should appear just once amongst the pairs’ first compo- nents (and just once amongst the second components).
lookUp :: Char -> [(Char, Char)] -> Charthat finds a pair by its first component and returns that pair’s second component. When you try to look up a character that does not occur in the cipher key, your function should leave it unchanged. Examples:
Main> lookUp ’B’ [(’A’, ’F’), (’B’, ’G’), (’C’, ’H’)] ’G’ Main> lookUp ’9’ [(’A’, ’X’), (’B’, ’Y’), (’C’, ’Z’)] ’9’
encipher :: Int -> Char -> Charthat encrypts the given single character using the key with the given offset. For example:
Main> encipher 5 ’C’ ’H’ Main> encipher 7 ’Q’ ’X’
normalize :: String -> Stringthat converts a string to uppercase, removing all characters other than letters and digits (remove spaces too). Example:
Main> normalize "July 4th!" "JULY4TH"
encipherStr :: Int -> String -> Stringthat normalizes a string and encrypts it, using your functions normalize and encipher. Example:
Main> encipherStr 5 "July 4th!" "OZQD4YM"
reverseKey :: [(Char, Char)] -> [(Char, Char)]to reverse a key. This function should swap each pair in the given list. For example:
Main> reverseKey [(’A’, ’G’), (’B’, ’H’) , (’C’, ’I’)] [(’G’, ’A’), (’H’, ’B’) , (’I’, ’C’)]
decipher :: Int -> Char -> Char decipherStr :: Int -> String -> Stringthat decipher a character and a string, respectively, by using the key with the given offset. Your function should leave digits and spaces unchanged, but remove lowercase letters and other characters. For example:
Main> decipherStr 5 "OZQD4YM" "JULY4TH"
In the test prop_rotate we made sure the input was of the right kind by changing it. But this is not always the best solution, and sometimes it is not even possible. A more general way to ensure the input of a function has a certain property, is to use an implication ‘==>’.
The QuickCheck implication is a lot like a logical implication. It takes two Boolean expressions as arguments, for example expr1 and expr2 (its resulting type is called Property):
expr1, expr2 :: Bool prop_test :: Property prop_test = expr1 ==> expr2In general, the property described above holds if expr1 is False or expr2 is True. However, to make sure that all tests are relevant, QuickCheck ignores the test if expr1 is False, and only counts the tests in which both expr1 and expr2 are True:
*Main> quickCheck (True ==> True) OK, passed 100 tests. *Main> quickCheck (False ==> True) Arguments exhausted after 0 tests.As you can see, QuickCheck does not continue to generate values forever; if after a certain amount of tests expr2 still isn’t True, it will stop with the message ‘arguments exhausted ’.
The conclusion to draw is that if we try a key on a sufficiently long sequence of text and the result does not contain any occurrences of “the” or “and” then the key can be discarded as a candidate.
Main> contains "Example" "amp" True Main> contains "Example" "xml" False
candidates :: String -> [(Int, String)]that decrypts the input string with each of the 26 possible keys and, when the decrypted text contains “THE” or “AND”, includes the decryption key and the text in the output list.
Main> candidates "DGGADBCOOCZYMJHZYVMTOJOCZHVS" [(5,"YBBVYWXJJXUTHECUTQHOJEJXUCQN"), (14,"PSSMPNOAAOLKYVTLKHYFAVAOLTHE"), (21,"ILLFIGHTTHEDROMEDARYTOTHEMAX")]
Main> splitEachFive "Secret Message" ["Secre", "t Mes", "sageX"]
Main> transpose ["123","abc","ABC"] ["1aA","2bB", "3cC"] Main> transpose ["1","22","333"] ["123","23","3"]If the rows in a list of lists are of the same length, transposing it twice returns the original one. Use your splitEachFive function to write a QuickCheck property to test this. Also, show with an example that this is not always the case when the rows are of different lengths.
Hint: The last action of the previous function is to put the transposed list of strings back together. You will need a helper function to undo this (it is not splitEachFive).
Main> encypt 12 "Secret Message" "EFMQYSOQQDEXQEX"The most frequent letter in the above cipher-text is ‘Q’. This letter lies 12 places to the right in the alphabet from the letter ‘E’, and the letter ‘E’ is the most common letter in English prose.
Main> countFreqs "Secret Message" [(’S’,1),(’e’,4),(’c’,1),(’r’,1),(’t’,1) ,(’ ’,1),(’M’,1),(’s’,2),(’a’,1),(’g’,1)]
Main> freqDecipher (encrypt 20 "To be or not to be") ["JERUEHDEJJERUTT","EZMPZCYZEEZMPOO","WREHRUQRWWREHGG" ,"TOBEORNOTTOBEDD",...]
ord :: Char -> IntReturn the numerical code corresponding to a character Examples:
ord ’A’ == 65 ord ’1’ == 49 chr :: Int -> CharReturn the character corresponding to a numerical code Examples:
chr 65 == ’A’ chr 49 == ’1’ mod :: Int -> Int -> IntReturn the remainder after the first argument is divided by the second Examples:
mod 10 3 == 1 mod 25 5 == 0 isAlpha :: Char -> BoolReturn True if the argument is an alphabetic character Examples:
isAlpha ’3’ == False isAlpha ’x’ == True isDigit :: Char -> BoolReturn True if the argument is a numeric character Examples:
isDigit ’3’ == True isDigit ’x’ == False isUpper :: Char -> BoolReturn True if the argument is an uppercase letter Examples:
isUpper ’x’ == False isUpper ’X’ == True isLower :: Char -> BoolReturn True if the argument is a lowercase letter Examples:
isLower ’3’ == False isLower ’x’ == True toUpper :: Char -> CharIf the argument is an alphabetic character, convert it to upper case Examples:
toUpper ’x’ == ’X’ toUpper ’3’ == ’3’ isPrefixOf :: String -> String -> BoolReturn True if the first list argument is a prefix of the second Examples:
isPrefix "has" "haskell" == True isPrefix "has" "handle" == False error :: String -> aSignal an error Examples:
error "Function only defined on positive numbers!"


{% extends "layout.html" %} {% block body %}
Hello and Welcome to Visit NI, we are an online company with the aim of attracting visitors from all around the world to Northern Ireland!
We only recommend the best places to visit in each county, so you can enjoy the best of the country we call home.
Hi i'm Robert and the creator of this website. I am a 19 year old Business Information Technology student. This website was made as a 2nd year university project 07/04/2017! I hope you enjoy the content and would really appreciate feedback via the contact form on the contact us page


Established in the year 1992, Three Aar is engaged in the business of manufacturing filtration products and providing customized filtration solutions to a wide gamut of industries such us, Automobile, Food and Beverages, Chemical, Medical, Electronics, Paint Shops, Agriculture etc.
About Group
Three Aar, a flagship of Dwarkason Group of Companies, and its associate companies M/s Filters & Filter Fabrics and M/S Saraswati Corporation, aim to provide world-class products to cater to the requirements of customers. Qualified technocrats fuel the functioning of the group. These engineers give momentum to Three Aar in meeting the standardized as well as customized industrial requirements of its esteemed customers. In addition to having own infrastructure and facilities, Three Aar has strategic tie-ups across the globe to provide state of the art filter products to its customers.


X
mm
inches
Select your paper
Finetex Polyester Canvas 280gsm
Soft Textured Paper 310gsm
Premium Satin Photo Paper 260gsm
Satin Photo Paper 190gsm
Premium Matt Vinyl
No mounting
--------- FOAM CORE BOARD -----------
3mm Foam Core
5mm Foam Core
5mm Acid Free Foam Core
5mm Black Foam Core
10mm Foam Core
Display Board
------------- MDF CUT TO SIZE -----------
2.5mm
3mm
6mm
12mm
No lamination
Gloss Coat
Satin Coat
Matt Coat
Select Option
With VAT
Without VAT
Price:
£


Everyone who is concerned with coding, testing, code quality and software craft. There is no agenda and there are no speakers before the event starts. Proposals are presented during the event itself in the mornings, and voted by the participants right after. Meet us if you want to share your knowledge, experience and expertise!
The event will be run as a non-profit, low-cost event. It will be much like a retreat. We will be there for 48 hours to collaborate and share ideas in a self-organized Open Space. There will be hands-on coding sessions, sessions focused on discussion, interactive talks and lots more.
We will not only spend the days together but also the nights. And – believe it or not – programmers are a great company! There will be be lots of opportunities to spend your time. Starting with simple chilling over hiking and biking, playing games, hanging around, talking and laughing.
We kick off SoCraTes IT with a good beer and networking activities
We have a good dinner all together
We do a team-building game to know each others.
Time to have a breakfast
Introduction of Connexxo about the spirit of SoCraTes IT and the Open Space
Time for everyone to write down their sessions and pick a slot on the market place
1-hour sessions
Time to refuel
1-hour sessions
Time to recap the first day and share your impression
Time to give energy to your brain
Time to have a breakfast
Time for everyone to write down their sessions and pick a slot on the market place.
1-hour sessions
Time to refuel.
1-hour sessions
We recap all the days and share our impression
Time flies when you're having fun
It would be great to list your company among our sponsors! Please contact us at none and we’ll send you the sponsorship prospect.


Web Developer , Technext
Software Developer , Technext
App Developer , Technext
Android Developer , Technext
iOS Developer , Technext
© Copyright 2014, Your Website Link. Theme by ThemeWagon


LES MISERABLES A film review by Steve Rhodes Copyright 1998 Steve Rhodes
RATING (0 TO ****): ***
Victor Hugo's famous novel, "Les Miserables," has now been made into - count 'em - 16 different movies, and that doesn't include the filmed version of the musical from a few years back. What THE HOUSE OF THE SPIRITS director Bille August is trying to say with his version of the movie that has not been said so many times before remains unclear. Although he assembles a strong cast to tell a powerful story, he has trouble breathing much life into it. Most scenes are staged strictly by the book with only the brilliance of the source material and the extremely handsome production raising the picture above the ordinary.
Anna Asp's sets are picture postcard perfect, especially the snow encrusted village. Jorgen Persson's cinematography dazzles the eyes with its lush colors. And the romantic music by Basil Poledouris has best seller written all over it.
As the story opens, Jean Valjean (Liam Neeson) has been released after 19 years in prison for stealing a loaf of bread. After being befriended by a kindly bishop, Jean goes on to make his fortune as a factory owner and to become the mayor of a small town.
One day Inspector Javert is sent from Paris to Jean's town to be the new prefect of police. Javert recognizes Jean as an ex-prisoner, and he abides no belief in criminal rehabilitation. ("Reform is a discarded fantasy.") The rest of the story becomes a long cat-and-mouse game with Javert trying to capture and reincarcerate Jean.
SHINE's Academy Award winner Geoffrey Rush, as Inspector Javert, proves to be the film's most troubling choice. Unlike the highly emotive and agitated character in SHINE, Rush makes the key role of the story's villain into a lifeless enigma with a single facial expression that looks like a head from Mount Rushmore. One wonders why the director didn't snap his fingers and ask Rush to get with the program.
Almost as unsatisfying is Uma Thuman as Fantine, the dying factory woman with an out-of-wedlock child. Thurman turns the character into a mawkish cliche.
Although Neeson does a good job, the only outstanding performance comes from Claire Danes in her fairly small part as Fantine's daughter, Cosette. (The movie takes several large leaps in time.) She is the only one to demonstrate strong emotions, both tragic and romantic. When she sticks her hand through the hole in the family's door to brush fingertips with her lover, a revolutionary played by Hans Matheson, the air becomes electric with her passion, proving again that filmdom's most erotic moments can occur fully dressed.
In the film's final battle sequence, complete with the killing of small children I should warn you, the movie gets the energy so absent from the body of the picture. A disappointing film that can be strangely cold and antiseptic, its wonderful story and its production save the day in the end. But if you don't want to see this version, you can rent one of the others or wait a few years for the next one.
LES MISERABLES runs a bit long at 2:09. It is rated PG-13 for violence and for some sexual content and would be fine for kids around twelve and up.
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


This is a demo page for testing Bootstrap without jQuery, which is a script to remove the need for jQuery in the Twitter Bootstrap framework (version 2) in certain situations. If you're just using the Bootstrap jQuery plugins for hiding and displaying elements, give this a try — it should improve page load speed for users.
Clicking the dropdown/dropup buttons below should show/hide submenus.


Karara Aloo Chaat (crisp potato salad)
Ingredients
- For the sweet yoghurt foam
- 250g/9oz yoghurt
- 50ml/2fl oz single cream
- 50ml/2fl oz sugar syrup
- siphon with two charges
- vegetable oil, for shallow and deep frying
- 500g/1lb 2oz King Edward potatoes, peeled and cut into large cubes
- 100g/3oz purple or Peruvian potatoes, thinly sliced using a mandoline
- 100g/3oz granulated sugar
- 2 tbsp mango powder
- 1 tsp mild Kashmiri chili powder or sweet paprika
- 1 tbsp black salt (kala namak)
- 1 tsp toasted cumin powder (seeds toasted and ground to powder)
- 1 tsp ground ginger
- 1 tsp powdered fennel seeds
- salt, to taste
Preparation method
For the yoghurt foam, mix the yoghurt, cream and sugar syrup together. Put the mixture into a siphon bottle, making sure the bottle is at least half full, and charge with two nitro cartridges. Keep the bottle chilled for two hours before using. For the Karara aloo chaat, in a frying pan heat a little vegetable oil and fry the King Edward potatoes in medium hot oil until almost cooked. Remove them from the pan and put them on a tray lined with kitchen paper. Place another layer of kitchen paper on top and press them flat. Fry them again to make them light brown in color and crisp. Remove and drain on a tray lined with kitchen paper. Fill a deep-fat fryer or a large, deep, heavy-bottomed pan two-thirds full with vegetable oil. Heat the oil to 180C/350F (use a probe thermometer to check the temperature if you're not using a deep-fat fryer). (CAUTION: Hot oil can be dangerous. Don't leave unattended) Deep fry the Peruvian potato slices to make crisps. Sprinkle with sea salt and set aside until needed. For the spicy chutney, mix 100ml/3fl oz of water with the sugar in a small pan and bring to the boil. Add the rest of the ingredients and simmer for 4-5 minutes, or until you have a fairly thick chutney. Add water to thin down, if required. To serve, toss the fried hot potatoes with the pomegranate seeds, coriander and 2-3 tablespoons of chutney. Place on a plate in 3-4 small clusters. Pipe the yoghurt foam in between and garnish with purple potato crisps, mint and watercress. Sprinkle with chaat masala and red chilli powder.


{% extends 'layout-bsa.html' %} {% block pageTitle %} How often do you pay the loan for making your home more accessible? - LIS training - NHSBSA {% endblock %} {% block outerContent %} {% endblock %} {% block content %}


7. Closing notes
Certain features of HTML require special handling:
- Undisplayed text. Content designated as
"display:none" is ignored by BidiChecker. If a page has elements
which are conditionally displayed when something is clicked, for
example, they will not be checked while invisible.
- Frames. When traversing the DOM of the page,
BidiChecker also enters the contents of frames (either FRAME or IFRAME
elements). The frame's location is appended to the element's location
description, such as: "in
<div id='abc'><p> in <iframe id='frame1'>".
In the case of FRAMEs making up the top-level page passed to
BidiChecker, their overall directionality is checked to match the
specified value; in the case of IFRAMEs and FRAMEs below IFRAMEs, their
overall directionality is not checked. If a frame's contents are hosted
on a different domain, they are not checked; the Javascript security
model makes them inaccessible, and you probably don't intend to check
them anyway.
- Unicode bidi characters. BidiChecker does not yet handle
Unicode
bidi embedding control characters. This
means that in the rare situation where embedding control characters
are used to fix a bidi bug, such as
in <option> elements, BidiChecker will report
the bug anyway. In the rarer circumstance where incorrectly used
embedding control characters may introduce a bug, the bug will not be
identified. However, BidiChecker currently does correctly
handle the
Fake
Bidi pseudolocale, treating Fake Bidi messages as RTL text when
searching for undeclared LTR text. (Below revision 2, it is only
treated as RTL when looking for undeclared LTR text, but not when
looking for undeclared RTL text.)
- Layout garbling of non-text inline elements. Certain page
elements, such as inputs and images, are affected by bidi layout
garbling bugs as if they were neutral characters. This is not yet
identified.
- <noscript> elements. The contents
of noscript tags (which are meant to be rendered when
scripting is disabled) are not checked by BidiChecker; anything inside
them is skipped.
- The GUI may not work correctly if more than one test is run from a
given JavaScript test file. Assuming each test navigates the application
and modifies the DOM of the page, errors identified by a run of
BidiChecker in one test may refer to DOM elements which are modified or
deleted by a subsequent test. This will leave a malfunctioning GUI,
which will be unable to highlight some or all of the error locations.
Furthermore, even if errors are found in more than one test, only one
instance of the GUI will be available. If the GUI is to be run from
automated tests, it is recommended to structure the system so as to run
only one test per test page.
- The in-page dialog box of the GUI mode does not work correctly
when run on some pages. For example, in a page based on frameset-style
frames, the dialog box will always appear in the first frame on the
page, where it may not fit or may be inaccessible or invisible.
Generally you should prefer to run the GUI in popup mode when possible.
- If an error's page location is scrolled out of view in a scrollable
component, covered by another element, or generally hidden in some way
(other than by setting display:none,
which would prevent BidiChecker reporting an error on it in the first
place), it will not be visible when highlighted by the GUI.


Loading documentation viewer
If you choose not to use Yeoman, you can set up a project structure by yourself. This isn’t such a laborious process as for some other web app frameworks, because Typescene itself has no dependencies and isn’t picky about the way you organize, compile, or bundle your TypeScript code.
Still, there are a number of different tools involved. You’ll need to complete the following steps:
Your application code needs to live in a folder on your hard drive, along with its dependencies (i.e. libraries and tools, such as Typescene itself).
Create a folder using the Finder (Mac), Explorer (Windows) or the terminal:
mkdir my-project
cd my-project
Your project is actually a package just by itself. This means it can refer to other packages as its dependencies, which are all managed by the NPM package manager.
To configure an NPM package, you need a package.json
file. Here’s a version of the package configuration file that can be used to set up a simple Typescene project, and loads up Webpack as a bundler:
{
"name": "my-project",
"private": true,
"version": "0.1.0",
"scripts": {
"build": "webpack -p",
"start:dev": "webpack-dev-server -d --open"
},
"devDependencies": {
"@typescene/dom": "0.9",
"typescript": "2",
"webpack": "3",
"webpack-dev-server": "2",
"ts-loader": "2",
"html-webpack-plugin": "2"
}
}
With this package.json
file, NPM is able to initialize your package and install its dependencies. At the command prompt (or using your IDE, if it has NPM integration), run the following command:
npm install
This creates a node_modules/
folder within your project folder.
TypeScript needs its own configuration file. At a minimum, you’ll need to specify the following options:
Putting it all together, your project’s tsconfig.json
file should at least contain the following properties:
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"moduleResolution": "node",
"strict": true,
"experimentalDecorators": true
}
}
You can place this file at the root of your project folder, but it’s generally better to keep it right next to your source code, so we’ll put in a src/
sub folder.
You can use the src/
folder to contain all of your application code. It’s a good idea to create more folders within this folder for all parts and/or features of your application, but for this example you’ll need only a single file, src/main.ts
:
import { App } from "@typescene/dom";
App.showMessageBox("Hi", "Hello, world!");
To run your application, you’ll need to load it in a browser. This means you need an .html
file, along with a single .js
file that contains all of your application code as well as the Typescene framework itself, since otherwise the browser wouldn’t know how to load any this code separately.
Webpack is a great tool for producing a single JavaScript file (a bundle). It concatenates, and optionally minifies all your code in one step. As a bonus, ts-loader
compiles TypeScript files, html-webpack-plugin
generates an HTML file, and webpack-dev-server
can be used to auto-refresh this page during development.
Webpack reads its configuration from webpack.config.js
in your project root folder by default:
var path = require("path");
var HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./src/main.ts",
output: {
filename: "bundle.js",
path: path.resolve(__dirname, "dist")
},
resolve: {
extensions: ["*", ".js", ".ts"],
},
module: {
rules: [
{ test: /\.ts$/, loader: "ts-loader" }
]
},
plugins: [
new HtmlWebpackPlugin({ title: "My Application" })
]
}
Note: Using Webpack to bundle the application output is optional. You can use any other method to load your TypeScript or JavaScript code into a browser (or application platform such as Electron or a mobile app framework based on Web technologies), as long as the Typescene DOM package code is either included in your .js
file(s), or loaded separately as a .min.js
file (found in the root folder of the @typescene/dom
NPM package).
You can now use NPM scripts to compile and run your app:
npm run build
to build for production, andnpm run start:dev
to start a Webpack development server.The code in src/main.ts
doesn’t really do anything yet. Start developing your UI by writing your own components.
Get started creating UI components
This is the documentation page for “Setting up a project manually”, part of the Typescene toolkit.


Four types of information have been taken into account to calculate delta m/z in PRIDE Inspector:
- Peptide Sequence - Required
- Post translational modifications - Optional
- Precursor m/z - Required
- Precursor charge - Required
The calculation can be broken down into the following steps:
1. Calculate peptide mass: simply sum the masses of all the amino acids in the peptide.
2. Calculate PTM mass: simply sum the masses of all the post translational modifications in the peptide.
3. Calculate theoretical mass: [Peptide mass - PTM mass - 18 dalton].
4. Calculate precursor mass: [(Precursor m/z * Precursor charge) - (Precursor charge * 1 dalton)].
5. Calculate detla m/z: [(Precursor mass - Theoretical mass)/Precursor charge].


Asserts that the Windows firewall is configurable and writes an error if it isn't.
Assert-FirewallConfigurable [<CommonParameters>]
The Windows firewall can only be configured if it is running. This function checks test if it is running. If it isn't, it writes out an error and returns False
. If it is running, it returns True
.
Assert-FirewallConfigurable
Returns True
if the Windows firewall can be configured, False
if it can't.


nips nips2001 nips2001-176 nips2001-176-reference knowledge-graph by maker-knowledge-mining
Source: pdf
Author: Roman Genov, Gert Cauwenberghs
Abstract: A mixed-signal paradigm is presented for high-resolution parallel innerproduct computation in very high dimensions, suitable for efﬁcient implementation of kernels in image processing. At the core of the externally digital architecture is a high-density, low-power analog array performing binary-binary partial matrix-vector multiplication. Full digital resolution is maintained even with low-resolution analog-to-digital conversion, owing to random statistics in the analog summation of binary products. A random modulation scheme produces near-Bernoulli statistics even for highly correlated inputs. The approach is validated with real image data, and with experimental results from a CID/DRAM analog array prototype in 0.5 m CMOS. ¢
[1] A. Kramer, “Array-based analog computation,” IEEE Micro, vol. 16 (5), pp. 40-49, 1996.
[2] G. Han, E. Sanchez-Sinencio, “A general purpose neuro-image processor architecture,” Proc. of IEEE Int. Symp. on Circuits and Systems (ISCAS’96), vol. 3, pp 495-498, 1996
[3] F. Kub, K. Moon, I. Mack, F. Long, “ Programmable analog vector-matrix multipliers,” IEEE Journal of Solid-State Circuits, vol. 25 (1), pp. 207-214, 1990.
[4] G. Cauwenberghs and V. Pedroni, “A Charge-Based CMOS Parallel Analog Vector Quantizer,” Adv. Neural Information Processing Systems (NIPS*94), Cambridge, MA: MIT Press, vol. 7, pp. 779-786, 1995.
[5] Papageorgiou, C.P, Oren, M. and Poggio, T., “A General Framework for Object Detection,” in Proceedings of International Conference on Computer Vision, 1998.
[6] G. Cauwenberghs and M.A. Bayoumi, Eds., Learning on Silicon: Adaptive VLSI Neural Systems, Norwell MA: Kluwer Academic, 1999.
[7] A. Murray and P.J. Edwards, “Synaptic Noise During MLP Training Enhances Fault-Tolerance, Generalization and Learning Trajectory,” in Advances in Neural Information Processing Systems, San Mateo, CA: Morgan Kaufman, vol. 5, pp 491-498, 1993.
[8] A. Gersho and R.M. Gray, Vector Quantization and Signal Compression, Norwell, MA: Kluwer, 1992.
[9] V. Vapnik, The Nature of Statistical Learning Theory, 2nd ed., Springer-Verlag, 1999.
[10] J. Wawrzynek, et al., “SPERT-II: A Vector Microprocessor System and its Application to Large Problems in Backpropagation Training,” in Advances in Neural Information Processing Systems, Cambridge, MA: MIT Press, vol. 8, pp 619-625, 1996.
[11] A. Chiang, “A programmable CCD signal processor,” IEEE Journal of Solid-State Circuits, vol. 25 (6), pp. 1510-1517, 1990.
[12] C. Neugebauer and A. Yariv, “A Parallel Analog CCD/CMOS Neural Network IC,” Proc. IEEE Int. Joint Conference on Neural Networks (IJCNN’91), Seattle, WA, vol. 1, pp 447-451, 1991.
[13] V. Pedroni, A. Agranat, C. Neugebauer, A. Yariv, “Pattern matching and parallel processing with CCD technology,” Proc. IEEE Int. Joint Conference on Neural Networks (IJCNN’92), vol. 3, pp 620-623, 1992.
[14] M. Howes, D. Morgan, Eds., Charge-Coupled Devices and Systems, John Wiley & Sons, 1979.
[15] R. Genov, G. Cauwenberghs “Charge-Mode Parallel Architecture for Matrix-Vector Multiplication,” IEEE T. Circuits and Systems II, vol. 48 (10), 2001.


| 1258 | (A) | when the Tempiłł was ouer-tytt Titus comandide |
| 1252 | (C) | whenne þe tempułł was ouur-kaste . tytus commaunded |
| 1246 | (D) | whan þe temple was ouir-tilt tytus commaunndid |
| 1222 | (E) | ¶ whan þe town was ouer-throwe . tytus comaundyd |
| (Ex) | ---- no text ---- | |
| 1287 | (L) | & whan þe temple was ouer tourned tytus commaundys |
| (P) | ---- no text ---- | |
| 1229 | (U) | ¶ When the temple is ouertilt / Titus comandetħ |
| 323 | (V) | whanne þe temple was ouer-telte . Titus commaundes |


--- layout: page title: Techno-Tweet 2015 excerpt: "Walchand Linux Users’ Group popularly known as WLUG CLub is group of open source enthusiasts/mavericks." search_omit: true ---


How to get the fraction file for VIC routing model
At first, you should have a boundary file (hhup.shp in this example) and a gridding file (Raster_hhup_grid.shp in this example). In the attribute table of gridding file, perimeter and area field should be contained.
NOTICE:
- The grid file should be converted from a raster file, but not from fishnet or other file.
- the coordinate system should be Projection Coordinate System, so you can get the area and perimeter of every gird.
Step 1, erasing
In this step, the erase command was used, and the corresponding inputs and output as following figure.
Step 2 recalculating
Adding a new field in the attribute table of hhup_grid_Erase and calculating the area again.
Step 3, joining
In this step, the spatial join command was used. Choosing Join operation as JOIN_ONE_TO_ONE, and match option as CONTAINS.
Then, in the attribute table of output feature class, that is hhup_grid_SpatialJoin4, field area_12 is the area that was not included in the river boundary for every grid.
Step 4, turning to raster
Using the command Feature to raster, and choosing Field as area_12, area, respectively. The output raster was named as hhup_frac and hhup_frac_bas successively.
Following are the results.
Step 5, raster calculating
By Spatial Analyst/Raster Calculator, the area percentage of every grid can be obtained.
Step 6, outputting
At this, you can get the fraction file that routing model of VIC asked for.
comments powered by Disqus


Lucy
The Game
Recycle Rush is the 2015 FIRST Robotics Competition game. More Information can be found on Wikipedia
The Robot
Some "Lucy" Trivia
- Our first robot
- We had to spray paint the robot 5 times for it to look so pretty
- We used a mecanum drive system
- All of our parts were machined and designed by the students
- Our lifting mechanism used a rack and pinion and a passive box pick-up
- Lucy had over 500 lightning holes in it
The Reveal Video


Software Design
Logical design
The following figure shows the overall logical architecture of the system composed of a server and a client.
Files organization
The project files are organized as follows:
docs : contains all the documentation related with the project. Documentation of the project is generated using Sphinx (a python documentation generator)
Esp-esp_mad_client : contains all the code for the Client part,
Esp_mad_Server : contains all the code for the Server part,
extra_components : contains the libraries used in the project and two components share between the Server and the Client (esp_mad_task_measure and esp_mad_task_vBattery),
Includes : contains Esp_mad.h for the globals define used in the code and Esp_mad_Globals_Variables.h for the declaration of the globals variables used,
buildAll.sh : is a little script used to clean or build all the project. The result is stored in the resultBuild.txt,
README.md is the presentation of the project used by github and LICENCE is a MIT licence.
The docs directory contains also the bom, the datasheets for the main chips used in the project, the stl files to build the casing and the box, the eagle files and the gerber files.
Server software architecture
- The « Server » software code is made up of three files:
esp_mad.cpp: this is the launch file which will create three FreeRtos tasks
the « measure » task
the « http-server » task
the « task_vBattery »
esp_mad_task_http_server.c: it is the file which contains the code of the task « http-server »
esp_mad_task_measure.cpp: it is the file which contains the code of the task « measure ».
esp_mad_task_vBattery.c : it is the file with contains the code of the task « task_vBattery »
The http-server task
A web server is a software component that listens for incoming HTTP requests from web browsers. Upon receiving a request, the web server sends a response. This may be the return of an HTML document to be displayed in a browser or data that forms a response to a service call. An HTTP request can also include data to be sent to the ESP32 for processing. There are many implementations of Web servers that can run in an ESP32 environment.
The Espressif (ESP-IDF) framework provides an API, the HTTP Server component, for implementing a lightweight Web server on ESP32. The two basic API calls are:
httpd_start(): creates an HTTP server instance, allocates resources to it based on the specified configuration, and generates a handle to the server instance. The server will have a listening socket (TCP) for HTTP traffic. The task priority and stack size are configurable when creating the server instance by passing the httpd_config_t structure to httpd_start(). TCP traffic is parsed as HTTP requests and, depending on the requested URI, registered handlers will be called to return HTTP response packets.
httpd_stop(): stops the server with the provided handle and releases the associated resources. This is a blocking function that first signals a stop to the server task, and then waits for the task to finish. Upon termination, the task closes all open connections, deletes registered URI handlers, and resets all session context data to empty.
To process HTTP requests sent to the server, we will need to register URI handlers with :
httpd_register_uri_handler(): registers a URI handler by passing an httpd_uri_t structure object that has members including the IR name, method type (e.g. HTTPD_GET / HTTPD_POST / HTTPD_PUT etc …), a function pointer of type esp_err_t * handler (httpd_req_t * req) and user_ctx pointer to the context data.
The http-server task starts by launching a DHCP server, then initializes the board in AP mode by associating the SSID defined in the esp_map.h file.
The address <IP_ADDRESS> is assigned to the Wifi AP as defined when the DHCP server is launched.
- During the initialization of the Wifi in AP mode, an event_group is created to receive the various events that can be received by the Wifi stack.
When the SYSTEM_EVENT_AP_START event is received, the web server is launched using the httpd function library. When the server is launched, the various URLs on which the server is likely to react are recorded and for each URL a callback function is associated.
When the event SYSTEM_EVENT_AP_STACONNECTED is received, the corresponding bit is recorded in the event_group.
On receipt of the SYSTEM_EVENT_AP_STADISCONNECTED event, the corresponding bit is recorded in the event group.
On receipt of the SYSTEM_EVENT_AP_STOP event, the web server is stopped and the associated resources are released.
Note
The URL « / », which corresponds to the reception of an HTTP GET at the address <IP_ADDRESS>, i.e. the main page of the site (esp.html), triggers the loading of the elements embedded in the page, which are bootstrap.min.css, bootstrap.min.js and jquery-3.1.1.min.js, by as many HTTP GET requests as required by the client browser.
All these elements, as well as the esp.html page, are embedded in the .rodata segment of the ESP32 memory (using the EMBED_FILES directive in the project’s CMakeList.txt file).
Each element contains in the .rodata segment is then referenced in the code using the following two directives :
extern const uint8_t esp_html_start[] asm("_binary_esp_html_start");
extern const uint8_t esp_html_end[] asm("_binary_esp_html_end");
Note
It is also possible to perform the same operations using a SPI Flash File System (SPIFFS), but I have not tested this solution. For a Web server using more than one HTML page, this method is probably more interesting than the method consisting in embedding the pages in the .rodata segment.
Data calculated by the « Measure » task (angle and travel) are retrieved by the http_server task from memory, these two variables being defined as global variables. These two values are updated by the « Measure » task every 10 ms.
The deflection angle information measured by the « Client » board is received at a frequency of 900 ms by an HTTP POST request. On receipt of the request, the deflection value in mm is calculated according to the control surface chord.
When the chord is changed from a web browser, an HTTP POST request is received and the chordControlSurface global variable is changed.
When the user wants to reset the Maximum(s) up and down on the travel tab, an HTTP POST request is received and the values are set to 0.
The « measure » task
- The task « measure » performs the following functions :
initialization of the I2C bus,
calibration of the MPU6050 component,
Then periodically:
Reading of the accelerometer and gyroscope values on the axes (x, y, z),
Calculation of the angle in degrees based on the previous values.
Note
the task « measure » is identical for the « Server » board and the « Client » board. The only difference is that in the case of the « Server » board, the deflection value in mm is calculated periodically by the « measure » task, whereas for the « Client » board, the value of the angle is transmitted to the « Server » board using an HTTP POST request and it is the « Server » board that performs the calculation of the deflection in mm.
Complementary filter is used to combine accelero and gyro data. see complementary filter for more information.
Basically complementary filter avoid used of kallman filter, quiet difficult to implement in small platform as an ESP32. Gyro are used for fast motion as accelero are used for slow motion.
Note
The deflection value in mm is calculated as a function of the angle alpha by the following formula : X = 2* sin(alpha/2) * L.
The « task_vBattery » task
The task « vBattery » compute periodically (each 30s per default) the measurement of the voltage of the battery.
The battery voltage is connected to the IO35 pin of the ESP-WROOM-32. This pin is the chanel 7 of the ADC1.
A bridge resistor divider with two resistors of 100 KOhm is used to decreased the voltage from 4.2 V to 2.1 V. So the attenuation of the ADC is set to 11 dB.
Client software architecture
- The « Client » software code is made up of three files:
esp_mad_client.cpp: this is the launch file which will create three FreeRtos tasks
the « measure » task
the « http-client » task
the « task_vBattery »
esp_mad_task_http_client.c: it is the file which contains the code of the task « http-server »
esp_mad_task_measure.cpp: it is the file which contains the code of the task « measure ».
esp_mad_task_vBattery.c : it is the file which contains the code of the task « task_vBattery ».
The measure task
The measure task is totally the same code than the measure task of the « Server ». No more words to add to this section :-)
The esp_map_task_http_client
The « http-client » task start to initialize the board on wifi station.
Then, the task checks periodically if the board is connected to the « Server » Board, and if the MPU6050 calibration is finish testing the global Binit variable.
If these conditions are true, an HTTP POST with the angle measure by the board is send to the « Server » board.
The task_vBattery
The task_vBattery is totally the same code than the task_vBattery of the « server ». No more words to add to this section also :-)
UX Design
The man-machine interface (MMI) of the project consists of a single HTML page (esp.html).
This page is built using the CSS framework bootstrap.
The page embeds an ajax script which periodically makes a HTTP GET request to the « Server » board which sends back the different information to be displayed in the page. A second script makes it possible to carry out the change of the chord of the control surfaces by a HTTP POST request. A third script is used to reset the Maximum(s) up and down travel on the travel tab.
All the files for MMI are located in the directory GliderThrowMeter/Esp_mad_Server/main/WebsiteFiles
To connect to the page, it is first necessary to connect to the Wifi ad’hoc network of SSID ESP_MAD.
Then, just type the address <IP_ADDRESS> in the URL bar of your browser to connect to the main page of the project.
The main page of the project contains 4 tabs : Travel, Angle, Setting & Info.
The travel tab displayed the current travel of each sensors, and the Maximum up and down for each sensors stored during the operation. The Reset Maximum(s) button is used to set to 0 these Maximum.
The « Angle » tab selection causes the page showing the deflection angles for both board to be displayed.
The « Setting » tab will display the page that allows you to change the value of the control surface chord.
Note
In the current version, the project allows to control only one « Client » and both boards deal with the same chord value.
To change the value of the chord, modify the value in the input field and validate with « Save change chord » button.
Finally, the « Info » tab display the voltage of the battery for both sensor.
Let’s move on to the next chapter for the description of the board design.


person( 1 ) invited INVITEES friends to his( 1 ) birthday party. Some people
had other plans and could not attend, but \frac{N}{D}
of the people person( 1 )
invited were able to attend.
How many people went to person( 1 )'s birthday party?
We need to figure out what \dfrac{N}{D}
of INVITEES
is to find out
how many people attended the party.
We can find \dfrac{N}{D}
of INVITEES
by multiplying
\dfrac{N}{D}
and INVITEES
.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{INVITEES} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{INVITEES}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{INVITEES}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{INVITEES}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * INVITEES}{D}} =
\color{GREEN}{SOLUTION}
We can also visually see that \dfrac{N}{D}
of
INVITEES
is SOLUTION
:
SOLUTION people attended person( 1 )'s party.
After saving up for a while, person( 1 ) had $AMOUNT.00 in
his( 1 ) piggy bank, and he( 1 ) spent
\frac{N}{D}
of that money on books at the bookstore.
How much money did person( 1 ) spend?
We need to figure out what \dfrac{N}{D}
of $AMOUNT.00
is to find out
how much person(1) spent.
We can find \dfrac{N}{D}
of $AMOUNT.00
by multiplying
\dfrac{N}{D}
and AMOUNT
.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{AMOUNT} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{AMOUNT}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{AMOUNT}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{AMOUNT}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * AMOUNT}{D}} =
\color{GREEN}{SOLUTION}
We can also visually see that \dfrac{N}{D}
of
AMOUNT
is SOLUTION
:
person( 1 ) spent $SOLUTION.00 on books.
Every day person( 1 ) put the extra change from his( 1 ) pockets into a glass jar. After
randRange( 10, 30 ) weeks, he( 1 ) had saved up $AMOUNT.00. person( 1 )
decided to use \frac{N}{D}
of the money from the jar to buy canned food for a homeless shelter.
How much money did person( 1 ) spend on canned food?
We need to figure out what \dfrac{N}{D}
of $AMOUNT.00
is to find out
how much person(1) spent.
We can find \dfrac{N}{D}
of $AMOUNT.00
by multiplying
\dfrac{N}{D}
and AMOUNT
.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{AMOUNT} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{AMOUNT}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{AMOUNT}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{AMOUNT}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * AMOUNT}{D}} =
\color{GREEN}{SOLUTION}
We can also visually see that \dfrac{N}{D}
of
AMOUNT
is SOLUTION
:
person( 1 ) spent $SOLUTION.00 on canned food for the homeless shelter.
Before leaving on a road trip, person( 1 ) filled up his( 1 ) gas tank, which holds
GALLONS gallons of gas. After 0.5 * randRange( 3 / 0.5, 10 / 0.5 ) hours, person( 1 )
noticed that the gas tank was \frac{N}{D}
full.
How many gallons of gas were left in the tank?
Since a fraction of the gas in his( 1 ) tank was left, we just need to figure out what
\dfrac{N}{D}
of GALLONS
gallons is to find out
how much gas was left in the tank.
We can find \dfrac{N}{D}
of GALLONS
gallons by multiplying
\dfrac{N}{D}
and GALLONS
.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{GALLONS} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{GALLONS}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{GALLONS}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{GALLONS}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * GALLONS}{D}} =
\color{GREEN}{SOLUTION}
We can also visually see that \dfrac{N}{D}
of
GALLONS
is SOLUTION
:
person( 1 ) had SOLUTION gallons of gas left in his( 1 ) tank when he( 1 ) checked.
ATTENDEES people had a picnic in the park.
\frac{N}{D}
of the people at the picnic were adults.
How many adults were at the picnic?
We need to figure out what \dfrac{N}{D}
of ATTENDEES
is to find out
how many people at the picnic were adults.
We can find \dfrac{N}{D}
of ATTENDEES
by multiplying
\dfrac{N}{D}
and ATTENDEES
.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{ATTENDEES} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{ATTENDEES}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{ATTENDEES}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{ATTENDEES}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * ATTENDEES}{D}} =
\color{GREEN}{SOLUTION}
We can also visually see that \dfrac{N}{D}
of
ATTENDEES
is SOLUTION
:
SOLUTION people at the picnic were adults.
person(1) decided to bake cookies for the school bake sale. He(1) found a recipe
that called for \frac{N}{D}
of a cup of chocolate chips.
To have enough cookies for the bake sale, person(1) needed to make BATCHES batches of cookies.
How many cups of chocolate chips did person(1) need in total?
We can multiply \dfrac{N}{D}
cup by BATCHES
batches to find out how many cups of chocolate chips person(1) needed.
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{BATCHES} =
\color{GREEN}{\text{?}}
\color{BLUE}{\dfrac{N}{D}} \times \color{ORANGE}{\dfrac{BATCHES}{1}} =
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{BATCHES}}
{\color{BLUE}{D} \cdot \color{ORANGE}{1}} = \color{GREEN}{\text{?}}
\dfrac{\color{BLUE}{N} \cdot \color{ORANGE}{BATCHES}}
{\color{BLUE}{D}} = \color{GREEN}{\dfrac{N * BATCHES}{D}} =
\color{GREEN}{SOLUTION}
person(1) needed plural(SOLUTION, "cup") of chocolate chips to make enough cookies for the bake sale.


Fibonacci Sequence
➣ Source Code
# Program to display the Fibonacci sequence up to n-th term where n is provided by the user
# change this value for a different result
nterms = 10
# uncomment to take input from the user
#nterms = int(input("How many terms? "))
# first two terms
n1 = 0
n2 = 1
count = 0
# check if the number of terms is valid
if nterms <= 0:
print("Please enter a positive integer")
elif nterms == 1:
print("Fibonacci sequence upto",nterms,":")
print(n1)
else:
print("Fibonacci sequence upto",nterms,":")
while count < nterms:
print(n1,end=' , ')
nth = n1 + n2
# update values
n1 = n2
n2 = nth
count += 1
➣ Output
Fibonacci sequence upto 10 :
0, 1, 1, 2, 3, 5, 8, 13, 21, 34,


Colombian president orders curfew in capital city
Tens of thousands took to the streets to send a strong message of rejection against Ivan Duque’s conservative government.
Colombian President Ivan Duque has ordered a curfew in the nation’s capital amid continuing unrest following a massive march.
Tens of thousands took to the streets a day earlier to send a strong message of rejection against Mr Duque’s conservative government.
The president announced on Twitter that he has requested that Bogota’s mayor enforces a curfew beginning at 9pm in all of the city of 7 million after police pushed back thick crowds of protesters banging pots and pans in the storied Plaza Bolivar.
The curfew comes one day after an estimated 250,000 people took to the streets in one of the nation’s biggest marches in recent history.
While the protest started out peaceful, it ended with scattered clashes between protesters and police. Three people were killed in what authorities described as violent looting incidents overnight.
Clashes continued in parts of Bogota and in the south-western city of Cali on Friday as volunteers wiped graffiti off historic buildings and swept up shattered glass.
The upheaval comes as Latin America is experiencing a tide of discontent, with massive demonstrations in countries including Chile, Bolivia and Ecuador where citizens frustrated with their political leaders are taking to the streets.
Defence minister Carlos Holmes Trujillo said that as of Friday morning, 98 people had been detained and 151 police and military officers injured, as well as 122 civilians, most of whom suffered minor injuries and tear gas inhalation.
The minister said two individuals were killed in the port city of Buenaventura after police were attacked while responding to looting at a shopping centre. A third died in Candelaria after police said a group looting a supermarket shot at officers.
The names and cause of death of those killed were not released.
Mr Duque called a special meeting with his ministers on Friday but did not immediately respond to protesters’ demand for a meeting. In an address after the protest, the president said he had heard the day’s outcry and supported talks with all sectors.
Protest organisers urged Mr Duque to establish a dialogue with indigenous, student and labour groups to discuss potential reforms and criticised him for not directly addressing demonstrator complaints in a late-night address.
Recent polling indicates Mr Duque has a 26% approval rating 15 months into his administration as the nation grapples with implementing a complicated peace process with leftist rebels, ongoing violence between illegal armed groups and long-simmering tensions over issues like corruption and inequality.


Github - Popular code sharing space
Slack - Popular productivity hub / collaboration location
Reclaim Hosting - Reclaim hosting, very easy to use hosting provider to experiment
CodePen - Great place to remix and learn HTML / CSS / JavaScript
HAXcms - Penn State developed flat file CMS (powers this course website)
ELMS:LN - Penn State developed learning platform development initiative


Base class for providing memory allocation for all other engine classes. More...
Public Member Functions | |
| dClassAlloc () | |
| Empty. | |
| ~dClassAlloc () | |
| Empty. | |
| void * | operator new (size_t size) |
| Overloaded operator new for any subclass derived from dClassAlloc. | |
| void | operator delete (void *ptr) |
| Overloaded operator delete for any subclass derived from dClassAlloc. | |
Static Public Member Functions | |
| static D_CORE_API void * | Malloc (size_t size) |
| Generic allocation for any function subclass from dClassAlloc. | |
| static D_CORE_API void | Free (void *const ptr) |
| Generic destruction for any function subclass from dClassAlloc. | |
Base class for providing memory allocation for all other engine classes.


class: center, middle, inverse, title-slide # ETC1010: Data Modelling and Computing ## Lecture 2: Tidy data ### Di Cook (
<EMAIL_ADDRESS>,
@visnut
) ### Week 2 --- # Overview - Terminology of statistical data exploration - Process of exploring data - Making basic plots - Different forms of data and making them tidy --- # Exploratory data analysis "Data science is an exciting discipline that allows you to turn raw data into understanding, insight, and knowledge." [Grolemund and Wickham](http://r4ds.had.co.nz/introduction.html) Exploratory data analysis is the stage in the analysis where the analyst "plays in the sand" with their data to see what it has to tell them. It allows us to find the unexpected, and come to some understanding of the information that the data contains. [Cook and Swayne](http://www.ggobi.org/book/) --- # Exploring your data, stages - import - tidy - transform/wrangle/clean - visualise - model - communicate --- # Rectangular data - Variables are in the columns - A __variable__ is a quantity, quality, or property that you can measure. - A value is the state of a variable when you measure it. The value of a variable may change from measurement to measurement. - Observations are in the rows: An __observation__ is a set of measurements made under similar conditions (you usually make all of the measurements in an observation at the same time and on the same object). An observation will contain several values, each associated with a different variable. I’ll sometimes refer to an observation as a data point. - __Tabular data__ is a set of values, each associated with a variable and an observation. Tabular data is __tidy__ if each value is placed in its own "cell", each variable in its own column, and each observation in its own row. --- # Fundamental questions - What type of variation occurs within my variables? - What type of covariation occurs between my variables? --- # Visualising distributions ```r ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut)) ```  `Cut` is a categorical variable, show we display it using a bar chart. Height of the bar shows the number in each category. What is the most common diamond cut? --- class: inverse middle # Your turn In the previous plot: - What is the variable? - What are the observations? --- # Under the hood The counts for the bar chart were automatically calculated, prior to plotting: ```r diamonds %>% count(cut) # A tibble: 5 x 2 cut n <ord> <int> 1 Fair 1610 2 Good 4906 3 Very Good 12082 4 Premium 13791 5 Ideal 21551 ``` --- # Visualising distributions A variable is continuous if it can take any of an infinite set of ordered values. To examine the distribution of a continuous variable, use a histogram: ```r ggplot(data = diamonds) + geom_histogram(mapping = aes(x = carat), binwidth = 0.5) ```  Carat ranges from 0 to 5 centered at 0.5, and has a right-skewed shape. This means that most diamonds are around 0.5-1 carat, and there are very few large diamonds. --- # Focus Because most of the information about carats of most diamonds is actually in the smaller range, zoom in to this domain to see detail.  --- class: inverse middle # Your turn The distribution for diamonds smaller than 3 carats is multi-modal, at this 0.1 binwidth resolution. There are peaks at 0.5, 1, 1.5 and 2 carats. What might this mean? --- # Covariation If we examine price of the diamond relative to carat, we might expect the price increases with carat. A scatterplot is a way to explore this covariation. ```r ggplot(diamonds, aes(x=carat, y=price)) + geom_point(alpha=0.5) ```  There is a positive association between the two variables, but it is also nonlinear, and there are a few outliers, very large and not so expensive diamonds. We can also see concentrations of points at fixed values, 1, 1.5, 2, ... The variation is not uniform for all values of carat, as carat increases so does the variation. This is called heteroskedastic. --- # Linearise Nonlinear relationships are harder to model, so at this point it can be helpful to transform one or more of the variables. Here we have put price on a square root scale, which makes the relationship more linear. ```r ggplot(diamonds, aes(x=carat, y=price)) + geom_point(alpha=0.5) + scale_y_sqrt() ```  --- # Covariation The reason that the larger diamonds don't bring relatively larger prices might be related to quality. Incorporating this into the plot may help tease the variation apart. ```r ggplot(diamonds, aes(x=carat, y=price, colour=clarity)) + geom_point(alpha=0.1) + geom_smooth(se=FALSE, method="lm") + scale_y_sqrt() ```  --- # Tidying data Here are a bunch of examples data sets that have come across my desk. We are going to work out what are the variables and what are the observations, to know what form we need to rearrange the data to get it into tidy form. --- # Example 1 What are the variables? Observations? ``` # A tibble: 6 x 4 Inst AvNumPubs AvNumCits PctCompletion <chr> <dbl> <dbl> <dbl> 1 ARIZONA STATE UNIVERSITY 0.90 1.57 31.7 2 AUBURN UNIVERSITY 0.79 0.64 44.4 3 BOSTON COLLEGE 0.51 1.03 46.8 4 BOSTON UNIVERSITY 0.49 2.66 34.2 5 BRANDEIS UNIVERSITY 0.30 3.03 48.7 6 BROWN UNIVERSITY 0.84 2.31 54.6 ``` Is it in tidy form? --- # Example 2 What are the variables? Observations? ``` # A tibble: 3 x 12 id `WI-6.R1` `WI-6.R2` `WI-6.R4` `WM-6.R1` `WM-6.R2` `WI-12.R1` <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Gene 1 2.182424 2.2042219 4.195636 2.6273345 5.063641 4.540002 2 Gene 2 1.464224 0.5854472 1.859238 0.5152242 2.882808 1.364037 3 Gene 3 2.031792 0.8701078 3.281983 0.5330452 4.627315 2.182192 # ... with 5 more variables: `WI-12.R2` <dbl>, `WI-12.R4` <dbl>, # `WM-12.R1` <dbl>, `WM-12.R2` <dbl>, `WM-12.R4` <dbl> ``` --- # Example 3 What are the variables? Observations? ``` V1 V2 V3 V4 V5 V9 V13 V17 V21 V25 V29 V33 V37 V41 V45 V49 1 ASN00086282 1970 7 TMAX 141 124 113 123 148 149 139 153 123 108 119 112 2 ASN00086282 1970 7 TMIN 80 63 36 57 69 47 84 78 49 42 48 56 3 ASN00086282 1970 7 PRCP 3 30 0 0 36 3 0 0 10 23 3 0 4 ASN00086282 1970 8 TMAX 145 128 150 122 109 112 116 142 166 127 117 127 5 ASN00086282 1970 8 TMIN 50 61 75 67 41 51 48 -7 56 62 47 33 6 ASN00086282 1970 8 PRCP 0 66 0 53 13 3 8 0 0 0 3 5 V53 V57 V61 V65 V69 V73 V77 V81 V85 V89 V93 V97 1 126 112 115 133 134 126 104 143 141 134 117 142 2 51 36 44 39 40 58 15 33 51 74 39 66 3 5 0 0 0 0 0 8 0 18 0 0 0 4 159 143 114 65 113 125 129 147 161 168 178 161 5 67 84 11 41 18 50 22 28 74 94 73 88 6 0 0 64 3 99 36 8 0 0 0 8 36 ``` --- # Example 4 What are the variables? Observations? ``` # A tibble: 6 x 22 iso2 year m_04 m_514 m_014 m_1524 m_2534 m_3544 m_4554 m_5564 m_65 <chr> <int> <int> <int> <int> <int> <int> <int> <int> <int> <int> 1 ZW 2003 NA NA<PHONE_NUMBER> 2228 981 367 205 2 ZW 2004 NA NA<PHONE_NUMBER> 2298 1056 366 198 3 ZW 2005 NA NA<PHONE_NUMBER> 1855 762 295 656 4 ZW 2006 NA NA<PHONE_NUMBER> 1939 896 348 199 5 ZW 2007 6 132<PHONE_NUMBER> 0 716 292 153 6 ZW 2008 NA NA 127 614 0 3316 704 263 185 # ... with 11 more variables: m_u <int>, f_04 <int>, f_514 <int>, # f_014 <int>, f_1524 <int>, f_2534 <int>, f_3544 <int>, f_4554 <int>, # f_5564 <int>, f_65 <int>, f_u <int> ``` --- # Example 5 ``` religion <$10k $10-20k $20-30k $30-40k 1 Agnostic 27 34 60 81 2 Atheist 12 27 37 52 3 Buddhist 27 21 30 34 4 Catholic 418 617 732 670 5 Don’t know/refused 15 14 15 11 ``` --- # Example 6 10 week sensory experiment, 12 individuals assessed taste of french fries on several scales (how potato-y, buttery, grassy, rancid, paint-y do they taste?), fried in one of 3 different oils, replicated twice.  What are the factors of the experiment? What was measured? What do you want to know? --- # Messy Data Patterns There are various features of messy data that one can observe in practice. Here are some of the more commonly observed patterns: - Column headers are values, not variable names - Variables are stored in both rows and columns, contingency table format - One type of experimental unit stored in multiple tables - Dates in many different formats --- # What is Tidy Data? - Each observation forms a row - Each variable forms a column - Data is contained in a single table - Long form makes it easier to reshape in many different ways - Wide form is common for analysis --- ![](lego.png) --- ![](playmobile.png) --- # Tidy Verbs - `gather`: specify the **keys** (identifiers) and the **values** (measures) to make long form (used to be called melting) - `spread`: variables in columns (used to be called casting) - `nest`/`unnest`: working with list variables - `separate`/`unite`: split and combine columns --- # Tidying the example 2 data ```r genes <- read_csv("data/genes.csv") head(genes) # A tibble: 3 x 12 id `WI-6.R1` `WI-6.R2` `WI-6.R4` `WM-6.R1` `WM-6.R2` `WI-12.R1` <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 Gene 1 2.182424 2.2042219 4.195636 2.6273345 5.063641 4.540002 2 Gene 2 1.464224 0.5854472 1.859238 0.5152242 2.882808 1.364037 3 Gene 3 2.031792 0.8701078 3.281983 0.5330452 4.627315 2.182192 # ... with 5 more variables: `WI-12.R2` <dbl>, `WI-12.R4` <dbl>, # `WM-12.R1` <dbl>, `WM-12.R2` <dbl>, `WM-12.R4` <dbl> ``` --- # Gather Column Names into Long Form ```r gather(genes, variable, expr, -id) # A tibble: 33 x 3 id variable expr <chr> <chr> <dbl> 1 Gene 1 WI-6.R1 2.1824242 2 Gene 2 WI-6.R1 1.4642236 3 Gene 3 WI-6.R1 2.0317925 4 Gene 1 WI-6.R2 2.2042219 5 Gene 2 WI-6.R2 0.5854472 6 Gene 3 WI-6.R2 0.8701078 7 Gene 1 WI-6.R4 4.1956364 8 Gene 2 WI-6.R4 1.8592378 9 Gene 3 WI-6.R4 3.2819835 10 Gene 1 WM-6.R1 2.6273345 # ... with 23 more rows ``` --- # Separate Columns ```r genes %>% gather(variable, expr, -id) %>% separate(variable, c("trt", "leftover"), "-") # A tibble: 33 x 4 id trt leftover expr * <chr> <chr> <chr> <dbl> 1 Gene 1 WI 6.R1 2.1824242 2 Gene 2 WI 6.R1 1.4642236 3 Gene 3 WI 6.R1 2.0317925 4 Gene 1 WI 6.R2 2.2042219 5 Gene 2 WI 6.R2 0.5854472 6 Gene 3 WI 6.R2 0.8701078 7 Gene 1 WI 6.R4 4.1956364 8 Gene 2 WI 6.R4 1.8592378 9 Gene 3 WI 6.R4 3.2819835 10 Gene 1 WM 6.R1 2.6273345 # ... with 23 more rows ``` --- ```r genes %>% gather(variable, expr, -id) %>% separate(variable, c("trt", "leftover"), "-") %>% separate(leftover, c("time", "rep"), "\\.") # A tibble: 33 x 5 id trt time rep expr * <chr> <chr> <chr> <chr> <dbl> 1 Gene 1 WI 6 R1 2.1824242 2 Gene 2 WI 6 R1 1.4642236 3 Gene 3 WI 6 R1 2.0317925 4 Gene 1 WI 6 R2 2.2042219 5 Gene 2 WI 6 R2 0.5854472 6 Gene 3 WI 6 R2 0.8701078 7 Gene 1 WI 6 R4 4.1956364 8 Gene 2 WI 6 R4 1.8592378 9 Gene 3 WI 6 R4 3.2819835 10 Gene 1 WM 6 R1 2.6273345 # ... with 23 more rows ``` --- ```r gtidy <- genes %>% gather(variable, expr, -id) %>% separate(variable, c("trt", "leftover"), "-") %>% separate(leftover, c("time", "rep"), "\\.") %>% mutate(trt = sub("W", "", trt)) %>% mutate(rep = sub("R", "", rep)) head(gtidy) # A tibble: 6 x 5 id trt time rep expr <chr> <chr> <chr> <chr> <dbl> 1 Gene 1 I 6 1 2.1824242 2 Gene 2 I 6 1 1.4642236 3 Gene 3 I 6 1 2.0317925 4 Gene 1 I 6 2 2.2042219 5 Gene 2 I 6 2 0.5854472 6 Gene 3 I 6 2 0.8701078 ``` --- # Make a picture  --- # Tidying example 3 ```r melbtemp <- read.fwf("data/ASN00086282.dly", c(11, 4, 2, 4, rep(c(5, 1, 1, 1), 31)), fill=T) melbtemp <- melbtemp[,c(1,2,3,4,seq(5,128,4))] colnames(melbtemp) <- c("id", "year", "month", "var", paste0("V",1:31)) head(melbtemp) id year month var V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 1 ASN00086282 1970 7 TMAX 141 124 113 123 148 149 139 153 123 108 119 2 ASN00086282 1970 7 TMIN 80 63 36 57 69 47 84 78 49 42 48 3 ASN00086282 1970 7 PRCP 3 30 0 0 36 3 0 0 10 23 3 4 ASN00086282 1970 8 TMAX 145 128 150 122 109 112 116 142 166 127 117 5 ASN00086282 1970 8 TMIN 50 61 75 67 41 51 48 -7 56 62 47 6 ASN00086282 1970 8 PRCP 0 66 0 53 13 3 8 0 0 0 3 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 V29 1 112 126 112 115 133 134 126 104 143 141 134 117 142 158 149 133 143 150 2 56 51 36 44 39 40 58 15 33 51 74 39 66 78 36 61 46 42 3 0 5 0 0 0 0 0 8 0 18 0 0 0 0 13 3 0 25 4 127 159 143 114 65 113 125 129 147 161 168 178 161 145 142 137 150 120 5 33 67 84 11 41 18 50 22 28 74 94 73 88 50 48 54 78 47 6 5 0 0 64 3 99 36 8 0 0 0 8 36 25 30 56 5 69 V30 V31 1 145 115 2 63 39 3 0 3 4 114 129 5 18 39 6 3 20 ``` --- ```r melbtemp %>% gather(day, value, V1:V31) %>% head() id year month var day value 1 ASN00086282 1970 7 TMAX V1 141 2 ASN00086282 1970 7 TMIN V1 80 3 ASN00086282 1970 7 PRCP V1 3 4 ASN00086282 1970 8 TMAX V1 145 5 ASN00086282 1970 8 TMIN V1 50 6 ASN00086282 1970 8 PRCP V1 0 ``` --- ```r melbtemp %>% gather(day, value, V1:V31) %>% mutate(day = sub("V", "", day)) %>% head() id year month var day value 1 ASN00086282 1970 7 TMAX 1 141 2 ASN00086282 1970 7 TMIN 1 80 3 ASN00086282 1970 7 PRCP 1 3 4 ASN00086282 1970 8 TMAX 1 145 5 ASN00086282 1970 8 TMIN 1 50 6 ASN00086282 1970 8 PRCP 1 0 ``` --- Missing values have been coded as -9999. Need to recode these as NA. ``` min median max 1 -9999 91 1388 ``` ```r melbtemp %>% gather(day, value, V1:V31) %>% mutate(day = sub("V", "", day)) %>% mutate(value=ifelse(value==-9999, NA, value)) %>% head() id year month var day value 1 ASN00086282 1970 7 TMAX 1 141 2 ASN00086282 1970 7 TMIN 1 80 3 ASN00086282 1970 7 PRCP 1 3 4 ASN00086282 1970 8 TMAX 1 145 5 ASN00086282 1970 8 TMIN 1 50 6 ASN00086282 1970 8 PRCP 1 0 ``` --- There are more variables types that are recognisable: ``` # A tibble: 7 x 2 var n <fctr> <int> 1 DATN 62 2 DATX 31 3 MDTN 62 4 MDTX 31 5 PRCP 16399 6 TMAX 16399 7 TMIN 16399 ``` --- ```r melbtemp %>% gather(day, value, V1:V31) %>% mutate(day = sub("V", "", day)) %>% mutate(value=ifelse(value==-9999, NA, value)) %>% filter(var %in% c("PRCP", "TMAX", "TMIN")) %>% head() id year month var day value 1 ASN00086282 1970 7 TMAX 1 141 2 ASN00086282 1970 7 TMIN 1 80 3 ASN00086282 1970 7 PRCP 1 3 4 ASN00086282 1970 8 TMAX 1 145 5 ASN00086282 1970 8 TMIN 1 50 6 ASN00086282 1970 8 PRCP 1 0 ``` --- ```r melbtemp %>% gather(day, value, V1:V31) %>% mutate(day = sub("V", "", day)) %>% mutate(value=ifelse(value==-9999, NA, value)) %>% filter(var %in% c("PRCP", "TMAX", "TMIN")) %>% spread(var, value) %>% head() id year month day PRCP TMAX TMIN 1 ASN00086282 1970 7 1 3 141 80 2 ASN00086282 1970 7 10 23 108 42 3 ASN00086282 1970 7 11 3 119 48 4 ASN00086282 1970 7 12 0 112 56 5 ASN00086282 1970 7 13 5 126 51 6 ASN00086282 1970 7 14 0 112 36 ``` --- ```r melbtemp %>% gather(day, value, V1:V31) %>% mutate(day = sub("V", "", day)) %>% mutate(value=ifelse(value==-9999, NA, value)) %>% filter(var %in% c("PRCP", "TMAX", "TMIN")) %>% spread(var, value) %>% mutate(PRCP=PRCP/10, TMAX=TMAX/10, TMIN=TMIN/10) %>% head() id year month day PRCP TMAX TMIN 1 ASN00086282 1970 7 1 0.3 14.1 8.0 2 ASN00086282 1970 7 10 2.3 10.8 4.2 3 ASN00086282 1970 7 11 0.3 11.9 4.8 4 ASN00086282 1970 7 12 0.0 11.2 5.6 5 ASN00086282 1970 7 13 0.5 12.6 5.1 6 ASN00086282 1970 7 14 0.0 11.2 3.6 ``` --- # Now look at Melbourne max temperatures  --- # Tidying example 4 ```r tb <- tb %>% gather(var, count, m_04:f_u) %>% separate(var, c("gender", "age")) %>% filter(!(age %in% c("014", "04", "514", "u"))) head(tb) # A tibble: 6 x 5 iso2 year gender age count <chr> <int> <chr> <chr> <int> 1 AD 1989 m 1524 NA 2 AD 1990 m 1524 NA 3 AD 1991 m 1524 NA 4 AD 1992 m 1524 NA 5 AD 1993 m 1524 NA 6 AD 1994 m 1524 NA ``` --- # Numbers in Australia ```r tb %>% filter(iso2 == "AU") %>% ggplot(aes(x = year, y = count, fill = gender)) + geom_bar(stat = "identity", position = "fill") + facet_grid(~ age) ```  --- # Tidying example 5 ```r pew %>% gather(income, count, -religion) %>% group_by(religion) %>% mutate(prop = count / sum(count)) %>% head() # A tibble: 6 x 4 # Groups: religion [6] religion income count prop <chr> <chr> <int> <dbl> 1 Agnostic <$10k 27 0.03268765 2 Atheist <$10k 12 0.02330097 3 Buddhist <$10k 27 0.06569343 4 Catholic <$10k 418 0.05189968 5 Don’t know/refused <$10k 15 0.05514706 6 Evangelical Prot <$10k 575 0.06070524 ``` --- # Relationship between income and religion  --- class: inverse middle # Share and share alike
This work is licensed under a Creative Commons Attribution 4.0 International License.


| attachSymbols {quantmod} | R Documentation |
Attach a demand database (lazy load) as a new environment.
attachSymbols(DB = DDB_Yahoo(), pos = 2, prefix = NULL, postfix = NULL, mem.cache = TRUE, file.cache = !mem.cache, cache.dir = tempdir()) flushSymbols(DB = DDB_Yahoo())
DB |
A |
pos |
position in search path to attach DB |
prefix |
character to prefix all symbols with |
postfix |
character to postfix all symbols with |
mem.cache |
should objects be cached in memory |
file.cache |
should objects be cached in on disk |
cache.dir |
directory to use for |
An experimental function to allow access to remote objects without requiring explicit calls to a loading function.
attachSymbols
requires a DDB
object
to define where the data is to come from, as well as what symbols are
loaded on-demand.
attachSymbols calls the method referred to
by the DDB
object. In the default case this is
DDB_Yahoo
. See this function for specific details
about the Yahoo implementation.
The individual methods make use of getSymbols
to
load the data. This requires a corresponding
getSymbols method.
Internally, attachSymbols makes use of quantmod's unexported create.bindings to dynamically create active bindings to each symbol listed in the DDB object.
In turn, create.bindings uses one of two R methods to create the binding to the names required. This depends on the cache method requested.
Immediately after a call to attachSymbols, a new environment is attached that contains the names of objects yet to be loaded. This is similar to the lazy-load mechanism in R, though extended to be both more general and easier to use.
It is important to note that no data is loaded at this stage.
What occurs instead is that these symbols now have active bindings
using either delayedAssign
(mem.cache) or
makeActiveBinding
(file.cache).
During all future requests for the object(s) in question,
the binding will be used to determine how this data is
loaded into R. mem.cache
will simply load the
data from its corresponding source (as defined by the DDB object)
and leave it in the environment specified in the original call.
The effect of this is to allow lazy-loading of data from
a variety of external sources (Yahoo in the default case).
Once loaded, these are cached in R's memory. Nothing further
differentiates these from standard variables. This also means
that the environment will grow as more symbols are loaded.
If the file.cache
option is set, the data is loaded from
its source the first time the symbol is referenced. The difference
is that the data is then written to a temporary file and maintained
there. Data is loaded and subsequently removed upon each
request for the object. See makeActiveBinding
for details
of how this occurs at the R level.
A primary advantage of using the file.cache option is the ability to maintain hundreds or thousands of objects in your current session without using memory, or explicitly loading and removing. The main downside of this approach is the that data must be loaded from disk each time, with the corresponding (if generally negligible) overhead of file access.
This function is new, and all aspects may change in the near future.
Jeffrey A. Ryan
Luke's stuff and Mark Brevington and Roger Peng
delayedAssign
, makeActiveBinding
## Not run: attachSymbols() SBUX QQQQ ls() ## End(Not run)


Thumbnails
Document Outline
Attachments
Find:
Previous
Next
Highlight all
Match case
Presentation Mode
Open
Print
Download
Current View
Go to First Page
Go to Last Page
Rotate Clockwise
Rotate Counterclockwise
Enable hand tool
Document Properties…
Find
Previous
Next
Previous
Next
Page:
Presentation Mode
Open
Print
Download
Current View
Tools
Zoom Out
Zoom In
Automatic Zoom
Actual Size
Fit Page
Full Width
50%
75%
100%
125%
150%
200%
300%
400%
Download
Print
More Information
Less Information
Close
Enter the password to open this PDF file:
Cancel
OK
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Close


001package io.avaje.inject.aop; 002 003import java.lang.annotation.Annotation; 004import java.lang.reflect.Method; 005 006/** 007 * Provides method interception such that logic can be provided both before and after method invocation. 008 *
 009 * MethodInterceptor instances are provided by {@link AspectProvider#interceptor(Method, Annotation)}. 010 */ 011public interface MethodInterceptor { 012 013 /** 014 * Implementation can perform before and after invocation logic. 015 *
 016 * If a method interceptor wants to replace the result it does this via {@link Invocation#result(Object)}. 017 * This is a little different to traditional method interceptors (i.e. org.org.aopalliance.intercept.MethodInterceptor). 018 * It is done this way to handle implied generic return types in the generated source code. 019 * 020 * @param invocation The invocation being intercepted 021 * @throws Throwable If the interception or underlying invocation throws an exception 022 */ 023 void invoke(Invocation invocation) throws Throwable; 024}


passcombo.com 🏴☠🏴
07-Oct-18 08:00 PM
warning / notifications is good - if you do it some people will see it when needed and will not come ask same questions over and over again here
some % will still come, but hopefully some will not
some will read
regarding bigger count of utxo's idk the cost, but one knowing how to loop could send transaction of 1 pirate back and forth all day long to generate more utxo's - but this is just a marketing trick, maybe just cheaper then what ZEN doing ?
cost of z transaction is 0 ?


{% extends "includes/lists/object_list_base.html" %} {% block title %}Action Cluster list - {{ block.super }}{% endblock title %} {% block page_title %}Action Cluster{% if filter_name %}: {{ filter_name }}{% endif %}{% endblock page_title %} {% block top_panel %}
Scroll through and explore these exciting "action clusters" that are a part of the 2015 Global City Teams Challenge. The action clusters are composed of representatives from innovative local governments, nonprofit and private companies, working collaboratively over the next year, to build, deploy, and/or test transformative IoT applications. Through the online action cluster member can share resources, expertise, applications and more. If you don't see an action cluster that meets your needs, go ahead and create your own in a few simple steps. {% elif category == "partner" %}
Collaborate with leading developers of IoT technologies and accelerate the deployment of solutions designed to address some of the most pressing challenges facing cities today. {% else %}
{{description|safe}}
{% else %}Scroll through snapshots of the GCTC action clusters that are the core of the Global City Teams Challenge. Composed of representatives from local governments, non-profit organizations, academia and industry, these teams work collaboratively to build, deploy, and/or test transformative IoT applications. Action cluster project pages allow teams to share resources and expertise, identify needs, and showcase a team’s progress.
Interested in participating in the GCTC but you don't see an action cluster aligned with your interests or needs? Use this worksheet to propose a new GCTC project in a few simple steps.
You can also view the action clusters from the 2015 GCTC Challenge here.
{% endif %} {% endif %}


EPXProximityObserver
@interface EPXProximityObserver : NSObject
Observes and reports proximity of Estimote devices. Uses Estimote Monitoring under the hood. Encapsulates it under tag-based beacon identification and callback blocks.
-
Unavailable
Init is disabled for this class.
Declaration
Objective-C
- (nonnull instancetype)init;
-
Unavailable
New is disabled for this class.
Declaration
Objective-C
+ (nonnull instancetype)new;
-
Convenience initializer. Calls designated initializer with default configuration.
Declaration
Objective-C
- (nonnull instancetype) initWithCredentials:(nonnull EPXCloudCredentials *)credentials onError:(nonnull void (^)(NSError *_Nonnull))errorBlock;
Swift
init(credentials: EPXCloudCredentials, onError errorBlock: @escaping (Error) -> Void)
Parameters
credentials
Cloud Credentials object used to authorize requests sent to Estimote Cloud.
errorBlock
Block invoked whenever error occurs. The parameter is an NSError object, with domain equal to EPXProximityObserverErrorDomain and code from EPXProximityObserverError enum.
-
Designated initializer.
Declaration
Objective-C
- (nonnull instancetype) initWithCredentials:(nonnull EPXCloudCredentials *)credentials configuration: (nonnull EPXProximityObserverConfiguration *)configuration onError:(nonnull void (^)(NSError *_Nonnull))errorBlock;
Swift
init(credentials: EPXCloudCredentials, configuration: EPXProximityObserverConfiguration, onError errorBlock: @escaping (Error) -> Void)
Parameters
credentials
Cloud Credentials object used to authorize requests sent to Estimote Cloud.
configuration
Proximity observer configuration that can be used for Proximity Observer’s behaviour customization.
errorBlock
Block invoked whenever error occurs. The parameter is an NSError object, with domain equal to EPXProximityObserverErrorDomain and code from EPXProximityObserverError enum.
-
Start observing and calling callbacks on provided proximity zones:
- request device details for all user’s devices from Estimote Cloud,
- start Estimote Monitoring at registered ranges,
- call registered enter/exit/change blocks when proximity event occurs.
Subsequent calls of this method cause overwriting previously observed zones.
Declaration
Objective-C
- (void)startObservingZones:(nonnull NSArray<EPXProximityZone *> *)zones;
Swift
func startObserving(_ zones: [EPXProximityZone])
Parameters
zones
Zones to be observed.
-
Stop observing and calling callbacks for all zones that were provided with -startObservingZones:, release memory resources allocated for monitoring the zones.
Subsequent calls of this method (without re-starting observing zones) have the same effect as calling it just once.
Declaration
Objective-C
- (void)stopObservingZones;
Swift
func stopObservingZones()


BS
b r a a a h
worth
we create
the bright future
You can order the best website you`ve ever seen. Seriously.
contact us
n
e
x
t
scroll down
we provide
services
01
fast startup launch
+
02
awesome web design
+
03
breathtaking coding
+
04
up to date support
+


My account
Register a new account
Your Email
I am not a robot
reCAPTCHA
Privacy
-
Terms
A verification email will be sent to the address you provided.
Register
Login
Username
Email
Password
I am not a robot
reCAPTCHA
Privacy
-
Terms


Disney Plus has just launched in Australia and it's already cheaper than Netflix and Stan
by Sharon Masige- Disney Plus has launched in Australia and New Zealand, bringing with it more than 600 films across the Disney, Pixar, Marvel and Star Wars franchises.
- The platform also includes original series such as “The Mandalorian” – the first-ever live-action Star Wars series as well as “High School Musical: The Musical: The Series.”
- A Disney Plus subscription costs either $8.99 per month or a slightly cheaper $89.99 a year.
Disney Plus has landed Down Under.
Disney’s new streaming platform Disney Plus launched in Australia and New Zealand on Tuesday, bringing with it more than 600 films and 7,000 television episodes across Disney, Pixar, Marvel, Star Wars and National Geographic.
During the launch event in Sydney, Disney also mentioned that all 29 seasons of The Simpsons will be available on the service for the first time in Australia, AdNews reported.
A Disney Plus subscription costs either $8.99 per month or $89.99 a year. It makes it slightly cheaper than some of it’s competitors, with a basic monthly plan on Netflix costing you $9.99 and Stan coming in at $10 a month. However, Apple TV Plus costs $7.99 a mont and an Amazon Prime subscription is $6.99 a month.
With Disney Plus, you can access to a slate of Disney classics like “Beauty and the Beast”, “Peter Pan” and “The Lion King”, Marvel flicks such as “Iron Man” and Pixar favourites like “Monsters Inc.” Not to mention Disney Channel and Disney Junior shows including “The Suite Life of Zack & Cody” and “Kim Possible.”
The platform also features original series including “The Mandalorian” – the first-ever live-action Star Wars series – and the newest addition to the High School Musical franchise, “High School Musical: The Musical: The Series.”
From November 22, most new episodes of each series will premiere on Fridays at the ultra-specific time of 7.01 pm in Australia.
“The launch of Disney+ is a historic moment for our company that marks a new era of innovation and creativity,” Robert Iger, chairman and CEO of The Walt Disney Company, said in a statement.
With Disney Plus you can get up to four people streaming at the same time, unlimited downloads on up to 10 devices and the ability to set up to seven profiles. Subscribers will also get access to 4K Ultra HD films including the first seven Star Wars movies, “Hocus Pocus” and “Toy Story”.
Disney launched Disney Plus in the US earlier this month and racked up 10 million sign-ups the day after launching.
On March 31 2020, Disney+ will launch in Western Europe, including the UK, France, Germany, Italy and Spain.
Disclosure: Business Insider Australia is operated by Pedestrian Group, a subsidiary of Nine Entertainment Co. which owns Stan.


?6
7
8
9
10
The
New
York
copyright
reserved
botanical
Garden
HERBARKD
NACIONAL
DE
MXICO
(MEXU)
AristidatemipesCav.var.temipcs
J.
Snchez-Ken
1996
N
York
Botanical
Garden
IbSlbftD
Mus.
Botan.
Stockholm.
Plantū
Indiae
Occidentals
N:o
Cuba:
prov^
(HsyirCi,
it.
72T
,9Į
leg.
E.
L.
Ekman.
1659680
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Select a class, or create a new one, to get started. Visit the wiki help page for more detailed instructions.


class: center, middle, inverse, title-slide # Packages ## Week 2 --- class: center, middle # Installing packages --- ## install.packages() To use a package, it must first be *installed* to your copy of R. This only needs to happen **ONCE** per computer or server. ```r install.packages("tidyverse") ``` --- ## update.packages() If a computer you are using has the package, but you aren't sure if it's up to date: ```r update.packages("tidyverse") ``` to install the most recent version. --- class: center, middle, inverse # NEVER EVER EVER EVER PUT "install.packages" or "update.packages" INTO YOUR R MARKDOWN FILE!!!!! --- class: center, middle # Loading Packages --- # library() and require() - A package must only be *installed* once. - But it must be *loaded* every time, to tell R it is needed for this analysis. - `library` gives an **error** if the package isn't installed - `require` gives a `TRUE/FALSE` value depending on if the package was available - For now, you should always use `library` ```r library(tidyverse) # notice: no quotes around package name ``` --- class: center, middle, inverse # Three annoying complications of packages --- class: center, middle # Versions --- ## Versions - From time to time, packages get updated - This is good! - But, it can mess with your code, which depended on the older version. - Outside the scope of this class; just be aware. --- class: center, middle # Dependencies --- ## Dependencies - A *dependency* is when one package makes use of another. - For example, if you create a package that uses the function `group_by()`, your package **depends** on `dplyr` - Typically these get loaded automatically! - Occasionally, something goes weird and you need to manually install the dependency. --- class: center, middle # Conflicts --- ## Conflicts - Sometimes, packages choose the same name for their functions. This is called a *conflict*. - The version loaded first takes precedence. For example... ```r dat <- data.frame(bob = 1:10, joe = 11:20) library(MASS) library(dplyr) ``` ```r dat %>% select(bob) ``` ``` ## Error in select(., bob): unused argument (bob) ``` --- ## Conflicts ```r dat <- data.frame(bob = 1:10, joe = 11:20) library(dplyr) library(MASS) ``` ```r dat %>% select(bob) ``` ``` ## Error in select(., bob): unused argument (bob) ``` --- ## Conflicts But this is super annoying, because... ```r dat <- data.frame(bob = 1:10, joe = 11:20) library(dplyr) # dplyr loaded here library(MASS) library(dplyr) # does nothing, because it sees we already have dplyr ``` ```r dat %>% select(bob) ``` ``` ## Error in select(., bob): could not find function "select" ``` --- ## Conflicts ARG! Best solution: Be explicit about your intended package using `::`. ```r dat <- data.frame(bob = 1:10, joe = 11:20) library(dplyr) library(MASS) dat %>% dplyr::select(bob) ``` --- ## Conflicts Another solution: The `conflicted` package ```r library(conflicted) conflict_prefer("select", "dplyr") ``` ``` ## [conflicted] Will prefer dplyr::select over any other package ```


Those countries make up more than half the world’s population.
klein15-Apr-19 04:54 AM
I have a dream (Mhm) that one day (Yes) this platform will rise up and live out the true meaning of its creed(edited)
3
ComputerGenie 👴👴👴15-Apr-19 04:58 AM
........................................
polycryptoblog15-Apr-19 05:06 AM
Like I said I don’t agree with it but that’s a lot of governments stance on it.
dokrates15-Apr-19 07:31 AM
good morning komodoers
Cryptoon15-Apr-19 07:32 AM
designer15-Apr-19 07:45 AM
many investors believe that stocks that have already risen will not rise any further, and those that have not risen will naturally rise. but this is a long way from the truth. that certain shares have risen or fallen over the past few years is of no consequence in determining the current level of stock prices.


Permission constants that can be used in the permission methods, they relate a string to the bitwise permission flag.
| Permission | Value | Description |
| CREATE_INSTANT_INVITE | 0x00000001 |
Allows creation of instant invites |
| KICK_MEMBERS | 0x00000002 |
Allows kicking members |
| BAN_MEMBERS | 0x00000004 |
Allows banning members |
| ADMINISTRATOR | 0x00000008 |
Allows all permissions and bypasses channel permission overwrites |
| MANAGE_CHANNELS | 0x00000010 |
Allows management and editing of channels |
| MANAGE_GUILD | 0x00000020 |
Allows management and editing of the guild |
| ADD_REACTIONS | 0x00000040 |
Allows for the addition of reactions to messages |
| READ_MESSAGES | 0x00000400 |
Allows reading messages in a channel. The channel will not appear for users without this permission |
| SEND_MESSAGES | 0x00000800 |
Allows for sending messages in a channel. |
| SEND_TTS_MESSAGES | 0x00001000 |
Allows for sending of /tts
messages |
| MANAGE_MESSAGES | 0x00002000 |
Allows for deletion of other users messages |
| EMBED_LINKS | 0x00004000 |
Links sent by this user will be auto-embedded |
| ATTACH_FILES | 0x00008000 |
Allows for uploading images and files |
| READ_MESSAGE_HISTORY | 0x00010000 |
Allows for reading of message history |
| MENTION_EVERYONE | 0x00020000 |
Allows for using the @everyone
tag to notify all users in a channel, and the
@here tag to notify all online users in a channel
|
| USE_EXTERNAL_EMOJIS | 0x00040000 |
Allows the usage of custom emojis from other servers |
| CONNECT | 0x00100000 |
Allows for joining of a voice channel |
| SPEAK | 0x00200000 |
Allows for speaking in a voice channel |
| MUTE_MEMBERS | 0x00400000 |
Allows for muting members in a voice channel |
| DEAFEN_MEMBERS | 0x00800000 |
Allows for deafening of members in a voice channel |
| MOVE_MEMBERS | 0x01000000 |
Allows for moving of members between voice channels |
| USE_VAD | 0x02000000 |
Allows for using voice-activity-detection in a voice channel |
| CHANGE_NICKNAME | 0x04000000 |
Allows for modification of own nickname |
| MANAGE_NICKNAMES | 0x08000000 |
Allows for modification of other users nicknames |
| MANAGE_ROLES | 0x10000000 |
Allows management and editing of roles |
| MANAGE_WEBHOOKS | 0x20000000 |
Allows management and editing of webhooks |
| MANAGE_EMOJIS | 0x40000000 |
Allows management and editing of emojis |


[gecode-users] Scheduling A Propagator After Backtrack
Yunus Acikoz
yunusacikoz at gmail.com
Wed Apr 20 09:51:57 CEST 2016
Using a flag is a good idea, but without initializing the council and the
advisors, there's nothing to run the propagator if I understood correctly.
Am I right?
How about subscribing the propagator to views in the beginning and then
canceling the subscription once the advisors are initialized in the first
call of propagate()? To be honest, it doesn't sound very wise to me but
just an idea.
About the previous domain thing: I need to know which values are removed
from my integer views to use them in a labeling algorithm. That was the
only way I could think of.
Cheers,
Yunus Acikoz
On Wed, Apr 20, 2016 at 10:33 AM, Christian Schulte <cschulte at kth.se> wrote:
> Hi Yunus,
>
>
>
> The point is: you cannot schedule a propagator during copying (the system
> will crash).
>
>
>
> Copying lazily is normally an excellent idea, many Gecode propagators do
> it. One way to do it is to use a flag whether the propagator has been run.
> When you clone the propagator you set it to false and in the propagate()
> function you can check whether you have run the propagator.
>
>
>
> Would that do for you?
>
>
>
> Storing the whole previous domain sounds very excessive to me, though and
> integer sets are definitely not an efficient data structure for that
> purpose. Maybe you could also start thinking about maintaining less
> information?
>
>
>
> Hope that helps.
>
>
>
> Cheers
>
> Christian
>
>
>
> --
>
> Christian Schulte, www.gecode.org/~schulte
>
> Professor of Computer Science, KTH, cschulte at kth.se
>
> Expert Researcher, SICS, cschulte at sics.se
>
>
>
> *From:* users-bounces at gecode.org [mailto:users-bounces at gecode.org] *On
> Behalf Of *Yunus Acikoz
> *Sent:* Wednesday, April 20, 2016 09:11
> *To:* users at gecode.org
> *Subject:* [gecode-users] Scheduling A Propagator After Backtrack
>
>
>
> Hi,
>
>
>
> I would like to know if it's possible to schedule a custom propagator such
> that it is immediately propagated after backtracking. I mean something like
> executing the code below in the copy function of the propagator:
>
>
>
> auto copy_propagator = new(home)AdvisedPropagator(home, share,
> *this);
>
> Gecode::Int::IntView::schedule(home, *copy_propagator,
> Gecode::Int::ME_INT_DOM);
>
>
>
>
>
> So the newly generated copy of the propagator (without its council being
> copied) is scheduled to be run when the search engine turns back to that
> node. Does it make sense at all?
>
>
>
> I use advisors and they consume too much memory. Each advisor holds the
> previous state of the domain of its subscribed view as an IntSet, an unsigned
> short index and an enum to keep info about which variable array it
> belongs to.
>
> I want to initialize advisors lazily, so that they are only created when
> the propagator is actually used. I thought maybe I could do it in
> "propagate" function with an initial propagation.
>
>
>
> Thanks in advance,
>
> Cheers,
>
> Yunus Acikoz
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.gecode.org/pipermail/users/attachments/20160420/40c4ebe2/attachment-0001.html>
More information about the users
mailing list


Notice: This project is no longer managed
Try OverThruster
Solution for arduino HID attacks
Input Duckyscript Here:
Output ( Arduino Code/Sketch )
Want RubberDucky Scripts? CLICK HERE
This project based on ducky2arduino_stable by roothaxor
Source code and more information
HERE


HEAD
Nickname
Babier
Phone:
+1 6854 456
Date of Birth:
12th oct 1997
Gender:
Male
Language:
English
=======
Nickname
Babier
Phone:
+1 6854 456
Date of Birth:
12th oct 1997
Gender:
Male
Language:
English
>>>>>>> 5ff2803da2e9d2c09ef95732bbfb10ac6ef9b654


- I bought a flat and I'm on steroids again so I'm feeling great!
- I am still really itchy, rashy and the bloodwork is showing my body is still responding to an allergic reaction so back on steroids to help kick it. I have a call with an immunologist this week.
- After nine long months I finally got the flat I made an offer on. Dear reader, I wish it had ended there—but the seller ripped out the light fixtures leaving nothing but bare wires (violating the contract) so I'm still having to chase them. They left junk as well but lights, lights would be nice.
- I spent some time this weekend cleaning and feeling otherwise pleased that I do really like the place and it's the perfect size for projects to be fun and manageable.
- However, there was a mouse murder in the new garden over the weekend. I saw the same ginger cat twice yesterday as I cleaned. I know what you've done, buddy.
- Mu-An, who is the best, was in town again this week, what a treat!
Published on — Mon Jun 19 2023


Favorite Ice Cream Flavors
Enter your favorite Ice cream flavors!
1st Flavor:
2nd Flavor:
3rd Flavor:
4th Flavor:
Ice Cream Time!
Your favorite ice cream flavors are:


Convert ReSpec document to HTML
Generator
ReSpec
Spec URL (with optional query parameters)
Generate
Or, upload a HTML or tar file
Upload and Generate


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
Looking for a healthy microwave meal? This is a great way to eat healthy fish and get two of your five-a-day. Try making the parcels of frozen ingredients ahead of time and store in the freezer. You can cook them from frozen for a speedy weekday dinner.
Lay 4 large square sheets of greaseproof paper onto a work surface. Divide the sweet potato between the 4 sheets, piling them into the centre of the paper. Divide the leeks, beans and frozen peas between the sheets then top each with a piece of frozen pollock. Season the fish well with salt and pepper. Scatter the chives over the top and drizzle with the rapeseed oil.
Seal the fish into a parcel by folding the paper in half into a triangle, then crimp the edges together, folding the edge over itself so that it seals all the way along, so it looks a little like a Cornish pasty!
Place 2 parcels onto a microwave-safe plate. Cook in the microwave on a high setting for 10 minutes until the fish is cooked through and the parcels have expanded. Leave them to rest for 2 minutes before opening.
To check that the fish is cooked through, open one of the parcels and see if the fish is white and hot to the touch. If not, reseal and return to the microwave for another 5 minutes and check again.
Put each parcel onto a plate and open at the table, adding a squeeze of lemon juice over the fish just before serving.


| Tag | Description |
|---|---|
| <form> | Defines an HTML form for user input |
| <form> as <form method="..."> | Specifies the HTTP method to use when sending getting form-data |
| <form> as <action="URL"> | Specifies where to send the form-data when a form is submitted |
| <textarea> as <textarea cols="..."> | Defines a multi-line text input control |
| <input> | Defines an input control according to the type |
| <input> as <input type="radio"> | Defines a radio button |
| <input> as <input type="checkbox"> | Defines a checkbox |
| <input> as <input type="submit"> | Defines a text field for entering a search string |
| <input> as <input type="reset"> | Defines a reset button |
| <select> | Defines a drop-down list |