actions
action
alerts
all channels
apps
arrow-up
audience
bar-chart
block-arrow
budget-flight
calendar
campaigns
carat-line
carat
card
certificate
changelog
charity
chart-dashed-2
chart-dashed
chart
check-alt
check
circle-arrow
clock
companion
contextual
creatives
cycle-arrow
day-part
deals
delete
details
display
dmp
document
dots
download
drag-drop
duplicate
edit
event-marker
exclude
expand-all
fail
favorite
filter
geo-map
geo-tag
grid-table
group
health
include-outline
include
info
jump-to
left-right-arrow
lego
line-chart-2nd
line-chart
lock
markets
minus
my-data
partial-include
partial
pause
pending
pie-chart
pixel-user
pixels
play
player
plus
preview
question
quick edit
refresh
reporting
scatter-plot
search
site-list
sort
success
supply-node
supply
three-pas-adserver
tools
tracker
unlock
up-arrow
upload
user
video
warning
wireless
xml


Our Story
It all began one day when Kason went to his pantry to get some gluten-free pasta (a staple in his house) for his dinner. He realized that he had run out and he couldn't believe it! He ALWAYS had gluten-free pasta in his pantry, but somehow, he forgot to buy some the last time he went to the store.
He was telling his friends Ryan, Stefanie, and Rahzae about his frustration, and they all chimed in with their own similar stories, and how they wished there was a way to track their grocery items so they could replace them before they ran out, or ensure they were used before they passed their expiration date.
And foodWise was born....


About this site
As of October 15, 2018, Crown land applications that are open for public commenting will be posted on this website. If you are looking for an application posted prior to October 15, 2018 please refer to the Applications and Reasons for Decision website. This website is used to post Crown land application information for public review and comment, as per Section 32(2) of the Land Act.
Crown land is land (or land covered by water, such as rivers or lakes) that is available for public use for many different purposes - from industry, to recreation and research. Government is currently responsible for granting land-use access to this land in consultation with First Nations and members of the public. To make an application for use of Crown land, visit the Natural Resource Online Services website.
Help us build a better website
The Applications, Comments & Reasons for Decision website is evolving and we are looking for your ideas on how we can improve it. If you are interested in providing us with feedback about your experience using this website, please send us your feedback.
emailSend Feedback


| session | professor | points earned | total points | current grade |
|---|---|---|---|---|
| {{session_id}} | {{course_info['teacher']}} | {{ points_received }} | {{ total_points }} | {{ current_grade }}% |
| assignment | points earned | total points | grade |
|---|---|---|---|
| {{assignment_grade['assign_name']}} | {{assignment_grade['earned']}} | {{assignment_grade['total']}} | {{assignment_grade['assignment_grade']}}% |


Marko: Gasly "would have never recovered" staying at Red Bull
by Nicolás Quarles van UffordAfter reviving his F1 career in spectacular fashion at Toro Rosso, Aston Martin Red Bull Racing advisor Dr Helmut thinks Pierre Gasly needed the step down for the sake of his career.
After massively struggling the first half of the season in the Red Bull next to Max Verstappen, Gasly has gotten back to best since his demotion back to Toro Rosso. The Frenchman has consistently been in the points and even scored a podium at the Brazilian Grand Prix for the Faenza-based team.
He never managed that while driving the superior RB15, which speaks volumes to how comfortable the 23-year-old is back at his old team.
Speaking to Motorsport.com, Marko explained why the demotion to Toro Rosso was necessary for Gasly's own sake, as he doesn't think this uptick in performance would've happened at Red Bull.
“He’s recovered, and now we see the real Pierre,” the Austrian explained. “We always believed in him. It was positive for him, otherwise at Red Bull Racing I think he never would have recovered.”
Gasly's worst moment was at the Austrian Grand Prix when he got lapped by Verstappen despite driving the same car, with the Dutchman going on to take his first win of the season.
“It was not so easy for him this season, but he came back,” Toro Rosso team principal Franz Tost continued. “I think Pierre from the very beginning onwards felt quite well in the car, and in the team of course.
"We knew each other, the engineers knew him, and this helped. And our car at this point was easy to drive.”


@import utils.templates.NavBarSettings @(nb_settings: Option[NavBarSettings] = None)(implicit request: play.api.mvc.Request[AnyContent], configuration: play.api.Configuration) @views.html.headers.c160802_main("Get Easier Solar Quotes") { @views.html.navbar_header()
In the past, installing solar panels cost thousands of dollars up front and took homeowners up to 10 years to recoup their initial investment. Luckily things are different now, with the new 2016 Solar Programs, homeowners in certain zip codes can now use government incentives to install solar panels with zero upfront costs, which allows them to start saving money on day 1.
Solar panels allow homeowners to gain control of their energy costs by producing their own clean energy at a substantially cheaper rate than they would otherwise pay their power company - typical homeowners have seen their power bill shrink by up to 70%! 2016 solar initiatives are revolutionizing the way homeowners pay for power and have power companies across America on the edge.
Your power company does not want you to know about this program because:
- This program makes it easy for just about any homeowner to get solar panels with zero upfront costs
- You are no longer solely reliant on power companies with rising rates
Not a great deal for power companies because they would rather keep you paying high rates, but great for the typical homeowner and the environment. Here is what we love about this program:
- Typical homeowner can reduce their power bill up to 70%
- Homeowners can now produce clean energy on their own roof and avoid the annual energy rate hikes by power companies
- No out of pocket cost to get solar panels installed, meaning instant savings
- Great for the environment, significantly decrasing global warming
Reputable solar companies can now accurately estimate solar savings based on historical usage and the electronic appliances in your home. To help homeowners get qualified for solar programs in their area, EasierSolar’s free service easily connects homeowners with solar companies matched to their specific needs. In just a few minutes, any homeowner can get side-by-side rate comparisons from top-tier solar companies and info on available incentives.
When you consider that EasierSolar's service is free, there are no obligations, and it only takes minutes to complete, the decision seems pretty simple. Using EaseirSolar is the best way to see if you are solar ready and and can reduce your energy bill quickly.
Find and compare reputable solar companies in your area
EasierSolar is dedicated to helping American homeowners switch to using clean, low-cost solar energy. They are currently connecting smart homeowners like you with reputable solar companies that can help them reduce their power bill.
With EasierSolar, there's no obligation and service is fast and easy. It takes less than two minutes, and finding a reputable solar company is 100% free.
You have nothing to lose!
100% privacy. No spam.
Get Started
Ok
Millions of smart homeowners are using new 2016 incentives to install solar panels with no upfront costs and are saving loads of money everyday. This program will expire in 2016 so act now See if you qualify


---
title: Quantum Programming
ref: quantum
image: atom.png
description: "In this project we develop new techniques to develop, analyze, and
reason about quantum programs."
---
Publications
{% include get-publications.html filter="project" key="quantum" %}


OS Matrix
×
Select platform
iOS
iOS
Windows
Android
Select feature
Select
Select
User enrollment
DEP
Total iOS devices
7490
Corporate owned
5975
Employee owned
3429
Others
523
Devices that support this feature (iOS)
68%
2k/3.5k
Corporate owned
80%
1.4k/2k
Employee owned
30%
0.3k/1k
Others
75%
0.3k/0.4k


apache_beam.transforms.trigger module¶
Support for Dataflow triggers.
Triggers control when in processing time windows get emitted.
-
class
apache_beam.transforms.trigger.
AccumulationMode
[source]¶ Bases:
object
Controls what to do with data when a trigger fires multiple times.
-
DISCARDING
= 1¶
-
ACCUMULATING
= 2¶
-
-
class
apache_beam.transforms.trigger.
TriggerFn
[source]¶ Bases:
object
A TriggerFn determines when window (panes) are emitted.
See https://beam.apache.org/documentation/programming-guide/#triggers
-
on_element
(element, window, context)[source]¶ Called when a new element arrives in a window.
Parameters: - element – the element being added
- window – the window to which the element is being added
- context – a context (e.g. a TriggerContext instance) for managing state and setting timers
-
on_merge
(to_be_merged, merge_result, context)[source]¶ Called when multiple windows are merged.
Parameters: - to_be_merged – the set of windows to be merged
- merge_result – the window into which the windows are being merged
- context – a context (e.g. a TriggerContext instance) for managing state and setting timers
-
should_fire
(time_domain, timestamp, window, context)[source]¶ Whether this trigger should cause the window to fire.
Parameters: - time_domain – WATERMARK for event-time timers and REAL_TIME for processing-time timers.
- timestamp – for time_domain WATERMARK, it represents the watermark: (a lower bound on) the watermark of the system and for time_domain REAL_TIME, it represents the trigger: timestamp of the processing-time timer.
- window – the window whose trigger is being considered
- context – a context (e.g. a TriggerContext instance) for managing state and setting timers
Returns: whether this trigger should cause a firing
-
on_fire
(watermark, window, context)[source]¶ Called when a trigger actually fires.
Parameters: - watermark – (a lower bound on) the watermark of the system
- window – the window whose trigger is being fired
- context – a context (e.g. a TriggerContext instance) for managing state and setting timers
Returns: whether this trigger is finished
-
-
class
apache_beam.transforms.trigger.
DefaultTrigger
[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
Semantically Repeatedly(AfterWatermark()), but more optimized.
-
class
apache_beam.transforms.trigger.
AfterProcessingTime
(delay=0)[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
Fire exactly once after a specified delay from processing time.
AfterProcessingTime is experimental. No backwards compatibility guarantees.
-
class
apache_beam.transforms.trigger.
AfterWatermark
(early=None, late=None)[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
Fire exactly once when the watermark passes the end of the window.
Parameters: - early – if not None, a speculative trigger to repeatedly evaluate before the watermark passes the end of the window
- late – if not None, a speculative trigger to repeatedly evaluate after the watermark passes the end of the window
-
LATE_TAG
= CombiningValueStateTag(is_late, CallableWrapperCombineFn(<built-in function any>))¶
-
class
apache_beam.transforms.trigger.
AfterCount
(count)[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
Fire when there are at least count elements in this window pane.
AfterCount is experimental. No backwards compatibility guarantees.
-
COUNT_TAG
= CombiningValueStateTag(count, <apache_beam.transforms.combiners.CountCombineFn object>)¶
-
-
class
apache_beam.transforms.trigger.
Repeatedly
(underlying)[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
Repeatedly invoke the given trigger, never finishing.
-
class
apache_beam.transforms.trigger.
AfterAny
(*triggers)[source]¶ Bases:
apache_beam.transforms.trigger._ParallelTriggerFn
Fires when any subtrigger fires.
Also finishes when any subtrigger finishes.
-
combine_op
()¶ any(iterable) -> bool
Return True if bool(x) is True for any x in the iterable. If the iterable is empty, return False.
-
-
class
apache_beam.transforms.trigger.
AfterAll
(*triggers)[source]¶ Bases:
apache_beam.transforms.trigger._ParallelTriggerFn
Fires when all subtriggers have fired.
Also finishes when all subtriggers have finished.
-
combine_op
()¶ all(iterable) -> bool
Return True if bool(x) is True for all values x in the iterable. If the iterable is empty, return True.
-
-
class
apache_beam.transforms.trigger.
AfterEach
(*triggers)[source]¶ Bases:
apache_beam.transforms.trigger.TriggerFn
-
INDEX_TAG
= CombiningValueStateTag(index, CallableWrapperCombineFn(<function <lambda>>))¶
-


|
|
My team members and I developed a business plan for a series of syndicated news features. We then created proof of concept videos for our theorectical business. |
|
|
I was asked to create a multipart advertisement for the university libraries. I wrote, directed, edited, and produced this piece. |
|
|
I developed the initial concept for this short biographical piece and then shot, co-directed, and co-produced it with four of my classmates in the spring of 2015. |
|
|
I was provided with raw footage and was asked to edit it into the final product you see here. |
|
|
I was provided with raw footage and was asked to edit it into the final product you see here. |


Fleetwood is a former fishing port, but now serves as a quieter tourist resort to the more flamboyant Blackpool 8 miles to the south. It lies on the southern extremity of Morecambe Bay.
There is now a marina in the former dock and the area has been developed to include over 40 shops and retail outlets.
Harbour Master
Fleetwood
Tel:+44 (0)1253 879060
Last updated April 2016.


|
Boost.Regex
History
|
|
Boost 1.31.0.
-
Completely rewritten pattern matching code - it is now up to 10 times faster
than before.
-
Reorganized documentation.
-
Deprecated all interfaces that are not part of the
regular expression standardization proposal.
-
Added regex_iterator and
regex_token_iterator
.
-
Added support for Perl style independent sub-expressions.
-
Added non-member operators to the sub_match class,
so that you can compare sub_match's with strings, or add them to a string to
produce a new string.
-
Added experimental support for extended capture
information.
-
Changed the match flags so that they are a distinct type (not an integer), if
you try to pass the match flags as an integer rather than
match_flag_type to the regex algorithms then you will now get a compiler
error.
Revised
22 Dec 2003
© Copyright John Maddock 1998-
2003
Use, modification and distribution are subject to the Boost Software License,
Version 1.0. (See accompanying file LICENSE_1_0.txt
or copy at http://www.boost.org/LICENSE_1_0.txt)


The Add Host dialog adds machines to resource pools.
| Field | Type | Description |
|---|---|---|
| Host and port | Required | The hostname or IP address of the machine to add, followed by a colon character (:), and then the port number Control Center uses to communicate among hosts. The default port is 4979. |
| Resource Pool ID | Required | The identifier of the resource pool for the machine to add. Enter the identifier or select it from the list. |


public interface XMPPConnection
XMPPTCPConnection
or XMPPBOSHConnection
). To create a connection to an XMPP server
a simple usage of this API might look like the following:
// Create a connection to the igniterealtime.org XMPP server. XMPPTCPConnection con = new XMPPTCPConnection("igniterealtime.org"); // Connect to the server con.connect(); // Most servers require you to login before performing other tasks. con.login("jsmith", "mypass"); // Start a new conversation with John Doe and send him a message. Chat chat =<EMAIL_ADDRESS>new MessageListener() { public void processMessage(Chat chat, Message message) { // Print out any messages we get back to standard out. System.out.println("Received message: " + message); } }); chat.sendMessage("Howdy!"); // Disconnect from the server con.disconnect();
Note that the XMPPConnection interface does intentionally not declare any methods that manipulate
the connection state, e.g. connect()
, disconnect()
. You should use the
most specific connection type, e.g. XMPPTCPConnection
as declared type and use the
XMPPConnection interface when you don't need to manipulate the connection state.
XMPPConnections can be reused between connections. This means that an Connection may be connected, disconnected and then connected again. Listeners of the XMPPConnection will be retained across connections.
| Modifier and Type | Interface and Description |
|---|---|
static class |
XMPPConnection.FromMode |
| Modifier and Type | Method and Description |
|---|---|
void |
addAsyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers an asynchronous stanza(/packet) listener with this connection.
|
void |
addConnectionListener(ConnectionListener connectionListener)
Adds a connection listener to this connection that will be notified when
the connection closes or fails.
|
void |
addOneTimeSyncCallback(StanzaListener callback,
StanzaFilter packetFilter)
Add a callback that is called exactly once and synchronously with the incoming stanza that matches the given
stanza(/packet) filter.
|
void |
addPacketInterceptor(StanzaListener packetInterceptor,
StanzaFilter packetFilter)
Registers a stanza(/packet) interceptor with this connection.
|
void |
addPacketListener(StanzaListener packetListener,
StanzaFilter packetFilter)
|
void |
addPacketSendingListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a stanza(/packet) listener with this connection.
|
void |
addSyncStanzaListener(StanzaListener packetListener,
StanzaFilter packetFilter)
Registers a synchronous stanza(/packet) listener with this connection.
|
PacketCollector |
createPacketCollector(PacketCollector.Configuration configuration)
Create a new stanza(/packet) collector with the given stanza(/packet) collector configuration.
|
PacketCollector |
createPacketCollector(StanzaFilter packetFilter)
Creates a new stanza(/packet) collector for this connection.
|
PacketCollector |
createPacketCollectorAndSend(IQ packet)
Creates a new stanza(/packet) collector collecting packets that are replies to
packet . |
PacketCollector |
createPacketCollectorAndSend(StanzaFilter packetFilter,
Stanza packet)
Creates a new stanza(/packet) collector for this connection.
|
int |
getConnectionCounter()
Get the connection counter of this XMPPConnection instance.
|
<F extends ExtensionElement> |
getFeature(java.lang.String element,
java.lang.String namespace)
Get the feature stanza(/packet) extensions for a given stream feature of the
server, or
null if the server doesn't support that feature. |
XMPPConnection.FromMode |
getFromMode()
Get the currently active FromMode.
|
java.lang.String |
getHost()
Returns the host name of the server where the XMPP server is running.
|
long |
getLastStanzaReceived()
Returns the timestamp in milliseconds when the last stanza was received.
|
long |
getPacketReplyTimeout()
Returns the current value of the reply timeout in milliseconds for request for this
XMPPConnection instance.
|
int |
getPort()
Returns the port number of the XMPP server for this connection.
|
org.jxmpp.jid.DomainBareJid |
getServiceName()
Returns the name of the service provided by the XMPP server for this connection.
|
java.lang.String |
getStreamId()
Returns the stream ID for this connection, which is the value set by the server
when opening an XMPP stream.
|
org.jxmpp.jid.EntityFullJid |
getUser()
Returns the full XMPP address of the user that is logged in to the connection or
null if not logged in yet.
|
org.jxmpp.jid.DomainBareJid |
getXMPPServiceDomain()
Returns the XMPP Domain of the service provided by the XMPP server and used for this connection.
|
boolean |
hasFeature(java.lang.String element,
java.lang.String namespace)
Return true if the server supports the given stream feature.
|
boolean |
isAnonymous()
Returns true if currently authenticated anonymously.
|
boolean |
isAuthenticated()
Returns true if currently authenticated by successfully calling the login method.
|
boolean |
isConnected()
Returns true if currently connected to the XMPP server.
|
boolean |
isSecureConnection()
Returns true if the connection to the server has successfully negotiated encryption.
|
boolean |
isUsingCompression()
Returns true if network traffic is being compressed.
|
IQRequestHandler |
registerIQRequestHandler(IQRequestHandler iqRequestHandler)
Register an IQ request handler with this connection.
|
boolean |
removeAsyncStanzaListener(StanzaListener packetListener)
Removes an asynchronous stanza(/packet) listener for received packets from this connection.
|
void |
removeConnectionListener(ConnectionListener connectionListener)
Removes a connection listener from this connection.
|
void |
removePacketCollector(PacketCollector collector)
Remove a stanza(/packet) collector of this connection.
|
void |
removePacketInterceptor(StanzaListener packetInterceptor)
Removes a stanza(/packet) interceptor.
|
boolean |
removePacketListener(StanzaListener packetListener)
Deprecated.
|
void |
removePacketSendingListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for sending packets from this connection.
|
boolean |
removeSyncStanzaListener(StanzaListener packetListener)
Removes a stanza(/packet) listener for received packets from this connection.
|
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendIqWithResponseCallback(IQ iqRequest,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a IQ stanza and invoke
callback if there is a result of
IQ.Type.result with that result IQ. |
void |
sendNonza(Nonza nonza)
Send a Nonza.
|
void |
sendPacket(Stanza packet)
Deprecated.
use
sendStanza(Stanza) instead. |
void |
sendStanza(Stanza stanza)
Sends the specified stanza to the server.
|
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
sendStanzaWithResponseCallback(Stanza stanza,
StanzaFilter replyFilter,
StanzaListener callback,
ExceptionCallback exceptionCallback,
long timeout)
Send a stanza and wait asynchronously for a response by using
replyFilter . |
void |
setFromMode(XMPPConnection.FromMode fromMode)
Set the FromMode for this connection instance.
|
void |
setPacketReplyTimeout(long timeout)
Set the stanza(/packet) reply timeout in milliseconds.
|
IQRequestHandler |
unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
Convenience method for
unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type) . |
IQRequestHandler |
unregisterIQRequestHandler(java.lang.String element,
java.lang.String namespace,
IQ.Type type)
Unregister an IQ request handler with this connection.
|
org.jxmpp.jid.DomainBareJid getServiceName()
getXMPPServiceDomain()
instead.org.jxmpp.jid.DomainBareJid getXMPPServiceDomain()
java.lang.String getHost()
int getPort()
org.jxmpp.jid.EntityFullJid getUser()
java.lang.String getStreamId()
boolean isConnected()
boolean isAuthenticated()
boolean isAnonymous()
boolean isSecureConnection()
boolean isUsingCompression()
@Deprecated void sendPacket(Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
sendStanza(Stanza)
instead.packet
- the stanza(/packet) to send.SmackException.NotConnectedException
java.lang.InterruptedException
void sendStanza(Stanza stanza) throws SmackException.NotConnectedException, java.lang.InterruptedException
stanza
- the stanza to send.SmackException.NotConnectedException
- if the connection is not connected.java.lang.InterruptedException
void sendNonza(Nonza nonza) throws SmackException.NotConnectedException, java.lang.InterruptedException
This method is not meant for end-user usage! It allows sending plain stream elements, which should not be done by a user manually. Doing so may result in a unstable or unusable connection. Certain Smack APIs use this method to send plain stream elements.
nonza
- the Nonza to send.SmackException.NotConnectedException
java.lang.InterruptedException
void addConnectionListener(ConnectionListener connectionListener)
connectionListener
- a connection listener.void removeConnectionListener(ConnectionListener connectionListener)
connectionListener
- a connection listener.PacketCollector createPacketCollectorAndSend(IQ packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
packet
.
Does also send packet
. The stanza(/packet) filter for the collector is an
IQReplyFilter
, guaranteeing that stanza(/packet) id and JID in the 'from' address have
expected values.packet
- the stanza(/packet) to filter responses fromSmackException.NotConnectedException
java.lang.InterruptedException
PacketCollector createPacketCollectorAndSend(StanzaFilter packetFilter, Stanza packet) throws SmackException.NotConnectedException, java.lang.InterruptedException
StanzaListener
when you need to wait for
a specific result.packetFilter
- the stanza(/packet) filter to use.packet
- the packet to send right after the collector got createdjava.lang.InterruptedException
SmackException.NotConnectedException
PacketCollector createPacketCollector(StanzaFilter packetFilter)
StanzaListener
when you need to wait for a specific result.
Note: If you send a Stanza(/Packet) right after using this method, then
consider using
createPacketCollectorAndSend(StanzaFilter, Stanza)
instead.
Otherwise make sure cancel the PacketCollector in every case, e.g. even
if an exception is thrown, or otherwise you may leak the PacketCollector.
packetFilter
- the stanza(/packet) filter to use.PacketCollector createPacketCollector(PacketCollector.Configuration configuration)
Please make sure to cancel the collector when it is no longer required. See also
createPacketCollector(StanzaFilter)
.
configuration
- the stanza(/packet) collector configuration.void removePacketCollector(PacketCollector collector)
collector
- a stanza(/packet) collectors which was created for this connection.@Deprecated void addPacketListener(StanzaListener packetListener, StanzaFilter packetFilter)
addAsyncStanzaListener(StanzaListener, StanzaFilter)
or
addSyncStanzaListener(StanzaListener, StanzaFilter)
.
This method has been deprecated. It is important to differentiate between using an asynchronous stanza(/packet) listener
(preferred where possible) and a synchronous stanza(/packet) lister. Refer
addAsyncStanzaListener(StanzaListener, StanzaFilter)
and
addSyncStanzaListener(StanzaListener, StanzaFilter)
for more information.
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.@Deprecated boolean removePacketListener(StanzaListener packetListener)
removeAsyncStanzaListener(StanzaListener)
or removeSyncStanzaListener(StanzaListener)
.packetListener
- the stanza(/packet) listener to remove.void addSyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
Important: This stanza(/packet) listeners will be called in the same single thread that processes all
incoming stanzas. Only use this kind of stanza(/packet) filter if it does not perform any XMPP activity that waits for a
response. Consider using addAsyncStanzaListener(StanzaListener, StanzaFilter)
when possible, i.e. when
the invocation order doesn't have to be the same as the order of the arriving packets. If the order of the
arriving packets, consider using a PacketCollector
when possible.
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.addPacketInterceptor(StanzaListener, StanzaFilter)
boolean removeSyncStanzaListener(StanzaListener packetListener)
packetListener
- the stanza(/packet) listener to remove.void addAsyncStanzaListener(StanzaListener packetListener, StanzaFilter packetFilter)
Unlike addAsyncStanzaListener(StanzaListener, StanzaFilter)
stanza(/packet) listeners added with this method will be
invoked asynchronously in their own thread. Use this method if the order of the stanza(/packet) listeners must not depend
on the order how the stanzas where received.
packetListener
- the stanza(/packet) listener to notify of new received packets.packetFilter
- the stanza(/packet) filter to use.addPacketInterceptor(StanzaListener, StanzaFilter)
boolean removeAsyncStanzaListener(StanzaListener packetListener)
packetListener
- the stanza(/packet) listener to remove.void addPacketSendingListener(StanzaListener packetListener, StanzaFilter packetFilter)
packetListener
- the stanza(/packet) listener to notify of sent packets.packetFilter
- the stanza(/packet) filter to use.void removePacketSendingListener(StanzaListener packetListener)
packetListener
- the stanza(/packet) listener to remove.void addPacketInterceptor(StanzaListener packetInterceptor, StanzaFilter packetFilter)
NOTE: For a similar functionality on incoming packets, see addAsyncStanzaListener(StanzaListener, StanzaFilter)
.
packetInterceptor
- the stanza(/packet) interceptor to notify of packets about to be sent.packetFilter
- the stanza(/packet) filter to use.void removePacketInterceptor(StanzaListener packetInterceptor)
packetInterceptor
- the stanza(/packet) interceptor to remove.long getPacketReplyTimeout()
void setPacketReplyTimeout(long timeout)
SmackException.NoResponseException
if no reply to a request was received within the timeout period.timeout
- the stanza(/packet) reply timeout in millisecondsint getConnectionCounter()
void setFromMode(XMPPConnection.FromMode fromMode)
fromMode
- XMPPConnection.FromMode getFromMode()
XMPPConnection.FromMode
<F extends ExtensionElement> F getFeature(java.lang.String element, java.lang.String namespace)
null
if the server doesn't support that feature.element
- namespace
- null
boolean hasFeature(java.lang.String element, java.lang.String namespace)
element
- namespace
- void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
replyFilter
.
If there is a response, then callback
will be invoked. The callback will be
invoked at most once and it will be not invoked after the connections default reply timeout
has been elapsed.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)SmackException.NotConnectedException
java.lang.InterruptedException
void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after the connections default reply timeout, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)SmackException.NotConnectedException
java.lang.InterruptedException
void sendStanzaWithResponseCallback(Stanza stanza, StanzaFilter replyFilter, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
replyFilter
.
If there is a response, then callback
will be invoked. If there is no response
after timeout
milliseconds, then exceptionCallback
will be invoked
with a SmackException.NoResponseException
. The callback will be invoked at most once.
stanza
- the stanza to send (required)replyFilter
- the filter used to determine response stanza (required)callback
- the callback invoked if there is a response (required)exceptionCallback
- the callback invoked if there is an exception (optional)timeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback) throws SmackException.NotConnectedException, java.lang.InterruptedException
callback
if there is a result of
IQ.Type.result
with that result IQ. The callback will
not be invoked after the connections default reply timeout has been elapsed.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)SmackException.NotConnectedException
java.lang.InterruptedException
void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback) throws SmackException.NotConnectedException, java.lang.InterruptedException
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after the
connections default reply timeout, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionalSmackException.NotConnectedException
java.lang.InterruptedException
void sendIqWithResponseCallback(IQ iqRequest, StanzaListener callback, ExceptionCallback exceptionCallback, long timeout) throws SmackException.NotConnectedException, java.lang.InterruptedException
callback
if there is a result of
IQ.Type.result
with that result IQ. If there is an
error response exceptionCallback
will be invoked, if not null, with the received
error as XMPPException.XMPPErrorException
. If there is no response after
timeout
, then exceptionCallback
will be invoked with a
SmackException.NoResponseException
.iqRequest
- the IQ stanza to send (required)callback
- the callback invoked if there is result response (required)exceptionCallback
- the callback invoked if there is an Exception optionaltimeout
- the timeout in milliseconds to wait for a responseSmackException.NotConnectedException
java.lang.InterruptedException
void addOneTimeSyncCallback(StanzaListener callback, StanzaFilter packetFilter)
callback
- the callback invoked once the stanza(/packet) filter matches a stanza.packetFilter
- the filter to match stanzas or null to match all.IQRequestHandler registerIQRequestHandler(IQRequestHandler iqRequestHandler)
IQ request handler process incoming IQ requests, i.e. incoming IQ stanzas of type 'get' or 'set', and return a result.
iqRequestHandler
- the IQ request handler to register.IQRequestHandler unregisterIQRequestHandler(IQRequestHandler iqRequestHandler)
unregisterIQRequestHandler(String, String, org.jivesoftware.smack.packet.IQ.Type)
.iqRequestHandler
- IQRequestHandler unregisterIQRequestHandler(java.lang.String element, java.lang.String namespace, IQ.Type type)
element
- the IQ element the IQ request handler is responsible for.namespace
- the IQ namespace the IQ request handler is responsible for.type
- the IQ type the IQ request handler is responsible for.long getLastStanzaReceived()


---
layout: game-page
redirect_from: /game/supercrawl
title: Supercrawl
year: 2007
semester: Fall
description: "2D platformer in a jungle gym!
Attention, everyone! The playplace has been invaded! Join Jungle Jim, Sammy Slider, Bouncin' Bridget, and Ballpit Bryan as they fight to win back their playplace from evil enemy invaders and return it to its rightful owners: all kids everywhere! And guess what...the enemies have also managed to hide the kids' most beloved possessions: their teddy bears! So, our four 9-year-old heroes must navigate through the playplace while defeating enemies and rescuing the bears. Plus, they get to collect tons of awesome toys and items along the way (luckily, the enemies didn't get a chance to hide everything!) And last but not least... the game ends in a duel between Ballpit Bryan and the final boss in an intense ballpit battle!"
tags: Windows Singleplayer
# tag options: "Windows", "Mac", "Linux",
# "Singleplayer", "Multiplayer",
# "Controller-Compatible", "VR",
# "Game-Jam"
project_members: {
Bridget Liao: "Art (powerups)",
Diana Archer: "Art (tiles, background items, menus)",
Eric Butler: "Programming, Mentoring",
Geoff Cameron: Programming,
James Chan: "Art (main characters)",
N Huang: Art (enemies),
Rachel Berkowitz: "Project Lead, Music and SFX, Game Concept, Level Design (1 & 2)",
Sarah Scialli: "Assistant Project Lead, Level Design (3, 4, Boss)",
Tim Swast: Programming
}
stage_game_path: supercrawl/
builds: {
Windows: supercrawl.win32.zip,
Mac OS X: supercrawl.jar.zip,
Linux: supercrawl.jar.zip
}
extra_content: "Design Document
Pitch Presentation"
screenshots: [
supercrawl-1.jpg,
supercrawl-2.jpg,
supercrawl-3.jpg
]
# Optional
top-img-fit: cover
# top-img-fit options:
# "cover" - Cover the entire top area with the image, without squashing/stretching
# "fill" - Fit the FULL image into the top area, squashing/stretching as necessary
---


Fuzzy Binaires Home
+
Downloading bytes...
............
:: Connections Interrupted
:: No new broadcasts allowed :(
Title:
Description:
A brief synopsis.
Hyperlink:
...
Relates to:
("enter" to set Tag)


Server Overview
Server of Open Pentesting and Security Framework
TODO
API
The API is documented at ‘host:port/api-docs’.
Pentesting application
This application handles everything you need to manage your pentesting projects.
Projects
You can add other users to your projects and specify a project role for them, e.g. “pentester”.
Reports
OPAS-F allows you to easily create pentesting reports, based on an installed template. All reports can optionally be encrypted (server-side only for now :( ) using AES-GCM or ChaChaPoly. You can send the report link to your customer which allows him to download the report, without the need to create an account on the server. You may have a look at the customization page to customize your report templates.
Bughunting application
This application allows your users to submit bugs found in any application. OPAS-F will persist the bug details and send a notification mail to a contact address including an access link. This link allows the admin to access bug details, without the need to register to the server. If a bug gets not fixed since 30 Days all submitted details become public. A bughunter could optionally increase the disclosure time, if an admin needs more time to fix complex bugs.
Also a bughunter can win virtuel awards for submitting bugs.
This application is enabled by default, but needs some configuration to make email notifcation work. If you want to disable the application, have a look at settings page.
Bug Disclosed Bots
If a bug becomes disclosed, OPAS-F allows you to configure bots for social media, that posts a message to it. Currenlty only a matrix bot is available, but its quite easy to code your own.
Master-Slave application
Maybe you want to seperate your work using different hosts, and everyone should do a different job. This is why we implemented a simple master-slave architecture, which handles such situations.
From your account, you need to create a new “application”, e.g.: “Slave 1”. You will receive tokens, which the slave needs to authenticate itself to the server.
Further details can be found at the master-slave wiki page
Blogging application
TODO
Accounts application
TODO


Examples of Previous Work
The following are some videos and pictures of previous work that I have done.
If you like what you see feel free to contact me to place an order!
{% load static %}
The following are some videos and pictures of previous work that I have done.
If you like what you see feel free to contact me to place an order!


- Member DIS::IncomingMessage::RemoveProcessor (unsigned char id, const IPacketProcessor *pp)
- add proper support for erasing from a multimap.
- Member DIS::PduBank::GetStaticPDU (DIS::PDUType pdu_type)
- make this parameter just 'unsigned char' since that will be easier to generate.
Generated on Mon Jun 29 21:47:15 2009 for open-dis by
1.5.9


Professional Experience
- Desktop support
- Instructor
- Electronic Circuit Designing
- Diagnose
- troubleshoot
- resolve hardware, software, or other network and system problems
- replace defective components when necessary
Education
- MACET - Bachelor of Engineering in Electronics & Communication Engineering, 2006-2011
- edX.org - Circuits and Electronics, 2013 & Programming in Scratch, 2015
- Bellevue College, WA - On the Job Communication / Preparing for Work, 2014-2015


Home
Our Projects
Team
Our Club
Avika Foundation
About us
Contact
Our Team
Aviral Kumar
Founder, CTO
Ravi Kant Gupta
Technical Head , Club Leader
Our Strength
Shweta Kushwaha
President
Shailjakant Shukla
Vice-President
Manujendra Singh
Chairman
Shreya Gupta
Co-ordinator
Rishabh Singh
Secretary
Prashant Singh
Co-Leader
Shashikant Kannaujia
Team Treasurer
Ramesh Agrahari
Volunteer
Kartik
Volunteer
Manish Singh
Volunteer
Mayank
Volunteer
Anmol
Volunteer
Mohd. Sohail
Volunteer
Join Our Team


The page you are looking for could not be found. Check the address bar to ensure your URL is spelled correctly. If all else fails, you can play some pacman, then you can visit our home page.


Using a branching statement as the last part of a loop may be a bug, and/or is confusing. Ensure that the usage is not a bug, or consider using another approach. Example:
// unusual use of branching statement in a loop for (int i = 0; i < 10; i++) { if (i*i <= 25) { continue; } break; } // this makes more sense... for (int i = 0; i < 10; i++) { if (i*i > 25) { break; } }


{% include 'metadata.html' %} {% block header%} {% endblock%}
|
Health Care Establishment
|
Clinics |
| Laboraties | |
| Nursing Homes | |
| Hospitals | |
|
Health Care Establishment
|
Doctors |
| Dentists | |
| Oral Health Therapists | |
| Pharmacists | |
| Nurses | |
| Allied Health Professionals | |
| Optometrists and Opticians | |
| TCM Practitioners |


Instructions
To graph a pair of coordinates in the (x, y) plane do the following:
-
Insert a pair of coordinates (valid numerical values) in the fields with the legend Point X and Point Y, as
appropriate.
-
Click on the button labeled "DRAW IT!".
Considerations:
-
The coordinates must be within the range of 1 to 800 for the X axis and between 1 and 300 for the Y axis.
-
Any non-numerical data or data outside the established ranges mentioned in point 1 will prevent the
correct operation of the algorithm.
- If you want to restart and insert a pair of new coordinates then click on the "CLEAR" button


[name]
A simple caching classe, used internaly by [page:FileLoader].
Constructor
[name]()
Creates a new [name].
Properties
[property:Boolean enabled]
Whether caching is enabled. Default is *false*.
[property:Object files]
An [page:Object object] that hold cached values.
Methods
[method:null add]( [page:String key], value )
[page:String key] — required. A string key
[page:Object] value — A value
Adds a cache entry with that key to hold the value. If this key already holds a value, it is overwritten.
[method:null get]( [page:String key] )
[page:String key] — required. A string key
Get the value of key. If the key does not exist *undefined* is returned.
[method:null remove]( [page:String key] )
[page:String key] — required. A string key
Remove the cached value associated with the key.
[method:null clear]()
Remove all values from the cache.
Source
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]


Development by @rdadwww.whiteflashwhitehit.com
Powered by WebGLThree.jsPP.js
Shader credits: Evan Wallace
Thanks to MrDoobAlteredqualiaAerotwist


Total Remittance YTD
Percentage of Goal
Unique Temples
Temples met their goals
| Temple | {{currentYear}} Goal | {{currentYear}} Remittance YTD | YTD Progress | Current Month Remittance | {{currentYear}} Monthly Goal | |
|---|---|---|---|---|---|---|
| {{detail.temple}} | ${{detail.yearlyGoal | number}} | ${{detail.yearlyRemittance | number}} |
{{detail.remittanceProgress | number: 2}}
|
{{detail.currentRemittance}}${{detail.currentRemittance | number}} | {{detail.currentRemittance}} | ${{detail.monthlyGoal | number: 2}} |


You don’t have power to interpret laws - EOCO fires back at Domelevo
The Economic and Organised Crime Office (EOCO) has hit back at the Auditor General, Daniel Domelevo, for saying that an ongoing investigation into alleged procurement breaches at the Audit Service, was unlawful.
Daniel Domelevo wrote a strongly worded letter to EOCO urging the institution to immediately stop what he calls the unlawful investigations into allegations that himself and the Ghana Audit Service breached the law when some vehicles were procured in 2018.
“Your office does not have the jurisdiction to investigate corruption-related offences which has been defined in Act 959 to include breaches of the Public Procurement Act,” the letter said in part.
But in a sharp rebuttal, acting Executive Director of EOCO, Frank Adu-Poku, has told state-owned Daily Graphic that he was disgusted by the views expressed by Mr Domelevo.
“Yes, I just received a copy of the letter. But if he [Auditor General] has any difficulty with our mandate, he cannot sit in the comfort of his office and proffer his own interpretation to suit his whims and caprices,” Mr Adu-Poku was quoted by Daily Graphic on Tuesday.
The EOCO boss added: “That interpretation, if any, should be done by the courts,” he said,
The EOCO boss said his outfit is preparing a fitting response to the contents of Auditor General’s letter.
The letter


UPSTAGE
Component
GitHub Repo
Issues
CSS buttons
Small Buttons
Small Button
Small Button
Small Button
Small Button
Small Button
Small Button
Small Button
Standard Buttons
Button
Button
Button
Button
Button
Button
Button
Large Buttons
Large Button
Large Button
Large Button
Large Button
Large Button
Large Button
Large Button
Jumbo Buttons
Jumbo Button
Jumbo Button
Jumbo Button
Jumbo Button
Jumbo Button
Jumbo Button
Jumbo Button


HTML5
CSS3
AngularJS
Angular 2
GitHub
Gulp
JavaScript
jQuery
NodeJS
PostgreSQL
React
Sass
I was born in the Greater Seattle Area and have never wanted to leave. After feeling stuck in a dead-end job with not a lot of room for growth, I decided to take the leap and attend DevMountain in Provo, Utah. I was a part of their Immersive Web Development course during the Fall of 2016 where we primarly learned the AngularJS Framework, along with NodeJS and PostgreSQL. I get excited at the thought of learning more.
When I'm not working, I spend a lot of time at the local ice rink playing hockey, or on a field playing lacrosse in the Summer.
Click here to view my resume.


Question {{currentQID}}:
Convert the number '{{currentQ}}' to binary from decimal

1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0

Next
Finish


Puma: A Ruby Web Server Built For Concurrency
Puma
is a simple, fast, multi-threaded, and highly concurrent HTTP 1.1 server for Ruby/Rack applications.
Built For Speed & Concurrency
Puma
processes requests using a C-optimized Ragel extension (inherited from Mongrel) that provides fast, accurate HTTP 1.1 protocol parsing in a portable way. Puma
then serves the request using a thread pool. Each request is served in a separate thread, so truly concurrent Ruby implementations (JRuby, Rubinius) will use all available CPU cores.
Puma
was designed to be the go-to server for Rubinius, but also works well with JRuby and MRI.
On MRI, there is a Global VM Lock (GVL) that ensures only one thread can run Ruby code at a time. But if you're doing a lot of blocking IO
(such as HTTP calls to external APIs like Twitter), Puma
still improves MRI's throughput by allowing IO
waiting to be done in parallel.
Quick Start
$ gem install puma
$ puma
Without arguments, puma will look for a rackup (.ru) file in the current working directory called config.ru
.
Frameworks
Rails
Puma is the default server for Rails, included in the generated Gemfile.
Start your server with the rails
command:
$ rails server
Many configuration options and Puma features are not available when using rails server
. It is recommended that you use Puma's executable instead:
$ bundle exec puma
Sinatra
You can run your Sinatra application with Puma from the command line like this:
$ ruby app.rb -s Puma
Or you can configure your Sinatra application to always use Puma:
require 'sinatra'
configure { set :server, :puma }
Configuration
Puma provides numerous options. Consult puma -h
(or puma --help
) for a full list of CLI options, or see dsl.rb.
You can also find several configuration examples as part of the test suite.
Thread Pool
Puma uses a thread pool. You can set the minimum and maximum number of threads that are available in the pool with the -t
(or --threads
) flag:
$ puma -t 8:32
Puma will automatically scale the number of threads, from the minimum until it caps out at the maximum, based on how much traffic is present. The current default is 0:16
. Feel free to experiment, but be careful not to set the number of maximum threads to a large number, as you may exhaust resources on the system (or cause contention for the Global VM Lock, when using MRI).
Be aware that additionally Puma creates threads on its own for internal purposes (e.g. handling slow clients). So, even if you specify -t 1:1, expect around 7 threads created in your application.
Clustered mode
Puma also offers "clustered mode". Clustered mode fork
s workers from a master process. Each child process still has its own thread pool. You can tune the number of workers with the -w
(or --workers
) flag:
$ puma -t 8:32 -w 3
Note that threads are still used in clustered mode, and the -t
thread flag setting is per worker, so -w 2 -t 16:16
will spawn 32 threads in total, with 16 in each worker process.
In clustered mode, Puma can "preload" your application. This loads all the application code prior to forking. Preloading reduces total memory usage of your application via an operating system feature called copy-on-write (Ruby 2.0+ only). Use the --preload
flag from the command line:
$ puma -w 3 --preload
If you're using a configuration file, use the preload_app!
method:
# config/puma.rb
workers 3
preload_app!
Additionally, you can specify a block in your configuration file that will be run on boot of each worker:
# config/puma.rb
on_worker_boot do
# configuration here
end
This code can be used to setup the process before booting the application, allowing you to do some Puma-specific things that you don't want to embed in your application. For instance, you could fire a log notification that a worker booted or send something to statsd. This can be called multiple times.
before_fork
specifies a block to be run before workers are forked:
# config/puma.rb
before_fork do
# configuration here
end
Preloading can’t be used with phased restart, since phased restart kills and restarts workers one-by-one, and preload_app copies the code of master into the workers.
Error handling
If puma encounters an error outside of the context of your application, it will respond with a 500 and a simple
textual error message (see lowlevel_error
in this file).
You can specify custom behavior for this scenario. For example, you can report the error to your third-party
error-tracking service (in this example, rollbar):
lowlevel_error_handler do |e|
Rollbar.critical(e)
[500, {}, ["An error has occurred, and engineers have been informed. Please reload the page. If you continue to have problems, contact<EMAIL_ADDRESS>end
Binding TCP / Sockets
Bind Puma to a socket with the -b
(or --bind
) flag:
$ puma -b tcp://<IP_ADDRESS>:9292
To use a UNIX Socket instead of TCP:
$ puma -b unix:///var/run/puma.sock
If you need to change the permissions of the UNIX socket, just add a umask parameter:
$ puma -b 'unix:///var/run/puma.sock?umask=0111'
Need a bit of security? Use SSL sockets:
$ puma -b 'ssl://<IP_ADDRESS>:9292?key=path_to_key&cert=path_to_cert'
Controlling SSL Cipher Suites
To use or avoid specific SSL cipher suites, use ssl_cipher_filter
or ssl_cipher_list
options.
Ruby:
$ puma -b 'ssl://<IP_ADDRESS>:9292?key=path_to_key&cert=path_to_cert&ssl_cipher_filter=!aNULL:AES+SHA'
JRuby:
$ puma -b 'ssl://<IP_ADDRESS>:9292?keystore=path_to_keystore&keystore-pass=keystore_password&ssl_cipher_list=TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA'
See https://www.openssl.org/docs/man1.0.2/apps/ciphers.html for cipher filter format and full list of cipher suites.
Disable TLS v1 with the no_tlsv1
option:
$ puma -b 'ssl://<IP_ADDRESS>:9292?key=path_to_key&cert=path_to_cert&no_tlsv1=true'
Control/Status Server
Puma has a built-in status and control app that can be used to query and control Puma.
$ puma --control-url tcp://<IP_ADDRESS>:9293 --control-token foo
Puma will start the control server on localhost port 9293. All requests to the control server will need to include control token (in this case, token=foo
) as a query parameter. This allows for simple authentication. Check out status.rb to see what the status app has available.
You can also interact with the control server via pumactl
. This command will restart Puma:
$ pumactl --control-url 'tcp://<IP_ADDRESS>:9293' --control-token foo restart
To see a list of pumactl
options, use pumactl --help
.
Configuration File
You can also provide a configuration file with the -C
(or --config
) flag:
$ puma -C /path/to/config
If no configuration file is specified, Puma will look for a configuration file at config/puma.rb
. If an environment is specified, either via the -e
and --environment
flags, or through the RACK_ENV
environment variable, Puma looks for configuration at config/puma/<environment_name>.rb
.
If you want to prevent Puma from looking for a configuration file in those locations, provide a dash as the argument to the -C
(or --config
) flag:
$ puma -C "-"
The other side-effects of setting the environment are whether to show stack traces (in development
or test
), and setting RACK_ENV may potentially affect middleware looking for this value to change their behavior. The default puma RACK_ENV value is development
. You can see all config default values here.
Check out dsl.rb to see all available options.
Restart
Puma includes the ability to restart itself. When available (MRI, Rubinius, JRuby), Puma performs a "hot restart". This is the same functionality available in Unicorn and NGINX which keep the server sockets open between restarts. This makes sure that no pending requests are dropped while the restart is taking place.
For more, see the restart documentation.
Signals
Puma responds to several signals. A detailed guide to using UNIX signals with Puma can be found in the signals documentation.
Platform Constraints
Some platforms do not support all Puma features.
- JRuby, Windows: server sockets are not seamless on restart, they must be closed and reopened. These platforms have no way to pass descriptors into a new process that is exposed to Ruby. Also, cluster mode is not supported due to a lack of fork(2).
- Windows: Cluster mode is not supported due to a lack of fork(2).
Known Bugs
For MRI versions 2.2.7, 2.2.8, 2.2.9, 2.2.10 2.3.4 and 2.4.1, you may see stream closed in another thread (IOError)
. It may be caused by a Ruby bug. It can be fixed with the gem https://rubygems.org/gems/stopgap_13632:
if %w(2.2.7 2.2.8 2.2.9 2.2.10 2.3.4 2.4.1).include? RUBY_VERSION
begin
require 'stopgap_13632'
rescue LoadError
end
end
Deployment
Puma has support for Capistrano with an external gem.
It is common to use process monitors with Puma. Modern process monitors like systemd or upstart provide continuous monitoring and restarts for increased reliability in production environments:
- tools/jungle for sysvinit (init.d) and upstart
- docs/systemd
Community Plugins
- puma-heroku — default Puma configuration for running on Heroku
- puma-metrics — export Puma metrics to Prometheus
- puma-plugin-statsd — send Puma metrics to statsd
- puma-plugin-systemd — deeper integration with systemd for notify, status and watchdog
Contributing
Find details for contributing in the contribution guide.
License
Puma is copyright Evan Phoenix and contributors, licensed under the BSD 3-Clause license. See the included LICENSE file for details.


We are a group of classic rock fans that decided we wanted to create our own rock group. We have been writing music and playing covers for about 2 years now and plan to keep at it as long as we can.


Home
(current)
About us
Our goals
Our team
About us
What is CMT?
Living with CMT
work with us!
Contact us
Search
E-mail: CMT.org.il@gmail.com


Contains the functionality to allow the user to choose its role on the store, select himself from the list and then login to his personal area with his credentials.
More...
#include <login_menu.h>
|
| virtual void | printLogo (const std::string &detail) const |
| | Print at blue uppercase letters the store name, followed by hyphen and detail. More...
|
| |
| static std::string | readCommand (bool lowCase=true) |
| | Command handler. More...
|
| |
| static bool | validInput1Cmd (const std::string &input, const std::string &cmd) |
| | Whether the input is one word, equal to cmd. More...
|
| |
| static bool | validInput1Cmd1ArgDigit (const std::string &input, const std::string &cmd, bool acceptFloat=false) |
| | Whether the input is two words, the first one being cmd and the second one a valid digit. More...
|
| |
| static bool | validInput1Cmd1Arg (const std::string &input, const std::string &cmd, const std::string &arg) |
| | Whether the input is two words, the first one being cmd and the second arg. More...
|
| |
| static bool | validInput1Cmd2ArgsDigit (const std::string &input, const std::string &cmd, bool acceptFloatArg2=false) |
| | Whether the input is three words, the first being cmd and the second and third valid digits. More...
|
| |
| static void | printOptions (const std::vector< std::string > &options, const std::string &message="Available commands:") |
| | Print the message, followed by the list of commands, one by line starting with an arrow. More...
|
| |
|
static void | printError () |
| | Print "Unrecognized command. Try again: ".
|
| |
|
Store & | _store |
| | The store which data gets accessed and manipulated.
|
| |
|
static const char * | BACK = "back" |
| | UI reserved keyword to go back at each screen.
|
| |
|
static const char * | EXIT = "exit" |
| | UI reserved keyword to exit in the first page.
|
| |
Contains the functionality to allow the user to choose its role on the store, select himself from the list and then login to his personal area with his credentials.
◆ LoginMenu()
| LoginMenu::LoginMenu |
( |
Store & |
store | ) |
|
|
explicit |
Create login menu.
- Parameters
-
| store | from which to get the persons registered |
◆ login()
| void LoginMenu::login |
( |
Person * |
person | ) |
|
Ask the user for its credential.
Instantiate respective dashboard if login successful (or already logged in) and show it.
- Parameters
-
| person | who wants to enter personal area |
◆ selectPerson()
| void LoginMenu::selectPerson |
( |
PersonRole |
role | ) |
|
List the persons associated with the given role in the store, so that he can choose who he is.
- Parameters
-
| role | - the person role in the store |
The documentation for this class was generated from the following files:


More on the structure
Folder Structure
Before we start finishing up our site, I’m going to go more into detail about each of the folders you’ll find, and what they do, so if you choose to edit your site more, you’ll understand how to do so. If you’re not interested in editing more, feel free to skip this page.
Content
Let’s start with the content folder. You already know that this is where all your posts and markdown go, but you might not know that you can also put HTML in here. I wouldn’t advise doing so, but it’s possible. As well, you can specify custom layouts for each of your markdown posts, which are taken from your theme.
Theme
The theme folder is found under themes/[theme name]
. Inside, you’ll find a lot of subfolders, but for now, we’re interested in layouts. In layouts:
- _default are Hugo-generated files that tell the theme where to put content, and if there’s a header or footer involved.
- partials contain Hugo partials, which are a very powerful tool. In here, we can put HTML snippets, and reference them in our markdown with
{{ partial [path]/[name].html . }}
. Think of these as header or footer files, for example. - shortcodes contains Hugo shortcodes, which are little snippets, kind of like a partial, except these usually bring outside functionality into Hugo, such as the Twitter or YouTube shortcodes.
- 404.html and index.html are mostly self explanatory - 404 is for pages that don’t exist, and index.html shows the default landing page.
If we go back up one directory, we’ll find the static directory. This is where CSS and JS go, as well as any theme assets.
We’ll also find an archetypes directory in themes - this controls the default markdown added when you run hugo new posts/xyz.md
.
Static
This is where site static files go, like perhaps a logo image. You can override CSS and JS here as well.
Public
This is generally where the site build files go, after being processed by Hugo. This is overrideable in config.yaml by adding the line:
publishDir: ./foldername
If you’re interested in learning more about theming and Hugo template variables, I highly recommend referencing the Hugo docs. It’s a comprehensive resource for anyone looking to customize a theme or build one from scratch, and is very clear.


From BlenderWiki
FBX File Structure
Since we have the binary file format itself, this doc attempt to gather knowledge about FBX structure (typical content of a file, but also usage of properties and templates, etc.).
Warning: Heavily WIP, as we have to guess what does what here (no official doc about how things work)!
We try to focus on latest version (7.3, or even 7.4)!
Note: Once we have something more or less complete here, we could move it to the blog page as well…
Generalities
FBX is a nodal format, with a root element (which is never explicitly written) and a tree of children.
Each element has an id (byte string), and can have data and children elements.
Data are a set of (values, type) tuples, available types are: bool, short, int, long, float, double, bytes, string, and arrays of those types.
Here is a (JSON) representation of an element:
["Element_ID", # ID ["data_string", 13], # Data "SI", # Data types, as single-char codes (S for String, I for Integer, etc.) [__other_children_elements__] ]
Everything is based on this simple schema.
Properties
Properties are a way to add heavily typed data.
Properties are represented by elements children of a "Properties70" element, which does not contain any data.
Each property is an element. Its ID does not seem to be important (usually, it's "P" or "PS" for all of them). Their data layout follow that schema:
["PropName", "PropType", "Label(?)", "Flags", __values__, …]
In other words, the four first data of a property are always strings (its name, its type, presumably its label (often empty), and some flags (optional)), they are the "metadata" of the property. The other data are the property's value (usually only one, but e.g. for colors or 3D vectors they are three - and some property types have no value :/), and their type depends on the data type!
Note that the three metadata defining the property's type looks rather fuzzy, they may change between versions.
Flags are still a very fuzzy, here is what is known currently:
- 'U' means the property is user-defined (it does not exist by default in FBX).
- 'A' means the property is animatable.
- '+' also found in some files, assuming currently it means 'animated' (always following 'A' flag).
- 'H' highly speculative hidden?
- 'L7' highly speculative could be the four 'Locked' flags (number being four bits bitflag)?
See also the SDK doc, unfortunately as usual no info on actual FBX representation of those flags…
Further about animatable properties: Looks like the first two metadata depend whether the property is animatable or not, finally. E.g. a non-animatable float64 will be ("double", "Number", ""), while an animatable float64 will be ("Number", "", "") - at least, that what’s infereable from reading "official" FBX files.

Some Specific Property Types
- KTime: FBX timestamp, a signed int64, unit being 1/46186158000 seconds…
Templates
Each template is defined by an "ObjectType" element, which takes a single property, the name of the template, which is also the name of the Object they “define” (e.g. "Model", "Geometry", "Material", etc.).
Each template has two children: "Count" is the number of Objects using this template, and "PropertyTemplate", which simply contains some properties.
To summarize, here is the generic structure of a template definition:
["ObjectType", ["Geometry"], "S", [ # Start of template definition ["Count", [1], "I", []], # Number of Objects using this template ["PropertyTemplate", ["KFbxMesh"], "S", [ # Start of template's properties ["Properties70", [], "", [ ["P", ["Color", "ColorRGB", "Color", "", 0.8, 0.8, 0.8], "SSSSDDD", []], ["P", ["BBoxMin", "Vector3D", "Vector", "", 0.0, 0.0, 0.0], "SSSSDDD", []], ["P", ["BBoxMax", "Vector3D", "Vector", "", 0.0, 0.0, 0.0], "SSSSDDD", []], ... ]] ]] ]],
Note GlobalSettings also seems to have its template definition, though it is not an Object…
The name data of the "PropertyTemplate" element are some kind of sub-types. Usually, they directly use classes’ names from the SDK.
Sub-type Name
In FBX 7.3, sub-type names seems to use SDK class names prefixed with a 'K' (like 'KFbxFileTexture'), while in 7.4 the 'K' seems to have disappeared…
|
Templates define some kind of “default values”, which can be overridden by each Object if needed.
There is another issue with templates: e.g. lights, cameras, nulls, etc. share the same "global" element type, while they do have separated sub-types, which their own set of properties. Unfortunately, templates are defined for “global” type, and do not look to handle several set of property definitions, so you have to chose one subtype in this case, and do without template at all for the other subtypes (though to counter of the template must remain the total number of users of the “global” type…).
Top Structure
A valid FBX file must contain a set of standard elements:
- FBXHeaderExtension: Mandatory? Contains the metadata of the file.
- FileId: Mandatory. Some kind of (currently) obscure hash, apparently based on the CreationTime data.
- CreationTime: Mandatory. The date/time of creation of that file, as a single string (e.g. "2013-08-05 10:27:44:000").
- Creator: Mandatory? A string identifying the tool used to create that FBX.
- GlobalSettings: Mandatory? A set of properties defining general data, like the orientation of the scene…
- Documents: Optional. Not sure what it is used for actually, so far only saw FBX files with a single doc definition here… Maybe it allows for several scenes in a single FBX?
- References: ???
- Definitions: Optional. Here templates are defined.
- Objects: Optional. Here real, useful, static (?) data are stored (objects, geometries, textures, materials, etc.).
- Connections: Optional. Here are defined links between data defined in Objects (e.g. which object uses which material, etc.).
- Takes: Optional. Here animations are defined?
FBXHeaderExtension
…
FileId and CreationTime
Those two fields are used as some kind of obscure “signing” of the file. It seems to use the CreationTime to generate the FileId, but we still do not know how, so currently we use a dummy timestamp (0 since epoch) and fixed fileid… Investigation needed here!
GlobalSettings
…
Documents
Not sure what it is used for currently - looks like FBX could support multiple documents (like in, multiple scenes?), but only found single-doc examples so far... To be investigated.
Contains a "Count" element (number of documents), and a set of "Document" elements.
Each Document contains three data, an UID (as int64), an always empty string, and a name. Its children are a set of properties, and a "RootNode" with a unique int64 value (always 0, most likely an offset of some kind, have no more hints here).
["Documents", [], "", [ ["Count", [1], "I", []], ["Document", [151925416, "", "Scene"], "LSS", [ ["Properties70", [], "", [ ["P", ["SourceObject", "object", "", ""], "SSSS", []], ["P", ["ActiveAnimStackName", "KString", "", "", ""], "SSSSS", []] ]], ["RootNode", [0], "L", []] ]] ]]
References
Currently have absolutely no idea what this is. Usually empty in examples I found.
Definitions
Contains a Version element, a Count one (which gives the total number of data elements using those template definitions), and a set of template definitions:
["Definitions", [], "", [ ["Version", [100], "I", []], ["Count", [12], "I", []], ["ObjectType", ["GlobalSettings"], "S", [ ... ]], ["ObjectType", ["Model"], "S", [ ... ]], ... ]]
Objects
Objects are a set of elements of various kind (light data, camera data, geometry data, object data, material, texture, etc.), which later get linked together in the Connections section, using their UIDs.
All data have a similar top-level element, which seems to use a standard name depending on its content type, has three data (the first one being its UID, the second a 'name::class' pair, and the third a sort of sub-class), and a set of children, including properties:
["NodeAttribute", [ # Main class 151952504, # The UID. "::NodeAttribute", # Name::Class "CameraSwitcher" # Sub-class ], "LSS", [ ["Properties70", [], "", [ ["P", ["Camera Index", "Integer", "", "A+", 100], "SSSSI", []] ]], ["Version", [101], "I", []], ... ]]
The name::class separator (represented as '::' here) in binary format is in fact the chain b"\x00\x01"
.
Note it looks like some children elements sometimes repeat content from properties (e.g. for cameras, "Position", "UpVector" and "InterestPosition" properties have same content as "Position", "Up" and "LookAt" children elements respectively). Probably some compatibility matters.
Connections
Connections simply defines links between objects (like a given material is used by a given object, etc.):
["Connections", [], "", [ ["C", ["OO", 152171968, 0], "SLL", []], ["C", ["OO", 152161640, 0], "SLL", []], ["C", ["OP", 152102088, 987654321, "Lcl Translation"], "SLLS", []], … ]]
Each connection is an element of name "C", with following data:
- A code string defining the nature of the relation (so far, found "OO" for object linked to object, and "OP" for object linked to property.
- A first UID (the "child").
- A second UID (the "parent", if 0 it is the (implicit) root node of the FBX doc).
- In case of object-to-property connection, a string which is the name of the parent’s property the child is linked to. This is used e.g. to assign a texture to the diffuse, specular, ambient, etc. property of a material. Note that property may be an “Properties70” one, or a direct parent's element one.
I also saw in a few files "PO" relations (property children of element), and I guess we could also imagine "PP" ones - but we do not have to bother about those currently, did not hit any use case yet.
Takes
This is the old (deprecated even?) animation system, looks like letting it empty in 7.4 files does not hurt…
Main Data - Objects
Model
- Class: FbxObject::FbxNode
- Connected to root element (0) or another Model in case of parenting.
These elements are roughly equivalent to Blender’s Objects. They define basic location, rotation and scale, as well as a bunch of advanced settings related to the same topics.
Cameras…
When linked to camera data, Models also contain some camera data (like width/eight, etc.). Not sure though this is not a remnant from older versions of the format…
|
Transformations Constraints
Any FBX Model can have translation/rotation/scaling limits, enabled by a "...Active" bool property, and with global or per-axis min/max values.
It can also have some "track to"-like relations, using another object of the scene as target (and optionally another one as up-target). However, how this works is still unclear (relevant properties are "object" type, which holds no value…).
Spaces & Parenting
Transformations of a Model (mostly "Lcl Translation", "Lcl Rotation" [Euler, in degrees] and "Lcl Scaling") are always in parent space, or world space in no parent is present ("Lcl" stands for "Local"). This is also correct for bones, since in FBX they are roughly represented as chains of parented Models (see #Armature_and_Bones Armature and Bones below).
However, there are three ways to apply child transformations in parent space, controlled by the "InheritType" enum property (FbxTransform::EInheritType):
- eInheritRrSs (0).
- eInheritRSrs (1).
- eInheritRrs (2).
Uppercase are for parent (rotation/scaling), lowercase are for child.
With Blender parenting and in bone chains, we should use RSrs, which matches usual 3×3 matrix multiplications (as far as I understand!). And we could also maybe use Rrs to match our disabled "Inherit Scale" bone option?
Light Data
- Class: FbxObject::FbxNodeAttribute::FbxLight
- Connected to a Model.
Roughly equivalent to Blender’s Lamp (type of light source, energy, direction, etc.).
Camera Data
- Class: FbxObject::FbxNodeAttribute::FbxCamera
- Connected to a Model (plus another, “virtual” Model for CameraSwitcher?).
- Class: FbxObject::FbxNodeAttribute::FbxCameraSwitcher
Camera data are divided in two entities, camera itself, and “camera switcher”, which I have not much hints about yet.
Camera
embeds object-level data (position and orientation).
Camera
expects values for its sensor’s size to be in inches!
Camera
expects values for its angles to be in degrees.
Mesh Data
- Class: FbxObject::FbxNodeAttribute::FbxLayerContainer::FbxGeometryBase::FbxGeometry::FbxMesh
- Connected to a Model.
Roughly equivalent to Blender’s Mesh.
This is in the “Layer” element family, i.e. it can contains several data of the same type (one per layer), e.g. for UV maps or VCol layers. The general structure is:
["Geometry", [152167664, "Name::Geometry", "Mesh"], "LSS", [ ["Vertices", [[<array_of_floats>]], "d", []], ["PolygonVertexIndex", [[<array_of_integers>]], "i", []], ["Edges", [[<array_of_integers>]], "i", []], ["GeometryVersion", [124], "I", []], ["LayerElementNormal", [0], "I", [ ["Version", [101], "I", []], ["Name", [""], "S", []], ["MappingInformationType", ["ByVertice"], "S", []], ["ReferenceInformationType", ["Direct"], "S", []], ["Normals", [[<array_of_floats>]], "d", []] ]], ["LayerElementSmoothing", [0], "I", [ ["Version", [102], "I", []], ["Name", [""], "S", []], ["MappingInformationType", ["ByPolygon"], "S", []], ["ReferenceInformationType", ["Direct"], "S", []], ["Smoothing", [[<array_of_integers>]], "i", []] # Yep, int32 for bool values... ]], ["LayerElementUV", [0], "I", [ ["Version", [101], "I", []], ["Name", ["UVMap"], "S", []], ["MappingInformationType", ["ByPolygonVertex"], "S", []], ["ReferenceInformationType", ["IndexToDirect"], "S", []], ["UV", [[<array_of_floats>]], "d", []], ["UVIndex", [[<array_of_integers>]], "i", []], ]], ["LayerElementUV", [1], "I", [ ["Version", [101], "I", []], ["Name", ["UVMap.001"], "S", []], ["MappingInformationType", ["ByPolygonVertex"], "S", []], ["ReferenceInformationType", ["IndexToDirect"], "S", []], ["UV", [[<array_of_floats>]], "d", []], ["UVIndex", [[<array_of_integers>]], "i", []], ]], ["LayerElementMaterial", [0], "I", [ ["Version", [101], "I", []], ["Name", ["gold"], "S", []], ["MappingInformationType", ["AllSame"], "S", []], ["ReferenceInformationType", ["IndexToDirect"], "S", []], ["Materials", [[0]], "i", []] ]], ["Layer", [0], "I", [ ["Version", [100], "I", []], ["LayerElement", [], "", [ ["Type", ["LayerElementNormal"], "S", []], ["TypedIndex", [0], "I", []] ]], ["LayerElement", [], "", [ ["Type", ["LayerElementMaterial"], "S", []], ["TypedIndex", [0], "I", []] ]], ["LayerElement", [], "", [ ["Type", ["LayerElementSmoothing"], "S", []], ["TypedIndex", [0], "I", []] ]] ]] ["Layer", [1], "I", [ ["Version", [100], "I", []], ["LayerElement", [], "", [ ["Type", ["LayerElementUV"], "S", []], ["TypedIndex", [1], "I", []] ]], ]] ]]
Here again, the '::' is just a convention, in binary format is in fact the chain b"\x00\x01"
.
So, we have first the basic data:
- Vertices: a flatten array of coords (so if verts[0] == (1.0, 2.0, 0.5), array starts with [1.0, 2.0, 0.5, ...]).
- Polygons (defined by vertices indices, the last index of a polygon is negated).
- Edges (optional). Edges are defined in quite an odd way: each index here refers to a polygon’s array index, so that the edge is defined by this polygon’s vertex and the next one in the same polygon. Why make things simple when you can make them complex?
Then, you have the layer elements (uvs, materials, vcol, smooth, etc.). Those layer elements can affect vertices, edges, faces, faces’ vertices (what we call “loops” in Blender code) or everything. Except for the latest case, you can map layer data to affected geometry elements in two different ways:
- Direct: item n in layer data array affects (vertice|edge|face|loop) n. WARNING though it shall not be allowed (see FBX SDK doc, it seems official FBX exporters accept truncated arrays in this mode (e.g. only two vcols items in a mesh containing tens of vertices…).
- IndexToDirect: layer data only contains singular values, and an additional integer array maps each geometry element to a value in layer data array (or to nothing - mapping index is -1). So e.g. if UVs of loop 5 and loop 8 are the same, the fifth and eighth items of layer index array will both have the same value, which points to the correct UV triplet in layer data.
And once all layer element have been defined, you have to define the layers themselves, which contain them. There can only be one layer element of each type in a layer.
Null Data
- Class: FbxObject::FbxNodeAttribute::FbxNull
- Connected to a Model.
Roughly equivalent to Blender’s Empty.
Armature and Bones
In FBX, there is no real armature concept, you rather have chains of bones, which are nearly only defined by "Model" elements (FbxNode), i.e. loc/rot/scale from parent bone. Root bones are children of an empty object (Model), which plays the role of an armature.
In other words, armatures are presented more like a set of chains of parented-hooks.
Each bone/hook is represented by a "LimbNode", which also contains a "Size" parameter (its length), not sure this is used/understood by all importers though.
Bones and mesh are "linked" first by a BindPose element, which stores the (transform) matrix of the mesh and all bones in global (world) space, at the time of binding.
Second "link" is the Deformer (Skin) element, which is kind of similar to Blender's vertex group system for armatures. This element stores SubDeformers (a.k.a. Clusters), one per bone, with 'binding' weights for each vertex/control point, and some transform matrices.
Those transform matrices are not yet much clear to me, as far as I understand, they refer to transformations of mesh/armature/bone at binding time:
- Transform is the transformation of the mesh, in the bone's space!.
- TransformLink is the transformation of the bone, in global space.
- TransformAssociateModel would be transformation of the armature object??? Not quite sure why it’b be needed…
To summarize connections:
- LimbNode (bone data) -> Model (bone transformations, mere Empty object linked parent bone's one as any other Model parent relationship).
- LimbNode (bone data) -> Cluster (kind of 'vgroup') -> Skin -> Geometry (usually mesh data).
BindPose has its own 'linking' system, that does not use connections (yes, FBX…). All children PoseNode elements have a Node property that contains the numeric ID of the element (mesh or bone) they represent. I would assume this is an old, somewhat deprecated system, in favor to the cluster/skin one… But we can still find many FBX files around that only partly use deformers, so for now in importer we use deformers if available, and fallback to bindpose otherwise.
Shape Keys
Shape keys handling are very similar to armatures one in FBX 7.x.
First, you define your shapes, as special Geometry elements ('Shape'). They only store a list of vertex indices, and matching coordinates and normals (normals often stored as NULL vector, not sure yet what it means). Note that the shaped mesh element gets one animatable num prop for each of its shape keys, looks like two different anim systems of the shape's influence coexist here… :/
It also generates a BindPose in this case, but against the Model element, not the Geometry one of the mesh… And I really do not see what’s the use of the bindnode matrix here - will ignore completely that for now, sigh.
Main (and probably future-proof ?) way to link a shape to its mesh is done through the Deformer system - here main element is a “BlendShape” element, and subdeformers are “BlendShapeChannel”. Those have a global animatable DeformPercent property, and an FullWeights array of factors, that I assume to be some kind of per-vertex weighting, we can probably ignore that in Blender for now.
- Shape -> BlendShapeChannel -> BlendShape -> Geometry (usually mesh data).
Material Data
- Class: FbxObject::FbxSurfaceMaterial
- Connected to a Model.
FBX supports two kind of materials, basic Lambert/Phong shading, and custom shaders. Unfortunately, the laters only support closed shaders (HLSL and CGSL), no GLSL, so we won’t see those here (for now).
Basic shading will hence make you use either FbxSurfaceMaterialLambert (subclass of surfacematerial, for diffuse only) or FbxSurfaceMaterialPhong (subclass of lambert one, for diffuse + specular shading).
Note the data node itself is always simply called "Material", and you specify either "phong" or "lambert" in the "ShadingModel" element:
["Material", [1055568016, "default::Material", ""], "LSS", [ ["Version", [102], "I", []], ["ShadingModel", ["phong"], "S", []], ["MultiLayer", [0], "I", []], ["Properties70", [], "", [ ["P", ["ShadingModel", "KString", "", "", "phong"], "SSSSS", []], ["P", ["EmissiveFactor", "Number", "", "A", 0.0], "SSSSD", []], ["P", ["AmbientColor", "Color", "", "A", 0.5879999995231628, 0.5879999995231628, 0.5879999995231628], "SSSSDDD", []], ["P", ["DiffuseColor", "Color", "", "A", 0.5879999995231628, 0.5879999995231628, 0.5879999995231628], "SSSSDDD", []], ... ]] ]]
Multilayer is actually a bool, I think, not sure yet what it means/controls exactly.
Depending on the app, in theory most properties of materials can be controlled by textures (linking a texture e.g. to the "DiffuseColor" property is how apply a texture to a material's color!), see below for more details.
Note that meshes can have a LayerElementMaterial layer, which assigns a given material to a given face. Materials here are referenced by a mere index (instead of UIDs as everywhere else in modern FBX), which is the order in which they are linked to the object (FBX node)!
Texture Data
- Class: FbxObject::FbxTexture::FbxFileTexture
- Connected to a Material.
- Class: FbxObject::FbxVideo
- Connected to a FileTexture.
Textures are divided in two elements in FBX:
- The texture itself, which contains mapping data, and is linked to materials’ properties ("OP" connections).
- The “Video” (or “Clip”), which references pictures, and is also used for static images (liked to Texture elements).
The Texture (TextureVideoClip type) contains all mapping data (can be UV of course, but also simple cube/sphere/tube projection, etc.). It also contains file path, even though Video also has those data. Note there seems to be no way to choose a specific UVmap for a given texture! At least, found none…
The Video (Clip type) contains the actual image/video path, together with some info like its name. It can also embed the binary data of the image/video, in "Content" byte array element.
Note in theory, there is also a support of procedural textures, but these are mere opaque blob of data, unusable for us.
We may also use the layered textures to match situations where several textures affect a same property of a same material. Would first check whether it’s supported enough well across applications, though!
Animation
- Class: FbxObject::FbxCollection::FbxAnimStack
- Connected to noting!
- Class: FbxObject::FbxCollection::FbxAnimLayer
- Connected to an AnimStack.
- Class: FbxObject::FbxAnimCurveNode
- Connected to an AnimLayer and a Node's property.
- Class: FbxObject::FbxAnimCurveBase::FbxAnimCurve
- Connected to an AnimCurveNode's property.
(New) animation in FBX is actually fairly simple: you have a Stack (usually only one per FBX file, else you may have compatibility issues), to which a set of Layers are linked.
AnimLayers are similar to Blender’s Actions. You may have several Layers affecting a same object’s property, with blending effects, however we won’t seek for such complexity in our exporter!
A set of CurveNodes is linked to each AnimLayer, which define which properties are animated:
["AnimationCurveNode", [2045776, "T::AnimCurveNode", ""], "LSS", [ ["Properties70", [], "", [ ["P", ["d", "Compound", "", ""], "SSSS", []]]]]]]], ["P", ["d|X", "Number", "", "A", 2.227995], "SSSSD", []], ["P", ["d|Y", "Number", "", "A", 3.0238389999999997], "SSSSD", []], ["P", ["d|Z", "Number", "", "A", -1.49012e-08], "SSSSD", []]]]]]
This CurveNode, once linked to a Model’s Lcl Translation property, will control its location. Note that in theory, a same CurveNode can control several properties of several objects (but we won’t mess with that either in Blender!).
Note how it uses a unique Compound property, with one item per channel of the target property. So for translation & co, you’ll have three, for “factor” properties you’ll only have one, etc. Those compound properties must be of the same type as the target ones, their values are presumed to be “default” ones… The naming scheme of those props remains a bit fuzzy currently.
Finally, an AnimCurve is linked to each prop of the CurveNode:
["AnimationCurve", [924545958, "::AnimCurve", ""], "LSS", [ ["Default", [-120.30426094607161], "D", []], ["KeyVer", [4008], "I", []], ["KeyTime", [[1847446320,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0,<PHONE_NUMBER>0]], "l", []], ["KeyValueFloat", [[-90.00000762939453, -90.16700744628906, -90.67182159423828, -91.51591491699219, -92.69371032714844, -94.19062042236328, -95.98118591308594, -98.02799224853516, -100.28105926513672, -102.67914581298828, -105.1521224975586, -107.62510681152344, -110.02317810058594, -112.27626037597656, -114.32304382324219, -116.11365509033203, -117.61054229736328, -118.78833770751953, -119.63243103027344, -120.13725280761719, -120.30426025390625, -120.30426025390625]], "f", []], ["KeyAttrFlags", [[24840]], "i", []], ["KeyAttrDataFloat", [[0.0, 0.0, 9.419963346924634e-30, 0.0]], "f", []], ["KeyAttrRefCount", [[22]], "i", []]]]
An anim curve has a default value (presumably always a double?), a version, like most of other "Data" elements in FBX, an array of time indices (in KTime format), an array of values (float ones, sigh), both defining the basis of keyframes. Then you have three KeyAttr… elements. First one is an array of flags, gathering a whole bunch of behavior for the keyframes (types of interpolation, etc.). Second one is an array of float values, four per defined flags, which probably control things like TBC and other advanced keyframe features. Finally, the RefCount array contains, for each flag (and matching float data), the number of keys using it. So if you use the same flag for all keys, you can only write it one, and set here the number of keys in your curve. I you use (flag/floatdata) A for first ten keys, then (flag/floatdata) B for five keys, then again (flag/floatdata) A for ten keys, you’ll have something like that (for twenty five keys):
["KeyAttrFlags", [[A, B, A]], "i", []], ["KeyAttrDataFloat", [[A1, A2, A3, A4, B1, B2, B3, B4, A1, A2, A3, A4]], "f", []], ["KeyAttrRefCount", [[10, 5, 10]], "i", []]]]
Now here comes the funny little trick: for binary format, AnimationStack and AnimationLayer elements need the 13-NULL sentinel, even when they do have properties but no elements (unlike any other type of element in bin FBX, as far as we know).


Some People May Post Bible Quotes And Dress Decently But They Are Worse Than Prostitutes – Moesha Buduong
by vanessa nordziCurvaceous Ghanaian actress and Instagram model Moesha Buduong has a piece of advice for those who judge other ladies by their appearance.
According to Moesha in an Instagram post, appearances are deceptive.
Moesha added she has friends who dress decently and post Bible Quotes on daily basis but behind close doors they engage in all kinds of sexual immorality.
She wrote” A woman posting sexy pictures doesn’t mean she is easy or looking for sex.
As the saying goes, never judge a book by its cover.
Moesha was recently on a vacation in Dubai to chill with some starts including Wizkid and Tiwa Savage.
Checkout her post below;


Abdulmohsen Alsamin, CIS-255, Program 3
This web page is a template for students in CIS-255. Please follow this format when doing your program.
This is a template for Program 03
1. variable names
2. primitive data types
3.Operators and Expressions
4. Conditionals, Truthy, Falsy
5. Control Structures
6. Objects, Arrays
7. Functions and Prototypes
8. Write to DOM
9. Link to jQuery Customer Golf Order Form
Program 3 Order Form