Syllabus
INTRODUCTION AND TYPES OF MIS:- Meaning of Management information system,Major types of Management information system, Information Reporting systems (IRS), Decision Support system (DSS), Executive Information system. (EIS),Relationship of Management Information system and operation information system in any organization.
MIS
To the managers, MIS is an implementation of the organizational system and procedures.
To a programmer it is nothing but file structures and file processing. However it involves much more complexity.
The three components of MIS provide a more complete and focused definition, where
system suggests integration and holistic view ,
information stands for processed data and
Management is the ultimate user, the decision maker.
Management
Management covers the planning, control and administration of the operations of a concern.
The top management handles planning,
The middle management concentrates on controlling and
The lower management is concerned with actual administration.
Information
Information in MIS means the processed data that helps the management in planning , controlling and operations.
Data means all the facts arising out of the operations of the concern.
Data is processed i.e. recorded , summarized , compared and finally presented to the management in the for of MIS report.
System
Data is processed into information with the help of a system.
Thus MIS means a system for processing data in order to give proper information to the management for performing its functions.
Definition
“MIS is a planned system of collecting, storing, and disseminating(distributing) data in the form of information needed to carry out the functions of management”
Major Types of MIS
Sales Management Systems
Inventory Control Systems
Budgeting Systems
Management Reporting Systems
Personnel (HRM) Systems
Role of MIS
Based on Internal Information Flow
Support relatively structured decisions
Inflexible and little analytical capacity
Used by lower and middle managerial levels
Deals with past and present rather than future
Efficiency oriented
Examples of MIS
Group Decision Support Systems (GDSS)
Computer-Supported co-operative work (CSCW)
Logistics Systems
Financial Planning Systems
Spreadsheet models
The Role of DSS
Support ill structured and semi - structured decisions
Have analytical and modeling capacity
Used by more senior managerial levels
Are concerned with predicting the future
Are effectiveness oriented
Decision Support Systems (DSS)
A DSS is an interactive computer system that can be used by managers without help from computer specialists. A DSS provides managers with the necessary information to make intelligent decisions.
Model based Management – transforms data from the DBMS into information that is useful in decision making
Dialog generation and management system provides a user friendly interface between the system and managers who do not have extensive computer training.
Executive Information System (EIS)
Top level management
Designed to the individual
Ties CEO to all levels
Very expensive to keep up
Extensive support staff
Executive Support System (ESS):
Strategic level
Inputs: Aggregate data
Processing: Interactive
Outputs: Projections
Users: Senior managers
Example: 5-year operating plan
Relationship of MIS and Operation Information System in any organization


|
This is a div. It should be replaced.
This is a div for string. It should be replaced.
This is an example of a fully integrated wasm page. It shows how you can run wasm without fetch() or anything so it loads super quick even over connections with really high latency, or you can run it from your hard drive just by double clicking on it. Check out the project here: https://github.com/cnlohr/wasm_integrated.
|


Hamilton waiting on Wolff ahead of 2021 contract talks
Lewis Hamilton intends to stay in Formula One beyond 2020 but he said on Thursday he wanted to know Mercedes team boss Toto Wolff's personal plans before agreeing any new deal.
SAO PAULO: Lewis Hamilton intends to stay in Formula One beyond 2020 but he said on Thursday he wanted to know Mercedes team boss Toto Wolff's personal plans before agreeing any new deal.
The six times world champion, like most of his rivals, is out of contract after next season with a major shakeup of the sport scheduled for 2021.
He recognised at the Brazilian Grand Prix, however, that he was "kind of joined at the hip" with Mercedes after seven years together.
There could also be change at the helm of Formula One post-2020 and Austrian Wolff has been talked of as someone who could play such a role.
"I know that being stuck in any position for too long can also not always be a positive so I always want people to spread their wings and do what’s best for their careers," said Hamilton.
"I don’t know what that is for him (Wolff), only he will know," added the Briton, who said Wolf has been "the perfect match" for him and Mercedes.
"Naturally I don't want him to leave, particularly if I'm staying in the sport. It is important to me and I am waiting also to see where his head is at."
SCHUMACHER'S RECORD
Wolff is not in Brazil for Sunday's penultimate race of the season, with Mercedes having already won both titles for an unprecedented sixth year in succession.
Hamilton clinched his sixth championship in Texas this month and will be aiming to equal Michael Schumacher's record seven next year, when he will be 35 years old.
The Briton's last contract negotiations were protracted and fans still speculate on whether he might end his career at Ferrari.
"I’ve obviously considered the next couple of years. I know that I want to continue racing, I love what I’m doing. I see no reason for me to stop any time soon," Hamilton said.
"It's almost like I only just did this contract and I’ve already got to start talking about the potential of the next one.
"It’s another stressful moment where you have to... get into the ring and have a friendly yet intense conversation about terms and all those kind of things. But I’m used to it and like to think I’m a relatively good negotiator."
Hamilton also revealed he had received text messages from 2007 McLaren team mate Fernando Alonso and former McLaren boss Ron Dennis after Austin.
"Seeing Ron's text, it really touched me inside," said the champion, who first met Dennis as a 10-year-old go-karter.
"He saw something in me that no one else did except for my dad. He gave me an opportunity to showcase my abilities and to learn and to grow. Without him, I most likely wouldn't have made it to F1."
(Writing by Alan Baldwin in London, editing by Ken Ferris)


A reporter covering a marathon race in Georgia was touched inappropriately by one of the runners on live TV. Alex Bozarjian, a reporter at the US television station WSAV, was covering the Savannah Bridge Run when a male runner sexually assaulted her.
Bozarjian later took to Twitter and called him out for his indecent behaviour.
Watch the video here:
The news footage shows enthusiastic runners waving at the camera as Bozarjian spoke about the huge turnout.  But the journalist was quick to compose herself and continue the broadcast.
Bozarjian’s tweet went viral and prompted massive outrage among people. Take a look st some reactions here:
Several users did a bit of social media sleuthing to identify the man using his race bib number. The runner was soon identified as Tommy Callaway, a resident of Georgia. Responding to the incident, Savannah Sports Council condemned the incident and has banned Callaway from all future events.
For all the latest Trending News, download Indian Express App
- Tags:
- Social media viral


{% extends "base.html" %} {% block title %}example data-in-the-mines app{% endblock %} {% block header %}
Hello.
data-in-the-mines, or ditm, provides a framework for periodically creating reports from your data sources, with the primary goal of automating data discovery reports and providing a window onto the data in the mines.
This example app illustrates how data-in-the-mines integrates with any Flask web app, and provides a web interface to the example reports. data-in-the-mines is not inherently reliant on Flask, I chose it for the example implementation for its simplicity.
Personally, I am also using the project to explore the machine learning and graphing abilities of R and some of the datasets that come with it while I begin to learn that language, and to familiarize myself with the available data analysis libraries for Python. I am largely interested in data mining from an engineer's perspective, and just happen to find programming to be an efficacious method of study.
Visit the data mines.
{% endblock %}


When I was 16 I broke my back for the first time. 6 years later I broke it again in a different location. One year later I fell off of a ladder during a snow storm on December 7. I broke my right wrist and sustained a severe concussion. It only took 3 operations to fix my face and head and only 4 to put my wrist and hand to where I could use my hand again. The cast on my wrist came off for the final time on April 15. In July of that same year I was shot and had to have a plate and four screws put in to help the bone stay together.
That was 20 years ago. After all of that I was doing OK. I only took tylanol or aspirin and that took care of me. Then 6 years ago I woke up in pain. Not a lot of pain, just enough to be uncomfortable. The pain got worse as the days became weeks, as the weeks became months the pain started to be bothersome. I could not sleep for more that an hour or two at a time. As the months started to become years the pain got to be unbearable. The doctors started me with tylanol with codiene, then hydrocodone and of course the NSAID's and the prednosone regiments began also.
When the hydro's weren't working any longer the schedule II's were introduced. At first it was 2.5mg oxycodone every 6 hours. As the years wore on the doses got larger and the variaty widened. Diazapan and amytripteline (sic) and Celebrex, then Viox with a little more then a little less prednisone. They took a deep tissue muscle biopsy out of my right thigh. I had spinal injections, bone scans, nerve studies. Then another class of meds were tried; Nourantin, Daypro, now lets try something else. By then I was taking 120mg of oxycontin three times a day. (one 80mg and one 40mg)
When I moved and had to get a new doctor the new doctor had to try something different so I got to take dilaudid 8mg every 4 to 6 hours as needed. Another doctor didn't like that so I got MS Contin 15mg every 12 hours. Because of my work, when I am able to work, I have to travel and some times for extented periods of time. So I run out of my medications on a regular basis.    When it gets really bad and the rashes are in full swing and I have the sores on my face, hands and arms I don't like to go out in public. I look like the living dead.
One time I actually convinced a doctor that I needed to be in the hospital to get off of the medications. I was in a coma like sleep for four days. On the sixth day when I was able to walk on my own the insurance denied any more coverage so I was out right in the middle of a chance to get off of the medications.
Right now I have about 50 or 60 of the 8mg dilaudid and about 30 or so MS Contin. I also had my perscription of oxycontin filled. That means I have 90 of the 80mg tablets and 90 of the 40mg tablets. For now I am able to plan ahead. I have the medications that I need to function.
By function I mean that I am able to get up and go to work. I am able to care for myself and do the things that most people take for granted.  It is too painful to raise my hands over my head so I have difficulty showering, brushing my teeth or shaving. Just getting dressed is a challange if I don't have my drugs. The pain is mostly in my thighs, hips, lower back and the shoulders and upper arms.
The bone scan shows heterotopic calcification in the large muscles where the pain is but there is not a direct correlation between the two. I also have calcium being deposited on my jaw causing a growth inside of my mouth under my tongue. The doctors don't know what to make of this type of calcification.
When I take enough medication to where I don't feel pain I find that I can't feel anything. I don't feel happy. I don't feel sad. I just don't feel.
The oxy helps the best out of all of the medications but it is the one that I abuse the most also. I sometimes crush the 2 or 3 of the 80mg tablets and snort the powder. Instantly the pain is gone and I feel good. I mean real good. But it doesn't last long and I want that good feeling again. If I am not carefull I can go through an entire months supply in one or two weeks. Then the withdrawels start and that is no fun.
The withdrawel for the dilaudid is by far the worse. I will do almost anything to not have to withdraw from dilaudid. I make sure that when I run out of dilaudid I have something else to take for at least a week. The first and only time I have withdrawm from didaudid I thought that I was going to die. I was in so much pain from the desease that I have and on top of that the pain of withdrawel was more than I could bare. I overdosed on diazipan and an antidepressent that I had laying around. Luckily for me wife found the empty containers and called 911. I had left the house and drove about a block away before I passed out. The ambulance and the police found me right away. They told me later that I would have been dead if they had gotten to me five minutes later.
 The doctors haven't been able to find out what is wrong with me so instead of finding the source of the pain and dealing with that, they treat the symptom by giving me more and more pain medication.
I was talking to my granddaughter the other day. She broke her back during a cheer for the football players. As the smallest cheerleader they threw her up in the air and then dropped her on her return. She was in the hospital in traction for almost 6 months.
Her stepfather spent almost all of his time with her while she was in the hospital. We found out later that he was there all of the time because he was stealing her pain medication while she was in traction.
My granddaughter has had several surgeries to fix her back. The latest surgery was a huge failure. The growth around her spine cannot be removed without possibly paralyzing her. Like with me, the solution thus far is to give her larger and larger doses of pain medication. The old schedule II group to the rescue. The light headedness, constipation, dizzy feelings, nausea, cramps, sleeplessness that changes to passing out, forgetfullness, missed phone calls, the looks from friends and family, the depression and of course that feeling in the middle of the back of center of the head.
Life is not meant to be like this. This is not fun. There is no fun or enlightenment. There is nothing enjoyable about having to take this type of medication. I would gladly give all of the medication that I have for one day being free of this pain.
Sometimes I wonder if I am alone in having to life like this. Opiates are not a long term solution to having pain.  They are ruining the relationship I had with my wife.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


CIS Resources
Home
Boostrap Examples
jQuery Examples
This website is for students in my OTC and MSU classes.
Click on the buttons above to see examples
Facebook
-
Twitter
-
Instagram
-
Personal website
Bootstrap Examples Page
Home
Boostrap Examples
jQuery Examples
Bootstrap Examples
Starter HTML5 Page
(right-click, save-as)
Bootstrap Sample Page
Another Bootstrap example page
Using JavaScript with Bootstrap
Facebook
-
Twitter
-
Instagram
-
Personal website
jQuery Examples Page
Home
Boostrap Examples
jQuery Examples
jQuery Examples
jQuery and Bootstrap Navigation Example
jQuery and Bootstrap Dashboard Example
jQuery UI Example
Flipboard Site
(Project from: Code Academy -
Make an Interactive Website)
Facebook
-
Twitter
-
Instagram
-
Personal website


I recently completed a first year course in functional analysis, and I want to write down the key takeaways and ideas before I forget them all. This post will be a brief survey of (a subset of) topics covered.
More specifically, math textbooks often (in my opinion, as an applied person) do a poor job of motivating why a particular definition is the right one or why a particular theorem is actually interesting, and it is not until you learn enough of the ideas that you realize the answer. To get to this point, however, is often a long and arduous process, and it is very easy to lose sight of the big picture. I have often felt that a roadmap could be beneficial, and this is my attempt at one for basic functional analysis. The definitions and theorems I present here follow the treatment from Folland's Real Analysis. $ \newcommand{\norm}[1]{\lVert #1 \rVert} \newcommand{\abs}[1]{| #1 |} \newcommand{\A}{\mathcal{A}} \newcommand{\R}{\mathbb{R}} \newcommand{\Z}{\mathbb{Z}} \newcommand{\C}{\mathbb{C}} \newcommand{\F}{\mathbb{F}} \newcommand{\N}{\mathbb{N}} \newcommand{\ind}{\mathbf{1}} \newcommand{\dist}{\mathrm{dist}} \newcommand{\ip}[2]{\langle #1, #2 \rangle} $
Normed vector spaces
One of the central objects at play in functional analysis is actually one that many people have seen before from undergraduate linear algebra courses. A normed vector space $(X, \norm{\cdot})$ is a pair where $X$ is a vector space (over a scalar field $\F$) and $\norm{\cdot}$ defines a proper norm on $X$. When $X$ is complete w.r.t. $\norm{\cdot}$, the space is called a Banach space. When the norm of a Banach space is induced by an inner product (i.e. $\norm{x}^2 = \ip{x}{x}$) for an inner product $\ip{\cdot}{\cdot}$, the space is called a Hilbert space.
We are already quite familiar with examples of Banach and Hilbert spaces. Let $X = \R^n$. Recall the $p$-norm on $X$ is defined as $\norm{x}_p = \left( \sum_{i=1}^{n} \abs{x_i}^p \right)^{1/p}$. We allow $p = \infty$, which we interpret as $\norm{x}_\infty = \max_{1 \leq i \leq n} \abs{x_i}$. When $p \in [1, \infty]$, $(X, \norm{\cdot}_p)$ is a Banach space. The special case $(X, \norm{\cdot}_2)$, also known as the Euclidean space, is a Hilbert space with the usual inner product on $\R^n$ (i.e. $\ip{x}{y} = \sum_{i=1}^{n} x_i y_i$).
If we stretch our imaginations just a little bit, we can define vector spaces over functions. Let $C([0, 1])$ denote the space of continuous functions $f : [0, 1] \longrightarrow \R$. From basic properties of continuous functions, if $f, g \in C([0, 1])$ and $a \in \R$, then $f + g \in C([0, 1])$ and $a f \in C([0, 1])$. Hence, $C([0, 1])$ defines a vector space. We can make $C([0, 1])$ into a normed space by defining the norm $\norm{f}_\infty = \sup_{x \in [0, 1]} \abs{f(x)}$. Since $f$ is continuous and $[0, 1]$ is a compact set, $\norm{f}_\infty < \infty$. It is easy to see that $\norm{\cdot}_\infty$ defines a valid norm.
But we can say more. It is also not hard to see that $\norm{\cdot}_\infty$ makes $C([0, 1])$ a complete space. This amounts to checking that given a sequence $\{f_n\}_{n=1}^{\infty}$ with $f_n \in C([0, 1])$ and $\sum_{n=1}^{\infty} \norm{f_n}_\infty < \infty$, the partial sums $\sum_{n=1}^{N} f_n$ converge (in $\norm{\cdot}_\infty$, or equivalently converge uniformly) to some $f \in C([0, 1])$ as $N \longrightarrow \infty$. This can be done by observing that for each $x \in [0, 1]$, the series $\sum_{n=1}^{\infty} f_n(x)$ is absolutely convergent, and therefore converges to some value in $\R$. Hence, the definition $f(x) = \sum_{n=1}^{\infty} f_n(x)$ makes sense, and one just has to show that $f$ is indeed the correct limit.
We have just constructed our first example of a Banach space over functions. Of course, there is nothing special about the interval $[0, 1]$, and the same argument above works to show that $C(X)$ is a Banach space for any compact $X \subset \R$. A few more common examples are the sequence spaces $\ell^p$ and the function spaces $L^p$: $$ \begin{align*} \ell^p &= \{ (x_n)_{n=1}^{\infty} : \sum_{n=1}^{\infty} \abs{x_n}^p < \infty \} \\ L^p(X, \A, \mu) &= \{ f : X \longrightarrow \C : f \text{ is $\A$-measurable}, \int \abs{f}^p \; d\mu < \infty \} \:. \end{align*} $$ Slight technical note for the last example: the functions $f$ are actually elements of the equivalence class which treats $f \sim g$ if $f = g$ $\mu$-almost everywhere; this is necessary to make $L^p$ a proper vector space. Also, one can view $\ell^p$ as a special case of $L^p$ by setting $X = \N$, $\A$ as the discrete $\sigma$-algebra on $\N$, and $\mu$ as the counting measure, but sometimes it helps to distinguish the two cases.
Linear operators
Vector spaces in isolation are not that interesting. It gets interesting when we start to make vector spaces interact with one another. The most basic way of doing this is by defining linear operators between vector spaces. A linear operator $T : X \longrightarrow Y$ between two vector spaces is simply a map such that $T(x + y) = Tx + Ty$ for all $x, y \in X$ and $T(a x) = a T(x)$ for all $a \in \F, x \in X$.
There is a special class of linear operators, which we call linear functionals. Given a vector space $X$ over a field $\F$, a linear functional is a linear map $f : X \longrightarrow \F$. Let us pause for a second to reflect on what a linear functional looks like when $X = \R^n$ (and $\F = \R$). Let $\{e_i\}_{i=1}^{n}$ denote any basis for $\R^n$. Then for any $x \in \R^n$, we can write $x = \sum_{i=1}^{n} \varphi_i(x) e_i$, where $\varphi_i(x)$ denotes the $i$-th coordinate of $x$ in the basis. Applying linearity, $$ f(x) = f(\sum_{i=1}^{n} \varphi_i(x) e_i) = \sum_{i=1}^{n} \varphi_i(x) f(e_i) \:. $$ That is, $f(x)$ is simply the inner product between the vector of coordinates $(\varphi_1(x), ..., \varphi_n(x))$ and the vector $(f(e_1), ..., f(e_n)) \in \R^n$. Furthermore, given any vector $c \in \R^n$, $f(x) = \sum_{i=1}^{n} \varphi_i(x) c_i$ defines a linear functional. Hence, we have fully described the space of linear functionals on $\R^n$ by, essentially, $\R^n$. We will formalize this in a moment.
Continuing our example in the previous paragraph, if we consider $\R^n$ as the Euclidean space, then for any linear functional $f$, by taking $\{e_i\}_{i=1}^{n}$ as the standard basis vectors, we have for all $x \in \R^n$ by Cauchy-Schwarz, $$ \abs{f(x)} \leq \norm{(f(e_1), ..., f(e_n))}_2 \norm{x}_2 \:. $$ Equivalently, $$ \sup_{\norm{x}_2 = 1} \abs{f(x)} \leq \norm{(f(e_1), ..., f(e_n))}_2 < \infty \:. $$ A natural question to ask is then, does a linear functional always satisfy $\sup_{\norm{x}_2 = 1} \abs{f(x)} < \infty$? In finite dimensions, yes, but in infinite dimensions, this is not true. The easiest way to see this by taking on faith that every vector space has a Hamel basis, and any Hamel basis of an infinite dimensional space is uncountable. Taking these two statements for granted, if $\{ e_\alpha \in X : \alpha \in A \}$ is a Hamel basis and $\{ c_\alpha \in \F : \alpha \in A \}$ is an unbounded set (which is possible since $A$ is uncountable), then $$ f(x) = f(\sum_{\alpha \in A} \beta_\alpha e_\alpha) = \sum_{\alpha \in A} c_\alpha \beta_\alpha \:, $$ is a linear functional, but $\abs{f(e_\alpha)} = \abs{c_\alpha}\norm{e_\alpha}$ for every $\alpha \in A$. Hence $\sup_{\norm{x}=1} \abs{f(x)} = \infty$.
This motivates the following definition. A linear operator $T : X \longrightarrow Y$ is called bounded if $\norm{T} := \sup_{\norm{x}_X=1} \norm{T(x)}_Y < \infty$. We can then check that the space of all bounded linear operators, defined as $$ L(X, Y) = \{ T : X \longrightarrow Y : T \text{ linear}, \norm{T} < \infty \} \:, $$ is itself a normed vector space with the norm $\norm{T}$. Even more is that, if $Y$ is a Banach space, then so is $L(X, Y)$ (even if $X$ is not a Banach space). A nice fact about boundedness is that it is equivalent to continuity for a linear operator.
Proposition.
Let $T$ be a linear operator between two normed vector spaces $X, Y$. The following are equivalent:
(a) $T$ is bounded.
(b) $T$ is continuous.
(c) $T$ is continuous at zero.
Dual spaces and the Hahn-Banach theorem
The special case of $L(X, \F)$ is given the name $X^*$, called the dual space of $X$. As mentioned above, $X^*$ is always a Banach space. Of course, one can apply this dualizing operation recursively, and define $X^{**} = (X^{*})^*$ and so on. But now the question is, does $X^*$ have any meaningful elements in it, other than the trivial $f \equiv 0$?
The affirmative answer to this question is one of the first key results in functional analysis, called the Hahn-Banach theorem. It comes in many forms, and I will state a useful form of it (but not the most general).
Theorem (Hahn-Banach). Let $X$ be a normed vector space, and let $M \subset X$ be a proper closed subspace. For all $x \in X \setminus M$, there exists an $f \in X^*$ such that $f|_M \equiv 0$, $\norm{f} = 1$, and $f(x) = \dist(x, M) := \inf_{y \in M} \norm{x - y}$.
Applying the Hahn-Banach theorem to the subspace $M = \{0\}$, we conclude that if $x \neq y$, then there exists an $f \in X^*$ such that $f(x) \neq f(y)$, that is, the dual space separates points. This tells us that the dual space is a very abundant space, and is a useful way to study the underlying space $X$. The way I think about it is this: in finite dimensions, we study a vector space directly, via coordinates and basis. For infinite dimensional spaces, coordinates and basis are unwieldy to work with; the more natural tool to use is the dual space.
Now that we know the dual space is a useful concept, we can ask many questions about it. First, let us define the evaluation functional $e_x : X^* \longrightarrow \F$ of a point $x \in X$ as $e_x(f) = f(x)$. It is clear by definition that $e_x$ is linear. Furthermore, $\abs{e_x(f)} = \abs{f(x)} \leq \norm{x} \norm{f}$, and hence $e_x$ is bounded. That is, $e_x \in X^{**}$. This shows that there is a natural embedding of $X$ into $X^{**}$ via $x \mapsto e_x$. Is this embedding always surjective? The answer is no, and a natural counter-example is to consider the subspace $c_0 \subset \ell^\infty$, $$ c_0 = \{ x \in \ell^\infty : \lim_{n \rightarrow \infty} x_n = 0 \} \:. $$ It turns out that $c_0^* \cong \ell^1$ and $(\ell^1)^* \cong \ell^\infty$ (both relations are consequences of theorems to be discussed shortly). Hence, $c_0^{**}$ is strictly larger than the natural embedding of $c_0$.
Moving forward, the following lemma leads nicely into our next discussion on weak topologies.
Lemma. Let $X$ be a normed vector space and let $B_X = \{ x \in X : \norm{x} \leq 1 \}$ denote the norm closed unit ball in $X$. Then $B_X$ is compact iff $X$ is finite dimensional.
In studying analysis, we know that compactness is a nice, strong property of a set to exhibit. Unfortunately, in infinite dimensions, the topology defined by the norm is in a sense always too strong. Since we are interested in studying infinite dimensional spaces, the only way around this is to weaken the topology.
Weak and weak-* topologies
We now define two closely related topologies. The first one is defined on a normed vector space $X$. The weak topology on $X$ is defined to be the coarsest topology which makes all bounded linear functionals continuous. Recall that a bounded linear functional is continuous in the norm topology on $X$ by the proposition above. Therefore, the weak topology is by definition weaker than the norm topology (hence its name).
A closely related topology is defined on the dual space $X^*$. In similar spirit, we define the weak-* topology on $X^*$ to be the coarsest topology which makes the maps $\{e_x\}_{x \in X}$ continuous. Since $X^*$ is itself a normed vector space, we can compare the weak topology on $X^*$ versus the weak-* topology on $X^*$. Recalling from above that $e_x \in X^{**}$, we immediately have that the weak-* topology on $X^*$ is weaker than the weak topology on $X^*$. This is a very confusing sentence to parse at first, but I assure you it follows immediately from the definitions.
We can compare the topologies by comparing what a convergent sequence means in each topology. The notation $x_n \stackrel{w}{\rightharpoonup} x$ below reads "$x_n$ converges weakly to $x$".
- In the norm topology, $x_n \longrightarrow x$ means that $\lim_{n \rightarrow \infty} \norm{x_n - x} = 0$.
- In the weak topology, $x_n \stackrel{w}{\rightharpoonup} x$ means that for each $f \in X^*$, $\lim_{n \rightarrow \infty} f(x_n) = f(x)$.
- In the weak-* topology, $f_n \stackrel{w^*}{\rightharpoonup} f$ means that for each $x \in X$, $\lim_{n \rightarrow \infty} f_n(x) = f(x)$.
One can convince oneself that, for example, convergence in the norm topology implies convergence in the weak topology (as we would expect, since it is a stronger topology).
With these definitions in place, one of the basic results concerning weak topologies is the Banach-Alaoglu theorem.
Theorem (Banach-Alaoglu). Let $X$ be a normed vector space, and $X^*$ its dual. The unit ball $B_{X^*} = \{ f \in X^* : \norm{f} \leq 1 \}$ is compact in the weak-* topology. If $X$ is separable, then $B_{X^*}$ is sequentially compact in the weak-* topology.
Recall that $B_{X^*}$ is not compact in the norm topology (unless $X^*$ happens to be finite dimensional). This theorem tells us that we can weaken the topology and regain compactness.
$L^p$ duality
In a previous paragraph, I explored the dual space of $(\R^n, \norm{\cdot}_2)$ and concluded that it was essentially $\R^n$. We now make this precise, in the context of $L^p$ spaces. First, a definition. Given a $p \in [1, \infty]$, define $q$, the conjugate exponent of $p$, as the solution to $1/p + 1/q = 1$ (if $p=1$, then $q=\infty$, and vice-versa).
We first start with a very useful inequality by Hölder.
Theorem (Hölder). Let $(X, \A, \mu)$ be a measure space, and let $f, g$ be $\A$-measurable complex valued functions. Fix a $p \in [1, \infty]$, let $q$ denote its conjugate exponent. Then, $$ \abs{\int f g \; d\mu} \leq \norm{f}_p \norm{g}_q \:. $$ Hence, if $f \in L^p(X, \A, \mu)$ and $g \in L^q(X, \A, \mu)$, then $fg \in L^1(X, \A, \mu)$.
From here on out we write $L^p = L^p(X, \A, \mu)$. Fixing a $p \in [1, \infty]$, define for any $g \in L^q$ the map $I_g : L^p \longrightarrow \C$ as $$ I_g(f) = \int f g \; d\mu \:. $$ Hölder's inequality tells us that $I_g \in (L^p)^*$, and that $\norm{I_g} = \norm{g}_q$ (the equality can be achieved). Hence, the map $g \mapsto I_g$ embeds $L^q$ into $(L^p)^*$, preserving norms in the process. The following theorem establishes conditions on when the map $g \mapsto I_g$ is a norm-preserving bijection (and hence $(L^p)^* \cong L^q$).
Theorem. Let $(X, \A, \mu)$ be a measure space. If either $p \in (1, \infty)$ or $p \in [1, \infty)$ and $\mu$ is $\sigma$-finite, then $(L^p)^*$ is isometrically isomorphic to $L^q$ via the map $g \mapsto I_g$.
An immediate consequence of this theorem is that for $p \in (1, \infty)$, $L^p$ spaces are reflexive. But $L^1$ and $L^\infty$ can cause some trouble. Let us first discuss the dual of $L^\infty$, by considering the dual of $\ell^\infty$.
Lemma. There exists an element of $(\ell^\infty)^*$ which is not in the image of $g \mapsto I_g$ under $\ell^1$.
Proof. Suppose not. Recall the definition of $c_0 \subset \ell^\infty$ above. One can check that $c_0$ is a closed subspace and that $\mathbf{1} \not\in c_0$, so by the Hahn-Banach theorem there exists an $f \in (\ell^\infty)^*$ such that $f|_{c_0} \equiv 0$ and $f(\mathbf{1}) \neq 0$. Now suppose that $f(x) = \sum_{n=1}^{\infty} x_n c_n$ for some $(c_n)_{n=1}^{\infty} \in \ell^1$. For $n \geq 1$, let $e_n \in c_0$ satisfy $(e_n)_{m} = 1$ iff $n = m$. But then $f(e_n) = c_n = 0$ for all $n \geq 1$, and hence $f \equiv 0$, a contradiction.
The counter-example for $(L^1)^*$ is a bit more involved, and I will not discuss it here. See this thread for more details.
Dual of $C_0(X)$: Riesz representation theorem
Earlier, we gave the example of $(C([0, 1]), \norm{\cdot}_\infty)$ as a Banach space. Can we do the same thing we did for $L^p$ spaces and characterize its dual? This is the subject of the Riesz representation theorem. It is especially interesting since it provides a connection between topology and measure theory.
To set up the scene, we start with a few definitions. Let $X$ be a topological space, and consider the set $$ C_0(X) = \{ f : X \longrightarrow \C : f \in C(X), f \text{ vanishes at infinity} \} \:, $$ where we say $f$ vanishes at infinity if for all $\varepsilon > 0$, the set $\{ x \in X : \abs{f(x)} \geq \varepsilon \}$ is compact. We endow the space $C_0(X)$ with the supremum norm $\norm{\cdot}_\infty$.
Next, a Borel measure $\mu$ on $X$ is called a Radon measure if for all Borel sets $E$ we have outer regularity $$ \mu(E) = \inf\{ \mu(O) : O \supset E, O \text{ is open} \} $$ and for all open sets $O$ we have inner regularity $$ \mu(O) = \sup\{ \mu(K) : K \subset O, K \text{ is compact} \} \:. $$
We define a complex Borel measure $\mu$ to be Radon if $\abs{\mu}$ is Radon. The space $M(X)$ denotes the vector space of complex Radon measures with norm $\norm{\mu} = \abs{\mu}(X)$ (this value is finite for complex measures).
We now make similar observations as in the case of $L^p$ spaces. For a $\mu \in M(X)$, define the map $I_\mu : C_0(X) \longrightarrow \C$ by $$ I_\mu(f) = \int f \; d\mu \:. $$ Similar to the case of $L^p$ spaces, we have immediately that $$ \abs{I_\mu(f)} \leq \abs{\mu}(X) \norm{f}_\infty = \norm{\mu} \norm{f} < \infty \:, $$ and hence the map $\mu \mapsto I_\mu$ embeds $M(X)$ into $C_0(X)^*$. If $X$ is a locally compact Hausdorff space, then one can show that $\norm{I_\mu} = \norm{\mu}$ by using inner regularity to approximate $X$ from below by a compact set $K$ with arbitrarily close measure, and then applying Urysohn's lemma to obtain a continuous function $f$ supported on $K$ with $\norm{f}_\infty = 1$.
From the other direction, the Riesz representation theorem gives us conditions on when this embedding is actually an isometric isomorphism.
Theorem (Riesz representation). Let $X$ be a locally compact Hausdorff space. Let $I \in C_0(X)^*$. There exists a unique $\mu \in M(X)$ such that $I(f) = \int f \; d\mu$ for all $f \in C_0(X)$. Furthermore, $\norm{I} = \norm{\mu}$. Hence, the mapping $\mu \mapsto I_\mu$ is an isometric isomorphism between $M(X)$ and $C_0(X)^*$.
I claim that we now have all the tools necessary to understand why, as I stated earlier, $c_0^{**} = \ell^\infty$. I will leave the details for the reader.
In conclusion
I have barely scratched the surface of functional analysis. There are many interesting applications which I have not discussed, including Fourier analysis. I hope this post serves as an guide and some motivation for what one might learn in a first year course in analysis.


|
IAIK PKCS#11 Wrapper version 1.3 |
|||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Packages that use SecretKey | |
| iaik.pkcs.pkcs11 | This package provides a object oriented API to access PKCS#11 modules. |
| iaik.pkcs.pkcs11.objects | This package contains all classes for objects and attributes as known from PKCS#11. |
| iaik.pkcs.pkcs11.parameters | This package contains all classes for parameters objects. |
| Uses of SecretKey in iaik.pkcs.pkcs11 |
| Methods in iaik.pkcs.pkcs11 with parameters of type SecretKey | |
void |
Session.digestKey(SecretKey key)
This method is similar to digestUpdate and can be combined with it during one digesting operation. |
| Uses of SecretKey in iaik.pkcs.pkcs11.objects |
| Subclasses of SecretKey in iaik.pkcs.pkcs11.objects | |
class |
AESSecretKey
Objects of this class represent AES secret keys as specified by PKCS#11 v2.11. |
class |
BatonSecretKey
Objects of this class represent BATON secret keys as specified by PKCS#11 v2.11. |
class |
BlowfishSecretKey
Objects of this class represent Blowfish secret keys as specified by PKCS#11 v2.20. |
class |
CAST128SecretKey
Objects of this class represent CAST128 secret keys as specified by PKCS#11 v2.11. |
class |
CAST3SecretKey
Objects of this class represent CAST3 secret keys as specified by PKCS#11 v2.11. |
class |
CAST5SecretKey
Objects of this class represent CAST5 secret keys as specified by PKCS#11 v2.11. |
class |
CASTSecretKey
Objects of this class represent CAST secret keys as specified by PKCS#11 v2.11. |
class |
CDMFSecretKey
Objects of this class represent CDMF secret keys as specified by PKCS#11 v2.11. |
class |
DES2SecretKey
Objects of this class represent double-length DES secret keys as specified by PKCS#11 v2.11. |
class |
DES3SecretKey
Objects of this class represent Triple-DES secret keys as specified by PKCS#11 v2.11. |
class |
DESSecretKey
Objects of this class represent DES secret keys as specified by PKCS#11 v2.11. |
class |
GenericSecretKey
Objects of this class represent generic secret keys as specified by PKCS#11 v2.11. |
class |
IDEASecretKey
Objects of this class represent IDEA secret keys as specified by PKCS#11 v2.11. |
class |
JuniperSecretKey
Objects of this class represent Juniper secret keys as specified by PKCS#11 v2.11. |
class |
RC2SecretKey
Objects of this class represent RC2 secret keys as specified by PKCS#11 v2.11. |
class |
RC4SecretKey
Objects of this class represent RC4 secret keys as specified by PKCS#11 v2.11. |
class |
RC5SecretKey
Objects of this class represent RC5 secret keys as specified by PKCS#11 v2.11. |
class |
SkipJackSecretKey
Objects of this class represent SkipJack secret keys as specified by PKCS#11 v2.11. |
class |
TwofishSecretKey
Objects of this class represent Twofish secret keys as specified by PKCS#11 v2.20. |
| Methods in iaik.pkcs.pkcs11.objects with parameters of type SecretKey | |
protected static void |
SecretKey.putAttributesInTable(SecretKey object)
Put all attributes of the given object into the attributes table of this object. |
| Uses of SecretKey in iaik.pkcs.pkcs11.parameters |
| Fields in iaik.pkcs.pkcs11.parameters declared as SecretKey | |
protected SecretKey |
SSL3KeyMaterialOutParameters.clientMacSecret_
The resulting Client MAC Secret key. |
protected SecretKey |
SSL3KeyMaterialOutParameters.serverMacSecret_
The resulting Server MAC Secret key. |
protected SecretKey |
SSL3KeyMaterialOutParameters.clientKey_
The resulting Client Secret key. |
protected SecretKey |
SSL3KeyMaterialOutParameters.serverKey_
The resulting Server Secret key. |
| Methods in iaik.pkcs.pkcs11.parameters that return SecretKey | |
SecretKey |
SSL3KeyMaterialOutParameters.getClientMacSecret()
Get the resulting client MAC secret key. |
SecretKey |
SSL3KeyMaterialOutParameters.getServerMacSecret()
Get the resulting server MAC secret key. |
SecretKey |
SSL3KeyMaterialOutParameters.getClientSecret()
Get the resulting client secret key. |
SecretKey |
SSL3KeyMaterialOutParameters.getServerSecret()
Get the resulting server secret key. |
|
IAIK PKCS#11 Wrapper version 1.3 |
|||||||||
| PREV NEXT | FRAMES NO FRAMES |


Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin eget tortor risus. Quisque velit nisi, pretium ut lacinia in, elementum id enim. Nulla quis lorem ut libero malesuada feugiat. Pellentesque in ipsum id orci porta dapibus. Vivamus magna justo, lacinia eget consectetur sed, convallis at tellus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.
With SchoolMessenger Presence websites, you choose the design options that work for you. Whether you're going for a look that's conventional and conservative or want something innovative and wildly original, we can build a site that accomplishes your unique goals and objectives.
With SchoolMessenger Presence websites, you choose the design options that work for you. Whether you're going for a look that's conventional and conservative or want something innovative and wildly original, we can build a site that accomplishes your unique goals and objectives.
With SchoolMessenger Presence websites, you choose the design options that work for you. Whether you're going for a look that's conventional and conservative or want something innovative and wildly original, we can build a site that accomplishes your unique goals and objectives.
With SchoolMessenger Presence websites, you choose the design options that work for you. Whether you're going for a look that's conventional and conservative or want something innovative and wildly original, we can build a site that accomplishes your unique goals and objectives.
For more info about our school website design services, or to request a quote, please fill out the form below and click the “Submit” button.
(If you need to sign up for or opt out of communications from your child's school, please visit our Parent Center for more info.)
If you can't see the form in the box above, please use this email template to request info.


|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |
See:
Description
| Interface Summary | |
|---|---|
| PathEntry | |
| Predicate | |
| RestrictedMatchPattern | |
| Result |
Provides a variety of general purpose classes for sax path expressions.
|
|||||||||
| PREV PACKAGE NEXT PACKAGE | FRAMES NO FRAMES |


Orubase is the only mobile application development framework built especially for developing complex line-of-business mobile applications targeting iOS, Android, and Windows Phone platforms in the shortest possible timeframe. Orubase is aimed at .NET developers and so it relies heavily on Visual Studio and ASP.NET MVC for the server-side components. When you create a project you need to list the views that application will need. The project wizard will then create the MVC stubs for each view.Next Orubase will create the platform-specific projects. These don’t use Mono or PhoneGap/Apache Cordova. Instead Syncfusion uses a combination of native code and their own callback framework.
A key selling point for Orubase is that it looks and feels like native code. In many cases this is because it is native code. Features such as menus are actually created using native code to ensure they are placed correctly on each platform. For most of your application the look is just clever use of HTML and CSS. The server-side MVC controls automatically change their appearance depending on what OS the client is running on.


Cutting-Edge Creamery
Pre-Order Form
First name
Valid first name is required.
Last name
Valid last name is required.
Phone Number
Your phone number is required.
Email
(Optional)
Please enter a valid email address for shipping updates.
Billing Address (Please include state and zipcode)
Please enter your shipping address.
Payment
All pre-orders are required to pay online prior to pick-up
Credit card
Debit card
Name on card
Full name as displayed on card
Name on card is required
Credit card number
Credit card number is required
Expiration
Expiration date required
CVV
Security code required
Place Order


Fairy Statistics
Overview
Refresh
10 s
20 s
30 s
40 s
50 s
Glance
Workers
Recently Finished Tasks
Failed Tasks
Processing Tasks
Slowest Tasks
Recently Finished Tasks
Failed Tasks
Processing Tasks
Slowest Tasks


• Canoe Cruising: Single Receptacle
• Long Cruise: Single Receptacle
General Items
• Food supplies
• Utensils for cooking
Special Notes
• sufficient for at least three meals
• (larger portions of food supply could be kept in other parts of the canoe)
• Replenish from store on camping site
• Wood
• Tin
• Galvanized iron
Features
• water-tight
• varnished with shellac or boat varnish inside and out
Specific Features
• Made up of 5/16 pine
• If use as seat: Top and bottom pieces heavier about 3/8 of an inch
• joining and dove-tailing must be done
• Liquid
• Spices
• Meats and Bread
Items
• Coffee
• Tea (or cocoa)
• Sugar
• Flour (or meal)
• Rice
• Alcohol
• Salt and pepper
• Eggs
• Bread/bacon/salt pork
Special Instructions
• Store in small spice
• Boxes with two covers
• Carry in flour/coffee/rice
• Two basins
Made of sheet-iron
One has “ears” riveted to its Rim, allowing gas to escape
Necessary Provisions and Utensils
Categorized Items
• Utensils
• Appliances
• Dinnerware and glassware
Items
• Fork
• Spoon
• Knife
• Cooking tools
• Stove
• Pan
• Coffee pot
• Cups
Made of tin or granite
• Plates


10 Mar 2015
OpenMP transport
In the post on numerical transport, we already have seen the simple algorithm on ray-triangle intersection to calculate the integrals. We already have made OpenMP running to save our time on building up the intersection. However, our previous implementation has not used all the resources.
My first implementation on the algorithm originally:
unordered_set<int32_t> visited;
for (int32_t i = 0; i < numberofelem; i++) {
for (int32_t j = 0; j < numberofnodesperelem; j++){
vertex = pnodes[i * numberofnodesperelem + j] - 1;
if (visited.find(vertex) == visited.end()) {
visited.insert(vertex);
/*
* ray triangle tracing here.
*/
}
else {
continue;
}
}
}
With trivial parallelism, we want each thread handle specific group of the vertices. That makes some threads waiting.
unordered_set<int32_t> visited;
#pragma omp parallel private(...) num_threads(4)
for (int32_t i = 0; i < numberofelem; i++) {
for (int32_t j = 0; j < numberofnodesperelem; j++){
// add tid to control thread
tid = omp_get_thread_num();
vertex = pnodes[i * numberofnodesperelem + j] - 1;
if (not_match(vertex, tid)) continue;
if (visited.find(vertex) == visited.end()) {
visited.insert(vertex);
/*
* ray triangle tracing here.
*/
}
else {
continue;
}
}
}
After some research, we know we need some dynamical mechanism to allocate thread to task, from stachoverflow, I found an idea.
unordered_set<int32_t> visited;
omp_lock_t lock;
omp_init_lock(&lock);
#pragma omp parallel private(...) num_threads(4)
for (int32_t i = 0; i < numberofelem; i++) {
for (int32_t j = 0; j < numberofnodesperelem; j++){
// no need to know the thread id
vertex = pnodes[i * numberofnodesperelem + j] - 1;
omp_set_lock(&writelock);
// from now on, all threads do this one by one.
if (visited.find(vertex) == visited.end()){
visited.insert(vertex);
// unlock, free to go.
omp_unset_lock(&writelock);
else {
// unlock, free to go.
omp_unset_lock(&writelock);
continue;
}
// rearrange the codes here.
/*
* ray triangle tracing here.
*/
}
}
}
omp_destroy_lock(&lock);
The result is good,
sequential(1) running: 81 seconds.
parallel(4) running: 39 seconds.
improved(4) running: 31 seconds.


| 012:089 Khan | : |
He said: "Do you know what you did with Yusuf (Joseph) and his brother, when you were ignorant?" |
| 012:089 Maulana | : |
He said: Do you know how you treated Joseph and his brother, when you were ignorant? |
| 012:089 Pickthal | : |
He said: Know ye what ye did unto Joseph and his brother in your ignorance? |
| 012:089 Rashad | : |
He said, "Do you recall what you did to Joseph and his brother when you were ignorant?" |
| 012:089 Sarwar | : |
Joseph asked them, "Do you know what you did to Joseph and his brother in your ignorance?" |
| 012:089 Shakir | : |
He said: Do you know how you treated Yusuf and his brother when you were ignorant? |
| 012:089 Sherali | : |
He said, 'Do you know what you did to Joseph and his brother in ignorance?' |
| 012:089 Yusufali | : |
He said: "Know ye how ye dealt with Joseph and his brother, not knowing (what ye were doing)?" |
Concepts/Themes Covered:
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


If you're the ready, fire, aim type (aren't all programmers?), you should find everything you need on this page and the topics under DuxTable Basics to start using DuxTable.
npm install duxtable
You also need to link to the duxtable.css
file in the node_modules/duxtable/website/dist/
directory.
<link rel="stylesheet" href="duxtable.css"/>
DuxTable stores table state in the Redux store. It requires the root duxtable
object in the store.
A reducer is supplied to manage this.
import {DuxTableReducer} from 'duxtable'; const appReducer = combineReducers({ ... // other reducers duxtable: DuxTableReducer });
DuxTable requires a browser with support for CSS FlexBox. It has been tested on the modern evergreen browsers (Chrome and Firefox) as well as Internet Explorer 11. It definitely won't work on Internet Explorer 10 or earlier.


Click on the different Section links in the navbar to see the smooth scrolling effect.
Click on the different Section links in the navbar to see the smooth scrolling effect.
Click on the different Section links in the navbar to see the smooth scrolling effect.
Click on the different Section links in the navbar to see the smooth scrolling effect.
Click on the different Section links in the navbar to see the smooth scrolling effect.


Search on a single species name, or many. And search across a single or many data sources.
occ(query = NULL, from = "gbif", limit = 500, start = NULL, page = NULL, geometry = NULL, has_coords = NULL, ids = NULL, date = NULL, callopts = list(), gbifopts = list(), bisonopts = list(), inatopts = list(), ebirdopts = list(), ecoengineopts = list(), vertnetopts = list(), idigbioopts = list(), obisopts = list(), alaopts = list(), throw_warnings = TRUE)
| query | (character) One to many scientific names. See Details for what parameter
in each data source we query. Note: ebird now expects species codes instead of
scientific names - we pass you name through |
|---|---|
| from | (character) Data source to get data from, any combination of gbif, bison, inat, ebird, ecoengine and/or vertnet |
| limit | (numeric) Number of records to return. This is passed across all sources. To specify different limits for each source, use the options for each source (gbifopts, bisonopts, inatopts, ebirdopts, and ecoengineopts). See Details for more. Default: 500 for each source. BEWARE: if you have a lot of species to query for (e.g., n = 10), that's 10 * 500 = 5000, which can take a while to collect. So, when you first query, set the limit to something smallish so that you can get a result quickly, then do more as needed. |
| start, page | (integer) Record to start at or page to start at. See |
| geometry | (character or nmeric) One of a Well Known Text (WKT) object or a vector of
length 4 specifying a bounding box. This parameter searches for occurrences inside a
box given as a bounding box or polygon described in WKT format. A WKT shape written as
|
| has_coords | (logical) Only return occurrences that have lat/long data. This works for gbif, ecoengine, rinat, idigbio, and vertnet, but is ignored for ebird and bison data sources. You can easily though remove records without lat/long data. |
| ids | Taxonomic identifiers. This can be a list of length 1 to many. See examples for usage. Currently, identifiers for only 'gbif' and 'bison' for parameter 'from' supported. If this parameter is used, query parameter can not be used - if it is, a warning is thrown. |
| date | (character/Date) A length 2 vector containing two dates of the form YYY-MM-DD. These can be character of Date class. These are used to do a date range search. Of course there are other types of date searches one may want to do but date range seems like the most common date search use case. |
| callopts | Options passed on to crul::HttpClient, e.g., for debugging curl calls, setting timeouts, etc. |
| gbifopts | (list) List of named options to pass on to
|
| bisonopts | (list) List of named options to pass on to |
| inatopts | (list) List of named options to pass on to internal function
|
| ebirdopts | (list) List of named options to pass on to
|
| ecoengineopts | (list) List of named options to pass on to
|
| vertnetopts | (list) List of named options to pass on to
|
| idigbioopts | (list) List of named options to pass on to
|
| obisopts | (list) List of named options to pass on to internal function. See https://api.obis.org/#/Occurrence/get_occurrence and obis_search for what parameters can be used. |
| alaopts | (list) List of named options to pass on to internal function.
See |
| throw_warnings | (logical) |
an object of class occdat
, with a print method to give a brief
summary. The print method only shows results for those that have some
results (those with no results are not shown). The occdat
class is just
a thin wrapper around a named list, wher the top level names are the
data sources:
gbif
bison
inat
ebird
ecoengine
vertnet
idigbio
obis
ala
Note that you only get data back for sources that were specified in the from
parameter. All others are present, but empty.
Then within each data source is an object of class occdatind
holding another
named list that contains:
meta: metadata
source: the data source name (e.g., "gbif")
time: time the request was sent
found: number of records found (number found across all queries)
returned: number of records returned (number of rows in all data.frame's
in the data
slot)
type: query type, only "sci" for scientific
opts: a named list with the options you sent to the data source
errors: a character vector of errors returned, if any occurred
data: named list of data.frame's, named by the queries sent
The occ
function is an opinionated wrapper
around the rgbif, rbison, rinat, rebird, ecoengine, rvertnet and
ridigbio packages (as well as internal custom wrappers around some data
sources) to allow data access from a single access point. We take
care of making sure you get useful objects out at the cost of
flexibility/options - although you can still set options for each of the
packages via the gbifopts, bisonopts, inatopts, etc. parameters.
All inputs to occ
are one of:
scientific name
taxonomic id
geometry as bounds, WKT, os Spatial classes
To search by common name, first use occ_names()
to find scientic names or
taxonomic IDs, then feed those to this function. Or use the taxize
package
to get names and/or IDs to use here.
When you use the query
parameter, we pass your search terms on to parameters
within functions that query data sources you specify. Those parameters are:
rgbif - scientificName
in the rgbif::occ_search()
function - API
parameter: same as the occ
parameter
rebird - species
in the rebird::ebirdregion()
or
rebird::ebirdgeo()
functions, depending on whether you set
method="ebirdregion"
or method="ebirdgeo"
- API parameters: sci
for both
rebird::ebirdregion()
and rebird::ebirdgeo()
ecoengine - scientific_name
in the ee_observations
function - API parameter: same as occ
parameter
rbison - species
or scientificName
in the rbison::bison()
or
rbison::bison_solr()
functions, respectively. If you don't pass anything to
geometry
parameter we use bison_solr
, and if you do we use bison
- API
parameters: same as occ
parameters
rvertnet - taxon
in the rvertnet::vertsearch()
function - API
parameter: q
ridigbio - scientificname
in the ridigbio::idig_search_records()
function - API parameter: scientificname
inat - internal function - API parameter: q
obis - internal function - API parameter: scientificName
ala - internal function - API parameter: q
If you have questions about how each of those parameters behaves with respect to the terms you pass to it, lookup documentation for those functions, or get in touch at the development repository https://github.com/ropensci/spocc/issues
When searching iDigBio note that by deafult we set fields = "all"
, so that we return
a richer suite of fields than the ridigbio
R client gives by default. But you can
changes this by passing in a fields
parameter to idigbioopts
parameter with
the specific fields you want.
Maximum of 100,000 results are allowed to be returned. See https://github.com/iDigBio/ridigbio/issues/33
When searching ecoengine, you can leave the page argument blank to get a single page. Otherwise use page ranges or simply "all" to request all available pages. Note however that this may hang your call if the request is simply too large.
We use two different functions when you request data from bison
. We use
rbison::bison_solr()
by default as it's more flexible. If you pass a value to the
geometry
parameter we use rbison::bison()
. We'd prefer to just use one function
to simplify things, but rbison::bison_solr()
doesn't support geometry queries.
We're using the iNaturalist API, docs at https://api.inaturalist.org/v1/docs/#!/Observations/get_observations
API rate limits: max of 100 requests per minute, though they ask that you try to keep it to 60 requests per minute or lower. If they notice usage that has serious impact on their performance they may institute blocks without notification.
There is a hard limit 0f 10,000 observations with the iNaturalist API. We do paging internally so you may not see this aspect, but for example, if you request 12,000 records, you won't be able to get that many. The API will error at anything more than 10,000. We now error if you request more than 10,000 from iNaturalist. There are some alternatives:
Consider exporting data while logged in to your iNaturalist account, or the iNaturalist research grade observations within GBIF - see https://www.gbif.org/dataset/50c9509d-22c7-4a22-a47d-8c48425ef4a7 - at time of this writing it has 8.5 million observations.
Search for iNaturalist data within GBIF. e.g., the following searches for iNaturalist data within GBIF and allows more than 10,000 records: ``
The limit
parameter is set to a default of 25. This means that you will get up to
25 results back for each data source you ask for data from. If there are no results for a
particular source, you'll get zero back; if there are 8 results for a particular source, you'll
get 8 back. If there are 26 results for a particular source, you'll get 25 back. You can always
ask for more or less back by setting the limit parameter to any number. If you want to request
a different number for each source, pass the appropriate parameter to each data source via the
respective options parameter for each data source.
WKT objects are strings of pairs of lat/long coordinates that define a shape. Many classes of shapes are supported, including POLYGON, POINT, and MULTIPOLYGON. Within each defined shape define all vertices of the shape with a coordinate like 30.1 10.1, the first of which is the latitude, the second the longitude.
Examples of valid WKT objects:
'POLYGON((30.1 10.1, 10 20, 20 60, 60 60, 30.1 10.1))'
'POINT((30.1 10.1))'
'LINESTRING(3 4,10 50,20 25)'
'MULTIPOINT((3.5 5.6),(4.8 10.5))")'
'MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))'
'MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))'
'GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))'
Only POLYGON objects are currently supported.
Getting WKT polygons or bounding boxes. We will soon introduce a function to help you select a bounding box but for now, you can use a few sites on the web.
Bounding box - http://boundingbox.klokantech.com/
Well known text - http://arthur-e.github.io/Wicket/sandbox-gmaps3.html
The behavior of the occ
function with respect to the geometry
parameter
varies depending on the inputs to the query
parameter. Here are the options:
geometry (single), no query - If a single bounding box/WKT string passed in, and no query, a single query is made against each data source.
geometry (many), no query - If many bounding boxes/WKT strings are passed in, we do a separate query for each bounding box/WKT string against each data source.
geometry (single), query - If a single bounding box/WKT string passed in, and a single query, we do a single query against each data source.
geometry (many), query - If many bounding boxes/WKT strings are passed in, and a single query, we do a separate query for each bounding box/WKT string with the same queried name against each data source.
geometry (single), many query - If a single bounding box/WKT string passed in, and many names to query, we do a separate query for each name, using the same geometry, for each data source.
geometry (many), many query - If many bounding boxes/WKT strings are passed in, and many names to query, this poses a problem for all data sources, none of which accept many bounding boxes of WKT strings. So, in this scenario, we loop over each name and each geometry query, and then re-combine by queried name, so that you get back a single group of data for each name.
wkt & bbox allowed, see WKT section above
gbif
bison
obis
ala
bbox only
ecoengine
inat
idigbio
No spatial search allowed
ebird
vertnet
Date searches with the date
parameter are allowed for all sources
except ebird.
Notes on some special cases
idigbio: We search on the datecollected
field. Other date fields can be
searched on, but we chose datecollected
as it seemed most appropriate.
vertnet: If you want more flexible date searches, you can pass various
types of date searches to vertnetopts
. See rvertnet::searchbyterm()
for more information
ala: There's some issues with the dates returned from ALA. They are returned as time stamps, and some seem to be malformed. So do beware of using ALA dates for important things.
Get in touch if you have other date search use cases you think are widely useful
All data sources respond to the limit
parameter passed to occ
.
Data sources, however, vary as to whether they respond to an offset. Here's
the details on which data sources will respond to start
and which
to the page
parameter:
gbif - Responds to start
. Default: 0
ecoengine - Responds to page
. Default: 1
bison - Responds to start
. Default: 0
inat - Responds to page
. Default: 1
ebird - No paging, both start
and page
ignored.
vertnet - No paging implemented here, both start
and page
ignored. VertNet does have a form of paging, but it uses a cursor, and can't
easily be included here via parameters. However, rvertnet
does paging
internally for you. For example, the max records per request for VertNet is
1000; if you request 2000 records, we'll do the first request, and do the
second request for you automatically.
idigbio - Responds to start
. Default: 0
obis - Does not respond to start
. They only allow a starting occurrence
UUID up to which to skip. So order of results matters a great deal of course.
To paginate with OBIS, do e.g.
obisopts = list(after = "017b7818-5b2c-4c88-9d76-f4471afe5584")
; after
can
be combined with the limit
value you pass in to the main occ()
function
call. See obis_search for what parameters can be used.
ala - Responds to start
. Default: 0
The iNaturalist data source provides photographs of the records returned,
if available. For example, the following will give photos from inat:
occ(query = 'Danaus plexippus', from = 'inat')$inat$data$Danaus_plexippus$photos
In cases where you request data from multiple providers, especially when
including GBIF, there could be duplicate records since many providers' data eventually
ends up with GBIF. See spocc_duplicates()
for more.
Other queries: occ_names_options
,
occ_names
, occ_options
,
spocc_objects
if (FALSE) { # Single data sources (res <- occ(query = 'Accipiter striatus', from = 'gbif', limit = 5)) res$gbif (res <- occ(query = 'Accipiter', from = 'ecoengine', limit = 50)) res$ecoengine (res <- occ(query = 'Accipiter striatus', from = 'ebird', limit = 50)) res$ebird (res <- occ(query = 'Danaus plexippus', from = 'inat', limit = 50, has_coords = TRUE)) res$inat res$inat$data data.table::rbindlist(res$inat$data$Danaus_plexippus$photos) (res <- occ(query = 'Bison bison', from = 'bison', limit = 50)) res$bison (res <- occ(query = 'Bison bison', from = 'vertnet', limit = 5)) res$vertnet res$vertnet$data$Bison_bison occ2df(res) # Paging one <- occ(query = 'Accipiter striatus', from = 'gbif', limit = 5) two <- occ(query = 'Accipiter striatus', from = 'gbif', limit = 5, start = 5) one$gbif two$gbif # iNaturalist limits: they allow at most 10,000; query through GBIF to get # more than 10,000 # See https://www.gbif.org/dataset/50c9509d-22c7-4a22-a47d-8c48425ef4a7 # x <- occ(query = 'Danaus plexippus', from = 'gbif', limit = 10100, # gbifopts = list(datasetKey = "50c9509d-22c7-4a22-a47d-8c48425ef4a7")) # x$gbif # Date range searches across data sources ## Not possible for ebird ## bison occ(query = 'Acer', date = c('2010-08-08', '2010-08-21'), from = 'bison', limit=5) ## ala occ(date = c('2018-01-01T00:00:00Z', '2018-03-28T00:00:00Z'), from = 'ala', limit = 5) ## gbif occ(query = 'Accipiter striatus', date = c('2010-08-01', '2010-08-31'), from = 'gbif', limit=5) # ecoengine occ(date = c('2010-01-01', '2010-12-31'), from = 'ecoengine', limit=5) ## vertnet occ(query = 'Mustela nigripes', date = c('1990-01-01', '2015-12-31'), from = 'vertnet', limit=5) ## idigbio occ(query = 'Acer', date = c('2010-01-01', '2015-12-31'), from = 'idigbio', limit=5) ## obis occ(query = 'Mola mola', date = c('2015-01-01', '2015-12-31'), from = 'obis', limit=5) ## inat occ(query = 'Danaus plexippus', date = c('2015-01-01', '2015-12-31'), from = 'inat', limit=5) # Restrict to records with coordinates occ(query = "Acer", from = "idigbio", limit = 5, has_coords = TRUE) occ(query = 'Setophaga caerulescens', from = 'ebird', ebirdopts = list(loc='US')) occ(query = 'Spinus tristis', from = 'ebird', ebirdopts = list(method = 'ebirdgeo', lat = 42, lng = -76, dist = 50)) # idigbio data ## scientific name search occ(query = "Acer", from = "idigbio", limit = 5) occ(query = "Acer", from = "idigbio", idigbioopts = list(offset = 5, limit = 3)) ## geo search bounds <- c(-120, 40, -100, 45) occ(from = "idigbio", geometry = bounds, limit = 10) ## just class arachnida, spiders occ(idigbioopts = list(rq = list(class = 'arachnida')), from = "idigbio", limit = 10) ## search certain recordsets sets <- c("1ffce054-8e3e-4209-9ff4-c26fa6c24c2f", "8dc14464-57b3-423e-8cb0-950ab8f36b6f", "26f7cbde-fbcb-4500-80a9-a99daa0ead9d") occ(idigbioopts = list(rq = list(recordset = sets)), from = "idigbio", limit = 10) # You can pass on limit param to all sources even though its a different param in that source ## ecoengine example res <- occ(query = 'Accipiter striatus', from = 'ecoengine', ecoengineopts=list(limit = 5)) res$ecoengine ## This is particularly useful when you want to set different limit for each source (res <- occ(query = 'Accipiter striatus', from = c('gbif','ecoengine'), gbifopts=list(limit = 10), ecoengineopts=list(limit = 5))) # Many data sources (out <- occ(query = 'Pinus contorta', from=c('gbif','bison','vertnet'), limit=10)) ## Select individual elements out$gbif out$gbif$data out$vertnet ## Coerce to combined data.frame, selects minimal set of ## columns (name, lat, long, provider, date, occurrence key) occ2df(out) # Pass in limit parameter to all sources. This limits the number of occurrences # returned to 10, in this example, for all sources, in this case gbif and inat. occ(query='Pinus contorta', from=c('gbif','inat'), limit=10) # Geometry ## Pass in geometry parameter to all sources. This constraints the search to the ## specified polygon for all sources, gbif and bison in this example. ## Check out http://arthur-e.github.io/Wicket/sandbox-gmaps3.html to get a WKT string occ(query='Accipiter', from='gbif', geometry='POLYGON((30.1 10.1, 10 20, 20 60, 60 60, 30.1 10.1))') occ(query='Helianthus annuus', from='bison', limit=50, geometry='POLYGON((-111.06 38.84, -110.80 39.37, -110.20 39.17, -110.20 38.90, -110.63 38.67, -111.06 38.84))') ## Or pass in a bounding box, which is automatically converted to WKT (required by GBIF) ## via the bbox2wkt function. The format of a bounding box is ## [min-longitude, min-latitude, max-longitude, max-latitude]. occ(query='Accipiter striatus', from='gbif', geometry=c(-125.0,38.4,-121.8,40.9)) ## Bounding box constraint with ecoengine ## Use this website: http://boundingbox.klokantech.com/ to quickly grab a bbox. ## Just set the format on the bottom left to CSV. occ(query='Accipiter striatus', from='ecoengine', limit=10, geometry=c(-125.0,38.4,-121.8,40.9)) ## lots of results, can see how many by indexing to meta res <- occ(query='Accipiter striatus', from='gbif', geometry='POLYGON((-69.9 49.2,-69.9 29.0,-123.3 29.0,-123.3 49.2,-69.9 49.2))') res$gbif ## You can pass in geometry to each source separately via their opts parameter, at ## least those that support it. Note that if you use rinat, you reverse the order, with ## latitude first, and longitude second, but here it's the reverse for consistency across ## the spocc package bounds <- c(-125.0,38.4,-121.8,40.9) occ(query = 'Danaus plexippus', from="inat", geometry=bounds) ## Passing geometry with multiple sources occ(query = 'Danaus plexippus', from=c("inat","gbif","ecoengine"), geometry=bounds) ## Using geometry only for the query ### A single bounding box occ(geometry = bounds, from = "gbif", limit=50) ### Many bounding boxes occ(geometry = list(c(-125.0,38.4,-121.8,40.9), c(-115.0,22.4,-111.8,30.9)), from = "gbif") ## Many geometry and many names res <- occ(query = c('Danaus plexippus', 'Accipiter striatus'), geometry = list(c(-125.0,38.4,-121.8,40.9), c(-115.0,22.4,-111.8,30.9)), from = "bison") res ## Geometry only with WKT wkt <- 'POLYGON((-98.9 44.2,-89.1 36.6,-116.7 37.5,-102.5 39.6,-98.9 44.2))' occ(from = "gbif", geometry = wkt, limit = 10) # Specify many data sources, another example ebirdopts = list(loc = 'US'); gbifopts = list(country = 'US') out <- occ(query = 'Setophaga caerulescens', from = c('gbif','inat','bison','ebird'), gbifopts = gbifopts, ebirdopts = ebirdopts, limit=20) occ2df(out) # Pass in many species names, combine just data to a single data.frame, and # first six rows spnames <- c('Accipiter striatus', 'Setophaga caerulescens', 'Spinus tristis') (out <- occ(query = spnames, from = 'gbif', gbifopts = list(hasCoordinate = TRUE), limit=25)) df <- occ2df(out) head(df) # no query, geometry, or ids passed ## many dataset keys to gbif dsets <- c("14f3151a-e95d-493c-a40d-d9938ef62954", "f934f8e2-32ca-46a7-b2f8-b032a4740454") occ(limit = 20, from = "gbif", gbifopts = list(datasetKey = dsets)) ## class name to idigbio occ(limit = 20, from = "idigbio", idigbioopts = list(rq = list(class = 'arachnida'))) ## limit to ecoengine occ(from = "ecoengine", ecoengineopts = list(limit = 3)) # taxize integration ## You can pass in taxonomic identifiers library("taxize") (ids <- get_ids(names=c("Chironomus riparius","Pinus contorta"), db = c('itis','gbif'))) occ(ids = ids[[1]], from='bison', limit=20) occ(ids = ids, from=c('bison','gbif'), limit=20) (ids <- get_ids(names="Chironomus riparius", db = 'gbif')) occ(ids = ids, from='gbif', limit=20) (ids <- get_gbifid("Chironomus riparius")) occ(ids = ids, from='gbif', limit=20) (ids <- get_tsn('Accipiter striatus')) occ(ids = ids, from='bison', limit=20) # SpatialPolygons/SpatialPolygonsDataFrame integration library("sp") ## Single polygon in SpatialPolygons class one <- Polygon(cbind(c(91,90,90,91), c(30,30,32,30))) spone = Polygons(list(one), "s1") sppoly = SpatialPolygons(list(spone), as.integer(1)) out <- occ(geometry = sppoly, limit=50) out$gbif$data ## Two polygons in SpatialPolygons class one <- Polygon(cbind(c(-121.0,-117.9,-121.0,-121.0), c(39.4, 37.1, 35.1, 39.4))) two <- Polygon(cbind(c(-123.0,-121.2,-122.3,-124.5,-123.5,-124.1,-123.0), c(44.8,42.9,41.9,42.6,43.3,44.3,44.8))) spone = Polygons(list(one), "s1") sptwo = Polygons(list(two), "s2") sppoly = SpatialPolygons(list(spone, sptwo), 1:2) out <- occ(geometry = sppoly, limit=50) out$gbif$data ## Two polygons in SpatialPolygonsDataFrame class sppoly_df <- SpatialPolygonsDataFrame(sppoly, data.frame(a=c(1,2), b=c("a","b"), c=c(TRUE,FALSE), row.names=row.names(sppoly))) out <- occ(geometry = sppoly_df, limit=50) out$gbif$data # curl debugging library('httr') occ(query = 'Accipiter striatus', from = 'gbif', limit=10, callopts=list(verbose = TRUE)) occ(query = 'Accipiter striatus', from = 'bison', limit=10, callopts=list(verbose = TRUE)) occ(query = 'Accipiter striatus', from = 'ecoengine', limit=10, callopts=list(verbose = TRUE)) occ(query = 'Accipiter striatus', from = 'inat', callopts=list(verbose = TRUE)) occ(query = 'Mola mola', from = 'obis', limit = 200, callopts = list(verbose = TRUE)) ########## More thorough data source specific examples # idigbio ## scientific name search res <- occ(query = "Acer", from = "idigbio", limit = 5) res$idigbio ## geo search ### bounding box bounds <- c(-120, 40, -100, 45) occ(from = "idigbio", geometry = bounds, limit = 10) ### wkt # wkt <- 'POLYGON((-69.9 49.2,-69.9 29.0,-123.3 29.0,-123.3 49.2,-69.9 49.2))' wkt <- 'POLYGON((-98.9 44.2,-89.1 36.6,-116.7 37.5,-102.5 39.6,-98.9 44.2))' occ(from = "idigbio", geometry = wkt, limit = 10) ## limit fields returned occ(query = "Acer", from = "idigbio", limit = 5, idigbioopts = list(fields = "scientificname")) ## offset and max_items occ(query = "Acer", from = "idigbio", limit = 5, idigbioopts = list(offset = 10)) ## sort occ(query = "Acer", from = "idigbio", limit = 5, idigbioopts = list(sort = TRUE))$idigbio occ(query = "Acer", from = "idigbio", limit = 5, idigbioopts = list(sort = FALSE))$idigbio ## more complex queries ### parameters passed to "rq", get combined with the name queried occ(query = "Acer", from = "idigbio", limit = 5, idigbioopts = list(rq = list(basisofrecord="fossilspecimen")))$idigbio #### NOTE: no support for multipolygons yet ## WKT's are more flexible than bounding box's. You can pass in a WKT with multiple ## polygons like so (you can use POLYGON or MULTIPOLYGON) when specifying more than one ## polygon. Note how each polygon is in it's own set of parentheses. # occ(query='Accipiter striatus', from='gbif', # geometry='MULTIPOLYGON((30 10, 10 20, 20 60, 60 60, 30 10), # (30 10, 10 20, 20 60, 60 60, 30 10))') # OBIS examples ## basic query (res <- occ(query = 'Mola mola', from = 'obis', limit = 200)) ## get to obis data res$obis ## get obis + gbif data (res <- occ(query = 'Mola mola', from = c('obis', 'gbif'), limit = 200)) res$gbif res$obis ## no match found (res <- occ(query = 'Linguimaera thomsonia', from = 'obis')) ## geometry query geometry <- "POLYGON((8.98 48.05,15.66 48.05,15.66 45.40,8.98 45.40,8.98 48.05))" (res <- occ(from = 'obis', geometry = geometry, limit = 50)) res$obis ## Pass in spatial classes library("sp") one <- Polygon(cbind(c(45,30,30,45), c(35,35,30,30))) spone = Polygons(list(one), "s1") sppoly = SpatialPolygons(list(spone), as.integer(1)) (res <- occ(from = 'obis', geometry = sppoly, limit = 50)) ## Do paging (res1 <- occ(query = 'Mola mola', from = 'obis', limit = 10)) occ_ids <- res1$obis$data$Mola_mola$id (res2 <- occ(query = 'Mola mola', from = 'obis', limit = 10, obisopts = list(after = occ_ids[length(occ_ids)]))) res1$obis res2$obis ## Pass in any parameters to obisopts as a list (res <- occ(query = 'Mola mola', from = 'obis', obisopts = list(startdepth = 40, enddepth = 50))) min(res$obis$data$Mola_mola$minimumDepthInMeters, na.rm=TRUE) max(res$obis$data$Mola_mola$maximumDepthInMeters, na.rm=TRUE) # ALA examples ## basic query (res <- occ(query = 'Alaba vibex', from = 'ala', limit = 200)) ## get to ala data res$ala occ2df(res) # geometry search (x <- occ(query = "Macropus", from = 'ala', geometry = "POLYGON((145 -37,150 -37,150 -30,145 -30,145 -37))")) x$ala occ2df(x) }


The analysis method described here is used when analyzing monoalphabetic ciphers. It is based on most frequent words and works only for encrypted versions of English or German standard text, in which the spaces between words are retained in the encrypted text (see dialog Text Options).
This section describes the analysis for English plaintext. However, the analysis works in exactly the same way for German plaintext, although in this case due to the statistical characteristics of the German language the baseline numbers are somewhat different. To avoid generalizing too much in the description of the analysis procedure, only the analysis steps based on the statistical frequencies applicable to English plaintext is described.
The analysis for English plaintext is based on the fact that any word taken from an English standard text will have a 0.5 probability of being contained in the list of the 135 most common English words.
The first step is to break down the text to be analyzed into individual words. Every individual words is checked to see whether there is a word in the list of the 135 most common words which exhibits the same pattern.
"Pattern" refers here to the pattern of letters, for example, letters 1 and 3 are the same, or all the others are different. Thus, the words "cat", "big", "the" and "are" all follow the same pattern (every word consists of three different letters), whereas the words "ally" and "fall" follow different patterns.
Words which do not have a suitable counterpart in the list are not considered. All the other words are sorted by patterns and collected together into sets (all following the same pattern). Each of these sets is now assigned the set of words in the list which follows the same pattern.
Each pair of words from sets assigned to each other now undergoes a partial substitution. In this context, "partial" means that the matching replacement does not necessarily have to be found for every letter. Instead, it can happen that one cannot make any sense out of the assignment of individual letters.
Using a search tree that is searched with a depth-first search, the (partial) substitution formed from the most individual substitutions without any collisions (i.e. conflicts) is now searched.
To avoid the effort required to search through the tree assuming exponential proportions, branches in which collisions occur towards the top are not investigated further.
Letters which could not be assigned are represented in the resulting text by lower case letters. Letters for which a substitute was found are shown in upper case.
Remark:
This search method does not have a very good performance and it requires blanks to be kept as word seperators between in the ciphertext.


Caitlyn Jenner Opens Up About Her Transition During Candid Chat On I'm A Celeb
by Tara WalshCaitlyn Jenner talks about her transition
Reality star Caitlyn Jenner opens up about her transition on last night's I'm A Celeb.
The topic comes up during a chat with her fellow camp-mates at Snake Rock.
She admits, "I thought I was gonna transition before I was 40."
When you're stuck in the Australian jungle with Caitlyn Jenner, you have to ask about her family.
Jacqueline questions if her children knew she was going into the jungle.
Caitlyn admits, "Yeah, they all know."
Caitlyn's transition
The topic soon turns to Caitlyn's transition from man to woman, "I thought I was gonna transition before I was 40."
"I didn’t want to be an old chick but this is the latter '80s and I never felt like I fitted in anywhere."
"I was trying to figure myself out, running around town."
Irish comedian Andrew Maxwell asks, "Running around town, what do you mean?"
Caitlyn responds, "Cross dressing running around."

Caitlyn explains, "I had a turbo Porsche and it was like the day before Halloween."
"This car pulled up beside me and it’s my next door neighbour."
"I said I was going to a Halloween party."
The reality star recalls another time when, "Some guy in a pick up truck beeps his horn."
"And you look over and he’s like blowing kisses."
She reveals she would listen to Aerosmith’s Dude Looks like A Lady in the car.
The camp reacts
Caitlyn's fellow camp-mates are in awe at her story.
James sympathises, "It’s interesting about wanting to express yourself and how hard it is in life wanting to express yourself, but having a thing where you can’t let it and that you have to drive around town."
He shares his opinion, "I think the biggest thing about your thing is all those people thinking about not being able to do it is the fact they should feel comfortable to do it however hard it is because 99 per cent of the time it’ll work out alright."
Caitlyn admits, "All my life I struggled with all of those."
I'm A Celeb returns tonight from 9pm on Virgin Media One.


Bitters tousled do put a bird on it, helvetica vegan lo-fi. Fugiat leggings small batch tattooed. Four loko YOLO slow-carb activated charcoal snackwave normcore put a bird on it. Bushwick gochujang messenger bag glossier echo park everyday carry organic narwhal.


You are currently temporarily logged in. When you log out, the anonymous user "{{ ANONYMOUS_USERNAME }}" will be logged in.
You can log out the anonymous user and end the anonymous session.
You can log out and login as the anonymous user (username "{{ ANONYMOUS_USERNAME }}").
It is recommended that you only do this on common space computers.
If you have started an anonymous session on another machine, you can end the session by logging in as yourself on that machine and ending the session through this same page.
Login as the anonymous user "{{ ANONYMOUS_USERNAME }}": Anonymous Login
{% endif %}
Sometimes (especially if someone used the Django admin), the number of request responses
and thread messages stored in their model fields can be different from the real value.
The change date for a thread can also fall out of line from the post date of the latest message
associated with that thread.
If this is the case, or you're not sure, you can recount both these fields for each request and thread
and update the change_date for those threads.
It is advised that you do this every few weeks.
Running this utility will not modify the change date on either requests or threads.
Recount request responses and thread messages: Recount
You can alternatively go to the Django admin interface for more low-level control.
Be careful. If you mess up real bad, contact Karandeep through his GitHub page.


Previous | Contents | Index | Next
This chapter lists a number of common error messages which PuTTY and its associated tools can produce, and explains what they mean in more detail.
We do not attempt to list all error messages here: there are many which should never occur, and some which should be self-explanatory. If you get an error message which is not listed in this chapter and which you don't understand, report it to us as a bug (see appendix B) and we will add documentation for it.
This error message occurs when PuTTY connects to a new SSH server. Every server identifies itself by means of a host key; once PuTTY knows the host key for a server, it will be able to detect if a malicious attacker redirects your connection to another machine.
If you see this message, it means that PuTTY has not seen this host key before, and has no way of knowing whether it is correct or not. You should attempt to verify the host key by other means, such as asking the machine's administrator.
If you see this message and you know that your installation of PuTTY has connected to the same server before, it may have been recently upgraded to SSH protocol version 2. SSH protocols 1 and 2 use separate host keys, so when you first use SSH-2 with a server you have only used SSH-1 with before, you will see this message again. You should verify the correctness of the key as before.
See section 2.2 for more information on host keys.
This message, followed by ‘The server's host key does not match the one PuTTY has cached for this server’, means that PuTTY has connected to the SSH server before, knows what its host key should be, but has found a different one.
(If the message instead talks about a ‘certified host key’, see instead section 10.3.)
This may mean that a malicious attacker has replaced your server with a different one, or has redirected your network connection to their own machine. On the other hand, it may simply mean that the administrator of your server has accidentally changed the key while upgrading the SSH software; this shouldn't happen but it is unfortunately possible.
You should contact your server's administrator and see whether they expect the host key to have changed. If so, verify the new host key in the same way as you would if it was new.
See section 2.2 for more information on host keys.
If you've configured PuTTY to trust at least one certification authority for signing host keys (see section 4.19.4), then it will ask the SSH server to send it any available certified host keys. If the server sends back a certified key signed by a different certification authority, PuTTY will present this variant of the host key prompt, preceded by ‘WARNING - POTENTIAL SECURITY BREACH!’
One reason why this can happen is a deliberate attack. Just like an ordinary man-in-the-middle attack which substitutes a wrong host key, a particularly ambitious attacker might substitute an entire wrong certification authority, and hope that you connect anyway.
But it's also possible in some situations that this error might arise legitimately. For example, if your organisation's IT department has just rolled out a new CA key which you haven't yet entered in PuTTY's configuration, or if your CA configuration involves two overlapping domains, or something similar.
So, unfortunately, you'll have to work out what to do about it yourself: make an exception for this specific case, or abandon this connection and install a new CA key before trying again (if you're really sure you trust the CA), or edit your configuration in some other way, or just stop trying to use this server.
If you're convinced that this particular server is legitimate even though the CA is not one you trust, PuTTY will let you cache the certified host key, treating it in the same way as an uncertified one. Then that particular certificate will be accepted for future connections to this specific server, even though other certificates signed by the same CA will still be rejected.
By default, PuTTY only supports connecting to SSH servers that implement SSH protocol version 2. If you see this message, the server you're trying to connect to only supports the older SSH-1 protocol.
If the server genuinely only supports SSH-1, then you need to either change the ‘SSH protocol version’ setting (see section 4.17.4), or use the -1
command-line option; in any case, you should not treat the resulting connection as secure.
You might start seeing this message with new versions of PuTTY (from 0.68 onwards) where you didn't before, because it used to be possible to configure PuTTY to automatically fall back from SSH-2 to SSH-1. This is no longer supported, to prevent the possibility of a downgrade attack.
This occurs when the SSH server does not offer any ciphers which you have configured PuTTY to consider strong enough. By default, PuTTY puts up this warning only for Blowfish, single-DES, and Arcfour encryption.
See section 4.20 for more information on this message.
(There are similar messages for other cryptographic primitives, such as host key algorithms.)
This message is produced by an OpenSSH (or Sun SSH) server if it receives more failed authentication attempts than it is willing to tolerate.
This can easily happen if you are using Pageant and have a large number of keys loaded into it, since these servers count each offer of a public key as an authentication attempt. This can be worked around by specifying the key that's required for the authentication in the PuTTY configuration (see section 4.22.1); PuTTY will ignore any other keys Pageant may have, but will ask Pageant to do the authentication, so that you don't have to type your passphrase.
On the server, this can be worked around by disabling public-key authentication or (for Sun SSH only) by increasing MaxAuthTries
in sshd_config
.
This occurs when PuTTY tries to allocate more memory than the system can give it. This may happen for genuine reasons: if the computer really has run out of memory, or if you have configured an extremely large number of lines of scrollback in your terminal. PuTTY is not able to recover from running out of memory; it will terminate immediately after giving this error.
However, this error can also occur when memory is not running out at all, because PuTTY receives data in the wrong format. In SSH-2 and also in SFTP, the server sends the length of each message before the message itself; so PuTTY will receive the length, try to allocate space for the message, and then receive the rest of the message. If the length PuTTY receives is garbage, it will try to allocate a ridiculous amount of memory, and will terminate with an ‘Out of memory’ error.
This can happen in SSH-2, if PuTTY and the server have not enabled encryption in the same way (see question A.7.3 in the FAQ).
This can also happen in PSCP or PSFTP, if your login scripts on the server generate output: the client program will be expecting an SFTP message starting with a length, and if it receives some text from your login scripts instead it will try to interpret them as a message length. See question A.7.4 for details of this.
Any error beginning with the word ‘Internal’ should never occur. If it does, there is a bug in PuTTY by definition; please see appendix B and report it to us.
Similarly, any error message starting with ‘Assertion failed’ is a bug in PuTTY. Please report it to us, and include the exact text from the error message box.
Various forms of this error are printed in the PuTTY window, or written to the PuTTY Event Log (see section <IP_ADDRESS>) when trying public-key authentication, or given by Pageant when trying to load a private key.
If you see one of these messages, it often indicates that you've tried to load a key of an inappropriate type into PuTTY, Plink, PSCP, PSFTP, or Pageant.
You may have tried to load an SSH-2 key in a ‘foreign’ format (OpenSSH or ssh.com
) directly into one of the PuTTY tools, in which case you need to import it into PuTTY's native format (*.PPK
) using PuTTYgen – see section 8.2.15.
Alternatively, you may have specified a key that's inappropriate for the connection you're making. The SSH-2 and the old SSH-1 protocols require different private key formats, and a SSH-1 key can't be used for a SSH-2 connection (or vice versa).
Various forms of this error are printed in the PuTTY window, or written to the PuTTY Event Log (see section <IP_ADDRESS>) when trying public-key authentication.
If you see one of these messages, it means that PuTTY has sent a public key to the server and offered to authenticate with it, and the server has refused to accept authentication. This usually means that the server is not configured to accept this key to authenticate this user.
This is almost certainly not a problem with PuTTY. If you see this type of message, the first thing you should do is check your server configuration carefully. Common errors include having the wrong permissions or ownership set on the public key or the user's home directory on the server. Also, read the PuTTY Event Log; the server may have sent diagnostic messages explaining exactly what problem it had with your setup.
Section 8.3 has some hints on server-side public key setup.
Various forms of this error are printed in the PuTTY window, or written to the PuTTY Event Log (see section <IP_ADDRESS>) during authentication.
If you see one of these messages, it means that the server has refused all the forms of authentication PuTTY has tried and it has no further ideas.
It may be worth checking the Event Log for diagnostic messages from the server giving more detail.
This error can be caused by buggy SSH-1 servers that fail to cope with the various strategies we use for camouflaging passwords in transit. Upgrade your server, or use the workarounds described in section 4.27.13 and possibly section 4.27.14.
This error indicates that PuTTY has run out of ways to authenticate you to an SSH server. This may be because PuTTY has TIS or keyboard-interactive authentication disabled, in which case see section 4.21.5 and section 4.21.6.
This error occurs when PuTTY decrypts an SSH packet and its checksum is not correct. This probably means something has gone wrong in the encryption or decryption process. It's difficult to tell from this error message whether the problem is in the client, in the server, or in between.
In particular, if the network is corrupting data at the TCP level, it may only be obvious with cryptographic protocols such as SSH, which explicitly check the integrity of the transferred data and complain loudly if the checks fail. Corruption of protocols without integrity protection (such as HTTP) will manifest in more subtle failures (such as misdisplayed text or images in a web browser) which may not be noticed.
Occasionally this has been caused by server bugs. An example is the bug described at section 4.27.10, although you're very unlikely to encounter that one these days.
In this context MAC stands for Message Authentication Code. It's a cryptographic term, and it has nothing at all to do with Ethernet MAC (Media Access Control) addresses, or with the Apple computer.
This error occurs when PuTTY decrypts an SSH packet and the decrypted data makes no sense. This probably means something has gone wrong in the encryption or decryption process. It's difficult to tell from this error message whether the problem is in the client, in the server, or in between.
If you get this error, one thing you could try would be to fiddle with the setting of ‘Miscomputes SSH-2 encryption keys’ (see section 4.27.12) or ‘Ignores SSH-2 maximum packet size’ (see section 4.27.5) on the Bugs panel.
This family of errors are reported when PuTTY is doing X forwarding. They are sent back to the X application running on the SSH server, which will usually report the error to the user.
When PuTTY enables X forwarding (see section 3.4) it creates a virtual X display running on the SSH server. This display requires authentication to connect to it (this is how PuTTY prevents other users on your server machine from connecting through the PuTTY proxy to your real X display). PuTTY also sends the server the details it needs to enable clients to connect, and the server should put this mechanism in place automatically, so your X applications should just work.
A common reason why people see one of these messages is because they used SSH to log in as one user (let's say ‘fred’), and then used the Unix su
command to become another user (typically ‘root’). The original user, ‘fred’, has access to the X authentication data provided by the SSH server, and can run X applications which are forwarded over the SSH connection. However, the second user (‘root’) does not automatically have the authentication data passed on to it, so attempting to run an X application as that user often fails with this error.
If this happens, it is not a problem with PuTTY. You need to arrange for your X authentication data to be passed from the user you logged in as to the user you used su
to become. How you do this depends on your particular system; in fact many modern versions of su
do it automatically.
This is a generic error produced by the Windows network code when it kills an established connection for some reason. For example, it might happen if you pull the network cable out of the back of an Ethernet-connected computer, or if Windows has any other similar reason to believe the entire network has become unreachable.
Windows also generates this error if it has given up on the machine at the other end of the connection ever responding to it. If the network between your client and server goes down and your client then tries to send some data, Windows will make several attempts to send the data and will then give up and kill the connection. In particular, this can occur even if you didn't type anything, if you are using SSH-2 and PuTTY attempts a key re-exchange. (See section 4.18.2 for more about key re-exchange.)
(It can also occur if you are using keepalives in your connection. Other people have reported that keepalives fix this error for them. See section 4.14.1 for a discussion of the pros and cons of keepalives.)
We are not aware of any reason why this error might occur that would represent a bug in PuTTY. The problem is between you, your Windows system, your network and the remote system.
This error occurs when the machines at each end of a network connection lose track of the state of the connection between them. For example, you might see it if your SSH server crashes, and manages to reboot fully before you next attempt to send data to it.
However, the most common reason to see this message is if you are connecting through a firewall or a NAT router which has timed the connection out. See question A.7.8 in the FAQ for more details. You may be able to improve the situation by using keepalives; see section 4.14.1 for details on this.
Note that Windows can produce this error in some circumstances without seeing a connection reset from the server, for instance if the connection to the network is lost.
This error means that the network connection PuTTY tried to make to your server was rejected by the server. Usually this happens because the server does not provide the service which PuTTY is trying to access.
Check that you are connecting with the correct protocol (SSH, Telnet, etc), and check that the port number is correct. If that fails, consult the administrator of your server.
This error means that the network connection PuTTY tried to make to your server received no response at all from the server. Usually this happens because the server machine is completely isolated from the network, or because it is turned off.
Check that you have correctly entered the host name or IP address of your server machine. If that fails, consult the administrator of your server.
Unix also generates this error when it tries to send data down a connection and contact with the server has been completely lost during a connection. (There is a delay of minutes before Unix gives up on receiving a reply from the server.) This can occur if you type things into PuTTY while the network is down, but it can also occur if PuTTY decides of its own accord to send data: due to a repeat key exchange in SSH-2 (see section 4.18.2) or due to keepalives (section 4.14.1).
This means that the operating system rejected the parameters of the network connection PuTTY tried to make, usually without actually trying to connect to anything, because they were simply invalid.
A common way to provoke this error is to accidentally try to connect to port 0, which is not a valid port number.
If you want to provide feedback on this manual or on the PuTTY tools themselves, see the Feedback page.
[PuTTY release 0.78]


terminal junkie
`Prev `__
T
`Next `__
--------------
**terminal junkie**: n.
[UK] A `*wannabee* <../W/wannabee.html>`__ or early `*larval
stage* <../L/larval-stage.html>`__ hacker who spends most of his or her
time wandering the directory tree and writing
`*noddy* <../N/noddy.html>`__ programs just to get a fix of computer
time. Variants include terminal jockey, console junkie, and `*console
jockey* <../C/console-jockey.html>`__. The term console jockey seems to
imply more expertise than the other three (possibly because of the
exalted status of the `*console* <../C/console.html>`__ relative to an
ordinary terminal). See also `*twink* `__, `*read-only
user* <../R/read-only-user.html>`__. Appropriately, this term was used
in the works of William S. Burroughs to describe a heroin addict with an
unlimited supply.
--------------
+-------------------------------------+----------------------------+-------------------------+
| `Prev `__ | `Up <../T.html>`__ | `Next `__ |
+-------------------------------------+----------------------------+-------------------------+
| terminal illness | `Home <../index.html>`__ | test |
+-------------------------------------+----------------------------+-------------------------+