= Identify Protection Mechanisms =
The following elements should be identified and mapped according to the relevant location/group/persons in scope. This will enable correct application of the vulnerability research and exploitation to be used when performing the actual attack - thus maximizing the efficiency of the attack, and minimizing the detection ratio.


The first step is to acquire the login token. Go here, log in and copy the code given to you on the final step. Once you're done with that, return to this application.
Step two is to enter the code into this application, once you have it, enter it below. (not case sensitive)
Oops! The key is invalid. Check that you've typed it correctly, and if that doesn't worky, try getting a new token


--- layout: default title: Tao Of Documentation ---
Most developers hate having to do documentation, yet we complain about how tools and libraries we use lack documentation. So, the question is how do you get developers to write good documentation without having to feel like they are wasting their time. There are plenty of good documentation tools out there such as TomDoc, YarDoc, and RDoc. These tools are useful for creating documentation for tools, gems and varies open source projects and each one has it's unique way of making documentation easier for developers. How do you manage documentation for a product? At Engine Yard we have our AppCloud product and having good external documentation for our customers is very important to us. We want to make sure they can easily understand how to use our product and be able to accomplish what they need. However, it has been difficult to get good documentation out quickly.


--- layout: project title: Press ---
Photos
MakerGirl roadtrips across the U.S. to inspire girls
This summer, MakerGirl will embark on a roadtrip to inspire 7-10 year old girls across the country to pursue STEM (Science, Technology, Engineering, Math) fields through 3D printing sessions. During our road trip MakerGirl will be visiting small towns and large cities across the U.S. to encourage young girls to become active participants and leaders in STEM fields.
MakerGirl was created in the October of 2014 to combat the problem of gender inequality in STEM fields. Since its inception, MakerGirl has held more than 70 sessions and taught more than 525 girls in Champaign, Chicago, and Southern Illinois.
MakerGirl strives to reduce the gender gap in STEM fields and create a world in which girls live and dream as unstoppable forces that say yes to the challenges of the future. MakerGirl’s 3D printing sessions teach girls about different STEM related topics, encourage girls to build anything they envision, and provide girls with female role models and mentors. In just 90 minutes, MakerGirls are introduced to the exciting world of STEM and shown what they can accomplish in that field. Each MakerGirl leaves the sessions with a sense of purpose and confidence as well as a 3D printed object that she herself conceptualized and designed.
“As a graduate of the University of Illinois College of Business, and mother of two daughters, I am excited to see this program grow. My girls thoroughly enjoy the MakerGirl sessions. In addition to providing project based learning in the STEM areas, this program promotes female leaders and entrepreneurs. This program plants seeds that will create the next generation of change!” --Kelly Duitsman Loschen, MakerGirl Mom & CPA
“We have two little girls that have an itch for knowledge and the need to create; to be able to scratch that itch through a STEM program surrounded by other girls who have the same itch is wonderful. We are thankful to the MakersGirl program for opening their minds and allowing them to dream about the future.” --Kevin Hambly, MakerGirl Dad & Head UIUC Women’s Volleyball Coach
By travelling across the country, MakerGirl will widen its continuously-growing impact and influence girls in areas that may not have as much access to STEM-inspired learning opportunities.
For more information on MakerGirl, visit makergirl.us.


KIDS IN THE HALL: BRAIN CANDY A film review by Christopher Null Copyright 1996 Christopher Null
Well, what have we here? Let me say first-off that I'm a *huge* Kids in the Hall fan. This review is necessarily going to be tainted by the fact that I've probably seen 300 hours of Kids in the Hall on TV...and by my impression going into the film that, hey, another 1 1/2 hours wouldn't kill me.
If you aren't familiar with the comedy troupe, the Kids are five guys (Bruce McCulloch, Kevin McDonald, Mark McKinney, Scott Thompson, and Dave Foley) who have appeared in 110 episodes of some of the funniest sketch comedy television has offered up in recent years. After ending the series in July 1994, talk of a movie immediately began. Two years later, the end result is here.
What the Kids have brought us with BRAIN CANDY is a 90 minute skit about a drug company and its hapless employees who invent the penultimate "happy pill," GleeMonex. The only problem, they later discover, is that those that take the pill commonly become comatose due to the ecstasy caused by it...which isn't such a happy result after all.
Plotline aside, the real question on everyone's mind is, "Is it any good?" Well...yes and no. The Kids have brought back some 40 of our favorite characters from the show (and some new ones), and their performances as Canada's most ridiculous citizens are perfectly done. The problem, and it's quite a big one, is that the GleeMonex storyline gets old--fast, although it has a certain charm and does serve to tie the whole movie together. In the end, the plot is little more than an arbitrary way of getting to the funny bits of the script, which rarely have anything to do with the BRAIN CANDY in question.
Good characters in a crummy story don't make for particularly good time, but there are plenty of laughs to be had by all scattered throughout the film. You're probably better off just watching three episodes of the TV show at home, but for die-hard fans, the movie will probably carry at least some appeal. Just don't take any pills from strangers.
(Special note: *Yes!* Paul Bellini (the guy in the towel) does appear in one scene.)
RATING: ***
\-------------------------------\ |* Unquestionably awful | |** Sub-par on many levels | |*** Average, hits and misses | |**** Good, memorable film | |***** Perfection | \-------------------------------\
-Christopher Null /<EMAIL_ADDRESS>-Screenwriter / Novelist / Publisher -Visit the Movie Emporium at http://cca2.carrington.com/emporium/ -and e-mail requests to join the movie review mailing list
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


Filter by
Private room
Any
Yes
No
Femaly only
Yes
No
Breakfast
Yes
Included
No
Perks
Own bathroom
TV
Free WiFi
Air Conditioned
Free cancellation
Available Rooms
I will reserve


This is a Django Page with a Bokeh App embedded
{% block content %} {{server_script|safe}} {% endblock %}


desire
: check agent's desires.drop_desire
: remove one agent's desire.drop_all_desires
: remove agent's desires.intend
: check agent's intentions.drop_intention
: remove one agent's intention.drop_all_intentions
: remove agent's intentions.current_intention
: get a description of the
current intention.drop_event
: remove one event.drop_all_events
: remove events in the interpreter.succeed_goal
: abort some goal with success.fail_goal
: abort some goal with failure.suspend
: suspend intentions.suspended
: check agent's suspended goals.resume
: resume suspended intentions.abolish
: remove some beliefs.findall
: find a list of beliefs of some kind.setof
: find a set of beliefs of some kind.count
: count the number of beliefs of some kind.namespace
: checks whether an argument is a name space.relevant_rules
: get a list of rules.list_rules
: print out the rules in the current belief base.add_plan
: add new plans.remove_plan
: remove a plan.plan_label
: get the label of a plan.relevant_plans
: get a list of plans.list_plans
: print out the plans in the current plan library.send
: send messages. broadcast
: broadcast messages.my_name
: get the agent's name.all_names
: get the names of all agents in the system.df_register
: register a service in the Directory Facilitator.df_deregister
: removes a service in the Directory Facilitator.df_search
: search for a service in the Directory Facilitator.df_subscribe
: subscribe for new providers of a service in the Directory Facilitator.member
: list members. length
: size of lists. empty
: check whether the list is empty. concat
: concat lists. delete
: delete members of a lists. reverse
: reverse lists. shuffle
: shuffle the elements of a list. nth
: nth element of a lists. max
: maximum value of a lists. min
: minimum value of a lists. sort
: sort lists. list
: check whether an argument is a list.suffix
: suffixes of a list. prefix
: prefixes of a list. sublist
: sublists of a list. difference
: difference of sets. intersection
: intersection of sets. union
: union of sets. length
: size of strings. concat
: append strings. delete
: delete characters of a string. reverse
: reverse strings. substring
: test substrings of strings. string
: check whether an argument is a string.term2string
: convert terms to strings and vice-versa.lower_case
: lower case strings.upper_case
: upper case strings.atom
: check whether an argument is an atom (p).structure
: check whether an argument is a structure (p(t1,t2), [a,b]).literal
: check whether an argument is a literal (p(t1,t2), ~p(t1,t2), p(t1,t2)[a1,a2]).list
: check whether an argument is a list ([a,b]).ground
: check whether an argument is ground.number
: check whether an argument is a number (1, 2.3).string
: check whether an argument is a string ("s").ground
: check whether an argument is ground.add_nested_source
: add a source in a literal.eval
: evaluates a logical expression.at
: add a future event.wait
: wait some event.create_agent
: create a new agent.save_agent
: store the beliefs and plans into a file.create_agent
: create a new agent.kill_agent
: kill an agent.clone
: clone an agent.stopMAS
: stop all agents.date
: get the current date.time
: get the current time.fail
: an action that always fails.perceive
: force perception.range
: backtrack values in a range (used in for).random
: produces random numbers.include
: imports a source code at run time.printf
: formated print.| Class | Description |
|---|---|
| abolish |
Internal action:
.abolish . |
| add_annot |
Internal action:
.add_annot . |
| add_nested_source |
Internal action:
.add_nested_source . |
| add_plan |
Internal action:
.add_plan . |
| all_names |
Internal action:
.all_names . |
| asserta |
Internal action:
.asserta . |
| assertz |
Internal action:
.assertz . |
| at |
Internal action:
.at . |
| atom |
Internal action:
.atom . |
| broadcast |
Internal action:
.broadcast . |
| clone | |
| concat |
Internal action:
.concat . |
| copy_term | |
| count |
Internal action:
.count . |
| create_agent |
Internal action:
.create_agent . |
| current_intention |
Internal action:
.current_intention . |
| date |
Internal action:
.date(YY,MM,DD) . |
| delete |
Internal action:
.delete . |
| desire |
Internal action:
.desire(D) . |
| df_deregister |
Internal action:
.df_deregister(S [,T]) . |
| df_register |
Internal action:
.df_register(S [,T]) . |
| df_search |
Internal action:
.df_search(S [,T] , L) . |
| df_subscribe |
Internal action:
.df_subscribe(S [,T]) . |
| difference |
Internal action:
.difference(S1,S2,S3) . |
| drop_all_desires |
Internal action:
.drop_all_desires . |
| drop_all_events |
Internal action:
.drop_all_events . |
| drop_all_intentions |
Internal action:
.drop_all_intentions . |
| drop_desire |
Internal action:
.drop_desire(D) . |
| drop_event |
Internal action:
.drop_event(D) . |
| drop_future_intention |
Internal action:
.drop_future_intention(I) . |
| drop_intention |
Internal action:
.drop_intention(I) . |
| empty |
Internal action:
.empty . |
| eval |
Internal action:
.eval(Var,Logical Expression) . |
| fail |
Internal action:
.fail . |
| fail_goal |
Internal action:
.fail_goal(G) . |
| findall |
Internal action:
.findall(Var,Literal,List) . |
| foreach |
Implementation of for.
|
| fork |
Implementation of .fort (used for |& and || operators).
|
| ground |
Internal action:
.ground . |
| if_then_else |
Implementation of if.
|
| include |
Internal action:
.include . |
| intend |
Internal action:
.intend(G, [ I ] ) . |
| intersection |
Internal action:
.intersection(S1,S2,S3) . |
| join |
injected by .fork
|
| kill_agent |
Internal action:
.kill_agent . |
| length |
Internal action:
.length . |
| list |
Internal action:
.list . |
| list_plans |
Internal action:
.list_plans . |
| list_rules |
Internal action:
.list_rules . |
| literal |
Internal action:
.literal . |
| loop |
Implementation of while.
|
| lower_case |
Internal action:
.lower_case(S1,S2) . |
| max |
Internal action:
.max . |
| member |
Internal action:
.member(T,L) . |
| min |
Internal action:
.min . |
| my_name |
Internal action:
.my_name . |
| namespace | |
| nth |
Internal action:
.nth . |
| number |
Internal action:
.number . |
| perceive |
Internal action:
.perceive . |
| plan_label |
Internal action:
.plan_label(P,L) . |
| prefix |
Internal action:
.prefix(P,L) . |
|
Internal action:
.print . |
|
| printf |
Internal action:
.printf(format, args...) . |
| println |
Internal action:
.println . |
| puts |
Internal action:
.puts . |
| random |
Internal action:
.random(N) . |
| range |
Internal action:
.range(Var,Start,End, Step) . |
| relevant_plans |
Internal action:
.relevant_plans . |
| relevant_rules |
Internal action:
.relevant_rules . |
| remove_plan |
Internal action:
.remove_plan . |
| rename_apart |
replace the variable by unused named, to avoid clash.
|
| resume |
Internal action:
.resume(G) . |
| reverse |
Internal action:
.reverse . |
| save_agent |
Internal action:
.save_agent . |
| send |
Internal action:
.send . |
| setof | |
| shuffle |
Internal action:
.shuffle(List,Result) . |
| sort |
Internal action:
.sort . |
| stopMAS |
Internal action:
.stopMAS . |
| string |
Internal action:
.string . |
| structure |
Internal action:
.structure . |
| sublist |
Internal action:
.sublist(S,L) . |
| substring |
Internal action:
.substring . |
| succeed_goal |
Internal action:
.succeed_goal(G) . |
| suffix |
Internal action:
.suffix(S,L) . |
| suspend |
Internal action:
.suspend(G) . |
| suspended |
Internal action:
.suspended(G, R) . |
| term2string |
Internal action:
.term2string(T,S) . |
| time |
Internal action:
.time(HH,MM,SS) . |
| union |
Internal action:
.union(S1,S2,S3) . |
| upper_case |
Internal action:
.upper_case(S1,S2) . |
| wait |
Internal action:
.wait(E,T) . |
| Enum | Description |
|---|---|
| desire.Step |


Who won last night's ITV debate between Boris Johnson and Jeremy Corbyn?
Debate viewers believed Boris Johnson was more prime ministerial and likeable while Jeremy Corbyn appeared more trustworthy and in touch with ordinary people, a poll suggests.
YouGov’s snap survey suggested 51% of Britons believed Mr Johnson won the first leaders’ debate of the General Election compared with 49% for Mr Corbyn.
Those who answered ‘don’t know’ were removed from the result.
Further questioning showed 45% regarded Labour’s Mr Corbyn was more trustworthy compared with 40% for the Prime Minister.
On who came across as more likeable, 54% said Mr Johnson and 37% Mr Corbyn.
Asked who came across as more in touch with ordinary people, 25% said Mr Johnson and 59% answered Mr Corbyn.
On the issue of who came across as more prime ministerial, 54% said Mr Johnson and 29% Mr Corbyn.
Advertisement Advertisement
The PM was judged to have performed better on Brexit (63%-27%) and Mr Corbyn won on the NHS (54%-38%).
A total of 60% said it was right to have just two party leaders involved in the debate, 30% would have preferred more, 9% did not mind either way and 1% answered ‘don’t know’.
YouGov said 1,646 people were surveyed for the poll.
Their best and worst moments
Jeremy Corbyn
Best
The applause was loud when Mr Corbyn criticised the Tories for putting the NHS under ‘incredible pressure’ and called for an end to privatisation and for proper funding.
He also evoked a powerful image when he discussed his friend, the campaigner Jayne Rae, who died from breast cancer days after describing being left in ‘extreme pain’ in hospital without treatment for hours.
Perhaps his wittiest response was when the PM accused him of wanting to form a ‘chaotic coalition’ with the SNP and, in a reference to the Conservative-Lib Dem government, Mr Corbyn replied: ‘We’ve witnessed nine years of chaotic coalition already.’
Worst
Mr Corbyn was under pressure over his stance on Brexit and whether there would be a further referendum on Scottish independence if Labour came to power.
When pressed by the PM, Mr Corbyn could not rule out another IndyRef if he became prime minister and could only say it would not come in the ‘early years’.
And, after declining to say whether he would campaign for any new Brexit deal he might broker with Brussels, Mr Corbyn was met with laughter when he said: ‘I’ve made the position clear.’
Advertisement Advertisement
Boris Johnson
Best
The Conservative leader repeatedly asked Mr Corbyn whether he would campaign for Leave or Remain in his proposed second referendum.
But Mr Corbyn repeatedly sidestepped the question, playing into Mr Johnson’s hand as he sought to suggest that Labour’s policy on Brexit is unclear.
Conservative cabinet ministers seized on the moment, with Michael Gove saying: ‘There was open laughter at Jeremy Corbyn’s failure to answer the questions on Brexit. People want Brexit done, they want an end to the paralysis.’
Worst
Questions about the Prime Minister’s private life – and his use of disputed figures – have prompted questions about whether he is a trustworthy character.
Audience members laughed when Mr Johnson answered a question about trust and personal integrity during the debate – and there were further chuckles when he said the truth matters in the election.
He brought yet more laughter when he asked voters instead to ‘look at what I’ve said I’m going to do as a politician and look at what I’ve delivered’.
#
Got a story for Metro.co.uk?
Get in touch with our news team by emailing us at<EMAIL_ADDRESS>For more stories like this, check our news page.


Basscss is organized according to four high-level categories: base elements, immutable utilities, layout modules, and color styles.


Press the 'Start Word' button to start an instance of a Word application, and register a handler to the Quit event.
Close the Word application to see the Quit event handler in action.
Press the 'Start Excel' button to start an Excel Application instance, and register a handler to the WorkbookAfterSave event.
Save the Excel workbook to see the WorkbookAfterSave event handler
Note: Quitting Excel from the UI will not release it from memory; you have to kill it using Task Manager.
Press F12 to see the Firebug Lite console, and the results of ActiveXObject.set


R/AllGenerics.R
, R/evaluateK.R
evaluateK.Rd
Evaluate the optimal number of knots required for fitGAM.
Evaluate an appropriate number of knots.
evaluateK(counts, ...) # S4 method for matrix evaluateK( counts, k = 3:10, nGenes = 500, sds = NULL, pseudotime = NULL, cellWeights = NULL, plot = TRUE, U = NULL, weights = NULL, offset = NULL, aicDiff = 2, verbose = TRUE, control = mgcv::gam.control(), sce = FALSE, family = "nb", ... )
| counts | The count matrix, genes in rows and cells in columns. |
|---|---|
| ... | parameters including: |
| k | The range of knots to evaluate. `3:10` by default. |
| nGenes | The number of genes to use in the evaluation. Genes will be randomly selected. 500 by default. |
| sds | Slingshot object containing the lineages. |
| pseudotime | a matrix of pseudotime values, each row represents a cell and each column represents a lineage. |
| cellWeights | a matrix of cell weights defining the probability that a cell belongs to a particular lineage. Each row represents a cell and each column represents a lineage. |
| plot | Whether to display diagnostic plots. Default to |
| U | The design matrix of fixed effects. The design matrix should not contain an intercept to ensure identifiability. |
| weights | Optional: a matrix of weights with identical dimensions
as the |
| offset | Optional: the offset, on log-scale. If NULL, TMM is used to
account for differences in sequencing depth, see |
| aicDiff | Used for selecting genes with significantly varying AIC values over the range of evaluated knots to make the barplot output. Default is set to 2, meaning that only genes whose AIC range is larger than 2 will be used to check for the optimal number of knots through the barplot visualization that is part of the output of this function. |
| verbose | logical, should progress be verbose? |
| control | Control object for GAM fitting, see |
| sce | Logical, should a |
| family | The distribution assumed, currently only |
A plot of average AIC value over the range of selected knots, and a matrix of AIC values for the selected genes (rows) and the range of knots (columns).
## This is an artifical example, please check the vignette for a realistic one. set.seed(8) data(sds, package="tradeSeq") loadings <- matrix(runif(2000*2,-2,2), nrow=2, ncol=2000) counts <- round(abs(t(slingshot::reducedDim(sds) %*% loadings)))+100 aicK <- evaluateK(counts = counts, sds=sds, nGenes=100, k=3:5, verbose=FALSE)


|
Class Summary |
| POCombinerPackage |
The package operator that packages the globally rearranged tuples into
output format after the combiner stage. |
| PODemux |
The MapReduce Demultiplexer operator. |
| PODistinct |
Find the distinct set of tuples in a bag. |
| POFilter |
This is an implementation of the Filter operator. |
| POForEach |
|
| POFRJoin |
The operator models the join keys using the Local Rearrange operators which
are configured with the plan specified by the user. |
| POGlobalRearrange |
Dummy operator to test MRCompiler. |
| POJoinPackage |
|
| POLimit |
|
| POLoad |
The load operator which is used in two ways:
1) As a local operator it can be used to load files
2) In the Map Reduce setting, it is used to create jobs
from MapReduce operators which keep the loads and
stores in the Map and Reduce Plans till the job is created |
| POLocalRearrange |
The local rearrange operator is a part of the co-group
implementation. |
| POLocalRearrangeForIllustrate |
The local rearrange operator is a part of the co-group
implementation. |
| POMultiQueryPackage |
The package operator that packages the globally rearranged tuples
into output format as required by multi-query de-multiplexer. |
| POOptimizedForEach |
A specialized version of POForeach with the difference
that in getNext(), it knows that "input" has already been
attached by its input operator which SHOULD be POJoinPackage |
| POPackage |
The package operator that packages
the globally rearranged tuples into
output format as required by co-group. |
| POPackageLite |
This package operator is a specialization
of POPackage operator used for the specific
case of the order by query. |
| POPreCombinerLocalRearrange |
A specialized local rearrange operator which behaves
like the regular local rearrange in the getNext()
as far as getting its input and constructing the
"key" out of the input. |
| PORead |
This operator is used to read tuples from a databag in memory. |
| POSort |
This implementation is applicable for both the physical plan and for the
local backend, as the conversion of physical to mapreduce would see the SORT
operator and take necessary steps to convert it to a quantile and a sort job. |
| POSplit |
The MapReduce Split operator. |
| POStore |
The store operator which is used in two ways:
1) As a local operator it can be used to store files
2) In the Map Reduce setting, it is used to create jobs
from MapReduce operators which keep the loads and
stores in the Map and Reduce Plans till the job is created |
| POStoreImpl |
This class is used to specify the actual behavior of the store
operator just when ready to start execution. |
| POStream |
|
| POUnion |
The union operator that combines the two inputs into a single
stream. |


|
Yorick Function ReferenceIndex Range FunctionsRange functions are executed from left to right if more than one appears in a single index list. The following range functions reduce the rank of the result, like a scalar index: min minimum of values along index
The following functions do not change the rank of the result, like an index range. However, the length of the index is changed as indicated by +1, -1, or 0 (no change): cum, psum +1, 0, partial sums of values along index
For example, given a two-dimensional array x, x(min,max) returns the largest of the smallest elements along the first dimension. To get the smallest of the largest elements along the second dimension, use x(,max)(min). |


Non Destructive Testing Facility - NDT inspection using the magnetic particle, X-ray, fluorescent penetrant ,Ultrasonic & Eddy current inspection as well calibration of measuring Instruments, gauges etc.
Hydraulic Tubing/Hoses - Repair, Fabrication and Testing of Hydraulic and Oxygen pipes and hoses as per manufacturer's specification. We carry out 'perm swaging and in-situ repair' of tubes to reduce ground time of your aircraft.


resource odbc_tables ( resource $connection_id [, string $qualifier [, string $owner [, string $name [, string $types ]]]] )
Lists all tables in the requested range. To support enumeration of qualifiers, owners, and table types, the following special semantics for the qualifier, owner, name, and table_type are available: If qualifier is a single percent character (%) and owner and name are empty strings, then the result set contains a list of valid qualifiers for the data source. (All columns except the TABLE_QUALIFIER column contain NULLs.) If owner is a single percent character (%) and qualifier and name are empty strings, then the result set contains a list of valid owners for the data source. (All columns except the TABLE_OWNER column contain NULLs.) If table_type is a single percent character (%) and qualifier, owner and name are empty strings, then the result set contains a list of valid table types for the data source. (All columns except the TABLE_TYPE column contain NULLs.)
Returns an ODBC result identifier containing the information or FALSE on failure. The result set has the following columns: TABLE_QUALIFIER TABLE_OWNER TABLE_NAME TABLE_TYPE REMARKS The result set is ordered by TABLE_TYPE, TABLE_QUALIFIER, TABLE_OWNER and TABLE_NAME.


Here you can download a pdf version of my cv. The next sections will bring some more details on certain key points.
I have done most of my study at the Technical University of Compiegne (2010-2015), a French top ranking engineering institution. I have obtained my Master from the civil engineering department, but I equaly shared my time with the electrical department. Here is a transcript.
The most influent lecture I had during my Master were « Renewable energy conversion and management » « Power electronics » « Electrical machines » and « Urban management ».
The design of a small scale wind turbine controller has been one of my biggest academic project. Over a year I spent a semester focused on numerical simulation, and a second semester on practical testing. Here is a short report on my work. This work has involved MATLAB/Simulink programming but also a dSpace board to monitor results on a motor bench (representing the wind turbine).
Through my work at the UTC I obtained recommandation letters, here are the latest: Fabrice Locment and Manuela Sechilariu, Phillipe Sergent and Vincent Lanfranchi.
I have also spent a semester of study abroad in Riga (Latvia). Here is a transcript of my semester.
At the Lawrence Berkeley National Laboratory my work has been focused on V2G-Sim and MyGreenCar (described in my « Portfolio » section).
I have started to work at the LBNL as a Master student for a 6-months internship (short report). Since Septembre 2015 I am an employee at the LBNL hired as a research assistant by Samveg Saxena.
In November 2015 the V2G-Sim project won an R&D100 Award.
At the CEREMA (Centre For Studies and Expertise on Risks, Environment, Mobility, and Urban and Country planning) I studied the best emplacement to harvest wave’s energy at the shore in Audierne’s bay. The project involved the use of SWASH to provide a general basis for describing wave transformations from deep water to a beach, port or harbour. The study (final report in French) also includes a cost analysis for different devices.
EMACOP project: characterising the wave energy resources of hot spots in Brittany for on-shore WEC The European Wave and Tidal Energy Conference (2015 EWTEC)
EMACOP project : Digital modelling of the waves toward Esquibien’s dam using SWASH Available in the online journal Paralia. Presented at The National days of Coastal Engineering and Civil Engineering (2014 congress)


Orchestrating Secrets
By the end of this exercise, you should be able to:
- Declare secrets in Swarm and Kubernetes
- Provision secrets to a swarm service or Kubernetes deployment
- Configure environment variables and application logic to consume secrets in either orchestrator
Prerequisites
- A Swarm with at least one node (
docker swarm init
on any node with Docker installed will do if you don't already have a swarm running). - A Kubernetes cluster with at least one master and one worker (see the Kubernetes Basics demo in this book for setup instructions).
Creating Secrets
Create a new secret named
my-secret
with the valueabc1234
by using the following command to pipe STDIN to the secret value:PS: node-0 Administrator> echo 'abc1234' | docker secret create my-secret -
Note this won't work on a node that isn't a swarm manager, since secrets get registered in swarm's state database.
Alternatively, secret values can be read from a file. In the current directory create a file called
password.txt
and add the valuemy-pass
to it. Create a secret with this value:PS: node-0 Administrator> docker secret create password ./password.txt
Managing Secrets
The Docker CLI provides API objects for managing secrets similar to all other Docker assets:
List your current secrets:
PS: node-0 Administrator> docker secret ls
Print secret metadata:
PS: node-0 Administrator> docker secret inspect password
Delete a secret:
PS: node-0 Administrator> docker secret rm my-secret
Using Secrets
Secrets are assigned to Swarm services upon creation of the service, and provisioned to containers for that service as they spin up.
Create a service authorized to use the
password
secret:PS: node-0 Administrator> docker service create ` --name demo ` --secret password ` microsoft/nanoserver ping <IP_ADDRESS> -t
Use
docker service ps demo
to determine what node your service container is running on; connect to that node, and connect to the container (remember to usedocker container ls
to find the container ID):PS: node-x Administrator> docker container exec -it <container ID> powershell
Inspect the secrets in this container where they are mounted by default, at
/run/secrets
:PS C:\> cd C:\ProgramData\Docker\secrets PS C:\ProgramData\Docker\secrets> ls PS C:\ProgramData\Docker\secrets> cat password PS C:\ProgramData\Docker\secrets> exit
This is the only place secret values sit unencrypted in memory.
Preparing an image for use of secrets
Containers need to consume secrets from their mountpoint, either C:\ProgramData\Docker\secrets
by default, or a custom mount point if defined. In many cases, existing application logic expects secret values to appear behind environment variables; in the following, we set up such a situation as an example.
Create a new directory
image-secrets
onnode-0
and navigate to this folder. In this folder create a file namedapp.py
and add the following content; this is a Python script that consumes a password from a file with a path specified by the environment variablePASSWORD_FILE
:import os print('***** Docker Secrets ******') print('USERNAME: {0}'.format(os.environ['USERNAME'])) fname = os.environ['PASSWORD_FILE'] with open(fname) as f: content = f.readlines() print('PASSWORD_FILE: {0}'.format(fname)) print('PASSWORD: {0}'.format(content[0]))
Create a file called
Dockerfile
with the following content:FROM training/python-windows:3.6.1-nano RUN mkdir -p /app WORKDIR /app COPY . /app CMD python ./app.py; sleep 100000
Build the image and push it to a registry so it's available to all nodes in your swarm:
PS: node-0 image-secrets> docker image build -t <Docker ID>/secrets-demo:1.0 . PS: node-0 image-secrets> docker image push <Docker ID>/secrets-demo:1.0
Create and run a service using this image, and use the
-e
flag to create environment variables that point to your secrets:PS: node-0 image-secrets> docker service create ` --name secrets-demo ` --replicas=1 ` --secret source=password,target=custom\path\password ` -e USERNAME="jdoe" ` -e PASSWORD_FILE="C:\ProgramData\Docker\secrets\custom\path\password" ` <Docker ID>/secrets-demo:1.0
The
--secret
flag parses a few tokens:source
indicates the name of the secret (defined when you diddocker secret create...
)target
indicates the path that the secret file will be mounted at relative toC:\ProgramData\Docker\secrets
; in this case the secret will be available in a fileC:\ProgramData\Docker\secretscustom\path\password
.
Figure out which node your container is running on, head over there, connect to the container, and run
python app.py
; the-e
flag inservice create
has set environment variables to point at your secrets, allowing your app to find them where it expects.
Kubernetes Secrets
Secrets in Kubernetes are manipulated very similarly to Swarm; one interesting difference is the ability to package multiple values or files into the same secret. Below we reproduce the final example from the Swarm section above, but we'll pass in both the username and password in separate files contained in a single Kubernetes secret, rather than passing the username in directly as an environment variable.
First we'll need a linux-appropriate version of your
secrets-demo
image you made for Windows above. In a directorykube-secret
onkube-0
, make a Dockerfile with the following content:FROM python:2.7 RUN mkdir -p /app WORKDIR /app COPY . /app CMD python ./app.py && sleep 1000
Also, make a file
app.py
in the same directory containing:import os print '***** Docker Secrets ******' print 'USERNAME: {0}'.format(os.environ['USERNAME']) fname = os.environ['PASSWORD_FILE'] f = open(fname) try: content = f.readlines() finally: f.close() print 'PASSWORD_FILE: {0}'.format(fname) print 'PASSWORD: {0}'.format(content[0])
Build and push this image:
[centos@kube-0 kube-secret]$ docker image build \ -t <Docker ID>/secrets-demo:linux-1.0 . [centos@kube-0 kube-secret]$ docker image push <Docker ID>/secrets-demo:linux-1.0
Place a username and password in files
username
andpassword
:[centos@kube-0 kube-secret]$ echo "jdoe" > username [centos@kube-0 kube-secret]$ echo "my-pass" > password
Create a secret that captures both these files:
[centos@kube-0 kube-secret]$ kubectl create secret generic user-pass \ --from-file=./username --from-file=./password
The
generic
keyword here indicates we're going to create the secret from a local file;user-pass
will be the name of the secret we can refer to later; and the--from-file
keys list the files we want to include in this secret.Create a pod definition in a file
secretpod.yaml
that uses this secret to map the username file contents directly onto an environment variable, and mount the password file in the container with a second environment variable pointing at its path:apiVersion: v1 kind: Pod metadata: name: secretpod spec: containers: - name: democon image: <Docker ID>/secrets-demo:linux-1.0 env: - name: USERNAME valueFrom: secretKeyRef: name: user-pass key: username - name: PASSWORD_FILE value: "/custom/path/pass" volumeMounts: - name: passvol mountPath: "/custom/path" readOnly: true volumes: - name: passvol secret: secretName: user-pass items: - key: password path: pass restartPolicy: Never
Spin the pod up, connect a bash shell to it, check that the environment variables are populated as you'd expect and that the python script works correctly:
[centos@kube-0 kube-secret]$ kubectl create -f secretpod.yaml [centos@kube-0 kube-secret]$ kubectl exec -it secretpod bash root@secretpod:/app# echo $USERNAME root@secretpod:/app# echo $PASSWORD_FILE root@secretpod:/app# python app.py
Look in
/custom/path
inside your running container, and notice that onlypassword
is present, mounted aspass
.username
wasn't mentioned in theitems
list for for theuser-pass
secret, and so wasn't mounted in the corresponding volume. In this way you can pick and choose which files from a single secret are mounted into a running container.Compare the config in
secretpod.yaml
to the lastdocker service create...
command in the last section. Identify the corresponding pieces of syntax between the Swarm and Kubernetes declarations. Where are environment variables declared? How are secrets associated with the service or pod? How do you point an environment variable at a secret mounted in a file?
Conclusion
In this exercise we have learned how to create, inspect and use secrets in both Swarm and Kubernetes. As is often the case, Swarm's syntax is a bit shorter and simpler, but Kubernetes offers more flexibility and expressiveness, allowing the user to package multiple tokens in a single secret object, and selectively mount them in only the containers that need them.


Mum's clever Nectar hack gets her £108 worth of kids clothes for £8
Neat trick could help you save plenty of money ahead of Christmas
by Emma Munbodh, Danny ThompsonNew research shows it can cost over £75,436 to raise a child up to the age of 18.
With this in mind, families are having to think outside of the box to make the most of their budget and try and save money where possible - and one mum has revealed how using her Nectar card to clothe her children can help save a ton of cash.
Earlier this month, Nicola Shakespeare brought nearly £108 worth of kids' clothes for just £7.70 at Sainsbury's thanks to a handy Nectar trick .
The 33-year-old mum made the most of a double-up offer, picking up a load of bargains in the process, reports The Mirror.
"I’d been notified about the Nectar offer on email and then forgot about it, but saw it on social media and thought 'I really need to do this before I lose the chance to'," the thrifty mum told The Sun .
Nicola, from Porchester in Hampshire, lives with partner Daniel, 41 and their young family.
She recently posted photos of her haul in the Extreme Couponing and Bargains UK Facebook group .
It included kids' pyjamas, trousers, socks, and school dresses for her two kids and Daniel's two children - three girls and one boy between the ages two and 12 years old.
Speaking of the trove, which was 26 items all together, she said: "I was quite lucky, because I caught the end of the sale so a lot of stuff was half-price already.
"It was all the silly bits that you forget about when you’re doing the Christmas shopping - pyjamas, socks, pants - that was on sale."
The mum, who works as a finance manager, said many of the items used as Christmas gifts - putting a huge dent in her annual festive spending, she explained: "The things I bought in the offer were on my list to get for Christmas anyway."
She also bagged a pair Dumbo pyjamas for herself, and a fluffy dinosaur outfit and a grey knitted set for a friend's baby shower.
"The Dumbo pyjamas is a little Christmas treat for myself, the shopping and all the wrapping I've done," Nicola added.
She revealed she is not necessarily a bargain hunter, but is just savvy when it comes to collecting reward points.
Nicola buys nappies and wet wipes for her two-year-old at Boots, -racking up almost £200 worth of points this year. She also fills up her car tank at Tesco or Sainsbury's to gain extra points earning her a free Merlin pass every year, meaning the school holidays are cheaper and more fun when they come around.
She said: "I’ve got loyalty cards for pretty much everywhere.
"I just keep the points and whenever something like this comes through, it's like a little bonus.
"You get rewarded just for doing your food shopping."
The Nectar Double Up scheme allows you to swap 1,000 (normally worth £5) to 10,000 points (normally worth £50) for a voucher worth twice the value.
You can exchange up to 10,000 points per Nectar card account, which means you could turn £50 worth of vouchers into £100.


ABOUT US
We're an open book!
Home
About
Pet-Friendly Venues
Shops
Cafes
Pubs/Bars
Restaurants
Contact
Sign Up
Login
Harley
(insert bio)
Stephanie Thomas
(insert bio)
Devamsha Gunput
(insert bio)
Previous
Next


{% load static %}
{% verbatim %}
{% endverbatim %}
{% include "glados/Handlebars/CardSources.html" %}
{% include "glados/Handlebars/TableSources.html" %}
{% include "glados/Handlebars/ReportCards/ReportCardTemplates.html" %}
{% include "glados/Handlebars/PreloaderSources.html" %}
{% include "glados/Handlebars/ErrorSources.html" %}
{% include "glados/Handlebars/EmbeddingSources.html" %}
{% include "glados/Handlebars/SketcherSources.html" %}
{% include "glados/Handlebars/BrowserSources.html" %}
{% include "glados/Handlebars/BreadcrumbSources.html" %}
{% include "glados/Handlebars/MainPage/MainPageSources.html" %}
{% include "glados/Handlebars/SearchResults/SearchResultsSources.html" %}
{% include "glados/Handlebars/SubstructureSearchResults/SubstructureSearchResultsSources.html" %}
{% include "glados/Handlebars/Browsers/BrowserSources.html" %}
{% include "glados/Handlebars/CroppedContainers.html" %}
{% include "glados/Handlebars/SequenceSearch/SequenceSearchSources.html" %}
{% include "glados/Handlebars/SharePage/SharePageSources.html" %}


Hello, world this is an update!!
This is another header!!!
This is some text
This is another heading, this is an update!
blah blah blah
This is some more text aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Click me!
Click me!
Click me!
Click me!


kevin tran
I'm a SoCal based UX Designer who's currently streamlining the e-commerce experience @ iHerb.
RESUME ⤻
LINKEDIN ⤻
CONTACT ⤻


Use the above textbox to submit a URL to render a KML Map layer from. A few examples:
http://coinatlantic.ca/kmlfiles/EnvironmentCanadaAtlantic/ECHydrometricNL.kml - Envirnoment Canada Realtime Hydroelectric
http://www.austindarts.org/darts.kml - Darts locations in Austin Texas
http://www.ourairports.com/countries/CA/NT/airports.kml - Northwest Territories Airports
Relevant sections of the Google Maps API: Bicycling,
KML,
Traffic,
Transit


I am Abishek VAradarajan, Hard-working professional with 5+ years of experience and proven knowledge of systems acquisition, system implementation and business analysis. Aiming to leverage my skills to successfully fill the Data Analyst/ ERP Implementation role at your company.
Currently looking for Full-Time positions as a Data Analyst.
I like to visit new places, listen to variety of music.
● Worked for customers including Ali Mousa & Sons Holding, Sharjah Asset Management, ADC Energy Systems,Trojan Holding, Eagle Contracting, GBH International Contracting
● ERP Implementation (Full suite) – Modules consisting of Finance and accounting, Procurement, Sales, HR & Payroll, Inventory, Asset Management, Property Management, Project Management, Production, Maintenance, Poultry system
● Performed gap and requirement analysis for enhancing the business processes
● Discussed and prepared Solution Design Document (SDD)
● Developed and tested user interfaces and bug fixes
● Configured the system based on client requirements
● Analyzed and Preprocessed data using Microsoft Excel
● Performed ETL operations to upload data into SQL database
● Consolidated master data and uploaded into database
● Programmed database queries and procedures
● Conducted end user training
● Managed project and tracked compliance with client requirements on daily basis
● Consulted and troubleshooted issues in ERP system implementation
● Provided post-implementation support for the ERP system
● Managing website content and design optimization for the Department of Psychology
● Creating web forms for student profiling and evaluation
● Maintaining master data of student, faculty, and alumni information
● Retrieving student information from data warehouse and creating reports using Microsoft Excel
● Used a custom Data Quality Toolkit and R to analyze and perform data cleaning steps on medical records
● Preprocessed data using R and Excel for performing analysis to predict the length of stay at hospitals for patients with various attributes like age, location, income, etc.
● Performed Model Selection methods like Forward Stepwise Selection, Backward Stepwise Selection, Ridge Regression and LASSO(Least Absolute Shrinkage and Selection Operator) for selecting the best set of variables to perform prediction on
● Explored several statistical learning methods like Linear Regression, Multiple Linear Regression, Logistic Regression, K-Nearest Neighbours, Linear Discriminant Analysis and Resampling methods to create a model for predicting the length of stay of patients
● Collected data election and census from Census.gov and kaggle
● Used ArcGIS to open shapefiles containing area type(Rural/Urban, Zip Code, Districts and States)
● Combined all available data together to form a dataset for analysis and prediction
● Pre-processed the data to perform analysis for prediction purposes
● Used Python to visualize various factors of the dataset to find patterns of gerrymandering
● Used Python to build regression models to predict if gerrymandering could occur in a state
● Utilized Oracle to design the architecture for user and listing registration data
● Developed and implemented Oracle PL/SQL Procedures for features like user authentication, listing creation and maintenance, search and filters, reservation, booking and cancellation, payment, invoice generation, review and reports
● Debugged and troubleshooted SQL code with breakpoints


Dynamic Pricing Table
WebDesignCrowd
Back to Article
- $100
- +3 Years Managed Hosting
- +Unlimited Domains
- +2 Year Warranty
- +Unlimited Service and Maintenance
- +Drag and Drop Designer
- +5 Ready Made Templates
- +Advanced Statistics
- +Custom CSS Options
- +Basic Statistics


|
ActiveTcl User Guide
|
||
Tcl_DetachPids, Tcl_ReapDetachedProcs, Tcl_WaitPid - manage child processes in background
#include <tcl.h>
Tcl_DetachPids(numPids, pidPtr)
Tcl_ReapDetachedProcs()
Tcl_Pid
Tcl_WaitPid(pid, statPtr, options)
Tcl_DetachPids and Tcl_ReapDetachedProcs provide a mechanism for managing subprocesses that are running in background. These procedures are needed because the parent of a process must eventually invoke the waitpid kernel call (or one of a few other similar kernel calls) to wait for the child to exit. Until the parent waits for the child, the child's state cannot be completely reclaimed by the system. If a parent continually creates children and doesn't wait on them, the system's process table will eventually overflow, even if all the children have exited.
Tcl_DetachPids may be called to ask Tcl to take responsibility for one or more processes whose process ids are contained in the pidPtr array passed as argument. The caller presumably has started these processes running in background and doesn't want to have to deal with them again.
Tcl_ReapDetachedProcs invokes the waitpid kernel call on each of the background processes so that its state can be cleaned up if it has exited. If the process hasn't exited yet, Tcl_ReapDetachedProcs doesn't wait for it to exit; it will check again the next time it is invoked. Tcl automatically calls Tcl_ReapDetachedProcs each time the exec command is executed, so in most cases it isn't necessary for any code outside of Tcl to invoke Tcl_ReapDetachedProcs. However, if you call Tcl_DetachPids in situations where the exec command may never get executed, you may wish to call Tcl_ReapDetachedProcs from time to time so that background processes can be cleaned up.
Tcl_WaitPid is a thin wrapper around the facilities provided by the operating system to wait on the end of a spawned process and to check a whether spawned process is still running. It is used by Tcl_ReapDetachedProcs and the channel system to portably access the operating system.
background, child, detach, process, wait
Copyright © 1989-1993 The Regents of the University of California. Copyright © 1994-1996 Sun Microsystems, Inc. Copyright © 1995-1997 Roger E. Critchlow Jr.


In a Data Warehouse environment, very old data needs to be eliminated periodically for storage purposes. The key challenges in such a scenario include :
Detach, in case of Range Partitioned tables enables a specific range of data to be quickly and easily detached.
This tutorial demonstrates benefits of detach over delete operation thus highlighting the advantages of range partitioning in providing an easy way to detach a data partition. A graph comparing the time taken for delete vs detach is generated.


If compiling from a release source tarball you need a recent version of the GCC compiler (g++ version >= 4.7) and other essential tools for compilation (GNU make, ar, etc. Install build-essential on Debian or Ubuntu derivatives). Additional requirements are needed to compile the SWIG script bindings. See the SWIG installation guide.
To compile and install:
./configure --prefix=/path/to/installation make make install
If --prefix is omitted, the software is installed in /usr/local. One may need sudo make install if installing in a system location.
The MUMmer4.x package requires the following to run successfully. In the absence of one or more of these utilities, certain MUMmer programs may fail to run correctly. In parenthesis the minimum version. These utilities must be accessible via the system path:
In the "MUMmer4.x" base directory type:
make uninstall


Vector Autoregressions tsa.vector_ar
¶
VAR(p) processes¶
We are interested in modeling a multivariate time series , where denotes the number of observations and the number of variables. One way of estimating relationships between the time series and their lagged values is the vector autoregression process:
where is a coefficient matrix.
We follow in large part the methods and notation of Lutkepohl (2005), which we will not develop here.
Model fitting¶
Note
The classes referenced below are accessible via the
statsmodels.tsa.api
module.
To estimate a VAR model, one must first create the model using an ndarray of homogeneous or structured dtype. When using a structured or record array, the class will use the passed variable names. Otherwise they can be passed explicitly:
# some example data
>>> import pandas
>>> mdata = sm.datasets.macrodata.load_pandas().data
# prepare the dates index
>>> dates = mdata[['year', 'quarter']].astype(int).astype(str)
>>> quarterly = dates["year"] + "Q" + dates["quarter"]
>>> from statsmodels.tsa.base.datetools import dates_from_str
>>> quarterly = dates_from_str(quarterly)
>>> mdata = mdata[['realgdp','realcons','realinv']]
>>> mdata.index = pandas.DatetimeIndex(quarterly)
>>> data = np.log(mdata).diff().dropna()
# make a VAR model
>>> model = VAR(data)
Note
The VAR
class assumes that the passed time series are
stationary. Non-stationary or trending data can often be transformed to be
stationary by first-differencing or some other method. For direct analysis of
non-stationary time series, a standard stable VAR(p) model is not
appropriate.
To actually do the estimation, call the fit method with the desired lag order. Or you can have the model select a lag order based on a standard information criterion (see below):
>>> results = model.fit(2)
>>> results.summary()
Summary of Regression Results
==================================
Model: VAR
Method: OLS
Date: Fri, 08, Jul, 2011
Time: 11:30:22
--------------------------------------------------------------------
No. of Equations: 3.00000 BIC: -27.5830
Nobs: 200.000 HQIC: -27.7892
Log likelihood: 1962.57 FPE: 7.42129e-13
AIC: -27.9293 Det(Omega_mle): 6.69358e-13
--------------------------------------------------------------------
Results for equation realgdp
==============================================================================
coefficient std. error t-stat prob
------------------------------------------------------------------------------
const 0.001527 0.001119 1.365 0.174
L1.realgdp -0.279435 0.169663 -1.647 0.101
L1.realcons 0.675016 0.131285 5.142 0.000
L1.realinv 0.033219 0.026194 1.268 0.206
L2.realgdp 0.008221 0.173522 0.047 0.962
L2.realcons 0.290458 0.145904 1.991 0.048
L2.realinv -0.007321 0.025786 -0.284 0.777
==============================================================================
Results for equation realcons
==============================================================================
coefficient std. error t-stat prob
------------------------------------------------------------------------------
const 0.005460 0.000969 5.634 0.000
L1.realgdp -0.100468 0.146924 -0.684 0.495
L1.realcons 0.268640 0.113690 2.363 0.019
L1.realinv 0.025739 0.022683 1.135 0.258
L2.realgdp -0.123174 0.150267 -0.820 0.413
L2.realcons 0.232499 0.126350 1.840 0.067
L2.realinv 0.023504 0.022330 1.053 0.294
==============================================================================
Results for equation realinv
==============================================================================
coefficient std. error t-stat prob
------------------------------------------------------------------------------
const -0.023903 0.005863 -4.077 0.000
L1.realgdp -1.970974 0.888892 -2.217 0.028
L1.realcons 4.414162 0.687825 6.418 0.000
L1.realinv 0.225479 0.137234 1.643 0.102
L2.realgdp 0.380786 0.909114 0.419 0.676
L2.realcons 0.800281 0.764416 1.047 0.296
L2.realinv -0.124079 0.135098 -0.918 0.360
==============================================================================
Correlation matrix of residuals
realgdp realcons realinv
realgdp 1.000000 0.603316 0.750722
realcons 0.603316 1.000000 0.131951
realinv 0.750722 0.131951 1.000000
Several ways to visualize the data using matplotlib are available.
Plotting input time series:
>>> results.plot()
(Source code, png, hires.png, pdf)
Plotting time series autocorrelation function:
>>> results.plot_acorr()
(Source code, png, hires.png, pdf)
Lag order selection¶
Choice of lag order can be a difficult problem. Standard analysis employs
likelihood test or information criteria-based order selection. We have
implemented the latter, accessable through the VAR
class:
>>> model.select_order(15)
VAR Order Selection
======================================================
aic bic fpe hqic
------------------------------------------------------
0 -27.70 -27.65 9.358e-13 -27.68
1 -28.02 -27.82* 6.745e-13 -27.94*
2 -28.03 -27.66 6.732e-13 -27.88
3 -28.04* -27.52 6.651e-13* -27.83
4 -28.03 -27.36 6.681e-13 -27.76
5 -28.02 -27.19 6.773e-13 -27.69
6 -27.97 -26.98 7.147e-13 -27.57
7 -27.93 -26.79 7.446e-13 -27.47
8 -27.94 -26.64 7.407e-13 -27.41
9 -27.96 -26.50 7.280e-13 -27.37
10 -27.91 -26.30 7.629e-13 -27.26
11 -27.86 -26.09 8.076e-13 -27.14
12 -27.83 -25.91 8.316e-13 -27.05
13 -27.80 -25.73 8.594e-13 -26.96
14 -27.80 -25.57 8.627e-13 -26.90
15 -27.81 -25.43 8.599e-13 -26.85
======================================================
* Minimum
{'aic': 3, 'bic': 1, 'fpe': 3, 'hqic': 1}
When calling the fit function, one can pass a maximum number of lags and the order criterion to use for order selection:
>>> results = model.fit(maxlags=15, ic='aic')
Forecasting¶
The linear predictor is the optimal h-step ahead forecast in terms of mean-squared error:
We can use the forecast function to produce this forecast. Note that we have to specify the “initial value” for the forecast:
>>> lag_order = results.k_ar
>>> results.forecast(data.values[-lag_order:], 5)
array([[ 0.00616044, 0.00500006, 0.00916198],
[ 0.00427559, 0.00344836, -0.00238478],
[ 0.00416634, 0.0070728 , -0.01193629],
[ 0.00557873, 0.00642784, 0.00147152],
[ 0.00626431, 0.00666715, 0.00379567]])
The forecast_interval function will produce the above forecast along with asymptotic standard errors. These can be visualized using the plot_forecast function:
(Source code, png, hires.png, pdf)
Impulse Response Analysis¶
Impulse responses are of interest in econometric studies: they are the estimated responses to a unit impulse in one of the variables. They are computed in practice using the MA() representation of the VAR(p) process:
We can perform an impulse response analysis by calling the irf function on a VARResults object:
>>> irf = results.irf(10)
These can be visualized using the plot function, in either orthogonalized or non-orthogonalized form. Asymptotic standard errors are plotted by default at the 95% significance level, which can be modified by the user.
Note
Orthogonalization is done using the Cholesky decomposition of the estimated error covariance matrix and hence interpretations may change depending on variable ordering.
>>> irf.plot(orth=False)
(Source code, png, hires.png, pdf)
Note the plot function is flexible and can plot only variables of interest if so desired:
>>> irf.plot(impulse='realgdp')
The cumulative effects can be plotted with the long run effects as follows:
>>> irf.plot_cum_effects(orth=False)
(Source code, png, hires.png, pdf)
Forecast Error Variance Decomposition (FEVD)¶
Forecast errors of component j on k in an i-step ahead forecast can be decomposed using the orthogonalized impulse responses :
These are computed via the fevd function up through a total number of steps ahead:
>>> fevd = results.fevd(5)
>>> fevd.summary()
FEVD for realgdp
realgdp realcons realinv
0 1.000000 0.000000 0.000000
1 0.864889 0.129253 0.005858
2 0.816725 0.177898 0.005378
3 0.793647 0.197590 0.008763
4 0.777279 0.208127 0.014594
FEVD for realcons
realgdp realcons realinv
0 0.359877 0.640123 0.000000
1 0.358767 0.635420 0.005813
2 0.348044 0.645138 0.006817
3 0.319913 0.653609 0.026478
4 0.317407 0.652180 0.030414
FEVD for realinv
realgdp realcons realinv
0 0.577021 0.152783 0.270196
1 0.488158 0.293622 0.218220
2 0.478727 0.314398 0.206874
3 0.477182 0.315564 0.207254
4 0.466741 0.324135 0.209124
They can also be visualized through the returned FEVD
object:
>>> results.fevd(20).plot()
(Source code, png, hires.png, pdf)
Statistical tests¶
A number of different methods are provided to carry out hypothesis tests about the model results and also the validity of the model assumptions (normality, whiteness / “iid-ness” of errors, etc.).
Granger causality¶
One is often interested in whether a variable or group of variables is “causal”
for another variable, for some definition of “causal”. In the context of VAR
models, one can say that a set of variables are Granger-causal within one of the
VAR equations. We will not detail the mathematics or definition of Granger
causality, but leave it to the reader. The VARResults
object has the
test_causality method for performing either a Wald () test or an
F-test.
>>> results.test_causality('realgdp', ['realinv', 'realcons'], kind='f')
Granger causality f-test
=============================================================
Test statistic Critical Value p-value df
-------------------------------------------------------------
6.999888 2.114554 0.000 (6, 567)
=============================================================
H_0: ['realinv', 'realcons'] do not Granger-cause realgdp
Conclusion: reject H_0 at 5.00% significance level
[88]:
{'conclusion': 'reject',
'crit_value': 2.1145543864562706,
'df': (6, 567),
'pvalue': 3.3805963773886478e-07,
'signif': 0.05,
'statistic': 6.9998875522543473}
Normality¶
Whiteness of residuals¶
Dynamic Vector Autoregressions¶
Note
To use this functionality, pandas must be installed. See the pandas documentation for more information on the below data structures.
One is often interested in estimating a moving-window regression on time series data for the purposes of making forecasts throughout the data sample. For example, we may wish to produce the series of 2-step-ahead forecasts produced by a VAR(p) model estimated at each point in time.
>>> data
<class 'pandas.core.frame.DataFrame'>
Index: 500 entries , 2000-01-03 00:00:00 to 2001-11-30 00:00:00
A 500 non-null values
B 500 non-null values
C 500 non-null values
D 500 non-null values
>>> var = DynamicVAR(data, lag_order=2, window_type='expanding')
The estimated coefficients for the dynamic model are returned as a
pandas.WidePanel
object, which can allow you to easily examine, for
example, all of the model coefficients by equation or by date:
>>> var.coefs
<class 'pandas.core.panel.WidePanel'>
Dimensions: 9 (items) x 489 (major) x 4 (minor)
Items: L1.A to intercept
Major axis: 2000-01-18 00:00:00 to 2001-11-30 00:00:00
Minor axis: A to D
# all estimated coefficients for equation A
>>> var.coefs.minor_xs('A').info()
Index: 489 entries , 2000-01-18 00:00:00 to 2001-11-30 00:00:00
Data columns:
L1.A 489 non-null values
L1.B 489 non-null values
L1.C 489 non-null values
L1.D 489 non-null values
L2.A 489 non-null values
L2.B 489 non-null values
L2.C 489 non-null values
L2.D 489 non-null values
intercept 489 non-null values
dtype: float64(9)
# coefficients on 11/30/2001
>>> var.coefs.major_xs(datetime(2001, 11, 30)).T
A B C D
L1.A 0.9567 -0.07389 0.0588 -0.02848
L1.B -0.00839 0.9757 -0.004945 0.005938
L1.C -0.01824 0.1214 0.8875 0.01431
L1.D 0.09964 0.02951 0.05275 1.037
L2.A 0.02481 0.07542 -0.04409 0.06073
L2.B 0.006359 0.01413 0.02667 0.004795
L2.C 0.02207 -0.1087 0.08282 -0.01921
L2.D -0.08795 -0.04297 -0.06505 -0.06814
intercept 0.07778 -0.283 -0.1009 -0.6426
Dynamic forecasts for a given number of steps ahead can be produced using the
forecast function and return a pandas.DataMatrix
object:
>>> In [76]: var.forecast(2)
A B C D
<snip>
2001-11-23 00:00:00 -6.661 43.18 33.43 -23.71
2001-11-26 00:00:00 -5.942 43.58 34.04 -22.13
2001-11-27 00:00:00 -6.666 43.64 33.99 -22.85
2001-11-28 00:00:00 -6.521 44.2 35.34 -24.29
2001-11-29 00:00:00 -6.432 43.92 34.85 -26.68
2001-11-30 00:00:00 -5.445 41.98 34.87 -25.94
The forecasts can be visualized using plot_forecast:
>>> var.plot_forecast(2)
Class Reference¶
var_model.VAR (endog[, dates, freq, missing]) |
Fit VAR(p) process and do lag order selection |
var_model.VARProcess (coefs, intercept, sigma_u) |
Class represents a known VAR(p) process |
var_model.VARResults (endog, endog_lagged, ...) |
Estimate VAR(p) process with fixed number of lags |
irf.IRAnalysis (model[, P, periods, order, svar]) |
Impulse response analysis class. |
var_model.FEVD (model[, P, periods]) |
Compute and plot Forecast error variance decomposition and asymptotic |
dynamic.DynamicVAR (data[, lag_order, ...]) |
Estimates time-varying vector autoregression (VAR(p)) using |


The recent advances in unraveling the secrets of human conditions and diseases have encouraged new
paradigms for their prevention, diagnosis, and treatment. As information is increasing at an
unprecedented rate, it directly impacts the design and future development of information and data
management pipelines; thus, new ways of processing data, information, and knowledge in healthcare
environments are strongly needed.
The fourth edition of the workshop aims to continue being a meeting point for Information Systems
(IS), Conceptual Modeling (CM), and Data Management (DM) researchers working on health care and life
science problems. It is also an opportunity to share, discuss and find new approaches to improve
promising fields, with a special focus on Genomic Data Management – how to use the information
from
the genome to better understand biological and clinical features – and Precision Medicine – giving
to each patient an individualized treatment by understanding the peculiar aspects of the disease.
From the precise ontological characterization of the components involved in complex biological
systems to the modeling of the operational processes and decision support methods used in the
diagnosis and prevention of diseases, the joined research communities of IS, CM, and DM have an
important role to play; they must help in providing feasible solutions for high-quality and
efficient health care.
The COVID-19 pandemic and the recent climate disruption have attracted increasing attention to the
effects of pathogens and environmental change on human health. CMLS aims to become a forum for
discussing the responsibility of the conceptual modeling community in supporting the life sciences
related to these new realities.
The fourth edition of the workshop focuses on Conceptual Modeling as a means for facing the challenges that emerge when designing and developing systems for life sciences, focused on genomics and precision medicine. The workshop is not restricted to specific research methods; we will consider both conceptual and empirical research, as well as novel applications.
The topics of interest include, but are not limited to:
We invite submissions of high quality papers describing original and unpublished results
regarding
any of the workshop’s topics of interest.
CMLS 2023 proceedings will be part of the ER 2023
Workshop volume published by Springer in the LNCS series.
The authors must submit manuscripts using the Springer-Verlag LNCS style for Lecture Notes in
Computer Science.
For style files and details, see the page https://www.springer.com/gp/computer-science/lncs/conference-proceedings-guidelines.
The page limit for workshop papers is 10 pages.
Papers must be submitted as PDF files using EasyChair at https://easychair.org/my/conference?conf=er2023,
choosing the track 'Workshop on Conceptual Modeling for Life Sciences'.
To ensure high quality, all papers will be thoroughly peer reviewed by the Program Committee.
Manuscripts not submitted in the LNCS style or having more than 10 pages will not be reviewed
and
thus automatically rejected.
The papers need to be original and not submitted or accepted for publication in any other
workshop,
conference, or journal.
Submission to CMLS 2023 will be electronically only.
Anna Bernasconi is a Research Fellow in the Department of Electronics, Information, and Bioengineering also at Politecnico di Milano. Her research focuses on conceptual modeling, data integration, semantic web, and biological data analysis. Since the COVID-19 pandemic, her research has moved to viral genomics, by building models, databases, and Web search systems for viral sequences and their variants. She co-organized and chaired the first three International Workshops on Conceptual Modeling for Life Sciences (CMLS 2020 / 2021 / 2022) co-located with the ER conference and co-organized the First International Workshop on Web Applications for Life Sciences (WALS 2022) co-located with the ICWE conference.
Arif Canakoglu currently works as a data scientist at Policlinico di Milano; and he works mainly on the electronic health record of the intensive care unit's patients in the Lombardy region. He is leading the research with the support of the medical group, analyzing the life quality of the patients after the hospital discharge. Previously, he was involved in the "Data-driven Genomic Computing" ERC Awarded project (2016-2021), where he contributed to developing integration of heterogeneous genomic data and for developing computational methods for genomic applications. In 2016, he received his PhD on biomolecular knowledge data integration by using the modular schema data warehouse. His research interests include data integration and data driven genomic computing, big data analysis and processing on cloud computing, artificial intelligence applications. His main areas of expertise are heterogeneous data integration and data driven models and machine learning approaches in genomic, and big data processes, especially on cloud computing.
Alberto García S. obtained his Ph.D. cum laude at Universitat Politecnica de Valencia under the supervision of Prof. Oscar Pastor. He is currently a researcher at the VRAIN research institute, where he focuses on conceptual modeling, data science, and User Interface design. He has participated in multiple research projects in collaboration with clinicians and geneticists to generate knowledge from genomics data effectively and efficiently.
José F. Reyes R. is a researcher at PROS Research Center at Universitat Politècnica de València (Spain). He holds a Ph.D. in Computer Sciences (2018) from Universitat Politècnica de València (UPV, Spain), a MSc in Software Engineering, Formal Methods and Information Systems (2013) from UPV (Spain), a Diplomate of Analysts and Systems Designers (2011) and a University Degree in System Engineering (2010) from Universidad Central del Este (Dominican Republic). Currently, his main research activities are centered on the use of Conceptual Models for the development of Genomic Information Systems (GeIS). His main research interests include Conceptual Modeling, Genomic Data Science, Engineering Requirements, SE and Information Systems.


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Serves 4
Lardo is pork fat cured with herbs and spices; it can be found in good Italian delicatessens. Here, it melts beautifully on top of the fish, adding an extra layer of flavour.
Sprinkle the pollock with a little sea salt, wrap in cling film then place in the fridge for two hours.
Preheat the oven to 190C/375F/Gas 5. Rinse the fish and pat dry with kitchen then cut into four portions and place onto an ovenproof dish lined with a piece of buttered greaseproof paper.
Place the shallots, peppercorns and thyme into a saucepan with the white wine and the vinegar and simmer over a medium heat until reduced down to a glaze.
Add the double cream and bring to the boil then reduce the heat and gradually whisk in 150g/5oz of the butter. Season with salt and freshly ground black pepper, pass through a sieve and keep warm.
Place a knob of butter onto each of the portions of pollock then place in the oven for three minutes.
Baste the fish with the melted butter and then return to the oven for another 3-4 minutes or until just cooked.
While the fish is cooking, wilt the radishes down a frying pan with a little butter and sea salt then set them aside and keep warm.
Heat a frying pan until hot, add the remaining butter, the girolles and the water and cook until the mushrooms are softened.
When the fish is cooked, spoon the butter sauce onto warmed serving plates, add the radishes and place the fish on top. Add the girolles and then place a couple of slices of lardo on top of the fish. Garnish with the borage flowers and serve immediately.


Alaskan city sees heat and snowfall records in single day
ANCHORAGE, Alaska (AP) - Alaskans have experienced both a record high temperature and a record amount of snowfall in the same day.
The Anchorage Daily News reports the Municipality of Anchorage saw snowfall of more than a foot Saturday after tying a temperature record set in 1967.
The National Weather Service says the city tied the high-temperature record by reaching 45 degrees Fahrenheit (7.2 Celsius) around 3 a.m.
The weather service says southeast winds blew warm air into the city before the winds subsided, temperatures dropped and snow fell.
Snow levels at the weather service's office broke the 1958 record of 8.3 inches (21 centimeters) by 1/10th of an inch.
Officials say the snow varied from 5 inches (13 centimeters) in the city to more than 12 inches (30 centimeters) in nearby Eagle River.
___
Information from: Anchorage Daily News, http://www.adn.com
Copyright 2019 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.


I first put together a version of this in fall 2019, wasn’t really happy with it, and didn’t share it. In early 2021, I came back to it and made some revisions, and I think it might be useful. Without further ado…
I’ve been poking around for good general-purpose, Arabic-script web fonts to use for a few projects. One obvious place to look is Google Fonts. So I went to their site and selected Arabic. Ok, wow… that narrows things down from 1,000+ fonts to 21. (Update: This number continues to grow, albeit gradually.) It shouldn’t be too difficult to determine which of those might work for my purposes.
And what are my purposes/requirements? Again, I’m looking for a general-use font, which would be suitable for entire paragraphs of text. Anything overly stylized or clearly intended for “display” is not going to work. With this criterion, I can eliminate the following 11 options at the outset: Almarai, Cairo, Changa, El Messiri, Jomhuria, Kufam, Lalezar, Lemonada, Rakkas, Reem Kufi, and Vibes (wtf?). Some of these are quite attractive typefaces in their own way—I would highlight El Messiri, Lalezar, and Reem Kufi—but they don’t fit my current use case.
So we’re already down to ten. A few more can be cut for particular reasons. Mada doesn’t look quite right to me. The letters join with little gaps (intentionally), which are reminiscent of a rendering problem. Harmattan was designed for West African languages, and thus fills an important niche. Finally, there’s Katibeh, which has certain embellishments — referred to in the description as “small serif-like outstrokes” — which seem to me to create an unwelcome distraction. As always, de gustibus non est disputandum.
This leaves us with seven options. Two of them, Aref Ruqaa and Tajawal, could have been excluded on stylistic grounds. But I wanted to give a chance to a couple of less conventional fonts, and these look nice to me.
Our seven finalists are as follows (in alphabetical order): Amiri, Aref Ruqaa, Lateef, Markazi Text, Mirza, Scheherazade, and Tajawal.
Now let’s introduce some further desiderata. I need a font that works in both Arabic and Persian. (This usually is not a problem. Persian has a few extra letters that are close variants of Arabic forms.) Light to moderate use of diacritics should not break anything. (This often is a problem.) And I’m looking for versatility and readability. The typeface should be elegant, without drawing too much attention, across different kinds of text.
For testing purposes, we can load the seven fonts, fill some boxes with sample text in Arabic and Persian, and set up a selector to compare the appearance of that text from one font to another. We ought to have a sense of what our alternatives might be, so the samples will initially be displayed in a browser/system default font (“serif”; this would be the worst case). There is a further option to try the “native stack” used in Bootstrap. (My guess is that other popular CSS frameworks take similar approaches.) I’ll follow up below with my conclusions.
Why am I doing this, by the way? Apart from wanting to identify fonts suitable for use in my work, I think that improvement in the general condition of Arabic-script typography on the web (as well as on our devices) will require knowledgeable users to give a damn. The current status quo is unrecognizably better than what I saw ten or fifteen years ago, but there’s still work to be done.
Quintessential Arabic ligatures (see the notes):
بسم الله الرحمن الرحيم
الحمد لله رب العالمين
A paragraph of Arabic prose, with light use of diacritics (source):
قال كليلة: زعموا أنَّ قردًا رأى نجَّارًا يشقُّ خشبة على وتدين راكبًا عليها كالأسوار على الفرس، وكُلَّما شقَّ منها ذراعًا أدخل فيها وتدًا، وأنَّ النجَّار قام لبعض شأنه، فانطلق القرد يتكلَّف من ذلك ما ليس من صناعته، فركب الخشبة ووجهه قِبَل ذلك الوتد، وتدلَّت خُصيتاه في الشقِّ، فلمَّا نزع الوتد انضمَّت الخشبة على خُصيتيه، فخرَّ مغشيًّا عليه، وجاء النجَّار فكان ما لقي منه من الضرب أشدَّ ممَّا مرَّ به أضعافًا كثيرة.
A paragraph of Persian prose (source):
مالداری را شنیدم که به بخل چنان معروف بود که حاتم طایی در کرم. ظاهر حالش به نعمت دنیا آراسته و خست نفس جبلی در وی همچنان متمکن تا به جایی که نانی به جانی از دست ندادی و گربهٔ بوهریره را به لقمهای ننواختی و سگ اصحاب الکهف را استخوانی نینداختی. فیالجمله خانهٔ او را کس ندیدی درگشاده و سفرهٔ او را سرگشاده. شنیدم که به دریای مغرب اندر راه مصر برگرفته بود و خیال فرعونی در سر «حَتَّىٰ إِذَا أَدْرَکَهُ الْغَرَقُ» بادی مخالف کشتی برآمد.
A few lines of Arabic poetry, with moderate use of diacritics (source):
لا تَبْكِ ليلى ولا تطْرَبْ إلى هندِ
واشْرَبْ على الوَرْدِ من حمراءَ كالوَرْدِ
كأسًا إذا انحدَرَتْ في حلْقِ شاربِها
أجْدَتْهُ حُمْرَتَها في العينِ والخدِّ
فالخَمرُ ياقوتةٌ والكأسُ لُؤْلُؤةٌ
من كَفِّ جارِيَةٍ مَمشوقَةِ القَدِّ
A few lines of Persian poetry (source):
تا نسوزد عود در مجمر ندارد آدمی
تا نگرید آب در گوهر ندارد آدمی
تا نپیچد سر ز دنیا سر ندارد آدمی
تا نریزد برگ از خود بر ندارد آدمی
تا نگردد استخوانش توتیا از بار درد
جانِ روشنْ دیدهٔ انور ندارد آدمی
A few verses from the Qur’an, with heavy use of diacritics (source):
قَالَتْ إِنِّي أَعُوذُ بِالرَّحْمَٰنِ مِنْكَ إِنْ كُنْتَ تَقِيًّا قَالَ إِنَّمَا أَنَا رَسُولُ رَبِّكِ لِأَهَبَ لَكِ غُلَامًا زَكِيًّا قَالَتْ أَنَّىٰ يَكُونُ لِي غُلَامٌ وَلَمْ يَمْسَسْنِي بَشَرٌ وَلَمْ أَكُ بَغِيًّا قَالَ كَذَٰلِكِ قَالَ رَبُّكِ هُوَ عَلَيَّ هَيِّنٌ وَلِنَجْعَلَهُ آيَةً لِّلنَّاسِ وَرَحْمَةً مِّنَّا وَكَانَ أَمْرًا مَّقْضِيًّا
Tl;dr: None of these fonts is bad. (The less desirable ones were excluded already.) Some did better than others. I would say that Lateef, Markazi Text, Mirza, and Scheherazade basically passed all of the tests. (Update: See below for discussion of odd behavior in Markazi Text.) While I have comments on each of those four, they passed. Amiri is stylistically superior, but it has frustrating problems with diacritic placement. Aref Ruqaa can’t overcome the limitations of a handwriting font — though I don’t fault the designer. It’s nice for what it is. Tajawal is surprisingly delightful, but it shits the bed whenever a Persian letter occurs. (Come on; this would be so easy to fix!) After years in the top spot, Scheherazade is still probably my favorite. But Markazi Text is, on a technical level, the most impressive Arabic-script web font that I’ve encountered. Assuming you like the style, you could use it just about anywhere.
Now let’s comment on the candidates one at a time…
Amiri: This is, of course, a beautiful typeface, and I have a lot of respect for the developers behind the project. It’s an open-source and (if I’m not mistaken) ongoing effort. What I like most about Amiri is the versatility that it has by virtue of its timeless design. As for the version available through Google Fonts — last updated in April 2020 — there are a few rough edges. The biggest problem is in the placement of diacritics. They seem to be set at the same height relative to the line, regardless of the letter to which they’re attached. In effect, the designers have made sure that all diacritics go high or low enough not to collide with any letter forms. This leads to two problems. First, it looks odd when a diacritic is floating in space, far from the associated letter. (See, for example, the final hemistich in our snippet of Persian poetry.) Second, and perhaps more seriously, diacritics can bump into text in the previous or (less often) the subsequent line. One kind of collision has been avoided at the cost of another. There are ways of dealing with this. The letter forms could be made smaller overall, relative to line height, in order to leave more empty vertical space. (With Scheherazade and Lateef, this approach is taken to an extreme.) In more modern Arabic type designs, you’ll usually see that the variation in letter height is reduced; namely, tall letters like alif and lām don’t extend too much higher than the short letters. This makes life easier. It probably isn’t an option for Amiri, given the historical inspiration, but who knows — just a touch of vertical compression might make a difference. What would seem to be the key optimization, however, would be to get diacritics closer to the letters. (See Markazi Text for a good example of this.)
Aref Ruqaa: What can I say? I found this typeface æsthetically pleasing when I first saw it, and I still do. It proved somewhat more resilient than I expected. But at the end of the day, this is a kind of handwriting font, and there are going to be places where its logic is outfoxed and it produces strange, unnatural orthography. The worst problems occur where certain letters (sīn and shīn are big offenders) are found in long connected segments. These strings of letters are set to start from above and slope downward, ending at line level. It can be a nice effect, and reminiscent of real handwriting, when just a few letters are involved. But certain combinations lead to bizarre results. (See, for example, the third verse of four in the passage from the Qur’an.) If you’ve ever tried a nasta‘līq typeface, this issue will be familiar to you. Anyway, I’m sure that Aref Ruqaa has its place, and I’d like to see further development in Arabic-script handwriting fonts.
Lateef: This is an old standby from SIL. I always viewed it as the similar but slightly inferior cousin of Scheherazade. (See also my comments on the latter.) The stroke is heavier. My understanding is that it doesn’t have as many glyphs. (What’s with the empty circle in place of the standard marker for the end of a qur’anic verse?) You know, Lateef is fine; I just don’t use it.
Markazi Text: This is a newer
font — a
variable font, at that! — from Borna Izadpanah. I could say a
lot about it, but I’ll limit myself here to four points. First,
Markazi Text is well designed. It does everything you could
reasonably ask of it, and then some. Second, make sure that you
set the HTML lang
attribute to
"ar"
wherever you use this font. Otherwise you
might encounter problems with diacritics. (In particular, I saw
that adding a shaddah plus a short vowel to a
letter — not an uncommon
scenario — resulted in a
break in continuity.)
Markazi Text is the only font I tested that has such sensitivity
to the lang
attribute, and I don’t know why.
(Update 1: Even with correct settings, I see
weird behavior involving diacritics in Safari. Now I worry
there’s something amiss with the font.
Update 2: As of late 2021, it seems the issue
is fixed in Safari. It’s great to see this much progress!)
Third, the style may not be for everyone. I think it’s a bit
unpleasant how the final tooth of sīn or
shīn reverses the slant so decisively (and only in the
initial or medial position?). But artists have license, no one
is forcing me to use this, I should make my own font if I’m so
bothered by it, yada yada. Fourth… actually, I can’t remember
what my last point was supposed to be. Maybe it’ll come back to
me. The bottom line is that Markazi Text is a good
general-purpose typeface. Setting aside the finicky behavior
around combined diacritics, it holds no bad surprises that I’ve
seen.
Mirza: I like this font well enough. The proportions are correct, and it has some nice ligatures. It’s worth noting that those ligatures appear in Chrome and Firefox, but not in Safari. So the distinctiveness of the typeface will be lessened for users of iOS devices. This is puzzling to me, since Amiri includes some of the same ligatures, and it’s more consistent across all three browsers. (Update: This seems to have been fixed. I don’t know if the problem was with Safari or Mirza, but it’s gone now.) Anyway, Mirza has other stylistic idiosyncracies that should be taken into consideration. I’m not a big fan of the stubby comma. Diacritic placement is handled in an interesting way. They’re set close to the letters, and they’re so small! Shrinking the diacritics is one way of preventing collisions. I think they could be a bit difficult to make out. On an esoteric note, the common practice in Arabic script, when a kasrah and a shaddah are added to the same letter, is to move the kasrah above the letter (directly below the shaddah). Mirza instead leaves the kasrah beneath the letter regardless of context. I hesitate to call this wrong, but it’s unusual. (Update: I later noticed that Markazi Text displays the same behavior.) It’s possible I’ll use this typeface at some point. It didn’t break in any of the tests.
Scheherazade: This has been my Arabic-script font of choice for years, both on and off the web. It isn’t perfect, but it’s close, and I keep returning to it. One thing to be aware of is that Scheherazade always comes out looking smaller, with more space between lines of text, relative to other typefaces at the same “size.” (This also applies to Lateef.) The generous built-in spacing allows the font to maintain traditional proportions and accommodate diacritics without many problems. Now, I don’t always need this buffer. Sometimes I find myself both increasing the size and decreasing the line height/spacing where I use Scheherazade. But I like that it errs on the side of safety.
Tajawal: Somehow I find this appealing! The
style is quite modern — far from the
naskh derivatives that I generally prefer. I don’t
think I could go through with using this for longer blocks of
text. It looks cool, though, and it handles diacritics
surprisingly well. The biggest problem here is the lack of
support for Persian letters. Even the Persian
yā’ (U+06CC
)
breaks this font, which
is unnecessary, since it should be identical to the Arabic
yā’ in the initial or medial position, and identical to
the Arabic alif maqṣūrah in the final or isolated
position. So the glyphs already exist. To include pe,
che, and zhe would mean adding dots;
kāf and gāf would require a bit more effort.
The situation doesn’t need to be as bad as it is currently.
Now for a few final notes…
Divine ligatures: Two of the most characteristic ligatures in Arabic are for Allāh and lillāh (the latter meaning “unto God”). Many fonts, in many text processors — including modern browsers — will automatically produce the Allāh ligature if the letters alif, lām, lām, hā’ appear followed by a space. A smaller number of fonts go a step further, generating a ligature for lillāh as well. (The only difference in spelling between the two words is the initial alif in Allāh. The ligatures also tend to be identical except for the separate first letter, in which case applying the lillāh ligature is as good as applying both.) And some fonts have neither. I try not to get too fussed about this, since there are advantages and disadvantages to each approach, but we may as well test it. As can be seen above, among our seven fonts, Amiri is the only one that makes both ligatures automatically. Markazi Text and Tajawal modify Allāh, but not lillāh. (This is currently my preference.) The others — Aref Ruqaa, Lateef, Mirza, and Scheherazade — produce neither ligature. It’s not a hill worth dying on.
Browser differences: I checked everything in current macOS versions of Chrome, Firefox, and Safari. In Chrome, the default “serif” font performs unusually badly when diacritics are introduced. YMMV. (Update: This seems to have been fixed. It’s nice to revisit these points, just a year later, and see little improvements!) Once I switch to any of the dedicated Arabic-script fonts in Chrome, it’s smooth sailing. Firefox is even better. Not only do the Google Fonts work properly, but Firefox provides a nice default typeface that looks almost like a derivative of Scheherazade with added ligatures (and less-than-ideal diacritic placement). Kudos to whoever set that up! Safari is perhaps the weakest performer. It doesn’t act up too badly with the default font, but I saw problems with diacritic use in both Aref Ruqaa and Markazi Text. And there are disabled (?) ligatures in Mirza. (Update: All of these issues seem to have been fixed, at least to some extent.) What I can say, in any case, is that relying on a fallback font for Arabic or Persian is risky.
Bootstrap fonts: Honestly, I’ve found that a well-thought-out “native stack” appears to be a workable option for Arabic-script languages. It may not be beautiful, but it won’t be broken, either. The Bootstrap default setting has not turned out badly in any browser, on any device that I’ve tested. Is this burying the lede? Is there any point in loading a web font? For me, the answer is still yes; I want something a bit nicer. But for a project where the goal is to support Arabic and Persian text, without prioritizing it, I don’t think this would be called for. As we all know, the practice of relying on widely available native fonts has clear advantages.
Open season: Did I overlook something or make a mistake? If so, please let me know. Also, if you’d like to adapt these tests to your own nefarious ends, feel free. The files are available on GitHub.
Made with coffee and pedantry by
Theo Beers
Last updated Dec. 2021


Life (1999) 1/2 star out of 4. Starring Eddie Murphy and Martin Lawrence
In Life, Eddie Murphy and Martin Lawrence play two young men wrongfully convicted of murder and sentenced to life in prison.
After about an hour of watching this movie, you begin to realize how their characters feel. Fortunately, for audience members there's a chance to escape the nearest exit.
This, undoubtedly, is Eddie Murphy's worst movie and that's an accomplishment. Remember The Golden Child, Harlem Nights? Compared to Life, they look like Citizen Kane.
Life is long, predictable, foul-mouthed and only intermittently funny. Its 100-minute running time feels like 100 years. Robert Ramsey and Matthew Stone's script basically consist of Murphy and Lawrence referring to everyone around them as "motherf...s" or "n ..... s."
You lose count how many times both those obnoxious, offensive words are used. And if that all it takes to write a script, than any illiterate jackass can sit at a word processor and compose a movie.
But, like Life, it will probably stink.
To be honest, the screening audience surrounding me in the theater yucked it up. But these were the same people who howled at all the flatulence and fat jokes as well.
Life is as sophisticated as a belch. It's crude and stereotypical. Years ago, movies stereotypically portrayed blacks subservient, second-class people, good for being only maids and servants. For the most part, the lot of blacks and other racial groups have improved.
But a new, more insidious stereotype is creeping into movies. In many recent films, through actors such as Murphy and Chris Tuckers, blacks are presented as fast-talking, conniving, scam artists or hip-hop, gun-crazy, sex-crazed youths.
Both sets of caricatures are demeaning. And the fault does not rest with the actors. They have to eat, too. It is with the people who write the scripts, the studios who green-light the projects and the audiences who accept these portrayals without protest.
Life's only redeeming virtue is the artistry of makeup legend Rick Baker who flawlessly ages Murphy and Lawrence into 90 year olds.
Otherwise, Life is an embarrassment, a blot on the resumes of those associated with it. See it at your own risk.
Bob Bloom is the film critic at the Journal and Courier in Lafayette, IN. He can be reached by e-mail at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>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


Conversion
Put your data in the form. It could be JSON data (
clean
/
dirty
) or a CSV file.
Remove
Add
Clear
Merge to CSV
Merge to JSON
Force ID re-generation based on names


EVO HTML to PDF Converter offers full support for SVG vector graphics. The SVG code can be embedded directly in HTML page or it can be referenced from an external file.
The following options are available in this demo:
-
HTML Page with SVG to Convert to PDF. The URL of the HTML page to convert must be accessible from the computer where the converter runs. If the page requires authentication or if you are using a proxy server to access Internet
then you have to set the converter properties accordingly as described in documentation


Here are AT&T’s first real consumer 5G coverage maps
These are not the maps for 5GE or 5G+
by Jay PetersAT&T announced today that its 5G network will launch in the first half of December. You can use it if you’ve got a compatible Galaxy Note 10 Plus 5G, one of two unlimited plans, and are fortunate enough to live in one of the five cities where it will be available at launch — or ten cities that will get 5G by early next year. Now, AT&T has also shared its initial 5G coverage maps, and we’ve included them all in this post.
AT&T claims it has two kinds of 5G already, but this third one is the real deal, sort of.
- You might have seen a 5GE icon on your phone — that’s actually just LTE.
- You may have also heard about mmWave 5G, which is what AT&T calls 5G+. mmWave 5G offers lightning-fast speeds, but extremely limited coverage (see: Verizon’s mmWave 5G coverage maps). AT&T’s 5G+ is no exception, as it only works over A) a 5G hotspot that is only available to business customers or B) a mmWave-compatible Galaxy S10 5G that’s not available to consumers, and C) is only available in “parts of” 21 cities.
- The maps below represents AT&T’s consumer rollout of regular, “low-band” 5G, which will have speeds that are “expected to be comparable” to LTE-Advanced, which is already just a speedier 4G.
Still with me? If so, here’s how the rollout of AT&T’s 5G (the regular, low-band kind) will go:
- In the first half of December, AT&T’s 5G will launch in five cities: Indianapolis, Pittsburgh, Providence, Rochester, and San Diego.
- By February 2020, AT&T’s 5G will launch in 10 more cities: Birmingham, Boston, Bridgeport, Buffalo, Las Vegas, Louisville, Milwaukee, New York, San Francisco, and San Jose.
If you live in one of those cities, look for a map of your city below to see where you can get AT&T 5G. We’ve grouped the maps into two categories: first is the December launch group, then the “by February 2020” group, with each city in alphabetical order in each group.
If your city isn’t listed here, it will probably have 5G coverage (again, that’s the regular, low-band 5G) within the first half of 2020. That’s when AT&T says it will have nationwide coverage with slow, but real, 5G.
Available in the first half of December
Indianapolis, Indiana
Pittsburgh, Pennsylvania
Providence, Rhode Island
Rochester, New York
San Diego, California
Available by February 2020
Birmingham, Alabama
Boston, Massachusetts
Bridgeport, Connecticut
Buffalo, New York
Las Vegas, Nevada
Louisville, Kentucky
Milwaukee, Wisconsin
New York, New York
San Francisco, California
San Jose, California


CS 284: Data Structures
Home
|
Canvas
|
Resources
|
FAQ
Additional Resources
Online judge for practicing coding:
HackerRank
LeetCode
PKU online judge
Sphere online judge
Other books:
Algorithms in Java
.
Robert Sedgewick


Kill your SEO game... it doesn't matter, someone has more money than you.
Read More →Less is more! Join us as we explain why forcing you to pay for bluetooth headphones makes any sense whatsoever.
Read More →Google poops out 2 trillon dollars and gives Jeff Bezos his hair back in landmark acquisition deal.
Read More →


AfriNREN is an Computer Science honours project at the University of Cape Town aiming to design and develop a network traffic and analysis tool for use by network managers of African NRENs. The tool will be available as a Web application, accessible by the intended users by the end of the project period. The project is split into two arenas: Data Collection - the intelligent collection of network structure and traffic information from a variety of sources for use in the analysis. Visualisation - the design and development of effective interactive visualisations of the network's structure and traffic. For more information on the project specifics, see the Project Proposal or browse the project documentation.
The network managers and engineers of Africa's research and educational institutions and those of the UbuntuNet Alliance seek to improve the performance of information exchange between these institutions to facilitate the network-intensive collaborative work done between them. Currently, there is a lack of research into effective network data collection and visualisation tools in the context of the UbuntuNet and African NRENs. This research would be useful in that it helps develop tools to facilitate network design, planning and operation and, in the distinct context of NRENs, aids policy makers in the determination of whether the establishment of an NREN between two communicating institutions within the same country is viable.