Dependency Injection is a concept that has been talked about in numerous places over the web. For the purposes of this quickstart, we’ll explain the act of injecting dependencies simply with this below code:
1 | $b = new B(new A());
|
Above, A is a dependency of B, and A was injected into B. If you are not familiar with the concept of dependency injection, here are a couple of great reads: Matthew Weier O’Phinney’s Analogy, Ralph Schindler’s Learning DI, or Fabien Potencier’s Series on DI.
In the simplest use case, a developer might have one class (A) that is consumed by another class (B) through the constructor. By having the dependency injected through the constructor, this requires an object of type A be instantiated before an object of type B so that A can be injected into B.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | namespace My {
class A
{
/* Some useful functionality */
}
class B
{
protected $a = null;
public function __construct(A $a)
{
$this->a = $a;
}
}
}
|
To create B by hand, a developer would follow this work flow, or a similar workflow to this:
1 | $b = new B(new A());
|
If this workflow becomes repeated throughout your application multiple times, this creates an opportunity where one might want to DRY up the code. While there are several ways to do this, using a dependency injection container is one of these solutions. With Zend’s dependency injection container Zend\Di\Di, the above use case can be taken care of with no configuration (provided all of your autoloading is already configured properly) with the following usage:
1 2 | $di = new Zend\Di\Di;
$b = $di->get('My\B'); // will produce a B object that is consuming an A object
|
Moreover, by using the Di::get() method, you are ensuring that the same exact object is returned on subsequent calls. To force new objects to be created on each and every request, one would use the Di::newInstance() method:
1 | $b = $di->newInstance('My\B');
|
Let’s assume for a moment that A requires some configuration before it can be created. Our previous use case is expanded to this (we’ll throw a 3rd class in for good measure):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | namespace My {
class A
{
protected $username = null;
protected $password = null;
public function __construct($username, $password)
{
$this->username = $username;
$this->password = $password;
}
}
class B
{
protected $a = null;
public function __construct(A $a)
{
$this->a = $a;
}
}
class C
{
protected $b = null;
public function __construct(B $b)
{
$this->b = $b;
}
}
}
|
With the above, we need to ensure that our Di is capable of setting the A class with a few configuration values (which are generally scalar in nature). To do this, we need to interact with the InstanceManager:
1 2 3 | $di = new Zend\Di\Di;
$di->getInstanceManager()->setProperty('A', 'username', 'MyUsernameValue');
$di->getInstanceManager()->setProperty('A', 'password', 'MyHardToGuessPassword%$#');
|
Now that our container has values it can use when creating A, and our new goal is to have a C object that consumes B and in turn consumes A, the usage scenario is still the same:
1 2 3 | $c = $di->get('My\C');
// or
$c = $di->newInstance('My\C');
|
Simple enough, but what if we wanted to pass in these parameters at call time? Assuming a default Di object ($di = new Zend\Di\Di() without any configuration to the InstanceManager), we could do the following:
1 2 3 4 5 6 7 8 | $parameters = array(
'username' => 'MyUsernameValue',
'password' => 'MyHardToGuessPassword%$#',
);
$c = $di->get('My\C', $parameters);
// or
$c = $di->newInstance('My\C', $parameters);
|
Constructor injection is not the only supported type of injection. The other most popular method of injection is also supported: setter injection. Setter injection allows one to have a usage scenario that is the same as our previous example with the exception, for example, of our B class now looking like this:
1 2 3 4 5 6 7 8 9 10 | namespace My {
class B
{
protected $a;
public function setA(A $a)
{
$this->a = $a;
}
}
}
|
Since the method is prefixed with set, and is followed by a capital letter, the Di knows that this method is used for setter injection, and again, the use case $c = $di->get('C'), will once again know how to fill the dependencies when needed to create an object of type C.
Other methods are being created to determine what the wirings between classes are, such as interface injection and annotation based injection.
If your code does not have type-hints or you are using 3rd party code that does not have type-hints but does practice dependency injection, you can still use the Di, but you might find you need to describe your dependencies explicitly. To do this, you will need to interact with one of the definitions that is capable of letting a developer describe, with objects, the map between classes. This particular definition is called the BuilderDefinition and can work with, or in place of, the default RuntimeDefinition.
Definitions are a part of the Di that attempt to describe the relationship between classes so that Di::newInstance() and Di::get() can know what the dependencies are that need to be filled for a particular class/object. With no configuration, Di will use the RuntimeDefinition which uses reflection and the type-hints in your code to determine the dependency map. Without type-hints, it will assume that all dependencies are scalar or required configuration parameters.
The BuilderDefinition, which can be used in tandem with the RuntimeDefinition (technically, it can be used in tandem with any definition by way of the AggregateDefinition), allows you to programmatically describe the mappings with objects. Let’s say for example, our above A/B/C usage scenario, were altered such that class B now looks like this:
1 2 3 4 5 6 7 8 9 10 | namespace My {
class B
{
protected $a;
public function setA($a)
{
$this->a = $a;
}
}
}
|
You’ll notice the only change is that setA now does not include any type-hinting information.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | use Zend\Di\Di;
use Zend\Di\Definition;
use Zend\Di\Definition\Builder;
// Describe this class:
$builder = new Definition\BuilderDefinition;
$builder->addClass(($class = new Builder\PhpClass));
$class->setName('My\B');
$class->addInjectableMethod(($im = new Builder\InjectableMethod));
$im->setName('setA');
$im->addParameter('a', 'My\A');
// Use both our Builder Definition as well as the default
// RuntimeDefinition, builder first
$aDef = new Definition\AggregateDefinition;
$aDef->addDefinition($builder);
$aDef->addDefinition(new Definition\RuntimeDefinition);
// Now make sure the Di understands it
$di = new Di;
$di->setDefinition($aDef);
// and finally, create C
$parameters = array(
'username' => 'MyUsernameValue',
'password' => 'MyHardToGuessPassword%$#',
);
$c = $di->get('My\C', $parameters);
|
This above usage scenario provides that whatever the code looks like, you can ensure that it works with the dependency injection container. In an ideal world, all of your code would have the proper type hinting and/or would be using a mapping strategy that reduces the amount of bootstrapping work that needs to be done in order to have a full definition that is capable of instantiating all of the objects you might require.
Without going into the gritty details, as you might expect, PHP at its core is not DI friendly. Out-of-the-box, the Di uses a RuntimeDefinition which does all class map resolution via PHP’s Reflection extension. Couple that with the fact that PHP does not have a true application layer capable of storing objects in-memory between requests, and you get a recipe that is less performant than similar solutions you’ll find in Java and .Net (where there is an application layer with in-memory object storage.)
To mitigate this shortcoming, Zend\Di has several features built in capable of pre-compiling the most expensive tasks that surround dependency injection. It is worth noting that the RuntimeDefinition, which is used by default, is the only definition that does lookups on-demand. The rest of the Definition objects are capable of being aggregated and stored to disk in a very performant way.
Ideally, 3rd party code will ship with a pre-compiled Definition that will describe the various relationships and parameter/property needs of each class that is to be instantiated. This Definition would have been built as part of some deployment or packaging task by this 3rd party. When this is not the case, you can create these Definitions via any of the Definition types provided with the exception of the RuntimeDefinition. Here is a breakdown of the job of each definition type:
The following is an example of producing a definition via a DirectoryScanner:
1 2 3 4 5 | $compiler = new Zend\Di\Definition\Compiler();
$compiler->addCodeScannerDirectory(
new Zend\Code\Scanner\ScannerDirectory('path/to/library/My/')
);
$definition = $compiler->compile();
|
This definition can then be directly used by the Di (assuming the above A, B, C scenario was actually a file per class on disk):
1 2 3 4 5 | $di = new Zend\Di\Di;
$di->setDefinition($definition);
$di->getInstanceManager()->setProperty('My\A', 'username', 'foo');
$di->getInstanceManager()->setProperty('My\A', 'password', 'bar');
$c = $di->get('My\C');
|
One strategy for persisting these compiled definitions would be the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | if (!file_exists(__DIR__ . '/di-definition.php') && $isProduction) {
$compiler = new Zend\Di\Definition\Compiler();
$compiler->addCodeScannerDirectory(
new Zend\Code\Scanner\ScannerDirectory('path/to/library/My/')
);
$definition = $compiler->compile();
file_put_contents(
__DIR__ . '/di-definition.php',
'<?php return ' . var_export($definition->toArray(), true) . ';'
);
} else {
$definition = new Zend\Di\Definition\ArrayDefinition(
include __DIR__ . '/di-definition.php'
);
}
// $definition can now be used; in a production system it will be written
// to disk.
|
Since Zend\Code\Scanner does not include files, the classes contained within are not loaded into memory. Instead, Zend\Code\Scanner uses tokenization to determine the structure of your files. This makes this suitable to use this solution during development and within the same request as any one of your application’s dispatched actions.
If you are a 3rd party code developer, it makes sense to produce a Definition file that describes your code so that others can utilize this Definition without having to Reflect it via the RuntimeDefinition, or create it via the Compiler. To do this, use the same technique as above. Instead of writing the resulting array to disk, you would write the information into a definition directly, by way of Zend\Code\Generator:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | // First, compile the information
$compiler = new Zend\Di\Definition\CompilerDefinition();
$compiler->addDirectoryScanner(
new Zend\Code\Scanner\DirectoryScanner(__DIR__ . '/My/')
);
$compiler->compile();
$definition = $compiler->toArrayDefinition();
// Now, create a Definition class for this information
$codeGenerator = new Zend\Code\Generator\FileGenerator();
$codeGenerator->setClass(($class = new Zend\Code\Generator\ClassGenerator()));
$class->setNamespaceName('My');
$class->setName('DiDefinition');
$class->setExtendedClass('\Zend\Di\Definition\ArrayDefinition');
$class->addMethod(
'__construct',
array(),
\Zend\Code\Generator\MethodGenerator::FLAG_PUBLIC,
'parent::__construct(' . var_export($definition->toArray(), true) . ');'
);
file_put_contents(__DIR__ . '/My/DiDefinition.php', $codeGenerator->generate());
|
In all actuality, you will be using code from multiple places, some Zend Framework code, some other 3rd party code, and of course, your own code that makes up your application. Here is a method for consuming definitions from multiple places:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | use Zend\Di\Di;
use Zend\Di\Definition;
use Zend\Di\Definition\Builder;
$di = new Di;
$diDefAggregate = new Definition\Aggregate();
// first add in provided Definitions, for example
$diDefAggregate->addDefinition(new ThirdParty\Dbal\DiDefinition());
$diDefAggregate->addDefinition(new Zend\Controller\DiDefinition());
// for code that does not have TypeHints
$builder = new Definition\BuilderDefinition();
$builder->addClass(($class = Builder\PhpClass));
$class->addInjectionMethod(
($injectMethod = new Builder\InjectionMethod())
);
$injectMethod->setName('injectImplementation');
$injectMethod->addParameter(
'implementation', 'Class\For\Specific\Implementation'
);
// now, your application code
$compiler = new Definition\Compiler()
$compiler->addCodeScannerDirectory(
new Zend\Code\Scanner\DirectoryScanner(__DIR__ . '/App/')
);
$appDefinition = $compiler->compile();
$diDefAggregate->addDefinition($appDefinition);
// now, pass in properties
$im = $di->getInstanceManager();
// this could come from Zend\Config\Config::toArray
$propertiesFromConfig = array(
'ThirdParty\Dbal\DbAdapter' => array(
'username' => 'someUsername',
'password' => 'somePassword'
),
'Zend\Controller\Helper\ContentType' => array(
'default' => 'xhtml5'
),
);
$im->setProperties($propertiesFromConfig);
|
In production, you want things to be as fast as possible. The Dependency Injection Container, while engineered for speed, still must do a fair bit of work resolving parameters and dependencies at runtime. What if you could speed things up and remove those lookups?
The Zend\Di\ServiceLocator\Generator component can do just that. It takes a configured DI instance, and generates a service locator class for you from it. That class will manage instances for you, as well as provide hard-coded, lazy-loading instantiation of instances.
The method getCodeGenerator() returns an instance of Zend\CodeGenerator\Php\PhpFile, from which you can then write a class file with the new Service Locator. Methods on the Generator class allow you to specify the namespace and class for the generated Service Locator.
As an example, consider the following:
1 2 3 4 5 6 7 8 9 10 | use Zend\Di\ServiceLocator\Generator;
// $di is a fully configured DI instance
$generator = new Generator($di);
$generator->setNamespace('Application')
->setContainerClass('Context');
$file = $generator->getCodeGenerator();
$file->setFilename(__DIR__ . '/../Application/Context.php');
$file->write();
|
The above code will write to ../Application/Context.php, and that file will contain the class Application\Context. That file might look like the following:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php
namespace Application;
use Zend\Di\ServiceLocator;
class Context extends ServiceLocator
{
public function get($name, array $params = array())
{
switch ($name) {
case 'composed':
case 'My\ComposedClass':
return $this->getMyComposedClass();
case 'struct':
case 'My\Struct':
return $this->getMyStruct();
default:
return parent::get($name, $params);
}
}
public function getComposedClass()
{
if (isset($this->services['My\ComposedClass'])) {
return $this->services['My\ComposedClass'];
}
$object = new \My\ComposedClass();
$this->services['My\ComposedClass'] = $object;
return $object;
}
public function getMyStruct()
{
if (isset($this->services['My\Struct'])) {
return $this->services['My\Struct'];
}
$object = new \My\Struct();
$this->services['My\Struct'] = $object;
return $object;
}
public function getComposed()
{
return $this->get('My\ComposedClass');
}
public function getStruct()
{
return $this->get('My\Struct');
}
}
|
To use this class, you simply consume it as you would a DI container:
1 2 3 | $container = new Application\Context;
$struct = $container->get('struct'); // My\Struct instance
|
One note about this functionality in its current incarnation. Configuration is per-environment only at this time. This means that you will need to generate a container per execution environment. Our recommendation is that you do so, and then in your environment, specify the container class to use.
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.


{% extends "horizon/common/_modal_form.html" %} {% load i18n %} {% block form_id %}add_routerroute_form{% endblock %} {% block form_action %}{% url 'horizon:project:routers:addrouterroute' router.id %} {% endblock %} {% block modal-header %}{% trans "Add Static Route" %}{% endblock %} {% block modal-body %}
{% trans "Add static route to the router." %}
{% trans "Next Hop IP must be a part of one of the subnets to which the router interfaces are connected." %}


A message from quarantine
This is where you may access the large number of relevant changes to the course syllabus, and plans on moving forward for remote learning through quarantine during a pandemic. For the old syllabus material, follow this link: pre-pandemic syllabus.
Statement of principles
Statement of Principles for the Remainder of Spring 2020 Semester for Ecology and Evolution of Infectious Disease (BI298):
- Neither you nor I signed up for this
- Neither of us signed up knowing the crisis that we’d be facing, not for the physical distancing, not of the abrupt end of our physical lives together on campus
- Neither of us signed up for an online class, not for teaching remotely, not for learning remotely, not for mastering new technologies, not for varied access to learning materials
- The humane option is the best option during a global crisis
- We are going to prioritize supporting each other as humans
- We are going to prioritize simple solutions that make sense for the most
- We cannot just do the same thing online that we did in class
- Some assignments are no longer effective (e.g., real-time/synchronous exchange of ideas during class discussions)
- Some expectations are no longer reasonable (e.g., Case Study Presentations)
- Some learning goals are no longer as feasible or as important
- We will foster intellectual nourishment, social connection, and personal accommodations through
- Accessible asynchronous content for diverse access, timezones, and contexts
- Optional synchronous discussion to learn together and combat isolation (Slack and Zoom)
- We will remain flexible and adjust to the situation
- Nobody know where this is going and how we’ll need to adapt
- Everybody needs support and understanding in this unprecidented moment
Download as .pdf
Adapted from Brandon Bayne, UNC Chapel Hill (Tweet)
Learning outcomes
After taking this course as successful student:
- Will have gained an understanding of parasitic interactions and their role in in ecology and evolutionary biology.
- Will have experience using mathematical and computational models to understand spatial and temporal disease dyanmics.
- Be equipped to critically evalute public discourse of infectious disease agents.
- Will have contributed to local public discourse on infectious disease.
Detailed calendar
Link to a detailed calendar with my availability and assignments:
Meetings in spacetime
- Optional during classtime: MWF, 9:00—9:50 AM on Zoom: link
- Optional office hours Zoom link:
- Monday, 10 AM–noon EDT
- Tuesday, 8–10 AM EDT
- Tuesday, 1–3 PM EDT
- Wednesday, 4–6 PM EDT
Go to Slack where I will be most working hours (EDT), too!
Assessment and grade assignment
In-person assignments:
| COVID-19 paper |
0.14 |
01 |
0.14 |
| Problem set |
0.10 |
01 |
0.10 |
| Participation |
0.02 |
07 |
0.14 |
These assignments were a total of 0.38 of the course grade. The remainder, 0.62, will be composed reconfigured assignments:
Reconfigured assignments:
| Paper discussions |
0.05 |
06 |
0.30 |
| Pandemic Interviews |
0.02 |
05 |
0.10 |
| Collaborative paper |
0.22 |
01 |
0.22 |
The reconfigured assignments, summed with the in-person assignments are now out of 1. Here’s links to the assignment descriptions:
Paper discussions details are posted in the schedule (or you can also click here: link)
Pandemic Interviews details are posted in the schedule (or you can also click here: link)
Collaborative paper details are posted in the schedule (or you can also click here: link)


Pit Test Coverage Report
Package Summary
org.apache.myfaces.shared.renderkit
Number of Classes
Line Coverage
Mutation Coverage
3
8%
61/738
8%
30/397
Breakdown by Class
Name
Line Coverage
Mutation Coverage
ContentTypeUtils.java
35%
13/37
28%
7/25
RendererUtils.java
8%
42/553
7%
22/316
_SharedRendererUtils.java
4%
6/148
2%
1/56
Report generated by
PIT
1.5.2


Boost for Jeremy Corbyn as NHS overtakes Brexit as most important election issue
A new poll by Ipsos MORI has the NHS overtaking Brexit as the most important issue for adults in the UK ahead of next month's general election. Labour's favourability among voters has also improved.
by Tom Davidson, https://www.mirror.co.uk/authors/tom-davidson/The NHS - and not Brexit - is now the most important issue to UK voters, according to a new poll.
The Ipsos MORI survey, released shortly after 1pm, will come as a boost to Jeremy Corbyn who voters see as strong on the National Health Service.
The poll also has favourability towards Labour improving slightly but the party leader is still viewed negatively by six out of 10 voters.
And 57% of those asked predict the election next month will see the Conservatives as the largest party, compared to just 22% who believe Labour will come out on top.
When asked which issues will decide your vote 60% chose the NHS, a rise of 6% compared to November 11 and 4% ahead of Europe/ Brexit on 56%.
Last week damning statistics showed NHS waiting times in England were at an all time high and the worst since modern A&E records began in 2004.
And the Tories campaign pledge for 40 new hospitals has come under intense scrutiny from bonafide factcheckers.
Ipsos MORI Research Director Keiran Pedley said: “Our campaign tracker shows that nothing has fundamentally changed in the second week of the campaign in terms of public opinion.
"There are some signs of Labour improving slightly, reflected in voting intention polls too, but they are still a long way off where they need to be to stop the Conservatives returning to office after the election.
"That being said, with three weeks to go, there is still time for Labour to turn things round following the upcoming manifesto launches and series of leaders debates.”
Ipsos MORI interviewed a representative sample of 1,140 British adults. Interviews were conducted online: between November 15 and 18.
In last night's TV debate Corbyn hammered Boris Johnson on the NHS and said that he was going to "sell our National Health Service to the United States and big pharma".
Johnson replied: “This is an absolute invention. It is completely untrue. Under no circumstances whatever will this government, or any Conservative government, put the NHS on the table in any trade negotiation. Our NHS will never be for sale.
“We will continue to fund the NHS massively, as we are. We can only do so because we have a strong and dynamic economy.”
And he sought to suggest that Labour’s radical reforms to the economy would wreck the public finances.


Spike O'Sullivan set for huge middleweight bout against Jamie Munguia
by James CoxCork boxer Gary 'Spike' O'Sullivan is set for a huge fight against unbeaten Mexican Jaime Munguia in a headline bout at the Alamadome in San Antonio, Texas, on January 11.
O'Sullivan [30-3. 21KOs] recently moved to light-middleweight, where he's won twice, but he'll return to 160 pounds for the contest with Munguia [34-0, 27KOs].
The fight will be Munguia's middleweight debut.
Munguia has successfully defended the light-middleweight world title five times, most recently in September.
Munguia, 23, has long been linked with a move up to middleweight.
O'Sullivan, 36, recently told BuzzSport about his goal to win a world title but this high-profile bout will be massive for the Mahon native.
It will be broadcast live on DAZN in the US and possible Sky Sports in Europe.
"For me, it's a dream come true to fight the undefeated champion of the world, and the number one ranked fighter in the world," O'Sullivan said. "It makes it even better that he's Mexican. I grew up watching the great Mexican champions, and to get the opportunity to fight Jaime is an honor. I will leave no stone unturned in my preparation for this fight. I can't recall feeling more motivated by any other fight in my career thus far. I believe this fight will be a war that the fans will talk about for many years to come."


EventFeeds - Available Feeds
Online Documentation
Configuration
All Subscribed Classes
/events/recent/
/events/recent/day/
/events/recent/week/
/events/recent/month/
/events/recent/year/
/events/recent/custom/?maxage=10&maxcount=100
Class Specific
{% for cls in selected_classes %}
{{ cls }}
/events/class/{{cls}}/
/events/class/{{cls}}/day/
/events/class/{{cls}}/week/
/events/class/{{cls}}/month/
/events/class/{{cls}}/year/
/events/class/{{cls}}/custom/?maxage=10&maxcount=100
{% endfor %}


Version 1.1.0
These functions and variables are provided globally for Rtfl scripts used in .rtfm template files.The request absolute URI
The request host
The request path
The request query string
The request URI
The request method
The request URL scheme
The IP that requested the page
A map containing information about the domain this document is in. It contains the following fields: name, hostnames, directory, ignore_404, not_found, server_error, index
A map containing all request parameters, from the query string or request body
The directory this document is in
1.0
A value to sanitize and append to the document
Another value to append to the document (optional, may specify more)
1.0
A value to append to the document
Another value to append to the document (optional, may specify more)
1.0
The status code int
1.0
The status message string
1.0
The response status message
1.0
The header name
The value of the header
1.0
The header name
The value of the header, or null if the header does not exist
1.0
The session key
The session value
1.0
The session key
The value corresponding to the session key, or null of the key does not exist
1.0
The path of the file to send
1.0
The query SQL (replacing values for parameters with #{param name} to escape them)
A map of parameters for this query (optional)
The prepared query ready to be used
1.1.0
The JDBC connection URL
The connection username
The connection password
The maximum connection pool size
The configuration map
1.0
An array of all current database connections in TwineRtfl scripts
1.0
The name of the variable
The value of the variable
1.0
The name of the variable
The value of the variable
1.0
name of the function
An argument for the function (optional, can specify zero or more)
The value returned by the function, or null if none
1.0
The string to sanitize
The sanitized string
1.0


{% extends 'base.html' %} {% block content %}
Time: {{detail.time}}
Location: {{detail.location}}
Participants
Board Games


--- layout: post date: 2005-12-11 time: "09:00:00" authors: ["Greg Wilson"] title: "Maintaining Correctness" tags: ["Curriculum", "Teaching"] ---
I'm re-thinking the lectures in the Software Carpentry course based on feedback from this term's students. I'm going to merge the three lectures on different development processes into one, and use the space that frees up to talk in more detail about programming style and software design—assuming, of course, I can think of something to say that isn't banal.
I also want to talk about the material in an article by Paul Dubois in the May/June 2005 issue of Computing in Science & Engineering called "Maintaining Correctness in Scientific Programs". Here are a few key lines from the introduction:
The more frequently a program is changed, the more difficult it is to maintain its correctness... Most programmers can reasonably tell when their programs are incorrect, but for scientific programmers, this is not the case. A bug that doesn't cause the program to fail in an obvious way could be indistinguishable from an error in modeling the real world with equations... Solving this problem must be the focus of our methodology, be it for a single person writing a 10,000-line program [or] a team of 20 or more writing half a million lines.
Paul then outlines a strategy based on defense in depth which has the following layers:
This immediately struck me as an excellent way to organize and motivate several important parts of the course. It also points out some holes that I'll need to fill. Oh, to have more hours, and more hands...


| |
ilActiveLayer is not yet used.
| | ILboolean ilActiveLayer( ILuint Number );
|
Parameters| | - Number
- Layer number to select as current.
|
Errors| | - IL_ILLEGAL_OPERATION
- The operation attempted is not allowable in the current state. The function returns with no ill side effects. Generally there is currently no image bound or it has been deleted via ilDeleteImages. You should use ilGenImages and ilBindImage before calling the function.
- IL_INTERNAL_ERROR
- *Big* problem with OpenIL. E-mail an admin with the conditions leading up to the error and pray. =]
|
See Also
|


Home
Exams
Free Courses
Pricing
Features
About Us
Contact Us
Sign Up
Login
Which grade are you currently in?
8th
9th
10th
11th
12th
Which board are you studying in?
ICSE
CBSE
Which type of course would you prefer?
Regular Course
Crash Course
Which type of mentorship would you choose?
1v1 Mentorship
1v5 Mentorship
Regular Course
1v1 Mentorship
Enroll Now
Regular Course
1v5 Mentorship
Enroll Now
Crash Course
1v1 Mentorship
Enroll Now
Crash Course
1v5 Mentorship
Enroll Now


| Package | com.pblabs.engine.components |
| Class | public class ThinkingComponent |
| Inheritance | ThinkingComponent EntityComponent |
| Implements | IQueuedObject |
| Subclasses | ThinkingMachineInstance |
"Think notifications" allow a component to specify a time and callback function which should be called back at that time. In this way you can easily build complex behavior (by changing which callback you pass) which is also efficient (because it is only called when needed, not every tick/frame). It is also light on the GC because no allocations are required beyond the initial allocation of the ThinkingComponent.
| Property | Defined by | ||
|---|---|---|---|
| isRegistered : Boolean
Whether or not the component is currently registered with an entity.
| EntityComponent | ||
| name : String
The name given to the component when it is added to an entity.
| EntityComponent | ||
| nextThinkCallback : Function [read-only]
| ThinkingComponent | ||
| nextThinkTime : Number [read-only]
| ThinkingComponent | ||
| owner : IEntity
A reference to the entity that this component currently belongs to.
| EntityComponent | ||
| priority : int | ThinkingComponent |
| Property | Defined by | ||
|---|---|---|---|
| _nextThinkCallback : Function | ThinkingComponent | ||
| _nextThinkTime : int | ThinkingComponent |
| Method | Defined by | ||
|---|---|---|---|
|
Registers the component with an entity.
| EntityComponent | ||
|
reset():void
This is called by an entity on all of its components any time a component
is added or removed.
| EntityComponent | ||
|
think(nextCallback:Function, timeTillThink:int):void
Schedule the next time this component should think.
| ThinkingComponent | ||
|
unregister():void
Unregisters the component from an entity.
| EntityComponent |
| Method | Defined by | ||
|---|---|---|---|
|
onAdd():void
This is called when the component is added to an entity.
| EntityComponent | ||
|
onRemove():void
| ThinkingComponent | ||
|
onReset():void
This is called anytime a component is added or removed from the owner entity.
| EntityComponent |
| _nextThinkCallback | property |
protected var _nextThinkCallback:Function
| nextThinkCallback | property |
nextThinkCallback:Function
[read-only]Implementation
public function get nextThinkCallback():Function
| _nextThinkTime | property |
protected var _nextThinkTime:int
| nextThinkTime | property |
nextThinkTime:Number
[read-only]Implementation
public function get nextThinkTime():Number
| priority | property |
priority:int
[read-write]Implementation
public function get priority():int
public function set priority(value:int):void
| onRemove | () | method |
protected override function onRemove():void
| think | () | method |
public function think(nextCallback:Function, timeTillThink:int):void
Schedule the next time this component should think.
ParametersnextCallback:Function — Function to be executed.
|
|
timeTillThink:int — Time in ms from now at which to execute the function (approximately).
|


my email - Etisalat Internet Mail
Username:
Password:
English
Copyright © 2015, Etisalat. All Rights Reserved.


{% extends 'base.html' %} {% load static %} {% block head-extras %} {% endblock %} {% block content %}
We’ve emailed you instructions for setting your password, if an account exists with the email you entered. You should receive them shortly.
If you don’t receive an email, please make sure you’ve entered the address you registered with, and check your spam folder.


Assignment 04 Exercises
1-5. See Canvas.
6. Modify Basic JS Object
Example answer here
Your answer here
7. Create Basic DOM Object
Example answer here
Your answer here
8. Create "totals" row and column in table
| Item | Price | Qty |
| Thingamabob | 1.00 | 1 |
| Whachamacallit | 2.00 | 2 |
| Doohickey | 3.00 | 3 |
Your answer here
9. Refactor a non-object-oriented form
Example answer here
Not object-oriented HTML form
10. Create a more object-oriented form
Example answer here
Object Oriented HTML form
Your answer here


{% extends 'pages/base.html' %} {% load static %} {% block links %}
We design and execute Brand Activations through one-to-one engagements that are specifically designed against your brand objectives and the best identified consumers touch points.
We run a variety of events from product launches to Christmas parties to treasure hunts and we love that every event is totally different.
Whatever the event though the ethos is always the same – we design for impact, but we love detail as this is what everyone remembers.
Despite rumors of its decline, journalist relations remains a core PR skill and a critical part of what we deliver as a proud media relations agency.
Whatever the event though the ethos is always the same – we design for impact, but we love detail as this is what everyone remembers.
We use a proprietary approach to multi-channel strategy, to optimize media spend fluidly to whichever channels or tactics are driving the highest ROI, with full transparency of the entire process.
We provide strategic & tactical solutions and media buying services across digital, social & mobile.


TaskAgent-web
This is a simple to-do list web interface. Lists are saved to disk in the format
specified here, so they can be synchronised with the TaskAgent iPhone
app. Uses AngularJS for the front-end and Scotty on the backend.
BSD 3-clause licenced.
Check out the code and the docs.


|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.management.remote.rmi.RMIServerImpl
public abstract class RMIServerImpl
An RMI object representing a connector server. Remote clients
can make connections using the newClient(Object)
method. This
method returns an RMI object representing the connection.
User code does not usually reference this class directly. RMI
connection servers are usually created with the class RMIConnectorServer
. Remote clients usually create connections
either with JMXConnectorFactory
or by instantiating RMIConnector
.
This is an abstract class. Concrete subclasses define the details of the client connection objects, such as whether they use JRMP or IIOP.
| Constructor Summary | |
|---|---|
RMIServerImpl(Map<String,?> env)
Constructs a new RMIServerImpl . |
| Method Summary | |
|---|---|
protected void |
clientClosed(RMIConnection client)
Method called when a client connection created by makeClient is closed. |
void |
close()
Closes this connection server. |
protected abstract void |
closeClient(RMIConnection client)
Closes a client connection made by makeClient . |
protected abstract void |
closeServer()
Called by close() to close the connector server. |
protected abstract void |
export()
Exports this RMI object. |
ClassLoader |
getDefaultClassLoader()
Gets the default ClassLoader used by this connector
server. |
MBeanServer |
getMBeanServer()
The MBeanServer to which this connector server
is attached. |
protected abstract String |
getProtocol()
Returns the protocol string for this object. |
String |
getVersion()
The version of the RMI Connector Protocol understood by this connector server. |
protected abstract RMIConnection |
makeClient(String connectionId,
Subject subject)
Creates a new client connection. |
RMIConnection |
newClient(Object credentials)
Creates a new client connection. |
void |
setDefaultClassLoader(ClassLoader cl)
Sets the default ClassLoader for this connector
server. |
void |
setMBeanServer(MBeanServer mbs)
Sets the MBeanServer to which this connector
server is attached. |
abstract Remote |
toStub()
Returns a remotable stub for this server object. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public RMIServerImpl(Map<String,?> env)
Constructs a new RMIServerImpl
.
env
- the environment containing attributes for the new
RMIServerImpl
. Can be null, which is equivalent
to an empty Map.| Method Detail |
|---|
protected abstract void export() throws IOException
Exports this RMI object.
IOException
- if this RMI object cannot be exported.public abstract Remote toStub() throws IOException
IOException
- if the stub cannot be obtained - e.g the
RMIServerImpl has not been exported yet.public void setDefaultClassLoader(ClassLoader cl)
Sets the default ClassLoader
for this connector
server. New client connections will use this classloader.
Existing client connections are unaffected.
cl
- the new ClassLoader
to be used by this
connector server.getDefaultClassLoader()
public ClassLoader getDefaultClassLoader()
Gets the default ClassLoader
used by this connector
server.
ClassLoader
used by this
connector server.setDefaultClassLoader(java.lang.ClassLoader)
public void setMBeanServer(MBeanServer mbs)
Sets the MBeanServer
to which this connector
server is attached. New client connections will interact
with this MBeanServer
. Existing client connections are
unaffected.
mbs
- the new MBeanServer
. Can be null, but
new client connections will be refused as long as it is.getMBeanServer()
public MBeanServer getMBeanServer()
The MBeanServer
to which this connector server
is attached. This is the last value passed to setMBeanServer(javax.management.MBeanServer)
on this object, or null if that method has
never been called.
MBeanServer
to which this connector
is attached.setMBeanServer(javax.management.MBeanServer)
public String getVersion()
RMIServer
The version of the RMI Connector Protocol understood by this connector server. This is a string with the following format:
protocol-version implementation-name
The protocol-version
is a series of
two or more non-negative integers separated by periods
(.
). An implementation of the version described
by this documentation must use the string 1.0
here.
After the protocol version there must be a space, followed by the implementation name. The format of the implementation name is unspecified. It is recommended that it include an implementation version number. An implementation can use an empty string as its implementation name, for example for security reasons.
getVersion
in interface RMIServer
public RMIConnection newClient(Object credentials) throws IOException
Creates a new client connection. This method calls makeClient
and adds the returned client connection
object to an internal list. When this
RMIServerImpl
is shut down via its close()
method, the close()
method of each object remaining in the list is called.
The fact that a client connection object is in this internal list does not prevent it from being garbage collected.
newClient
in interface RMIServer
credentials
- this object specifies the user-defined
credentials to be passed in to the server in order to
authenticate the caller before creating the
RMIConnection
. Can be null.
RMIConnection
. This is
usually the object created by makeClient
, though
an implementation may choose to wrap that object in another
object implementing RMIConnection
.
IOException
- if the new client object cannot be
created or exported.
SecurityException
- if the given credentials do not allow
the server to authenticate the user successfully.
IllegalStateException
- if getMBeanServer()
is null.protected abstract RMIConnection makeClient(String connectionId, Subject subject) throws IOException
Creates a new client connection. This method is called by
the public method newClient(Object)
.
connectionId
- the ID of the new connection. Every
connection opened by this connector server will have a
different ID. The behavior is unspecified if this parameter is
null.subject
- the authenticated subject. Can be null.
RMIConnection
.
IOException
- if the new client object cannot be
created or exported.protected abstract void closeClient(RMIConnection client) throws IOException
Closes a client connection made by makeClient
.
client
- a connection previously returned by
makeClient
on which the closeClient
method has not previously been called. The behavior is
unspecified if these conditions are violated, including the
case where client
is null.
IOException
- if the client connection cannot be
closed.protected abstract String getProtocol()
Returns the protocol string for this object. The string is
rmi
for RMI/JRMP and iiop
for RMI/IIOP.
protected void clientClosed(RMIConnection client) throws IOException
Method called when a client connection created by makeClient
is closed. A subclass that defines
makeClient
must arrange for this method to be
called when the resultant object's close
method is called. This enables it to be removed from
the RMIServerImpl
's list of connections. It is
not an error for client
not to be in that
list.
After removing client
from the list of
connections, this method calls closeClient(client)
.
client
- the client connection that has been closed.
IOException
- if closeClient(javax.management.remote.rmi.RMIConnection)
throws this
exception.
NullPointerException
- if client
is null.public void close() throws IOException
Closes this connection server. This method first calls the
closeServer()
method so that no new client connections
will be accepted. Then, for each remaining RMIConnection
object returned by makeClient
, its close
method is
called.
The behaviour when this method is called more than once is unspecified.
If closeServer()
throws an
IOException
, the individual connections are
nevertheless closed, and then the IOException
is
thrown from this method.
If closeServer()
returns normally but one or more
of the individual connections throws an
IOException
, then, after closing all the
connections, one of those IOException
s is thrown
from this method. If more than one connection throws an
IOException
, it is unspecified which one is thrown
from this method.
IOException
- if closeServer()
or one of the
RMIConnection.close()
calls threw
IOException
.protected abstract void closeServer() throws IOException
Called by close()
to close the connector server.
After returning from this method, the connector server must
not accept any new connections.
IOException
- if the attempt to close the connector
server failed.
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright © 2004, 2010 Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.


Back To Home
Register Your Organization
Thank you
Your monthly
Standard
plan has been activated.
$29
/ monthly
your plan activated
Back to Home


THE FIFTH ELEMENT A film review by Tim Voon Copyright 1997 Tim Voon
I truly enjoyed the visual beauty of Ridley Scott's 'Blade Runner' and in certain respects, director Luc Besson has achieved with the 'Fifth Element', what can be described as a visually beautiful movie.
The concept of five elements coming together to protect earth is a good base for any plot. Its opening scenes has a similar reminiscent feel to 'Star Gate'; the movie is fast moving and is never for a moment dull, with snappy, alternative music to guide it along. The big disappointment is it's ending which becomes cliched, when Korben has to profess his love to the fifth element before she can perform her duty (not so perfect after all).
Part of the promotion for this movie was 'The Fifth Element It Must Be Found.' In all fairness they should have added 'Where Did They Stash The Other Four?' as much of the movie madly revolves about finding them; and the advertisements for MacDonalds is shameless but nevertheless entertaining.
People have been talking about the intricacies of Blade Runner's plot since it's release more than a decade ago. Who was the fifth escapee replicant? Was it Deckard? Or was it Rachael? This makes an intriguing after-dinner conversation (+/- argument), believe me.
Unfortunately, nobody will be having long discussions about why the earth doesn't have more moons if 'Darkness' returned every five thousand years, or why human space was so badly patrolled allowing the Mangalore fighters to destroy the Mondoshawan craft, or why the Fifth Element goes all soft and gooey when she reads about war and man's other destructive qualities, then has second thoughts about saving mankind. Hmmmmm.
This movie will be remembered if not for it's plot, for its memorable scenes like Lee Loo jumping of a sky scraper, the police car line up, the Chinese sail boat take-away, and the enchanting blue Diva singing operetta as Lee Loo fights, and will inevitably become what is considered a cult classic.
- Timothy Voon e-mail<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Legend
Root text is "root"
Item text are "positives" and "negatives"
Word text are "good", "nice", "kind", "bad", "unpolite"...
Component


You are advised to set the Audio Encoding Format parameter to the default value ADPCM.
When you select the Remix Recording check box, the camera records the sound collected by an audio input device connected to the camera as well as the sound collected by an audio input device (during a call) connected to your personal computer (PC).


BAC is a Nepalese Community Soccer players. Staying in America is tough but pursuing your dreams is tougher.
To make through our daily hassels, we have committed to dedicate some hour of the week to have some fun.
This is what we want, All I want is Soccer.


Standards¶
General programming¶
All indices should zero based. e.g. if a <select> element has sequential numeric values these would be from the series 0,1,2,3,…
Database¶
Naming
- table names, column names: all lowercase, use underscores to separate words e.g specimen_id, test_type_id
- names with abbreviations may be treated differently e.g. targetTAT makes more sense
- better long names that makes sense
- Use of appropriate field type e.g. ‘SMALLINT’ instead of ‘STRING’ for age
- If a primary key is necessary on a table it should be the first column and should be named ‘id’. It should be unsigned.
- When this id is referenced in another table (as a foreign key) it should be called ‘tablename_id’
- Table names are in the plural e.g. specimens instead of specimen
- Create a migration file for every new table or change to a table. If necessary add the seed data using a separate file. See the Migrations & Seeding section of the online Laravel guide.
PHP Classes This applies to Controllers, Models, migration and seeding classes, …
- Class names always begins with uppercase e.g. CreateTestTypeMeasureTable
- When combining words every word begins with uppercase. Do not use underscores e.g. SpecimenType as opposed to Specimen_type
- Method or Function names begin in lowercase and words join in uppercase e.g. getSpecimenTypes()
- Provide descriptive class and function comments before their definitions
- Variable names - begin in lowercase. Multiple words should begin in upper case e.g. specimenType
- Better long names that makes sense e.g. specimenType instead of speTyp
- Soft delete(s) preferable to hard delete(s)
Laravel views
- Using blade templating engine
- All html elements in lowercase
- Using bootstrap for css
HTML and CSS
All CSS should be placed in an external stylesheet file (
public/css/
)CSS class names should use hyphens when joining words e.g. ‘user-image’
Indent for readability in order of precedence e.g.:
.form-group{} .form-group.actions-row{} .form-group > label{} .form-group .form-control{} .form-group .form-pane{} .form-group .form-pane label{}
Never use !important;
CSS files should have categorised sections e.g. for user files, for general layout
Use contextual elements such as <strong> and <em> instead of <b> or <i>
Page layout should be done from the CSS file. Do not use for spacing. If done properly there should be no need to use <br> either
Comments: Include the section name e.g.:
/** * forms */
Javascript¶
- Using jquery
- All javascript code should be in external files (
public/js/
)
Github¶
- Create an issue for each change you want to make
- Create a branch from the master for the same change. The branch name should be descriptive
- Once fixed, create a pull request asking a specific person to review the feature
- Reviewed and approved features should be merged back to the master and the branch deleted
- You can link to a line of code, or a section of code by reading here
- There are config files that you want to change but don’t want to commit, i.e
/app/config/app.php
and/app/config/database.php
you can prevent yourself from accidentally commiting these files by doinggit update-index --assume-unchanged /path/to/file.ext
your changes will no longer be tracked. [Read more here]
Tests¶
- Every feature should have an accompanying test
- A feature should pass all tests before it is merged into the master branch


Last event menu 1: ${lastEvent1 | stringify}
Last event menu 2: ${lastEvent2 | stringify}
import { MdcMenu, IMdcMenuSelectedEvent, MdcMenuAnchorCorner } from 'aurelia-mdc-bridge'; private menuElement: MdcMenu; // menu state isOpen = menuElement.open; // open menu menuElement.open = true; // close menu menuElement.open = false; // open menu menuElement.show(); // show (open) menu, and focus the menu item at index 1. menuElement.show({focusIndex: 1}); // close menu menuElement.close(); // open menu from bottom right menuElement.anchorCorner = MdcMenuAnchorCorner.bottomRight; // menu item is selected private onSelect(event: IMdcMenuSelectedEvent) { // event.detail.item: HTMLElement (The DOM element for the selected item) // event.detail.index: number (The index of the selected item) } // menu is closed with no selection made private onCancel() { }
Item 1 Item 2 Item 3 Item 4
You can bind a variable to value attribute on mdc-menu element and get a model from selected mdc-list-item.
It is also possible to focus item based on value.
private menuElement: MdcMenu; private menuItems = [ { id: 1, text: 'Item 1' }, { id: 2, text: 'Item 2' }, { id: 3, text: 'Item 3' }, { id: 4, text: 'Item 4' } ]; private selectedMenuItem = this.menuItems[1]; private showMenu() { this.menuElement.show({focusValue: true}); }
${item.text} ${selectedMenuItem}
The menu can be configured to start in the opened state by adding open-state="true" attribute to the mdc-menu element.
To open menu without animation add quick-open="true" attribute to the mdc-menu element.
The menu is position: absolute by default, and must be positioned by the user when doing manual positioning.
...
.demo-menu-manual { position: relative; border: 1px solid #eee; margin: 0 0 32px 0; width: 256px; height: 256px; } .demo-menu-topleft { position: absolute; top: 0; left: 0; } .demo-menu-topright { position: absolute; top: 0; right: 0; } ...
The menu will open from the top left by default (top right in RTL). Depending on how you’ve positioned your button, you may want to change the position it opens from. To override the opening position, you can style transform-origin directly, or use one of the following options:
.mdc-menu-surface--anchor { position: absolute; }
Item 1 network_wifi Item 2 star


Markdown Preview
================
Markdown Preview is a HTML5 Markdown editor, based on [Dillinger].
- Type some Markdown text in the left window
- See the HTML in the right
- Magic
Markdown is a lightweight markup language based on the formatting conventions that people naturally use in email. As [John Gruber] writes on the [Markdown site] [1]:
> The overriding design goal for Markdown's
> formatting syntax is to make it as readable
> as possible. The idea is that a
> Markdown-formatted document should be
> publishable as-is, as plain text, without
> looking like it's been marked up with tags
> or formatting instructions.
This text you see here is *actually* written in Markdown! To get a feel for Markdown's syntax, type some text into the left window and watch the results in the right.
Version
----
0.1
Tech
-----------
Markdown Preview uses a number of open source projects to work properly:
* [Ace Editor] - awesome web-based text editor
* [Marked] - a super fast port of Markdown to JavaScript
* [Twitter Bootstrap] - great UI boilerplate for modern web apps
* [keymaster.js] - awesome keyboard handler lib by [@thomasfuchs]
* [jQuery] - duh
Installation
--------------
1. Clone this repository
2. Copy the files to your website
3. Visit `index.html`, that's it!


The attribute src allows you to switch between different documents. There's also the attribute
[base64Src] for base64 encoded documents.
[(src)]=no document/assets/pdfs/Introduction.pdf/assets/pdfs/pdf-sample.pdfnew URL('{{url.toString()}}') enable dragging and dropping files to the PDF viewer
Current value of [src]: {{ src === undefined ? 'undefined' : '"'+ src + '"' }}


#include <message.h>
Inherits impulse::Frame.
Public Member Functions | |
| Message (Symbol &selector) | |
| Message (Symbol &selector, Value arg1) | |
| Message (Symbol &selector, Value arg1, Value arg2) | |
| Value | eval (Array &args, Value self) |
| Value | evaluate (Array &args, Value self, Value context) |
| string | inspect () |
When eval()'d, it evaluates each argument and call's the receiver's send() method with the evaluated args.
| impulse::Message::Message | ( | Symbol & | selector | ) | [inline] |
Reimplemented from impulse::Frame.
| string impulse::Message::inspect | ( | ) | [inline, virtual] |
Reimplemented from impulse::Frame.


Local dishes you shouldn't miss in Batam
by FadliLocated in a border region and subject to strong foreign influences in the course of its history, Batam is a tourist destination of rich culinary diversity.
Hence, Batam cuisine is a blend of Arabian, Chinese, Malay and native flavors.
From the many options available, travelers to Batam should at least savor some of these signature dishes of the region:
Yongkie fish soup
Batam first developed as an industrial estate, therefore here were not as many culinary places to visit as there are now. The materials used to cook were pretty much limited to seafood like fish, shrimps, squid and gonggong (clams).
Yongkie restaurant is located in the Nagoya area of the city center. It has been around for more than 30 years. Its fish soup is made of tenggiri (wahoo) fish and is well-known nationwide. Despite having branches in other cities, the restaurant at Batam is still the favorite one because of its fresh taste.
Aside from fish, the soup typically consists of shrimp and squid. The tenggiri fish head soup, in particular, is cooked with tamarind. The sour taste dispels the fishy smell of the soup.
There is only one other branch in Batam, namely in the Engku Putrie area of Batam center, which offers much more space. In the afternoon and evening, both places are very crowded, especially with tourists.
Several national figures could be found frequently ordering the soup and asking for it to be send through air cargo services to be received on the same day. The price for a bowl of fish soup is Rp 40,000 (US$2.84).
‘Prata’ and ‘martabak’
Plain Prata (fried bread) with gule (thick curry) soup is a popular breakfast option. Although prata and martabak (stuffed fried pancake) originate from the Middle East, they have long become staples of Batam cuisine.
Belakang Padang Island, an island close to Singapore, is one of the best places to taste prata, coffee and teh tarik (milk tea).
Traveling to Belakang Padang Island from Batam only takes 15 minutes on a wooden boat and costs Rp 8,000 one way. Long before Batam became a popular destination, Belakang Padang Island was known first as an official district. Back then, Batam was only an island of forests.
The situation has changed since then as Batam developed rapidly, but Belakang Padang Island remains the same. Now, many Belakang Padang residents work in Batam city and return home for the weekend.
 It was founded by a man of Chinese descent called Ameng. Three shophouses combined into one are still not enough to accommodate all visitors. The tables are always full, especially on weekends, because many Batam people come just to taste its coffee.
Prata and martabak make for fitting side dishes to go with its coffee. When the weather is good, you can vaguely see Singapore's Marina Bay Sands from the distance.
Read also
Mie Lendir Berkuah Kacang
When the late senior journalist and culinary expert Bondan Winarno came to taste this dish at the Harum Manis Coffee Shop, the only word that came out of him was mak nyus (yummy).
Mie Lendir Berkuah Kacang (boiled noodle with peanut sauce) differs from mie lender or typical boiled noodle from Medan, North Sumatra, as the peanut sauce is not as thick, yet has a strong scent of peanuts.
Served with sliced boiled egg as a topping, visitors won’t feel full even though they’ve eaten two portions. The plate is served with sliced cabe rawit (small hot chilies) on the side.
To enjoy it at the Harum Manis Coffee Shop, you’ll have to come early, because if you’re a little late, you’ll have to fight for a seat. The coffee shop is one of the favorites in the old town of Nagoya, which is also the business center of Batam.
Mie lendir isn’t the only special menu in this place. They also have good coffee made by the most senior barista on the island. Although the old man stands crookedly, he has a great hand at making coffee. (vel/kes)


Success!
This is your admin board now.
From now on, every time you sync a card, it will appear here.


C Pets Sample
This sample demonstrates calling a simple expert system from C.
Building the Sample
- Compile and link pets.pro into pets.xpl.
- Under Windows, open the Microsoft Visual C Project pets.dsw and build pets.exe.
- Under Unix, run the appropriate makefile under Linux (makefile.lnx) or Solaris
(makefile.sol) to build pets
Running the Sample
- Run pets(.exe).
- Enter a sound like 'woof', 'quack' or 'meow'.
Copyright ©1987-2011 Amzi! inc. All Rights Reserved.
Amzi! is a registered trademark and Logic Server and e-Prolog are trademarks
of Amzi! inc.


Prototype Test quality information
{{releaseVersion | log }}UX Designer: Dyfrig Rees
Improving feature value, clarity of data and aligning to GOV style guide.
Work in progress
- Performance dashboard - Version 1
- View TQI from site level - Version 1
- View TQI from testers own profile - Version 1


Mrs. Larisa Sosnitskaya
PLEASE FOR CONFIDENTIALITY REASONS CONTACT ME THROUGH MY SECURED EMAIL ADDRESS<EMAIL_ADDRESS>Dear Partner,
I am Mrs. Larisa Sosnitskaya and I represent Mr. Mikhail Khordokovsky the former C.E.O of Yukos Oil Company in Russia. (Russian Largest Oil Company) Chairman CEO: Menatep SBP Bank (A well reputable financial institution with itœµ Branches all over the world) I have a very sensitive and confidential brief from this top (oligarch) to ask for your partnership in re-profiling funds US$46 Million. I will give the details, but in summary, the funds are coming via Bank Menatep.
SOURCE OF FUNDS: I have a profiling amount in an excess of US$46 Million (Forty-six Million dollar) which I seek your Partnership in accommodating for me. You will be rewarded with 20% of the total sum for your partnership. Can you be my partner on this? Already the funds have left the shore of Russia through diplomatic means to a European Holding firm where the final crediting is expected to be carried out. While I was on the process, My Boss got arrested for his Involvement in politics by financing the leading And opposing political parties (the Union of Right Forces, led by Boris Nemtsov, and Yabloko, a liberal/social democratic party Led by Gregor Yavlinsky) which poses treat to President Vladimir Putin Second Tenure as Russian president. You can catch more of the story on this website:
http://www.mosnews.com/mn-files/khodorkovsky.shtml
http://www.mbktrial.com/
http://news.bbc.co.uk/1/hi/business/3213505.stm
http://www.themoscowtimes.com/stories/2005/04/11/041.html
http://www.nndb.com/people/633/000025558/
YOUR ROLE: All I need from you is to stand as the beneficiary of the above quoted sum and I will re-profile the funds with your name, which will enable the European Holding firm transfer the sum to you. I have decided to use this sum to relocate to American continent and never to be connected to any of Mikhail khodorkovsky conglomerates. The transaction has to be concluded within 5 to 10 bank working days, as soon as I confirm your readiness to conclude the transaction with me. Contact me via my private box<EMAIL_ADDRESS>so that I can furnish you with more details.
Thank you very much,
Regards,
Mrs. Larisa Sosnitskaya.


OroGin Distillery and The George hotel roll out exclusive gin
by Hannah BurleyLockerbie’s OroGin Distillery Company has teamed up with a luxury Edinburgh hotel to launch an exclusive gin brand.
Gin experts from the Scottish distiller have teamed up with counterparts at The George hotel to create Number Nineteen, a dry craft gin.
The spirit’s launch coincides with the unveiling of the hotel’s multi-million-pound refurbishment and re-brand as the InterContinental Edinburgh – The George.
Number Nineteen is available for exclusive purchase as a bottle from the hotel, while customers can find the gin in the Printing Press Bar & Kitchen and in their room’s mini bar.
The brand's label has been designed to reflect the hotel's Georgian heritage, with an original map of Edinburgh’s George Street and a border that’s reminiscent of a Georgian door number.
It is the second gin to be launched by the property, following No. 25 in 2017.
Ray Clynick, MD and head distiller for The OroGin Distilling Co, said: “We’re really excited to launch the new Number Nineteen gin brand. The bottle looks fantastic with the design mirroring the elegance, quiet opulence and timelessness of The George.”
READ MORE: Asda to stock healthier products from these two Scottish meat suppliers
READ MORE: Thriving Edinburgh hotel sector boosts events industry


This Privacy Policy defines how Gg Studio collects and uses users personal and non-personal information and data in our mobile applications (available for smart phones and tablets) and on our website.
Personal Data:
- Gg Studio respects your privacy rights and recognizes the importance of protecting any information collected about you.
- Gg Studio do not collect any personal user data. Gg Studio may use tools or third-party analytics software to collect and use certain non-personal data that does not enable us to identify you (we track only data such as: device type, mobile device software, data carrier, ...).
- Gg Studio uses Google Analytics to analyze anonymous aggregated usage data for our applications.
Non-Personal Data:
- Advertisers who serve ads may use technology which can uniquely identify mobile devices to deliver better target messages and control number of times you get an Add. Add Networks may access your unique device identifier through their own technologies and use it to target advertising to you.
- Advertisers make available links through advertisements or otherwise enabling you to access third party sites, tools or games. Please note that, while using such sites, tools or games, you are not affiliated with or controlled by us.
- Gg Studio applications use Google AdMob ads as primary ad service and Facebook Audience Network, StartApp.


In fiction, the sole Idle Animation for bartenders who aren't currently filling a glass is to dry a glass (unless they're the main character, in which case they will never do either of these things). You'll never see them stocking ice or frequently-ordered drinks, wiping down the bar, or trying to keep customers (who aren't the protagonist) engaged. In real life, bartenders who always have a glass in their hand tend to get fired.
Understandable in TV and movies, where it's an easy barkeeping duty to do in multiple takes, while many other jobs would need undoing before they could be done again and cause continuity problems. In addition, activities like handling glassware or ice can be quite loud, and can drown out whatever is going on. Less understandable in other media; it's probably a result of the stereotype.
Examples:
- Bleach. In the Lost Agent anime arc, Xcution member Giriko Kutsuzawa works as a bartender. In almost every episode he appears in, at least once he's shown polishing a glass while standing behind the group's private bar.
- An alien barkeep extra can be seen in episode 10 of the second season of Space Dandy doing this, in every single shot he's onscreen.
- Izumo Kusanagi in K, despite being a major character and second-in-command of one of the series' factions, still does this a lot when he's behind the bar at his restaurant (and Red Clan headquarters), Bar HOMRA. Used to great effect in episode 3; when Misaki and Rikio crash into his bar, he drops the glass, and as it falls, it reflects his face in The Scream pose.
- Another main character example in High School Star Musical: In season 2 episode 3, when Kitahara and Nanjo visit the restaurant where Kuga works as a bartender (even though he's in high school), they have a loud conversation about their cocky attitudes towards the audition. Kuga overhears, doesn't like their attitude, and brings them some extremely bitter drinks, on the house. What was he doing when he overheard them? Yeah, drying a glass.
- Wormy in Dragon magazine #79. The troll bartender is shown drying a glass as he listens to his customers.
- The Mother Goose and Grimm comic for November 16th, 2012.◊ The dog Grimm is at a bar where the bartender is cleaning a glass with a cloth.
- Pardon My Planet has an occasional strip with a bartender drying a glass and listening to a customer talk.
- The strip for November 29th, 2012 has the customer complaining about his wife.
- The strip for January 12th 2013 has a similar scene with a customer talking about pursuing the American dream: life, liberty and the pursuit of happy hour.
- In the strip for February 21st, 2013 a customer is complaining about his wife not finding it romantic when he holds up her old black lace teddy and says "Let's see if you can still fit into this".
- Strip for April 18th, 2013. A man says that when he told his wife that it would be O.K. if she found someone else after he was gone, he meant "gone" as in dead, not "gone" as in "at work".
- Hägar the Horrible. In the strip for July 16th 2014, Hagar and Lucky Eddie are talking in a bar. The bartender is behind the counter polishing a glass.
- Tumbleweeds: Blackie, the saloon keeper of Grimy Gulch, is usually seen drying glasses when not serving drinks.
- The Apprentice, the Student, and the Charlatan averts this, as almost every bartender seen does something other than simply clean a glass with all of their time.
- The unnamed barkeep in the anime version of AKIRA; his determination to man his station gets him killed in the end.
- Heavy Metal segment "Taarna". When the title character goes into the bar the bartender is drying a glass. When she goes over to get information from him he's still drying a glass.
- This is how we're introduced to Tapper in Wreck-It Ralph.
- The bartender in Blazing Saddles who "always kept things nice and clean" by spitting in them and shining them.
- The bartender at the saloon in Back to the Future Part III.
- The Sting. Just before Billie leaves the lounge of her whorehouse to warn the con men about Snyder, the bartender can be seen drying a glass with a cloth.
- ¡Three Amigos!. When the German walks into the Bad-Guy Bar, the bartender is polishing a glass.
- The innkeeper in My Week with Marilyn is fiddling around with a rag and glasses in both of his scenes.
- The Fifth Element: The bartender at the astroport does it, in probably what is a parody considering it's a robot.
- Top Secret!. While Nick Rivers is fighting Nigel in the underwater bar, in the background the barkeeper can be seen polishing a glass with a cloth.
- The barkeeper in The Big Heat is cleaning glasses when Bannion comes to question him.
- The League of Extraordinary Gentlemen. Allan Quatermain first appears in an African bar.
- In They Died with Their Boots On, the bartender at Fort Abraham Lincoln's canteen is, naturally, cleaning glasses after closing time when Custer comes in.
- Passengers has a robot bartender who justifies this as standby mode, perfect stillness freaking people out.
- Bill at the soda shop in Pleasantville is introduced wiping down the countertop with a towel when David, thrust into the show's role of Bud, arrives late for his shift working there. Because Bill literally cannot start his duties until Bud arrives, he'd been wiping down the counter long enough, and in the same spot to boot, that it had been worn down into a circular smear.
- In Victim, the barkeeper at the pub is seen cleaning glasses while interacting with the patrons.
- In Harry Potter, Aberforth Dumbledore's first appearance involved him wiping a glass that seemed to be getting dirtier. The barkeep washing glasses is an obvious cover for his eavesdropping. Two books later, the stereotype falls away altogether as he becomes a full-blown Rick Blaine type.
- Lampshaded in Guards! Guards!. Sham the bartender is constantly cleaning glasses, which always confuses Vimes because the glasses never seem to be clean. A possible (and obvious) answer to TP's dilemma offered by — who else? — Douglas Adams is that the cloth is actually dirtier than the glasses, resulting in an opposite effect where the alcohol kills whatever germs have peacefully been living on the towel.
- Mac, the proprietor of McAnally's Pub in The Dresden Files, is always either wiping glasses or polishing the bar. It's implied to be an Invoked Trope— Mac is seriously taciturn (he speaks an average of one sentence per novel) and always having a task to hand deflects social attention.
- Late in The Wheel of Time, there's a brief mention of a barkeep who does this and is generally obsessive about keeping his place clean. The story kind of pokes fun at this trope by pointing out that the bartender gets so worked up with cleanliness that it actually unnerves customers and drives away business, because people who go in for a little Drowning Their Sorrows don't want to feel like they're stepping into an immaculately kept palace or museum.
- Lampshaded in Roadside Picnic, where Redrick briefly reflects on how amazing it is that the bartender of the Borscht is constantly cleaning glasses.

- In NCIS, a barkeeper questioned by Tony (about DiNozzo Sr.'s whereabouts) is seen cleaning while answering. More justified, though, since the bar has yet to actually open.
- Dungeons & Dragons
- Adventure I6 Ravenloft. The barkeep of the "Blood of the Vine" tavern mindlessly cleans glasses one after the other. When they're all clean, he starts over. He only stops doing this to take drink orders and serve drinks.
- The Planescape setting adventure In the Abyss. The Grinning Imp is a small tavern in the city of Sigil that sells drinks from all over the multiverse. When the PCs enter the tiefling bartender will be polishing mugs.
- Kobolds Ate My Baby 3rd edition. The sample village of West Bumble has the Screaming Unicorn Tavern. The barkeeper is washing the three unbroken glasses in the place.
- Paranoia supplement Acute Paranoia, adventure "Botbusters". When the barbot (bartender robot) Jonesie receives a message from The Computer, he's standing around polishing some glasses.
- Dangerous Journeys/Mythus main rules sample adventure "High Time at the Winged Pig". When the Heroic Personas (PCs) enter the title inn, they see the man behind the bar (barkeeper) drying a mug.
- It Came from the Late, Late Show. Extras include bartenders, who seem to spend a lot of time polishing glasses.
- Shadowrun 2nd Edition main rules. In the Contacts section, the picture of the Bartender shows him polishing a glass.
- Brewster the bar-tending pigeon in the later Animal Crossing games, which feature his café.
- The bartender in Paper Mario: The Thousand-Year Door is doing this.
- The bartender in Monkey Island 2: LeChuck's Revenge is always cleaning the glasses... with his spittle.
- The default animation for the bartender at the Chicken Kitchen in Ghost Trick.
- The bartender in Jedi Knight II: Jedi Outcast invokes this, cleaning a glass as an excuse to ignore Kyle Katarn. Once Kyle slams his lightsaber on the bartop he tosses it over his shoulder and switches rapidly to obsequious mode.
- In Catherine Boss, owner and barman of the Stray Sheep, is frequently seen polishing glasses.
- Grillby in Undertale is always seen behind the bar of his tavern/restaurant in Snowdin, polishing a glass.
- In Starship Titanic, Fortillian O'Perfluous, the BarBot, is seen cleaning a glass as his idle animation behind the bar of the titular space cruise liner. The first time you talk to him, he actually gives you the glass he was cleaning.
- Space Adventure Cobra on the Sega CD has a bar as the first area. The bartender isn't cleaning a glass, but he is endlessly shaking a cocktail.
- Bernie at the Squishy Juice Bar in JumpStart Adventures 5th Grade: Jo Hammet, Kid Detective. Ironically, he's not very good at making drinks there, but people still come anyway.
- Infocom's Cutthroats. Whenever you enter The Shanty tavern, the bartender will be polishing glasses with a worn towel.
- Moe Szyslak does this all the time on The Simpsons. One episode even suggests that the rag is his Companion Cube.
- The bartender in Rooty Toot Toot is seen cleaning a glass during the flashback to his testimony, and even wipes the witness stand when he's done.


I am a Java enterprise developer. I'm also playing with JavaScript and Python.
Motivated to make daily hacking enjoyable with algorithm consideration, static analysis and data virtualization.
Visit Linkedin profile for detail.
Playing Soccer
Programming Context
Game
Camping
Teching my child
and more.


Guardiola inducted into LMA Hall of Fame
by The Eagle OnlinePep Guardiola has been inducted into the League Managers Association Hall of Fame.
The Manchester City boss was recognised at an LMA event on Thursday evening, where he received a commemorative shield from Gareth Southgate and Sir Alex Ferguson alongside fellow inductee, Jurgen Klopp.
The LMA Manager of the Year in 2018, Guardiola expressed his pride for the latest acknowledgement of the unprecedented success he has achieved since his arrival at the Club in the summer of 2016.
“It’s a privilege,” he said.
“When you come down the corridor you see all the big managers who have been here to help make football better, to make the football we have right now. Of course, it’s an honour.”
Under Guardiola, City have broken countless records in English football, lifting seven trophies in three seasons.
In 2018/19 we became the first Club in to win all four men’s English trophies in a single campaign, whilst our league title that year saw Guardiola become the first manager in a decade to retain the Premier League.
Twelve months earlier the 48-year-old was crowned LMA Manager of the Year.
He was the first City boss and the first Spaniard to receive the award, but having been inducted into the Hall of Fame, Guardiola paid tribute to the players he feels fortunate to have worked alongside.
“Big clubs and big players,” he added, when he asked what he attributes his success to.
“I think all the managers in the Hall of Fame were in incredible clubs with incredible players. There are no secrets.
“Without the quality of the players that you have, the managers cannot have success.”
Guardiola is the 11th LMA Hall of Fame inductee to have managed City.
He joins Steve Coppell, Sven-Goran Eriksson, Brian Horton, Kevin Keegan, Howard Kendall, Roberto Mancini, Joe Mercer, Stuart Pearce, Manuel Pellegrini and Joe Royle on the list.
Previous Post
Akpeyi wins Player of the Month award
Next Post
Arsenal appoint Ljunberg interim manager


#include "dmlc/base.h"
#include <string>
#include "dmlc/io.h"
#include "dmlc/type_traits.h"
#include "dmlc/parameter.h"
#include "mshadow/tensor.h"
#include "nnvm/op.h"
#include "nnvm/symbolic.h"
#include "libinfo.h"
#include "tuple.h"
Go to the source code of this file.
|
| struct | mxnet::Context |
| | Context information about the execution environment. More...
|
| |
| class | mxnet::GPUAuxStream |
| | Holds an auxiliary mshadow gpu stream that can be synced with a primary stream. More...
|
| |
| class | mxnet::SyncedGPUAuxStream |
| | Provides automatic coordination of an auxilary stream with a primary one. This object, upon construction, prepares an aux stream for use by syncing it with enqueued primary-stream work. Object destruction will sync again so future primary-stream work will wait on enqueued aux-stream work. If MXNET_GPU_WORKER_NSTREAMS == 1, then this defaults simply: the primary stream will equal the aux stream and the syncs will be executed as nops. See ./src/operator/cudnn/cudnn_convolution-inl.h for a usage example. More...
|
| |
| struct | mxnet::RunContext |
| | execution time context. The information needed in runtime for actual execution. More...
|
| |
define compatible keywords in g++ Used to support g++-4.6 and g++4.7
define dllexport for Visual Studio
| #define MXNET_MAKE_VERSION |
( |
|
major, |
|
|
|
minor, |
|
|
|
patch |
|
) |
| ((major)*10000 + (minor)*100 + patch) |
helper for making version number
| #define MXNET_PREDICT_ONLY 0 |
| #define PROFILER_MESSAGE_FUNCNAME (__FUNCTION__) |
define function name as profiler message


Welcome to your SMARTCharge Control Panel! From here you can setup a charging schedule, view the status of your charging
unit, and review your previous charges.
Status
Charging Schedule
SmartCHARGE is different from standard EV chargers because it allows you to set a charging schedule. Take advantage of
Time of Use electricity pricing by setting a schedule in order to save on your electricity bill.
To set or remove a charging schedule, navigate to the
Configuration Page .
Toggling the button below will disable your charging schedule. When disabled, your vehicle begins charging
immediately once your SmartCHARGE is plugged in and your personalized schedule is ignored:


30 Nov 2016
I am a postdoctoral fellow at the Image Analysis and Communications Laboratory
My research interests are in medical image analysis, computer vision, and machine learning.
At IACL I have been involved in:
- Image synthesis of brain MRI to enable consistent image analysis
- Tongue motion analysis during speech using cine MRI, tagged MRI, and diffusion tensor imaging of the tongue
- Building neuroimage processing pipelines for efficient and reproducible image analysis
I completed my Ph.D in Computer Science at the Johns Hopkins University, where I was advised by Dr. Jerry L. Prince at the Image Analysis and Communications Laboratory (IACL). I developed novel image synthesis algorithms for brain MRI images and demonstrated several successful applications for synthetic MRI images.
You can read my thesis here.
From 2009-2011, I was a research assistant at the Visual Imaging and Surgical Robotics (VISR) lab at the Laboratory for Computational Sensing and Robotics working with Dr. Rajesh Kumar to develop objective skill-assessment criteria for surgeons using the da Vinci surgical robot.
Previously, I earned my B.Tech degree in Computer Science and Engineering at the Indian Institute of Technology Bombay. At IITB, I worked with Dr. Sharat Chandran and also interned with Dr. Anant Madabhushi at Rutgers University. My undergraduate research experience sparked my interest in medical image analysis.
22 Sep 2017
Using tksurfer for visualizing cortical thicknesses
I have just started exploring effects of scanner on surfaces and surface thicknesses produced by Freesurfer.
To that end, I needed to learn how to produce surface renderings using tksurfer on an industrial scale.
To do that using tksurfer needed me to write a Tcl script (a language that I did not existed until yesterday).
It is quite a fun language but using it I can generate figures for multiple datasets by the following command:
$> tksurfer fsaverage lh inflated -tcl tksurfer_save_abs_rel_thickness_figs.tcl -curv lh.sulc -colscalebarflag 1
This calls tksurfer with the tcl script.
The tclscript looks like following:
set base_dir my_base_dir
set meas some_suffix_i_came_up_with
set out_suffix_lateral _lateral.tiff
set out_suffix_medial _medial.tiff
set overlayflag 1
set colscalebarfig 1
set forcegraycurvatureflag 1
set gaLinkedVars(colscale) 1
foreach scanner { A B C D E F G H } {
set file_name $base_dir$scanner/$scanner$meas.mgh
set out_lateral $base_dir$scanner/$scanner$meas$out_suffix_lateral
set out_medial $base_dir$scanner/$scanner$meas$out_suffix_medial
puts $file_name
puts $out_lateral
puts $out_medial
set val $file_name
sclv_read_from_dotw 0
set gaLinkedVars(fopaqueflag) 0
set gaLinkedVars(fthresh) 5.0
set gaLinkedVars(fmid) 20.0
set gaLinkedVars(fslope) 1
set gaLinkedVars(truncphaseflag) 1
SendLinkedVarGroup overlay
set gaLinkedVars(colscalebarfig) 1
SendLinkedVarGroup view
redraw
set colscalebarfig 1
redraw
save_tiff ${out_lateral}
rotate_brain_y 180
redraw
save_tiff ${out_medial}
And I am able to generate figures like below for multiple datasets at a keystroke.
Since I need to generate these figures on a regular basis, it should be worth the
time it took to learn Tcl and changing the different variables to get the figure
I wanted.
fsaverage brain with thickness differences:


my name is julian (natael) and this is my project for "typography and automation".
with swissd.jsx you can generate a width-fixed typo.
all you have to do, is to customize the config-object in the script and run it. several customizations are possible:
see the original repo here https://github.com/natael/swissd
have fun <3
You can also clone the project with Git by running:
git clone git://github.com/natael/swissd.git
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004
Copyright (C) 2012 natael Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.


Guess The Number
Select Defficulty
easy
hard
( select a number between 1 and 20 )
?
check
Replay
🔎 Start guessing...
🏁 Score:
20
🔥 High Score:
0


This is an online tool for exploring trees. It is mainly used to explore phylogenetic trees, but it can be used for any tree as long as it is written in the newick format.
You can also add your own trees for exploration by uploading them from this page. After loading the tree, it opens an interactive representation. Press F1 or the help button in the viewer for instructions. You can use the generated url as a permanent link to your data, that you can use for sharing your images.


So I tried a new thing today, updating the firmware on the RFMpi. Since I'm about to replace the RFM12b with a RFM69cw I figured it would be wise to try and upload the RFM12b firmware first before I'd start replacing the hardware.
I followed the (very easy) guide - http://wiki.openenergymonitor.org/index.php?title=RFM69Pi_V3 - and used the firmware for the RFM12b
avrdude -v -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 38400 -U flash:w:RFM12_Demo_ATmega328.cpp.hex
Unfortunately this led to quick stop. After the "using autoreset..." message it simply stopped.
avrdude-original: Version 6.1, compiled on Jul 7 2015 at 13:18:47 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "/etc/avrdude.conf" User configuration file is "/root/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyAMA0 Using Programmer : arduino Overriding Baud Rate : 38400 avrdude-original: Using autoreset DTR on GPIO Pin 7 pi@raspberrypi ~/RFM2Pi/firmware/RF12_Demo_atmega328 $
Fortunately I'm not the only one (link) and found out that avrdude version 6.1 was the culprit and this could be solved by using an older version (5.11). So an easy solution to my misery was to remove 6.11
sudo apt-get remove avrdude sudo rm /usr/bin/avrdude-original
and update the installation script of avrdude-rpi to force apt-get to use version 5.11:
#!/bin/bash echo "display serial console to enable use of /dev/AMA0 serial port" sudo wget https://raw.githubusercontent.com/openenergymonitor/rpi-serial-console/m... -O /usr/bin/rpi-serial-console && sudo chmod +x /usr$ sudo rpi-serial-console disable sudo apt-get install -y avrdude=5.11.1-1 python-dev python-rpi.gpio minicom echo "install avrdude autoreset" sudo cp /home/pi/avrdude-rpi/autoreset /usr/bin sudo cp /home/pi/avrdude-rpi/avrdude-autoreset /usr/bin if [ ! -f /usr/bin/avrdude-original ]; then sudo mv /usr/bin/avrdude /usr/bin/avrdude-original sudo ln -s /usr/bin/avrdude-autoreset /usr/bin/avrdude fi
Now when I issue the same command, everything works :-)
pi@raspberrypi ~/RFM2Pi/firmware/RFM69CW_RF_Demo_ATmega328 $ avrdude -v -c arduino -p ATMEGA328P -P /dev/ttyAMA0 -b 38400 -U flash:w:RFM12_Demo_ATmega328.cpp.hex avrdude-original: Version 5.11.1, compiled on May 23 2012 at 11:08:25 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2009 Joerg Wunsch System wide configuration file is "/etc/avrdude.conf" User configuration file is "/root/.avrduderc" User configuration file does not exist or is not a regular file, skipping Using Port : /dev/ttyAMA0 Using Programmer : arduino Overriding Baud Rate : 38400 avrdude-original: Using autoreset DTR on GPIO Pin 7 AVR Part : ATMEGA328P Chip Erase delay : 9000 us PAGEL : PD7 BS2 : PC2 RESET disposition : dedicated RETRY pulse : SCK serial program mode : yes parallel program mode : yes Timeout : 200 StabDelay : 100 CmdexeDelay : 25 SyncLoops : 32 ByteDelay : 0 PollIndex : 3 PollValue : 0x53 Memory Detail : Block Poll Page Polled Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- --------- eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff flash 65 6 128 0 yes 32768<PHONE_NUMBER> 4500 0xff 0xff lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00 calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00 Programmer Type : Arduino Description : Arduino Hardware Version: 3 Firmware Version: 4.4 Vtarget : 0.3 V Varef : 0.3 V Oscillator : 28.800 kHz SCK period : 3.3 us avrdude-original: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude-original: Device signature = 0x1e950f avrdude-original: safemode: lfuse reads as 0 avrdude-original: safemode: hfuse reads as 0 avrdude-original: safemode: efuse reads as 0 avrdude-original: NOTE: FLASH memory has been specified, an erase cycle will be performed To disable this feature, specify the -D option. avrdude-original: erasing chip avrdude-original: reading input file "RFM12_Demo_ATmega328.cpp.hex" avrdude-original: input file RFM12_Demo_ATmega328.cpp.hex auto detected as Intel Hex avrdude-original: writing flash (8982 bytes): Writing | ################################################## | 100% 3.17s avrdude-original: 8982 bytes of flash written avrdude-original: verifying flash memory against RFM12_Demo_ATmega328.cpp.hex: avrdude-original: load data flash data from input file RFM12_Demo_ATmega328.cpp.hex: avrdude-original: input file RFM12_Demo_ATmega328.cpp.hex auto detected as Intel Hex avrdude-original: input file RFM12_Demo_ATmega328.cpp.hex contains 8982 bytes avrdude-original: reading on-chip flash data: Reading | ################################################## | 100% 2.87s avrdude-original: verifying ... avrdude-original: 8982 bytes of flash verified avrdude-original: safemode: lfuse reads as 0 avrdude-original: safemode: hfuse reads as 0 avrdude-original: safemode: efuse reads as 0 avrdude-original: safemode: Fuses OK
Hope this helps for others with the same challenge
Re: Solved: avrdude-original: Using autoreset DTR on GPIO Pin 7
Nice work, thanks a lot for figuring this out. It's strange that the new version of avrdude caused issues. Avrdude V6.1 works fine uploading to the emonPi and autorest via GPIO
avrdude version 6.1
I'm using baud 115200, this is the only difference I can see.
https://github.com/openenergymonitor/emonpi/blob/master/emonpiupdate
=================================
EmonPi update started
=================================
Start ATmega328 serial upload using avrdude with emonPi_latest.hex
avrdude-original: Using autoreset DTR on GPIO Pin 7
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
avrdude-original: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude-original: Device signature = 0x1e950f
avrdude-original: NOTE: "flash" memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude-original: erasing chip
avrdude-original: reading input file "/home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex"
avrdude-original: input file /home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex auto detected as Intel Hex
avrdude-original: writing flash (19074 bytes):
Writing | ################################################## | 100% 2.73s
avrdude-original: 19074 bytes of flash written
avrdude-original: verifying flash memory against /home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex:
avrdude-original: load data flash data from input file /home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex:
avrdude-original: input file /home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex auto detected as Intel Hex
avrdude-original: input file /home/pi/emonpi/Atmega328/emonPi_RFM69CW_RF12Demo_DiscreteSampling/compiled/emonPi_latest.hex contains 19074 bytes
avrdude-original: reading on-chip flash data:
Reading | ################################################## | 100% 2.06s
avrdude-original: verifying ...
avrdude-original: 19074 bytes of flash verified
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
strace: |autoreset: Broken pipe
avrdude-original done. Thank you.
strace: |autoreset: Broken pipe
Re: Solved: avrdude-original: Using autoreset DTR on GPIO Pin 7
avrdude 6.1 breaking changes #4
I can confirm this as I have been using 0.3s for some months now, at that time I found anywhere between 0.24s to 0.34s seconds worked but had hoped to find out what the actual required timing by spec was, to be sure it was right but I haven't as yet.
Paul
Re: Solved: avrdude-original: Using autoreset DTR on GPIO Pin 7
Thanks, I've updated our version and tested 0.32 sleep. Works fine https://github.com/openenergymonitor/avrdude-rpi
Do you mean 0.32 or 0.34?
the github issue says 0.32. They both probably work!
Re: Solved: avrdude-original: Using autoreset DTR on GPIO Pin 7
I'm sure 0.32 will be fine!
In my tests anything from 0.24 to 0.34 seemed to work, I use 0.3 since 0.29 is centre of the working range (and 2 decimal places seemed overkill at this level of science).
This has worked for me for many months as I was using 6.1 way before ir reached wheezy stable due to it's spi/gpio programming ability not in 5.11.
Paul