In this assignment, you’ll create and export a function that parses a Transmission Control Protocol (TCP) packet.
| Assigned | Tue, Nov 3, 2020 |
| Office hours | By appointment |
| Assignment Due | Thu, Nov 12, 2020 |
TCP is a Transport layer protocol, operating on layer 4 of the layered network model, and is often found encapsulated as the payload of Internet Protocol version 4 (IPv4) or Internet Protocol version 6 (IPv6) packets. TCP is currently used for a large portion of the World-Wide Web data sent over the Internet today.
TCP is a more complex protocol than its sibling protocol UDP. The connection-oriented nature of the TCP protocol adds a number of complexities to the communication interaction than might be expected, and in fact, TCP adds some functionality that would normally fall under the responsibilities of Session layer services (layer 5 in the 7-layer model, and part of layer 5 Application layer in the Internet 5-layer model). These additions include “state variables” (information on the history of the connection while it’s active), quality of service information, flow and congestion control mechanisms, and message segmentation.
As we saw in looking at UDP, addresses on the Transport layer are called ports. Ports are 16-bit (2-byte) unsigned integer values (between 0 and 65535), and address processes on a host. (Recall that host-level addressing is handled at the Network layer using the Internet Protocol’s addressing schemes – versions 4 and 6.)
Although ports are represented as simple unsigned integer values, all ports are not the same. Port numbers are managed by the Internet Assigned Numbers Authority (IANA) in the Service Name and Transport Protocol Port Numbers Registry. There are three classes of ports:
You will often make use of several of the well-known ports:
In addition, if you use a database, you may also run into vendor registered ports, for example:
When combined with an IP address to address a specific process on a specific host, the combination of port and IP address is called a socket. A socket is an abstract concept representing the address of a process on a host, and many programming language standard libraries have socket abstractions that you can use when building software.
The packet structure of a TCP packet involves a variable-length header containing several fields, which can be between 20 and 60 bytes. There are a number of important fields to consider here:
The payload data if included, follows the header. Its size is controlled by the transaction-determined window size (in the window size header field).
TCP Packet Structure
|------------------------header---------------. . .-----|----------payload-. . .----|
0 4 8 12 16 20 20-60 |
----------------------------------------------. . .-----------------------. . .------
| ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' . . . ' ' | ' ' ' ' ' ' ' ' . . . ' ' |
| 2B| 2B|4 bytes|4 bytes| | | 2B| 2B| 2B| Options | Payload Data |
|Src|Dst| Seq | Ack |H|F|Win|Chk|Urg| 0 to 40 bytes | size controlled by |
|Prt|Prt| Num | Num |L| |Siz|Sum|Ptr|in 4B multiples| by window size |
----------------------------------------------. . .------------------------. . .-----
TCP-based communication is carried out through “transactions”, however these transactions are not the same as what you may understand in other areas like a banking transaction or a database transaction. TCP transactions don’t involve the simultaneous coordination of multiple resources across a communication channel – instead, they are a way of packing several request-response pairs into one connection setup and teardown. Thus, these transactions involve three phases: setup, data transfer, and release. These are managed through messages employing the control flags to identify the purpose of the message.
The control flags one bit each, packed into byte 13 of the header (labelled
F
in the diagram), and are the following:
ECN-CWR
- Explicit Congestion Notification, Congestion Window Reduced (acknowledge signal from receiver)ECN-Echo
- Explicit Congestion Notification, Echo (signal sender to reduce)URG
- Urgent (flags that the Urgent Pointer field is valid, indicating raised priority of the segment)ACK
- Acknowledgement (flags that the Acknowledgement Number field is valid)PSH
- Push (flags that the segment data should not be buffered, but rather sent directly to the application in real-time)RST
- Reset (flags that the connection should be aborted; governed by rules due to TCP connection hijacking)SYN
- Synchronize (flags that the hosts should synchronize sequence numbers and establish a connection)FIN
- Finish (flags that the sender has finished sending data and initiated a close of the connection)Connections are setup through a three-way handshake:
----SYN--->
Server<-SYN,ACK--
Server----ACK--->
ServerFollowing the connection handshake, data transfer begins in the form of request-response pairs between the Client and Server system. Once the data has been completely transferred over possibly many request-response pairs, upon an empty response from the server acknowledging the full amount of data, the connection is closed via a connection release exchange:
<-FIN--
Server--ACK->
Server--FIN->
Server<-ACK--
ServerAs part of a connection setup, the initial sequence numbers, receive buffer space available locally for data, and possibly the maximum segment size (MSS) of each party are shared. MSS is usually the data link MTU minus IP and TCP header sizes, but is sometimes set at 512 or 536 bytes. (MTU is the maximum transmission unit, which we’ll learn more about when we discuss the Internet Protocol, or IP.)
Every byte of data transferred in a TCP transaction is acknowledged (as
well as every non-data request or response) by increment of the sequence
number header field. In this way, the sender can understand what data the
recipient has received so far, and can resend data that has not been
acknowledged if needed. This also allows for some flow control. Data
transfer uses the window size to govern how much data can be sent
unacknowledged. This is often referred to as sliding window flow control,
whereby the window size specified marks the maximum number of bytes that
the sender can send without acknowledgement by the recipient of prior data
sent. When a new acknowledgement is received by the sender, if there is no
gap in the acknowledgement number, the available window for sending data
is increased by the number of bytes acknowledged. Further flow control
is accomplished through the ECN
(explicit congestion control) flag bits
in the packet header, which when set, indicate that the window size should
temporarily be set to zero, preventing further sends until the congestion
is cleared.
Options extend the TCP header, and are used to provide additional information about the segment and how to handle it. Options have a multi-byte structure as follows:
TCP Option
|-------. . .----
0 1 2 |
--------. . .----
| ' ' ' ' |
| | | Option |
|T|L| Data |
| | |(L-2) bytes|
--------. . .----
There are several option types (T
) with varying lengths L
. Note that the
option length (L
) field specifies the length including the initial two bytes,
so option data length is always L - 2
bytes. Various option types and their
meanings, with references, can be found in
IANA’s TCP Option Kind Numbers list.
When parsing options for this assignment, you’ll need to provide both the numeric option type T
as the field type_id
, as well as a string with the option type name. For the option type name field type
, you will use the option name as listed in the Meaning column of Table 12.2 of your text The Illustrated Network. Parsed options should also present their byte length L
as the length
field and any relevant fields (using their abbreviated names) as defined by the RFC listed in Table 12.2 that defines the option. RFCs can be found at rfc-editor.net.
Similar to UDP, the checksum of the TCP header makes use of the IP pesudo-header. A product of the long period during development of the internet when the Network and Transport layer protocols were not distinct, the checksum of a TCP packet is calculated on an augmented version of the packet that includes a pseudo-header of data from the encapsulating IP packet. Because the fields in the IPv4 and IPv6 packet headers differ significantly, so also does the TCP IPv4 pseudo-header from the TCP IPv6 pseudo-header. Both pseudo-headers include the host addresses for source and destination, as well as the protocol ID for the encapsulated packet (TCP for IPv4, but could be different for IPv6), and the TCP length value from the IP packet header. Both pseudo-headers also employ a filler of all zeros to align data to 4-byte boundaries.
The TCP IPv4 and UDP IPv6 pseudo-header structures are included below.
Byte 9 in the IPv4 pseudo-header, labeled Pr
is the Protocol field
of the IPv4 header. Similarly, byte 39 of the IPv6 pseudo-header,
labeled N H
is the Next Header field of the IPv6 packet header.
These fields are 1 byte each, and take unsigned 8-bit integer values
identifying the protocol of the encapsulated packet. Those protocol
numbers
are also managed by IANA. The protocol number for TCP is 6.
UDP IPv4 Pseudo-header Structure
0 4 8 12
-------------------------------------
| ' ' ' | ' ' ' | ' ' ' |
| 4 bytes | 4 bytes |1B|1B| 2B |
| Source | Dest | |Pr| UDP |
| IPv4 | IPv4 |0s| | Len |
-------------------------------------
UDP IPv6 Pseudo-header Structure
0 4 8 12 16 20 24 28 32 36 40
---------------------------------------------------------------------------------
| ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' | ' ' ' |
| 16 bytes | 16 bytes | TCP | |N|
| Source IPv6 Address | Destination IPv6 Address | Len | |H|
| | | | 0s | |
---------------------------------------------------------------------------------
The relevant pseudo-header is attached at the beginning of the packet, before the TCP header, and the checksum field of the TCP header is zero-filled. Using that data, the checksum is then calculated as the 16-bit one’s compliment of the one’s compliment sum of the combined data.
You can use the createChecksum
function of the raw-socket
Node.js
package
to compute the proper checksum for the data.
To complete this assignment, you need to write the body of the parse
function defined and exported from index.js
. You do not need to worry
about asynchronous operations for this – just be able to parse the
incoming byte Buffer
(s) using the TCP protocol.
Your function should return a JavaScript object with the fields and structure specified below. Expected data types and descriptions are included in parentheses.
{
protocol: "TCP",
header: {
destination_port: (16-bit unsigned integer value),
source_port: (16-bit unsigned integer value),
sequence_number: (32-bit unsigned integer value),
acknowledgement_number: (32-bit unsigned integer value),
header_length: (4-bit unsigned integer value),
header_bytes: (header_length value, converted to units of bytes),
control_flags: {
ECN_CWR: (boolean, 0 = false, 1 = true),
ECN_ECHO: (boolean, 0 = false, 1 = true),
URG: (boolean, 0 = false, 1 = true),
ACK: (boolean, 0 = false, 1 = true),
PSH: (boolean, 0 = false, 1 = true),
RST: (boolean, 0 = false, 1 = true),
SYN: (boolean, 0 = false, 1 = true),
FIN: (boolean, 0 = false, 1 = true)
},
window_size: (16-bit unsigned integer value),
checksum: (16-bit 1's compliment checksum including IP pseudo-header),
urgent_pointer: (16-bit unsigned integer values),
options: [
(an object for each option with relevant fields:
{
type_id: (numeric type as unsigned 8-bit integer),
type: (string, type description per "Meaning" column of Table 12.2 in your textbook),
length: (byte length of the option as unsigned 8-bit integer if relevant),
(...other relevant fields, as defined by the RFC defining the option)
})
]
},
pseudo_header: {
pseudo_header_protocol: ("IPv4" or "IPv6"),
source_ip: (IPv4 or IPv6 address),
destination_ip: (IPv4 or IPv6 address),
protocol: (unsigned integer value protocol identifier),
length: (TCP packet length, unsigned integer value)
},
payload: (payload data in binary format as an Buffer with appropriate length),
checksum_valid: (boolean, true if checksum is valid for data in packet)
}
Once this is complete and passing tests, copy this project into a new folder lib/tcp
in
your Assignment A2 project (similar to what you did with the Assignment A1 code in the
lib/ethernet
folder). Then, use this to parse the payload from UDP packets found by your
Assignment 2 async parser, and replace the payload
key’s current Buffer
value with the
object structure above instead.
Note that you’ll need to construct a couple dummy Ethernet frames that contain TCP data. The simplest way to do this is just to capture a few packets on your computer. If that’s too difficult, you can just generate it by following the frame and packet formats.
While you must make your implementation pass automated tests that
will only use the exported parse
function, you will likely want
to create several additional functions to help with parsing the data.
Each of these functions should be well-tested (repeatably via automation),
so that you can be confident of the accuracy and error-free quality of
your parsing code. Each of these functions should also include relevant
documentation in JSdoc format about why they exist,
including expected inputs and outputs with data types.
In this repo, you will find a lib
folder which contains several things
that should be helpful:
tcp.js
file - this is where you should put the protocol-specific
parsing code you writeIn this assignment (as in prior assignments in this course), you’ll be
working with binary data in JavaScript. The interface for this work
will almost always be the Buffer
class and its subclasses. Get to know
the Buffer
class as soon as possible.
In particular, you’ll need to be very familiar with the methods to read
various length unsigned integers, including the little endian (LE) and
big endian (BE) variants and how to choose which variant you need, and the
subarray
method, as well as the typed subclasses of Buffer
.
To work with individual bits, you’ll need to take a byte and bit-shift or
bit-mask it to get the specific bit you’re looking for. For example, you
to get the third bit from the left in 0x6d = 109 = 0b01101101
, you would
could do this by:
0b00100000
.AND
operation
between the byte you’re extracting from and the bit mask you created.
In JavaScript, this example looks like: 0x6d & 0b00100000
.(0x6d & 0b00100000) >> 5
With this process, you can extract the value of a specific bit (a 0
or 1
),
and can then convert that value to a boolean value by comparing it with 1
.
All together, the example would look like this:
const flagsField = 0x6d; // This would be whatever you read from your packet.
const bit3Value = (flagsField & 0b00100000) >> 5 === 1;
Note that if you know the base-10 values of these bit mask binary numbers, you can also use those, simplifying the code a bit:
const flagsField = 0x6d; // This would be whatever you read from your packet.
const bit3Value = (flagsField & 32) >> 5 === 1;
As with Assignments A1 and A4, in order to get started with the assignment, you’ll want to do the following things:
raw-socket
library’s createChecksum functionindex.js
and lib/tcp.js
Run the following at the command line from within the project directory (use cd <path>
, replacing
<path>
with the folder path to your project directory, to get there):
nvm install 12.19
nvm use 12.19
npm install
npm test
During development, you may wish to run the tests in watch mode, so that each time you save a file, the tests that file affects will run. To do this, you can use:
npm test -- --watch
This assignment will also automatically check your code style for readability. To run those tests at your own command line, you can use:
npm run lint
You must submit your changes as commits to the main
branch on the repository.
Github Classroom will create a pull request on the repository for you, titled
Feedback. As you push your commits on the main branch up to Github, they
will be added to the activity on this pull request.
In addition to the synchronous mechanism of requesting help via office hours appointments, this pull request will be your mechanism for asking questions and requesting help asynchronously during the course of this assignment. I will also use this pull request to provide feedback on your work. I will provide feedback on the completed assignment within a week of the due date of the assignment. If you push your code earlier than the due date, I will try to provide feedback as needed earlier.
I suggest that you push your work to Github as you make commits, and that you make
commits frequently as you work on the assignment. This way, if you have questions,
I will be able to review your work-in-progress and give more relevant answers and
feedback. If you have a question specific to a particular area of the code, note that
you can add comments inline on the pull request by clicking on the Files changed tab
of the pull request, then clicking the little blue +
icon that appears when you hover
over a specific line of code.
I will do my best to respond to questions posed during the course of the assignment with
in a day of the ask. If you want to ask a question or request early feedback, please tag
me in a comment on the pull request: @nihonjinrxs
.
Good luck, and I look forward to seeing what you create!


--- layout: archive title: Zulip Chat Archive permalink: /stream/113488-general/topic/dependent.20finsupp.html ---
I want to make finsupp dependent, and then build the current finsupp as a special case. Is this a good idea?
I thought to suggest this as part of the direct sum PR :-)
@Johannes Hölzl I'm not sure what to do with this. finsupp is widely used. should I make a separate file?
Yes. Start with a separate file where you generalize from direct sum to dfinsupp
, i.e. from [Π i, module R (β i)]
to [Π i, has_zero (β i)]
.
problem. the simp lemmas now require higher order unification, rendering them useless
@Johannes Hölzl should I make finsupp dependent on dfinsupp?
Yes, I think so. But let's first add dfinsupp
and then see.
@Johannes Hölzl there's one thing though. now for finsupp from A to B, we need decidable equality on B
I suspect that if we define finsupp differently, then we won't need decidbale equlaity on B
should I work on that?
I guess this is your quotient construction, the one you use in your direct sums construction? If you want to use it, that's fine for me.
yes, ok, thanks
@Johannes Hölzl I'm in a dilemma: I can either define dfinsupp.sum with the same arguments, but it would require decidable equality on the codomains; or I can define dfinsupp.sum without decidable equality on the codomains, but it would require me to provide an extra argument that the input function maps 0 to 0.
I would go for the latter.
Alternatively, provide both...
What's your motivation for defining dfinsupp? Is there some application you have in mind?
Constructive direct sums, I think
oh that would make sense, Kenny was talking to me about direct sums recently.
Since the types are usually fixed and it's super annoying to always attach the f 0 = 0
proof: assume decidability of the codomain for sum
.
@Johannes Hölzl sometimes we don't actually need decidable equality in general, we just need to determine if something is zero. What should I do in that case?
you can say that (x = 0)
and (0 = x)
are decidable.
Should I make a new typeclass for that? decidable_zero
decidable_pred (eq 0)
works
if I prove that decidable_eq \to decidable_pred (eq 0)
, will Lean be able to use it?
If you look at decidable_eq
, decidable_pred
and decidable_rel
, they are simply definitions on top of decidable
. You only need to do the same for 0
if it's pervasive enough
well, option
has decidable "none"
with_zero
has decidable zero
if I prove that
decidable_eq \to decidable_pred (eq 0)
, will Lean be able to use it?
I think so
oh I don't even need to prove it!
instance {γ : Type w} [has_zero γ] [decidable_eq γ] : decidable_pred (eq (0 : γ)) := by apply_instance
Lean is smart
instance {γ : Type w} [has_zero γ] [decidable_pred (eq (0 : γ))] : decidable_pred (λ x, x = 0) := by apply_instance
I can't believe this, something must be wrong
eq 0
is \lam x, eq 0 x
which is \lam x, 0 = x
the other one is (= 0)
which is \lam x, x = 0
yeah the second one is wrong
Lean interpreted 0
as natural
So how does Lean prove the instances for you?
I proved the second one now
the first one is just solve by elim
Why does that work?
Oh, ok, it's proving less than I thought
@Johannes Hölzl commited to the PR
What is preventing this 22-day-old pull request from being merged?
People being busy?
You'll understand, one day :-)
Are there any problems with my PR? @Mario Carneiro
It conflicts with the module refactor, so don't expect this to be merged until after that
But after the module refactor Kenny will be too busy working on algebraic closure to be able to fix up this PR.
ok no problem
{% endraw %}Last updated: Apr 24 2020 at 19:02 UTC


Spotify
Premium
Help
Download
Sign up
Log In
Music for everyone.
Millions of songs. No credit card needed.
GET SPOTIFY FREE


the system is relay on one small library @ [ROOT]/code/package/xp/common/*
the library file are set up to be loaded by system using lazy loader.([ROOT]/code/package/loader.php


The advantage that a big city can provide is communication. When you leave your apartment early in the morning and live through the day you have a plenty of chances to chat with lots of interesting people. These talks inspire you - for example, for a great idea at the end of the day. And good ideas usually mean money. Also humans are very social creatures and friendly communication with others gives them that vital feeling of happiness. It is what we all need. That’s why modern cities, such as Barcelona, organize its urban space to suit the people need for communication in a best way.
Kyiv reminds of New York at the end of 19th century, when the city had being built without any regulations. Theoretically there are rules, city plans and even “General City Plan”, but practically developers build wherever they have managed to get a piece of land – partially because of corruption, partially because of weak judicial and law enforcement systems. And they build as many floors as they can. After all the cost per meter in the high rise buildings is less than in the lower ones.
Eventually The City of New York established plenty of rules and regulations on what, where and how could be built, because the city exists for people and not for real estate profits. And now New York is a kind of Kyiv vice versa. Once known as the city of skyscrapers in fact New York is high-rise only in the center. The central part of Manhattan was once built up densely and high, the rest of the city consists mainly of two- or three storeyed buildings.
STRUGGLE FOR LIMITED SPACE
As a rule in any metropolis there are three groups which compete constantly with each other and thus influencing the city’s development.
The first one consists of those who have been living here since their great-great ancestors. Usually they have some real estate, sometimes more than one, which some of them rent out. This category has no sympathy to the “newcomers” and is always oppose to the new buildings, because it means less comfort and lower rent prices for them.
The second is the newcomers themselves. Big cities are growing all over the world. It is a global trend, because more active economy attracts thousands of new people. They create the demand for new dwellings and the developers are trying to satisfy it by any means. There are cities in which new houses are not being built. For example the world press often writes about San Francisco. Because of high estate prices some people cannot afford to rent the apartment here anymore.
The third party is represented by local activists of left ideology who oppose new constructions and protect local parks perseverance as well as pedestrian areas and other goodies. For them public space is much more important than business development or the demand for housing to be satisfied.
All of these groups are represented in Kyiv. But if in San Francisco there is practically no new buildings at all in Kyiv the situation is quit opposite – there is no such spot, where the construction, usually of a huge high rise, cannot be started. And it is another extreme.
Popular urban theory demonstrates that lower houses are more comfortable for living than the high multistorey buildings. Optimal height for human to feel comfortable is the 7th floor as maximum one to live at. This is a level at which one can recognize the people on the ground, to identify a familiar face. Urban expert Hryhoriy Melnychuk says: “The lower the person lives the more chances for her or him communicating with the neighbors and caring for the mutual space on the ground”.
The houses higher than 10 storeys differ in color. Full city models can be viewed at the end of this text.
Київ. Найвища будівля на Кловському узвозі, 7. 47 поверхів, 168 м, 2012
Берлін. Park Inn by Radisson Berlin Alexanderplatz. 41 поверхи, 149.5 м, 1970
Мангеттен. Freedom Tower. 104 поверхи, 541.32 м , 2013
Варшава. Pałac Kultury i Nauki. 42 поверхи, 231 м, 1955
Бухарест. Floreasca City Center. 37 поверхи, 137 м, 2013
in height or in width
Look at Kyiv city map and you’ll notice that inside its administrative borders the capital has plenty of free land and could have been growing in its width, not in the height. But this type of increase is more costly because then the new roads, housing communications and public transport lines are needed. Sometime it also takes deforestation to be made. With such approach new dwellings will be more expensive than the apartments that are built in high rises now. Taking into account the current costs and the resources saving it is better to grow in height.
But if we do care about nice and comfort city to live in, the one that attracts talents, it would be better to grow in width though it is more expensive. Any start-up owner can earn the same income either in Kyiv or in Berlin – and he’ll be making a choice of comfort. After all a better more expensive dwelling more probably will stay of high value or will even grow in price while the cheap one will be becoming cheaper.
The theory claims that residential areas with high rise buildings can eventually turn into dangerous ghettos, whereas organized urban space with lower buildings creates positive social connections which promote the adequate behavior.
Children, who live with their parents in these multistoried buildings now, will grow up and, as it happens in life, not all of them will succeed. Thus they’ll be staying at home, drinking alcohol and taking drugs, wandering around looking for troubles. The buildings are huge with lots of apartments, social connections between its inhabitants are very weak, nobody knows anyone and there are no restraints for the hooligan.
Grygoriy Melnychuk explains: “In high rise areas, specially the residential ones, public space is occupied by those who do not leave for work every day. Though there are few of them, but still it is enough to organize a street gang. People with a different lifestyle get bothered and feel uncomfortable living in the same space with them”.
The inner planning also matters: even in high rise building entrances with no more than 4-6 apartments on one floor the probability of crime is less because people know each other better. In general poor communication between neighbors increases the probability of different crimes.
But hardly someone reads about urban theories before purchasing their apartment, price per meter is what they are interested in first. And the price is lower in high rise buildings. According to Anton Oliynyk, city architect who designs houses in Kyiv, all developers want the same – to pour the concrete footing and then to build the storeys replicating them one over another.
what about other cities
New York is an antonym city to Kyiv. It extends over a huge area thus preserving its low buildings, explains Anton Oliynyk. The world known city of skyscrapers is very high only in its central part. Manhattan has ideal natural conditions to build skyscrappers – low seismic activity and less probability for earthquakes.
All top companies want to have their headquarters there. But skyscrapers do not extend over the whole city. Distant areas consist mostly of two-three floors in height. In Kyiv the situation is opposite to that: residential areas such as Poznyaky, Darnytsya, Troyeschyna are covered with high rise buildings in which people live.
New York skyscrapers grew intensely at the beginning of the 20th century due to a number of factors: the land was rising in price, the possibilities for building in width shrank and the city began to grow in height. Also the technologies were developed that had made the higher construction, with all the necessary communications such as water pipes, possible.
Over time, American skyscrapers became a true symbol of the country's technological power.
Today in Europe high rise buildings are found mostly in business areas which are named variously in different cities: business center, modern center, The City. Business areas are separated from the historical center – though usually they are close to it, but the center itself is protected from high rise construction.
In Warsaw a lot of skyscrapers are being constructed but most of them are grouped at one place: in the city center, around The Palace of Culture and Science widely known as “the Stalin’s high rise”. Special line of Warsaw subway has been built to this area. The rest of the city preserves traditional low building.
In Berlin there are some areas in which nothing new can be built. Most of the buildings around the Bundestag have maximum 5-7 floors in height. Anton notes that in general the Germans are more open to combine the old architecture with modern pieces. But while doing so they are held to the restrictions that regulate the height and the density of the construction. Regulated construction is also complemented by comfortable infrastructure such as subway and bikeways.
An architect Anton Oliynyk believes that Kyiv also must follow this way: to preserve the historical part and to provide the opportunity for business to develop the city concentrating high rise buildings in particular places.
By clicking here you can watch all city models in 3D. Each city model can be enlarged and rotated.


%= processTemplate('_head') %>
Thank you for taking the time to rate our service.
Your email address will not be published.
Submit Testimonial
Cancel


Leveraging mobile to connect citizens with a global ecosystem of information and services.
Employing new sensors and analytics tools to lower the cost of high quality, actionable information.
Applying social and collaboration tools to build networks and promote a new kind of work.


NIKE BASKETBALL AND JORDAN BRAND ATHLETES PAY TRIBUTE TO DR. MARTIN LUTHER KING JR.
In celebration of Martin Luther King Jr., and the principles of equality and service that he stood for, many Nike and Jordan Brand athletes play today in solidarity in special all-black PEs.
Nike Basketball’s MLK Day PEs include the LEBRON 14, KD9, KYRIE 3, PG1, KOBE A.D., Soldier 10, Hyperdunk, Audacity, Zoom Rev and Zoom Live.
NIKE HYPERVENOM 3
Nike’s new Hypervenom 3 football boots were designed to do two things above all else: cut and strike. With these critical components of goal scoring in mind, Hypervenom underwent a radical makeover that includes a shift to Flyknit and the introduction of a new plate..
“This is a finisher’s boot,” explains Max Blau, VP of Nike Football Footwear. “Every component of this boot was built for goals.”
The emphasis on scoring is most evident in the strike zone of the boot, which contains multi-layered Poron® foam pods integrated into a Flyknit upper. The pods are rate dependent, creating a dampening soft touch at low velocity contact, but activating rigidity when striking the ball with high velocity to create a firm launching pad for a true strike.


## Mako can find this base file because it's in the settings.py -> MAKO_TEMPLATES_DIRS list <%inherit file="base_template.htm" /> <%block name="main"> <% %>


About me
{% capture home-about %}{% include content/home-about.md %}{% endcapture %}
{{ home-about | markdownify }}
Writing
{% capture home-projects %}
{% include content/home-writing.md %}
{% endcapture %}
{{ home-projects | markdownify }}
Research
{% capture home-projects %}
{% include content/home-projects.md %}
{% endcapture %}
{{ home-projects | markdownify }}
Teaching
{% capture home-projects %}
{% include content/home-teaching.md %}
{% endcapture %}
{{ home-projects | markdownify }}


Before Change
["feature" in vdata for v, vdata in G.nodes(data=True)]
)
if not nodes_have_features:
print("Warning: Not all nodes have a "feature" attribute.")
print("Warning: This is required for the GraphSAGE mapper.")
// Check that all nodes have features of the same size
// Note: if there are no features in the nodes this will be 1!
After Change
}
// Check all nodes have features
if None in feature_sizes:
raise RuntimeError(
"Not all nodes have a "feature" attribute: "
"this is required for the GraphSAGE mapper."
)
// Sanity checks on feature sizes
if feature_size:
if feature_size not in feature_sizes:
raise RuntimeWarning(
"Specified feature size doesn"t match graph features"


I am interested to understand the feasibility of using two Emontx’s to measure voltage and current simultaneously and hopefully also increase the sampling frequency.
The idea I am sure is not new and has probably been discussed before, but I could not find anything here, although seeing Martin Robert’s Full-fat 3-phase monitor certainly inspired this post.
Martin’s monitor shows that in principle, it can be done; however, I’d be interested in any thoughts on the likely maximum sampling frequency and will the communication between emontx’s be a bottleneck?
Would an interrupt approach work and perhaps could it even correct for the relative phase error of the sensors?
Re: Two Emontx’s for simultaneous V & I measurement
If I'm reading you correctly, you will have one emonTx as the master reading voltage (say), and a second one reading current. You want to synchronise the two to read at the same instant?
The delay between consecutive readings (V & I) using both the standard library and interrupts is only one third of the phase shift problem. The other two thirds are phase shifts within the transducers, and unfortunately those vary with voltage and current respectively. Eliminating the delay won't necessarily improve things, because with a suitable combination of voltage and current, the difference can come very close to the time delay between readings, and then you'd need no correction at all.
Ideally, you should have a 2-dimensional lookup table and apply a correction based on the expected combined phase error at the voltage and current that you're measuring.
Fortunately, phase errors make little difference to the measurements at 'normal' power factors, and only become critical as the power factor gets small with highly reactive loads.
Re: Two Emontx’s for simultaneous V & I measurement
Robert, Yes two Emontx's one measuring voltage and one measuring current, synchronised either measuring at the same time or timed to correct for the relative phase shift in the sensors.
The objective would be two fold; firstly and hopefully to double sample frequency; secondly have better control of the timing of V & I samples. I understand your points about phase shifts within the transducers and my thinking was that as you say with a look up table or function suitable timing could be determined such that V & I pairs are corrected for relative transducer phase shift.
I'm really only interested in a more accurate real power / energy measurement here and although I haven't quantified it, sampling V and I at different points in time will lead to an error.
I've built a breadboard version of the AVR465 variable gain current front end connected with an emontx to measure voltage. This works well and I was about to build this as a strip board circuit, when it occurred to me to go a step further and add another processor.
Before making too big a step I thought I'd investigate using two connected Emontx's one measuring voltage and the other with conventional current front end to prove the concept.
edit I'm not using any of the OEM library calculation methods, but am using my own continuous integration method to calculate energy directly.
Re: Two Emontx’s for simultaneous V & I measurement
Thanks for clarifying. (I mentioned the library purely as a common point of reference).
By far the biggest source of errors we see is digital noise coming from the processor itself, which of course makes little difference at full power but unfortunately many people expect 5% accuracy with one or two counts of current at the input! The variable gain front end should help quite a lot there, provided the noise gets in where I think, which is via AVref.

You do stand to double the number of samples, up to about 100 per cycle, which should capture the 49th harmonic. I think there might not be much power up there. (I have churned out a fair bit of power at the 23rd and 25th with a 12/24 pulse thyristor drive, but there aren't many of those around now.) I believe your meter only needs to include up to the 20th in its measurements.
I'll be interested to see how this turns out, especially if you are able do a parallel comparison between your rig and a standard emonTx (using Martin's code to give continuous energy measurement).
Re: Two Emontx’s for simultaneous V & I measurement
By far the biggest source of errors we see is digital noise coming from the processor itself
I made the assumption the noise is a constant offset and corrected for it with my calibration method. Instead of using just a coefficient for calibration I have y=ax+b type calibration. This enables a zero reading when there is no load and also improves the accuracy throughout the range.
I obtained the calibration coefficient and offset using linear regression, first measuring current for a number of loads, then doing the same for power. The fit is much better using a y=ax+b function than for the emonlib method of y=ax .
It's a fudge, but seems to improve accuracy and can remove the annoying power reading when there is none. Is there a reason why this approach has not been used in the emonlib?
I note the AVR465 just removes values below a certain level, but I don't agree with this approach.
Re: Two Emontx’s for simultaneous V & I measurement
I note the AVR465 just removes values below a certain level, but I don't agree with this approach.
I doubt that has - primarily - much to do with noise (though it sweeps it under the carpet). I've not checked the numbers, but wouldn't it be emulating the friction (anti-creep) found in a mechanical meter?
I've no idea why your algorithm hasn't been used. If the noise is relatively constant, then it's a valid approximation for power and energy. It won't work in detail because the noise 'current' appears to have a variable phase so power and apparent power are affected differently.
Re: Two Emontx’s for simultaneous V & I measurement
I think the main problem with what I'm doing is that it is a correction after the High Pass Filter. The HPF should in theory remove any DC offset including the noise if it were indeed a constant. However we are dealing with a 10 bit ADC and at low current levels there inevitably is an offset. So my calibration effectively removes this offset. At this point you could argue its not noise but a lack of resolution.
It seems to achieve more accurate results for real power and apparent power; therefore PF as well :-)
I don't really understand what you mean by 'It won't work in detail because the noise 'current' appears to have a variable phase so power and apparent power are affected differently.'
To clarify I'm only calibrating current and voltage with a coefficient and an offset. However since I can only apply different loads thus varying the current, I calibrate that directly then calibrate power indirectly with a voltage coefficient and an offset.
edit: I do appreciate as I said it is a fudge, and ideally noise or errors should be removed at source or as close as possible. But I have not yet found a better way and can't see why any subsequent calculation should be incorrect; its just a more refined calibration.
Re: Two Emontx’s for simultaneous V & I measurement
We're talking about different things then. I really meant digital noise - high frequency signals emanating from the digital part of the processor, and as such it goes straight through the H.P. filter. So when it gets rectified by the rms calculation, it appears as a randomly varying current that is not related to the voltage input, hence (and this is where it gets difficult to explain) it appears to have an indeterminate and varying phase angle that depends on where the higher random samples line up against the voltage wave. But when you multiply the current samples by the voltage samples to get power, the rectification effect disappears.
Now we pick up your argument and what I think you're saying that after you have calculated energy over the sample period and turned it into power, the averaging process has turned the noise into a sensibly constant standing power that you can legitimately regard as an offset. I'm not disagreeing there. What I was saying is the apparent noise power is significantly greater than the real noise power ('apparent' and 'real' in the sense of the phasor diagram) because the noise current is not correlated with the voltage. Therefore you need different rules for power, apparent power and current.
And not forgetting that where the midpoint bias sits in relation to ADC steps can be significant.
Re: Two Emontx’s for simultaneous V & I measurement
Ok I understand your point.
I think the difference in apparent noise power to real noise power is there with either the emonlib calibration method or my method. I guess the argument is whether I'm making it worse or better.
My belief before I understood your point was that I was improving the calibration and that would improve the real and apparent power accuracy. I need to check my results and think about it some more.


Dear CP_FIRSTNAME,
Thank you for giving me the opportunity of showing you a bit of the Spanish cooking tradition.
You will shortly receive an email from Viator to rate your trip to Madrid (subject "Review Your Madrid Tour!"). We’d be grateful if you could open it and write a review about your experience at Cooking Point. Tripadvisor uses these ratings to promote activities among future visitors to Madrid.
Alternatively, you can use your preferred social network to rate us:
We are at your disposal to solve any issue you might find when cooking our recipes at home.
You can download the recipes from this link.
Warm regards,
CP_COOK


Water released from Shanmuganadhi dam
It will benefit lands in Uthamapalayam taluk
by Staff ReporterTHENI
Water for irrigation was released from the Shanmuganadhi dam near here on Monday. Collector M. Pallavi Baldev released the water that would benefit lands in Uthamapalayam taluk.
She said that a daily quantum of 14.47 mcft of water will be released for the next 50 days, that will benefit 1,640 acres in eight revenue villages — Rayappanpatti, Mallingapuram, Chinna Ovulapuram, Erasakkanayakkanur, Kanniservaipatti, Alagapuri, Vellaiammalpuram and Odaipatti under Uthamapalayam taluk.
The Collector urged farmers to make judicious use of the water released and achieve greater yield.
Uthamapalayam Tahsildar Udhayarani, Assistant Executive Engineer, PWD (WRO), Mokkamayan and many farmers took part in the event.
Kiruthumal channel
Meanwhile, a quantum of 600 cusecs of water from the Vaigai river was released from the Viraganoor regulator to meet the drinking water needs of Tiruchuli taluk in Virudhunagar district, on Monday.
“The quantum will be maintain for the six days, after which it will be reduced to 400 cusecs for the next four days. The water will benefit tanks and recharge ground water in Tiruchuli. In total, 450 mcft was water is being released for the Kiruthumal sub basin,” said Selvam, Sub-Divisional Officer, Vaigai basin.


--- layout: post title: Ship or a raft? date: 2010-08-20 10:26:19.000000000 +02:00 categories: - linux tags: [] status: publish type: post published: true meta: _edit_last: '1' _wp_old_slug: '' author: ---
"I guess the moment you transform from a raft to a ship, the sailing becomes smooth, sometimes too smooth for those in it for the thrill."
This was a reply to my mail to one of my cousins. I was telling her how spending one year in Yahoo! has been a dream like. Almost everything the way you want it. However still something being amiss. The urgency, the pressure, the hand twisting is somehow amiss. And today I came across the blog of a five year old veteran of Yahoo!, who will be an ex-Yahoo! in another eight hours about his one year in Yahoo!
One of the lines from his post:
But I seem to crave for real work pressure. At the end of the day I just want to go home feeling happy that I made a difference.
And I can empathise with this condition. For me, that level of despair came in two steps. Despair is too strong a word in here but still.
The first one came in some three months after joining. It was too much like sunlab. For those who know me, you know what it means. The complete freedom to do whatever you want.
And then, another six months down the lane, the realisation that I am getting too comfortable. There is absolutely no pain in here, no worries. But then, down the lane, it can't be good.
Yahoo! is too good a company. A dream to work with. It takes care of its employees the way your parents take care of you in college. You ve to work and yet you can have all the fun. See, how many students claim they managed to pass out of college without studying? Yet we know that they did study though maybe not to the full extent. They underperformed and yet graduated. Y! is a bit like that. Its resources are under-utilised. Unfortunately, the financial resources are a bit strained.
Maybe I am saying words I shouldn't. Lets see how things turn out few months down the lane.


Home
Hobbies
About
Our License
Collabteam.GitHub.io
Follow me on
GitHub
This is the official website of CollabTeam.
CollabTeam.github.io
This is the official website of CollabTeam
We are a team who work on coding together.


Introduction to Jenkins
"An extendable open source continuous integration server" Jenkins is open source and watched over by creator Kohsuke Kawaguchi
Using Jenkins as told by the Jenkins wiki.
I love to use Jenkins because of this philosophy "If something hurts, do it more often". Build up your endurance and make an action so commonplace that you don't notice it anymore. Automating repetitive tasks with Jenkins is my favorite way to make tasks commonplace.
when you have your deployment process under control, you can make your servers dance up and down
— patrickdebois (@patrickdebois) January 5, 2015
How to build your project
Here's the secret about Jenkins: Jenkins is just doing what you do locally to build your app.
You're building a Java app with Maven? That's all Jenkins is doing too. Running the same exact mvn
command as you. Your build engineers are not mind readers. They'll need to learn what you know and what you've built.
Does you application require a half dozen special arguments be passed in to the mvn
command that builds it? Then you still need to pass them to your mvn
in Jenkins. Jenkins is magical, but not *that* magical.
You are able to use any custom shell script your team has to build your application. Jenkins can support this by checking the script out with your code and running your build commands.
Same thing for Ant, Gradle or node.js (with Grunt or Gulp task runners).
What you do locally to build your app is what you will have Jenkins configured to do.
After the initial setup, Jenkins jobs can be automated as much as the law allows.
- Check code in.
- It is built.
- It is deployed.
- The app server is bounced.
- Integration tests verify the deployed app.
- Deploy app to next shared app in your build pipeline. Dev -> QA or QA -> Stage etc.
With Jenkins you do step 1 and watch the rest happen.
What else does Jenkins do?
More like - what doesn't Jenkins do? #amirite
The built in functionality for building your application is arguably trumped by the added functionality of the 922 (and growing) plugins that exist for Jenkins servers.
Like I said with npm (and Chef before that) - it's all been done before!
But some plugins are better than others. Check for key stats like:
- Number of downloads.
- Last updated.
- Start with the web interface for your Jenkins server.
- Graduate to managing your plugins with Chef!
- Chef Identity (I wrote this one, so it gets top billing)
- SCM Sync Configuration
- Active Directory
- Jabber Integration
- Jira Integration
- Artifactory Integration
- Git/Perforce
- Embeddable-build-status
- Download the jar
java -jar jenkins.war
- Load Jenkins
- Create a job
- Pick your source code location
- Set how often to look for source code changes
- Execute your build command(s)
- Execute your post build steps
- Use the Long Term Support version for critical build servers.
- Jenkins runs as a user on the build server, with their own SSH keys, etc.
- If you're using Node.js/Ruby/Python you need to install that on the build server, and put it in the $PATH
- Creating new build jobs. As your Jenkins usage matures, this will be scripted with plugins.
- The
jenkins.war
is already on the project's Vagrant VM in the user's home directory. - Get in to the home directory of the VM to find Jenkins.
cd ~/jenkins
- Let's do the most basic startup for Jenkins with a
java -jar jenkins.war
and leave the console open. We will need the output. - Open Jenkins in your browser and complete the installation prompts accepting the defaults.
- Create a new item (from the left menu) that is a Freestyle job named
Docker Images
has a Build Step of a Execute Shell command ofsudo docker images
. and verify output. - Create a second item that is Freestyle job named
Docker Build
that will build your Docker image from before. - Have the Execute Shell command start with a
cd /vagrant/docker
to use our local Dockerfile from the previous section (so we don't have to check out the code again). - Run our
build
command again, but change the tag so we end up withsudo docker build -t jenkins-atb ./
added to our local shell command. - Time to run our
Docker Build
Jenkins job and watch the output. - Now, go back and rerun our first job that listed our images and look for the new
jenkins-atb
image in the list! - Since Jenkins is running as an active process, you can
ctrl-C
to shutdown the server.
Up and running with Jenkins
But you might be configuring your build jobs for days to get things tweaked just right!
Jenkins Challenges
Further Jenkins learning
Cuddle up with a nice book.
This book will walk you through server setup and give you numerous examples of setting up very precise features in Jenkins with both built in features and plugins. Highly recommended.
 Read it, learn it, love it. But to execute on it - pick just one small thing from one chapter you can do to improve your workflow. Rinse and repeat. Which sounds exactly like what? Agile software development. Small chunks, quick feedback and evaluation.
Workout
We are going to complete the following actions:


Blockchain Development Intro
using Bitcoin and Ethereum
Francesco @makevoid Canessa
Blockchain
Private
-
Hosting
-
Backups
-
Privacy
Public
-
Open access
-
Token based
-
Resilient
Blockchain
Bitcoin
-
First, specific for a monetary token
-
Token + OP RETURN
Ethereum
-
Full smart contract functionality
-
Quicker confirmations
Bitcoin
Bitcoin
Monetary Token
OP_RETURN
UI
Bitcoin
BTC - Monetary Token
Remittances
Money transmission - developing countries
ATM / POS / Exchange integration
Micro-Transactions
Donations (multiple-outputs transactions)
Pay-per-Second / Pay-per-View (payment channels)
Bitcoin
OP_RETURN
Immutable data
Generate one keypair (thus one address) for each user
Save and Query JSON assertions
Compute document hashes (images, PDFs)
Bitcoin
TOOLS
Blockcypher API (blockchain API)
bitcore-lib (JS library)
Block explorers (blockchain.info, blockr.io ...)
Bitcoin
bitcore-lib sample code
var bitcore = require('bitcore-lib') var privateKey = new bitcore.PrivateKey() var address = privateKey.toAddress()
Bitcoin
bitcore-lib sample code
var bitcore = require('bitcore-lib') // via browserify if (localStorage.privateKey) { console.log("Private key present in localStorage") console.log("Private key:") console.log(localStorage.privateKey) var address = new bitcore.PrivateKey(localStorage.privateKey.toAddress()) console.log("Address:", address.toString()) } else { var privateKey = new bitcore.PrivateKey() var privateKeyWif = privateKey.toWIF() localStorage.privateKey = privateKeyWif console.log("Private key saved successfully!") }
Bitcoin
blockcypher address API
curl https://api.blockcypher.com/v1/btc/main/addrs/1DEP8i3QJCsomS4BSMY2RpU1upv62aGvhD/full { "address": "1DEP8i3QJCsomS4BSMY2RpU1upv62aGvhD", "total_received": 4433416, "total_sent": 0, "balance": 4433416, "unconfirmed_balance": 0, "final_balance": 4433416, "n_tx": 7, "unconfirmed_n_tx": 0, "final_n_tx": 7, "txs": [ { "block_hash": "0000000000000000af64802c79...", "block_height": 292586, "hash": "b4735a0690dab16b8789fceaf81c511f...", "addresses": [ "18KXZzuC3xvz6upUMQpsZzXrBwNPWZjdSa", "1AAuRETEcHDqL4VM3R97aZHP8DSUHxpkFV", .......
OP_RETURN sample - Read
Query it
curl https://api.blockcypher.com/v1/btc/main/addrs/1NU2Eymu8R7JkTuNiNF35ESB3PLty1vMre/full?confirmations=0 | grep data_string
...
Ethereum
SimpleStorage
a simple ethereum contract
contract SimpleStorage { bytes32 data; function set(bytes32 _data) { data = _data; } function get() constant returns (bytes32 _data) { return data; } }
SimpleStorage
a simple ethereum contract
contract SimpleStorage { bytes32 public data; function set(bytes32 _data) { data = _data; } }
Eth-Lock contract
unlock contract based on third-party message
contract EthLock { uint lockedFundsAmount; address public owner = 0x1234; address public recipient = 0x12345; function unlockFunds() { if(msg.sender == owner) { recipient.send(lockedFundsAmount); } } }
Eth-Lock contract
configurable
contract EthLock { uint lockedFundsAmount; address public owner; address public recipient; function EthLock(address _recipient, address _owner) { recipient = _recipient; owner = _owner; } function unlockFunds() { if(msg.sender == owner) { recipient.send(lockedFundsAmount); } } }
Eth-Lock contract
configurable
// pragma solidity ^0.4.8 contract EthLock { uint lockedFundsAmount; address public owner = 0x6e57c3777d6ca24c26bde462d22b16e41e5fe5f2; address public recipient = 0x6e57c3777d6ca24c26bde462d22b16e41e5fe5f2; function unlockFunds() { if(msg.sender == owner) { recipient.send(lockedFundsAmount); } } } // 0xbe3741bc0ecc248cb15d778ecdf1aa59887fc6ef


Brand
Home
About
Services
Web Design
Web Development
Brand Marketing
SEO and Optimizing
Planning
Basic Plan
Standard Plan
Premium Plan
Professional Plan
Article
Article One
Article Two
Article Three
Article Four
Article Five
Article Six
Article Seven
Contact
Our Main Articles
Google Account Guide Book
How to create google account
Gmail password Recovery
How to Delete Google Account
Google Account Guide Book
How to create google account
Gmail password Recovery
How to Delete Google Account
Google Account Guide Book
How to create google account
Gmail password Recovery
How to Delete Google Account


I'm not sure if you guys can do it but according to a Battlelog admin they said there is a maximum number of friend requests you can have...So if it's possible can you guys make a tweak where you get to cancel requests and see how many requests you sent?
BrainFooLong
Administrator
Isn't possible by us.
Must be done by DICE.
Greetz


About
Hi there! My name is Theo Okada or “Riesling” on Discord. Thank you for taking the time to look at THOUA. I grew up playing D&D 3.5 and Pathfinder and enjoyed being able to have a creative outlet that I could share with friends. I also enjoyed playing JPRG such as Final Fantasy Tactics and Fire Emblem for the turn-based grid combat. Additionally, I love MMOs such as Final Fantasy XIV for their raids and community. So I wanted to combine my favorite aspects of those games into a tabletop system that people new to the genre could try and for vetern players to modify and customize.
I hope with THOUA new Players are encouraged to try Tabletops and create experiences and stories that the Players’ and GM can enjoy together.
Support
If you would like to support THOUA, all I ask is for you to give feedback on the system on the Discord, share and play it. If you would like to support THOUA to grow it into something more; please go to Near the Resolution and Donate.
Discord Icon Placeholder


50% Off any Large Candle - Every Fragrance!
When you buy one large Jar, Tumbler or Vase Candle
To buy now, copy and paste:
http://links.mkt1917.com/ctt?kn=24&ms=MTI5MDA0ODMS1&r=Mzc1MTMwMDUwMTIS1&b=2&j=NzIzODE0NTIwS0&mt=1&rt=0
Into your browser
Available online and in store now!
9-pc.
Gift tote with lots of favorites
only $25 with $50 purchase
$100 value! Hurry - limited supplies
Only one per transaction
To buy now, copy and paste:
http://links.mkt1917.com/ctt?kn=7&ms=MTI5MDA0ODMS1&r=Mzc1MTMwMDUwMTIS1&b=2&j=NzIzODE0NTIwS0&mt=1&rt=0
Into your browser
To find a store near you, copy and paste:
http://links.mkt1917.com/ctt?kn=19&ms=MTI5MDA0ODMS1&r=Mzc1MTMwMDUwMTIS1&b=2&j=NzIzODE0NTIwS0&mt=1&rt=0
into your browser


Scared of eigenclasses? Unclear on module prepend vs include? You gotta see @zoevkay's talk on Ruby at #osb15 when the video is out!
6/25/2015, 5:34:39 PM
Favs: 3
Retweets: 1
link--- layout: tweet ---
Scared of eigenclasses? Unclear on module prepend vs include? You gotta see @zoevkay's talk on Ruby at #osb15 when the video is out!
6/25/2015, 5:34:39 PM
Favs: 3
Retweets: 1
link


Senior Front-end Developer
TMW is a full-service advertising agency based in Soho. We’d like to hire a talented Front-end Developer to join our experienced technical team.
What we do in the tech team
We develop large, global websites, campaign microsites and mobile applications for our clients, their brands and their campaigns. These projects are varied and often for both national and international advertising campaigns. We strive to always be on the forefront of technology and we use the latest insights and marketing techniques to increase engagement.
What do we expect from you?
You are proud of the work that you do and strive to create high-quality code. You have a good eye for detail and design, and you work proactively to find innovative solutions and developments. You possess an insatiable appetite for learning new skills and are able to take initiative whilst mentoring more junior members of the tech team.
In the role of Front-end Developer you will:
- Build the front-end for global websites, campaigns and web apps.
- Collaborate with Graphic Designers, Front-end and Back-end Developers.
- Take responsibility for your work and the team’s efforts, together with the production manager.
- Use & Contribute to Kickoff, our front-end framework. See http://trykickoff.com
- Mentor more Junior members of the tech team, making sure knowledge is shared.
Required skills:
- 5+ years professional experience in front-end development
- Semantic HTML5 markup
- CSS (especially CSS3) and a pre-processor such as SASS or LESS
- Knowledge of CSS methodologies such as OOCSS, BEM, SMACSS, etc.
- Native JavaScript
- Node.js & npm
- JavaScript framework experience such as Angular, Ember, React, Backbone etc.
- jQuery
- Experience with Social API’s
- Understanding of Analytic tools & latest GTM workings
- Excellent experience working with responsive design
- An understanding of Application development using tools such as Cordova
- Automation with task runners such as Grunt, Gulp, or Webpack
- Excellent understanding of accessibility on the web, WCAG/WAI/ARIA
- Version control systems – we use Git and (rarely) SVN
- High interest in bleeding-edge front-end technologies
- A in-depth understanding of SEO best practices for both web design and development
- Confidence and competency in front of internal or external clients (we’re not looking for a business development superstar, though!)
- Excellent written and verbal communication skills in the English language
Desirable skills:
- A Github profile with examples of open-source contributions
- Knowledge of design principles; typography, user interfaces, web standards and usability
- Experience with Browserify
- JavaScript testing frameworks.
- A portfolio demonstrating clean and compliant code.
- Experience with hardware-hacking, Leap motion, interactive installations etc.
- Experience with Application development (IOS, Android)
If you think you're up to the task, we'd love to hear from you. In return for your commitment to craft and code, we offer you some of the most challenging projects out there.
To join our team and for this role in particular please get in touch ASAP – We are interviewing now!
Apply now


We're sorry but the Plasmachain Validator Dashboard doesn't work properly without JavaScript enabled. Please enable it to continue.


New output, imports will bring onion prices under control in 10 days, says commerce minister
by bdnews24.comThe government will be able to bring onion prices “fully” under control in 10 days, thanks to new produces and imported consignments, Commerce Minister Tipu Munshi has said.
“Local onion will start arriving within 10 days. The market will start to calm. At least 12,000 tonnes of imported onion are expected to arrive at Chattogram Port within the 29th,” he told reporters after an event in Dhaka on Saturday.
The minister claimed onion prices started to drop due to government efforts, including the airlifting of the cooking ingredient from abroad.
He blamed last week’s transport strike for the hike in onion prices after a brief fall.
Munshi said the media should publish news about price hike responsibly.
“A TV channel aired a rickshaw-puller’s comments that he had spent Tk 200 from his daily earning of Tk 500 to buy one kg onion. The reality is the daily onion consumption is 35 grams per head,” he said.
The minister also urged the media not to focus on “abnormal” prices mentioned by individuals while the “actual prices are not that much high”.


If you have found my projects interesting please download my CV where you can find more details about me.
You can take a look at my certificates and diplomas which I have achieved during my study.
Work/ Internship
Resco.net, Bratislava - Slovakia
- C#, ASP.NET, SQL
- Customization of Resco Cloud & Resco Mobile CRM
- MADhack 2018 IoT pre Lepšiu obec, Smart Lighting System
Ingeniarius, Lda, Coimbra - Portugal
- Research and technological development
Východoslovenský onkologický ústav, a.s., Košice - Slovakia
- Contouring organs and structures on CT images, basics of treatment planning and callibration linear accelerator
Education
Faculty of Electrical Engineering and Information Techology, University of Zilina, Slovakia
- Master´s degree in Biomedical Engineering
Machine Learning Summer School 2018, Faculty of Management Science and Informatics
- lectures and practical examples of machine learning techniques and neural networks
- design and build basic applications for the Android platform
- experience with Android SDK
- basic experience working with remote data via REST and JSON
- experience with third-party libraries and APIs (OpenCV, APIs for maps)
- basic experience with mobile testing - Appium
- 3rd place - AzetBattle2018
- basics of OOP
- experience with using C++ in HW applications
- experience with using JAVA in mobile app development
- basics of Python and R
- theoretical knowledge about Linear regression, Classification, Clustering, LDA, Neural network
- practical experience with applying some methods (signal preddiction, object classification, clustering, neural network) - school labs
- experience with IBM Rational Rhapsody
- creating basics diagrams (use case, state diagram, class diagram,sequence diagram) and user requirements specifications


Kamuyoyo elected as head of Kavango East football… NC hard at work
by Staff ReporterHome \ Sports \ Kamuyoyo elected as head of Kavango East football… NC hard at work - New Era Live
Home \ Sports \ Kamuyoyo elected as head of Kavango East football… NC hard at work - New Era Live


# extends 'base.html' # block header
Lets make programming fun again!
Based on gae-init.
{{user_db.name}}
{{project_db.model_count}} {{project_db.created.strftime('%Y-%m-%d')}}


Assess and improve {{lowerCaseTargets}} in your Salesforce org
Use these filters to focus the charts below on reports with certain attributes.
|
|
|
|
The above chart shows individual top {{chartFilter.dataSize.text}} {{lowerCaseTargets}} to tune. Use this to focus tuning on high impact {{lowerCaseTargets}}. Click to drill into each report for more detailed {{lowerCaseTarget}} assessment information.
|
|
|
|||
| {{noOfOtherBlocks | number:2}} % |
The above chart shows the aggregate cost/count of {{lowerCaseTargets}} grouped by selected dimensions. Use this to focus tuning on high impact users, report types, and folders. Click to drill into each group for more detailed assessment information.
| {{targetType}} Id | Name | Rank | Last Used | Design | Scalability | Performance Driver | Report Type | Last Modified By | Last Modified Date | Health Score | Special Filters | Tags |
|---|
| {{targetType}} Id | Name | Rank | Last Used | Design | Scalability | Running User | Contributing Component | Last Modified By | Last Modified Date | Health Score | Special Filters | Tags |
|---|


Thank you for visiting our shelter! Even in a land of whimsy and dreams, animals sometimes lose their way and have nowhere to go. Our shelter has proudly provided these creatures with a temporary home until they can find their forever home. Maybe that will be with you!
Please take the time to read about several of our featured adoptable pets. If you're interested in adopting one, stop by our shelter, located at the rift between the Good and Evil realms of Imaginationland, to meet them in person.
Small in stature, with a big round head, and short little arms, Squirrely has light, taupe-colored fur, with spots of pale green on his belly, under his tail, and right above his dark red eyes. Around his neck, Squirrely wears a bright red scarf. He speaks in a soft, welcoming voice that is incredibly misleading. He also bears a strong southern accent.
Large, pudgy, and round, Beary oughtweighs the other woodland critters. He has thick, dark brown fur, and light brown spots on his snout, and below his brows. He has big, uneven teeth, and stubby claws. He wears a striped red and green winter hat with a single puff ball at the end.
Beavery has brown fur, and spots of tan on his stomach, and around his eyes.  He wears a blue winter hat, and gloves.
  He wears a red and green tie, and is the smallest of the Woodland Critters.
Please note that these animals are very fond of each other, and would prefer to be adopted together if possible. Something about blood orgies...anyways aren't they so cute?!
All pictures and descriptions were pulled from the South Park wikia.


The brilliant team of Adam's Auto.
FirstName LastName
FirstName LastName
FirstName LastName
FirstName LastName
FirstName LastName
FirstName LastName
Adam's Autos is a progressive and forward thinking car dealer based in the trendy cosmopolitan town of Chorley. Like many forward-thinking businesses, they have recognised the advantages of producing a multi-platform based web presence, hence this responsive website. If you have any questions or just want to talk, feel free to message us by filling in the form below or by emailing us!
Mobile:
07123456789
Telephone:
01234567890
Email add:
<EMAIL_ADDRESS>Address:
123 Fake,
Fake Town,
Fake City.
F4 K35
The brilliant team of Adam's Auto.


string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
Escapes special characters in the unescaped_string, taking into account the current character set of the connection so that it is safe to place it in a mysql_query(). If binary data is to be inserted, this function must be used. mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a. This function must always (with few exceptions) be used to make data safe before sending a query to MySQL.
Returns the escaped string, or FALSE on error.


|
VItA
1.1
Virtual Iterative Angiogenesis library
|
#include <CCOCommonStructures.h>
Public Attributes | |
| vector< vessel * > | anastomose |
| vtkSmartPointer< vtkLine > | vtkSegment |
| vtkIdType | vtkSegmentId |
| point | xProx |
| point | xDist |
| int | nLevel |
| double | radius |
| double | beta |
| double | length |
| double | resistance |
| double | localResistance |
| double | viscosity |
| double | flux |
| double | pressure |
| long long int | ID |
| double | treeVolume |
Vessel structure for CCO trees.
| vector<vessel *> vessel::anastomose |
Anastomose of the vessel. Position 0 is the parent vessel.
| double vessel::beta |
Radius relative to the parent vessel (i.e. radius/parent_radius). For root, it is the radius value.
| double vessel::flux |
Flow in this vessel.
| long long int vessel::ID |
Generation step
| double vessel::length |
Distance between xProx and xDist.
| double vessel::localResistance |
Reduced fluid-dynamic resistance.
| int vessel::nLevel |
Bifurcation level from proximal to distal (Root is at level 0).
| double vessel::pressure |
Pressure in the vessel.
| double vessel::radius |
Vessel radius.
| double vessel::resistance |
Reduced fluid-dynamic resistance.
| double vessel::treeVolume |
Volume of this down tree branch.
| double vessel::viscosity |
Blood viscosity.
| vtkSmartPointer<vtkLine> vessel::vtkSegment |
VTK geomtric representation.
| vtkIdType vessel::vtkSegmentId |
Unique identifier for the vessel.
| point vessel::xDist |
Distal position of the vessel.
| point vessel::xProx |
Proximal position of the vessel.


SARS {border-style patients px;} #ffffff;} operating respiratory patient severe acute staff tracheostomy infection protective px; syndrome {font-family control font-size theatre Hong SARS. double; personal tracheal Elsevier border-color border-width contact precautions procedures solid; surgical theatre. tracheostomy. transfer tube {font-style {font-weight COVID- Lancet bold centre chest condition courier; em; equipment form gown hospital immediately mechanical oxygen pt;} removed resource risk theatre,


I've been experimenting with solutions for my chronic insomnia for several years, and I've been through a veritable litany of depressants throughout my lifetime. I count myself of my generation to be one of the 'lucky' ones to have experienced Placidyl in my recent memory, as I was given it as a teenager for my insomnia, and definitely experienced with chloral hydrate, and meprobamate. My psychiatrist and neurologist both have been involved in this endeavour, and have signed off on nearly three dozen prescriptions, countless neurological tests and imaging series to find something that works and something that's causing it - but I still continue (without medication) to not sleep for 4-5 days at a time.
I had my first encounter with the barbiturates when I was 17 and my psychiatrist recommended that I try phenobarbital, dosed at 120 mg qhs, it worked somewhat, but it did not maintain my sedation. I found myself waking up multiple times in a short succession and having difficulty returning to sleep. This progressed to 180, and then 220 mg, each time after a day or two, the same effects. Keep in mind, that by this time, I'd been exposed to Placidyl (ethchlorvynol), Valium, Librium, and Halcion, each to no avail. My doctors were concerned about my ability to clear the large dosages that I required of Placidyl (4 greens, 750mg each), and my seemingly impossible tolerance to Valium, I could eat 30 mg and still walk an hour later, with no sedation whatsoever, after the first dosage trials.
The decision to 'move to the big guns', as my neurologist said, was that a smaller dose of a more potent, shorter-acting barbiturate would benefit me because it would be cleared in shorter time, if I recall correctly. So, in 1999, my psychiatrist and neurologist both signed off on what would turn out to be the most 'interesting' period of my sedation experiences - the Era of the Barbs, as I call it. :)
Starting with 100 mg of Seconal (secobarbital), one, cute, little red capsule - we begin the journey. About 15 minutes after dosing, I know something is different. I feel like I'm a little less edgy, relaxed, I find that I'm content to watch TV and really just not move. 45 minutes into it, the same couch has hold of me - moving is difficult, and all I want to do is lay down and go to sleep for a while, which I'm thinking - COOL! Finally, I found it. Within another 10 minutes or so, I'm tanked, and snoring soundly. I recall looking at the clock just before I faded out, and it was a little after 9 in the evening.
I woke up shortly after 10 the next day - feeling like I'd been hit with a concrete block in the head. I know now that this is a common experience to barbiturate users, sort of like the drinking hangover. My psychiatrist laughed, and told me that if I had a problem with it, he would write me for something to fix it. 'Fixing it' resulted in a prescription from my psychiatrist for 10 mg dextroamphetamine (time release spansules). Now, I can look back and call my shrink a complete and utter quack for writing me for what I term now as the Joan Crawford cocktail, but at the time, I was happy to have the energy and at least be functional in school, and sleep at night. I was carrying high school courses and college courses at the same time for the last two years of my high school career, so anything I could do to help it was A-OK in my book.
So, for the next year, I alternated between up with dextroamphetamine, down with secobarbital, and visits to my neurologist, psychiatrist, and a cardiologist once a month to test my cardiac function and make sure my heart wasn't being affected by the dextroamphetamine. All tests came out great, until production of secobarbital stopped in 2000-2001.
My psychiatrist mentioned to me that soon, supplies were going to dry up, and my pharmacist seconded it, and that we should look for an alternate treatment. By now, I was up to 400 mg of secobarbital at night and 30 mg of dextroamphetamine in the morning. Nobody was alarmed at the time - things were looking groovy, except for the pending halt of production. My shrink told me that we could potentially switch to Nembutal, pentobarbital. Consulting with my pharmacist, he decided to write me for an equivalent dosage of Nembutal, 300 mg, plus 120 mg of phenobarbital to smooth out the transition. This worked great, except for the lengthy fatigue I was starting to experience as the dextroamphetamine started to wear off before the phenobarbital was completely gone.
This went on for another two years, until my cardiologist noticed my aortic valve was dilating, causing blood to backflow. He attributed this to the amphetamines, and my psychiatrist started reducing the dosage, and recommended to me that I go into inpatient detoxification, as if I were to stop anything cold-turkey, it would cause me serious problems. I declined, at the time, and went on for another month, having headaches, hallucinations, and having problems sleeping again. Consenting to inpatient admission was more and more on my mind, and in January of 2002, I checked in to a large hospital on the Gulf coast for inpatient detox.
In eight weeks, I was completely weaned off of the Joan Crawford cocktail, but still having problems with sleep, and we started the cycle all over again with Ambien (causing me horrible hallucinations and night terrors), Sonata (more of the same), Lunesta (Yes, doctor, I like tasting iron bars in my mouth and not sleeping because I can't close my eyes), chloral hydrate (profuse projectile vomiting, both capsules and syrup + kool aid, but at least I slept some), and eventually, we returned to Nembutal, which for all of its faults, worked the best. I continued taking Nembutal on and off for the next few years, until Ranbaxy started producing Seconal again, and now I'm taking 200 mg for sleep (as of July of 2007), one or two nights a week on average.
I've managed to go through the depths and come back to normality somewhat, over the past few years, and I doubt I'll ever be able to sleep 'normally'. My neurologist is pressuring me to try an off-label use for Xyrem, the GHB formulation used for treating narcoleptic cataplexy, so I might soon, we'll see.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


What programming programmer should I learn?
Enter your Name
Which type of desktop computer do you prefer?
PC Computer
Mac
Build my own
Out of these choices what is your animal?
Dog
Tiger
Birds
What do you want to do as a programmer?
Design Websites-visually
Design buisness applications
Build mobile applications
What kind of sites do you enjoy?
Groupon
Ancestry
Linkedin app
How much programming expereince do you have?
None :(
A little I guess
TONS!
Get your Results!
, the programming language you should use is
__


--- layout: tweet ---
BCN ✈ AMS ✈ PDX
11/3/2019, 8:36:58 PM
Favs: 7
Retweets: 0
Priorities upon landing in Portland...
11/4/2019, 12:41:51 PM
Favs: 6


You Be Brave enables you to log incidents of harassment or abuse, to support cases reported to the authorities
In order to keep your data private, you need to set up a secure password or passphrase.
We recommend choosing something memorable and unique. e.g. "Cats love the history of Swedish knitting"
Create a passphrase
Confirm you passphrase


Reponse to the Fireside Chat
Date: May 6th, 2014
The DBC experience seems very rooted in its core beliefs of engineering empathy, which I believe distinguishes it from many other programs. After watching the video, I found myself agreeing with Shereef about the kitchen and the restaurant metaphor because I flipped my own views on travel in about the same way.
When I was growing up, my family went on a bunch of vacations and always bought tour package deals with the intent as one goes to a restaurant: you only go for the service and expect to get certain accomadations from it and nothing more. When I finally traveled on my own in my late teens, I discovered a world of exploration and wonder since I wasn't following a tour guide or sleeping in hotels. I met locals instead of meeting other tourists. I ate dinner at the marketplaces instead of at the continental restaurants. It was exhilarating and exciting, especially since I gave myself up to possibility rather than accomadations. Then, I wondered how come no one else travels this way.
With my education background, I was a little of both the restaurant goer and the line cooks at the kitchen. For some classes, I just wanted the grade because I didn't care about the general ed subjects. For my college upper division courses, I felt cheated every time our lectures didn't go on for hours on a subject that mattered to me. For college project classes, I felt like the full reign and open subjects allowed me to thrive and really take control of what I was learning. But it was all abrupt and I wanted the aspects of learning without the aspects of taking classes that would only amount to less content than I intended. It probably also helped that I spent a considerable amount of my free time in a machine shop because that was also my playground.
That's what I want from DBC, a playground of tools and a good chunk of time just messing around with it all to make my projects the way I want them to. The big difference between these two is the feedback time. Physical objects, or hardware in general, has a longer cycle time in product development and manufacturing. With programming, especially with proper version control, you can iterate at a much faster pace.
DBC embodies the culture of how to make yourself a whole person rather than pumping out degrees, as colleges do. I was reading a while back about stoics and how some of them used to intentionally put themselves in unconfortable situations so that when the time comes to face a similar situation, they can deal with it a lot easier. One of the things in the video that struck a cord with me is how we are allowed to be a beginner. I'm an avid reader of zen, not so good at practicing, and what Shunryu Suzuki says about beginner's mind embodies the point Shereef was making with only knowing so much, and having the attitude to try to learn more. Suzuki says that a beginner's mind plays around with meditation and tries new things to reach that point where you don't think anymore, that you've been removed from yourself. A master's mind finds themselves following the same path they've used before, and can become arrogrant with trying to remove themselves during meditation.
I'm hoping in putting all of my effort in engaging myself in this culture. I don't care if someone else thinks this as the rotten Koolaid because I'll be able to take the feedback a lot better and counter with that person with better responses, hopefully without emotions tied to it. It's really important in the long run anyways because we'll always be faced with similar situations where we don't understand something and need someone to explain it to us or have the ability to figure it out for ourselves. My expectations haven't changed about dbc. In fact, they are more heigtened and aware that this atmosphere really is what I want it to be, and more. It makes me incredibly excited.


Aliça is a brilliant student of the world-reknowned UCL university. She gratuated in anthropology in 2016 with honours from Paris X university. Specialized in human and non-human relationship, she studies the case of human and robots interactions in Japan. Aliça holds also a degree of solfeggio, piano and classical ballet.
Aliça has a great experience of doing fieldworks. She did a 4 month observation at Nanterre's Crown Court, explaining the effect of literacy and fine oratory on the final judgment. She also studied bodies' perceptions in a Zumba class. She is about to go to Japan to study the interactions between female androids and humans in a department store.
Aliça has several work experiences. She did her first internship at the world-reknowned CMA-CGM shipping company at the Oil Department, observing the work of the traders. Following this, she worked 3 times for the French employment centre.


ABOUT ME
-Sarah Kaminski-
Sarah is an Ohio native and has a great passion for learning, knowlegde, and the arts. If she's not reading a new book she is either writing, painting, or dancing to a favorite tune. She is an outgoing individual who chases and embraces change and personal growth in all avenues.
She has mastered the art of baking cheesecake and making a flavorful chili both from scratch. Her creativity and passion for the arts transitions well into the world of Computer Programming. Front-end developing comes naturally to her, while the back-end developing provides her the challanges
she is constantly searching for.
After nearly 4 years in sales, she has finally taken the leap into Software Engineering and a career path she loves. She is currently an apprentice at We Can Code IT and has been focusing on C#, HTML, CSS,
and JavaScript but looks forward to learning new languages as well.
Skills
Emphasis on C# and Object Oriented Programming, .NET/ASP.net, HTML5, CSS, Bootstrap, jQuery, SQL, MVC, JavaScript, responsive design/Mobile, Transactional Databases/MSSQL, Source Control, Unity & Git.


{% extends 'todo/base.html' %} {% block title%} AlotTodo {% endblock%} {% block dropdownview %} View Completed {% endblock%} {% block content%} {% if user.is_authenticated %}
{{todos|length}} task{{ todos|length|pluralize }} remaining
When you have Alot Todo we help you manage all of your tasks in life that matters most to you. Your new organized life awaits.


Click on each tr element to alert its index position in the table:
Click to show rowIndex
Click to show rowIndex
Click to show rowIndex
Click to show rowIndex


[Gecode] Updated tarballs?
Guido Tack
tack at ps.uni-sb.de
Mon Aug 29 11:27:06 CEST 2005
> Any chance of updated tarballs at
> https://www.gecode.org/Internal/tarballs/ since they are two months
We have been quite busy reorganizing some things. You can find new tarballs
there now, but please be aware that the build system as well as some internal
stuff has changed.
> old? Or (perhaps even better), read-only CVS/SVN access?
As we do not want to provide real unlimited anonymous CVS access right now,
this is technically impossible at the moment. I hope the tarballs are good
enough for now, and I think we'll set up anonymous CVS or SVN access sometime
during the next weeks.
Cheers,
Guido
--
Guido Tack
Programming Systems Lab, Saarland University, Saarbrücken
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list


Everybody wants ERC. Everybody hates ERC.
Electrical rules checking (ERC) looks for errors in how your circuit is constructed.
It’s like running lint
, but for hardware.
And as with lint
, you get a whole bunch of warnings that don’t matter but which
obscure the ones that do.
SKiDL tries to help by allowing you to selectively turn off ERC for nets, pins, and parts. That fixes part of the problem.
The other part is the inflexibility of ERC: it has fixed rules for common errors (like two outputs driving against each other), but adding rules for special cases isn’t easy.
The erc_assert()
function was added to SKiDL to make customizing ERC easier.
With erc_assert()
, you can add specialized rules that are checked only
in particular instances.
In the example below, erc_assert()
is used to
flag nets that have too much fanout:
from skidl import *
# Function to get the number of inputs on a net.
def get_fanout(net):
fanout = 0
for pin in net.get_pins():
if pin.func in (Pin.INPUT, Pin.BIDIR):
fanout += 1
return fanout
net1, net2 = Net('IN1'), Net('IN2')
# Place some assertions on the fanout of each net.
# Note that the assertions are passed as strings.
erc_assert('get_fanout(net1) < 5', 'failed on net1')
erc_assert('get_fanout(net2) < 5', 'failed on net2')
# Attach some pins to the nets.
net1 += Pin(func=Pin.OUTPUT)
net2 += Pin(func=Pin.OUTPUT)
net1 += Pin(func=Pin.INPUT) * 4 # This net passes the assertion.
net2 += Pin(func=Pin.INPUT) * 5 # This net fails because of too much fanout.
# When the ERC runs, it will also evaluate any erc_assert statements.
ERC()
ERC ERROR: get_fanout(net2) < 5 failed on net2 in <ipython-input-20-766848d35dca>:16:<module>.
0 warnings found during ERC.
1 errors found during ERC.
You might ask: “Why not just use the standard Python assert
statement?”
The reason is that a standard assertion is evaluated as soon as the assert
statement
is encountered so the result might be incorrect if the nets
are not yet completely defined.
But the statement passed to the erc_assert()
function is a string that
isn’t evaluated until all the circuitry has been connected and ERC() is called.
Note in the code above that when the erc_assert()
function is called,
no pins are even attached to the net1
or net2
nets.
The erc_assert()
function just places the statement to be checked into
a queue that gets evaluated when ERC()
is run.
By then, the nets will have pins attached by then.
You can perform more complicated checks by creating a function and then placing a call to it in the assertion string:
from skidl import *
def get_fanout(net):
fanout = 0
for pin in net.get_pins():
if pin.func in (Pin.INPUT, Pin.BIDIR):
fanout += 1
return fanout
# Function to check a fanout constraint on a net and drop into
# the debugger if the constraint is violated.
def check_fanout(net, threshold):
fanout = get_fanout(net)
if fanout >= threshold:
# Report the net which violated the constraint."
print(f'{net.name} fanout of {fanout} >= {threshold}.')
# Drop into the debugger so you can query the circuit
# and then continue.
breakpoint()
return False # Return False to trigger the erc_assert().
return True # Return True if the constraint is not violated.
net1, net2 = Net('IN1'), Net('IN2')
# Place calls to the check_fanout() function into the assertions.
erc_assert('check_fanout(net1, 5)')
erc_assert('check_fanout(net2, 5)')
net1 += Pin(func=Pin.OUTPUT)
net2 += Pin(func=Pin.OUTPUT)
net1 += Pin(func=Pin.INPUT) * 4
net2 += Pin(func=Pin.INPUT) * 5
ERC()
IN2 fanout of 5 >= 5.
> <ipython-input-18-800a83e11624>(22)check_fanout()
-> return False # Return False to trigger the erc_assert().
(Pdb) c
ERC ERROR: check_fanout(net2, 5) FAILED in <ipython-input-18-800a83e11624>:30:<module>.
0 warnings found during ERC.
1 errors found during ERC.
You can detect if a subcircuit is being used correctly by embedding calls to
erc_assert()
to check inputs, outputs, and internal circuitry:
from skidl import *
# Return True if the net has a pullup on it, False if not.
def has_pullup(net):
for pin in net.get_pins():
if pin.func == Pin.PULLUP:
return True
print(f'No pullup on net {net.name}')
return False
@subcircuit
def some_circuit(in1, in2):
# Check the subcircuit inputs to see if they have pullups.
erc_assert('has_pullup(in1)')
erc_assert('has_pullup(in2)')
# OK, this subcircuit doesn't really do anything, so you'll
# just have to imagine that it did.
pass
net1, net2 = Net('IN1'), Net('IN2')
# Instantiating the subcircuit automatically checks the input nets.
some_circuit(net1, net2)
net1 += Pin(func=Pin.OUTPUT)
net1 += Pin(func=Pin.INPUT) # No pullup -> this net fails.
net2 += Pin(func=Pin.OUTPUT)
net2 += Pin(func=Pin.PULLUP)
ERC()
No pullup on net IN1
ERC ERROR: has_pullup(in1) FAILED in <ipython-input-16-6e72ef7d46c8>:15:some_circuit.
0 warnings found during ERC.
1 errors found during ERC.
You can even use the erc_assert()
function to add global checks
that scan the entire circuit for violations of custom rules:
from skidl import *
# Global function that checks all the nets in the circuit and
# flags nets which have pullups when they shouldn't.
def my_erc():
erc_result = True
for net in default_circuit.get_nets():
if getattr(net, 'disallow_pullups', False) == True:
pin_types = [pin.func for pin in net.get_pins()]
if Pin.PULLUP in pin_types:
print(f'Pull-up not allowed on {net.name}.')
erc_result = False
return erc_result
net1, net2 = Net('IN1'), Net('IN2')
net1.disallow_pullups = True # Don't allow pullups on this net.
net1 += Pin(func=Pin.INPUT)
net1 += Pin(func=Pin.PULLUP) # This net will fail ERC.
net2 += Pin(func=Pin.INPUT)
net2 += Pin(func=Pin.PULLUP)
# Call your own customized global ERC.
erc_assert('my_erc()')
ERC()
Pull-up not allowed on IN1.
ERC ERROR: my_erc() FAILED in <ipython-input-12-888102e7799c>:24:<module>.
0 warnings found during ERC.
1 errors found during ERC.
That’s about it for the erc_assert()
function.
Since it’s new, it hasn’t seen a lot of use so there could be
modifications that are needed to make it more useful.
If you have questions or problems, please ask on the
SKiDL forum or
raise an issue.


""" Monkey patching of distutils. """ import sys import distutils.filelist import platform import types import functools from importlib import import_module import inspect from setuptools.extern import six import setuptools __all__ = [] """ Everything is private. Contact the project team if you think you need this functionality. """ def _get_mro(cls): """ Returns the bases classes for cls sorted by the MRO. Works around an issue on Jython where inspect.getmro will not return all base classes if multiple classes share the same name. Instead, this function will return a tuple containing the class itself, and the contents of cls.__bases__. See https://github.com/pypa/setuptools/issues/1024. """ if platform.python_implementation() == "Jython": return (cls,) + cls.__bases__ return inspect.getmro(cls) def get_unpatched(item): lookup = ( get_unpatched_class if isinstance(item, six.class_types) else get_unpatched_function if isinstance(item, types.FunctionType) else lambda item: None ) return lookup(item) def get_unpatched_class(cls): """Protect against re-patching the distutils if reloaded Also ensures that no other distutils extension monkeypatched the distutils first. """ external_bases = ( cls for cls in _get_mro(cls) if not cls.__module__.startswith('setuptools') ) base = next(external_bases) if not base.__module__.startswith('distutils'): msg = "distutils has already been patched by %r" % cls raise AssertionError(msg) return base def patch_all(): # we can't patch distutils.cmd, alas distutils.core.Command = setuptools.Command has_issue_12885 = sys.version_info <= (3, 5, 3) if has_issue_12885: # fix findall bug in distutils (http://bugs.python.org/issue12885) distutils.filelist.findall = setuptools.findall needs_warehouse = ( sys.version_info < (2, 7, 13) or (3, 4) < sys.version_info < (3, 4, 6) or (3, 5) < sys.version_info <= (3, 5, 3) ) if needs_warehouse: warehouse = 'https://upload.pypi.org/legacy/' distutils.config.PyPIRCCommand.DEFAULT_REPOSITORY = warehouse _patch_distribution_metadata() # Install Distribution throughout the distutils for module in distutils.dist, distutils.core, distutils.cmd: module.Distribution = setuptools.dist.Distribution # Install the patched Extension distutils.core.Extension = setuptools.extension.Extension distutils.extension.Extension = setuptools.extension.Extension if 'distutils.command.build_ext' in sys.modules: sys.modules['distutils.command.build_ext'].Extension = ( setuptools.extension.Extension ) patch_for_msvc_specialized_compiler() def _patch_distribution_metadata(): """Patch write_pkg_file and read_pkg_file for higher metadata standards""" for attr in ('write_pkg_file', 'read_pkg_file', 'get_metadata_version'): new_val = getattr(setuptools.dist, attr) setattr(distutils.dist.DistributionMetadata, attr, new_val) def patch_func(replacement, target_mod, func_name): """ Patch func_name in target_mod with replacement Important - original must be resolved by name to avoid patching an already patched function. """ original = getattr(target_mod, func_name) # set the 'unpatched' attribute on the replacement to # point to the original. vars(replacement).setdefault('unpatched', original) # replace the function in the original module setattr(target_mod, func_name, replacement) def get_unpatched_function(candidate): return getattr(candidate, 'unpatched') def patch_for_msvc_specialized_compiler(): """ Patch functions in distutils to use standalone Microsoft Visual C++ compilers. """ # import late to avoid circular imports on Python < 3.5 msvc = import_module('setuptools.msvc') if platform.system() != 'Windows': # Compilers only availables on Microsoft Windows return def patch_params(mod_name, func_name): """ Prepare the parameters for patch_func to patch indicated function. """ repl_prefix = 'msvc9_' if 'msvc9' in mod_name else 'msvc14_' repl_name = repl_prefix + func_name.lstrip('_') repl = getattr(msvc, repl_name) mod = import_module(mod_name) if not hasattr(mod, func_name): raise ImportError(func_name) return repl, mod, func_name # Python 2.7 to 3.4 msvc9 = functools.partial(patch_params, 'distutils.msvc9compiler') # Python 3.5+ msvc14 = functools.partial(patch_params, 'distutils._msvccompiler') try: # Patch distutils.msvc9compiler patch_func(*msvc9('find_vcvarsall')) patch_func(*msvc9('query_vcvarsall')) except ImportError: pass try: # Patch distutils._msvccompiler._get_vc_env patch_func(*msvc14('_get_vc_env')) except ImportError: pass try: # Patch distutils._msvccompiler.gen_lib_options for Numpy patch_func(*msvc14('gen_lib_options')) except ImportError: pass


{% extends "base.html" %} {% set active_page = "more_info" %} {% block content %}
Reaction rules for the transformations currently implemented in Retrobiocat.
Currently {{num_reactions}} reactions described using {{num_smarts}} reaction SMARTS
{% for enz in reaction_enzymes[rule] %}
{{enz}}
{% endfor %}


 Macchiato cream sweet a, single origin, fair trade irish, fair trade turkish, ut, that crema crema cappuccino java variety single origin plunger pot brewed. French press, trifecta siphon mug whipped, cup in, ut, cultivar, siphon qui, white kopi-luwak seasonal, carajillo, macchiato, et, variety grinder white half and half cream doppio café au lait. At qui chicory, medium, steamed carajillo acerbic robust lungo, cup, caramelization con panna wings, cappuccino ristretto sweet cream cultivar. Percolator filter, extra frappuccino decaffeinated bar , mocha body single shot to go aged caramelization, dark americano coffee flavour sugar. Irish steamed, french press, seasonal aroma white iced fair trade medium latte arabica to go lungo.
Tire Product 2: Tire Cleaner
Affogato, qui id, saucer, ristretto kopi-luwak brewed single origin medium coffee white, rich, brewed milk single origin frappuccino instant. Trifecta, cinnamon latte, to go frappuccino turkish aftertaste extra cream, body, a robust, dripper barista, et, americano crema affogato caramelization single origin siphon. Americano half and half bar , froth, qui extra doppio, cultivar, qui aftertaste blue mountain medium viennese frappuccino robust eu lungo qui mazagran shop.  Coffee, body, percolator, to go, body eu, est to go single origin kopi-luwak aged milk plunger pot, sit beans as rich siphon fair trade. Robusta cream, cup skinny, trifecta, breve caramelization, irish, strong, sugar french press, caffeine, acerbic, whipped java flavour half and half qui caramelization decaffeinated white.


|
Quiz
1.0
A metal-quiz developed with C++17/Qt5
|
Quiz is a metal quiz developed using C++/Qt, it loads questions from a .json resource file and asks the user to select the correct answers. View the docs/html/index.html file for a doxygen documentation.
Create a 'bin' directory were the executable will be created and change directory into it.
Run CMake to generate the build files
Compile and link the source code
Finally you can run the application
Make sure you have setup the requirements correctly and all the system environment variables are set
Open powershell and direct yourself to the project folder. Create a 'bin' directory were the executable will be created and change directory into it.
Run CMake to generate the build files
Compile the source code
Move the file and folder contents in the generated Release folder to the "bin" folder created previously
Finally you can run the application by either clicking it, or running it by powershell via
MIT
— Noak Palander author and developer of the application
— Nlhomann (https://github.com/nlohmann/json) for the open-source JSON library