Mitigating the "Ball of mud" in your products/services with Domain Driven Design.
Follow the talk from with your smartphone:
I can't teach anything. I can only make you think.- Socrates
Can't see the forest for the trees- John Heywood
Production is the happiest place in the world.- Josh Long
Note: DDD is not the unique way to develop software for production.
|
Engineering in Industrial Organization (M.S.) @ ICAI Technical Architect & Innovation Estratego @ VASS Associate Professor @ ICAI STEAM Teacher @ Space Math @juanantoniobm | Github |
PENDING
The talk doesn´t cover the following topics ATM:
What is a Software architecture?
Architecture is about the important stuff. Whatever that is.
Tackling Complexity in the Heart of Software
Timeline
Microservices with Spring Cloud Kubernetes
Microservices running in a multi cloud environments
Have that designs an enough detail to create a backlog to start the implementation phase?
Or maybe your design suffer with: Anemic Domain Model
Did you read a book about DDD previously?
Domain-driven design (DDD) is a software design that focuses on understanding domain experts and building the software as a model of its domain.
One concept is that the structure and language of software code (class names, class methods, class variables) should match the business domain.
Source: https://en.wikipedia.org/wiki/Domain-driven_designIn any moment :)
Depends of the DDD Skills 🤷
You could use DDD:
Strategic Design is a set of principles and patterns for maintaining model integrity, distilling the Business Domain Model, and working with multiple models. Strategic design is very useful to divide a large and complex business problem into multiple chunks with clear boundaries and specific responsibilities and build a high-level software design topology.
Tactical Design is a set of design patterns and building blocks that you can use to abstract low and mid-level components of the software. Tactical patterns are very hands-on addressing programming code and deal with classes and modules. The purpose of tactical design is to refine the result of Strategic patterns applied to a stage where it can be converted into a working code.
DDD Vocabulary
Define the Ubiquitous Language, the Bounded contexts and the Context maps
Concepts:
A language structured around the domain model and used by all team members within a bounded context to connect all the activities of the team with the software.
A description of a boundary (typically a subsystem, or the work of a particular team) within which a particular model is defined and applicable.
Context Maps describe the contact between bounded contexts and teams with a collection of patterns. There are nine context map patterns and three different team relationships.
This pattern addresses the case where the power is skewed toward the consumers. The supplier is interested in protecting its consumers and providing the best service possible.
To protect the consumers from changes in its implementation, the upstream supplier decouples its implementation model from the public interface.
The supplier’s public interface is not intended to conform to its ubiquitous language. Instead, it is intended to expose a protocol convenient for the consumers
expressed in an integration-oriented language. Hence, the public protocol is called the “published language.”
In a sense, the open-host service pattern is a reversal of the anticorruption layer pattern: instead of the consumer, the supplier implements the translation of its internal model.
Context mapper syntax:
PrintingContext [U,OHS]->[D,ACL] PolicyManagementContext {
implementationTechnology = "SOAP"
}
Common language for the translation between the models that are going to interact. For example JSON or XML. Usually associated with OHS. The advantage of using REST services is that in each request the PL can be specified by configuring the desired content type.
Context mapper syntax:
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
implementationTechnology = "RESTful HTTP"
}
This is another upstream/downstream relationship at a lower level, where the downstream bounded context implements a layer between itself and the upstream. This layer is responsible for translating the objects given by the upstream into its own models. This approach will guarantee the integrity of the downstream bounded context and keeps it completely ignorant of any foreign concepts. This approach is generally useful for integrating new features to some existing legacy software, where you can treat the existing legacy software as a black box bounded context and create an ACL for the new feature.
Context mapper syntax:
DebtCollection [D,ACL]<-[U,OHS,PL] PrintingContext {
implementationTechnology = "SOAP"
}
2 or more bounded contexts can share a common model. In design terms, the Ubiquitous Language of this shared part is common both all relevent teams. In code terms, you may have a shared library, or a service. This is generally a small codebase but difficult to maintain as its related bounded contexts develop, as the teams will tend to go on separate ways as their own bounded contexts evolve.
Context mapper syntax:
CargoBookingContext [SK]<->[SK] VoyagePlanningContext {
implementationTechnology = "Java Library"
}
This relationship describes the relationship of 2 bounded context, where the upstream has no interest in supporting the downstream for whatever reason. Instead, the downstream must conform to whatever the upstream provides. This can happen when integrating a new feature with a large, existing solution that is well established; or using a set of APIs, where the downstream is not the sole customer.
Context mapper syntax:
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
implementationTechnology = "RESTful HTTP"
}
This approach puts 2 bounded contexts into an upstream and downstream, where the upstream is the supplier, and has to try and meet the expectations of the customer (downstream). But the final decision of what the customer gets comes from the supplier. This typically works in an autonomous environment within the same organisation, or if the customer is the sole client of the supplier.
Context mapper syntax:
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext
It describes more about the relationship between teams as oppose to actual code. This typically happens when 2 teams working on 2 bounded contexts have aligned and dependent set of goals. Each team should at least understand some of their partner’s Ubiquitous Language, namely the things that are interesting to their own context. This can work fairly well when both bounded contexts are at early stages of the project, where communication is quick and more efficient than implementing some of the other techniques. When both sides become more established, teams may incur too much commitment in understanding each other’s Ubiquitous Language. Of course, if a team was to work on both such bounded contexts, the ‘Partnership’ relationship would be much less costly.
Context mapper syntax:
ContractsContext [P]<->[P] ClaimsContext {
implementationTechnology = "Messaging"
}
Techniques:
Tool:
Process:
Event-Storming
Event-Storming
Event storming is a workshop-based method to quickly find out what is happening in the domain. The result is expressed in sticky notes on a wide wall. The business process is "stormed out" as a series of domain events which are denoted as orange stickies.
Event-Storming
Event storming can be used as a means for business process modeling and requirements engineering. The basic idea is to bring together software developers and domain experts and learn from each other.
Example: Discovering Domain Events
Example: Discovering Commands & Queries
Example: Discovering Invariants
Example: Discovering the bounded contexts
Bounded Context Canvas
Context mapper
Context Mapper is a modular and extensible modeling framework for Domain-driven Design (DDD) and its strategic patterns. The core component provides a DSL to create context maps featuring these DDD patterns.
Context mapper
Context mapper
Context mapper
Domain-Driven Design Starter Modelling Process
Tactical DDD is when you define your domain models with more precision.
Concepts:
Value Object
A value object is a small object that represents a simple entity whose equality is not based on identity: i.e. two value objects are equal when they have the same value, not necessarily being the same object.
Examples: Objects representing an amount of money or a date range
Entity
In a data model context, describes the structure of data regardless of the stored form.
Agreggate Root
An Agreggate is a cluster of associated objects that we treat as a unit.
Source: Domain-Driven Design, Eric EvansAgreggate Root
Aggregates are the basic element of transfer of data storage - you request to load or save whole aggregates.
Source: https://martinfowler.com/bliki/DDD_Aggregate.htmlAgreggate Root
An aggregate will have one of its component objects be the aggregate root. Any references from outside the aggregate should only go to the aggregate root. The root can thus ensure the integrity of the aggregate as a whole.
Source: https://martinfowler.com/bliki/DDD_Aggregate.htmlRepositories
Query access to aggregates expressed in the ubiquitous language
For each type of aggregate that needs global access, create a service that can provide the collection of all objects of that aggregate’s root type. Provide methods to add and remove objects, which will encapsulate the actual insertion or removal of data in the data store. Provide methods that select objects based on criteria meaningful to domain experts.
Example:
Source: https://khalilstemmler.com/articles/typescript-domain-driven-design/aggregate-design-persistence/Example:
Source: https://kalele.io/modeling-aggregates-with-ddd-and-entity-framework/A domain event is a full-fledged part of the domain model, a representation of something that happened in the domain. Ignore irrelevant domain activity while making explicit the events that the domain experts want to track or be notified of, or which are associated with state change in the other model objects.
Patterns:
Libraries:
The Hexagonal-like Architectures:
The Onion Architecture is an Architectural Pattern that enables maintainable and evolutionary enterprise systems.
Source: https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/Domain layer:
Application layer:
Infrastructure layer:
jmolecules-onion-architecture: Layers:
Source: https://speakerdeck.com/kiyotakeshi69/spring-fest-2020-express-ddd-using-jpa-x-jmoleculesAdvantages:
Advantages:
How to ensure that your team apply Onion architecture in an effective way?
ArchUnit is a free, simple and extensible library for checking the architecture of your Java code using any plain Java unit test framework.

}
You can apply TDD at architectural level with ArchUnit
Spring Data JDBC, part of the larger Spring Data family, makes it easy to implement JDBC based repositories.
Library: https://spring.io/projects/spring-data-jdbcSpring Data repositories are inspired by the repository as described in the book Domain Driven Design by Eric Evans. One consequence of this is that you should have a repository per Aggregate Root. Aggregate Root is another concept from the same book and describes an entity which controls the lifecycle of other entities which together are an Aggregate. An Aggregate is a subset of your model which is consistent between method calls to your Aggregate Root.
Architectural abstractions for Java.
Maven dependencies:
< dependency>
< groupId>org.jmolecules< /groupId>
< artifactId>jmolecules-ddd< /artifactId>
< version>${jmolecules.version}< /version>
< /dependency>
< dependency>
< groupId>org.jmolecules< /groupId>
< artifactId>jmolecules-onion-architecture< /artifactId>
< version>${jmolecules.version}< /version>
< /dependency>
Maven: https://mvnrepository.com/artifact/org.jmolecules
Goals:
The library is organized in the following modules:
jmolecules-ddd:
Github: https://github.com/xmolecules/jmolecules/tree/main/jmolecules-dddjmolecules-ddd: Annotations to define Domain-Driven Design building blocks.
Github: https://github.com/xmolecules/jmolecules/tree/main/jmolecules-dddjmolecules-ddd:
jmolecules-architecture:
Github: https://github.com/xmolecules/jmolecules/tree/main/jmolecules-architecture
jmolecules-onion-architecture:
jmolecules-onion-architecture:
jmolecules-onion-architecture:
Source: https://speakerdeck.com/kiyotakeshi69/spring-fest-2020-express-ddd-using-jpa-x-jmoleculesjmolecules-onion-architecture: Layers:
Source: https://speakerdeck.com/kiyotakeshi69/spring-fest-2020-express-ddd-using-jpa-x-jmoleculesThanks


Misk Initiatives Center signs 12 deals to develop youth talent
RIYADH: The first edition of the Saudi Media Forum, which will take place on Dec. 2, will welcome Prince Abdul Aziz bin Turki Al-Faisal, chairman of the General Sports Authority (GSA), as a keynote speaker.
He will focus on the relation and interaction between sports and media, and the GSA’s efforts to develop the Kingdom’s sports media.
The forum, organized by the Saudi Journalists Association in Riyadh, comes at a time when cooperation between sports institutions and media outlets has become of great importance.
Experts and specialists from Saudi Arabia and 32 other countries will participate. The forum’s 40 sessions and 30 workshops will discuss various subjects, including the organizational, cultural, practical and technical challenges facing the media industry.
The forum will also discuss the role of media content in shaping public opinion, the role of the industry’s digital transformation in promoting competitiveness, and successful international experiences related to investment in the industry.


👋 Hello, Fiber!
You have created a new production-ready project by running only one
cgapp create
command.
Now, focus on writing code! The Create Go App CLI will take care of the rest.
You have created a new production-ready project by running only one
cgapp create
command.
Now, focus on writing code! The Create Go App CLI will take care of the rest.


This is a quick guide on how to use Sector and program with Sector/Sphere API. The Sector tools can be found in ./sector-sphere/tools and the example applications can be found in ./sector-sphere/examples.


| Step Execution Id |
{{ stepExecutionDetails.stepExecution.stepExecution.id }} |
| Job Execution Id |
{{ stepExecutionDetails.stepExecution.jobExecutionId }} |
| Step Name |
{{ stepExecutionDetails.stepExecution.stepExecution.name }} |
| Step Type |
{{ stepExecutionDetails.stepExecution.stepType }} |
| Status |
|
| Commits |
{{ stepExecutionDetails.stepExecution.stepExecution.commitCount }} |
| Duration |
{{ stepExecutionDetails.stepExecution.stepExecution.startTime | dataflowDuration:
stepExecutionDetails.stepExecution.stepExecution.endTime }}
|
| Filter Count |
{{ stepExecutionDetails.stepExecution.stepExecution.filterCount }} |
| Process Skips |
{{ stepExecutionDetails.stepExecution.stepExecution.processSkipCount }} |
| Reads |
{{ stepExecutionDetails.stepExecution.stepExecution.readCount }} |
| Read Skips |
{{ stepExecutionDetails.stepExecution.stepExecution.readSkipCount }} |
| Rollbacks |
{{ stepExecutionDetails.stepExecution.stepExecution.rollbackCount }} |
| Skips |
{{ stepExecutionDetails.stepExecution.stepExecution.skipCount }} |
| Writes |
{{ stepExecutionDetails.stepExecution.stepExecution.writeCount }} |
| Write Skips |
{{ stepExecutionDetails.stepExecution.stepExecution.writeSkipCount }} |


Life + Limb exposes dark side of NZ’s legacy in Afghanistan
by Stuffife + Limb exposes dark side of NZ’s legacy in Afghanistan
Award-winning investigative team Stuff Circuit is releasing its most hard-hitting documentary yet, exposing a secret the NZ Defence Force doesn’t want Kiwis to know.
‘Life + Limb’ tells the story of what happened after New Zealand’s Provincial Reconstruction Team (PRT) left Afghanistan’s Bamyan province in 2013.
“The PRT went to Afghanistan on a mission to rebuild and there’s no doubt they had a positive impact on local infrastructure,” says Circuit reporter Paula Penfold.
“But the unexploded ammunition the force left behind on New Zealand firing ranges has had gut-wrenching consequences - and Kiwis haven’t been told.
“Life + Limb exposes devastating stories of loss and asks the question, why have those accountable not taken responsibility for their actions?”.
The Stuff Circuit team travelled to Afghanistan to investigate the story in October 2019. Producer Eugene Bingham says the stories they found on the ground were far more significant than they were expecting.
“Families have been changed forever. Their grief is still raw. They want to move on with their lives, but how can they when those responsible for their pain refuse to listen to their complaints and pleas for help?”.
“The danger for the people of Bamyan is still very real,” says Penfold. “This is one of the most important - and heartbreaking - stories we’ve ever done. Our hope is that Life + Limb will spur those responsible into action, to make amends for the wrong that has been done.”
Life + Limb was produced with funding from NZ On Air. Scan the QR code below to watch the documentary and explore interactive content at https://interactives.stuff.co.nz/2019/circuit/life-and-limb-documentary/. The documentary will also be broadcast on Māori Television at 7.30pm tonight.


These are Hi Resolution images for use on your website or catalogue
These are Hi Resolution images for use on your website or catalogue
These are Hi Resolution images for use on your website or catalogue
These are Hi Resolution images for use on your website or catalogue


Home
account_circle
Name
Description
Daily Price
Choose the catagory
Bikes and boards
Electronics
Lawn and Garden
File
Submit
send


Romance of the Three Kingdoms VIII PS2 Game Manual
image slider
by WOWSlider.com v9.0
This manual was created for the
Lubasz4Gaming Forum


{% extends "index.html"%} {% load staticfiles %} {% block breadcrumb %} Current Page: Home »Activities » {% endblock %} {% block content %}
Major Activities
With time, the priorities of the department have shifted from its focus on cadastral activities only, and, newer technological advancements have obligated it to embrace a broader responsibility, and peer at wider horizons of mapping and related technology. The department with it’s subordinate branches help define the following activities:-


Progressive Rock Top Albums / all subgenres - all record types - 1976 - all countries
Based on members ratings & PA algorithm
Here is some details about how we calculate the average rating of an album and the rank of an album.
-
Average rating: The classic calculation of the average but more weight is affected to the rating of progarchives.com collaborators and to rating with reviews.
- Rating only: Weight = 1
- Review by members : Weight = 10
- Review by PA Collaborators : Weight = 20
- Rank of an album: We use a calculation that compare an album average rating and number of ratings over all others albums in the query using this theory (http://en.wikipedia.org/wiki/Weighted_average) to create a variable every query "QWR" (AKA: Query Weighted Rating) use for ordering.
- By default, only albums with the average ratings above the average ratings of the requested query are displayed in theses lists, you can control this value in the parameters
| Rank | Cover | Ratings | Title Artist |
Genre (Record Type) |
BUY |
| 1 |
4.38 | 1894 ratings
QWR = 4.3444
|
Moonmadness Camel |
Symphonic Prog Studio, 1976 |
Shop | |
| 2 |
4.27 | 2167 ratings
QWR = 4.2490
|
A Trick Of The Tail Genesis |
Symphonic Prog Studio, 1976 |
Shop | |
| 3 |
4.29 | 1232 ratings
QWR = 4.2472
|
Still Life Van Der Graaf Generator |
Eclectic Prog Studio, 1976 |
Shop | |
| 4 |
4.22 | 885 ratings
QWR = 4.1651
|
Leftoverture Kansas |
Symphonic Prog Studio, 1976 |
Shop | |
| 5 |
4.25 | 518 ratings
QWR = 4.1622
|
Romantic Warrior Return To Forever |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 6 |
4.10 | 1777 ratings
QWR = 4.0810
|
2112 Rush |
Heavy Prog Studio, 1976 |
Shop | |
| 7 |
4.09 | 1642 ratings
QWR = 4.0623
|
Wind And Wuthering Genesis |
Symphonic Prog Studio, 1976 |
Shop | |
| 8 |
4.25 | 175 ratings
QWR = 4.0332
|
Viva Boma Cos |
Canterbury Scene Studio, 1976 |
Shop | |
| 9 |
4.19 | 232 ratings
QWR = 4.0279
|
Celeste [aka: Principe Di Un Giorno] Celeste |
Rock Progressivo Italiano Studio, 1976 |
Shop | |
| 10 |
4.34 | 117 ratings
QWR = 4.0269
|
Stadaconé Sloche |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 11 |
4.10 | 289 ratings
QWR = 3.9795
|
Unorthodox Behaviour Brand X |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 12 |
4.04 | 567 ratings
QWR = 3.9774
|
Tales of Mystery and Imagination - Edgar Allan Poe The Alan Parsons Project |
Crossover Prog Studio, 1976 |
Shop | |
| 13 |
4.16 | 187 ratings
QWR = 3.9771
|
In the Region Of The Summer Stars The Enid |
Symphonic Prog Studio, 1976 |
Shop | |
| 14 |
4.03 | 508 ratings
QWR = 3.9647
|
Dawn Eloy |
Psychedelic/Space Rock Studio, 1976 |
Shop | |
| 15 |
4.08 | 269 ratings
QWR = 3.9616
|
L'Heptade Harmonium |
Symphonic Prog Studio, 1976 |
Shop | |
| 16 |
4.10 | 225 ratings
QWR = 3.9590
|
Picchio Dal Pozzo Picchio Dal Pozzo |
Canterbury Scene Studio, 1976 |
Shop | |
| 17 |
4.06 | 206 ratings
QWR = 3.9175
|
Roller Goblin |
Rock Progressivo Italiano Studio, 1976 |
Shop | |
| 18 |
4.12 | 144 ratings
QWR = 3.9142
|
Los Delirios Del Mariscal Crucis |
Symphonic Prog Studio, 1976 |
Shop | |
| 19 |
4.13 | 133 ratings
QWR = 3.9105
|
Pollen Pollen |
Symphonic Prog Studio, 1976 |
Shop | |
| 20 |
4.22 | 89 ratings
QWR = 3.8994
|
Et Cetera Et Cetera |
Eclectic Prog Studio, 1976 |
Shop | |
| 21 |
4.16 | 102 ratings
QWR = 3.8903
|
Letzte Tage - Letzte Nächte Popol Vuh |
Krautrock Studio, 1976 |
Shop | |
| 22 |
4.16 | 96 ratings
QWR = 3.8783
|
Parallel World Far East Family Band |
Psychedelic/Space Rock Studio, 1976 |
Shop | |
| 23 |
3.93 | 453 ratings
QWR = 3.8763
|
Stratosfear Tangerine Dream |
Progressive Electronic Studio, 1976 |
Shop | |
| 24 |
4.04 | 150 ratings
QWR = 3.8657
|
Maledetti Area |
Rock Progressivo Italiano Studio, 1976 |
Shop | |
| 25 |
3.99 | 205 ratings
QWR = 3.8627
|
Black Market Weather Report |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 26 |
3.93 | 331 ratings
QWR = 3.8582
|
Gazeuse! Gong |
Canterbury Scene Studio, 1976 |
Shop | |
| 27 |
4.14 | 86 ratings
QWR = 3.8498
|
The Third Reich 'N Roll The Residents |
RIO/Avant-Prog Studio, 1976 |
Shop | |
| 28 |
3.97 | 205 ratings
QWR = 3.8489
|
Come In Un'Ultima Cena Banco Del Mutuo Soccorso |
Rock Progressivo Italiano Studio, 1976 |
Shop | |
| 29 |
4.16 | 73 ratings
QWR = 3.8368
|
Snorungarnas Symfoni (Symphony of the Brats) Samla Mammas Manna |
RIO/Avant-Prog Studio, 1976 |
Shop | |
| 30 |
3.97 | 180 ratings
QWR = 3.8366
|
Inget Nytt Under Solen Kaipa |
Symphonic Prog Studio, 1976 |
Shop | |
| 31 |
4.04 | 113 ratings
QWR = 3.8316
|
Beyond Expression Finch |
Symphonic Prog Studio, 1976 |
Shop | |
| 32 |
4.02 | 121 ratings
QWR = 3.8252
|
Aguirre, The Wrath of God Popol Vuh |
Krautrock Studio, 1976 |
Shop | |
| 33 |
4.06 | 95 ratings
QWR = 3.8225
|
El Jardín de los Presentes Invisible |
Symphonic Prog Studio, 1976 |
Shop | |
| 34 |
3.83 | 638 ratings
QWR = 3.7982
|
World Record Van Der Graaf Generator |
Eclectic Prog Studio, 1976 |
Shop | |
| 35 |
3.94 | 143 ratings
QWR = 3.7929
|
Land Of The Midnight Sun Al Di Meola |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 36 |
3.98 | 108 ratings
QWR = 3.7879
|
La Máquina de Hacer Pájaros La Máquina de Hacer Pájaros |
Symphonic Prog Studio, 1976 |
Shop | |
| 37 |
3.82 | 205 ratings
QWR = 3.7373
|
The Roaring Silence Manfred Mann's Earth Band |
Eclectic Prog Studio, 1976 |
Shop | |
| 38 |
3.86 | 134 ratings
QWR = 3.7345
|
Wired Jeff Beck |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 39 |
3.87 | 120 ratings
QWR = 3.7333
|
The Strands Of The Future Pulsar |
Symphonic Prog Studio, 1976 |
Shop | |
| 40 |
3.95 | 77 ratings
QWR = 3.7319
|
Symphonic Pictures Schicke Fuhrs & Frohling |
Symphonic Prog Studio, 1976 |
Shop | |
| 41 |
3.92 | 80 ratings
QWR = 3.7236
|
For You The Old Women Mirthrandir |
Eclectic Prog Studio, 1976 |
Shop | |
| 42 |
3.75 | 624 ratings
QWR = 3.7220
|
Interview Gentle Giant |
Eclectic Prog Studio, 1976 |
Shop | |
| 43 |
3.92 | 75 ratings
QWR = 3.7145
|
Alas Alas |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 44 |
3.89 | 79 ratings
QWR = 3.7071
|
Symphonie Pour Le Jour Où Brûleront Les Cités Art Zoyd |
RIO/Avant-Prog Studio, 1976 |
Shop | |
| 45 |
3.74 | 333 ratings
QWR = 3.6971
|
Üdü Ẁüdü Magma |
Zeuhl Studio, 1976 |
Shop | |
| 46 |
3.78 | 175 ratings
QWR = 3.6970
|
Softs The Soft Machine |
Canterbury Scene Studio, 1976 |
Shop | |
| 47 |
3.73 | 353 ratings
QWR = 3.6927
|
Zoot Allures Frank Zappa |
RIO/Avant-Prog Studio, 1976 |
Shop | |
| 48 |
3.75 | 194 ratings
QWR = 3.6817
|
Octoberon Barclay James Harvest |
Crossover Prog Studio, 1976 |
Shop | |
| 49 |
3.85 | 69 ratings
QWR = 3.6717
|
Cueille le Jour Carpe Diem |
Eclectic Prog Studio, 1976 |
Shop | |
| 50 |
3.74 | 161 ratings
QWR = 3.6685
|
Sommerabend Novalis |
Symphonic Prog Studio, 1976 |
Shop | |
| 51 |
3.73 | 192 ratings
QWR = 3.6674
|
No Earthly Connection Rick Wakeman |
Symphonic Prog Studio, 1976 |
Shop | |
| 52 |
3.83 | 70 ratings
QWR = 3.6620
|
Bright Size Life Pat Metheny |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 53 |
3.70 | 146 ratings
QWR = 3.6349
|
Moondawn Klaus Schulze |
Progressive Electronic Studio, 1976 |
Shop | |
| 54 |
3.71 | 128 ratings
QWR = 3.6337
|
The Royal Scam Steely Dan |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 55 |
3.71 | 72 ratings
QWR = 3.6009
|
Gudrun Pierrot Lunaire |
Prog Folk Studio, 1976 |
Shop | |
| 56 |
3.69 | 88 ratings
QWR = 3.6002
|
En Regardant Passer le Temps Carpe Diem |
Eclectic Prog Studio, 1976 |
Shop | |
| 57 |
3.64 | 128 ratings
QWR = 3.5908
|
Corte Dei Miracoli Corte Dei Miracoli |
Rock Progressivo Italiano Studio, 1976 |
Shop | |
| 58 |
3.63 | 150 ratings
QWR = 3.5841
|
L Steve Hillage |
Canterbury Scene Studio, 1976 |
Shop | |
| 59 |
3.62 | 90 ratings
QWR = 3.5653
|
Imaginary Voyage Jean-Luc Ponty |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 60 |
3.60 | 89 ratings
QWR = 3.5516
|
Strange New Flesh Colosseum II |
Jazz Rock/Fusion Studio, 1976 |
Shop | |
| 61 |
3.56 | 82 ratings
QWR = 3.5281
|
Backdoor Possibilities Birth Control |
Heavy Prog Studio, 1976 |
Shop | |
| 62 |
3.53 | 106 ratings
QWR = 3.5139
|
Verità Nascoste Le Orme |
Rock Progressivo Italiano Studio, 1976 |
Shop |


In one of the Talk with GS series, Robert Smith, Founder of Vista Equity Partners, discusses software’s transformational impact on the economy and how digitization continues to disrupt entire industries – from insurance to financial services, auto and beyond.
Talks at GS – Robert Smith: The Fourth Industrial Revolution


Use the T.transition function to perform transitions:
The returned object can be used to transition the target in, out or to another pane:
To support Internet Explorer 8 and below, the in function must be called using the syntax in the example below.
Fade the first element with a class of "target" out of view and remove it from the DOM
T.transition('.target', 'fade').out();
Transition the node containing the element with a class of "target" to a new pane
T.transition(T.nodeFor('.target')).to('path/to/pane');
This can also be expressed as:
T.nodeFor('.target').transitionTo('path/to/pane');
Supporting IE8 and below:
T.transition('.target')['in']();


Kristine Cay B. Cariaga
Get to know KC more..
This website is created as an activity for my UI/UX Design & Programming subject.
About
My journey as a student in APC
Acting
As I started my Senior High year, I got interested on many organizations that my school offers. They have musical, dance, martial arts, acting and many more. I chose acting because I was amazed by their performance in my school's open house for Senior High students. I signed up to TEATRE PHILEO and auditioned, luckily I passed.
Martial Arts
Jiu jitsu was a sport that I never thought I'd like to learn when I was young. I started to learn Brazilian Jujitsu when I signed up to an organization in my school named PWERSA. Until now I am still learning the basics and continuously attending our training to learn more techniques for a better sparing. For now, I am still a newbie but I'm hoping to spar with them soon.
Portfolio
Collection of my favourite dogs
Contact
If you would like to know more about me..


It is an excellent idea to consistenly and logically comment your .htaccess files. Any line in an .htaccess file that begins with the pound sign ( # ) tells the server to ignore it. Multiple lines require multiple pounds and use letters/numbers/dash/underscore only:
# this is a comment
# each line must have its own pound sign
# use only alphanumeric characters along with dashes - and underscores _
For more information, check out commenting your .htaccess code.


Work Day Scheduler
A simple calendar app for scheduling your work day
09AM
10AM
11AM
12PM
01PM
02PM
03PM
04PM
05PM
06PM
07PM


Cheng Da, an eight-year-old bear in China, has been caught on camera rocking her two-month-old cub to sleep by wiggling her tummy.
The adorable footage shows female cub Cheng Feng lying on her stomach on top of Cheng Da while dozing off in the steady rhythm generated by her mother.
The heart-warming scene was captured at Chengdu Giant Panda Breeding Research Base on August 28 and has been supplied to MailOnline by iPanda, a video platform which specialises in pandas.
Cheng Feng was born on June 11 and is known for being mischievous among keepers, according to iPanda.
The tiny bear is known affectionately as the 'crazy cub' at the centre.
The 40-second video shows Cheng Da lying on her back in her enclosure while Cheng Feng was resting on Cheng Da's stomach.
The mother-of-four even put one of her legs on the railing of her cage while comforting her cub hands free.
Cheng Feng is the third cub of Cheng Da and weighed 171.9 grams (six ounces) at birth.
She has a twin sister, Cheng Lang, which is three and a half hours younger than her.
Cheng Lang was the smallest cub to be born in the world.
Keepers put Cheng Lang into an incubator and took care of her around the clock at the centre's panda nursery.
She has since grown to nearly the same size of her sister Cheng Feng.
The siblings met the public for the first time on September 24.
How do Chinese keepers look after baby pandas?
Sports facilities: The black-and-white bears enjoy a variety of leisure facilities in the Chengdu Giant Panda Breeding Research Base, such as gym facilities made with bamboo and dipping pools for the animals to cool down in summer.
Birthday treats: A lavish party is usually held and a luxurious cake is prepared for the birthday star, which can be made of fruits, ice and bamboo.
Well-furnished delivery rooms: They are set up for expectant panda mothers in the breeding centre in Chengdu. The Sun Delivery Room receives panda mothers during the day while the Moon Delivery Room helps the animal give birth at night.
Fancy food menu: More than 20 types of bamboo are offered by the Chengdu centre to ensure pandas dine like kings. Their favourite is said to be the bamboo shoots collected at altitudes higher than 6,560ft in Bashan Mountain.
Cool rooms: During summer, all pandas enjoy air-conditioned rooms. In 2016, a panda in Taipei Zoo tricked zookeepers into giving her an air-conditioned room, round-the-clock care and extra bamboo by pretending to be pregnant.
Free match-making service: A keeper at the Chengdu centre said in an interview that she got up at 6am every day to pair female pandas to male pandas during the mating seasons.
Source: Chengdu Research Base of Giant Panda Breeding, QQ.com


Northcott App
Header Informaiton
Main Menu
Fabrics
Search
Welcome to the Northcott Web Ordering System!
Email:
Password:
(case sensitive)
Submit
Regions and Customer
Please select a region and a customer you would like to place orders for below:
Region:
Select a Region
Customers:
Select a Customer
Submit
Fabric Details
<< Back To Fabrics
Date Selected:
Reset
Add This Colorway to Cart
Add All Colorways to Cart
Add This Colorways at Half Selected Quantity to Cart
Add All Colorways at Half Selected Quantity to Cart
Select Colorway
Add Selected Item(s) to Cart
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
1616-28
Sold Out
Checkout
Fabric Total*
Total does not include applicable taxes or delivery,
and is subject to change. Product availability varies.
Total:
Checkout
Complete Order
Thank You
Thank you for ordering. Please check your email for confirmation
Shipping
My Order Details
Order Number:
CBRI0-66
Order By:
Tahseen Syed
Order Start Date:
25 April 2014
Bill to:
BRIAN O'ROURKE 101 COURTLAND AVE. VAUGHAN, ONTARIO L4K3T5 Tel:<PHONE_NUMBER>2
Additional Information
Ship to:
BRIAN O'ROURKE
101 COURTLAND AVE.
VAUGHAN, ONTARIO
L4K3T5
Tel:<PHONE_NUMBER>2
Ship To This Address Instead
PO Box:
Cart
Add Promo Code:
Submit
Remove All
Remove Selected
Preview
SKU
Collection Name
Price
Qty
Discount
Net Total
Action
Ship Date:
September 15, 2014
Reset
Special Instructions:
F1616-28
A Teddy Bear for All Seasons Flannel
$115.25
100
$100.00
$1000.00
Remove
F1616-28
A Teddy Bear for All Seasons Flannel
$115.25
100
$100.00
$1000.00
Remove
Subtotal:
$2000.00
Order History
<< Back To Customer Info
Order Date
Shipping Date
Order Number
P.O Number
Total
Shipping Status
Details
16 May 2014
01 September 2014
UBRI0-55
23
$561.75
Processing
Details
My Order Details
< Back To List
Order Information
Order Number:
CBRI0-66
Order Date:
16 May 2014
Bill to:
BRIAN O'ROURKE 101 COURTLAND AVE. VAUGHAN, ONTARIO L4K3T5 Tel:<PHONE_NUMBER>2
Instructions:
Gfgg,Iii
Shipping Information
Order Status:
Processing
Ship Date:
September 01, 2014
Web OrderID:
UBRI055
PRO Order Number:
PRO Order Number
Last Shipped Date:
Last Shipped Date
Last Involice Number:
Last Involice Number
Total Units Ordered:
Total Units Ordered
Cumulative Units Shipped:
Cumulative Units Shipped
Percentage Shipped:
Percentage Shipped
Preview
SKU
Collection Name
Price
Qty
Discount
Sub Total
F1616-28
A Teddy Bear for All Seasons Flannel
$115.25
100
$100.00
$1000.00
Total:
$2000.00
Search Results
Rapid Order Placement
Please enter the SKUs of the swatches you wish to add to the order:
SKU 1:
SKU 2:
SKU 3:
SKU 4:
SKU 5:
SKU 6:
SKU 7:
SKU 8:
SKU 9:
SKU 10:
Add To Order
Customer Info
Order History
First Name:
Last Name:
Email:
Please contact us if the following information is incorrect at
1-800-268-1466 or
<EMAIL_ADDRESS>Company Name:
Customer Number:
Address 1:
Address 2:
City:
State/Province:
Zip/Postal Code:
Phone:
Fax:
Email:
Website:
Contact Name:
Offline
Currently offline, connected to either Wifi or Cell connection
Re-Try Connection


Documentation Style
This document shows examples of some of the specialized blocks we usen when writing Markdown for the Free PDK documentation. We use Kramdown for Markdown parsing. Kramdown has a handy quick reference for the most important Markdown features.
Table of Contents
Callouts
Callouts are used to highlight important or missing information.
You should always specify markdown="1"
like in the examples (even if you don’t want to use markdown inside the callout) so that the padding of the callout is correct.
Correct

**Hey!** Watchout for trains!

Hey! Watchout for trains!
Lists work as well:

- foo
- bar

- foo
- bar
Incorrect

Hey! Watchout for trains!

Footnotes
Kramdown supports named footnotes.
Footnotes are inserted using [^name-of-the-footnote]
.
The content of the footnote can be placed anywhere you see fit, but is always rendered at the very bottom of the page.
Make sure to indent the footnote content by exactly 4 spaces like shown below.
Trains are fast[^my-footnote]. Or are they[^my-footnote]?
[^my-footnote]:
**Yup, they are really fast.**
You can even write multiple lines.
Trains are fast1. Or are they1?
Markdown inside HTML
By default, Kramdown doesn’t process content within HTML tags:
To process Markdown within HTML, set the special markdown
attribute to 1
, block
, or span
.
The difference between them is explained in detail in the Kramdown Documentation.
Correct

*test*

test
Incorrect

*test*

Table of Contents
To embed a table of contents, use
{% include toc.md %}
Table of Contents
- TOC Placeholder
To exclude a header from the table of contents, use the {:.no_toc}
attribute:
# My Header
{:.no_toc}
Checkout /doc-style for more information on some of the special Markdown formatting features we use.


This page requires javascript to be enabled.
☰
♡ Please copy and share.
Legal
Next ⏩
Prev ⏪
Initiative
Name / Notes
Hit Points
add Player
add NPC
add Monster
Storage (
)
Stored Characters


Fibonacci Rest Service
To specify the service port on startup, just set the FIBONACCI_SERVICE_PORT environment variable
otherwise the port defaults to 9000
The Fibonacci REST service endpoint is exposed at: http://ip:port/fibonacci/:rank where rank is
the rank of the Fibonacci suite to compute.
Please note that the rank value starts at 1. Providing a non-strictly
positive rank will raise an error
Source code
The main logic is implemented inside com.doanduyhai.service.FibonacciService::computeFibonacci(rank: Int).
There is an unit-test to cover most code paths for this service.
For the REST endpoint, we use the Scalatra framework. The class
JettyLauncher will start a web-server and the Scalatra servlet is mounted by the class
ScalatraBootstrap
There is no unit/integration test for the REST part because it would result in testing Scalatra itself, which
is redundant


Jan 13, 2015
That’s the second part for the topic “Continous Integration BW5.12/Jenkins”
This post describes how to pull/clone a GIT repository with Jenkins, and run to CLI commands to build and deploy a TIBCO BW process. The first part can be found here, describing the CLI commands and giving a short overview of the Jenkins install process.
All steps are done on an AWS Windows Server 2012 box, using BW (5.12), TRA (5.9), the latest Jenkins (1.596) and GIT (1.9.5).
As already mentioned, I will use GIT in this case as SCM (Source Code Management) to make things more interesting (you could leave SCM out and let Jenkins build directly from your local dir) we need to download Git from here and install it (leaving all default values). While writing this post version 1.9.5 of Git was the actual one.
Configure Jenkins to pull or clone a GIT repo
Install Jenkins Git Plugin from here.
Now Jenkins needs to be told, where to find git (Manage Jenkins->Configure System, or http://localhost:6060/configure - remember to change the port to reflect your configuration).
If you get the error message “There’s no such executable git.exe in PATH” you have to enter the complete path to include your git executable (on my machine: “C:\Program Files (x86)\Git\bin\git.exe”) or update your PATH variable.
I will not dive deeper in detail how to integrate GIT with Jenkins, as there are already enough tutorials covering this topic (e.g. http://sanketdangi.com/post/62740311628/integrate-jenkins-github-trigger-build-process). In short steps:
- create new freestyle project in Jenkins
- choose Git as SCM
- Enter the needed config (repo-URL, credentials)
After creating some content in the repo, Jenkins should now be able to run the job (it only downloads content of the repo). Just try it to make sure the communication from Jenkins to GitHub.com works.
We will skip the part “trigger builds by commit/push”. Triggering jobs by commits would mean, that there is an access to your Jenkins URL from the outside (if you are using e.g. GitHub.com). I will check this out in an additional post, at the moment I am happy scheduling jobs manually or time triggered (as Jenkins offers).
So, now let’s add some build steps…
These steps are highly dependend on your repo structure:
* will every BW project has it own GIT repo?
* will the whole BW development happen in one GIT repo?
* or any other organizational structures (team, milestone, project, …)
As well you will need some thoughts about naming convention of the repos.
Let’s make a switch to the other end, while you are thinking about the above mentioned questions, we will find out how to check-in / push an example BW project to the Github repo.
Push source code to SCM
As I created a github repo and I have already a bw project, I need to init git in the existing bw project (the parent folder of the archive file, not directly the same dir!).
C:\Users\User\Documents\bw5>git init
Initialized empty Git repository in C:/Users/User/Documents/bw5/.git/
C:\Users\User\Documents\bw5>git remote add origin https://github.com/hanneslehmann/integration_gitjenkins.git
C:\Users\User\Documents\bw5>git config --global user.email<EMAIL_ADDRESS>C:\Users\User\Documents\bw5>git config --global user.name "Hannes"
Now you can use the standard git procedure (add/commit/push) to upload your code to the SCM.
To make thinks more visible, I installed a GUI for the source code handling called SourceTree
Configure build job
For the job we re-configure the workspace path under the button “advanced” of the build job (I had an already running job for testing the setup, I will re-cycle this).
Now, if you run the job, the content (the BW project) should be downloaded successfully to the defined folder.
Let’s build the ear file!
I am doing this with normal windows commands, as shown in Part I. No ant, no maven (at the moment).
We choose Execute Windows batch command and insert the command line we previously tested:
cd C:\tibco\tra\5.9\bin\buildear.exe -s -ear /helloworld_service.archive -o C:\jenkins\ears\helloworld_service.ear -p C:\jenkins\workspace\hello_world\helloworld_service
Pitfall: the buildear utility does not like any other files in the directory (even the hidden “.git” directory, or the README.md hurts! Be careful in planning your repo structure!)
Now we can hit the Jenkins build icon and when everything was configured properly, the ear file is build!
Sample Jenkins console output
Started by user admin
> C:\Program Files (x86)\Git\bin\git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> C:\Program Files (x86)\Git\bin\git.exe config remote.origin.url https://github.com/hanneslehmann/integration_gitjenkins.git # timeout=10
Fetching upstream changes from https://github.com/hanneslehmann/integration_gitjenkins.git
> C:\Program Files (x86)\Git\bin\git.exe --version # timeout=10
using .gitcredentials to set credentials
> C:\Program Files (x86)\Git\bin\git.exe config --local credential.helper store --file=\"C:\Windows\TEMP\git8329605896234644724.credentials\" # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe fetch --tags --progress https://github.com/hanneslehmann/integration_gitjenkins.git +refs/heads/*:refs/remotes/origin/*
> C:\Program Files (x86)\Git\bin\git.exe config --local --remove-section credential # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/master^{commit}" # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/master^{commit}" # timeout=10
Checking out Revision c3c0893b9d4b81398a8f53c77a3c157b60275ab9 (refs/remotes/origin/master)
Unable to auto-install JDK until the license is accepted.
> C:\Program Files (x86)\Git\bin\git.exe config core.sparsecheckout # timeout=10
> C:\Program Files (x86)\Git\bin\git.exe checkout -f c3c0893b9d4b81398a8f53c77a3c157b60275ab9
> C:\Program Files (x86)\Git\bin\git.exe rev-list c3c0893b9d4b81398a8f53c77a3c157b60275ab9 # timeout=10
Unable to auto-install JDK until the license is accepted.
[hello_world] $ cmd /c call C:\Windows\TEMP\hudson3427319450101485603.bat
C:\jenkins\workspace\hello_world>cd C:\tibco\tra\5.9\bin\
C:\tibco\tra\5.9\bin>buildear.exe -s -ear /helloworld_service.archive -o C:\jenkins\ears\helloworld_service.ear -p C:\jenkins\workspace\hello_world\helloworld_service
Starting up...
Enterprise Archive File has built correctly.
Ear created in: C:\jenkins\ears\helloworld_service.ear
C:\tibco\tra\5.9\bin>exit 0
Finished: SUCCESS
Create the deployment job
After this, I can create a second job (I created a copy of the first job and removed the SCM part), to get the deployment done. You could do everything in one job, but possibly you have multiple environments and you want to build the ear file undependent from the deployment.
Hint: use a naming convention / views in Jenkins to organize all your jobs!
The deployment job doesn’t need any configuration besides the “Build Step/Execute Windows Command” with following data (valid for my configuration):
cd C:\tibco\tra\5.9\bin\
AppManage -deploy -ear C:\jenkins\ears\helloworld_service.ear -deployconfig C:\jenkins\configs\hello_service-bw5_dev.xml -cred C:\jenkins\configs\cred_dev.txt -app TestServices/hello-service -domain bw5_dev
Deployment, output of Jenkins:
Started by user admin
BuildingUnable to auto-install JDK until the license is accepted.
in workspace C:\jenkins\workspace\hello_world
Unable to auto-install JDK until the license is accepted.
[hello_world] $ cmd /c call C:\Windows\TEMP\hudson3803253491767647451.bat
C:\jenkins\workspace\hello_world>cd C:\tibco\tra\5.9\bin\
C:\tibco\tra\5.9\bin>AppManage -deploy -ear C:\jenkins\ears\helloworld_service.ear -deployconfig C:\jenkins\configs\hello_service-bw5_dev.xml -cred C:\jenkins\configs\cred_dev.txt -app TestServices/hello-service -domain bw5_dev
Checking if master server is responding ...
Finished checking
Initializing ...
Finished initialization
Loading archive ...
Finished loading archive
Configuring application ...
Finished configuring application
Deploying application ...
INFO : Received AgentInitialMsg: AgentInitialMsg [Agent=WIN-881H4D8KL83:none:bw5_dev:1421157162458:30] ## Tue Jan 13 15:09:57 CET 2015 ##
Instance helloworld_service created succesfully
Finished deploying application
Finished successfully in 37 seconds
C:\tibco\tra\5.9\bin>exit 0
Finished: SUCCESS
Let’s check the TIBCO Admin GUI:
It worked!
From here: AppManage fails, if there is already a process with the same name. For update/upgrading existing processes, and the right packaging strategy, please refer to TIBCO guidelines!
I will follow up to add some more complexity, e.g. change some global variables during deployment.
As usual - if you have suggestions for more details, errors in text, just let me know, please!
Jan 3, 2015
- Setup: This how-to was done using a Linux-PC (LMDE-Linux Mint Debian).
- Scope: PoC with LUA Firmware.
Using GtkTerm on Linux make sure that the configuration of the baudrate is set to 115200 (file: “~/.gtktermrc”).
[default]
port = /dev/ttyUSB1
speed = 115200
To get the LUA firmware for the esp8266 module (version ESP-01):
git clone https://github.com/nodemcu/nodemcu-firmware.git
Copy the file “nodemcu_512k_latest.bin” from folder pre_build/latest and connect GPIO0 to low; after that restart the module (with GPIO0 to low it boots to flashable mode). How the connection from USB to the module can be done has been documented in a (previous post)[http://hanneslehmann.github.io/2014/12/ESP8266Module/].
Open a linux terminal, navigate to the already known Python script for flashing the firmware:
./esptool.py -p /dev/ttyUSB1 write_flash 0x000000 nodemcu_512k_latest.bin
Connecting...
Erasing flash...
Writing at 0x0007ef00... (100 %)
Leaving...
Change baudrate of gtkterm:
[default]
port = /dev/ttyUSB1
speed = 9600
Now opening again GtkTerm you can enter commands (note: every line is a command, the sign “>” indicates that the module expects a lua command).
> wifi.setmode(wifi.STATION)
> wifi.sta.config("mywifi","mypass")
stdin:1: unexpected symbol near 'char(27)'
> print(wifi.sta.getip())
stdin: bad header in precompiled chunk
> print(wifi.sta.getip())
<IP_ADDRESS>
>
Ok! This seemed to work, our esp8266 module is connected to our network (and has the ip <IP_ADDRESS>)!
If you get some errors like “stdin:1: unexpected symbol near ‘char(27)’” or “stdin: bad header in precompiled chunk” then your terminal doesn’t support backspace or arrow input (either copy&paste issue, or you have done a correction of your input). Don’t worry, just repeat the command.
I then copy and pasted the example for the simple http server from here; note: it even worked without correct line breaks!
> srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send("<h1> Hello, NodeMcu.</h1>") end) conn:on("sent",function(conn) conn:close() end) end)
After browsing to http://<IP_ADDRESS>/ I get the expected response “Hello, NodeMcu.” and following log entries in the terminal:
> GET / HTTP/1.1
Host: <IP_ADDRESS>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
GET /favicon.ico HTTP/1.1
Host: <IP_ADDRESS>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
GET /favicon.ico HTTP/1.1
Host: <IP_ADDRESS>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: image/png,image/*;q=0.8,*/*;q=0.5
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
To restart the module the command node.restart() can be used.
>node.restart()
> Z0�
G��fR�f� ��C�NodeMcu 0.9.4 build 20141230 powered by Lua 5.1.4
lua: cannot open init.lua
>
What happened? Our previous configured webserver vanished!! To make something permanent, the boot up message gives the hint: we need an “init.lua” file which is executed at the start and can be used to setup the module with the needed commands.
But even if the webserver vanished, the settings for the home/wifi access have been stored, and after reboot of the module it reconnects automatically!
To make things easier, let’s use a small python script for uploading lua script files to esp8266:
git clone https://github.com/4refr0nt/luatool.git
This tool can be used to write a file into the wifi module, as it automates sending the file line by line.
Sample usage:
./luatool.py --port /dev/ttyUSB1 --src init.lua --dest init.lua --verbose
Attention: don’t forget to close your Serial monitor, otherwise the tool might not get the responses from the module and quit working (or disable the check)!
To solve my previous problem (arduino not getting the full message from the module, see post from 30DEC) I now created a lua.init file which I uploaded to route through the commands sent by tcp.
From the linux box I now can send a message like:
echo 'Hello' > /dev/tcp/<IP_ADDRESS>/2323
and it will be send to the serial output of the module.
I will keep on going to check out this nice little module (already ordered a new version with some more GPIOs).
Please let me know in case of any questions or clarifications needed!
Dec 30, 2014
- Setup: This how-to was done using a Linux-PC (LMDE-Linux Mint Debian).
- Scope: first communication test with the module over wifi.
To try out the ESP8266 module I connected an USB-to-serial adapter which I ordered via the bay (“USB RS232 Serial TTL PL2303HX UART”).
It was possible to reconnect the 5V power supply from USB within the module (just opened it) to the 3.3 Volt needed for the module.
I wired up the module with the USB adapter; connected PIN CH_PD to VCC (3.3 Volt) and connected to PC. Red light goes on, blue flashes shortly.
| Label |
Signal |
| VCC |
3.3V (max 3.6V) |
| GND |
Ground |
| TXD |
Transmit Data (3.3V) |
| RXD |
Receive Data (3.3V) |
| CH_PD |
Chip Power down: (LOW = Power down active) |
| GPIO0 |
General Purpose I/O 0 |
| GPIO2 |
General Purpose I/O 2 |
| RST |
Reset (LOW = Reset active) |
The picture is not the best - the yellow bounded cable connects CH_PD with VCC. The green connector from the USB-Serial-Converter goes to RXD, and the white to TXD.
After connecting the USB-Serial-Converter, my Linux shows following dmesg log:
[23081.471573] usb 1-3: New USB device found, idVendor=067b, idProduct=2303
[23081.471575] usb 1-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[23081.471576] usb 1-3: Product: USB-Serial Controller
[23081.471577] usb 1-3: Manufacturer: Prolific Technology Inc.
[23081.471957] pl2303 1-3:1.0: pl2303 converter detected
[23081.472510] usb 1-3: pl2303 converter now attached to ttyUSB1
I installed GtkTerm via
sudo apt-get install gtkterm
I made sure the config file of gtkterm: “.gtktermrc” in my home folder contains the right config for my setup (in fact I needed to change the port and speed config):
[default]
port = /dev/ttyUSB1
speed = 115200
bits = 8
stopbits = 1
parity = none
flow = none
wait_delay = 0
wait_char = -1
rs485_rts_time_before_tx = 30
rs485_rts_time_after_tx = 30
echo = False
crlfauto = False
font = "Nimbus Mono L, 14"
term_transparency = False
term_show_cursor = True
term_rows = 80
term_columns = 25
term_scrollback = 200
term_visual_bell = True
term_foreground_red = 43253
term_foreground_blue = 43253
term_foreground_green = 43253
term_background_red = 0
term_background_blue = 0
term_background_green = 0
term_background_saturation = 0,500000
Now I was ready to play around with gtkterm. Actually my terminal was showing nothing, until I typed the first command (AT). For details about the below mentioned commandos (all starting with AT) - please visit: https://nurdspace.nl/ESP8266#AT_Commands or this website
AT
OK
AT+RST
OK
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 24444, room 16
tail 12
chksum 0xe0
ho 0 tail 12 room 4
load 0x3ffe8000, len 3168, room 12
tail 4
chksum 0x93
load 0x3ffe8c60, len 4956, room 4
tail 8
chksum 0xbd
csum 0xbd
ready
AT+GMR
00160901
OK
AT?
no this fun
AT+CWMODE?
+CWMODE:2
OK
AT+CWMODE=3
OK
AT+CWMODE?
+CWMODE:3
OK
AT+CWLAP
+CWLAP:(0,"",0)
+CWLAP:(4,"wifi1",-86)
+CWLAP:(3,"wifi2",-72)
+CWLAP:(3,"wifi3",-83)
+CWLAP:(3,"mywifi",-63)
OK
AT+CWJAP="mywifi","mypass"
OK
AT+CIFSR
<IP_ADDRESS>
After above commandos the module is connected with my home wifi (“mywifi”) which is secured with a password. The IP adress of the module is “<IP_ADDRESS>” (automatically received by the DHCP of the wifi router). Now I will start a TCP server listening on Port 8001 on the module (timeout is set to 180 sec because the module handles only a limited number of connections; we might free some long running idle ones):
OK
AT+CIPSERVER=1,8001
OK
AT+CIPSTO=180
On the linux box I open a terminal; started a telnet connection; entered the message “Helo” and pressed >enter<:
telnet <IP_ADDRESS> 8001
Trying <IP_ADDRESS>...
Connected to <IP_ADDRESS>.
Escape character is '^]'.
Helo
In the serial monitor (gtkterm) I can see the terminal receiving the message:
Link
+IPD,0,6:Helo
OK
That’s it!
Next step is to have an arduino react/respond on tcp messages.
After consulting some forums in the internet I have read, that some additional preparation of the module is needed to talk with arduino (downgrade baudrate of the module). By the way - some alternative firmware exists for running LUA and/or even a webserver on the module using the GPIOs directly. But I want to talk to the Arduino Nano, so I need the following steps.
Clone the flash utility:
git clone https://github.com/themadinventor/esptool.git
Get the firmware esp82<IP_ADDRESS>.bin or here and unzip it to the folder of the esptool.
Now connect GPIO0 to low and restart the module (with GPIO0 to low it boots to flashable mode).
Trying to run the flash utility gave me an error (note that my serial converter sits on USB1, your setup might be different!):
./esptool.py -p /dev/ttyUSB1 write_flash 0x000000 v<IP_ADDRESS>\ AT\ Firmware.bin
Traceback (most recent call last):
File "./esptool.py", line 22, in <module>
import serial
ImportError: No module named serial
So I had to install the python serial modul via pip:
sudo pip install pyserial
Downloading/unpacking pyserial
Downloading pyserial-2.7.tar.gz (122kB): 122kB downloaded
Running setup.py egg_info for package pyserial
Installing collected packages: pyserial
Running setup.py install for pyserial
changing mode of build/scripts-2.7/miniterm.py from 644 to 755
changing mode of /usr/local/bin/miniterm.py to 755
Successfully installed pyserial
Cleaning up...
After that I was able to flash the firmware:
./esptool.py -p /dev/ttyUSB1 write_flash 0x000000 v<IP_ADDRESS>\ AT\ Firmware.bin
Connecting...
Erasing flash...
Writing at 0x0007ef00... (100 %)
Leaving...
Now we have to change the baudrate for gtkterm (see above for the details) and restart gtkterm:
[default]
port = /dev/ttyUSB1
speed = 9600
bits = 8
stopbits = 1
parity = none
...
One thing has changed for the communication with the module after the upgrade: after every command entered in gtkterm, not only Return has to be hit, but additionally Ctrl + J as well (CR+LF). So what do we get? Let’s change the baudrate to 57600:
AT
OK
AT+GMR
0018000902
OK
AT+CIOBAUD?
+CIOBAUD:9600
OK
AT+CIOBAUD=57600
BAUD->57600
OK
R
-> reconfigure & restart gtkterm!
As the new firmware changed some settings, we need to issue some more commands to get our tcp server back online (this time on ip <IP_ADDRESS>….):
AT+CIPMUX?
+CIPMUX:0
OK
AT+CIPMUX=1
OK
AT+CIPMUX?
+CIPMUX:1
OK
AT+CIPSERVER=1,8001
OK
AT+CIFSR
<IP_ADDRESS>
<IP_ADDRESS>
OK
Link
+IPD,0,6:helo
OK
Now I will be ready to connect the Arduino Nano to my wifi module!
Connecting Arduino Nano is done really easily, with one level shifter (a resistor should work as well). I connected additionally the USB-Serial-Converter to the SoftSerial Arduino to see debug messages.
The Arduino is powered through the USB connection to the PC. During upload of the Arduino Sketch, the serial connection to the Wifi module has to be removed and reconnected afterwards.
I have pulled the CH_PD Pin to VCC, first with resistor (10k) then without. Without it was working more stable for me. Here the big picture:
What we now need is the corresponding Arduino Sketch. I will upload it soon to my GitHub repo - here the first draft, inspired by Ray Wang @ Rayshobby LLC
/* ====== ESP8266 TCP Demo ======
* Receive & Respond via TCP
* (Updated Dec 30, 2014)
* ==========================
*
* Change SSID and PASS to match your WiFi settings.
* The IP address is displayed to soft serial upon successful connection.
*
* Inspired by
* Ray Wang @ Rayshobby LLC
* http://rayshobby.net/?p=9734
* http://raysfiles.com/arduino/ESP8266a_arduino.ino
*/
#include <SoftwareSerial.h>
#define BUFFER_SIZE 512
#define esp Serial
#define SSID "mywifi" // change this to match your WiFi SSID
#define PASS "mypassword" // change this to match your WiFi password
#define PORT "8001" // using port 8001 by default
char buffer[BUFFER_SIZE];
// Software Serial for debug
SoftwareSerial dbg(10,11); // use pins 10, 11 for software serial
// By default we are looking for OK\r\n
char OKrn[] = "OK\r\n";
// LED Pin
const int LED = 13;
byte wait_for_esp_response(int timeout, char* term=OKrn) {
unsigned long t=millis();
bool found=false;
int i=0;
int len=strlen(term);
// wait for at most timeout milliseconds
// or if OK\r\n is found
while(millis()<t+timeout) {
if(esp.available()) {
buffer[i++]=esp.read();
if(i>=len) {
if(strncmp(buffer+i-len, term, len)==0) {
found=true;
break;
}
}
}
}
buffer[i]=0;
dbg.print(buffer);
return found;
}
void setup() {
// assume esp8266 operates at 57600 baud rate
// change if necessary to match your modules' baud rate
esp.begin(57600);
dbg.begin(9600);
dbg.println("begin.");
// Setup LED PIN as output
pinMode(LED, OUTPUT);
// blink test
digitalWrite(LED, HIGH); // LED on
delay(500); // 500 ms delay
digitalWrite(LED, LOW); // LED off
setupWiFi();
// print device IP address
dbg.print("device ip addr:");
esp.println("AT+CIFSR");
wait_for_esp_response(1000);
}
bool read_till_eol() {
char incomingByte = 0; // for incoming serial data
static int i=0;
if(esp.available()>0) {
incomingByte = esp.read();
buffer[i++]=incomingByte;
if(i==BUFFER_SIZE) i=0;
if(i>1 && buffer[i-2]==13 && buffer[i-1]==10) {
buffer[i]=0;
i=0;
dbg.print(buffer);
return true;
}
}
return false;
}
void loop() {
int ch_id, packet_len;
char *pb;
if(read_till_eol()) {
dbg.println("----------------------------------");
if(strncmp(buffer, "+IPD,", 5)==0) {
// request: +IPD,ch,len:data
sscanf(buffer+5, "%d,%d", &ch_id, &packet_len);
if (packet_len > 0) {
// read serial until packet_len character received
// start from :
pb = buffer+5;
while(*pb!=':') pb++;
pb++;
dbg.print("Message received: ");
dbg.println(pb);
send_Response(ch_id, "ACK");
if (strncmp(pb, "LEDON", 5) == 0) {
digitalWrite(LED, HIGH); // LED on
}
if (strncmp(pb, "LEDOFF", 6) == 0){
digitalWrite(LED, LOW); // LED on
}
}
}
}
}
void send_Response(int ch_id, String content) {
esp.print("AT+CIPSEND=");
esp.print(ch_id);
esp.print(",");
esp.println(content.length());
if(wait_for_esp_response(2000, "> ")) {
esp.print(content);
} else {
esp.print("AT+CIPCLOSE=");
esp.println(ch_id);
}
}
void setupWiFi() {
// try empty AT command
esp.println("AT");
wait_for_esp_response(1000);
// set mode 1 (client)
esp.println("AT+CWMODE=1");
wait_for_esp_response(1000);
// reset WiFi module
esp.print("AT+RST\r\n");
wait_for_esp_response(1500);
// join AP
esp.print("AT+CWJAP=\"");
esp.print(SSID);
esp.print("\",\"");
esp.print(PASS);
esp.println("\"");
// this may take a while, so wait for 5 seconds
wait_for_esp_response(5000);
esp.println("AT+CIPSTO=30");
wait_for_esp_response(1000);
// start server
esp.println("AT+CIPMUX=1");
wait_for_esp_response(1000);
esp.print("AT+CIPSERVER=1,"); // turn on TCP service
esp.println(PORT);
wait_for_esp_response(1000);
}
A little success: Arduino sends correctly the AT commands to connect to the network! It receives an IP adress, I even can telnet to it!
I can see (on the debug serial) following commands running through:
begin.
AT
OK
AT+CWMODE=1
no change
AT+RST
OK
AT+CWJAP="mywlan","mypassword"
B�
r�Ĥ���HB߬!{�����1�!�+!��B(�C)����B�B1�c+&ƅ��"�C�*�B����!(��9*)%�Ǆ�b�c����Cx��B)�!���r�,%��D��c����C�!愆D
[System Ready, Vendor:www.ai-thinker.com]
AT+CIPSTO=30
ERROR
AT+CIPMUX=1
OK
AT+CIPSERVER=1,8080
OK
device ip addr:AT+CIFSR
<IP_ADDRESS>
OK
What does not work?
I wanted to switch the on-board LED of the Arduino via TCP commands (“LEDON” / “LEDOFF”) but at the moment I am struggling with the communication from the esp8266 to the Arduino. Sending the message “Hello” through a telnet terminal, I can see that the Wifi module is sending the complete message: “+IPD,0,7:Hello” but only a crippled message is received by the Arduino “+0lloOK”.
….to be continued….
If you run into problems or if you have any suggestions for the mistakes I have made, please leave a comment!
Dec 3, 2014
First some pre-requisites.
The workflow of a Continous Integration with BW would be (GIT is used in this case, same thing can be done with SVN or other source control tools as well):
Developer:
- Tibco Designer —-> create & save —-> Project
- Project — push to repo — > GIT
Jenkins:
- GIT — clone project locally to—> project_dir
- buildear — create deployment artifact to —> project_dir/app.ear
- AppManage — extract config from ear into —> project_dir/app_config.xml
- Script (Ant, bash,..) — modify configs within —> project_dir/app_config.xml
- AppManage — combine ear and configs —> deploy to BW domain
- GIT? —> commit/push deployment artifacts together with config
The Jenkins job can be run manually, scheduled or, if configured correctly, with the source control system, on every check-in/push.
This article covers only a really abstraced view on the process, which can grow to complexity. Only some random thoughts what has to be clearly defined before setting up CI (without beeing complete):
- The CLI tool chain from TIBCO is needed on the same box, where the applications are build (either on a Jenkins bot, or some remote scripting…), how can this be achieved (Licences..?)
- Build strategy: how is the branching/staging done? So, we need to tell Jenkins what to check out from where/when (on every build?) Manually if new branches are created?
- The target environment: how many staging boxes are there (Dev, Test, UAT, Prod)? Should the build be done automatically on which ones? Is there access from Jenkins (or it’s bots to all the needed machines?)
- Any quality assurance before deployment? Source code checks (e.g. naming conventions, comments,…), automated testing?
- What happens in a case of failure? What would be the way to recover a (former) working version of the application?
- How can new jobs be added to Jenkins? Any Administrator/Ops Team? Automated?
- Any automated reports needed?
Following steps have been done on a Windows Box (AWS Windows Server 2012).
Jenkins installation
- Go to Jenkins Homepage: http://jenkins-ci.org/
- Download Windows Package / Unzip and start >setup.exe<
- Choose the installation directory. After setup is completed (on my box) a browser pops up, showing Jenkins waiting for jobs.
If you need to change the port of Jenkins standard configuration, it can be changed by editing the jenkins.xml file (change httpPort=8080) which is located in the installation directory (choosen during installation).
This was my original config - useful to increase heapsize etc:
<service>
<id>jenkins</id>
<name>Jenkins</name>
<description>This service runs Jenkins continuous integration system.</description>
<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>%BASE%\jre\bin\java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080</arguments>
<!--
interactive flag causes the empty black Java window to be displayed.
I'm still debugging this.
<interactive />
-->
<logmode>rotate</logmode>
<onfailure action="restart" />
</service>
After applying any change, restart the Jenkins Service using e.g. the Windows Task Manager. For this article I changed the Jenkins Port to 6060.
For more details (e.g. issues or advanced config, such as installing jenkins as a slave, check out: the jenkins wiki.
Preparation of BW5.12 scripted deployment
Within TIBCO BusinessWorks 5.12 ear-files (deployable artifact) are created via the TIBCO Utility/Script BuildEar. The deployment is done via the AppManage Utility. Both are available after installation of BW TRA.
The AppManage utility must be run on a machine that is part of the administration domain you are updating.
Example manual steps for deploying an application:
AppManage -deploy -ear D:\jenkins\ears\deployment\helloworld_service2.ear -deployconfig D:\jenkins\ears\deployment\hello_service-bw5_dev.xml -cred D:\jenkins\cred.txt -app TestServices/hello-service -domain bw5_dev
In this case we would deploy & start a service within the TestServices folder. The AppManage Tool is located in the tra folder of your installation (e.g. C:\tibco\tra\5.9\bin).
The ear file can be created automatically via the build tool:
buildear.exe -s -ear /helloworld_service.archive -o D:\jenkins\ears\deployment\helloworld_service2.ear -p C:\Users\Bob\Documents\bw5\helloworld_service
Options:
- ear) takes the name of the project archive file, don’t forget the leading slasch!
- o) is the ouptut directory
- p) is the directory of the project (where the archive file is located)
The buildear is located in the same directory as the AppManage Tool.
For more specific explanations check the Tibco Documentation!
Before deploying, as mentioned before, the config file has to be created (by AppManage) and adjusted to the target environment where the deployment will happen (usually a clever script).
Export the config of an existing ear.
AppManage -export -ear D:\jenkins\ears\deployment\helloworld_service2.ear -out D:\jenkins\ears\deployment\helloworld_service2.xml
Or, in any case following command can be useful to export a current config from the Admin. It helps to understand what has to be changed inside the config file (when you are setting up things the first time)…
AppManage -export -app TestServices/helloworld_service -out D:/jenkins/helloworld_service.xml -domain bw5_dev -cred D:\jenkins\cred.txt
Next steps will include
- Jenkins/Git Integration
- automated checkout by Jekins
- automated deployment by Jekins
Nov 27, 2014
It seems that we are back to the future: 2015 will be the year where discussions about Customer Experience Management will gain even more speed. A lot of companies are trying to push tools out to the space.
They adress challenges of our new and modern world:
30 years ago, there were small local shops (in Germany so called “Tante Emma Laden”), they knew you as a customer and most of the time even your needs. They knew even your family and possibly have seen you growing and growing to an adult.
So, when you stepped in once a week, they were already prepared with your usual shopping list…and when it was sommer - they put some sun blocker on top. Possibly they remembered you’ve broken your sun glasses last sommer, asking you if you want to buy one. On the other days, they already prepared you the right news-paper. And when it was week-end, it was time for your favorite “Croissant”.
Nowadays this intense relationship to the customer got lost - and what do you do? You try to collect as much data as possible to gain insights of the customer: the feelings, the (actual) needs and even predictions what she/he might need in the future.
Tibco is placing the Engage Platform into the bet.
Nov 24, 2014
Kickstart BW5.12 Project
I have created the a small make file to speed up BusinessWorks Designer Project creation. Additionally it creates some sub-directories which helps keeping the project structure clean.
I will possibly update the make file, so be sure to subscribe to the git repo!
Usage:
make project='somename'
Here comes the make file (can be found in my GitHub repository). It takes an existing bw project stored in a (hidden) directory under .template and copies it to the target project name. It then replaces the name in some files and creates some additional sub-directories.
# Makefile
# Created to speed up initialization of a TIBCO BW 5.12 project
# by Hannes Lehmann
#
PROJ=${project}
PROJDIR=
DESIGNER_BASE=/data/tibco/designer/5.9
run:
ifdef PROJ
@echo Creating skeleton for a new project called: $(project)
@mkdir -p ${project}/Schemas
@mkdir -p ${project}/Processes
@mkdir -p ${project}/Services
@mkdir -p ${project}/Resources
@cp -R .template/* $(PROJ)
@sed -i 's/1template1/${project}/g' ${project}/vcrepo.dat
@sed -i 's/1template1/${project}/g' ${project}/defaultVars/defaultVars.substvar
else
@echo Nothing done, try to pass an argument project=
endif
launch:
cd $(DESIGNER_BASE)/bin/ && $(DESIGNER_BASE)/bin/designer $(CURDIR)/$(PROJ)
cd $(DIR)
What I do with this script is: run it for creating a new BW project. Before you can use it, either you:
- create a project called ‘1template1’ and change the directory to ‘.template’
- clone the git repo.
Eventually I will add additional functionality to the script (possibly remove the dependency on the template project).
Best Practice for BW project structure
Create some folder insider your project collecting/grouping functions together. For example the Makefile above will create following directories:
- Schemas (for XSDs, WSDLs, etc.)
- Processes (put your bw processes here)
- Services (if any WebServices are created, collect them here)
- Resources (any http, jdbc or whatever else is needed)
This is only a recommendation and a really flat hierarchy. Avoid to create to many folders/subdirs as it should still be usable (remember: some OSses/Systems don’t like really long path names).
Nov 20, 2014
Markdown for documenting
I have created the first small bash script to help ease my Markdown workflow.
Usage:
whatchme.sh file.md 'grep "^#" file.md'
Here comes the script (can be found in my GitHub repository for cloning/forking as well!). I found most of it in a forum, thanks to that guys!
#!/bin/bash
# Script by Hannes Lehmann
# Use it, when you need it
if (( $# < 2 )); then
echo "Not enough arguments passed to whatchme!"
echo "Provide the filename as first argument,"
echo "and the command to be executed as second argument."
echo "example: whatchme.sh file.md 'grep something file.md'"
exit 1
fi
while true
do
ATIME=`stat -c %Z $1`
if [[ "$ATIME" != "$LTIME" ]]
then
clear
eval $2
LTIME=$ATIME
fi
sleep 1
done
What I do with this script is: run it in a separate / parallel shell to my editor (where I am editing the current markdown document) to have a fast overview of the chapters and their structure.
The next day I will enhance the script with automated chapter numbering to increase the structural view.
Nov 19, 2014
Hello from Hugo! And hello from Hannes! This is my first blog entry, realized thanks to Hugo; written in Markdown.
Hugo
Here’s a the link to Hugo.
I will optimize my build process (make file already created) and will post findings here and in GitHub.
Showing off with Markdown
A full cheat sheet can be found here
or through Google.
Hosted on GitHub
How a page in GitHub can be hosted is described here. It’s so easy and fast to publish pages via git pull/add/commit/push!


The journey of Little Scholars Nest Preschool began in early May of 2007. Our founder and Facility Director Mrs. Shalini Srivastava brings along her experience as a teacher and child care provider in California for many years. As a passionate Facility Director, she has built an environment where every child receives abundant love and attention from professionally trained teachers.
In 2019, we will be completing our 12th year of Little Scholars Nest Preschool with over 100 Little Scholar graduates now having left the nest and sprouting their wings. We are beyond proud of all of our Little Scholars and their achievements as active and aware citizens of our rapidly changing world. Our preschool fosters years of experience in early childhood education which we bring to the classroom, playground, and nap room every day.
At Little Scholars Nest we believe that the early years of a child’s life are the most significant period as this is when the foundation is laid for the overall development of the individual. We have prepared a preschool environment that is calm, engaging, and responsive to each individual child at all stages of development. Most importantly, children are loved and made to feel cherished to ensure that they approach life with a positive attitude.
Along with providing the knowledge of different academic concepts, we also emphasize on inculcating life skills like confidence, leadership, empathy, and courage. Our mission is to usher your child into a world of possibilities where their personality blossoms. We provide a quality and integrated program where children can grow intellectually, physically, socially, and emotionally. Our foundational commitment is to provide nurturing care that compliments values learned at home and develops high character and conduct.
We accept all children, that we are licensed to serve, without any regard to ethnic background, gender or creed. All of our teachers have years of work experience and a Bachelor’s or Master’s Degree. They exceed all qualifications required for preschool teachers as per the California Licensing Standards. Each adult on our facility meets the following requirements: fingerprinted, TB tested, Early Childhood Education Certified, California Basic Educational Skills Test, Certified in Infant and Child First Aid, and CPR Certified for Child Health and Safety. Our facility is licensed by Community Care Licensing through the State of California.


Transfer Spices
The Smart Spice comes with a spice rack and 20 specialized jars for a targeted price of $75. You transfer the spices you have at home into the jars and download the app for setup.
 Or that you didn’t have enough of that spice? Or that the spice was 3 years old? The Smart Spice ensures that will never happen again because it tracks your spices for you.
The Smart Spice comes with a spice rack and 20 specialized jars for a targeted price of $75. You transfer the spices you have at home into the jars and download the app for setup.
From the mobile application, you assign spices to each jar and setup your preferences for low levels, re-ordering, and organizing your spices.
Smart Spice will track your spices and let you know when spices are low or going bad. You can check your spices anywhere and the unique jars ensure they remain organized.
Get early access and a 20% discount on the first release of the Smart Spice rack.
© 2018 Sous Studio. All Rights Reserved.


Beer Pong is generally played by teams of two in which each team takes turn throwing a ping pong ball into the other team’s cups. Once a ball lands in a cup, the cup is taken away and the opponent then drinks the contents of the cup.  The team that successfully hits all of the opponent’s cups wins the game.  Winner of the game typically stays on the table and awaits next challenger. A list is generally formed to keep track of who is next to play.
If it is the first game of the night, the first shot is decided by “Eyes.” This is when a player from each team shoots the ball while maintaining eye contact with their opponent throughout their shot. If both players miss or both players make it, their partners now shoot. This goes on until one person makes it and their opponent does not. The hit cup is not removed; the ball is taken out and rolled back to the team that sank the shot If it is not the first game, the winner of the previous game shoots first. If new teams are formed or if the winning team retires, “Eyes” is done again to see who goes first
This is usually an unspoken rule at house parties (or at least until someone breaks it). When shooting, players must keep their elbows behind the edge of the table. If a wrists rule is in effect, players must keep their wrists behind the edge of the table. Breaking this rule results in the shot not counting. If the shot is made, the infracting player may step back and re-shoot the ball. This tends to be the most argued-over rule in Beer Pong, due to the fact that it is sometimes difficult to determine if the elbow / wrist does indeed cross the plane of the table Yes, Females have to abide by this rule as well.
Twice per game, each team can request the cups to be rearranged at the start of their turn. This is known as re-racking, racking, or reforming. Racking may take place when you have remaining cups in the amount of 6, 4, 3, or 2. If you get balls back after making 2 in a row, it is still considered your turn and you may not get a rack. If requested, Last cup may always be pulled back and centered beer pong reracks
If a ball hits the table and then goes into a cup (even by accident), the cup that the ball goes into is removed, as well as another cup of the defending player’s choice. If there are only 2 cups remaining, the bounce only counts as one cup, so it’s fairly useless to bounce on the last 2 cups….unless you’re simply trying to be a tough guy. We’ve heard some of the manlier men out there claim “Bouncing is for bitches” but we like this rule as it helps keep focus to the game, therefore speeding things up.
At any time in the game, a player may ask for the cups to be fixed. This is not to get confused with racking. This is simply putting the cups back to where they would have been had they not slid or been knocked out of position. Getting a beer pong rack helps keep things in good order.
You may have heard the expression Guys Finger, Bitches Blow during a rule summary at the beginning of a game. Fingering is when the ball is spinning inside of a cup and the defending team pulls it out with his/her finger. Blowing is when the ball is spinning inside of a cup and it is blown out by the defending team. If not specifically called at the beginning of the game, neither fingering nor blowing count. This is due to the cheapness of the rule and the easiness of a player to blow out the ball, even after it has come into contact with the beer.   If the cup is still on the table and not in a hand and both balls land inside, it is 3 worth cups (2 additional chose by defending team). This is most common if players shoot at the same time or if the defending team is not paying attention.
After shooting if the ball rolls back to the shooter without hitting the floor (you may also grab it mid-air), they can shoot it again behind the back. The shot counts as one cup if made.
After a player hits two cups in a row, he can call “heating up.” If he makes his third shot he can announce that he’s on fire and he shoots until he misses. If the player fails to announce that he’s heating up he cannot call on fire.
This rule has many different aliases, but the concept is the same. Each player once per game can call a specific cup if it is not touching any other cup (singled out due to surrounding cups being hit, not from the cup sliding away from the other cups on a wet table). If the called cup is hit, the defending team pulls the hit cup along with an additional cup of their choosing. If the shooter calls a specific cup and hits another, the ball is pulled out and the unintentionally hit cup remains on the table.
After the last cup is hit each player from the losing team has a chance to hit the remaining cups. Each player shoots until they miss, the order in which this is done does not matter. If there are racks left over they may be used now. Once both players miss and there are remaining cups, the game is over. If the players manage to hit all remaining cups the game goes into a 3 cup overtime.
Three cups are placed back into a triangle shape and the would-have-been winners shoot first. There are no racks permitted on overtime, however the last cup may be pulled back / centered.


Travel Excitement
Interests
Coastal Mountains Lakes Plains High Desert
Best Whitewater Rafting in the US
Buzzfeed Community is a blog site for travelers that gives some great ideas of places to travel and new activities to explore.
×We are here to offer some ideas for your next vacation. Whether your into adventure or just like to take it easy on your vacation, we can help you come decide. Our company is here to help you narrow down choices and we have selected some great destinations in the US. These are not your everyday, been there done that kind of destinations. The best part you will not need a passport! Have fun exploring we hope you find some great vacation ideas!


{% extends "base.html" %} {% load i18n %} {% block content %} {% include "sponsor-menu.html" %}
{% blocktrans trimmed %} Someone who uploads the package and is responsible for the package in the archive. The sponsor is responsible for the quality of the package and checks the work of the package maintainer to improve his skills. {% endblocktrans %}
{% blocktrans trimmed %} Thanks for helping. There are a lot of sponsorees waiting for a Developer to help them with their packages, and if you want to help with the New Maintainer process this is a good step to get involved. {% endblocktrans %}
{% blocktrans trimmed %} Look for packages that you would like to sponsor on this website. Once you have found some you should download, build and test them. Please notify your sponsoree of every problem that you find in order to give him a chance to fix them. We believe that it is of uttermost importance to stay in contact with your sponsorees to keep them interested in working on Debian. Moreover, they will also learn how to maintain packages within a team and will learn skills that are crucial for Debian Developers more easily. {% endblocktrans %}
{% endblock %}


_FAMILY_NAME_
Wiktionary of word
_FAMILY_NAME_
Wikipedia of surname
_FAMILY_NAME_
There are _NUM_BOOKS_ family books for _FAMILY_NAME_, where _NUM_OCCUR_ names are recorded.
See traditional _FAMILY_NAME_ and early family books in the next page.


rotten > Library > Sex > Masturbation > Inventions > Sex Dolls
Sex Dolls
Images courtesy of www.sextoy.com
Q: Ever wonder why adult bookstores don't display fully-inflated "realistic"
love dolls modeled after porn stars?
 Vagina and anus are made from a stretchy rubber
material.
The vagina/anus area vibrates, controlled by a BP100 power pak which
requires 4 AA batteries. Hands and feet separately molded to make them
more realistic.
Her right hand is molded to hold something akin to your erection, and
easily positioned in front of her mouth.  Soft pink vagina and anus made of
a soft stretchy material called "senso".
Lifelike molded breasts. Less than 5 feet tall.  Manual squeeze bulb.
Porn star Houston is said to resemble Bo Derek.  Doll is
5 feet tall. Personally signed and comes with a centerfold poster. 2 AA
batteries.
Dyanna Lauren is a generic Penthouse performer who likes pizza
and Al Pacino.
Consumer warning: This doll often springs a leak and loses air during
the first inflation.  Sensuous
blonde horse hair.
Devon is a Vivid girl whose credits are not worth mentioning.
She likes French fries and actor Brad Pitt. |
|
The Aria Giovanni Love Doll
Lifelike ultra-soft realistic doll with "futurotic" vagina, anus, nipples
and custom-fit noduled mouth. Near-seamless skin, full mannequin
head, long flowing hair and voluptuous breasts. Movable arms with soft
hands and painted fingernails.
"Sensually scented."
Two removable bullets for maximum stimulation. Doll is 5' 8" tall.
Mouth is extremely tight and can only manage 2 fingers. Vagina and anus
are stretchy, comfortably fitting a 6-inch long dong with a width of 1.5
inches.
Aria has never sucked cock on film, so this is the next best thing. |
|
Florence
from The Jeffersons
We really are moving on up. Who could ever forget Marla Gibbs'
laser sharp, tart-tongued sass mouth of a maid? Sometimes it seemed like
she and Mr. J would never see eye to eye.

Chocolate-colored inflatable plastic. Three openings. Does not perform
housekeeping on the weekends.
|
|
"Letha Weapon" Latex Doll
Heavy-duty latex construction with anus, vagina, and mouth opening. Soft
brown hair, polished finger nails and toes, and huge tits. Often sold
with two vibrating bullets, air pump, and repair kit.
Letha Weapon is famous for her enormous breasts, which are much larger
than those available on this doll.
Her credits include Big Boobs in Buttsville.
|
|
Virtually Marilyn Star
Apparently, someone thought four-color printing might make Marilyn here
look a little more realistic and loveable.
Her breasts are described as luscious and squeezable, and she comes dressed
in red and black lingerie.
Three openings, all of which vibrate.
What a beauty. |
|
Nina Hartley Love Doll
Molded face and honest approximation of Hartley's frame. Blue eyes and
long, wavy blonde hair. Realistic vibrating vagina and anus also molded
from Hartley.
Works great with Tush Push anal lubricant.
Consumer warning: this doll looks exactly like Nina Hartley.
|
|
John Holmes Doll
Features an eight inch vibrating penis rendered somewhat useless because
it's flimsy and hollow.
 Her
vagina is removable for easy cleaning, made from super-soft "senso" material
for a tight fit.
Total openings: three.
  Pubic
hair and fingernails. Soft, squeezy boobs.
Warning: she can only be used in the squatting position. |
No-name brand love dolls are also available on the open market, and closer
inspection yields the desire to discontinue further study.
|
Perfect 10
True to life realistic hands and feet. Ten wiggly fingers and ten toes
with painted nails. Mannequin head with "gorgeous soft hair"
and "sensuous penetrating eyes".
Vibrating tongue. Super "suction mouth" with large squeeze
bulb for more accurate blowjob. Jumbo breasts and vibrating anus. |
|
"Rock Hard" Doll
Here's a man who just won't stop lapping.
Rotating, vibrating deep penetrating tongue. Rotating dong and soft vibrating
balls.
Powered by the E-Z dial multi-speed BP100 Power Paks. 4 AA batteries. |
|
She-Male Doll
Love doll with strong breasts and realistic vibrating cock.
This doll came with lumpy breasts. The left boob deflated within a few
minutes.
And frankly, the dong isn't very secure. You might want to buy a female
love doll and a realistic dong with a suction cup bottom, because that's
all he/she really is.
Head tilted sideways. Separate pouch-type vaginal and anal passages.

Huge breasts, three openings. |
|
Judy Doll
This is your standard novelty product, a garden-variety inflatable female
party doll without genitalia.
Bring it to the high school pep rally in secret, then blow it up behind
your back. Toss it into the crowd, and watch it bounce around over people's
heads.
If someone heaves it onstage, the principal will end the rally.
|
|
Fatty Patty Doll
Fat? So!
Large and in charge.
Three colossal love holes. 4 feet 9 inches tall. 55 inch chest and a
whopping 39 inch waist. Connected pouch-type vagina. Self esteem sold
separately. |
|
Shari Doll
Shari Lewis? Who knows.
Her vagina is described as "sweet as pie," and her mouth as
"loving". Truthfully she looks and feels more like a blow-up
Dalek.
|
|
The Perfect Date Doll
Indeed, she's three feet tall and her mouth is open.
Her head holds exactly one can of beer.
Inset: man in underwear sits in reclining chair watching television. To
his left is the Perfect Date Doll.
|
|
Black Male Vibrating Doll
This "super-hung black stud" has a realistic vibrating penis
measuring 7 inches long and 4.5 inches in circumference.
Four feet, eleven inches tall.

Permanently open mouth. Pocket anal opening in rear. Cock is 7 inches
long, 1.5 inches wide, and 5.25 in circumference.
Requires 3 C batteries. |
|
John Doll
Another standard novelty product, minus genitalia.
Zero openings.
Suitable for propping up in the cubicle of a co-worker you suspect is
homosexual.
|
|
Alien Love Doll
"The invasion has begun," raves the advertiser's kit.
"Make love not war."
Stands 50 inches tall, has buzzing, bleeping open mouth.
Inflates when you blow into the alien dong area. |
|
Luvin Lamb -White
See also: Shari Lewis.

One rear-entry opening. Spanish fly not required. |
|
Erotic Blow-up Love Piggie
Inflatable pig which looks more like a trucking station's propane tank.
One single rear-entry point. |
|
Secret Beer Can Device
Discretion and convenience make this unit a must-have at picnics, parties
and bus stops.
Pop a boner, then pop open a serious can of beat off. |
|
Fleshlights
Pucker up, buttercup. |
Images courtesy of www.sextoy.com
Pornopolis |
Rotten |
Faces of Death |
Famous Nudes
|


Creates a cross-entropy loss using tf.nn.softmax_cross_entropy_with_logits_v2.
tf.compat.v1.losses.softmax_cross_entropy( onehot_labels, logits, weights=1.0, label_smoothing=0, scope=None, loss_collection=tf.GraphKeys.LOSSES, reduction=Reduction.SUM_BY_NONZERO_WEIGHTS )
weights
acts as a coefficient for the loss. If a scalar is provided,
then the loss is simply scaled by the given value. If weights
is a
tensor of shape [batch_size]
, then the loss weights apply to each
corresponding sample.
If label_smoothing
is nonzero, smooth the labels towards 1/num_classes:
new_onehot_labels = onehot_labels * (1 - label_smoothing)
+ label_smoothing / num_classes
Note that onehot_labels
and logits
must have the same shape,
e.g. [batch_size, num_classes]
. The shape of weights
must be
broadcastable to loss, whose shape is decided by the shape of logits
.
In case the shape of logits
is [batch_size, num_classes]
, loss is
a Tensor
of shape [batch_size]
.
onehot_labels
: One-hot-encoded labels.logits
: Logits outputs of the network.weights
: Optional Tensor
that is broadcastable to loss.label_smoothing
: If greater than 0 then smooth the labels.scope
: the scope for the operations performed in computing the loss.loss_collection
: collection to which the loss will be added.reduction
: Type of reduction to apply to loss.Weighted loss Tensor
of the same type as logits
. If reduction
is
NONE
, this has shape [batch_size]
; otherwise, it is scalar.
ValueError
: If the shape of logits
doesn't match that of onehot_labels
or if the shape of weights
is invalid or if weights
is None. Also if
onehot_labels
or logits
is None.The loss_collection
argument is ignored when executing eagerly. Consider
holding on to the return value or collecting losses via a tf.keras.Model
.


This class provides a text editor specialized for editing
Itcl source.
It is automatically invoked whenever you open any file with an
.itcl
extension or
.itk
extension.
Itcl is an object-oriented extension to the Tcl language
that was developed by Michael McLennan of AT&T Bell Labs.
(Itk is the associated extension to Tk).
The EditItcl class is derived from the
EditTcl class, and
therefore inherits all of its features.
It colors certain Itcl constructs, such as comments
and class and method definitions.
The Evaluate Body
command
in the File
menu evaluates the body of a method or proc.
Evaluate Body
is an excellent way to make changes
to Itcl code and then quickly re-evaluate the changes.
The Evaluate
command
in the File
menu
evaluates the Itcl code in the selection (if there is a selection) or
the entire file (if there is no selection). The returned result
is displayed.
In the case where the entire file is evaluated,
the editor first deletes any
classes that are defined within the file so that it can safely redefine
these classes. As a side effect, all instances of the classes and
all derived classes will also be deleted.
If these derived classes are not accessible by auto-loading,
then they must be manually reloaded.
Note that the Itcl auto-loading mechanism
implies some formatting restrictions on the syntax.
Specifically, class definitions must appear with the keyword "class"
starting in column zero and the class name following it on the same
line.
Moreover, the deletion of classes will only work properly if the class
names are fully qualified with all namespaces (the class names should
begin with ::
). If this is not the case, then there is no way
to tell from the syntax of the file what classes are actually being defined
(it depends on what namespace the file is evaluated in).
If the class name is not fully specified, we assume it is defined
in the global namespace only.
The Body Template
command in the Special
menu places a body template at the current point in the buffer.
An example body template would be:
##################################################################### #### myMethod # # body::tycho::ClassName::myMethod {} { }
The File Template
command in the Special
menu copies the file $TYCHO/editors/textedit/templates/ItclTemplate.itcl
into the editor and substitutes in a class name based on the file
name. For example, if the file is named Elvis.itcl
, then
the class name Elvis
will be substituted in where ever
the string ClassName
appears in ItclTemplate.itcl
.
The Test Template
command in the Special
menu copies the file $TYCHO/editors/textedit/templates/testTemplate.itcl
into the editor. The Tycho Testing system is documented in
$TYCHO/doc/coding/testing.html
.
The Generate doc
command in the Special
menu asks the user if they
would like to save the buffer and then runs the
Tydoc itcl to HTML
converter on the file and displays the results. Tydoc produces an
HTML file at
doc/codeDoc/className.html
. The
index.html
file in doc/codeDoc
is not
updated by Generate doc
since we are only passing one file to the
Tydoc system. To update index.html
, usually one runs
make itcldocs
, or uses the BuilderDialog.
The Class
Diagram
command in the Special
menu brings up
the Itcl Class List editor, which
allows the user to generate a class diagram from a user-supplied
list. Class diagrams
are documented separately.
For further information about Itcl, see the Tycho Itcl Internet Links.


Download PDF copy now! Kindly enter your name and email below to begin download.
M.A.P Concept
Drop Us A Message
Those who want share their live transformation through Zikr-e-Husain can email us below.
As for what Mohammed Rasulallah SAW stated centuries ago for his Grandson, Imam Husain's Zikr has been carried out in different ways and forms throughout several cutures, multiple languages and neumerous beliefs. Continuing that notion, this magazine, Misk-ul-Husain combines the fundamentals and principle knowledge of science and art with Imam Husain's Zikr in the attempt to manifest, that all knowledge and abidance condenses to a sole conclusion, Zikr-e-Husain.
Those who want share their live transformation through Zikr-e-Husain can email us below.


--- layout: post title: Calling Ruby Gems from Java episode: 1 summary: Do you have any favorite Ruby Gems? Ever wish you could use them in a java project? If so, here's an example of how to use the java embedded script engine to use use functionality from almost any (j)Ruby Gem. video: ruby-from-java.mp4 ---
Find a copy of the companion source code for this episode here:
https://github.com/upgradingdave/javajing/tree/master/ruby-from-java
In case you're viewing this in github, please find the Episode here:
http://javajing.com/2012/06/01/ruby-from-java.html
java -jar jruby-complete-1.6.7.jar -S sass_helper.rb
mkdir sass-gems java -jar jruby-complete-1.6.7.jar -S gem install -i ./sass-gems sass --no-rdoc --no-ri jar cf sass-gems.jar -C sass-gems .
jar -tf sass-gems.jar | head
java -jar jruby-complete-1.6.7.jar -S sass_helper.rb # will still fail java -jar jruby-complete-1.6.7.jar -rsass-gems.jar -S sass_helper.rb
mvn deploy:deploy-file -DgroupId=com.upgradingdave -DartifactId=sass-gem -Dversion=3.1.17 -Dpackaging=jar -Dfile=sass-gems.jar -Durl=http://dev.upgradingdave.com/artifactory/ext-release-local -DrepositoryId=upgradingdave-release
Embedding ruby inside java: https://github.com/jruby/jruby/wiki/RedBridge
Package gems into a jar: http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
Maven proxy that automatically converts ruby gems to maven dependencies: http://rubygems-proxy.torquebox.org/
Gem Maven Plugin http://blog.mkristian.tk/2010/08/managing-jruby-projects-with-maven.html
Ruby Version Manager (very convenient for installing and using jruby, along with other ruby implementations) https://rvm.io/


>
Greetings! My name is Rutuja Bhoge and I'm a passionate UI Designer who is also a Web Developer from India. I maintain a healthy balance between functionality and visual impact in all my work. I believe every piece of design can be a work of art. Feel free to have a look at my portfolio and don't hesitate to contact me if you think I can be of service to you. Thanks for stopping by...!
I am always focus on simplicity, so that no extraneous information and functionality that might distract or confuse users appears.
I use HTML & CSS to create elegant and beautiful website, Javascript to make them more alive. A fully customized site develop from scratch and with dynamic interface.
Search Engine Optimization is easy way to get traffic to your website. It's simple activity which optimize your site ensuring that it can be easily found by Search Engines.
Hey... It's my personal static/portfolio site, built to show my skills and recent projects. This website is built with html, css and Javascript.Feel free to copy and modify.
View Details