Finally I present to you a new update!
And what an update it is. Newcomer "Freezard" has gracefully ripped through HD:FE Tourist, improving almost all levels!
Also, Ewil and I have created runs for Serious Sam 2 Tourist over the years and it has all been submitted to Speed Demos Archive, Check it out!
TSE Coop
The Grand Cathedral has been improved with 1 second to a 4:46 - Demo
SS2 Tourist
Hong-Pong has been improved with 10 seconds to a 2:08 by Ewil - Demo
Floaterra has been improved with 9 seconds to a 11:00 by Ewil - Demo
Shield Generator has been improved with 41 seconds to a 2:56 by Ewil - Demo
HD:FE Tourist
Sand Canyon has been improved with 3 seconds to a 1:22 by Freezard - Download
Tomb Of Ramses III has been improved with 3 seconds to a 1:35 by Freezard - Download
Valley Of The Kings has been improved with 3 seconds to a 4:27 by Freezard - Download
Moon Mountains has been improved with 2 seconds to a 1:26 by Freezard - Download YouTube
Oasis has been improved with 18 seconds to a 2:09 by Freezard - Download YouTube
Dunes has been improved with 48 seconds to a 1:56 by Freezard - Download YouTube
Suburbs has been improved with 3 seconds to a 0:53 by Freezard - Download YouTube
Metropolis has been improved with 11 seconds to a 7:26 by Freezard - Download YouTube
Alley Of The Sphinxes has been improved with 33 seconds to a 4:20 by Freezard - Download YouTube
Karnak has been improved with 18 seconds to a 5:24 by Freezard - Download YouTube
Luxor has been improved with 55 seconds to a 2:58 by Freezard - Download YouTube
Sacred Yards has been improved with 11 seconds to a 1:46 by Freezard - Download YouTube
The Great Pyramid has been added to the table with a time of 5:42 by Freezard - Download YouTube
Hi there, sorry I was in cryostasis for a while.
Anyway, 6 new runs coming at ya!
SE Tourist
The Grand Cathedral has been improved with 25 seconds to a 4:25 by KlVis.
SE Serious
Sierra de Chiapas OOB has been added to the table with a time of 3:58 by KlVis.
TSE Coop
The City of the Gods has been added to the table with a time of 5:18
Serpent Yards has been added to the table with a time of 1:44
SS2 Tourist
Jump in the Fire has been improved with 1 second to a 1:02 by TheVoid.
HD:FE Tourist
Metropolis has been improved with 41 seconds to a 7:37 by Ewil.
And now it has seriously been a while... Sorry about that. Partly my lazyness and partly, well, no, just my lazyness.
I present to you 8 new runs. And I've changed the layout of all the tables and also added Out of Bounds tables for TFE and TSE (Not for SS2 and HD:FE because no OOB runs can be created for those games).
FE Tourist
Alley Of The Sphinxes has been improved with 7 seconds to a 4:08 by moooh.
SE Tourist
Valley of the Jaguar has been improved with 14 seconds to a 8:29 by moooh.
The Grand Cathedral OOB has been added to the table with a time of 3:00 by KlVis.
SE Serious
Tower of Babel has been improved with 22 seconds to a 6:59 by KlVis.
Land of the Damned OOB has been added to the table with a time of 3:35 by KlVis.
The Grand Cathedral OOB has been added to the table with a time of 2:58 by KlVis.
TSE Coop
The Grand Cathedral OOB has been added to the table with a time of 3:18
HD:FE Tourist
Valley Of The Kings has been added to the table with a time of 4:30 by Cortez.


My names are Hussein Abass Mohamed, I am a director of Animation company. We make eye-catchy animations video which will inspire and engage your audience and enrich your business!. The animation video is a top-notch choice to explain how your products and services function and to interface with both potential and loyal customers. I have 5 years experience in field of animation making.
Secondary School: 2015-2018
Completed my studies in Kenya Certificate of Secondary Education (KCSE)
Primary School: 2005-2014
Completed my studies in Kenya Certificate of Primary Education (KCPE)
We'll the reason to why i chose programming over other course is to increase my knowledge in technology fields so as to better my work in Animation company.
Here are some of the projects i've worked on so far.
Creating inspiring Events
Kijiweni House Limited.
Languages used HTML for coming up with the structure of the webpage.
CSS for styling the webpage
Caring for your skin
Methuselah skin-care.


Our Double rooms, triple rooms and family accommodation/apartment at Filyra are all designed with their own names and characters: Emerald, Ruby, Coral, Diamond, Amethyst & Amber, precious names reflecting the quality of accommodation and colours used in the decoration.
Emerald is a spacious apartment and is able to sleep up to 4 guests.It is equipped with a kitchen where guests are able to prepare breakfast or meals and enjoy them in the dining area or on the balcony.The access to the room is able only by stairs, as it is located on the 2nd floor.The room space is 60 m² and is fully equipped to make your holiday, break or weekend in Nafplio as comfortable as possible, including:


Apache Spark™ and Scala
for Experienced Oracle and SQL Developers
5 Days
@jaceklaskowski
/
StackOverflow
/
GitHub
Books:
Mastering Apache Spark
/
Spark Structured Streaming
Jacek Laskowski
is an independent consultant
Specializing in
Spark
, Kafka, Kafka Streams, Scala
Development | Consulting | Training
Among contributors to
Spark
(since
1.6.0
)
Contact me at
<EMAIL_ADDRESS>Follow
@JacekLaskowski
on twitter
for more
#ApacheSpark
Jacek is best known by his
Gitbooks
:
Mastering Apache Spark
Mastering Spark SQL
Spark Structured Streaming
Mastering Kafka Streams
Apache Kafka Notebook
Agenda
Day 1
— Just Enough Scala (with IntelliJ IDEA)
Day 2
— Foundations of Spark SQL
Day 3
— Aggregations and Joins
Day 4
— Advanced Apache Spark and Monitoring
Day 5
— Advanced Spark SQL and Spark MLlib
Day 1 — Just Enough Scala
With IntelliJ IDEA
Scala — Just Enough to Develop Spark Applications
Getting familiar with the syntax and
Scala REPL
sbt console
My First Scala Standalone Application
IntelliJ IDEA
,
sbt package
and
spark-submit
Running Scala applications using
java -jar
sbt-assembly
plugin
Example
: Changing column names in Dataset
Seq.foldLeft
and
Dataset.withColumnRenamed
Prerequisities
Be prepared to get the most out of the workshop
Prerequisities / Programming Experience
Some programming experience using modern programming language, e.g. Scala, Python, Java, F#
Prerequisities / To Be Installed
Java Platform, Standard Edition (Java SE) 8
IntelliJ IDEA
Community Edition with
Scala plugin
sbt
Prerequisities / To Be Downloaded
The latest version of
Apache Spark
In-Class Preparations
Make Instructor's Life Slightly Easier. Thanks!
Introduce Yourself
First name
What do you expect from the workshop?
Where do you want to be with Spark after 5 days?

Is lunch at
12:45pm
OK?


Meditation, Mindfulness, and Modern Ways
TM, Mindfulness, Reading Search Inside Yourself Chapter 2, and Muse
by: Peter Torr Smith
12th September, 2018
Tags/Categories
How did the 'process over product' concept affect the way you tackled the site redesign and rebuild?
It was good to be encouraged to allow each step in the design process to take some time. and have their own learning and doing challenges.
I've enjoyed exploring and designing and deciding and prioritising the features and elements for the first early version of this redesign and rebuild of the website
I have enjoyed outlining the needs and goals for the site, and identifying the main page types and page elements that a site visitor would need to ineract successfully with the site.
And then the learning of the Skeleton Framework, which took a bit to grapple with, was a journey in itself. But as I did, my basic CSS skills got a little bit better.
Needless to say, I've yet still to master many aspects of the structuring a site in HTML and Styling it with CSS, and I think the Skeleton framework was useful for going through the process of designing mobile first.
What did you think about meditation before reading chapter 2?
I already have experienced some benefits of meditation in my life. I new it must be good for my well-being and my mind. But I hadn't overly analysed it as to what I was expecting it to do, or how else I could look at it.
What new things have you learnt about meditation?
I have mostly done Transcendental Meditation which uses a personal mantra for a 20-minute meditation. I have mostly meditated first thing in the morning.
So using the focus on the breath, starting out with short meditations, and understanding a bit more of the simplicity of it has been a nice re-learning.
Did any of the suggested meditation techniques stand out to you?
Focusing on my breath, and allowing a short meditation anytime as been useful.
I will try to focus a bit more on my back when sitting for meditation.
Any other musings?
See the aside panel "Musing the Meditation"


Navbar
Home
Nodes
Links
Create
Search
Outer links from given node
This node
Links
Linked nodes
Inner links to given node
Linked nodes
Links
This node


| Spoon-Knife | 9,838 70,444 |
| This repo is for demonstration purposes only. | |
| Updated 9 hours ago | |
| Hello World! | 9,838 70,444 |
| This your first repo! | |
| Updated 4 days ago | |
| octocat.github.io | 9,838 70,444 |
| Updated 4 days ago |
| {{followers}} | {{starred_url}} | {{following}} |
| Followers | Starred | Following |
| Spoon-Knife | 9,838 70,444 |
| This repo is for demonstration purposes only. | |
| Updated 9 hours ago | |
| Hello World! | 9,838 70,444 |
| This your first repo! | |
| Updated 4 days ago | |
| octocat.github.io | 9,838 70,444 |
| Updated 4 days ago |


cft_code.dnslib package¶
Submodules¶
cft_code.dnslib.bimap module¶
Bimap - bidirectional mapping between code/value
-
class
cft_code.dnslib.bimap.
Bimap
(name, forward, error=<type 'exceptions.KeyError'>)¶ Bases:
object
Bi-directional mapping between code/text.
Initialised using:
name: Used for exceptions dict: Dict mapping from code (numeric) to text error: Error type to raise if key not foundThe class provides:
- A ‘forward’ map (code->text) which is accessed through __getitem__ (bimap[code])
- A ‘reverse’ map (code>value) which is accessed through __getattr__ (bimap.text)
- A ‘get’ method which does a forward lookup (code->text) and returns a textual version of code if there is no explicit mapping (or default provided)
>>> class TestError(Exception): ... pass
>>> TEST = Bimap('TEST',{1:'A', 2:'B', 3:'C'},TestError) >>> TEST[1] 'A' >>> TEST.A 1 >>> TEST.X Traceback (most recent call last): ... TestError: TEST: Invalid reverse lookup: [X] >>> TEST[99] Traceback (most recent call last): ... TestError: TEST: Invalid forward lookup: [99] >>> TEST.get(99) '99'
-
get
(k, default=None)¶
-
exception
cft_code.dnslib.bimap.
BimapError
¶ Bases:
exceptions.Exception
cft_code.dnslib.bit module¶
Some basic bit mainpulation utilities
-
cft_code.dnslib.bit.
binary
(n, count=16, reverse=False)¶ Display n in binary (only difference from built-in bin is that this function returns a fixed width string and can optionally be reversed
>>> binary(6789) '0001101010000101' >>> binary(6789,8) '10000101' >>> binary(6789,reverse=True) '1010000101011000'
-
cft_code.dnslib.bit.
get_bits
(data, offset, bits=1)¶ Get specified bits from integer
>>> bin(get_bits(0b0011100,2)) '0b1' >>> bin(get_bits(0b0011100,0,4)) '0b1100'
-
cft_code.dnslib.bit.
hexdump
(src, length=16, prefix='')¶ Print hexdump of string
>>> print(hexdump(b"abcd" * 4)) 0000 61 62 63 64 61 62 63 64 61 62 63 64 61 62 63 64 abcdabcd abcdabcd
>>> print(hexdump(bytearray(range(48)))) 0000 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f ........ ........ 0010 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f ........ ........ 0020 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f !"#$%&' ()*+,-./
-
cft_code.dnslib.bit.
set_bits
(data, value, offset, bits=1)¶ Set specified bits in integer
>>> bin(set_bits(0,0b1010,0,4)) '0b1010' >>> bin(set_bits(0,0b1010,3,4)) '0b1010000'
cft_code.dnslib.buffer module¶
Buffer - simple data buffer
-
class
cft_code.dnslib.buffer.
Buffer
(data='')¶ Bases:
object
A simple data buffer - supports packing/unpacking in struct format
# Needed for Python 2/3 doctest compatibility >>> def p(s): … if not isinstance(s,str): … return s.decode() … return s
>>> b = Buffer() >>> b.pack("!BHI",1,2,3) >>> b.offset 7 >>> b.append(b"0123456789") >>> b.offset 17 >>> p(b.hex()) '0100020000000330313233343536373839' >>> b.offset = 0 >>> b.unpack("!BHI") (1, 2, 3) >>> bytearray(b.get(5)) bytearray(b'01234') >>> bytearray(b.get(5)) bytearray(b'56789') >>> b.update(7,"2s",b"xx") >>> b.offset = 7 >>> bytearray(b.get(5)) bytearray(b'xx234')
-
append
(s)¶ Append s to end of data & increment offset
-
get
(length)¶ Gen len bytes at current offset (& increment offset)
-
hex
()¶ Return data as hex string
-
pack
(fmt, *args)¶ Pack data at end of data according to fmt (from struct) & increment offset
-
remaining
()¶ Return bytes remaining
-
unpack
(fmt)¶ Unpack data at current offset according to fmt (from struct)
-
update
(ptr, fmt, *args)¶ Modify data at offset ptr
-
-
exception
cft_code.dnslib.buffer.
BufferError
¶ Bases:
exceptions.Exception
cft_code.dnslib.client module¶
DNS Client - DiG-like CLI utility.
Mostly useful for testing. Can optionally compare results from two nameservers (–diff) or compare results against DiG (–dig).
Usage: python -m dnslib.client [options|–help]
See –help for usage.
cft_code.dnslib.digparser module¶
digparser¶
Encode/decode DNS packets from DiG textual representation. Parses question (if present: +qr flag) & answer sections and returns list of DNSRecord objects.
Unsupported RR types are skipped (this is different from the packet parser which will store and encode the RDATA as a binary blob)
>>> dig = os.path.join(os.path.dirname(__file__),"test","dig","google.com-A.dig")
>>> with open(dig) as f:
... l = DigParser(f)
... for record in l:
... print('---')
... print(repr(record))
---
<DNS Header: id=0x5c9a type=QUERY opcode=QUERY flags=RD rcode='NOERROR' q=1 a=0 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=A qclass=IN>
---
<DNS Header: id=0x5c9a type=RESPONSE opcode=QUERY flags=RD,RA rcode='NOERROR' q=1 a=16 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=A qclass=IN>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
>>> dig = os.path.join(os.path.dirname(__file__),"test","dig","google.com-ANY.dig")
>>> with open(dig) as f:
... l = DigParser(f)
... for record in l:
... print('---')
... print(repr(record))
---
<DNS Header: id=0xfc6b type=QUERY opcode=QUERY flags=RD rcode='NOERROR' q=1 a=0 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=ANY qclass=IN>
---
<DNS Header: id=0xa6fc type=QUERY opcode=QUERY flags=RD rcode='NOERROR' q=1 a=0 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=ANY qclass=IN>
---
<DNS Header: id=0xa6fc type=RESPONSE opcode=QUERY flags=RD,RA rcode='NOERROR' q=1 a=28 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=ANY qclass=IN>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=A rclass=IN ttl=299 rdata='<IP_ADDRESS>'>
<DNS RR: 'google.com.' rtype=NS rclass=IN ttl=21599 rdata='ns4.google.com.'>
<DNS RR: 'google.com.' rtype=MX rclass=IN ttl=599 rdata='50 alt4.aspmx.l.google.com.'>
<DNS RR: 'google.com.' rtype=NS rclass=IN ttl=21599 rdata='ns2.google.com.'>
<DNS RR: 'google.com.' rtype=MX rclass=IN ttl=599 rdata='10 aspmx.l.google.com.'>
<DNS RR: 'google.com.' rtype=NS rclass=IN ttl=21599 rdata='ns3.google.com.'>
<DNS RR: 'google.com.' rtype=SOA rclass=IN ttl=21599 rdata='ns1.google.com. dns-admin.google.com.<PHONE_NUMBER> 7200 1800 1209600 300'>
<DNS RR: 'google.com.' rtype=MX rclass=IN ttl=599 rdata='40 alt3.aspmx.l.google.com.'>
<DNS RR: 'google.com.' rtype=MX rclass=IN ttl=599 rdata='20 alt1.aspmx.l.google.com.'>
<DNS RR: 'google.com.' rtype=TYPE257 rclass=IN ttl=21599 rdata='0005697373756573796d616e7465632e636f6d'>
<DNS RR: 'google.com.' rtype=TXT rclass=IN ttl=3599 rdata='"v=spf1 include:_spf.google.com ip4:<IP_ADDRESS>/31 ip4:<IP_ADDRESS>/31 ~all"'>
<DNS RR: 'google.com.' rtype=MX rclass=IN ttl=599 rdata='30 alt2.aspmx.l.google.com.'>
<DNS RR: 'google.com.' rtype=NS rclass=IN ttl=21599 rdata='ns1.google.com.'>
cft_code.dnslib.dns module¶
DNS - main dnslib module
Contains core DNS packet handling code
-
class
cft_code.dnslib.dns.
A
(data)¶ Bases:
cft_code.dnslib.dns.RD
-
data
¶
-
classmethod
fromZone
(rd, origin=None)¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
-
class
cft_code.dnslib.dns.
AAAA
(data)¶ Bases:
cft_code.dnslib.dns.RD
Basic support for AAAA record - accepts IPv6 address data as either a tuple of 16 bytes or in text format
-
data
¶
-
classmethod
fromZone
(rd, origin=None)¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
-
class
cft_code.dnslib.dns.
CNAME
(label=None)¶ Bases:
cft_code.dnslib.dns.RD
-
attrs
= ('label',)¶
-
classmethod
fromZone
(rd, origin=None)¶
-
get_label
()¶
-
label
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
set_label
(label)¶
-
-
exception
cft_code.dnslib.dns.
DNSError
¶ Bases:
exceptions.Exception
-
class
cft_code.dnslib.dns.
DNSHeader
(id=None, bitmap=None, q=0, a=0, auth=0, ar=0, **args)¶ Bases:
object
DNSHeader section
-
a
¶
-
aa
¶
-
ar
¶
-
auth
¶
-
bitmap
¶
-
get_aa
()¶
-
get_opcode
()¶
-
get_qr
()¶
-
get_ra
()¶
-
get_rcode
()¶
-
get_rd
()¶
-
get_tc
()¶
-
id
¶
-
opcode
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer)¶ Implements parse interface
-
q
¶
-
qr
¶
-
ra
¶
-
rcode
¶
-
rd
¶
-
set_aa
(val)¶
-
set_opcode
(val)¶
-
set_qr
(val)¶
-
set_ra
(val)¶
-
set_rcode
(val)¶
-
set_rd
(val)¶
-
set_tc
(val)¶
-
tc
¶
-
toZone
()¶
-
-
class
cft_code.dnslib.dns.
DNSKEY
(flags, protocol, algorithm, key)¶ Bases:
cft_code.dnslib.dns.RD
-
algorithm
¶
-
attrs
= ('flags', 'protocol', 'algorithm', 'key')¶
-
flags
¶
-
classmethod
fromZone
(rd, origin=None)¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
protocol
¶
-
-
class
cft_code.dnslib.dns.
DNSQuestion
(qname=None, qtype=1, qclass=1)¶ Bases:
object
DNSQuestion section
-
get_qname
()¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer)¶
-
qname
¶
-
set_qname
(qname)¶
-
toZone
()¶
-
-
class
cft_code.dnslib.dns.
 DNSQuestion("abc.com",QTYPE.MX)) >>> print(q) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: rd; QUERY: 2, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.com. IN A ;abc.com. IN MX
-
diff
(other)¶ Diff records - recursively diff sections (sorting RRs)
-
format
(prefix='', sort=False)¶ Formatted ‘repr’-style representation of record (optionally with prefix and/or sorted RRs)
-
get_a
()¶
-
get_q
()¶
-
pack
()¶ Pack record into binary packet (recursively packs each section into buffer)
>>> q = DNSRecord.question("abc.com") >>> q.header.id = 1234 >>> a = q.replyZone("abc.com A <IP_ADDRESS>") >>> a.header.aa = 0 >>> pkt = a.pack() >>> print(DNSRecord.parse(pkt)) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1234 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.com. IN A ;; ANSWER SECTION: abc.com. 0 IN A <IP_ADDRESS>
-
classmethod
parse
(packet)¶ Parse DNS packet data and return DNSRecord instance Recursively parses sections (calling appropriate parse method)
-
q
¶
-
classmethod
question
(qname, qtype='A', qclass='IN')¶ Shortcut to create question
>>> q = DNSRecord.question("www.google.com") >>> print(q) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.google.com. IN A
>>> q = DNSRecord.question("www.google.com","NS") >>> print(q) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.google.com. IN NS
-
reply
(ra=1, aa=1)¶ Create skeleton reply packet
>>> q = DNSRecord.question("abc.com") >>> a = q.reply() >>> a.add_answer(RR("abc.com",QTYPE.A,rdata=A("<IP_ADDRESS>"),ttl=60)) >>> print(a) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.com. IN A ;; ANSWER SECTION: abc.com. 60 IN A <IP_ADDRESS>
-
replyZone
(zone, ra=1, aa=1)¶ Create reply with response data in zone-file format >>> q = DNSRecord.question(“abc.com”) >>> a = q.replyZone(“abc.com 60 A <IP_ADDRESS>”) >>> print(a) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: … ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.com. IN A ;; ANSWER SECTION: abc.com. 60 IN A <IP_ADDRESS>
-
send
(dest, port=53, tcp=False, timeout=None, ipv6=False)¶ Send packet to nameserver and return response
-
set_header_qa
()¶ Reset header q/a/auth/ar counts to match numver of records (normally done transparently)
-
short
()¶ Just return RDATA
-
toZone
(prefix='')¶ Formatted ‘DiG’ (zone) style output (with optional prefix)
-
truncate
()¶ Return truncated copy of DNSRecord (with TC flag set) (removes all Questions & RRs and just returns header)
>>> q = DNSRecord.question("abc.com") >>> a = q.reply() >>> a.add_answer(*RR.fromZone('abc.com IN TXT %s' % ('x' * 255))) >>> a.add_answer(*RR.fromZone('abc.com IN TXT %s' % ('x' * 255))) >>> a.add_answer(*RR.fromZone('abc.com IN TXT %s' % ('x' * 255))) >>> len(a.pack()) 829 >>> t = a.truncate() >>> print(t) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: qr aa tc rd ra; QUERY: 0, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
-
-
class
cft_code.dnslib.dns.
EDNS0
(rname=None, rtype=41, ext_rcode=0, version=0, flags='', udp_len=0, opts=None)¶ Bases:
cft_code.dnslib.dns.RR
ENDS0 pseudo-record
Wrapper around the ENDS0 support in RR to make it more convenient to create EDNS0 pseudo-record - this just makes it easier to specify the EDNS0 parameters directly
EDNS flags should be passed as a space separated string of options (currently only ‘do’ is supported)
>>> EDNS0("abc.com",flags="do",udp_len=2048,version=1) <DNS OPT: edns_ver=1 do=1 ext_rcode=0 udp_len=2048> >>> print(_) ;OPT PSEUDOSECTION ;EDNS: version: 1, flags: do; udp: 2048 >>> opt = EDNS0("abc.com",flags="do",ext_rcode=1,udp_len=2048,version=1,opts=[EDNSOption(1,b'abcd')]) >>> opt <DNS OPT: edns_ver=1 do=1 ext_rcode=1 udp_len=2048> <EDNS Option: Code=1 Data='61626364'> >>> print(opt) ;OPT PSEUDOSECTION ;EDNS: version: 1, flags: do; udp: 2048 ;EDNS: code: 1; data: 61626364 >>> r = DNSRecord.question("abc.com").replyZone("abc.com A <IP_ADDRESS>") >>> r.add_ar(opt) >>> print(r) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;abc.com. IN A ;; ANSWER SECTION: abc.com. 0 IN A <IP_ADDRESS> ;; ADDITIONAL SECTION: ;OPT PSEUDOSECTION ;EDNS: version: 1, flags: do; udp: 2048 ;EDNS: code: 1; data: 61626364 >>> DNSRecord.parse(r.pack()) == r True
-
class
cft_code.dnslib.dns.
EDNSOption
(code, data)¶ Bases:
object
EDNSOption pseudo-section
Very rudimentary support for EDNS0 options however this has not been tested due to a lack of data (anyone wanting to improve support or provide test data please raise an issue)
>>> EDNSOption(1,b"1234") <EDNS Option: Code=1 Data='31323334'> >>> EDNSOption(99999,b"1234") Traceback (most recent call last): ... ValueError: Attribute 'code' must be between 0-65535 [99999] >>> EDNSOption(1,None) Traceback (most recent call last): ... ValueError: Attribute 'data' must be instance of ...
-
code
¶
-
data
¶
-
pack
(buffer)¶
-
toZone
()¶
-
-
class
cft_code.dnslib.dns.
MX
(label=None, preference=10)¶ Bases:
cft_code.dnslib.dns.RD
-
attrs
= ('preference', 'label')¶
-
classmethod
fromZone
(rd, origin=None)¶
-
get_label
()¶
-
label
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
preference
¶
-
set_label
(label)¶
-
-
class
cft_code.dnslib.dns.
NAPTR
(order, preference, flags, service, regexp, replacement=None)¶ Bases:
cft_code.dnslib.dns.RD
-
attrs
= ('order', 'preference', 'flags', 'service', 'regexp', 'replacement')¶
-
classmethod
fromZone
(rd, origin=None)¶
-
get_replacement
()¶
-
order
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
preference
¶
-
replacement
¶
-
set_replacement
(replacement)¶
-
-
class
cft_code.dnslib.dns.
NS
(label=None)¶ Bases:
cft_code.dnslib.dns.CNAME
-
class
cft_code.dnslib.dns.
PTR
(label=None)¶ Bases:
cft_code.dnslib.dns.CNAME
-
class
cft_code.dnslib.dns.
RD
(data='')¶ Bases:
object
Base RD object - also used as placeholder for unknown RD types
To create a new RD type subclass this and add to RDMAP (below)
Subclass should implement (as a mininum):
parse (parse from packet data) __init__ (create class) __repr__ (return in zone format) fromZone (create from zone format)
(toZone uses __repr__ by default)
Unknown rdata types default to RD and store rdata as a binary blob (this allows round-trip encoding/decoding)
-
attrs
= ('data',)¶
-
classmethod
fromZone
(rd, origin=None)¶ Create new record from zone format data RD is a list of strings parsed from DiG output
-
pack
(buffer)¶ Pack record into buffer
-
classmethod
parse
(buffer, length)¶ Unpack from buffer
-
toZone
()¶
-
-
class
cft_code.dnslib.dns.
RR
(rname=None, rtype=1, rclass=1, ttl=0, rdata=None)¶ Bases:
object
DNS Resource Record Contains RR header and RD (resource data) instance
-
classmethod
fromZone
(zone, origin='', ttl=0)¶ Parse RR data from zone file and return list of RRs
-
get_rname
()¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer)¶
-
rclass
¶
-
rdlength
¶
-
rname
¶
-
rtype
¶
-
set_rname
(rname)¶
-
toZone
()¶
-
ttl
¶
-
classmethod
-
class
cft_code.dnslib.dns.
RRSIG
(covered, algorithm, labels, orig_ttl, sig_exp, sig_inc, key_tag, name, sig)¶ Bases:
cft_code.dnslib.dns.RD
-
algorithm
¶
-
attrs
= ('covered', 'algorithm', 'labels', 'orig_ttl', 'sig_exp', 'sig_inc', 'key_tag', 'name', 'sig')¶
-
covered
¶
-
classmethod
fromZone
(rd, origin=None)¶
-
key_tag
¶
-
labels
¶
-
orig_ttl
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
sig_exp
¶
-
sig_inc
¶
-
-
class
cft_code.dnslib.dns.
SOA
(mname=None, rname=None, times=None)¶ Bases:
cft_code.dnslib.dns.RD
-
attrs
= ('mname', 'rname', 'times')¶
-
classmethod
fromZone
(rd, origin=None)¶
-
get_mname
()¶
-
get_rname
()¶
-
mname
¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
rname
¶
-
set_mname
(mname)¶
-
set_rname
(rname)¶
-
times
¶
-
-
class
cft_code.dnslib.dns.
SRV
(priority=0, weight=0, port=0, target=None)¶ Bases:
cft_code.dnslib.dns.RD
-
attrs
= ('priority', 'weight', 'port', 'target')¶
-
classmethod
fromZone
(rd, origin=None)¶
-
get_target
()¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
port
¶
-
priority
¶
-
set_target
(target)¶
-
target
¶
-
weight
¶
-
-
class
cft_code.dnslib.dns.
TXT
(data)¶ Bases:
cft_code.dnslib.dns.RD
DNS TXT record. Pass in either a single string, or a tuple/list of strings.
>>> TXT('txtvers=1') "txtvers=1" >>> TXT(('txtvers=1',)) "txtvers=1" >>> TXT(['txtvers=1',]) "txtvers=1" >>> TXT(['txtvers=1','swver=2.5']) "txtvers=1","swver=2.5" >>> a = DNSRecord() >>> a.add_answer(*RR.fromZone('example.com 60 IN TXT "txtvers=1"')) >>> a.add_answer(*RR.fromZone('example.com 120 IN TXT "txtvers=1" "swver=2.3"')) >>> print(a) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: rd; QUERY: 0, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0 ;; ANSWER SECTION: example.com. 60 IN TXT "txtvers=1" example.com. 120 IN TXT "txtvers=1" "swver=2.3"
-
classmethod
fromZone
(rd, origin=None)¶
-
pack
(buffer)¶
-
classmethod
parse
(buffer, length)¶
-
toZone
()¶
-
classmethod
-
class
cft_code.dnslib.dns.
ZoneParser
(zone, origin='', ttl=0)¶ Zone file parser
>>> z = ZoneParser("www.example.com. 60 IN A <IP_ADDRESS>") >>> list(z.parse()) [<DNS RR: 'www.example.com.' rtype=A rclass=IN ttl=60 rdata='<IP_ADDRESS>'>]
-
expect
(expect)¶
-
parse
()¶
-
parse_label
(label)¶
-
parse_rr
(rr)¶
-
-
cft_code.dnslib.dns.
label
(label, origin=None)¶
-
cft_code.dnslib.dns.
parse_time
(s)¶ Parse time spec with optional s/m/h/d/w suffix
cft_code.dnslib.fixedresolver module¶
- FixedResolver - example resolver which responds with fixed response
- to all requests
cft_code.dnslib.intercept module¶
- InterceptResolver - proxy requests to upstream server
- (optionally intercepting)
cft_code.dnslib.label module¶
DNSLabel/DNSBuffer - DNS label handling & encoding/decoding
-
class
cft_code.dnslib.label.
DNSBuffer
(data='')¶ Bases:
dnslib.buffer.Buffer
Extends Buffer to provide DNS name encoding/decoding (with caching)
# Needed for Python 2/3 doctest compatibility >>> def p(s): … if not isinstance(s,str): … return s.decode() … return s
>>> b = DNSBuffer() >>> b.encode_name(b'aaa.bbb.ccc.') >>> len(b) 13 >>> b.encode_name(b'aaa.bbb.ccc.') >>> len(b) 15 >>> b.encode_name(b'xxx.yyy.zzz') >>> len(b) 28 >>> b.encode_name(b'zzz.xxx.bbb.ccc.') >>> len(b) 38 >>> b.encode_name(b'aaa.xxx.bbb.ccc') >>> len(b) 44 >>> b.offset = 0 >>> print(b.decode_name()) aaa.bbb.ccc. >>> print(b.decode_name()) aaa.bbb.ccc. >>> print(b.decode_name()) xxx.yyy.zzz. >>> print(b.decode_name()) zzz.xxx.bbb.ccc. >>> print(b.decode_name()) aaa.xxx.bbb.ccc.
>>> b = DNSBuffer() >>> b.encode_name([b'a.aa',b'b.bb',b'c.cc']) >>> b.offset = 0 >>> len(b.decode_name().label) 3
>>> b = DNSBuffer() >>> b.encode_name_nocompress(b'aaa.bbb.ccc.') >>> len(b) 13 >>> b.encode_name_nocompress(b'aaa.bbb.ccc.') >>> len(b) 26 >>> b.offset = 0 >>> print(b.decode_name()) aaa.bbb.ccc. >>> print(b.decode_name()) aaa.bbb.ccc.
-
decode_name
(last=-1)¶ Decode label at current offset in buffer (following pointers to cached elements where necessary)
-
encode_name
(name)¶ Encode label and store at end of buffer (compressing cached elements where needed) and store elements in ‘names’ dict
-
encode_name_nocompress
(name)¶ Encode and store label with no compression (needed for RRSIG)
-
-
class
cft_code.dnslib.label.
DNSLabel
(label)¶ Bases:
object
Container for DNS label
Supports IDNA encoding for unicode domain names
>>> l1 = DNSLabel("aaa.bbb.ccc.") >>> l2 = DNSLabel([b"aaa",b"bbb",b"ccc"]) >>> l1 == l2 True >>> l3 = DNSLabel("AAA.BBB.CCC") >>> l1 == l3 True >>> l1 == 'AAA.BBB.CCC' True >>> x = { l1 : 1 } >>> x[l1] 1 >>> l1 <DNSLabel: 'aaa.bbb.ccc.'> >>> str(l1) 'aaa.bbb.ccc.' >>> l3 = l1.add("xxx.yyy") >>> l3 <DNSLabel: 'xxx.yyy.aaa.bbb.ccc.'> >>> l3.matchSuffix(l1) True >>> l3.matchSuffix("xxx.yyy.") False >>> l3.stripSuffix("bbb.ccc.") <DNSLabel: 'xxx.yyy.aaa.'> >>> l3.matchGlob("*.[abc]aa.BBB.ccc") True >>> l3.matchGlob("*.[abc]xx.bbb.ccc") False
# Too hard to get unicode doctests to work on Python 3.2 # (works on 3.3) # >>> u1 = DNSLabel(u’u2295.com’) # >>> u1.__str__() == u’u2295.com.’ # True # >>> u1.label == ( b”xn–keh”, b”com” ) # True
-
add
(name)¶ Prepend name to label
-
idna
()¶
-
matchGlob
(pattern)¶
-
matchSuffix
(suffix)¶ Return True if label suffix matches
-
stripSuffix
(suffix)¶ Strip suffix from label
-
-
exception
cft_code.dnslib.label.
DNSLabelError
¶ Bases:
exceptions.Exception
cft_code.dnslib.lex module¶
-
class
cft_code.dnslib.lex.
Lexer
(f, debug=False)¶ Bases:
object
Simple Lexer base class. Provides basic lexer framework and helper functionality (read/peek/pushback etc)
Each state is implemented using a method (lexXXXX) which should match a single token and return a (token,lexYYYY) tuple, with lexYYYY representing the next state. If token is None this is not emitted and if lexYYYY is None or the lexer reaches the end of the input stream the lexer exits.
The ‘parse’ method returns a generator that will return tokens (the class also acts as an iterator)
The default start state is ‘lexStart’
Input can either be a string/bytes or file object.
The approach is based loosely on Rob Pike’s Go lexer presentation (using generators rather than channels).
>>> p = Lexer("a bcd efgh") >>> p.read() 'a' >>> p.read() ' ' >>> p.peek(3) 'bcd' >>> p.read(5) 'bcd e' >>> p.pushback('e') >>> p.read(4) 'efgh'
-
escape
= {'r': '\r', 't': '\t', 'n': '\n'}¶
-
escape_chars
= '\\'¶
-
lexStart
()¶
-
next_token
()¶
-
parse
()¶
-
peek
(n=1)¶
-
pushback
(s)¶
-
read
(n=1)¶
-
readescaped
()¶
-
-
class
cft_code.dnslib.lex.
RandomLexer
(f, debug=False)¶ Bases:
cft_code.dnslib.lex.Lexer
Test lexing from infinite stream.
Extract strings of letters/numbers from /dev/urandom
>>> import itertools,sys >>> if sys.version[0] == '2': ... f = open("/dev/urandom") ... else: ... f = open("/dev/urandom",encoding="ascii",errors="replace") >>> r = RandomLexer(f) >>> i = iter(r) >>> len(list(itertools.islice(i,10))) 10
-
lexAlpha
()¶
-
lexDigits
()¶
-
lexRandom
()¶
-
lexStart
()¶
-
minalpha
= 4¶
-
mindigits
= 3¶
-
-
class
cft_code.dnslib.lex.
WordLexer
(f, debug=False)¶ Bases:
cft_code.dnslib.lex.Lexer
Example lexer which will split input stream into words (respecting quotes)
To emit SPACE tokens: self.spacetok = (‘SPACE’,None) To emit NL tokens: self.nltok = (‘NL’,None)
>>> l = WordLexer(r'abc "def@=\. ghi" jkl') >>> list(l) [('ATOM', 'abc'), ('ATOM', 'def@=. ghi'), ('ATOM', 'jkl')] >>> l = WordLexer(r"1 '2 3 4' 5") >>> list(l) [('ATOM', '1'), ('ATOM', '2 3 4'), ('ATOM', '5')] >>> l = WordLexer("abc# a comment") >>> list(l) [('ATOM', 'abc'), ('COMMENT', 'a comment')]
-
commentchars
= set(['#'])¶
-
lexComment
()¶
-
lexNL
()¶
-
lexQuote
()¶
-
lexSpace
()¶
-
lexStart
()¶
-
lexWord
()¶
-
nlchars
= set(['\n', '\r'])¶
-
nltok
= None¶
-
quotechars
= set(['"', "'"])¶
-
spacechars
= set(['\t', ' ', '\x0b', '\x0c'])¶
-
spacetok
= None¶
-
wordchars
= set(['"', '$', '&', '(', '*', ',', '.', '0', '2', '4', '6', '8', ':', '<', '>', '@', 'B', 'D', 'F', 'H', 'J', 'L', 'N', 'P', 'R', 'T', 'V', 'X', 'Z', '\\', '^', '`', 'b', 'd', 'f', 'h', 'j', 'l', 'n', 'p', 'r', 't', 'v', 'x', 'z', '|', '~', '!', '#', '%', "'", ')', '+', '-', '/', '1', '3', '5', '7', '9', ';', '=', '?', 'A', 'C', 'E', 'G', 'I', 'K', 'M', 'O', 'Q', 'S', 'U', 'W', 'Y', '[', ']', '_', 'a', 'c', 'e', 'g', 'i', 'k', 'm', 'o', 'q', 's', 'u', 'w', 'y', '{', '}'])¶
-
cft_code.dnslib.pan_client module¶
DNS Client - DiG-like CLI utility.
Mostly useful for testing. Can optionally compare results from two nameservers (–diff) or compare results against DiG (–dig).
Usage: python -m dnslib.client [options|–help]
See –help for usage.
-
cft_code.dnslib.pan_client.
pan_dig
(domain)¶
cft_code.dnslib.proxy module¶
-
class
cft_code.dnslib.proxy.
PassthroughDNSHandler
(request, client_address, server)¶ Bases:
dnslib.server.DNSHandler
Modify DNSHandler logic (get_reply method) to send directly to upstream DNS server rather then decoding/encoding packet and passing to Resolver (The request/response packets are still parsed and logged but this is not inline)
-
get_reply
(data)¶
-
-
class
cft_code.dnslib.proxy.
ProxyResolver
(address, port, timeout=0)¶ Bases:
dnslib.server.BaseResolver
Proxy resolver - passes all requests to upstream DNS server and returns response
Note that the request/response will be each be decoded/re-encoded twice:
- Request packet received by DNSHandler and parsed into DNSRecord
- DNSRecord passed to ProxyResolver, serialised back into packet and sent to upstream DNS server
- Upstream DNS server returns response packet which is parsed into DNSRecord
- ProxyResolver returns DNSRecord to DNSHandler which re-serialises this into packet and returns to client
In practice this is actually fairly useful for testing but for a ‘real’ transparent proxy option the DNSHandler logic needs to be modified (see PassthroughDNSHandler)
-
resolve
(request, handler)¶
-
cft_code.dnslib.proxy.
send_tcp
(data, host, port)¶ Helper function to send/receive DNS TCP request (in/out packets will have prepended TCP length header)
-
cft_code.dnslib.proxy.
send_udp
(data, host, port)¶ Helper function to send/receive DNS UDP request
cft_code.dnslib.ranges module¶
Wrapper around property builtin to restrict attribute to defined integer value range (throws ValueError).
Intended to ensure that values packed with struct are in the correct range
>>> class T(object):
... a = range_property('a',-100,100)
... b = B('b')
... c = H('c')
... d = I('d')
... e = instance_property('e',(int,bool))
>>> t = T()
>>> for i in [0,100,-100]:
... t.a = i
... assert t.a == i
>>> t.a = 101
Traceback (most recent call last):
...
ValueError: Attribute 'a' must be between -100-100 [101]
>>> t.a = -101
Traceback (most recent call last):
...
ValueError: Attribute 'a' must be between -100-100 [-101]
>>> t.a = 'blah'
Traceback (most recent call last):
...
ValueError: Attribute 'a' must be between -100-100 [blah]
>>> t.e = 999
>>> t.e = False
>>> t.e = None
Traceback (most recent call last):
...
ValueError: Attribute 'e' must be instance of ...
>>> check_range("test",123,0,255)
>>> check_range("test",999,0,255)
Traceback (most recent call last):
...
ValueError: Attribute 'test' must be between 0-255 [999]
>>> check_instance("test",123,int)
>>> check_instance("test","xxx",int)
Traceback (most recent call last):
...
ValueError: Attribute 'test' must be instance of ...
-
cft_code.dnslib.ranges.
B
(attr)¶ Unsigned Byte
-
cft_code.dnslib.ranges.
BYTES
(attr)¶
-
cft_code.dnslib.ranges.
H
(attr)¶ Unsigned Short
-
cft_code.dnslib.ranges.
I
(attr)¶ Unsigned Long
-
cft_code.dnslib.ranges.
IP4
(attr)¶
-
cft_code.dnslib.ranges.
IP6
(attr)¶
-
cft_code.dnslib.ranges.
check_bytes
(name, val)¶
-
cft_code.dnslib.ranges.
check_instance
(name, val, types)¶
-
cft_code.dnslib.ranges.
check_range
(name, val, min, max)¶
-
cft_code.dnslib.ranges.
instance_property
(attr, types)¶
-
cft_code.dnslib.ranges.
ntuple_range
(attr, n, min, max)¶
-
cft_code.dnslib.ranges.
range_property
(attr, min, max)¶
cft_code.dnslib.server module¶
DNS server framework - intended to simplify creation of custom resolvers.
Comprises the following components:
- DNSServer - socketserver wrapper (in most cases you should just
- need to pass this an appropriate resolver instance and start in either foreground/background)
- DNSHandler - handler instantiated by DNSServer to handle requests
The ‘handle’ method deals with the sending/receiving packets (handling TCP length prefix) and delegates the protocol handling to ‘get_reply’. This decodes packet, hands off a DNSRecord to the Resolver instance, and encodes the returned DNSRecord.
In most cases you dont need to change DNSHandler unless you need to get hold of the raw protocol data in the Resolver
- DNSLogger - The class provides a default set of logging functions for
- the various stages of the request handled by a DNSServer instance which are enabled/disabled by flags in the ‘log’ class variable.
- Resolver - Instance implementing a ‘resolve’ method that receives
the decodes request packet and returns a response.
To implement a custom resolver in most cases all you need is to implement this interface.
Note that there is only a single instance of the Resolver so need to be careful about thread-safety and blocking
The following examples use the server framework:
- fixedresolver.py - Simple resolver which will respond to all
- requests with a fixed response
- zoneresolver.py - Resolver which will take a standard zone
- file input
shellresolver.py - Example of a dynamic resolver proxy.py - DNS proxy intercept.py - Intercepting DNS proxy
>>> resolver = BaseResolver() >>> logger = DNSLogger(prefix=False) >>> server = DNSServer(resolver,port=8053,address="localhost",logger=logger) >>> server.start_thread() >>> q = DNSRecord.question("abc.def") >>> a = q.send("localhost",8053) Request: [...] (udp) / 'abc.def.' (A) Reply: [...] (udp) / 'abc.def.' (A) / NXDOMAIN >>> print(DNSRecord.parse(a)) ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: ... ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.def. IN A >>> server.stop()>>> class TestResolver: ... def resolve(self,request,handler): ... reply = request.reply() ... reply.add_answer(*RR.fromZone("abc.def. 60 A <IP_ADDRESS>")) ... return reply >>> resolver = TestResolver() >>> server = DNSServer(resolver,port=8053,address="localhost",logger=logger,tcp=True) >>> server.start_thread() >>> a = q.send("localhost",8053,tcp=True) Request: [...] (tcp) / 'abc.def.' (A) Reply: [...] (tcp) / 'abc.def.'
BaseResolver
¶ Bases:
object
Base resolver implementation. Provides ‘resolve’ method which is called by DNSHandler with the decode request (DNSRecord instance) and returns a DNSRecord instance as reply.
In most cases you should be able to create a custom resolver by just replacing the resolve method with appropriate resolver code for application (see fixedresolver/zoneresolver/shellresolver for examples)
Note that a single instance is used by all DNSHandler instances so need to consider blocking & thread safety.
-
resolve
(request, handler)¶ Example resolver - respond to all requests with NXDOMAIN
-
-
class
cft_code.dnslib.server.
DNSHandler
(request, client_address, server)¶ Bases:
SocketServer.BaseRequestHandler
Handler for socketserver. Transparently handles both TCP/UDP requests (TCP requests have length prepended) and hands off lookup to resolver instance specified in <SocketServer>.resolver
-
get_reply
(data)¶
-
handle
()¶
-
udplen
= 0¶
-
-
class
cft_code.dnslib.server.
DNSLogger
(log='', prefix=True)¶ The class provides a default set of logging functions for the various stages of the request handled by a DNSServer instance which are enabled/disabled by flags in the ‘log’ class variable.
To customise logging create an object which implements the DNSLogger interface and pass instance to DNSServer.
The methods which the logger instance must implement are:
log_recv - Raw packet received log_send - Raw packet sent log_request - DNS Request log_reply - DNS Response log_truncated - Truncated log_error - Decoding error log_data - Dump full request/response-
log_data
(dnsobj)¶
-
log_error
(handler, e)¶
-
log_pass
(*args)¶
-
log_prefix
(handler)¶
-
log_recv
(handler, data)¶
-
log_reply
(handler, reply)¶
-
log_request
(handler, request)¶
-
log_send
(handler, data)¶
-
log_truncated
(handler, reply)¶
-
-
class
cft_code.dnslib.server.
DNSServer
(resolver, address='', port=53, tcp=False, logger=None, handler=<class cft_code.dnslib.server.DNSHandler at 0x4f7a3f8>, server=None)¶ Bases:
object
Convenience wrapper for socketserver instance allowing either UDP/TCP server to be started in blocking more or as a background thread.
Processing is delegated to custom resolver (instance) and optionally custom logger (instance), handler (class), and server (class)
In most cases only a custom resolver instance is required (and possibly logger)
-
isAlive
()¶
-
start
()¶
-
start_thread
()¶
-
stop
()¶
-
cft_code.dnslib.shellresolver module¶
-
class
cft_code.dnslib.shellresolver.
ShellResolver
(routes, origin, ttl)¶ Bases:
dnslib.server.BaseResolver
Example dynamic resolver. Maps DNS labels to shell commands and returns result as TXT record (Note: No context is passed to the shell command)
Shell commands are passed in a a list in <label>:<cmd> format - eg:
[ ‘uptime.abc.com.:uptime’, ‘ls:ls’ ]Would respond to requests to ‘uptime.abc.com.’ with the output of the ‘uptime’ command.
For non-absolute labels the ‘origin’ parameter is prepended
-
resolve
(request, handler)¶
-
cft_code.dnslib.test_decode module¶
Test dnslib packet encoding/decoding
Reads test files from dnslib/test (by default) containing dump of DNS exchange (packet dump & parse output) and test round-trip parsing - specifically:
- Parse packet data and zone format data and compare
- Repack parsed packet data and compare with original
This should test the ‘parse’, ‘fromZone’ and ‘pack’ methods of the associated record types.
The original parsed output is created using dnslib by default so systematic encode/decode errors will not be found. By default the test data is checked against ‘dig’ to ensure that it is correct when generated using the –new option.
By default the module runs in ‘unittest’ mode (and supports unittest –verbose/–failfast options)
The module can also be run in interactive mode (–interactive) and inspect failed tests (–debug)
New test data files can be automatically created using the:
–new <domain> <type>
option. The data is checked against dig output and an error raised if this does not match. This is effectively the same as running:
python -m dnslib.client –query –hex –dig <domain> <type>
It is possible to manually generate test data files using dnslib.client even if the dig data doesn’t match (this is usually due to an unsupported RDATA type which dnslib will output in hex rather then parsing contents). The roundtrip tests will still work in this case (the unknown RDATA is handled as an opaque blob).
In some cases the tests will fail as a result of the zone file parser being more fragile than the packet parser (especially with broken data)
Note - unittests are dynamically generated from the test directory contents (matched against the –glob parameter)
-
class
cft_code.dnslib.test_decode.
TestContainer
(methodName='runTest')¶ Bases:
unittest.case.TestCase
-
cft_code.dnslib.test_decode.
check_decode
(f, debug=False)¶
-
cft_code.dnslib.test_decode.
new_test
(domain, qtype, address='<IP_ADDRESS>', port=53, nodig=False)¶
-
cft_code.dnslib.test_decode.
print_errors
(errors)¶
-
cft_code.dnslib.test_decode.
test_generator
(f)¶
cft_code.dnslib.zoneresolver module¶
Module contents¶
dnslib¶
A library to encode/decode DNS wire-format packets supporting both Python 2.7 and Python 3.2+.
The library provides:
- Support for encoding/decoding DNS packets between wire format, python objects, and Zone/DiG textual representation (dnslib.dns)
- A server framework allowing the simple creation of custom DNS resolvers (dnslib.server) and a number of example servers created using this framework
- A number of utilities for testing (dnslib.client, dnslib.proxy, dnslib.intercept)
Python 3 support was added in Version 0.9.0 which represented a fairly major update to the library - the key changes include:
- Python 2.7/3.2+ support (the last version supporting Python 2.6 or earlier was version 0.8.3)
- The ‘Bimap’ interface was changed significantly to explicitly split forward (value->text) lookups via __getitem__ and reverse (text->value) lookups via __getattr__. Applications using the old interface will need to be updated.
- Hostnames are now returned with a trailing dot by default (in line with RFC)
- Most object attributes are now typed in line with the record definitions to make it harder to generate invalid packets
- Support for encoding/decoding resource records in ‘Zone’ (BIND) file format
- Support for encoding/decoding packets in ‘DiG’ format
- Server framework allowing (in most cases) custom resolvers to be created by just subclassing the DNSResolver class and overriding the ‘resolve’ method
- A lot of fixes to error detection/handling which should make the library much more robust to invalid/unsupported data. The library should now either return a valid DNSRecord instance when parsing a packet or raise DNSError (tested via fuzzing)
- Improved utilities (dnslib.client, dnslib.proxy, dnslib.intercept)
- Improvements to encoding/decoding tests including the ability to generate test data automatically in test_decode.py (comparing outputs against DiG)
- Ability to compare and diff DNSRecords
Classes¶
The key DNS packet handling classes are in dnslib.dns and map to the standard DNS packet sections:
- DNSRecord - container for DNS packet. Contains:
- DNSHeader
- Question section containing zero or more DNSQuestion objects
- Answer section containing zero or more RR objects
- Authority section containing zero or more RR objects
- Additional section containing zero or more RR objects
- DNS RRs (resource records) contain an RR header and an RD object)
- Specific RD types are implemented as subclasses of RD
- DNS labels are represented by a DNSLabel class - in most cases this handles conversion to/from textual representation however does support arbitatry labels via a tuple of bytes objects
Usage¶
To decode a DNS packet:
>>> packet = binascii.unhexlify(b'd5ad818000010005000000000377777706676f6f676c6503636f6d0000010001c00c0005000100000005000803777777016cc010c02c0001000100000005000442f95b68c02c0001000100000005000442f95b63c02c0001000100000005000442f95b67c02c0001000100000005000442f95b93')
>>> d = DNSRecord.parse(packet)
>>> d
<DNS Header: id=0xd5ad type=RESPONSE opcode=QUERY flags=RD,RA rcode='NOERROR' q=1 a=5 ns=0 ar=0>
<DNS Question: 'www.google.com.' qtype=A qclass=IN>
<DNS RR: 'www.google.com.' rtype=CNAME rclass=IN ttl=5 rdata='www.l.google.com.'>
<DNS RR: 'www.l.google.com.' rtype=A rclass=IN ttl=5 rdata='<IP_ADDRESS>'>
<DNS RR: 'www.l.google.com.' rtype=A rclass=IN ttl=5 rdata='<IP_ADDRESS>'>
<DNS RR: 'www.l.google.com.' rtype=A rclass=IN ttl=5 rdata='<IP_ADDRESS>'>
<DNS RR: 'www.l.google.com.' rtype=A rclass=IN ttl=5 rdata='<IP_ADDRESS>'>
The default text representation of the DNSRecord is in zone file format:
>>> print(d)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54701
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 5 IN CNAME www.l.google.com.
www.l.google.com. 5 IN A <IP_ADDRESS>
www.l.google.com. 5 IN A <IP_ADDRESS>
www.l.google.com. 5 IN A <IP_ADDRESS>
www.l.google.com. 5 IN A <IP_ADDRESS>
To create a DNS Request Packet:
>>> d = DNSRecord.question("google.com")
(This is equivalent to: d = DNSRecord(q=DNSQuestion(“google.com”) )
>>> d
<DNS Header: id=... type=QUERY opcode=QUERY flags=RD rcode='NOERROR' q=1 a=0 ns=0 ar=0>
<DNS Question: 'google.com.' qtype=A qclass=IN>
>>> str(DNSRecord.parse(d.pack())) == str(d)
True
>>> print(d)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ...
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN A
>>> d = DNSRecord.question("google.com","MX")
(This is equivalent to: d = DNSRecord(q=DNSQuestion(“google.com”,QTYPE.MX) )
>>> str(DNSRecord.parse(d.pack())) == str(d)
True
>>> print(d)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ...
;; flags: rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com. IN MX
To create a DNS Response Packet:
>>> d = DNSRecord(DNSHeader(qr=1,aa=1,ra=1),
... q=DNSQuestion("abc.com"),
... a=RR("abc.com",rdata=A("<IP_ADDRESS>")))
>>> d
<DNS Header: id=... type=RESPONSE opcode=QUERY flags=AA,RD,RA rcode='NOERROR' q=1 a=1 ns=0 ar=0>
<DNS Question: 'abc.com.' qtype=A qclass=IN>
<DNS RR: 'abc.com.' rtype=A rclass=IN ttl=0 rdata='<IP_ADDRESS>'>
>>> str(DNSRecord.parse(d.pack())) == str(d)
True
>>> print(d)
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ...
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;abc.com. IN A
;; ANSWER SECTION:
abc.com. 0 IN A <IP_ADDRESS>
It is also possible to create RRs from a string in zone file format
>>> RR.fromZone("abc.com IN A <IP_ADDRESS>")
[<DNS RR: 'abc.com.' rtype=A rclass=IN ttl=0 rdata='<IP_ADDRESS>'>]
- (Note: this produces a list of RRs which should be unpacked if being
passed to add_answer/add_auth/add_ar etc)
>>> q = DNSRecord.question("abc.com") >>> a = q.reply() >>> a.add_answer(*RR.fromZone("abc.com 60 A <IP_ADDRESS>")) >>> print(a) ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: ... ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;abc.com. IN A ;; ANSWER SECTION: abc.com. 60 IN A <IP_ADDRESS>
The zone file can contain multiple entries and supports most of the normal format defined in RFC1035 (specifically not $INCLUDE)
>>> z = '''
... $TTL 300
... $ORIGIN abc.com
...
... @ IN MX 10 mail.abc.com.
... www IN A <IP_ADDRESS>
... IN TXT "Some Text"
... mail IN CNAME www.abc.com.
... '''
>>> for rr in RR.fromZone(textwrap.dedent(z)):
... print(rr)
abc.com. 300 IN MX 10 mail.abc.com.
www.abc.com. 300 IN A <IP_ADDRESS>
www.abc.com. 300 IN TXT "Some Text"
mail.abc.com. 300 IN CNAME www.abc.com.

The library also includes a simple framework for generating custom DNS resolvers in dnslib.server (see module docs). In post cases this just requires implementing a custom ‘resolve’ method which receives a question object and returns a response.
A number of sample resolvers are provided as examples (see CLI –help):
- dnslib.fixedresolver - Respond to all requests with fixed response
- dnslib.zoneresolver - Respond from Zone file
- dnslib.shellresolver - Call shell script to generate response
The library includes a number of client utilities:
DiG like client library
# python -m dnslib.client –help
DNS Proxy Server
# python -m dnslib.proxy –help
Intercepting DNS Proxy Server (replace proxy responses for specified domains)
# python -m dnslib.intercept –help
Changelog:¶
0.1 2010-09-19 Initial Release
0.2 2010-09-22 Minor fixes
0.3 2010-10-02 Add DNSLabel class to support arbitrary labels (embedded ‘.’)
0.4 2012-02-26 Merge with dbslib-circuits
- 0.5 2012-09-13 Add support for RFC2136 DDNS updates
Patch provided by Wesley Shields<EMAIL_ADDRESS>- thanks
0.6 2012-10-20 Basic AAAA support
0.7 2012-10-20 Add initial EDNS0 support (untested)
- 0.8 2012-11-04 Add support for NAPTR, Authority RR and additional RR
Patch provided by Stefan Andersson (https://bitbucket.org/norox) - thanks
- 0.8.1 2012-11-05 Added NAPTR test case and fixed logic error
Patch provided by Stefan Andersson (https://bitbucket.org/norox) - thanks
- 0.8.2 2012-11-11 Patch to fix IPv6 formatting
Patch provided by Torbjörn Lönnemark (https://bitbucket.org/tobbezz) - thanks
- 0.8.3 2013-04-27 Don’t parse rdata if rdlength is 0
Patch provided by Wesley Shields<EMAIL_ADDRESS>- thanks
0.9.0 2014-05-05 Major update including Py3 support (see docs)
0.9.1 2014-05-05 Minor fixes
- 0.9.2 2014-08-26 Fix Bimap handling of unknown mappings to avoid exception in printing
Add typed attributes to classes Misc fixes from James Mills - thanks
- 0.9.3 2014-08-26 Workaround for argparse bug which raises AssertionError if [] is
present in option text (really?)
- 0.9.4 2015-04-10 Fix to support multiple strings in TXT record
Patch provided by James Cherry (https://bitbucket.org/james_cherry) - thanks NOTE: For consistency this patch changes the ‘repr’ output for
TXT records to always be quoted
0.9.5 2015-10-27 Add threading & timeout handling to DNSServer
- 0.9.6 2015-10-28 Replace strftime in RRSIG formatting to avoid possible locale issues
Identified by Bryan Everly - thanks
License:¶
BSD
Author:¶
- Paul Chakravarti<EMAIL_ADDRESS>Master Repository/Issues:¶
- https://bitbucket.org/paulc/dnslib (Cloned on GitHub: https://github.com/paulchakravarti/dnslib)


Accordion example
here the content of 1st tab
pweet
plop
here the content of 2nd tab
pweet
plop
here the content of 3rd tab
plop
here the content of 4th tab
pweet
plop
here the content of 1st tab
pweet
plop
here the content of 2nd tab
pweet
plop
here the content of 3rd tab
plop
here the content of 4th tab
pweet
plop
here the content of 1st tab
pweet
plop
here the content of 2nd tab
pweet
plop
here the content of 3rd tab
plop
here the content of 4th tab
pweet
plop
Design pattern
jQuery Accessible tab panel system, using ARIA


Here are some information about available rooms in Busogo campus with their prices and how you can access them. If you are looking for one, help youself and make your choice.
Single Rooms
Available
the price is: RWF 30,000/monthly
Double Rooms
the price is: RWF 20,000/monthly
Square Rooms
the price is: RWF 10,000/monthly


May not work in Chrome.
Available when Bookmarks are not shown.
Useful for when a Background Image is shown.
The page will not scroll if Bookmarks are not shown.
Enter a URL to an image file or a path to a local file.
To use local files enter a relative file path, eg:
../background/abstract.jpg
../background/gray-steps.jpg


| Function | Base SAS Statement / OPTION | PROC SQL Statement / CLAUSE |
| Create a table | DATA | CREATE TABLE |
| Create a table from raw data | INPUT | INSERT |
| Add columns | Assignment statement | SELECT … AS … |
| Drop columns | DROP KEEP | SELECT |
| Add rows | OUTPUT | INSERT INTO |
| Delete rows | WHERE IF/THEN DELETE | DELETE FROM |
| Sorting | PROC SORT | ORDER BY |
| De-dupe records | NODUPLICATE | DISTINCT |
| Establish a connection with a RDBMS | LIBNAME | CONNECT DISCONNECT |
| Send a RDBMS-specific non-query SQL statement to a RDBMS | CONNECTION TO | |
| Concatenating | SET | OUTER JOIN |
| Match merging | MERGE / SET BY IF in1 IF in2 IF in1 & in2 | FROM LEFT JOIN RIGHT JOIN FULL JOIN WHERE / ON |
| Rename column | RENAME | AS |
| Displaying resultant table | PROC PRINT | SELECT |
| Summarizing | PROC [MEANS, FREQ] / BY | GROUP BY |


|
Panda3D
|
This is a base class for those kinds of SavedContexts that occupy an easily-measured (and substantial) number of bytes in the video card's frame buffer memory or AGP memory. More...
Public Member Functions | |
| bool | getActive () |
| Returns the active flag associated with this object. More... | |
| int | getDataSizeBytes () |
| Returns the number of bytes previously reported for the data object. More... | |
| UpdateSeq | getModified () |
| Returns the UpdateSeq that was recorded the last time mark_loaded() was called. More... | |
| bool | getResident () |
| Returns the resident flag associated with this object. More... | |
| Public Member Functions inherited from TypedObject | |
| TypeHandle | getType () |
| int | getTypeIndex () |
| Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
| bool | isExactType (TypeHandle handle) |
| Returns true if the current object is the indicated type exactly. More... | |
| bool | isOfType (TypeHandle handle) |
| Returns true if the current object is or derives from the indicated type. More... | |
Static Public Member Functions | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from SavedContext | |
| static TypeHandle | getClassType () |
| Static Public Member Functions inherited from TypedObject | |
| static TypeHandle | getClassType () |
Public Attributes | |
| bool | active |
| Returns the active flag associated with this object. More... | |
| int | data_size_bytes |
| Returns the number of bytes previously reported for the data object. More... | |
| UpdateSeq | modified |
| Returns the UpdateSeq that was recorded the last time mark_loaded() was called. More... | |
| TypedWritableReferenceCount | object |
| Returns the associated object. More... | |
| bool | resident |
| Returns the resident flag associated with this object. More... | |
| Public Attributes inherited from TypedObject | |
| TypeHandle | type |
| Returns the TypeHandle representing this object's type. More... | |
This is a base class for those kinds of SavedContexts that occupy an easily-measured (and substantial) number of bytes in the video card's frame buffer memory or AGP memory.
At the present, this includes most of the SavedContext types: VertexBufferContext and IndexBufferContext, as well as TextureContext.
This class provides methods for tracking the video memory utilization, as well as residency of each object, via PStats.
| bool getActive | ( | ) |
Returns the active flag associated with this object.
An object is considered "active" if it was rendered in the current frame.
|
static |
| int getDataSizeBytes | ( | ) |
Returns the number of bytes previously reported for the data object.
This is used to track changes in the data object's allocated size; if it changes from this, we need to create a new buffer. This is also used to track memory utilization in PStats.
| UpdateSeq getModified | ( | ) |
Returns the UpdateSeq that was recorded the last time mark_loaded() was called.
| bool getResident | ( | ) |
Returns the resident flag associated with this object.
An object is considered "resident" if it appears to be resident in texture memory.
| bool active |
Returns the active flag associated with this object.
An object is considered "active" if it was rendered in the current frame.
| int data_size_bytes |
Returns the number of bytes previously reported for the data object.
This is used to track changes in the data object's allocated size; if it changes from this, we need to create a new buffer. This is also used to track memory utilization in PStats.
| TypedWritableReferenceCount object |
Returns the associated object.
| bool resident |
Returns the resident flag associated with this object.
An object is considered "resident" if it appears to be resident in texture memory.


.epub
, .mobi
, .pdf
versions from Leanpub. If you want a digital edition, then please buy from Leanpub.
Order Now!
Print Edition Is Available On Amazon, too!
Kindle is also available in these Amazon territories. That said, if you want the digital edition, I hope you'll consider buying it from Leanpub first. It's better for me and the publishing industry if more people buy from them. :) US IN UK FR DE ES NL JP BR CA MX AU


Write here you own text
Marathon VC portfolio job board, Venture friends portfolio job board, Workable startups job board, Facebook group.
Yes, it's completely free. No, I don't get any introduction fees. See the first question of why I build this website.
Never said the opposite.
It can take up to a couple of minutes to publish changes.
The policy is first in first served, I don't control which job posts are showing on the top.
Via mail, it's the shortest path - Your email
Just send me an email and I will take care of it - Your email
I collect anonymous usage data using an industry standard third-party analytics service (Google Analytics) to better understand the performance of the website. The information I collect via third party services does not contain any personal information. The information I collect is used to improve "Just another job board" and the quality of the website and is not shared with or sold to others.
The "Just another job board" website doesn't store any data. All the data you provide are stored in a google sheet and can be deleted when you ask for it.
Sure and you don't need to learn to code. Just go to the link and follow the instructions. In less than 10 minutes you can have your own.
Feel free to shoot an email to the initial creator of Just Another Job Board - dimitrisdimosiaris@gmail.com


Singapore swimmers set new SEA Games record in 50m freestyle heats
by Matthew MohanNEW CLARK CITY, Philippines: Singapore swimmers Jonathan Tan and Teong Tzen Wei both clocked the same time (22.46) in the men's 50m freestyle heats to set a joint-new SEA Games record on Monday (Dec 9).
Swimming in two different heats, both of them managed to eclipse the 22.47 set by Joseph Schooling at the 2015 Games in Singapore.
This also means that Teong, the defending champion in the event, equals the national record set by Tan earlier this year.
READ: Swimming: Four SEA Games records for Quah siblings, four golds for Singapore on day one of competition
READ: Singapore’s young swimmers smash records at SEA Games
Tan, 17, and Teong, 22, have qualified for the finals of the event, slated to be held later tonight.
Singapore’s swimmers have clinched a total of 18 golds so far in the competition.
Follow Mediacorp’s coverage of the 30th SEA Games and get the widest Team Singapore coverage with four LIVE channels on Toggle. Go to toggle.sg/seagames2019 for details.


FileCreateDir(), FileDeleteDir()
You can create directories with
FileCreateDir()
. The routine takes a single argument, namely the address of a character string. If the string is simply a directory name, it will attempt to create that directory at the current location. If the string is a relative path, it will create the directory at the end of the path, if possible. For example, passing the string "Memos\September" will cause it to check if there is a directory called "Memos" at the current location. If there is, it will create the directory "September" inside the directory "Memos". If the string is an absolute path (i.e. there is a backslash before the first directory name), it will behave the same way, but it will start with the root directory. The routine returns zero if it was successful. If it was unsuccessful, it will return one of the following error codes:
FileCreateDir()
to create the directory inside of a directory which does not exist.Note that the directory name can be any acceptable GEOS file name; that is, it may be up to 32 characters long and can contain any characters other than backslashes, colons, asterisks, or question marks. For further information about GEOS file names, see DOS Files and GEOS Files .
You can delete directories with
FileDeleteDir()
. This routine takes a single argument, namely the address of a character string. This string can specify a relative or absolute path, as with
FileCreateDir()
. It attempts to delete the directory specified. (Note that you are not allowed to delete your current directory or a non-empty directory.) If it successfully removes the directory, it returns zero. Otherwise, it returns one of the following members of the
FileError
type:


W32567-2352-4756
Artour Arteezy
| # | Description | Quantity | Unit Cost | Total |
|---|---|---|---|---|
| 1 | Server hardware purchase | 35 | $75.00 | $2,152.00 |
| 2 | Office furniture purchase | 21 | $169.00 | $4,169.00 |
| 3 | Company Anual Dinner Catering | 58 | $49.00 | $1,260.00 |
| 4 | Payment for Jan 2016 | 231 | $12.00 | $866.00 |
Sub - Total amount: $5,700.00
VAT: $57.00
Grand Total: $5,757.00


Adding new algorithm
To create new algorithm page add to project two files: AlgorithmNameClient.fs
and AlgorithmNameServer.fs
Then edit next type adding link for new page:
1: 2: 3: 4: |
|
Next, create function that will generate empty page:
1: 2: 3: 4: 5: 6: 7: 8: |
|
Where NewPage.MainFormRun ()
is a form that you have to run from NewPageClient.fs
file using WebComponents
module.
This is the example of empty page:
To add descriptional form for you algorithm on main page add next code:
1: 2: 3: 4: 5: 6: |
|


1
By those who drag forth to destruction,
5
And those who govern the event,
6
On the day when the first trump resoundeth.
7
And the second followeth it,
8
On that day hearts beat painfully
10
(Now) they are saying: Shall we really be restored to our first state
11
Even after we are crumbled bones ?
12
They say: Then that would be a vain proceeding.
13
Surely it will need but one shout,
14
And lo! they will be awakened.
15
Hath there come unto thee the history of Moses ?
16
How his Lord called him in the holy vale of Tuwa,
17
(Saying:) Go thou unto Pharaoh - Lo! he hath rebelled -
18
And say (unto him): Hast thou (will) to grow (in grace) ?
19
Then I will guide thee to thy Lord and thou shalt fear (Him).
20
And he showed him the tremendous token.
21
But he denied and disobeyed,
22
Then turned he away in haste,
23
Then gathered he and summoned
24
And proclaimed: "I (Pharaoh) am your Lord the Highest."
25
So Allah seized him (and made him) an example for the after (life) and for the former.
26
Lo! herein is indeed a lesson for him who feareth.
27
Are ye the harder to create, or is the heaven that He built ?
28
He raised the height thereof and ordered it;
29
And He made dark the night thereof, and He brought forth the morn thereof.
30
And after that He spread the earth,
31
And produced therefrom the water thereof and the pasture thereof,
32
And He made fast the hills,
33
A provision for you and for your cattle.
34
But when the great disaster cometh,
35
The day when man will call to mind his (whole) endeavour,
36
And hell will stand forth visible to him who seeth,
37
Then, as for him who rebelled
38
And chose the life of the world,
40
But as for him who feared to stand before his Lord and restrained his soul from lust,
41
Lo! the Garden will be his home.
42
They ask thee of the Hour: when will it come to port ?
43
Why (ask they) ? What hast thou to tell thereof ?
44
Unto thy Lord belongeth (knowledge of) the term thereof.
45
Thou art but a warner unto him who feareth it.


{% extends "layout.html" %} {% from "macros.html" import challenge_list %} {% block title %}Gif Off - Free .gif Competition {% endblock %} {% block description %}Free app to have .gif battles with your friends. Set up private groups, choose a judge, and go.{% endblock %} {% block content %} {% if current_user.is_authenticated %}
Each group you create requires a special invite. Create as many as you like for any number of your friend groups.
Create a groupOn your group's homepage you'll find a link to create a challenge. You can have one active at a time per group.
Just give it a name, a start time & end time, add a couple of prompts to spur your friends creativity.
As the judge you can click each entry and rate it from 0-5.
Complete the challenge to calculate the winner and make all the gifs available for the group to review.
Winners are tracked over time and a leaderboard is available for each group.


---
layout: post
title: ! 'Next Meetup: Tuesday 3rd July 2012'
alias: /next-meetup-tuesday-3rd-july-2012
published: true
---
Hello!
Our next meetup will be on the 3rd July, at The Brewery Tap in Ipswich (as per usual).
Update: We have another volunteer!
Matthew Bennett is going to give us a talk called "Testing the sconover/wrong way", so it looks like a rather test based session this one!
We have one volunteer already: Chris Sinjakli (@chrissinjo) is going to talk about better testing methods using Mutation Testing. We still need another speaker though, who's up for giving a talk? It doesn't need to be too long!
As also mentioned, I'm hoping to sort a curry night for Wednesday June 13th.. so let me know if you're interested in that.
Cheers!
Tom


| PLGA nanoparticles |
Vaginal |
A biphasic release with an initial burst phase followed by a sustained release phase |
[
60]
|
| Electrospun fibers |
In vitro |
Maintenance of antiviral efficacy |
[
57]
|
| FDI comprised of |
Vaginal |
Good friability, hardness, and stability |
[
58]
|
| mPEG-PLGA:PBA-co-PAA |
Vaginal |
High GRFT loading and pH-dependent release |
[
59]
|


Hello! I’m Matt Zanchelli.
I design and develop software professionally.
I take photos while hiking and biking
and enjoy listening to music.
Like many others, I have my own opinions.
Hello! I’m Matt Zanchelli.
I design and develop software professionally.
I take photos while hiking and biking
and enjoy listening to music.
Like many others, I have my own opinions.


The last education is a Bachelor of informatics engineering education, taking expertise in information systems and software development. Enthusiastic about the development of web technology and data processing.


--- layout: post title: Uploading files in RM 83 categories: [] tags: cm-83 serviceapi status: publish type: post published: true meta: {} ---
We have always been able to upload a new revision for a record, uploading other document types (e.g. record rendition, location electronic attachment) was not always that simple, now it is.


Madden: Excuse me, sir, have you seen a mysterious Chinese man at this station? Boy: Yes, I've seen him, he was heading to Dr. Stephen Albert's house. Madden: How do I get there? Boy: Always turn left, sir.
Choose a Character


Simple HTML Page to Test sender to PDF Renderer
Button before me
Does this question appear?
The answer is Yes


{include file="public/header" /}
{include file="public/left" /}
售后工单
查询
日期
~
搜索
写工单
{include file="public/footer" /}


API
Dashboards
Search
My Dashboard
Name
Description
Services
Add Services
Service
Description
Environment
Category
URL
Swagger Spec
Swagger UI
Add
User Activity Service
Processes and retrieves aggregated and raw user activity data
local
Matching


| Kristin Weber |
Christin Weber |
Hard 'k" sound can be made with a 'k' or a 'ch' |
| Lucy Lu / Lucy Lew |
Lucy Liu |
Chineese names can be Anglicized in different ways |
| Ashi Kaper |
Ashwani Kapur |
Hindi nicknames can be unknown to English speakers |
| Jake Bruder |
Joachim Bruder |
German nicknames can be unknown to English speakers |
| Yokim Bruder |
Joachim Bruder |
English speakers my hear it pronounced with a 'y' |
| Tom Jefferson |
Thomas Jefferson |
Tom is just a nickname for Thomas |
| Jon Jash |
Johnny Cash |
Is the persons real name Jon, John, Johnny, etc. |
| Candy Cardigan |
Kandi Kardigen |
Spelling of names can be personalized |
| B3n Sti11er |
Ben Stiller |
Is it a 1 or an l? (this is more useful in other applications) |
| Suzzy Seranden |
Susan Sarandon |
To help find names with similar sounding consonants |
| Hans Olo |
Han Solo |
Space in the wrong spot |


Please read the following content, and confirm your understanding of the document at the bottom of this page.
The class setup privilege (required for setup of your own students/classes) comes with more responsibility in the Mobilize system. Please read the following and confirm your understanding
- The user will not share his/her account username and password with anyone under any circumstances. A member of the Mobilize project will never ask the user for their password.
- The user will create classes and add students only for the purpose of the Mobilize units and will not create classes for other teachers.
- The user will ensure they are logged out of their account before leaving their computer unattended.
- The user will keep generated accounts and passwords for students private and share the account information to assigned students only.
- Mobilize personnel reserve the right to modify or terminate accounts of users at any time for any reason.


熊猫超人的主页
"『你们毕竟还 too young，明白这意思吧？』——长者"
Bright star
Bright star, would I were stedfast as thou art
Not in lone splendour hung aloft the night
And watching, with eternal lids apart,
Like nature's patient, sleepless Eremite,
The moving waters at their priestlike task
Of pure ablution round earth's human shores,
Or gazing on the new soft-fallen mask
Of snow upon the mountains and the moors
No---yet still stedfast, still unchangeable,
Pillowed upon my fair love's ripening breast,
To feel for ever its soft fall and swell,
Awake for ever in a sweet unrest,
Still, still to hear her tender-taken breath,
And so live ever---or else swoon to death.


Order Here
ORDER
We are currently only shipping in Ontario. If you’re interested in
shipping outside of Ontario,
please contact<EMAIL_ADDRESS>imageContentContainerOrder
twelveMile
ADD TO CART
ambear
ADD TO CART
bamberg
ADD TO CART
captainsLog
ADD TO CART
cosmic
ADD TO CART
ADD TO CART
firstLight
ADD TO CART
jurassic
ADD TO CART
oneEyed
ADD TO CART


Passing around functions in functional languages like haskell or clojure is how you program in those languages. Passing around functions in C/C++ is possible but more tedious. The syntax for function pointers is quite daunting and relatively limited in it's application. For example it is not possible to pass a member-function around.
delegates take care of some of the problems and allow to easily pass around and store "functions".
class A
{
public:
int square(int x)
{
return x * x;
}
};
...
auto d = make_delegate(&A::square, a);
...
It doesn't matter how many arguments the function has. Template argument deduction takes care of that.
class A
{
public:
float crazy(int I, char wanna, float go, const char *crazy)
{
...
}
};
...
auto d = make_delegate(&A::crazy, a);
...
If you wanna know what type the delegate has, just provoke a compiler error. This will tell you the correct type:
int d = make_delegate(&A::crazy, a);
...
tests/delegateTests.cpp:104:13: error:
no viable conversion from 'delegate<float (A::*)(int, char, float, const char *)>' to 'int'
int d = make_delegate(&A::crazy, a);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~


How to Play
First, the board must be set up properly as shown in the picture. Next, whoever chooses white gets to go first. Both players take turns moving a piece until the game is over. If an enemy piece is on the square where your piece lands, you must remove their piece from the board, thereby capturing it. If an enemy piece is in the way of where you are trying to go, you cannot move past it, unless the piece you are moving is a knight.
King Movement
The king can move 1 space in every direction.
Queen Movement
The queen can move as many spaces as desired in any direction.
Bishop Movement
The bishop can move diagonally as many spaces as desired.
Knight Movement
The knight can move 2 spaces in one direction and 1 to the side. This makes an L shape. The knight can also jump over pieces in its way.
Rook Movement
The rook can move orthogonally as many spaces as desired.
Pawn Movement
The pawn can only move one space forward at a time. It cannot capture pieces in front of it though. It can move diagonally to capture pieces, but that is the only time pawns can move diagonally.
The pawn can move two spaces the first time you move it though.
Castling
If the king and rook have not moved yet, you can move the king two spaces and put the rook on the other side.
You can do this on both sides.
Check and Mate
If a piece is attacking the king, it is called check, and the king must move out of the way. If there are no spaces available, that is checkmate, and the game is over.


Call to action for Eidomeni. This is form for volunteers who are interested in helping in Eidomeni camp
Call to action for Patras. This is form for volunteers who are interested in helping in Patas
Call to action for Lesvos island. This is form for volunteers who are interested in helping in Lesvos island
Call to action for supporting a camp (One day event)
Call to action for a multiple days event
Call to action for a pop up event
Create your own form
Volunteers for Eidomeni, available on Saturday 21/11
Voluteers for Eidomeni, available on Saturday 21/11 speaking Farsi
Seach in forms
AboutContact


--- layout: page title: About header-img: "img/about-bg.png" ---
On a mission to stir it up...once again. Who knew this time it would be tech.


Charles Schwab to buy TD Ameritrade for $26 billion
The new combined entity would have assets of about $5 trillion.
Charles Schwab Corp will buy TD Ameritrade Holding Corp in an all-stock deal valued at $26 billion, the two largest U.S. discount brokerages said on Monday, as they try to fend off competition from newer rivals.
The deal is expected to be heavily scrutinized by regulators, and is a response to recent disruption in the industry, where nimbler startups like Menlo Park, California-based Robinhood are rapidly gaining market share by eliminating commissions on stock trades.
TD Ameritrade's shares were up 2.8%, while Schwab was down 2.1% in premarket trade.
As part of the deal, expected to close in the second half of 2020, Ameritrade stockholders will get 1.0837 Schwab shares for every share held, or $52.23 based on Schwab's Friday close.
The deal is expected to add 10%-15% to GAAP EPS and 15%-20% to operating cash EPS in the third year following the close of the deal, the companies said.
"Some of the expense synergies the combined firm expects to realize will come from elimination of overlapping and duplicative roles."
Based on Schwab's Friday close, the deal represents a premium of 26% to TD Ameritrade's closing price on Wednesday, a day before CNBC reported the deal, citing sources. The news had sent TD Ameritrade's shares surging as much as 25% on Thursday.
TD Ameritrade CEO Tim Hockey is due to step down in February. The companies said on Monday they will suspend the CEO search and named TD Ameritrade Chief Financial Officer Stephen Boyle as TD's interim president and CEO.
Last week, CNBC reported the combined company is expected to be led by Schwab's Chief Executive Officer Walt Bettinger.
The new combined entity would have assets of about $5 trillion.
Credit Suisse Securities (USA) was Schwab's financial adviser, while PJT Partners LP and Sandler O'Neill + Partners LP advised TD Ameritrade.


Abia 301 hotels in Abia with over 155 reviews
Abuja 1,096 hotels in Abuja with over 2,202 reviews
Adamawa 70 hotels in Adamawa with over 45 reviews
Akwa Ibom 474 hotels in Akwa Ibom with over 286 reviews
Anambra 297 hotels in Anambra with over 117 reviews
Bauchi 51 hotels in Bauchi with over 51 reviews
Bayelsa 185 hotels in Bayelsa with over 48 reviews
Benue 297 hotels in Benue with over 32 reviews
Borno 25 hotels in Borno with over 6 reviews
Cross River 372 hotels in Cross River with over 325 reviews
Delta 639 hotels in Delta with over 407 reviews
Ebonyi 101 hotels in Ebonyi with over 18 reviews
Edo 386 hotels in Edo with over 450 reviews
Ekiti 237 hotels in Ekiti with over 194 reviews
Enugu 352 hotels in Enugu with over 420 reviews
FCT 11 hotels in FCT with over 3 reviews
Gombe 44 hotels in Gombe with over 24 reviews
Imo 323 hotels in Imo with over 289 reviews
Jigawa 33 hotels in Jigawa with over 4 reviews
Kaduna 340 hotels in Kaduna with over 244 reviews
Kano 138 hotels in Kano with over 108 reviews
Katsina 32 hotels in Katsina with over 23 reviews
Kebbi 27 hotels in Kebbi with over 9 reviews
Kogi 266 hotels in Kogi with over 45 reviews
Kwara 334 hotels in Kwara with over 286 reviews
Lagos 3,294 hotels in Lagos with over 7,893 reviews
Nasarawa 244 hotels in Nasarawa with over 56 reviews
Niger 116 hotels in Niger with over 55 reviews
Ogun 737 hotels in Ogun with over 459 reviews
Ondo 259 hotels in Ondo with over 181 reviews
Osun 325 hotels in Osun with over 243 reviews
Oyo 648 hotels in Oyo with over 597 reviews
Plateau 284 hotels in Plateau with over 130 reviews
Rivers 513 hotels in Rivers with over 533 reviews
Sokoto 20 hotels in Sokoto with over 48 reviews
Taraba 99 hotels in Taraba with over 6 reviews
Yobe 11 hotels in Yobe with no reviews
Zamfara 28 hotels in Zamfara with over 9 reviews


Please confirm timing for commencement of supports:
Support Commencement Details:
Task Number Start Date & Time:
{{ stepSupportsService?.evacFile?.task?.from | date: 'dd-MMM-yyyy' }} at {{ stepSupportsService?.evacFile?.task?.from | date: 'hh:mm a' }}
Support Period:
Valid From:


Discussion on Atlanta's Black Tech ecosystem with respect to Colleges and post-secondary education
Discussion on Atlanta's Black Tech ecosystem with respect to K-12 education
Discussion on Atlanta's Black Tech ecosystem with respect to corporations
Discussion on Atlanta's Black Tech ecosystem with respect to local government
Discussion on Atlanta's Black Tech ecosystem with respect to startups and entreprenuership


NFC East Small Multiples
Washington Redskins
Toggle
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
Using Small Multiples to survey the landscape of the NFL over the last 10 years.


${conf["website.title"]}
${conf["website.title"]}
Toggle navigation
${profile.nickname}
${profile.nickname} - ${profile.loginname}
Member since Nov. 2012
Followers
Sales
Friends
Profile
Sign out
Dashboard
Control panel
Home
Dashboard


ABOUT FRC
FIRST Robotics Competition or FRC is a program for high school students working with adult mentors to learn about STEM and even some other aspects of teamwork and operating a robotics club. For more information, visit our About FIRST page. Iowa City Robotics is a non profit organization that was setup to support the Iowa City area FRC team, #167 - Children of the Corn.
The Iowa City FRC program runs year round and is split into 4 seasons:
- Off-Season (May-Aug): During this time meetings are more sporadic and event-based. We focus on outreach events, fundraisers, and host robot camps for 7-10 year olds.
- Pre-Season (Sep-Dec): The team meets once weekly to recruit and train new FRC members
- Build Season (Jan-Mar): This is the most critical time for the team. In this two months the competition game is revealed and the robot is constructed. Team meetings will be more frequent.
- Competition Season (Mar-Apr): The team travels for 1-2 regional events to hopefully qualify for the world championship.
SEASON BREAKDOWN
The FRC game changes every year and the kickoff of a new season is typically the first full weekend in January. This is a virtual event but we typically get together and watch it as a team. Kickoff is also an important day for students to breakdown the rules of the game and begin forming their strategy.
During the build season, we typically meet 3-4 times a week. As we get closer to our competition date, the frequency of meetings increases. On the weekends we tend to get a couple of pizzas to keep the students energy levels high. We also love it when parents donate snacks for the team. The mentors are determining what dates work best for our schedule. You can always find our practice schedule here.
The team typically registers to compete in 2 regionals. Regional competitions are 3 days long, a practice day followed by two days of matches. The regionals are livestreamed but parents are welcome and it is free to the public. For the 2022 season, our first regional is in Duluth, Minnesota. We will travel to Duluth on Wednesday March 1, Thursday is the practice day and Friday/Saturday is match play and the playoffs. We will travel back on Sunday, March 5. The other regional we are competing in is the Iowa Regional which is in Cedar Falls. That one, we will travel up on Thursday morning, March 22. Again, Friday and Saturday is match play and playoffs but we will travel back that Saturday evening. If we are fortunate to qualify for the World championships, that competition is in Houston on April 19-22.
These competitions are such a great experience where all our hard work is put into motion. Although competitions are not required, it is encouraged. Once you've been to one, you always want to go back. Estimated costs for these competitions are typically $100-$200 per student. This will cover transportation and lodging along with our competition uniform (polo and t-shirt). If we continue to fundraise, some of these costs can be covered.
WHAT IS NEEDED FROM PARENTS
- Register your student in STIMS if you haven't done so already. It's required every year and it doesn't carry over from one FIRST program to another. If registered for an FTC team, you still need to register for our FRC team. You can do this by going to firstinspires.org and click on register in the top right corner of the website. If you need help, go to this site. Our team number is 167 and the program is FRC or FIRST Robotics Competition. This is a requirement for students wanting to participate in any FIRST competition.
- Complete the parent/guardian liability waiver and health forms. Please indicate if there's any food allergy that we need to be aware of. Have your student turn in a hard copy or email Coach Mike an electronic version. These are due before the build season starts.
- We have a team apparel on-line store where you can purchase our team competition polo shirt if your student doesn't have one already and a team competition t-shirt that is new every year. We also have sweatshirts and a quarter zip available for purchase. Team store orders are due December 12. You can visit the store here.
- Any help connecting with company sponsors or donors. We have raised enough to cover registration fees and some robot material costs. We need a lot more if we want to cover student competition costs.
- Donating snacks for weekend practices or lunch making materials for competitions
- Company matched donations
- We are currently searching for a mentor to assist with graphic design, computer animation, or team branding and artwork
QUICK LINKS
- Blue Alliance: Stats about the team, competiton replays, and more - www.thebluealliance.com/team/167
- Team 167 FRC Page: Brief team history and multi-season statistics - www.frc-events.firstinspires.org/team/167
- FIRST Twitch: Livestream for competitions and FIRST related events - www.frc-events.firstinspires.org/watch
- Iowa Regional Information: Schedule, event information - www.iafirst.org/iowa-frc/current-regional/
- Duluth Regional Information: Two regionals are held here, ask your student for the specific event name - www.frcnorthland.org/duluth-regionals/
OTHER OPPORTUNITIES
Fun for the Whole Family
We offer two summer camps: a LEGO® Robotics camp and a Python Programming camp for students in the 3rd through 8th grades.
Learn MoreVolunteer with Us
Want to help at a practice or event? We're always looking for parents or STEM professionals to help keep our program running.
Learn MoreWays to Donate
It takes a lot of funding to run our program.
Learn More


MainWindow Class Reference
List of all members.
Public Member Functions |
|
| MainWindow () |
| | Calls functions to greate GUI Elements.
|
|
| ~MainWindow () |
| | Default destructor.
|
|
QStringList & | getScoreList () |
| void | setIcons (QIcon *icon1, QIcon *icon2) |
| | Sets the icons in the BoardWidget object.
|
|
void | saveSystemTrayChoice (bool isChecked) |
|
void | saveGameplayOptDialogChoice (bool isChecked) |
|
void | saveDepth (int depth) |
|
void | savePlayersName (QString name) |
|
void | savePlayersTurn (QString turn) |
|
void | showWindow () |
|
Player * | getPlayer1 () |
|
int | getDepth () |
|
QString & | getTurn () |
Protected Member Functions |
|
void | closeEvent (QCloseEvent *event) |
Member Function Documentation
| void MainWindow::setIcons |
( |
QIcon * |
icon1, |
|
|
QIcon * |
icon2 | |
|
) |
| | |
Sets the icons in the BoardWidget object.
- Parameters:
-
| icon1 | first icon |
| icon2 | second icon |
The documentation for this class was generated from the following files:


GFX Library Sample
Overview
This sample is built on top of the ST7789 display sample (st7789 display), extending it with the Adafruit GFX Library [https://github.com/adafruit/Adafruit-GFX-Library].
The library was ported from Arduino and has the same functionality and API.
See src/main.cpp
for examples on the GFX API usage.
See st7789 display for more details on working with the display itself.
Usage
Add the gfx sample from this repo into your project:
$ cp samples/gui/gfx ~/zephyrproject/zephyr/samples/gui/
Note
In order to make the library work the sample is built with C++ support. This is achieved by having the following line in the sample’s prj.conf configuration:
CONFIG_CPLUSPLUS=y
Build & flash the sample:
$ west build -p -b pinetime samples/gui/gfx
$ west flash
If all goes well, you should see a looping graphical test: drawing lines, rectangles, triangles etc.


{% extends "layout.html" %} {% block body %} Describe what you would like to learn example: I want to learn more about Asian Culture. {% endblock %}
example: I want to learn more about Asian Culture.


Main Page
Modules
Data Structures
Files
Data Structures
Data Fields
vqec_rtp_source_id_ Struct Reference
#include <vqec_rtp.h>
Data Fields
rtp_source_id_t
id
uint32_t
thresh_cnt
Detailed Description
Structure to maintain RTP pktflow sources.
Field Documentation
rtp_source_id_t
vqec_rtp_source_id_::id
RTP identifier for the source.
uint32_t
vqec_rtp_source_id_::thresh_cnt
Last reported threshold crossing count.
The documentation for this struct was generated from the following file:
vqec_rtp.h
Generated on Mon Aug 20 17:45:07 2012 for VQE-C by
1.4.7