Joe Armstrong, Robert Virding and Mike Williams, under the supervision of Bjarne Däcker were tasked with prototyping telecom applications with existing languages
*screen graps from 'Erlang The Movie'
The team found that no one language provided everything that a telecom application needed
A decision was made to invent a new language
Erlang (Ericsson Language) was born!
Erlang was influenced by several languages
- functional: ML, Miranda
- concurrent: Ada, Modula, Chill
- logic: Prolog
- others: Smalltalk (code upgrade) and EriPascal and PLEX (older Ericsson languages)
Originally implemented with a Prolog VM, Erlang was refined over four years
There were several principles guiding Erlang's design, such as:
- Errors will occur/ let it crash
- The system must keep running
Mike Williams wrote the first C-based VM in 1991
In 1992 the first commercial Erlang-based project (cordless phone mobility product) was started and was launched in 1994
In 1995, Erlang was mature enough to be used in larger telephony projects
The OTP libraries were released in 1996
In 1998, the AXD301 switch was announced, and reportedly has 1-2 million lines of Erlang and achieved nine 9's uptime
In early 1998, Ericsson banned Erlang for new products, citing a want to be a consumer of software technologies, not a producer
Joe Armstrong and many of the Erlang team left Ericsson at that time
In late 1998, Erlang and OTP were released under an Open Source license and have been freely available ever since
Subsequently the ban has been lifted and Armstrong rejoined Ericsson in 2004
Erlang, as a language, is fairly simple and concise
- Sequential subset
- strictly evaluated
- has a simple dynamic, yet strong type system
- has single assignment on 'variables'
- has its concurrency features built into the language and type system themselves (not a library)
- spawning, linking and message passing between light-weight processes
But is it a functional language?
Erlang doesn't have the functional programming machinery of Haskell or Scala...
...but it's certainly not without plenty of features you'd expect in a language that is functional...
...and the sequential sub-set of the language can be considered functional
Functional language features
- Lambda expressions and closures are simple...
- ...but currying and partial application are hard, if not impossible
- powerful pattern matching, moving conditional logic to the outside of functions
- strictly/ eagerly evaluated, so no infinite lists etc
- functions, while declarative and SSA, are impure, side effects can occur in any context, deep in the call stack...
- ...but it could be argued, however, that side-effects (such as I/O) occur only in the concurrent part of the language (through the actor/ process interface [more later])
- Dialyzer - static code analysis and type checking
Selected features in (a little) detail
Modules
- are the unit of compilation in Erlang
- are a collection of functions and other declarations and definitions
- have a name, and are implemented in a file called
moduleName.erl
- flat name space
A simple module
-module(my_module). % module name
% module attributes
-export([add/2, square/1, square_add/2, print_square/1]). % functions (with arity) to be exported
% function declarations
add(X,Y) ->
X + Y.
square(X) ->
X * X.
square_add(X,Y) ->
Z = add(X,Y),
square(Z).
print_square(X) ->
io:format("The square of ~p is: ~p\n", [X, square(X)]).
Compiling and using my_module
shell V5.10.3 (abort with ^G)
1> c(my_module).
{ok,my_module}
2> my_module:add(1,2).
3
3> my_module:square_add(3,5).
64
4> my_module:print_square(9).
The square of 9 is: 81
ok
5>
- Line 1 (
c(my_module).
) creates my_module.beam
, which is the byte-code file for the module that gets executed
-
my_module.beam
can also be generated by the Erlang compiler on the command-line with $erlc my_module.erl
Did you mean Recursion?
Erlang does not have loops, recursion is used instead
-module(factorial).
-export([fac/1]).
fac (0) -> 1;
fac (N) when N > 0 ->
N * fac(N-1).
Recursion and Tail-Call Optimisation
- In many languages, Erlang included, recursion is fraught with danger, as each recursive call consumes stack
- In many languages, Erlang included, an optimisation that can avoid this problem called Tail Call Optimisation (TCO), is included in the compiler
- If a recursive call is the final call in a function (a tail call), no stack is consumed
- The old stack frame is effectively replaced with the frame of the recursive call
Recursion and Tail-Call Optimisation
We can re-write factorial to use a tail-call, by introducing an accumulator, a standard FP pattern
-module(factorial).
% pretty much the same example as http://learnyousomeerlang.com/recursion
-export([fac/1, tail_fac/1]).
fac (0) -> 1;
fac (N) when N > 0 ->
N * fac(N-1).
tail_fac(N) -> tail_fac(N, 1).
tail_fac(0, Acc) -> Acc;
tail_fac(N, Acc) when N > 0 -> tail_fac(N-1, N*Acc).
- The tail-recursive version protects against excessive stack usage
- However, even with TCO, tail-recursive implementations are not necessarily faster than their body-recursive counterparts
Higher Order Functions (HOFs)
http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/David_Hasselhoff_2009.jpg/220px-David_Hasselhoff_2009.jpg
Higher Order Functions (HOFs)
Key functional programming capability - create, pass around and call functions as variables
Eshell V5.10.3 (abort with ^G)
1> Fa = fun (X) -> X + 1 end.
#Fun<erl_eval.6.80484245>
2> Fa(2).
3
Closures
- Annonymously-created functions remember their calling context
- This capability can be used to implement closures - functions that are 'customised' by their calling context to be used later
Closures
3> Fb = fun(X) -> fun(Y) -> X + Y end end.
#Fun<erl_eval.6.80484245>
4> Fc = Fb(5).
#Fun<erl_eval.6.80484245>
5> Fc(2).
7
6> Fd = Fb(10).
#Fun<erl_eval.6.80484245>
7> Fd(2).
12
8> Fc(2).
7
9>
List HoFs
lists
module
filter, map, foldl, foldr, foreach
Eshell V5.10.3 (abort with ^G)
1> lists:filter(fun (X) -> X > 3 end,[1,2,3,4,5,6]).
[4,5,6]
2> lists:map(fun (X) -> X * X end,[1,2,3,4,5,6]).
[1,4,9,16,25,36]
3> lists:foldr(fun (X,Z) -> X * Z end, 1, [1,2,3,4,5,6]).
720
4> SumList = fun (List) -> lists:foldr (fun (X, Z) -> X + Z end, 0, List) end.
#Fun<erl_eval.6.80484245>
5> SumList([1,2,3,4,5,6]).
21
6>
Let's leave the sequential subset behind, and look at concurrency
Concurrency
- Built into the language and runtime, not the OS and not a library
- The concurrency model is asynchronous message passing between light-weight processes
- Often referred to as the actor model
- Most of the well-known attributes of Erlang are based on it's concurrency implementation
The actor model
- Joe Armstrong refers to Erlang as "possibly the only object-oriented language" (Alan Kay OO):
- Encapsulation
- Message passing
- Actors are not purely functional, as the result of an asynchronous message is effectively of type
void
Spawning a process
Pid = spawn(module, function, [Argument0, Argument1, ..., ArgumentN]).
Pid
is the process identifier of the newly spawned process
Sending a message
Pid ! Message.
Message
can be any Erlang term
Receiving a message
receive
Pattern1 -> Expression1;
Pattern2 -> Expression2;
...
PatternN -> ExpressionN
end.
Maintaining state
loop(State) ->
receive
Pattern ->
NewState = some_code (State),
loop (NewState).
end.
Concurrency Example - a simple counter
-module(counter).
-export([create/0, start/0, delete/1, increment/1, count/1, reset/1]).
create () ->
spawn(?MODULE, start, []).
start () -> loop(0).
delete (Pid) ->
Pid ! delete,
ok.
increment (Pid) ->
Pid ! increment,
ok.
count (Pid) ->
Pid ! {count, self()},
receive
{Pid,{count, Count}} ->
Count;
_ -> error
end.
reset (Pid) ->
Pid ! reset,
ok.
loop(Count) ->
receive
delete ->
ok;
increment ->
loop (Count+1);
{count, Pid} ->
Pid ! {self(),{count, Count}},
loop (Count);
reset ->
loop (0);
Unexpected ->
io:format ("Unexpected message: ~p~n", [Unexpected]),
loop (Count)
end.
Two processes - one module
Process interaction for the count function
Process links
- Links can be made between processes
- If a process dies, all processes linked to it are notified, and by default die too
link(Pid)
or Pid = spawn_link(M,F,[A])
- A process can be made a 'system process' meaning it won't die if a linked process dies
Process links
http://www.erlang.org/course/error05.gif
Erlang has a runtime system
that (among many other things):
- implements light-weight processes and message passing
- efficiently utilises multi-core systems to achieve parallelism on top of concurrency
- can scale from multi-core to distributed with very little (if any) code change
- allows new/ improved code to be hot-loaded
- has multiple facilities to integrate with other languages, esp C/C++
ERTS - Erlang Runtime System
- written in C
- BEAM - Bogdan's Erlang Abstract Machine (VM)
- compilation to byte code
- originally just interpreted, as it was viewed that the BEAM interpreter was fast enough
- more recently, a native JiT compiler has been used (HiPE)
- From now on in this talk VM, BEAM and ERTS are synonymous
Erlang Processes
- Erlang processes are light-weight processes, ~300 words memory overhead each, created in microseconds
- VM manages message passing between processes...
- ...by copying the message (in memory) from process to process in a lock-free manner
- Not all light-weight process or actor libraries are the same...
- unlike, say Akka, Erlang processes are isolated from each other and won't crash the whole VM
Concurrency and Parallelism
- VM is a single OS process
- before the days of multi-core CPUs and Symmetrical Multi-Processing (SMP)
- processes ran concurrently, but not in parallel
- more VM instances on remote machines was the only way to be parallel
- since multi-core and SMP
- VM is multi-threaded and can execute processes in parallel
- VM has one thread per CPU core for processes, plus other system threads
- did not require a change in the language, only in the VM
Processes schedulers
- each thread in the VM for running processes has a scheduler
- the scheduler handles scheduling a pool of processes in a run queue
- n:m mapping between Erlang processes and OS threads
- processes can be moved between threads to load balance
Processes schedulers
http://learnyousomeerlang.com/static/img/schedulers.png
Memory Management
The VM manages memory automatically and is garbage-collected (generational copying garbage collector)
- two alternating duty heaps, only active memory is copied from one to the other when they switch
- two generations of the heap are maintained, current and old
- the current generation is considered to be more likely to be transient memory
- two garbage collector sweeps are executed on different conditions
- shallow GC: as needed, only looks at the current generation, after three GCs current will become old
- deep GC: checks old as well, only triggered when shallow does not recycle enough memory
Memory Management cont'd
- process isolation means individual processes can be stopped for GC without others being affected
- short lived processes may never be GC'd (just deallocated)
- small processes are quick to GC
Hot module reloading
- The VM can detect when a .beam file has changed and load it into the system
- Only two versions of the code can be maintained in the system (old and new)
- The old version of the module still exists and is used by an processes making local calls to its functions
- An external call to the module (
module:function(Arguments)
) will use the new version
- This is the extent of the basic hot code loading capability in Erlang
Distributed Erlang
- Each ERTS instance is called a node
- clusters of nodes can be created and include location services etc
- remotely spawning a process has a similar interface to locally
Pid = spawn(Node, Module, Function, [Arguments]).
- Pids are location transparent
Interfacing with native code - C/C++
- NIFs: Natively Implemented Functions
- allows a C/C++ object file with a set of functions to be loaded into a running VM
- native functions are called as if they were Erlang functions
- if the native code fails, the VM will crash
- Port Programs
- allows a C/C++ program to interface with the VM through stdin/out
- appears to be a normal Erlang process to Erlang code
- completely isolated at the OS process level
- Linked In Port Drivers
- allows a C/C++ object file with a set of functions to be loaded into a running VM
- appears to be a normal Erlang process to Erlang code
- if the native code fails, the VM will crash
Interfacing with other languages
- Java - jInterface
- OTP.NET
- Py-Interface
- Perl Erlang Port
- PHP/Erlang
- Haskell/Erlang FFI
- ...
The Open Telecom Platform (OTP) Libraries
The OTP libraries
are a set of well-tested libraries (and design principles) that actually allow the Erlang platform to do what it says it can do on the box:
- fault-tolerance
- high availability and up-time
- granular management of highly-concurrent systems
- live patching of systems in production!
- web-scale!
OTP is the recommended only sane way to develop non-trivial Erlang-based production software
Despite its name, OTP is not domain-specific to Telecom applications
Why use OTP?
- Writing robust concurrent code by hand with spawns, !, receive, links and monitors for each service is cumbersome and error prone
- A simple synchronous call to a process to do some work and return a result could be a dozen lines of code to make fault-tolerant
- buggy receive blocks can leave messages on the queue and leak memory
- body-recursive function calls can blow the stack
- The OTP libraries provide a framework to do concurrency robustly, in a well-thought out and well-tested way
- The programmer is forced to think about process interaction and reliability
OTP process modules
To build an OTP application, several process modules need to be written
- Supervisor - process that supervises other processes
- Worker - process that implements application functionality
- These modules must conform to behaviours, which are like contracts or interfaces, promising certain callback functions have been implemented
OTP supervisors
- OTP supervisors are the core component of OTP's fault tolerance capabilities
- supervisors are processes that monitor the state of a set of other processes, and take action if they crash
- let the process crash and do nothing
- restart the process that crashed
- restart the process that crashed as well as some other related processes
- processes under supervision can be workers (processes that implement functionality) or other supervisors
- the supervision relationship then forms a tree, with workers at the leaf nodes
Supervision Tree
http://learnyousomeerlang.com/static/img/sup-tree.png
Worker processes - gen_servers
- gen_server is one kind of worker behaviour - for processes that will receive messages and do work
- there are callbacks for messages that can be synchronous or asynchronous
- initialisation, termination and code upgrade callbacks are also included
- the call chain from a client process to a gen_server process and back is a little confusing at first
gen_servers - creating
- through an API or at startup, a request is made to a supervisor to spawn a gen_server instance
- the request goes via the OTP system back to the gen_server module and calls the init callback
- the spawned gen_server process is linked to the supervisor
gen_servers - accessing functionality
- through the developer's gen_server instance API, client calls (synchronous) or casts (asynchrous) are made
- the calls and casts go from the client process via the OTP system, which finds the correct gen_server process and calls the appropriate callback
- the response to the call or cast (if any) goes back via OTP to the client process
OTP applications
are a set of supervisors, workers and supporting modules that make up a self-contained OTP application
- specify a code directory structure
- specify the supervisors and other modules of the application
- start (usually by starting the root supervisor) and stop the application
Example - Upgrading the counter service to use OTP
- implement an OTP application and OTP supervisor for fault-tolerance
- a counter process becomes an OTP gen_server to avoid the manual fault-tolerance pitfalls
- abstract away from direct Pid references to counter processes
Counters Application
Consists of a .app file specifying the app
{application, counters,
[
{description, ""},
{vsn, "1.1.1"},
{modules, [
counters_app,
counters_sup,
counter_store,
counter,
counters
]},
{registered, [counters_sup]},
{applications, [
kernel,
stdlib
]},
{mod, {counters_app,[]}}
]}.
and an application.erl file for starting the root supervisor
-module(counters_app).
-behaviour(application).
-export([start/2, stop/1]).
start(_StartType, _StartArgs) ->
counter_store:init(),
case counters_sup:start_link() of %starts root supervisor
{ok, Pid} ->
{ok,Pid};
Other ->
{error, Other}
end.
stop(_State) ->
ok.
Counters Supervisor implementation
Two main duties:
- implements supervisor and counter gen_server start logic
- specifies the behaviour of the supervisor with regards to restarting children (counter gen_server workers)
Counters Supervisor
-module(counters_sup).
-behaviour(supervisor).
-export([start_link/0, start_child/1, start_test/0]).
-export([init/1]).
-define(SERVER, ?MODULE).
start_link() ->
supervisor:start_link({local, ?SERVER}, ?MODULE, []).
start_child(Name) ->
supervisor:start_child(?SERVER, [Name]).
start_test() ->
counter_store:init(),
{ok, Pid} = supervisor:start_link({local, ?SERVER}, ?MODULE, []),
unlink(Pid).
init([]) ->
Counter = {counter, {counter, start_link, []}, permanent, 1000
, worker, [counter]},
Children = [Counter],
RestartStrategy = {simple_one_for_one, 10 , 10},
{ok, {RestartStrategy, Children}}.
All the OTP supervisor goodness is handled by the OTP libraries
Counter gen_server implementation
- The counter gen_server is where the original message-handling logic will be ported
- Convention lays out the gen_server file into three sections
- Header - exports, definitions, data structures
- API - functions that abstract the gen_server's function and call into OTP
- Callback - functions that implement the required gen_server behaviors
Counter gen_server header section
-module(counter).
-behaviour(gen_server).
-export([start_link/1, create/1, delete/1, increment/2, count/1, reset/1]).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
-define(SERVER, ?MODULE).
-record(state, {name, count}).
Counter gen_server API section
start_link(Name) ->
gen_server:start_link(?MODULE, [Name], []).
create (Name) ->
counters_sup:start_child(Name).
delete (Pid) ->
gen_server:cast(Pid, delete).
increment (Pid, N) ->
gen_server:cast(Pid, {increment, N}).
count (Pid) ->
gen_server:call(Pid, count).
reset (Pid) ->
gen_server:cast(Pid, reset).
Counter gen_server Callback section
init ([Name]) ->
io:format("init on a counter called: ~p~n", [Name]),
counter_store:insert(Name, self()),
{ok, #state{name=Name, count=0}}.
handle_call (count, _From, State) ->
Count = State#state.count,
{reply, {ok, Count}, State}.
handle_cast (delete, State) ->
{stop, normal, State};
handle_cast ({increment, N}, State) ->
Count = State#state.count,
NewCount = Count + N,
{noreply, State#state{count = NewCount}};
handle_cast (reset, State) ->
Name = State#state.name,
{noreply, State#state{count = 0}}.
- the callbacks implement the counter's functionality in place of the receive block in the non-OTP example
Counter gen_server Callback section cont'd
handle_info(timeout,State) ->
{stop, normal, State}.
terminate(_Reason, _State) ->
counter_store:delete(self()),
ok.
code_change(_OldVsn, State, _Extras) ->
{ok, State}.
handle_info
handles out-of-band messages (those that don't match the handle_call
or handle_cast
function clauses
code_change
is a hook to allow the programmer to handle upgrades to code - it is mainly for handling changes to the shape of the gen_server's state
Application API
Convention is to abstract into an API that hides the OTP details
-module(counters).
-export([create/1, delete/1, increment/1, increment/2,
decrement/1, decrement/2, count/1, reset/1]).
create (Name) ->
case counter_store:lookup(Name) of
{ok, _Pid} ->
{error, counter_exists};
{error, _} ->
{ok, Pid} = counter:create(Name),
{ok, Pid}
end.
delete (Name) ->
case counter_store:lookup(Name) of
{ok, {Pid, _}} ->
counter:delete(Pid),
counter_store:delete(Pid);
{error, _} ->
ok
end.
% ...
Counter store to abstract away from Pids
The API should not use Pids directly, so use ETS to map counter names to Pids
-module(counter_store).
% adapted from Logan, Merritt & Carlsson, Erlang & OTP in Action, Manning, 2011
-export([init/0, insert/2, lookup/1, delete/1]).
-define(TABLE_ID, ?MODULE).
init() ->
ets:new(?TABLE_ID,[public,named_table]),
ok.
insert(Name, Pid) ->
ets:insert(?TABLE_ID, {Name, Pid}).
lookup(Name) ->
case ets:lookup(?TABLE_ID, Name) of
[{Name, Pid}] -> {ok, Pid};
[] -> {error, not_found}
end.
delete(Pid) ->
ets:match_delete(?TABLE_ID, {'_', Pid}).
Calls between client and server
Example session of the Counters application
Eshell V5.10.3 (abort with ^G)
1> counters_sup:start_test().
true
2> counters:create(c1).
init on a counter called: c1
{ok,<0.38.0>}
3> counters:count(c1).
{ok,0}
4> counters:increment(c1,5).
ok
5> counters:count(c1).
{ok,5}
When something goes wrong
6> counters:increment(c1,crash).
=ERROR REPORT==== 29-Oct-2013::01:03:03 ===
** Generic server <0.38.0> terminating
** Last message in was {'$gen_cast',{increment,crash}}
** When Server state == {state,5}
** Reason for termination ==
** {badarith,[{counter,handle_cast,2,[{file,"src/counter.erl"},{line,52}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,604}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}
init on a counter called: c1
ok
7> counters:count(c1).
{ok,0}
8>
When something goes wrong
- Because we have a restart of permanent in the child specification, the supervisor restarts our counter
- However, the supervisor does not automatically restore state, so the counter is back at it's initial condition (0)
- This is by design: it is unsafe to restore state automatically (it could be state that caused the crash)
- The programmer must decide how to persist state, such as through ETS tables or separation of state and code processes
When something goes wrong
By way of a quick modification, the Counters gen_server, store and API can be modified to effectively (re)store values from the ETS table
Eshell V5.10.3 (abort with ^G)
1> counters_sup:start_test().
true
2> counters:create(c1).
init on a counter called: c1
{ok,<0.36.0>}
3> counters:increment(c1,5).
ok
4> counters:count(c1).
{ok,5}
5> counters:increment(c1,crash).
init on a counter called: c1
ok
6>
=ERROR REPORT==== 29-Oct-2013::02:17:12 ===
** Generic server <0.36.0> terminating
** Last message in was {'$gen_cast',{increment,crash}}
** When Server state == {state,c1,5}
** Reason for termination ==
** {badarith,[{counter,handle_cast,2,[{file,"src/counter.erl"},{line,59}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,604}]},
{proc_lib,init_p_do_apply,3,
[{file,"proc_lib.erl"},{line,239}]}]}
6> counters:count(c1).
{ok,5}
7>
Summarising OTP
- OTP-ising an application is not trivial at first
- the call flow is a little confusing
- there are overheads in terms of time and effort to get an OTP application right
- but all seasoned Erlangers will urge newcomers to put in the effort - OTP applications play nicer with the wider Erlang ecosystem
Summarising OTP
But wait, there's still more...
- gen_fsm - Finite State Machine behaviour
- gen_event - Event system behaviour
- beyond applications - releases etc
- clustering
- Mnesia - distributed database built on ETS and DETS
Some Erlang Users
- Telecom
- Ericsson
- Nortel
- T-Mobile
- Motorola
- Gaming
- Vendetta Online
- Battlestar Galactica
- Call of Duty
- Chat / Social Media
- Facebook (formerly)
- Yahoo
- WhatsApp
Some Erlang Projects
- Web
- Yaws - web server
- Mochiweb - web server
- Webmachine - web framework
- Cowboy - web server
- Chicago Boss - Rails-like web framework
- Zotonic - CMS
Some Erlang Projects
- Database
- CouchDB and derivatives (some moving mostly to C/C++) - document database
- Riak - distributed K-V store
- SimpleDB - distributed DB in AWS
- Configuration management - Chef v.11
- Queuing - RabbitMQ
If you're only going to learn one functional language...
Consider your situation...
- If you want to learn hardcore FP principles - Learn You A Haskell
- But if your...:
- ...Ruby on Rails project doesn't scale...
- ...Node JS project scales but is a mess of tangled slinkies... *
- ...Akka project is elegant but keeps crashing your JVM...
- ...C/C++ library is wicked-fast but needs orchestration, scaling and a nice interface...
- ...organisation's latest killer service/ web app needs to be robust and scalable...
- ...then Erlang and OTP may be for you
* - Stolen from Gar1t
Resources
Resources
- Books - some really original names here!
- Highly Recommended:
- For general reference:
- Programming Erlang - Joe Armstrong
- Erlang Programming - Cesarini & Thompson
Resources
Thanks
- to OJ and Darren Mackay for getting me interested in Erlang
- to Ben, Katie and Matt for help and feedback


| < Day Day Up > |
Bollobás [44], Hofri [151], and Spencer [283] contain a wealth of advanced probabilistic techniques. The advantages of randomized algorithms are discussed and surveyed by Karp [174] and Rabin [253]. The textbook by Motwani and Raghavan [228] gives an extensive treatment of randomized algorithms.
Several variants of the hiring problem have been widely studied. These problems are more commonly referred to as "secretary problems." An example of work in this area is the paper by Ajtai, Meggido, and Waarts [12].
| < Day Day Up > |


Mom posts lonely autistic son asking 'Would someone like me?,' draws viral support
by Gerren Keith GaynorA Florida mother’s viral tweet about her lonely autistic son asking if people would “like” him has inspired a flood of messages of support from strangers online.
Kerry Bloch’s 21-year-old son, David, had been nonverbal most of his life and had grown lonely after developing severe immunodeficiency disorder that caused him to be home-schooled and isolated from other kids in Neptune Beach.
"His grandma lived with us for five years after her stroke. She passed a little over a year ago, so now it’s just the three of us," Bloch exclusively told Fox News on Saturday. "We are pretty isolated here and have prayed continually that David would find friends."
UNITED AIRLINES CREW, PASSENGERS BEFRIEND TEXAS BOY WITH AUTISM WHO WOULDN'T SIT IN SEAT
David, who speaks only when prompted, gave his parents, Kerry and Robert, quite the surprise when he spontaneously asked them a question for the first time: “Would someone like me?”
When Bloch took to Twitter to share a picture of David and his heartfelt question, she didn’t expect it would garner thousands of retweets and responses from people around the world.
“Tell David, he has a friend from London... and my family. Much love,” one user tweeted with a picture of himself and his three children.
Many other responses came from people who also have loved ones with autism.
“My son is Autistic too. He's 30 years old and works a part time job on the local Navy base, he assembles lens for glasses,” tweeted another user. “We [love] you David!”
“Oh, my goodness. This is so beautiful! Your son gives me hope. My nephew (8) is also autistic and nonverbal, and works SO HARD every day,” another person wrote. “We love him so fiercely and pray he will find his voice. What an inspiration you are! What a hero!”
Even Rosie O’Donnell replied to the viral tweet, writing “i like u” with a heart and a thumbs-up emoji.
Bloch told Fox News she and she and her family are “overwhelmed” by the online support. “The outpouring of love for our son is mind-boggling,” she said.
FOLLOW US ON FACEBOOK FOR MORE FOX LIFESTYLE NEWS
Though the replies continue to flood Bloch's post, she said they are still trying to thank everyone individually.
“David doesn’t ever want to leave anyone out,” she said. “But it might take a while.”


06-Aug-2017 | Milku
But probably should be doing it for each other today.
Today is Sisters' Day. Not that you'd know it in our house. My little humans haven't been enjoying each other's company more than usual. And there don't seem to be any plans for a big celebration of their sisterhood. But they're not fighting after spending 2 full weeks of the summer holidays in each other's company... So I'll be celebrating that at least.
As for my sisters...I'll never know who Pets@Home sold them too. But I hope they get an extra special treat today. I'll be thinking of them as I chew my seed cornet.


gene RSV expression NHB genes virus viral infection cells infected ;():–. MDM syncytial respiratory response clinical data induction isolates Fig innate immune human IL- strains RNA viruses []. infection. analysis used CCL cell time Virol. post using host hours cellular protein genome differences transcription {border-style acid (Fig induced px;} #ffffff;} NHB. Respiratory disease duplication determined (donor Sciences cytokine donors interferon represents times Biology activation pathogenesis NHB, associated compared described did early expressed subgroup Fig). Life RNA-SEQ amino induce inducers�? number obtained strain transcriptome "low (A) based children different identified macrophages observed phenotype severity specific Gene Immune NHB-infected RNA-SEQ. Viral analyses displayed epithelial extracted reads study variations Infect additional base blood chemokine factor including infection, position production replication role sequence single virus. "high ./JVI.- CXC Click Clinical Genes LINK RSV. University antibody demonstrated differ file. genetic genome. immunity infants levels normalization patterns polymorphism polymorphisms presented profiles px; responses review standard suggesting type up-regulated {font-family (B) (PPTX) (RSV) ./JVI...-. Functional Host Medical RSV, Texas Virus adaptive case cells. consistent cytokines designated differential donor dynamics example, font-size genes. genomic greater isolated level low map media pathways performed point points post-infection primary relatively variety viruses. (e.g. ;:doi: Amino Analysis AndersonLJ. Cytokines Dallas, Dis. Expression Immunol. MDM, RSV-neutralizing Southwestern TrippRA. capacity cells, culture curationFormal dependent difference distinct double; factors following functional gene. given highly inflammatory lower measured methods part, proteins region sequences significantly strains. studies transcriptional variability (), BALB/c CCL, Center, Furthermore, MDM. Overall, Transcriptome TrippRA, antiviral biological border-color border-width changes containing contribute control determine down-regulated entry error expression. figure. gradient high included incubated indicating investigation isolate kinetics lead left likely lung magnitude manufacturer’s mapped mock monocyte-derived phylogenic pulmonary quantitative regulated related response, response. responsible severe shown similar solid; suppression use virulence young {font-style {font-weight (NHB), (RANTES) (forward) ;(). ;():edoi: American B). Consistent Department Ebola Genetics Genome Health JonesLP, M-CSF MDMs NHB) One. Pathway Protein RANTES RT-PCR States Syncytial Table, United [–]. ability according advantage al.A and/or animal appear appeared background bars biology. bold chemokines collected color column concentration concentrations corresponds courier; data, defined determined. differs em; encoded end essential evolutionary favorable fingerprint follows: glycoprotein housekeeping identical identification immunity, increased indicate indicated inducers inflammation internal key laboratory late location mediates mice. motif multiple nearly normalized nucleotide original pathogenic portion potential prepared previous previously procedure pt;} receptor recognition, remains represent responses. results revealed right secreted selected significant stimulated stocks supporting susceptibility van vs. years


Progressive Rock Top Albums / all subgenres - all record types - 2007 - all countries
Based on members ratings & PA algorithm
Here is some details about how we calculate the average rating of an album and the rank of an album.
-
Average rating: The classic calculation of the average but more weight is affected to the rating of progarchives.com collaborators and to rating with reviews.
- Rating only: Weight = 1
- Review by members : Weight = 10
- Review by PA Collaborators : Weight = 20
- Rank of an album: We use a calculation that compare an album average rating and number of ratings over all others albums in the query using this theory (http://en.wikipedia.org/wiki/Weighted_average) to create a variable every query "QWR" (AKA: Query Weighted Rating) use for ordering.
- By default, only albums with the average ratings above the average ratings of the requested query are displayed in theses lists, you can control this value in the parameters
| Rank | Cover | Ratings | Title Artist |
Genre (Record Type) |
BUY |
| 1 |
4.24 | 2188 ratings
QWR = 4.2312
|
Fear Of A Blank Planet Porcupine Tree |
Heavy Prog Studio, 2007 |
Shop | |
| 2 |
4.31 | 227 ratings
QWR = 4.2227
|
Hiromi's Sonicbloom: Time Control Hiromi Uehara |
Jazz Rock/Fusion Studio, 2007 |
Shop | |
| 3 |
4.23 | 848 ratings
QWR = 4.2095
|
Doomsday Afternoon Phideaux |
Crossover Prog Studio, 2007 |
Shop | |
| 4 |
4.19 | 511 ratings
QWR = 4.1551
|
Ziltoid The Omniscient Devin Townsend |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 5 |
4.18 | 545 ratings
QWR = 4.1516
|
Sola Scriptura Neal Morse |
Symphonic Prog Studio, 2007 |
Shop | |
| 6 |
4.12 | 518 ratings
QWR = 4.0950
|
Night Gazpacho |
Crossover Prog Studio, 2007 |
Shop | |
| 7 |
4.13 | 228 ratings
QWR = 4.0662
|
The Hemulic Voluntary Band Ritual |
Crossover Prog Studio, 2007 |
Shop | |
| 8 |
4.14 | 163 ratings
QWR = 4.0555
|
Quantum Planet X |
Jazz Rock/Fusion Studio, 2007 |
Shop | |
| 9 |
4.09 | 360 ratings
QWR = 4.0478
|
Empires Never Last Galahad |
Neo-Prog Studio, 2007 |
Shop | |
| 10 |
4.20 | 82 ratings
QWR = 4.0353
|
The Apocalypse Inside of an Orange Omar Rodriguez-Lopez |
Eclectic Prog Studio, 2007 |
Shop | |
| 11 |
4.22 | 73 ratings
QWR = 4.0326
|
Viides Luku - Hävitetty Moonsorrow |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 12 |
4.20 | 75 ratings
QWR = 4.0265
|
Indígena Mar de Robles |
Jazz Rock/Fusion Studio, 2007 |
Shop | |
| 13 |
4.09 | 185 ratings
QWR = 4.0237
|
A Gentleman's Hurricane Mind's Eye |
Progressive Metal Studio, 2007 |
Shop | |
| 14 |
4.05 | 432 ratings
QWR = 4.0179
|
Sleeping In Traffic: Part One Beardfish |
Eclectic Prog Studio, 2007 |
Shop | |
| 15 |
4.18 | 82 ratings
QWR = 4.0177
|
Pilgrim Trion |
Symphonic Prog Studio, 2007 |
Shop | |
| 16 |
4.08 | 181 ratings
QWR = 4.0124
|
The Origins Of Ruin Redemption |
Progressive Metal Studio, 2007 |
Shop | |
| 17 |
4.10 | 148 ratings
QWR = 4.0101
|
The Machinations of Dementia Blotted Science |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 18 |
4.10 | 128 ratings
QWR = 4.0016
|
Calling the Earth to Witness Darkwater |
Progressive Metal Studio, 2007 |
Shop | |
| 19 |
4.02 | 330 ratings
QWR = 3.9838
|
Colors Between The Buried And Me |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 20 |
4.02 | 281 ratings
QWR = 3.9798
|
Frames Oceansize |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 21 |
4.02 | 217 ratings
QWR = 3.9680
|
Shadows of the Sun Ulver |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 22 |
4.04 | 143 ratings
QWR = 3.9633
|
Si Partie II - L'Homme Idéal Nemo |
Eclectic Prog Studio, 2007 |
Shop | |
| 23 |
4.09 | 82 ratings
QWR = 3.9541
|
Fas - Ite, Maledicti, in Ignem Aeternum Deathspell Omega |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 24 |
4.11 | 70 ratings
QWR = 3.9512
|
Cortical Tectonics Canvas Solaris |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 25 |
4.13 | 58 ratings
QWR = 3.9451
|
Senogul Senogul |
Eclectic Prog Studio, 2007 |
Shop | |
| 26 |
4.14 | 55 ratings
QWR = 3.9434
|
The Black Tomato Øresund Space Collective |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 27 |
3.99 | 215 ratings
QWR = 3.9389
|
Act II: The Meaning Of, And All Things Regarding Ms. Leading The Dear Hunter |
Crossover Prog Studio, 2007 |
Shop | |
| 28 |
4.12 | 55 ratings
QWR = 3.9285
|
Burning Off Impurities Grails |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 29 |
4.18 | 40 ratings
QWR = 3.9207
|
Endangered Far Corner |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 30 |
4.05 | 76 ratings
QWR = 3.9192
|
Fables from a Mayfly: What I Tell You Three Times Is True Fair To Midland |
Crossover Prog Studio, 2007 |
Shop | |
| 31 |
4.03 | 89 ratings
QWR = 3.9182
|
Concerto Grosso, The Seven Seasons New Trolls |
Rock Progressivo Italiano Studio, 2007 |
Shop | |
| 32 |
4.13 | 47 ratings
QWR = 3.9174
|
Two Hunters Wolves in the Throne Room |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 33 |
3.98 | 167 ratings
QWR = 3.9152
|
Voice In The Light Amaran's Plight |
Progressive Metal Studio, 2007 |
Shop | |
| 34 |
4.10 | 54 ratings
QWR = 3.9151
|
Grindstone Shining |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 35 |
4.10 | 54 ratings
QWR = 3.9147
|
5th Season Dreamscape |
Progressive Metal Studio, 2007 |
Shop | |
| 36 |
3.99 | 135 ratings
QWR = 3.9142
|
Sound of the Apocalypse Black Bonzo |
Heavy Prog Studio, 2007 |
Shop | |
| 37 |
3.94 | 338 ratings
QWR = 3.9123
|
A Time Of Day Anekdoten |
Heavy Prog Studio, 2007 |
Shop | |
| 38 |
4.23 | 31 ratings
QWR = 3.9119
|
Supervillain Outcast Dødheimsgard |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 39 |
4.03 | 79 ratings
QWR = 3.9030
|
Leaving Eden Antimatter |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 40 |
3.96 | 154 ratings
QWR = 3.9011
|
2nd Hands The Gourishankar |
Eclectic Prog Studio, 2007 |
Shop | |
| 41 |
3.98 | 124 ratings
QWR = 3.9009
|
The End Is Begun Three |
Crossover Prog Studio, 2007 |
Shop | |
| 42 |
4.01 | 86 ratings
QWR = 3.8956
|
En avant doute... Lazuli |
Eclectic Prog Studio, 2007 |
Shop | |
| 43 |
3.95 | 161 ratings
QWR = 3.8903
|
Paramount Sieges Even |
Progressive Metal Studio, 2007 |
Shop | |
| 44 |
4.11 | 41 ratings
QWR = 3.8880
|
Buenos Aires Free Experience Volumen 2 Nexus |
Symphonic Prog Studio, 2007 |
Shop | |
| 45 |
3.92 | 227 ratings
QWR = 3.8778
|
Into The Night Satellite |
Neo-Prog Studio, 2007 |
Shop | |
| 46 |
3.97 | 91 ratings
QWR = 3.8753
|
Ugisiunsi Quantum Fantay |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 47 |
3.99 | 73 ratings
QWR = 3.8731
|
Precambrian The Ocean |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 48 |
3.95 | 114 ratings
QWR = 3.8692
|
The Divine Conspiracy Epica |
Progressive Metal Studio, 2007 |
Shop | |
| 49 |
4.10 | 36 ratings
QWR = 3.8637
|
Sea of the Dying Dhow shels |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 50 |
4.00 | 61 ratings
QWR = 3.8613
|
Eidolon Rishloo |
Crossover Prog Studio, 2007 |
Shop | |
| 51 |
3.93 | 118 ratings
QWR = 3.8590
|
Souvenirs d'un Autre Monde Alcest |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 52 |
3.91 | 164 ratings
QWR = 3.8570
|
Under A New Sign Knight Area |
Neo-Prog Studio, 2007 |
Shop | |
| 53 |
4.02 | 50 ratings
QWR = 3.8547
|
Stromatolite Outer Limits |
Symphonic Prog Studio, 2007 |
Shop | |
| 54 |
3.93 | 105 ratings
QWR = 3.8515
|
In Glorious Times Sleepytime Gorilla Museum |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 55 |
4.06 | 38 ratings
QWR = 3.8497
|
Chain Of Foods Anti-Depressive Delivery |
Heavy Prog Studio, 2007 |
Shop | |
| 56 |
3.92 | 122 ratings
QWR = 3.8491
|
Hope Myrath |
Progressive Metal Studio, 2007 |
Shop | |
| 57 |
3.96 | 73 ratings
QWR = 3.8482
|
After Forever After Forever |
Progressive Metal Studio, 2007 |
Shop | |
| 58 |
4.06 | 37 ratings
QWR = 3.8469
|
Six Litanies For Heliogabalus Moonchild Trio |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 59 |
4.08 | 34 ratings
QWR = 3.8426
|
The Stolen View Leech |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 60 |
4.06 | 35 ratings
QWR = 3.8397
|
Once We Were Born ... The Divine Baze Orchestra |
Heavy Prog Studio, 2007 |
Shop | |
| 61 |
4.09 | 30 ratings
QWR = 3.8350
|
Of All The Mysteries Singularity |
Crossover Prog Studio, 2007 |
Shop | |
| 62 |
3.97 | 54 ratings
QWR = 3.8330
|
Neo La Torre Dell Alchimista |
Rock Progressivo Italiano Studio, 2007 |
Shop | |
| 63 |
3.93 | 77 ratings
QWR = 3.8315
|
Oblivion Sun Oblivion Sun |
Eclectic Prog Studio, 2007 |
Shop | |
| 64 |
3.92 | 76 ratings
QWR = 3.8255
|
Songs from the Bilston House Manning |
Eclectic Prog Studio, 2007 |
Shop | |
| 65 |
3.86 | 189 ratings
QWR = 3.8219
|
What We Have Sown Pineapple Thief |
Crossover Prog Studio, 2007 |
Shop | |
| 66 |
3.99 | 43 ratings
QWR = 3.8216
|
Proof Of Concept KBB |
Jazz Rock/Fusion Studio, 2007 |
Shop | |
| 67 |
4.02 | 37 ratings
QWR = 3.8208
|
Waterline Alex Carpani Band |
Symphonic Prog Studio, 2007 |
Shop | |
| 68 |
3.92 | 67 ratings
QWR = 3.8171
|
Far From Refuge God Is An Astronaut |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 69 |
3.90 | 90 ratings
QWR = 3.8165
|
Maahan Alamaailman Vasarat |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 70 |
3.85 | 179 ratings
QWR = 3.8138
|
Dark Passion Play Nightwish |
Progressive Metal Studio, 2007 |
Shop | |
| 71 |
3.98 | 40 ratings
QWR = 3.8087
|
Blessed Are The Bonds The Pax Cecilia |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 72 |
4.00 | 36 ratings
QWR = 3.8080
|
Rational Diet Rational Diet |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 73 |
3.88 | 99 ratings
QWR = 3.8062
|
Andromeda Unchained Anubis Gate |
Progressive Metal Studio, 2007 |
Shop | |
| 74 |
3.87 | 107 ratings
QWR = 3.8051
|
Crossroad Apple Pie |
Neo-Prog Studio, 2007 |
Shop | |
| 75 |
4.02 | 30 ratings
QWR = 3.7987
|
Sei Lacrime d'Ambra NotaBene |
Rock Progressivo Italiano Studio, 2007 |
Shop | |
| 76 |
3.88 | 83 ratings
QWR = 3.7983
|
The Eclectic Measure Hypnos 69 |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 77 |
4.03 | 29 ratings
QWR = 3.7981
|
More Skin With Milk-Mouth Giraffes? Giraffes! |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 78 |
3.81 | 486 ratings
QWR = 3.7921
|
In Rainbows Radiohead |
Crossover Prog Studio, 2007 |
Shop | |
| 79 |
3.89 | 58 ratings
QWR = 3.7864
|
The Fate Of Old Mother Orvis The Future Kings Of England |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 80 |
3.80 | 487 ratings
QWR = 3.7850
|
The Sum Of No Evil The Flower Kings |
Symphonic Prog Studio, 2007 |
Shop | |
| 81 |
3.95 | 36 ratings
QWR = 3.7827
|
Forbidden Drama byron |
Crossover Prog Studio, 2007 |
Shop | |
| 82 |
3.81 | 228 ratings
QWR = 3.7799
|
Thirteenth Star Fish |
Neo-Prog Studio, 2007 |
Shop | |
| 83 |
3.99 | 29 ratings
QWR = 3.7790
|
Morbus Electric Orange |
Krautrock Studio, 2007 |
Shop | |
| 84 |
3.93 | 40 ratings
QWR = 3.7764
|
Cycle I Setna |
Zeuhl Studio, 2007 |
Shop | |
| 85 |
3.88 | 60 ratings
QWR = 3.7764
|
Prominence and Demise Winds |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 86 |
3.88 | 56 ratings
QWR = 3.7761
|
Rito Vespero |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 87 |
3.80 | 231 ratings
QWR = 3.7747
|
Circus Of Life Magic Pie |
Symphonic Prog Studio, 2007 |
Shop | |
| 88 |
3.98 | 29 ratings
QWR = 3.7744
|
Hangman's Hymn - Musikalische Exequien Sigh |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 89 |
3.79 | 460 ratings
QWR = 3.7742
|
Paradise Lost Symphony X |
Progressive Metal Studio, 2007 |
Shop | |
| 90 |
3.87 | 59 ratings
QWR = 3.7715
|
Days Between Stations Days Between Stations |
Eclectic Prog Studio, 2007 |
Shop | |
| 91 |
3.85 | 79 ratings
QWR = 3.7714
|
Symetria Hidria Spacefolk |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 92 |
3.81 | 117 ratings
QWR = 3.7635
|
Mirrored Battles |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 93 |
3.91 | 36 ratings
QWR = 3.7597
|
Volume 7 Violeta De Outono |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 94 |
3.93 | 32 ratings
QWR = 3.7579
|
Rhythms from a Cosmic Sky Earthless |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 95 |
3.76 | 746 ratings
QWR = 3.7555
|
Rapid Eye Movement Riverside |
Progressive Metal Studio, 2007 |
Shop | |
| 96 |
3.78 | 153 ratings
QWR = 3.7493
|
Beneath the Veil of Winter's Face Mystery |
Neo-Prog Studio, 2007 |
Shop | |
| 97 |
3.86 | 45 ratings
QWR = 3.7452
|
Left To Burn Salva |
Crossover Prog Studio, 2007 |
Shop | |
| 98 |
3.77 | 172 ratings
QWR = 3.7400
|
Isolate Circus Maximus |
Progressive Metal Studio, 2007 |
Shop | |
| 99 |
3.86 | 38 ratings
QWR = 3.7337
|
Loneliness Dawn |
Symphonic Prog Studio, 2007 |
Shop | |
| 100 |
3.85 | 38 ratings
QWR = 3.7300
|
Artemisia Sun Caged |
Progressive Metal Studio, 2007 |
Shop | |
| 101 |
3.83 | 47 ratings
QWR = 3.7277
|
You, You're A History In Rust Do Make Say Think |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 102 |
3.82 | 50 ratings
QWR = 3.7274
|
Madre Tierra Flor de Loto |
Prog Folk Studio, 2007 |
Shop | |
| 103 |
3.86 | 35 ratings
QWR = 3.7262
|
II Aranis |
RIO/Avant-Prog Studio, 2007 |
Shop | |
| 104 |
3.80 | 61 ratings
QWR = 3.7239
|
Comicopera Robert Wyatt |
Canterbury Scene Studio, 2007 |
Shop | |
| 105 |
3.81 | 51 ratings
QWR = 3.7229
|
Se Dice Bisonte, No Bůfalo Omar Rodriguez-Lopez |
Eclectic Prog Studio, 2007 |
Shop | |
| 106 |
3.79 | 64 ratings
QWR = 3.7215
|
Kontinuum Klaus Schulze |
Progressive Electronic Studio, 2007 |
Shop | |
| 107 |
3.82 | 43 ratings
QWR = 3.7195
|
74 Giorni Conqueror |
Rock Progressivo Italiano Studio, 2007 |
Shop | |
| 108 |
3.80 | 53 ratings
QWR = 3.7191
|
Skullgrid Behold...The Arctopus |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 109 |
3.74 | 123 ratings
QWR = 3.7113
|
A Lullaby For The Devil DeadSoul Tribe |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 110 |
3.80 | 38 ratings
QWR = 3.7028
|
Kinesis Accordo Dei Contrari |
Jazz Rock/Fusion Studio, 2007 |
Shop | |
| 111 |
3.73 | 160 ratings
QWR = 3.7020
|
Alone Together Quidam |
Neo-Prog Studio, 2007 |
Shop | |
| 112 |
3.75 | 74 ratings
QWR = 3.7016
|
Close Grip The Gourishankar |
Eclectic Prog Studio, 2007 |
Shop | |
| 113 |
3.73 | 147 ratings
QWR = 3.7011
|
Good Apollo, I'm Burning Star IV, Volume Two: No World for Tomorrow Coheed And Cambria |
Crossover Prog Studio, 2007 |
Shop | |
| 114 |
3.73 | 96 ratings
QWR = 3.6946
|
Red Album Baroness |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 115 |
3.76 | 51 ratings
QWR = 3.6898
|
Moth Vellum Moth Vellum |
Symphonic Prog Studio, 2007 |
Shop | |
| 116 |
3.79 | 33 ratings
QWR = 3.6890
|
Grayceon Grayceon |
Experimental/Post Metal Studio, 2007 |
Shop | |
| 117 |
3.71 | 63 ratings
QWR = 3.6675
|
Hollow Little Atlas |
Neo-Prog Studio, 2007 |
Shop | |
| 118 |
3.75 | 31 ratings
QWR = 3.6620
|
Rokus Tonalis Aviva (Aviva Omnibus) |
Symphonic Prog Studio, 2007 |
Shop | |
| 119 |
3.73 | 33 ratings
QWR = 3.6575
|
1980 1980 |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 120 |
3.68 | 78 ratings
QWR = 3.6494
|
Ire Works The Dillinger Escape Plan |
Tech/Extreme Prog Metal Studio, 2007 |
Shop | |
| 121 |
3.68 | 58 ratings
QWR = 3.6432
|
Anima Spheric Universe Experience |
Progressive Metal Studio, 2007 |
Shop | |
| 122 |
3.66 | 83 ratings
QWR = 3.6339
|
03 A Trilogy Part 2 Dominici |
Progressive Metal Studio, 2007 |
Shop | |
| 123 |
3.69 | 30 ratings
QWR = 3.6323
|
Memory Ashes Pulsar |
Symphonic Prog Studio, 2007 |
Shop | |
| 124 |
3.64 | 80 ratings
QWR = 3.6231
|
Selling Insincerity Abigail's Ghost |
Heavy Prog Studio, 2007 |
Shop | |
| 125 |
3.63 | 256 ratings
QWR = 3.6218
|
The Difference Machine Big Big Train |
Crossover Prog Studio, 2007 |
Shop | |
| 126 |
3.65 | 50 ratings
QWR = 3.6202
|
Fantasy Introitus |
Neo-Prog Studio, 2007 |
Shop | |
| 127 |
3.63 | 196 ratings
QWR = 3.6189
|
Dead Reckoning Threshold |
Progressive Metal Studio, 2007 |
Shop | |
| 128 |
3.65 | 36 ratings
QWR = 3.6118
|
Nimrodel Almuadem |
Psychedelic/Space Rock Studio, 2007 |
Shop | |
| 129 |
3.63 | 62 ratings
QWR = 3.6074
|
The Rock SBB |
Eclectic Prog Studio, 2007 |
Shop | |
| 130 |
3.61 | 100 ratings
QWR = 3.5998
|
10.000 Days Saga |
Crossover Prog Studio, 2007 |
Shop | |
| 131 |
3.58 | 848 ratings
QWR = 3.5819
|
Snakes & Arrows Rush |
Heavy Prog Studio, 2007 |
Shop | |
| 132 |
3.59 | 33 ratings
QWR = 3.5799
|
The Bottom Half Umphrey's McGee |
Crossover Prog Studio, 2007 |
Shop | |
| 133 |
3.58 | 95 ratings
QWR = 3.5742
|
All of a Sudden I Miss Everyone Explosions In The Sky |
Post Rock/Math rock Studio, 2007 |
Shop | |
| 134 |
3.58 | 33 ratings
QWR = 3.5727
|
Dreamer Anton Roolaart |
Symphonic Prog Studio, 2007 |
Shop | |
| 135 |
3.58 | 36 ratings
QWR = 3.5726
|
I Början Och Slutet Trettioåriga Kriget |
Crossover Prog Studio, 2007 |
Shop |


WebSockets enable two-way communication between the user’s browser (the client) and a server. They can be used to enable dynamic, interactive web experiences. After reading and practicing, you should be able to:
onopen
event handler function to detect when the connection has been openedonmessage
event handler function to detect and process messages sent by the serveronerror
event handler function to detect when an error has occurredsend()
method to send messages to the serverclose()
method to close the connection to the serveronclose
event handler function to detect when the connection to the server has been closedws
package to create a standalone WebSocket serverws
package to create a WebSocket server that shares a Node.js http
server with an Express applicationconnection
event handler listener method to detect when a client has connected to the WebSocket serverclose
event handler listener method to detect when a client has closed the connection to the WebSocket serversend()
method to send a message to a client


{% extends "base.html" %} {% block title %}Run S-P.A.T.{% endblock %} {% load url from future %} {%block content %}
Here you can find already calculated s-profile analyses.


Source Exchange
MONEY CURRENCIES
CRYPTOCOINS
NEWS
ARTICLES
LOGIN
MONEY CURRENCIES
CRYPTOCOINS
NEWS
ARTICLES
USD
4.7165
EURO
5.5360
POUND
6.4088
BTC
$8.788
TOP GAINERS
BEYAZ
22,80
KERVT
2,77
SODSN
4,85
COSMO
1,20
ALYAG
0,69
TOP LOSERS
MCTAS
-11,99
KSTUR
-10,35
OZGYO
-10,10
ISFIN
-3,54
MEGAP
-1,70
CONVERTER
USD
EURO
GOLD GR.
BTC
USD
EURO
GOLD GR.
BTC
USD
EURO
GOLD GR.
BTC
LAST ARTICLES
John Doe
Every cryptocurrency’s nightmare scenario is happening to Bitcoin
Stephen West
Gold Has been planted!
Laurel Alice
Situation of USD after Trump and Xi Meeting
John Doe
Every cryptocurrency’s nightmare scenario is happening to Bitcoin
LATEST NEWS
Gold has been Planted!
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
The 2020's Might Be The Worst Decade
Quae aut cumque eveniet esse fugiat, repudiandae ipsa vero?
Every crypto’s nightmare scenario
Obcaecati temporibus aut quasi fuga distinctio, saepe deserunt quaerat
Gold markets have been very noisy
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
Show More...


{% extends "base_template.html" %} {% block content %}
Forecast for {{ forecast.species.name }} at dam site {{ forecast.dam.name }} with a forecast range to {{ forecast.forecast_range }}
Here's will information on the forecasts will go
{% endblock %}


click on any service to modify its url, remove it or see the nodes it provides. you can also add non-CONNECT microservices, however they need to offer their api specification in the same format CONNECT instances do. you can read on that specification here.
you can inter-connect with other CONNECT instances
to be able to use their public nodes easily, just by giving them a name and adding
their url. for example, you can call node with path /do-something
on an inter-connected service that you've named some-name
by making a call to the path some-name:/do-something.
press the button above to connect another service.
you can also connect to non-CONNECT based microservices, however they need to specify their
api in the same manner as CONNECT-based services do.
you can read on that specification
here.


NAVY DEPARTMENT
OFFICE OF CHIEF OF NAVAL OPERATIONS
WASHINGTON
16 MAY 1944
ECM OPERATING INSTRUCTIONS
1. CSP 1100(C) is effective upon receipt.
2. CSP's 888, 889, and 1600 and associated publications shall not be used until the instructions contained herein have been read and thoroughly understood.
3. This publication is distributed to actual and potential holders of CSP's 888, 889, 1600 and associated publications.
4. CSP 1100(C) is a CONFIDENTIAL registered publication and shall be handled, stowed, transported and accounted for in accordance with the current edition of the Registered Publication Manual (RPS-4). This publication shall be destroyed by burning thirty (30) days after the end of its effective period. It shall not be carried in aircraft for use therein.
5. The use of this publication by enlisted members of Coding Boards, and by the authorized ECM repair personnel of ECM Repair Facilities is authorized. In such cases, the publication is to remain in the potential custody of a commissioned officer.
THIS PUBLICATION CONSISTS OF
SEVENTY-SIX (76) PAGES
|


Starship Troopers (1997) A movie review by Serdar Yegulalp Copyright 1997 by Serdar Yegulalp
CAPSULE: Where are you tonight, Leni Rienfenstal?
STARSHIP TROOPERS is an expensive, hateful and unenjoyable piece of violent pornography -- and bad pornography, at that.  It's one of the worst movies I've seen in a long time.
Why am I calling this movie pornography? Pornography, in the abstract, is anything which is calculated to appeal to the baser instincts. I remember reading a review of FULL METAL JACKET which described the climact moment at the end of the movie, where Private Joker has to shoot the downed VC sniper, as "a near-pornographic eternity". I didn't agree with that assessment, but I could see what was being implied: the reviewer felt as if the audience was being incited to stand up and pump their fists and shout "DO 'er, man, DO 'er!"
That sentiment is echoed ad nauseam throughout STARSHIP TROOPERS.  It tries frantically to enlist our emotions but it winds up only being dull or sickening.
The film takes place in our future, when Earth has come under attack by some alien species that doesn't appear to have intelligence. To counterattack, humankind does the single stupidest thing imaginable: instead of nuke the planet from orbit, which they're clearly capable of, they send down grunts with M-16 rifles. This isn't Heinlein, it's a bad WWII movie, one where all the most obvious points of satire are ever poked and prodded in combat scenes that are noisy, repetitive, and ultimately tiresome. (One scene has a journalist on a battlefield, filimg soldiers being slaughtered, and ends with groaning predictability: said cameraman gets skewered, too.)
The soldiers and their commanders are consistently idiotic. They do not possess a germ of tactical intelligence or even common sense. They don't even behave like soldiers in a bad *movie*, and therefore we don't care about them. We hated the Tom Berenger character in PLATOON, but he *mattered*, and therefore we were curious to learn about his fate. Here, we don't even hate the bugs -- what's there to hate? Hating them would be like cursing a hurricaine. If there's anything really hateful there, the movie doesn't know how to give it to us.
The screenwriter (Ed Neumeier -- perhaps a better appelation would be "screen typist") and director (the increasingly talent-impaired Paul Verhoeven) have not found any way to make the characters or the story serve each other. One of the subplots concerns a woman pilot who's great at getting out of tight situations, and does it again and again and again. Once or twice is fine. By the fifth or sixth time, it's worn out its welcome. There's never any sense that these people are really thinking their way out of anything, or really being tested to show their mettle.
Also, the movie is irritatingly selective with how effective the bugs are to Earthling weaponry. If a bug has one of the humans screaming in its grasp, then five guys can stand around it and blast away on full auto without doing a damned thing. But if one human gets cornered, he lays waste to whole platoons of bugs with one clip. Uh-huh.
The very worst feature of the movie is its repulsive quasi-fascist flavor. I say "quasi-" because while the movie uses many of the trappings of fascism ot eroticize its action -- the gear, the uniforms, etc. -- the movie doesn't have the nerve (or the brains) to be genuinely fascist, or intelligent about the subject. The bumpers between scenes, which are apparently intended to parody wartime recruitment propaganda ARE propaganda -- just so clumsy and oafish that they wind up making the bugs look relatively innocuous in comparison. Like the rest of the movie.
There's more, I suppose, but it's not worth it. The acting is bland, neither arsenic nor gravy; the music disposable; the camerawork turgid. The heartbreaking thing is that it makes INDEPENDENCE DAY look like a masterpiece.
Zero out of four pod-bugs.
<EMAIL_ADDRESS>EFNet IRC: GinRei http://www.io.com/~syegul another worldly device... you can crush me as I speak/write on rocks what you feel/now feel this truth =smilin' in your face, all the time wanna take your place, the BACKSTABBERS=
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
RRP $150.99
Our price $100.25


The time tracking history gives you an overview over all tasks in your done backlog.
You click on the icon to show the tasks worked on a specific day.
Clicking on the icon will open an export dialog for the current month.


Main Siya Stories
by Soccer LadumaSoccer Laduma’s latest edition, issue 1150, is out on the shelves with our exclusive Siyagobhoza. In the latest issue, the Siya crew reveals the news on your favourite teams as well as footballers.
Page 2
City Want R8 million For Martin?
Chiefs And Pirates Keep Tabs On Kateregga
Tlolane To Snub Suggested Loan?
Bafana Coach Still In Contract Talks
Chiefs Regretting Dax Release?
Scott Moving On From Wits
Zulu To Lead Leopards Player Exodus?
Page 3
City To Snub Downs’ Nodada Interest?
Chiefs’ Head Of Youth To Resign!
New De Reuck Deal As Good As Done
Umoya’s Settlement Bid For Isaacs Rejected
City Track Solomons
Page 5
Siya Special – Rakhale In Chiefs Mix…


Processing time ...
Width
Height
Zoom
X Position
Y Position
Max Iterations
Worker Threads
draw reset
Scroll on the image to zoom in or out.
As if it were a map.


"Jurassic Park III" – Effects Dino-might but Characters Only Slight by Homer Yen (c) 2001
"JP III" is like "Alien" for toddlers. In that sci-fi thriller, audiences saw oozing aliens on a space station stalking and munching doomed victims running amuck. So, if you've seen that one, you kind of know what to expect in terms of thrills and chills (although there's much less gore here). This film takes place on a deserted island instead of a spaceship. And instead of oozing aliens, the hapless victims try to survive several imposing prehistoric carnivores.
Dinosaurs are the main draw of this film. There are plenty of them, and they are all magnificently conceived using state-of-the art digital technology. We were first introduced to these behemoths eight years ago when the first "JP" was released. We were instantly mesmerized at the effects back then. And in the third installment, you'll see that you have not outgrown its novelty (even if you've seen that dinosaur special that recently aired on Discovery).
Among the impressive dinosaur population are velociraptors that are eerily more vicious and cunning than you had previously remembered. There is also a hungry 44-foot spinosaurus, a more temperamental predator than the T-Rex that looks forward to a meal of screaming humans. But most incredible are the pteranodons, flying predators (that remind me of those aliens from "Pitch Black") with talons and grabbing power that can pick up a Cadillac.
These magnificent creatures, however, are more wondrous than any of the human characters are. The cast includes Sam Neill, who survived the first JP. He returns as a devoted paleontologist who works feverishly on velociraptor research, forwarding the bold notion that they were even more intelligent than primates. They could've been the dominant species if not for the great cataclysm. Of course, these wild ideas do little for his ability to raise the needed funds to continue his research while scientists wonder why he would rather study fossils instead of real dinosaurs on those islands. That's because, as he says, "those creatures are genetically engineered, and nothing on Earth or in heaven could get me on that island."
However, an ambitious businessman (William H. Macy) and his estranged wife (Tea Leoni) convince him otherwise after promising to make a huge donation for a guided air tour of one of those islands. Of course, the couple have a hidden (but not nefarious) agenda. With hidden agendas come bad luck. And their airplane crash-lands on the desolate island. "You know," says our stoic paleontologist, "we probably won't get off this island alive." Indeed some of them don't, although like in those alien movies, the first to go are the anonymous extras.
There are some exciting and even impressive sequences as everyone tries to avoid being eaten by all manner of prehistoric monsters. However, this film's heart can't stack up to the first two JPs. This one lacks the human element that made its predecessors a bit weightier. This is primarily a search and rescue flick with the element of family unity added in. Missing is that sense of majesty or the uneasy feeling that arose when man tampered recklessly with nature. What we get is Sam Neill oozing with moral indignation, Tea Leoni impersonating Kate Capshaw (the scream queen from Indiana Jones and the Temple of Doom), and William H. Macy providing goofy comic relief. Here, the dinosaurs are truly the more evolved species.
Grade: B-
S: 0 out of 3 L: 1 out of 3 V: 2 out of 3
========== X-RAMR-ID: 29021 X-Language: en X-RT-ReviewID: 241804 X-RT-TitleID: 1108705 X-RT-AuthorID: 1370 X-RT-RatingText: B-
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


 Request Information
  JSP Request Method: <% out.print(util.HTMLFilter.filter(request.getMethod())); %>
 Request URI: <%= request.getRequestURI() %>
 Request Protocol: <%= request.getProtocol() %>
 Servlet path: <%= request.getServletPath() %>
 Path info: <% out.print(util.HTMLFilter.filter(request.getPathInfo())); %>
 Query string: <% out.print(util.HTMLFilter.filter(request.getQueryString())); %>
 Content length: <%= request.getContentLength() %>
 Content type: <% out.print(util.HTMLFilter.filter(request.getContentType())); %>
 Server name: <%= request.getServerName() %>
 Server port: <%= request.getServerPort() %>
 Remote user: <%= request.getRemoteUser() %>
 Remote address: <%= request.getRemoteAddr() %>
 Remote host: <%= request.getRemoteHost() %>
 Authorization scheme: <%= request.getAuthType() %>
 Locale: <%= request.getLocale() %>
 The browser you are using is <% out.print(util.HTMLFilter.filter(request.getHeader("User-Agent"))); %>


Super Remote System Update User Guide¶
Overview¶
Intel Programmable Acceleration Card (PAC) devices are comprised of multiple processors and controllers that execute firmware. Maintaining and updating these firmware images manually is error-prone and does not scale well within the Data Center. The solution described here is derived with the following goals in mind:
The ability to update one or more (possibly all) firwmare images with a single package.
The ability to complete all firmware updates within a stipulated time window.
The ability to update each PAC in the server, all servers in a Data Center, and multiple Data Centers remotely.
The ability to remotely initiate download of the package and its installation with a single command per server instance.
The ability to roll back firmware to a previous revision.
Implementation¶
A single package containing firmware images for all programmable parts on a PAC is delivered as an RPM, eg opae-super-rsu-n3000.M.m.p-r.noarch.rpm. The RPM revision will sequentially increase with every update.
Installing or upgrading the RPM invokes the complete update of all programmable parts on all PAC boards in the system.
The standard RPM dependency framework ensures that correct versions of dependecy packages opae-intel-fpga-driver and fpga-tools-extra are installed on the system.
Rolling back is achieved by uninstalling the current version and re-installing a previous version of the RPM.
.. note::
Note: once Secure Update is deployed, roll back restrictions shall be implemented to prevent
rollback attacks.
RPM management on remote systems is standard practice, requiring no new infrastructure/training.
Details¶
The post-install hook of the opae-super-rsu-n3000 RPM is leveraged to call out to the super-rsu Python script to update all PAC boards. super-rsu uses the manifest file packaged within opae-super-rsu-n3000 to associate a firmware image with its version. Each of the firmware images contained in opae-super-rsu-n3000 is placed on the target system in /usr/share/opae/n3000.
Algorithm¶
Acquire the current firmware versions of all programmable parts.
For each programmable image, if the installed version of firmware does not equal the version provided in the RPM manifest file, then update the firmware image, and set image_updated to True.
After all updates, if image_updated, then initiate a safe reboot of all boards in the system.
After safe reboot, verify that the reported firmware versions match those of the RPM manifest. If they do not match, then RPM installation exits with a failing status.
Run board self test. If the self test fails, then the RPM installation exits with a failing status.
If all of the above checks is successful, then RPM installation exits with a success status.
Dependencies¶
The standard Python package for the distro (version 2.7).
The opae-intel-fpga-driver RPM. (version determined by opae-super-rsu-n3000)
The opae-tools-extra RPM. (version determined by opae-super-rsu-n3000)


[1]
everything about it; nothing expect i cant seem to download to computer
[2]
Beautiful HD Video, Professional Build for Consumer Price!; None in 3 months of useage!


2. Terms of Service
2.1 All the information and software on the Website are provided "AS IS", without any warranties or conditions, express or implied, including, but not limited to the implied warranties of accuracy, timeliness and non-infringement.
2.2 The Website only provides Internet-related services. The network charges that may possibly occur will be collected by telecom operators.
2.3 The referenced or linked information on the Website is designed to provide users with convenience. The content and its descriptions or products and services offered on those linked websites are not subject to the control of Meizu, and therefore Meizu is not responsible for those websites and the content, products or services thereon (including further links to third parties' websites). Any user who chooses to use the third parties' websites shall bear all the consequences and the risks it poses.
3. Use of Content on the Website
3.1 The Website does not have obligations to strictly review the audios, videos, texts, images and other documents uploaded by users, who need to ensure that any documents uploaded do not infringe any rights of third parties. Unless otherwise specified by the users or right holders, uploading of data by users shall be deemed to be licensed, and Meizu has permanent rights of free use of documents uploaded to the Website.
3.2 Should any unit or individual consider that the content of the Website may infringe upon their legitimate rights and interests, a timely written notice to Meizu shall be given to provide their identification, ownership certificate, specifical link (URL) and detailed violations. Once receipt of such legal documents, Meizu will remove the content related to the alleged infringement as soon as possible according to law.


My name is Tyler Darby and I am a software engineer in the Atlanta area.
I am currently a senior at the University of Georgia, pursuing a degree in Computer Science.
I have been programming for 10 years and my passion for technology has motivated me since I was a child.
Over the years I've spent learning how to become a proficient engineer and business professional, I have
become familiar with a wide range of technologies and I have had the opportunity to work with clients and
colleagues across many fields.
I am also an amateur radio operator with the callsign KO4IRP. I take a particular interest in digital modes
and packet radio, and you may find me working either the DMR network or the 2m and 70cm frequency bands in the metro Atlanta area.
I am still developing this portfolio as of August 2021, so there may be several pages that aren't quite finished yet. Bear with me please!


Htmlwidget for apexcharts.js : A modern JavaScript charting library to build interactive charts and visualizations with simple API.
🚧 Under development !! API will change 🚧
⚠ Use RStudio >= 1.2 to properly display charts
Note: Once again, development is heavily inspired by amazing highcharter.
You can install the development version from GitHub with:
# install.packages("devtools")
devtools::install_github("dreamRs/apexcharter")
Use apex
function to quickly create visualizations :
library(apexcharter)
data("mpg", package = "ggplot2")
n_manufac <- dplyr::count(mpg, manufacturer)
apex(data = n_manufac, type = "bar", mapping = aes(x = manufacturer, y = n))
With datetime:
All methods from ApexCharts are available with function like ax_*
compatible with pipe from magrittr
:
library(apexcharter)
data(mpg, package = "ggplot2")
n_manufac <- dplyr::count(mpg, manufacturer)
apexchart() %>%
ax_chart(type = "bar") %>%
ax_plotOptions(bar = bar_opts(
horizontal = FALSE,
endingShape = "flat",
columnWidth = "70%",
dataLabels = list(
position = "top"
))
) %>%
ax_grid(
show = TRUE,
position = "front",
borderColor = "#FFF"
) %>%
ax_series(list(
name = "Count",
data = n_manufac$n
)) %>%
ax_colors("#112446") %>%
ax_xaxis(categories = n_manufac$manufacturer) %>%
ax_title(text = "Number of models") %>%
ax_subtitle(text = "Data from ggplot2")
Pass a list of parameters to the function:
apexchart(ax_opts = list(
chart = list(
type = "line"
),
stroke = list(
curve = "smooth"
),
grid = list(
borderColor = "#e7e7e7",
row = list(
colors = c("#f3f3f3", "transparent"),
opacity = 0.5
)
),
dataLabels = list(
enabled = TRUE
),
markers = list(style = "inverted", size = 6),
series = list(
list(
name = "High",
data = c(28, 29, 33, 36, 32, 32, 33)
),
list(
name = "Low",
data = c(12, 11, 14, 18, 17, 13, 13)
)
),
title = list(
text = "Average High & Low Temperature",
align = "left"
),
xaxis = list(
categories = month.abb[1:7]
),
yaxis = list(
title = list(text = "Temperature"),
labels = list(
formatter = htmlwidgets::JS("function(value) {return value + '°C';}")
)
)
))


Create, organize, and track chores for everyone living in your house!
Get Started
Create a new house New House
If you already have a house Find House


| Opcode/Instruction | Op/En | 64/32 bit Mode Support | CPUID Feature Flag | Description |
|---|---|---|---|---|
| 66 0F 3A 63 /r imm8 PCMPISTRI xmm1, xmm2/m128, imm8 | RM | V/V | SSE4_2 | Perform a packed comparison of string data with implicit lengths, generating an index, and storing the result in ECX. |
| VEX.128.66.0F3A.WIG 63 /r ib VPCMPISTRI xmm1, xmm2/m128, imm8 | RM | V/V | AVX | Perform a packed comparison of string data with implicit lengths, generating an index, and storing the result in ECX. |
| Op/En | Operand 1 | Operand 2 | Operand 3 | Operand 4 |
| RM | ModRM:reg (r) | ModRM:r/m (r) | imm8 | NA |
The instruction compares data from two strings based on the encoded value in the Imm8 Control Byte (see Section 4.1, “Imm8 Control Byte Operation for PCMPESTRI / PCMPESTRM / PCMPISTRI / PCMPISTRM”), and generates an index stored to ECX.
Each string is represented by a single value. The value is an xmm (or possibly m128 for the second operand) which contains the data elements of the string (byte or word data). Each input byte/word is augmented with a valid/invalid tag. A byte/word is considered valid only if it has a lower index than the least significant null byte/word. (The least significant null byte/word is also considered invalid.)
The comparison and aggregation operations are performed according to the encoded value of Imm8 bit fields (see Section 4.1). The index of the first (or last, according to imm8[6]) set bit of IntRes2 is returned in ECX. If no bits are set in IntRes2, ECX is set to 16 (8).
Note that the Arithmetic Flags are written in a non-standard manner in order to supply the most relevant information:
CFlag – Reset if IntRes2 is equal to zero, set otherwise
ZFlag – Set if any byte/word of xmm2/mem128 is null, reset otherwise
SFlag – Set if any byte/word of xmm1 is null, reset otherwise
OFlag –IntRes2[0]
AFlag – Reset
PFlag – Reset
Note: In VEX.128 encoded version, VEX.vvvv is reserved and must be 1111b, VEX.L must be 0, otherwise the instruction will #UD.
| Operating mode/size | Operand1 | Operand 2 | Result |
|---|---|---|---|
| 16 bit | xmm | xmm/m128 | ECX |
| 32 bit | xmm | xmm/m128 | ECX |
| 64 bit | xmm | xmm/m128 | ECX |
int _mm_cmpistri (__m128i a, __m128i b, const int mode);
int _mm_cmpistra (__m128i a, __m128i b, const int mode);
int _mm_cmpistrc (__m128i a, __m128i b, const int mode);
int _mm_cmpistro (__m128i a, __m128i b, const int mode);
int _mm_cmpistrs (__m128i a, __m128i b, const int mode);
int _mm_cmpistrz (__m128i a, __m128i b, const int mode);
None.
See Exceptions Type 4; additionally, this instruction does not cause #GP if the memory operand is not aligned to 16 Byte boundary, and
| #UD | If VEX.L = 1. |
| If VEX.vvvv ≠ 1111B. |


- peek() - Method in class nsr.loui.playingcards.cards.AutoSortedCards
-
- peek() - Method in class nsr.loui.playingcards.cards.BaseCards
-
This method behave randomly or not in accordance with its implementation.
- peek() - Method in class nsr.loui.playingcards.cards.OrderedCards
-
- peek() - Method in class nsr.loui.playingcards.cards.Trash
-
- peek() - Method in class nsr.loui.playingcards.cards.UnorderedCards
-
- pickFrom(BaseCards, IndividualCardImitator) - Method in class nsr.loui.playingcards.cards.BaseCards
-
In any way you draw card, you MUST use this method.
- pickFrom(Cards, int) - Method in class nsr.loui.playingcards.cards.Cards
-
Try to pick NUM cards from FROM to THIS.
- popElem(Collection<T>, T) - Static method in class nsr.loui.util.CollectionUtil
-
Pop TARGET elem and remove it from FROM.
- popElem(List<T>, T) - Static method in class nsr.loui.util.CollectionUtil
-
Pop TARGET elem and remove it from FROM.
- print(Object...) - Method in class nsr.loui.util.PyLikePrinter
-
Print ARGS joined by SEP, finally print new line.
- printInfo() - Method in class nsr.loui.playingcards.cards.BaseCards
-
Please use it just for print debugging.
- printInfo() - Method in class nsr.loui.playingcards.contrib.SwitchableAutoSortedCards
-
- PrintObserver - Class in nsr.loui.playingcards.observer
-
This class report transfer on stdout just for debug, or just be implementation sample.
- PrintObserver() - Constructor for class nsr.loui.playingcards.observer.PrintObserver
-
- ProhibitedOperationException - Exception in nsr.loui.playingcards.exceptions
-
- ProhibitedOperationException() - Constructor for exception nsr.loui.playingcards.exceptions.ProhibitedOperationException
-
- PyLikePrinter - Class in nsr.loui.util
-
Utility class print variable arguments.
- PyLikePrinter() - Constructor for class nsr.loui.util.PyLikePrinter
-
Default sep is a space character.
- PyLikePrinter(String) - Constructor for class nsr.loui.util.PyLikePrinter
-


Last News
- 2012-5-13 "Dynamic Network Day" on May 24th
- 2012-4-30 GraphsTream at the GSoC 2012 with Gephi
- 2011-11-11 GraphStream 1.1 is released!
- 2011-5-24 GraphStream 1.0 Video
About Us
GraphStream is hosted by the University of Le Havre. It is initiated and maintained by members of the RI2C research team from the LITIS computer science lab.
Mailing lists
Development
Documentation
See the Documentation pages for detailed tutorials and help. See also:The DGS File Format Specification
DGS is the default file format for GraphStream. This documentation documents the version 4 of the format, which is compatible with version 1.0 of GraphStream. GraphStream supports all of the previous versions of DGS.
Introduction
DGS is a file format allowing to store graphs and dynamic graphs in a textual human readable way, yet with a small size allowing to store large graphs. Graph dynamics is defined using events like adding, deleting or changing a node or edge or adding, changing and removing attributes on the graph, nodes or edges. With DGS, graphs will therefore be seen as stream of such events.
Compression
Files following the DGS format are textual files (ASCII, UTF-8, etc.) that may be compressed using gzip. Indeed it is often useful and advantageous to compress dynamic graph streams because of their large redundancy and often very large size. The gzip format has been chosen since it is easily streamable and easy to use in Java. For example to open a gzip-ed file in Java and read its contents as any other textual file, one can use the following code snippet:
BufferedReader buffer = new BufferedReader( new InputStreamReader( new GZIPInputStream( (InputStream)new FileInputStream("filename"))));
Naturally, GraphStream automatically supports gzip-ed files.
Syntax
DGS sees graphs as composed of nodes and edges. These elements can however be equipped with attributes. Attributes can be arbitrary strings, numbers, or vectors of strings or numbers. There can be any number of attributes per node and edge or per graph.
The format is composed of a header and a body. The header contains two lines defining the format version and the graph name and optional lengths. The body contains the events descriptions that will make up the graph stream.
The body is made of a sequence of steps containing zero or more events. Steps allow to introduce a notion of time inside the graph stream. One tick of the clock will pass at each step, and all the events in one step can be considered occurring at the same time (although, their order is preserved). It is however possible to omit step events or to add a step event between each event, as needed.
Each event stands on one line terminated by a line separator. Each field on each line of the header and body is separated by one or more spacing characters (spaces and tabulations).
Comments are allowed everywhere in the file excepted in the header. The two first lines of the file must therefore be free of any comment and must not be preceded by any blank lines.
The Header
The first line contains a magic cookie defining the file format. This line is invariant for each file in the DGS file format for a given version. It changes from version to version. Actually 004 is the latest:
DGS004
The second line contains three fields, the graph name followed by the number of steps and hen the total number of events in the graph. Theses numbers are only indicative and may be both set to zero. However, if known, they can describe the stream duration in number of steps (clock ticks) and number of events. In the example under, the graph name is myDynGraph, the number of steps is 2000 and there are 100000 events total:
myDynGraph 2000 100000
This line is deprecated in GraphStream 1.0 and is now maintained only for compatibility reasons. Indeed DGS is a streamable format, and it is often very difficult to know by advance the number of events and steps that will be produced in the rest of the file. It is however still mandatory actually, but it will disappear in version 5 of the format. You can use:
null 0 0
The Body
Hereafter are listed the events one can encounter inside a graph stream. Some of these events can take parameters (also known as attributes). Parameters allows to define what values will be stored in a node or edge. A parameter is made of a name and a value. They are separated by a : (colon) or = (equal) sign.
The accepted values are strings (any sequence of character enclosed by " (double quote) characters), numbers, single words (like strings but without quotes since they do not contain spaces), vectors and colors. A vector is a sequence of strings, words or numbers separated by the , (comma) character. Vectors can contain heterogeneous elements (mix of strings, words, numbers and colors). A color is signaled by a dash # symbol followed by six hexadecimal numbers, two for the red, two for green and two for blue components of the color (#FF00FF is cyan for example). It can optionally contain height hexadecimal numbers, adding two numbers for the alpha component (transparency, #FF00FF88 is half transparent cyan).
Here is the list of possible events:
- st
Allows to define a new step (clock tick). The number that follows allows to identify the step. The number is only indicative and is arbitrary, but is a real number, stored as a double (this may change in next versions). The DGS graph reader does not reorder events according to this number.
For the first step for example:
st 0
- an
Allows to add a node. The command is followed by the unique node identifier allowing to identify this node compared to others. This name can be a single word or a string delimited by the double quote character. Other fields allow to define parameters.
The following example adds a node with identifier n1 and values x=3.14159265 and y=1.61803399 as attributes:
an n1 x=3.14159265 y=1.61803399
- cn
Allows to modify attributes values for a node.
In this example we modify the n1 node attributes (notice that we use ":" as separator for parameters, both "=" and ":" are allowed):
cn n1 x:3 y:1
You can also remove an existing attribute by prefixing its identifier with a minus sign:
cn n1 -x -y
In this example we remove the x and y attributes.
- dn
Allows to delete a node.
In the example we delete the n1 node:
dn n1
- ae
Allows to add an edge. This command must be followed by the unique identifier of the edge, and then the identifiers of two other nodes. As for nodes, you can specify a parameter list. It is possible to create directed edges by adding a ">" (greater-than) or "<" (smaller-than) character between the nodes identifiers. This indicates the direction of the edge. When no "<" or ">" is present, the edge is not directed.
The following examples creates an edge with identifier e1 between nodes n0 and n1 with a parameter weight and another edge e2 between nodes n1 and n2 that is directed from n1 to n2:
ae e1 n0 n1 weight=23 ae e2 n1 > n2 weight:40
- ce
As for nodes, allows to modify the parameters of the edge.
The following example change the weight parameter of the e1 edge:
ce e1 weight=10
As for nodes, you can also remove attributes by prefixing the attribute identifier by a minus sign.
- de
Allows to delete an edge.
Example:
de e1
- cg
Changes the attributes of a graph.
As for nodes (cn) an edges (ce), this allows to add or remove attributes directly on the graph. As usual, you can remove an attribute by prefixing its identifier by a minus sign.
- cl
- Clear the whole graph.
Miscellany
The format accepts empty lines, even if they contain spaces. It is possible to use the # character to introduce comments that will last until the end of the line where they appear. A line containing a single comment will be ignored, but it is possible to add comments at the end of a line.
Compatibility With Previous Versions
This version of the DGS file format, 004, is compatible with version 003, but is not compatible with the first and second versions of the format. The GraphStream library proposes graph readers for the old formats as well as for the new. It only provides a writer for the 004 version.
Examples
One of the simplest examples is the graph that forms a triangle:
DGS004 triangle 0 6 an A an B an C ae AB A B ae BC B C ae CA C A
The same with directed edges:
DGS004 triangled 0 6 an A an B an C ae AB A > B ae BC B < C ae CA C > A
The same with position attributes:
DGS004 triangledp 0 6 an A x:0 y:0 an B x:1 y=0 an C x=0.5 y=1 ae AB A > B ae BC B < C ae CA C > A
The same with more attributes (examples of vector attributes):
DGS004 triangledpm 0 6 an A x:0 y:0 an B x:1 y=0 an C x=0.5 y=1 ae AB A > B weight:1 values=1,3,5,none ae BC B < C weight:5 values=none,2,4,6 ae CA C > A weight:2 values=none,1
The DGS formal specification
The grammar for the DGS format is given below in BNF notation:
<DGS> ::= <header> ( <event> | <comment> | <EOL> )* <header> ::= <magic> <EOL> <id> <int> <int> <EOL> <magic> ::= "DGS004" | "DGS003" <event> ::= ( <an> | <cn> | <dn> | <ae> | <ce> | <de> | <cg> | <st> | <cl> ) ( <comment> | <EOL> ) <an> ::= "an" <id> <attributes> <cn> ::= "cn" <id> <attributes> <dn> ::= "dn" <id> <ae> ::= "ae" <id> <id> ( <direction> )? <id> <attributes> <ce> ::= "ce" <id> <attributes> <de> ::= "de" <id> <cg> ::= "cg" <attributes> <st> ::= "st" <real> <cl> ::= "cl" <attributes> ::= ( <attribute> )* <attribute> ::= ( "+" | "-" )? <id> ( <assign> <value> ( "," <value> )* )? <value> ::= <string> | <real> | "" | <array> | <map> <array> ::= "{" ( <value> ( "," <value> )* )? "}" <map> ::= "[" ( <mapping> ( "," <mapping> )* )? "]" <mapping> ::= <id> <assign> <value> <direction> ::= '<' | '>' | '' <assign> ::= '=' | ':' <id> ::= <string> | <int> | <word> ( '.' <word> )* <comment> ::= "#" ( . )* <EOL> <int> ::= '0' | ( '1' .. '9' ) ( '0' .. '9' )* <real> ::= <int> ( "." ( "0" )* <int> )? <word> ::= ( 'a' .. 'z' | 'A' .. 'Z' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '-' | '_' )* <string> ::= '"' ( [^'"'] | '\"' )* '"'


|
Konnekt
Anin-memorygraph-store
|
#include <vertex.h>
Public Member Functions | |
| vertex () | |
| vertex (int id) | |
| vertex (std::string label) | |
| vertex (std::vector< std::string > labels) | |
| void | addLabel (const std::string label) |
| bool | removeLabel (const std::string label) |
| bool | hasLabel (const std::string toFind) |
| void | addEdge (std::shared_ptr< edge > e) |
| const std::vector< std::string > | getLabels () |
| const int | getID () |
| const std::string | getLabelsAsString () |
| size_t | countEdges () |
| const std::vector< std::shared_ptr< edge > > | getEdges () const |
| void | dijkstraSetVisited () |
| bool | dijkstraGetVisited () |
| void | dijkstraSetDistance (int distance) |
| const int | dijkstraGetDistance () |
| void | dijkstraReset () |
Vertex class Represents a vertex/node on the graph. Nodes may have one or more labels, which can be set, removed and retrieved. Vertex's also contain a list of edges connected to other vertexes.
A vertex is responsible for deleting it's own reference to an edge.
|
inline |
|
inline |
Construct an edge with an ID
|
inline |
Construct with one label
|
inline |
Construct with many labels
|
inline |
Attach an edge to this vertex.
Does not construct edges! Only takes an edge which should already have been given a pointer to this vertex
|
inline |
Add a label to this vertex. Vertices can have many labels
|
inline |
Returns the number of edges attached to this vertex Returns size_t
|
inline |
Get distance distance value. Only used in shortest-path searches
|
inline |
Get the visited flag. Only used in shortest-path searches
|
inline |
Reset shortest-path related variables back to defaults.
|
inline |
Set distance value. Only used in shortest-path searches
|
inline |
Set the visited flag to true. Only used in shortest-path searches
|
inline |
|
inline |
|
inline |
Get all labels attached to this vertex
|
inline |
Return this vertex's labels as a string
|
inline |
Check if this vertex has a given label Returns true if found Returns false if non-existant
|
inline |
Remove given label from this vertex. Return true if successful. Return false if not found


JavaScript is disabled on your browser.
Skip navigation links
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes
A
B
C
D
E
F
G
H
I
L
M
N
O
P
R
S
T
U
O
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
CircleTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
CutAndMoveTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
EllipseTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
EraseTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
FillTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
FreeDrawTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
GrabColorTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
ImageFillTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
IrregularPolygonTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
LineTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
RainbowFunFillTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
RectangleTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
RegularPolygonTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
SelectAndMoveTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
SquareTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
StarTool
onMouseClicked(MouseEvent)
- Method in class paint.drawtools.
TextTool
onMouseClicked(MouseEvent)
- Method in class paintcanvas.
DrawTool
Action to do when the mouse is clicked on the canvas.
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
CircleTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
CutAndMoveTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
EllipseTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
EraseTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
FillTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
FreeDrawTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
GrabColorTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
ImageFillTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
IrregularPolygonTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
LineTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
RainbowFunFillTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
RectangleTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
RegularPolygonTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
SelectAndMoveTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
SquareTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
StarTool
onMouseDragged(MouseEvent)
- Method in class paint.drawtools.
TextTool
onMouseDragged(MouseEvent)
- Method in class paintcanvas.
DrawTool
Action to do when the mouse is dragged on the canvas.
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
CircleTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
CutAndMoveTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
EllipseTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
EraseTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
FillTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
FreeDrawTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
GrabColorTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
ImageFillTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
IrregularPolygonTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
LineTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
RainbowFunFillTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
RectangleTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
RegularPolygonTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
SelectAndMoveTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
SquareTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
StarTool
onMousePressed(MouseEvent)
- Method in class paint.drawtools.
TextTool
onMousePressed(MouseEvent)
- Method in class paintcanvas.
DrawTool
Action to do when the mouse is pressed on the canvas.
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
CircleTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
CutAndMoveTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
EllipseTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
EraseTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
FillTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
FreeDrawTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
GrabColorTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
ImageFillTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
IrregularPolygonTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
LineTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
RainbowFunFillTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
RectangleTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
RegularPolygonTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
SelectAndMoveTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
SquareTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
StarTool
onMouseReleased(MouseEvent)
- Method in class paint.drawtools.
TextTool
onMouseReleased(MouseEvent)
- Method in class paintcanvas.
DrawTool
Action to do when the mouse is released off the canvas.
A
B
C
D
E
F
G
H
I
L
M
N
O
P
R
S
T
U
Skip navigation links
Overview
Package
Class
Use
Tree
Deprecated
Index
Help
Prev Letter
Next Letter
Frames
No Frames
All Classes


User Guide
This website is a game trading website in which the user can either search for video games they want to buy or post the games they want to sell.
Login
Here you enter the E-mail you registered with and the password you chose to login to the site so that you make posts and review other people.
Register
The register page is where you will make an account to be able to access the site to make posts and reviews.
Index
On the index page you will see the posts of other users sorted by the newest first from here you can either access the user's profile page or you can access the game's page
User's Profile
On the user's profile page you will be able to see their phone number and email to be able to contact them, and their reviews to see if other users were satisfied with their service
Game's Profile
Here you will see information about the game such as it's price, condition, and what the seller has to say about the game. By clicking on the seller's name you will be ables to access the seller's page and see details about that user.
Create Post
Here you can create a post about a game that you wish to sell.
About the Creator
My name is Tarek El-Bohtimy, I just completed my Computing Science undergrad at the University of Alberta and I created Vygit as something to add to my profile and show my skills in css, html, django (python), and javascript.
If you would like to see the code of this website you can find it
here
My Github
Also if you are to find any bugs or think other features should be included
please make them here
{% endblock %}