{{> meta}}
{{> navbar}}text text more text some description fun text
Lorem Khaled Ipsum is a major key to success. Wraith talk. The other day the grass was brown, now it’s green because I ain’t give up. Never surrender. The key to success is to keep your head above the water, never give up. Cloth talk. A major key, never panic.  We the best. Fan luv. Lion! Stay focused.   They never said winning was easy. Some people can’t handle success, I can.


Get content directly to where it's actionable
You could have people email in bug reports and feedback, but then your job is to copy and paste this content into GitHub issues every day. That's no fun.
Customizable
Via FeedbackReporterDatasource
you can provide the labels you want assigned to each issue, as well as any
arbitrary data that could be useful in troubleshooting.
Screenshots are key
The report feedback interface displays when a user takes a screenshot of your application.
Seeing is believing. It's not that people file bad bugs, of course not, I'd never say that. (I would). But seeing what they see is the difference between "That one screen with the thing didn't look right" and actually fixing a problem.
Plus you own the screenshots. With other user feedback services the screenshots are hosted by them and live for eternity. Here the screenshots are hosted on your own Google Cloud Storage bucket, and you can even lock them down with signed URLs if you want.
Installation
- In your Podfile add:
pod 'GitYourFeedback'
or your Cartfile:github "gabek/GitYourFeedback"
- Generate a Personal Access Token for the GitHub user who will be saving the issues in your repo.
-
In your project's
Info.plist
add a key ofNSPhotoLibraryUsageDescription
with a string explaining that your use of the photo library is for submitting screenshots. This is user-facing so use your own judgement. -
Create a struct that adheres to the FeedbackOptions protocol. It should be as simple as:
struct MyFeedbackReportingOptions: FeedbackOptions { // The GitHub personal access token for the below user var token: String = "abc123" // The user that generated the above Personal Access Token and has access to the repository. var user: String = "repoman" // The Github repository in username/repo format where the issue will be saved. var repo: String = "repoman/myRepository" }
-
In your AppDelegate or some other place of your choice that sticks around for the lifetime of your app, add an instance of
FeedbackReporter using your GitHub Personal Access Token, your GitHub username, and the repo you'd like to create
the issues in. This user needs access to create issues in the repo specified.
func setupFeedbackReporting() { let feedbackReporter = FeedbackReporter(options: MyFeedbackReportingOptions()) }
-
Implement FeedbackReporterDatasource's
uploadUrl:completionHandler
method to point to a valid Google Storage bucket. This bucket needs access for you to read and write to. It can look like this:
Obviously use your real Google Cloud Storage upload bucket.func uploadUrl(_ completionHandler: (String) -> Void) { let filename = String(Date().timeIntervalSince1970) + ".jpg" let url = "https://www.googleapis.com/upload/storage/v1/b/mybucketname.appspot.com/o?name=\(filename)" completionHandler(url) }
-
There are other methods you can optionally implement as well, to provide additional information in the issues that get filed.
will allow you to supply an arbitrary string that gets added to the issue when filed, and the issues that are assigned to this issue in GitHub respectively.func additionalData() -> String? func issueLabels() -> [String]?
Presenting the Feedback interface
The interface will automatically display as a result of a user taking a screenshot. If this is the first time the user has taken a screenshot in your application they will be greeted with an iOS permissions dialog stating they need to grant your app access to the user's Photos in order to use the screenshot. You may want to emphasize that the user should accept this. It uses the copy you added in your Info.plist's NSPhotoLibraryUsageDescription
key.
You could also manually fire yourFeedbackReporterInstance.display()
with an optional specific view controller to present from. With this approach the user will have to select their own screenshot manually if they want to send one.
Support or Contact
Having trouble? File an issue and let's fix it together.


Please review and submit your order.
Note:Shipping will be calculated manually and you will contacted by our team with further details.
*Delivery time will vary depending on country of origin and destination
© 2019 Art Gallery Online, Inc. All rights reserved. Need help? Contact us at support


|
1-Wire API for .NET Version 4.00
|
Inherits com::dalsemi::onewire::container::OneWireContainer, and com::dalsemi::onewire::container::TemperatureContainer.
Inherited by OneWireContainer22.
Public Member Functions | |
| OneWireContainer28 () | |
Creates an empty OneWireContainer28 . | |
| OneWireContainer28 (DSPortAdapter sourceAdapter, byte[] newAddress) | |
Creates a OneWireContainer28 with the provided adapter object and the address of this One-Wire device. | |
| OneWireContainer28 (DSPortAdapter sourceAdapter, long newAddress) | |
Creates a OneWireContainer28 with the provided adapter object and the address of this One-Wire device. | |
| OneWireContainer28 (DSPortAdapter sourceAdapter, String newAddress) | |
Creates a OneWireContainer28 with the provided adapter object and the address of this One-Wire device. | |
| String | getName () |
Retrieves the Maxim Integrated Products part number of this OneWireContainer28 as a String . | |
| String | getAlternateNames () |
| Retrieves the alternate Maxim Integrated Products part numbers or names. | |
| String | getDescription () |
Retrieves a short description of the function of this OneWireContainer28 type. | |
| boolean | hasTemperatureAlarms () |
| Checks to see if this temperature measuring device has high/low trip alarms. | |
| boolean | hasSelectableTemperatureResolution () |
| Checks to see if this device has selectable temperature resolution. | |
| double[] | getTemperatureResolutions () |
| Gets an array of available temperature resolutions in Celsius. | |
| double | getTemperatureAlarmResolution () |
| Gets the temperature alarm resolution in Celsius. | |
| double | getMaxTemperature () |
| Gets the maximum temperature in Celsius. | |
| double | getMinTemperature () |
| Gets the minimum temperature in Celsius. | |
| void | doTemperatureConvert (byte[] state) throws OneWireIOException, OneWireException |
Performs a temperature conversion on state information. | |
| double | getTemperature (byte[] state) throws OneWireIOException |
Gets the temperature value in Celsius from the state data retrieved from the readDevice() method. | |
| double | getTemperatureAlarm (int alarmType, byte[] state) |
Gets the specified temperature alarm value in Celsius from the state data retrieved from the readDevice() method. | |
| double | getTemperatureResolution (byte[] state) |
Gets the current temperature resolution in Celsius from the state data retrieved from the readDevice() method. | |
| void | setTemperatureAlarm (int alarmType, double alarmValue, byte[] state) throws OneWireException, OneWireIOException |
Sets the temperature alarm value in Celsius in the provided state data. | |
| void | setTemperatureResolution (double resolution, byte[] state) throws OneWireException |
Sets the current temperature resolution in Celsius in the provided state data. | |
| byte[] | readDevice () throws OneWireIOException, OneWireException |
Retrieves this OneWireContainer28 state information. | |
| void | writeDevice (byte[] state) throws OneWireIOException, OneWireException |
Writes to this OneWireContainer28 state information that have been changed by 'set ' methods. | |
| byte[] | readScratchpad () throws OneWireIOException, OneWireException |
| Reads the Scratchpad of the DS18B20. | |
| void | writeScratchpad (byte[] data) throws OneWireIOException, OneWireException |
| Writes to the Scratchpad of the DS18B20. | |
| void | copyScratchpad () throws OneWireIOException, OneWireException |
| Copies the Scratchpad to the E-squared memory of the DS18B20. | |
| byte[] | recallE2 () throws OneWireIOException, OneWireException |
Recalls the DS18B20 temperature trigger values (ALARM_HIGH and ALARM_LOW ) and the configuration register to the scratchpad and reads the scratchpad. | |
| boolean | isExternalPowerSupplied () throws OneWireIOException, OneWireException |
| Reads the way power is supplied to the DS18B20. | |
| float | convertToFahrenheit (float celsiusTemperature) |
| Converts a temperature reading from Celsius to Fahrenheit. | |
Static Public Attributes | |
| static final byte | WRITE_SCRATCHPAD_COMMAND = ( byte ) 0x4E |
| DS18B20 writes data to scratchpad command. | |
| static final byte | READ_SCRATCHPAD_COMMAND = ( byte ) 0xBE |
| DS18B20 reads data from scratchpad command. | |
| static final byte | COPY_SCRATCHPAD_COMMAND = ( byte ) 0x48 |
| DS18B20 copys data from scratchpad to E-squared memory command. | |
| static final byte | CONVERT_TEMPERATURE_COMMAND = ( byte ) 0x44 |
| DS18B20 converts temperature command. | |
| static final byte | RECALL_E2MEMORY_COMMAND = ( byte ) 0xB8 |
| DS18B20 recalls E-squared memory command. | |
| static final byte | READ_POWER_SUPPLY_COMMAND = ( byte ) 0xB4 |
| DS18B20 reads power supply command. | |
| static final byte | RESOLUTION_12_BIT = ( byte ) 0x7F |
| DS18B20 12-bit resolution constant for CONFIG byte. | |
| static final byte | RESOLUTION_11_BIT = ( byte ) 0x5F |
| DS18B20 11-bit resolution constant for CONFIG byte. | |
| static final byte | RESOLUTION_10_BIT = ( byte ) 0x3F |
| DS18B20 10-bit resolution constant for CONFIG byte. | |
| static final byte | RESOLUTION_9_BIT = ( byte ) 0x1F |
| DS18B20 9-bit resolution constant for CONFIG byte. |
1-Wire container for temperature iButton which measures temperatures from -55 °C to +125 °C , DS18B20. This container encapsulates the functionality of the iButton family type 28 (hex)
See the usage example in TemperatureContainer for temperature specific operations.
http://pdfserv.maxim-ic.com/arpdf/DS18B20.pdf
Creates an empty OneWireContainer28
.
Must call setupContainer()
before using this new container.
This is one of the methods to construct a OneWireContainer28
. The others are through creating a OneWireContainer28
with parameters.
| OneWireContainer28 | ( | DSPortAdapter | sourceAdapter, |
| byte[] | newAddress | ||
| ) |
Creates a OneWireContainer28
with the provided adapter object and the address of this One-Wire device.
This is one of the methods to construct a OneWireContainer28
. The others are through creating a OneWireContainer28
with different parameters types.
| sourceAdapter | adapter object required to communicate with this One-Wire device |
| newAddress | address of this One-Wire device |
| OneWireContainer28 | ( | DSPortAdapter | sourceAdapter, |
| long | newAddress | ||
| ) |
Creates a OneWireContainer28
with the provided adapter object and the address of this One-Wire device.
This is one of the methods to construct a OneWireContainer28
. The others are through creating a OneWireContainer28
with different parameters types.
| sourceAdapter | adapter object required to communicate with this One-Wire device |
| newAddress | address of this One-Wire device |
| OneWireContainer28 | ( | DSPortAdapter | sourceAdapter, |
| String | newAddress | ||
| ) |
Creates a OneWireContainer28
with the provided adapter object and the address of this One-Wire device.
This is one of the methods to construct a OneWireContainer28
. The others are through creating a OneWireContainer28
with different parameters types.
| sourceAdapter | adapter object required to communicate with this One-Wire device |
| newAddress | address of this One-Wire device |
| float convertToFahrenheit | ( | float | celsiusTemperature | ) |
Converts a temperature reading from Celsius to Fahrenheit.
| celsiusTemperature | temperature value in Celsius |
| void copyScratchpad | ( | ) | throws OneWireIOException, OneWireException |
Copies the Scratchpad to the E-squared memory of the DS18B20.
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
| void doTemperatureConvert | ( | byte[] | state | ) | throws OneWireIOException, OneWireException |
Performs a temperature conversion on state
information.
| state | byte array with device state information |
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
Implements TemperatureContainer.
| String getAlternateNames | ( | ) |
Retrieves the alternate Maxim Integrated Products part numbers or names.
A 'family' of 1-Wire Network devices may have more than one part number depending on packaging. There can also be nicknames such as 'Crypto iButton'.
OneWireContainer28
alternate names Reimplemented from OneWireContainer.
Reimplemented in OneWireContainer22.
| String getDescription | ( | ) |
Retrieves a short description of the function of this OneWireContainer28
type.
OneWireContainer28
functional description Reimplemented from OneWireContainer.
Reimplemented in OneWireContainer22.
| double getMaxTemperature | ( | ) |
Gets the maximum temperature in Celsius.
OneWireContainer28
Implements TemperatureContainer.
| double getMinTemperature | ( | ) |
Gets the minimum temperature in Celsius.
OneWireContainer28
Implements TemperatureContainer.
| String getName | ( | ) |
Retrieves the Maxim Integrated Products part number of this OneWireContainer28
as a String
.
For example 'DS18B20'.
OneWireContainer28
name Reimplemented from OneWireContainer.
Reimplemented in OneWireContainer22.
| double getTemperature | ( | byte[] | state | ) | throws OneWireIOException |
Gets the temperature value in Celsius from the state
data retrieved from the readDevice()
method.
| state | byte array with device state information for this OneWireContainer28 |
doTemperatureConvert()
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
Implements TemperatureContainer.
| double getTemperatureAlarm | ( | int | alarmType, |
| byte[] | state | ||
| ) |
Gets the specified temperature alarm value in Celsius from the state
data retrieved from the readDevice()
method.
| alarmType | valid value: ALARM_HIGH or ALARM_LOW |
| state | byte array with device state information |
OneWireContainer28
Implements TemperatureContainer.
| double getTemperatureAlarmResolution | ( | ) |
Gets the temperature alarm resolution in Celsius.
OneWireContainer28
Implements TemperatureContainer.
| double getTemperatureResolution | ( | byte[] | state | ) |
Gets the current temperature resolution in Celsius from the state
data retrieved from the readDevice()
method.
| state | byte array with device state information |
OneWireContainer28
Implements TemperatureContainer.
| double [] getTemperatureResolutions | ( | ) |
Gets an array of available temperature resolutions in Celsius.
OneWireContainer28
. The minimum resolution is returned as the first element and maximum resolution as the last element.Implements TemperatureContainer.
| boolean hasSelectableTemperatureResolution | ( | ) |
Checks to see if this device has selectable temperature resolution.
true
if this OneWireContainer28
has selectable temperature resolutionImplements TemperatureContainer.
| boolean hasTemperatureAlarms | ( | ) |
Checks to see if this temperature measuring device has high/low trip alarms.
true
if this OneWireContainer28
has high/low trip alarmsImplements TemperatureContainer.
| boolean isExternalPowerSupplied | ( | ) | throws OneWireIOException, OneWireException |
Reads the way power is supplied to the DS18B20.
true
for external power, false
for parasite power| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
| byte [] readDevice | ( | ) | throws OneWireIOException, OneWireException |
Retrieves this OneWireContainer28
state information.
The state information is returned as a byte array. Pass this byte array to the 'get
' and 'set
' methods. If the device state needs to be changed, then call the writeDevice()
to finalize the changes.
OneWireContainer28
state information. Device state looks like this: 0 : temperature LSB 1 : temperature MSB 2 : trip high 3 : trip low 4 : configuration register (for resolution) 5 : reserved 6 : reserved 7 : reserved 8 : an 8 bit CRC of the previous 8 bytes
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
Implements OneWireSensor.
| byte [] readScratchpad | ( | ) | throws OneWireIOException, OneWireException |
Reads the Scratchpad of the DS18B20.
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
| byte [] recallE2 | ( | ) | throws OneWireIOException, OneWireException |
Recalls the DS18B20 temperature trigger values (ALARM_HIGH
and ALARM_LOW
) and the configuration register to the scratchpad and reads the scratchpad.
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
| void setTemperatureAlarm | ( | int | alarmType, |
| double | alarmValue, | ||
| byte[] | state | ||
| ) | throws OneWireException, OneWireIOException |
Sets the temperature alarm value in Celsius in the provided state
data.
Use the method writeDevice()
with this data to finalize the change to the device.
| alarmType | valid value: ALARM_HIGH or ALARM_LOW |
| alarmValue | alarm trip value in Celsius |
| state | byte array with device state information |
Implements TemperatureContainer.
| void setTemperatureResolution | ( | double | resolution, |
| byte[] | state | ||
| ) | throws OneWireException |
Sets the current temperature resolution in Celsius in the provided state
data.
Use the method writeDevice()
with this data to finalize the change to the device.
| resolution | temperature resolution in Celsius. Valid values are RESOLUTION_9_BIT , RESOLUTION_10_BIT , RESOLUTION_11_BIT and RESOLUTION_12_BIT . |
| state | byte array with device state information |
Implements TemperatureContainer.
| void writeDevice | ( | byte[] | state | ) | throws OneWireIOException, OneWireException |
Writes to this OneWireContainer28
state
information that have been changed by 'set
' methods.
Only the state registers that changed are updated. This is done by referencing a field information appended to the state data.
| state | byte array with device state information |
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
Implements OneWireSensor.
| void writeScratchpad | ( | byte[] | data | ) | throws OneWireIOException, OneWireException |
Writes to the Scratchpad of the DS18B20.
| data | data to be written to the scratchpad. First byte of data must be the temperature High Trip Point, the second byte must be the temperature Low Trip Point, and the third must be the Resolution (configuration register). |
| OneWireIOException | on a 1-Wire communication error such as reading an incorrect CRC from this OneWireContainer28 . This could be caused by a physical interruption in the 1-Wire Network due to shorts or a newly arriving 1-Wire device issuing a 'presence pulse'. |
| OneWireException | on a communication or setup error with the 1-Wire adapter |
| IllegalArgumentException | when data is of invalid length |
final byte READ_POWER_SUPPLY_COMMAND = ( byte ) 0xB4 [static] |
DS18B20 reads power supply command.
This command is used to determine if external power is supplied.


1. It is forbidden to use the .bbsquad command if you are not a WoPX employee.
2. It is forbidden to intentionally spam a bot / bot
3. Everything that you earn from the bot, you must give to the bot developers.
Do you agree ?


Curtis had to go shopping with his mom. He needed pants and shirts. Mom and Curtis went to the mall. In the first store, Curtis saw a little girl behind a rack of clothes. She was giggling and playing in the hanging shirts. Curtis watched her but did not see her parents or a guardian anywhere. She did not seem to know she was lost. "Mom! That baby is alone!" declared Curtis. "Oh my," said Mom. Mom went to the lost child and held her hand. Curtis and his mom had to take the girl to mall security. "We found this girl," exclaimed Curtis to the man. "It is good you interfered," said the man. "Her mom was very scared!"  "Thank you so much!" she said.
in-context


Nick Ward
About
|
Portfolio
|
Contact
Portfolio
Hang-man
Roleplaying
Trivia
Widget
Rock Paper Scissors


Load and view a dataset
Upload a dataset to view it (csv/csv2/tab/space). Expects the files to have a header line.
Download it!
Name
Age
Foo
45
Foo
45
Foo
45
Foo
45


About
Chronicle Wire is a a Wire Format abstraction library, The purpose of Chronicle Wire is to address the following concerns in a consistent manner:
-
Application configuration. (Using YAML)
-
Data serialization (YAML, binary YAML, JSON, Raw binary data, CSV)
-
Accessing off-heap memory in a thread-safe manner. (Bind to shared off-heap memory)
-
High performance data exchange using binary formats. Only include as much meta data as you need.
Design
Chronicle Wire uses Chronicle Bytes for bytes manipulation, and Chronicle Core for low level JVM access.
Why are these concerns conflated?
Often you want to use these interchangeably.
-
Configuration includes aliased type information. This supports easy extension by adding new classes/versions, and cross-platform using type aliasing.
-
By supporting types, a configuration file can bootstrap itself. You control how the configuration file is decoded. See
datagrid.yaml
. -
To send the configuration of a server to a client, or from a client to a server.
-
To store the configuration of a data store in its header.
-
In configuration, to be able to create any object or component.
-
Save a configuration after you have changed it.
-
To be able to share data in memory between processes in a thread-safe manner.
Features
Chronicle Wire supports a separation of describing what data you want to store and retrieve, and how it should be rendered/parsed. Chronicle Wire handles a variety of formatting options, for a wide range of formats.
A key aim of Chronicle Wire is to support schema changes. It should make reasonable attempts to handle:
-
optional fields
-
fields in a different order
-
fields that the consumer doesn’t expect; optionally parsing them, or ignoring them
-
more or less data than expected; in field-less formats
-
reading a different type to the one written
-
updating fixed-length fields, automatically where possible using a
bound
data structure.
Chronicle Wire will also be efficient where any, or all, of the following points are true:
-
fields are in the order expected
-
fields are the type expected
-
fields names/numbers are not used
-
self-describing types are not needed
-
random access of data values is supported.
Chronicle Wire is designed to make it easy to convert from one wire format to another. For example, you can use fixed-width binary data in memory for performance, and variable-width or text over the network. Different TCP connections could use different formats.
Chronicle Wire also supports hybrid wire formats. For example, you can have one format embedded in another.
Support
This library will require Java 8. Support for C++
and C#
is planned.
Text Formats
The text formats include:
-
YAML
- subset of mapping structures included -
JSON
- superset to support serialization -
CSV
- superset to support serialization -
XML
- planned -
FIX
- proposed
Options include:
-
field names (for example, JSON), or field numbers (for example, FIX)
-
optional fields with default values that can be dropped
-
zero-copy access to fields - planned
-
thread-safe operations in text - planned
To support wire format discovery, the first byte should be in the ASCII
range; adding an ASCII
whitespace if needed.
Binary Formats
The binary formats include:
-
binary YAML.
-
delta compressing Binary YAML. This is a Chronicle Wire Enterprise feature
-
typed data without fields
-
raw untyped fieldless data
-
BSON (Binary JSON) - planned
Options for Binary format:
-
field names or field numbers
-
variable width
-
optional fields with a default value can be dropped
-
fixed width data with zero copy support
-
thread-safe operations
Note: Chronicle Wire supports debug/transparent combinations like self-describing data with zero copy support.
To support wire format discovery, the first bytes should have the top bit set.
Using Wire
Simple use case.
First you need to have a buffer to write to. This can be a byte[]
, a ByteBuffer
, off-heap memory, or even an address and length that you have obtained from some other library.
// Bytes which wraps a ByteBuffer which is resized as needed.
Bytes<ByteBuffer> bytes = Bytes.elasticByteBuffer();
Now you can choose which format you are using. As the wire formats are themselves unbuffered, you can use them with the same buffer, but in general using one wire format is easier.
Wire wire = new TextWire(bytes);
// or
WireType wireType = WireType.TEXT;
Wire wireB = wireType.apply(bytes);
// or
Bytes<ByteBuffer> bytes2 = Bytes.elasticByteBuffer();
Wire wire2 = new BinaryWire(bytes2);
// or
Bytes<ByteBuffer> bytes3 = Bytes.elasticByteBuffer();
Wire wire3 = new RawWire(bytes3);
So now you can write to the wire with a simple document.
wire.write(() -> "message").text("Hello World")
.write(() -> "number").int64(1234567890L)
.write(() -> "code").asEnum(TimeUnit.SECONDS)
.write(() -> "price").float64(10.50);
System.out.println(bytes);
prints
message: Hello World
number:<PHONE_NUMBER>
code: SECONDS
price: 10.5
// the same code as for text wire
wire2.write(() -> "message").text("Hello World")
.write(() -> "number").int64(1234567890L)
.write(() -> "code").asEnum(TimeUnit.SECONDS)
.write(() -> "price").float64(10.50);
System.out.println(bytes2.toHexString());
prints
00000000 C7 6D 65 73 73 61 67 65 EB 48 65 6C 6C 6F 20 57 ·message ·Hello W 00000010 6F 72 6C 64 C6 6E 75 6D 62 65 72 A3 D2 02 96 49 orld·num ber····I 00000020 C4 63 6F 64 65 E7 53 45 43 4F 4E 44 53 C5 70 72 ·code·SE CONDS·pr 00000030 69 63 65 90 00 00 28 41 ice···(A
Using RawWire
strips away all the meta data to reduce the size of the message, and improve speed.
The down-side is that we cannot easily see what the message contains.
// the same code as for text wire
wire3.write(() -> "message").text("Hello World")
.write(() -> "number").int64(1234567890L)
.write(() -> "code").asEnum(TimeUnit.SECONDS)
.write(() -> "price").float64(10.50);
System.out.println(bytes3.toHexString());
prints in RawWire
.
00000000 0B 48 65 6C 6C 6F 20 57 6F 72 6C 64 D2 02 96 49 ·Hello W orld···I 00000010 00 00 00 00 07 53 45 43 4F 4E 44 53 00 00 00 00 ·····SEC ONDS···· 00000020 00 00 25 40 ··%@
For more examples see Examples Chapter1
A note on Wires.reset()
Chronicle Wire allows (and encourages) objects to be re-used in order to reduce allocation rates.
When a marshallable object is re-used or initialised by the framework, it is first reset by way of Wires.reset()
. In the case of most DTOs with simple scalar values, this will not cause any issues. However, more complicated objects with object instance fields may experience undesired behaviour.
In order to reset
a marshallable object, the process is as follows:
-
create a new instance of the object to be reset
-
copy all fields from the new instance to the existing instance
-
the existing instance is now considered 'reset' back to default values
The object created in step 1
is cached for performance reasons, meaning that both the new and existing instance of the marshallable object could have a reference to the same object.
While this will not be a problem for primitive or immutable values (for example, int
, Long
, String
), a mutable field such as ByteBuffer
will cause problems. Consider the following case:
private static final class BufferContainer {
private ByteBuffer b = ByteBuffer.allocate(16);
}
@Test
public void shouldDemonstrateMutableFieldIssue2() {
// create 2 instances of a marshallable POJO
final BufferContainer c1 = new BufferContainer();
final BufferContainer c2 = new BufferContainer();
// reset both instances - this will set each container's
// b field to a 'default' value
Wires.reset(c1);
Wires.reset(c2);
// write to the buffer in c1
c1.b.putInt(42);
// inspect the buffer in both c1 and c2
System.out.println(c1.b.position());
System.out.println(c2.b.position());
System.out.println(c1.b == c2.b);
}
The output of the test above is:
4 4 true
showing that the field b of each container object is now referencing the same ByteBuffer
instance.
In order to work around this, if necessary, the marshallable class
should implement ResetOverride
:
private static final class BufferContainer implements ResetOverride {
private ByteBuffer b = ByteBuffer.allocate(16);
@Override
public void onReset() {
// or acquire from a pool if allocation should
// be kept to a minimum
b = ByteBuffer.allocate(16);
}
}
Binding to a field value
While serialized data can be updated by replacing a whole record, this might not be the most efficient option, nor thread-safe.
Chronicle Wire offers the ability to bind a reference to a fixed value of a field, and perform atomic operations on that field; for example, volatile read/write, and compare-and-swap.
// field to cache the location and object used to reference a field.
private LongValue counter = null;
// find the field and bind an approritae wrapper for the wire format.
wire.read(COUNTER).int64(counter, x -> counter = x);
// thread safe across processes on the same machine.
long id = counter.getAndAdd(1);
Other types are supported; for example, 32-bit integer values, and an array of 64-bit integer values.
Compression Options
-
No compression
-
Snappy compression - planned
-
LZW compression - planned
Bytes options
Chronicle Wire is built on top of the Bytes
library, however Bytes
, in turn, can wrap:
-
ByteBuffer
- heap and direct -
byte\[\]
- usingByteBuffer
-
raw memory addresses.
Handling instance classes of an unknown type
This feature allows Chronicle Wire to de-serialize, manipulate, and serialize an instance class of an unknown type.
If the type is unknown at runtime, a proxy is created; assuming that the required type is an interface.
When the tuple is serialized, it will be give the same type as when it was deserialized, even if that class is not available.
Methods following our getter
/setter
convention will be treated as getters
and setters
.
This feature is needed for a service that stores and passes on data, for classes it might not have in its class path.
|
Note
|
This is not garbage collection free, but if the volume is low, this may be easier to work with. |
|
Note
|
This only works when the expected type is not a class. |
Example
@Test
public void unknownType() throws NoSuchFieldException {
Marshallable marshallable = Wires.tupleFor(Marshallable.class, "UnknownType");
marshallable.setField("one", 1);
marshallable.setField("two", 2.2);
marshallable.setField("three", "three");
String toString = marshallable.toString();
assertEquals("!UnknownType {\n" +
" one: !int 1,\n" +
" two: 2.2,\n" +
" three: three\n" +
"}\n", toString);
Object o = Marshallable.fromString(toString);
assertEquals(toString, o.toString());
}
@Test
public void unknownType2() {
String text = "!FourValues {\n" +
" string: Hello,\n" +
" num: 123,\n" +
" big: 1e6,\n" +
" also: extra\n" +
"}\n";
ThreeValues tv = Marshallable.fromString(ThreeValues.class, text);
assertEquals(text, tv.toString());
assertEquals("Hello", tv.string());
tv.string("Hello World");
assertEquals("Hello World", tv.string());
assertEquals(123, tv.num());
tv.num(1234);
assertEquals(1234, tv.num());
assertEquals(1e6, tv.big(), 0.0);
tv.big(0.128);
assertEquals(0.128, tv.big(), 0.0);
assertEquals("!FourValues {\n" +
" string: Hello World,\n" +
" num: !int 1234,\n" +
" big: 0.128,\n" +
" also: extra\n" +
"}\n", tv.toString());
}
interface ThreeValues {
ThreeValues string(String s);
String string();
ThreeValues num(int n);
int num();
ThreeValues big(double d);
double big();
}
Example with MethodReaders
@Test
public void testUnknownClass() {
Wire wire2 = new TextWire(Bytes.elasticHeapByteBuffer(256));
MRTListener writer2 = wire2.methodWriter(MRTListener.class);
String text = "top: !UnknownClass {\n" +
" one: 1,\n" +
" two: 2.2,\n" +
" three: words\n" +
"}\n" +
"---\n" +
"top: {\n" +
" one: 11,\n" +
" two: 22.2,\n" +
" three: many words\n" +
"}\n" +
"---\n";
Wire wire = TextWire.from(text);
MethodReader reader = wire.methodReader(writer2);
assertTrue(reader.readOne());
assertTrue(reader.readOne());
assertFalse(reader.readOne());
assertEquals(text, wire2.toString());
}
Filtering with MethodReaders
To support filtering, you need to make sure the first of multiple arguments can be used to filter the method call. If you have only one argument, you may need to add an additional argument to support efficient filtering.
This feature calls an implementation of MethodFilterOnFirstArg
to see if the rest of the method call should be parsed. For example, today you have:
interface MyInterface {
void method(ExpensiveDto dto);
}
This can be migrated to:
interface MyInterface extends MethodFilterOnFirstArg<String> {
@Deprecated
void method(ExpensiveDto dto);
void method2(String filter, ExpensiveDto dto);
}
where the implementation can look like this:
class MyInterfaceImpl extends MyInterface {
public void method(ExpensiveDto dto) {
// something
}
public void method2(String filter, ExpensiveDto dto) {
method(dto);
}
public boolean ignoreMethodBasedOnFirstArg(String methodName, String filter) {
return someConditionOn(methodName, filter);
}
}
For an example, see net.openhft.chronicle.wire.method.MethodFilterOnFirstArgTest
Uses of Chronicle Wire
Chronicle Wire can be used for:
-
file headers
-
TCP connection headers; where the optimal wire format taht is actually used can be negotiated
-
message/excerpt contents
-
Chronicle Queue version 4.x and later
-
the API for marshalling generated data types.
Similar projects
Simple Binary Encoding (SBE)
Simple Binary Encoding (SBE) is designed to be a more efficient replacement for FIX. It is not limited to FIX protocols, and can be easily extended by updating an XML schema. It is simple, binary, and it supports C++ and Java.
XML, when it first started, did not use XML for its own schema files, and it is not insignificant that SBE does not use SBE for its schema either. This is because it is not trying to be human readable. It has XML which, though standard, is not designed to be human readable either. Chronicle believes that it is a limitation that it does not naturally lend itself to a human readable form.
The encoding that SBE uses is similar to binary; with field numbers and fixed-width types.
SBE assumes the field types, which can be more compact than Chronicle Wire’s most similar option; though not as compact as others.
SBE has support for schema changes provided that the type of a field doesn’t change.
Message Pack (msgpack
)
Message Pack is a packed binary wire format which also supports JSON
for human readability and compatibility. It has many similarities to the binary (and JSON
) formats of this library. Chronicle Wire is designed to be human readable first, based on YAML
, and has a range of options to make it more efficient. The most extreme being fixed position binary.
Message Pack has support for embedded binary, whereas Chronicle Wire has support for comments and hints, to improve rendering for human consumption.
The documentation looks well thought out, and it is worth emulating.
Comparison with Cap’n’Proto
Feature |
Wire Text |
Wire Binary |
Protobuf |
Cap’n Proto |
SBE |
FlatBuffers |
Schema evolution |
yes |
yes |
yes |
yes |
caveats |
yes |
Zero-copy |
yes |
yes |
no |
yes |
yes |
yes |
Random-access reads |
yes |
yes |
no |
yes |
no |
yes |
Random-access writes |
yes |
yes |
no |
? |
no |
? |
Safe against malicious input |
yes |
yes |
yes |
yes |
yes |
opt-in / upfront |
Reflection / generic algorithms |
yes |
yes |
yes |
yes |
yes |
yes |
Initialization order |
any |
any |
any |
any |
preorder |
bottom-up |
Unknown field retention |
yes |
yes |
yes |
yes |
no |
no |
Object-capability RPC system |
yes |
yes |
no |
yes |
no |
no |
Schema language |
no |
no |
custom |
custom |
XML |
custom |
Usable as mutable state |
yes |
yes |
yes |
no |
no |
no |
Padding takes space on wire? |
optional |
optional |
no |
optional |
yes |
yes |
Unset fields take space on wire? |
optional |
optional |
no |
yes |
yes |
no |
Pointers take space on wire? |
no |
no |
no |
yes |
no |
yes |
C++ |
planned |
planned |
yes |
yes (C++11)* |
yes |
yes |
Java |
Java 8 |
Java 8 |
yes |
yes* |
yes |
yes |
C# |
yes |
yes |
yes |
yes* |
yes |
yes* |
Go |
no |
no |
yes |
yes |
no |
yes* |
Other languages |
no |
no |
6+ |
others* |
no |
no |
Authors' preferred use case |
distributed computing |
financial / trading |
distributed computing |
platforms / sandboxing |
financial / trading |
games |
|
Note
|
The Binary YAML format can be automatically converted to YAML without any knowledge of the schema, because the messages are self-describing.
|
|
Note
|
You can parse all the expected fields (if any) and then parse any remaining fields. As YAML supports object field names (or keys), these could be strings or even objects as keys and values.
|
|
Note
|
It not clear what padding which does not take up space on the wire means. |
Design notes.
See https://capnproto.org/news/2014-06-17-capnproto-flatbuffers-sbe.html for a comparison to other encoders.
Schema evolution.
Wire optionally supports:
-
field name changes
-
field order changes
-
capturing or ignoring unexpected fields
-
setting of fields to the default, if not available
-
raw messages can be longer or shorter than expected
The more flexibility, the larger the overhead in terms of CPU and memory. Chronicle Wire allows you to dynamically pick the optimal configuration, and convert between these options.
Zero copy.
Chronicle Wire supports zero-copy random access to fields, and direct-copy from in-memory to the network. It also supports translation from one wire format to another. For example, switching between fixed-length data and variable-length data.
Random Access.
You can access a random field in memory, For example, in a 2TB
file, page-in/pull-into CPU cache, only the data relating to your read or write.
| format | access style |
|---|---|
fixed-length binary |
random access without parsing first |
variable-length binary |
random access with partial parsing allowing you to skip large portions |
fixed-length text |
random access with parsing |
variable-length text |
no random access |
Chronicle Wire references are relative to the start of the data contained, to allow loading in an arbitrary point in memory.
Safe against malicious input.
Chronicle Wire has built in tiers of bounds checks to prevent accidental read/writing that corrupts the data. It is not complete enough for a security review.
Reflection / generic algorithms.
Chronicle Wire supports generic reading and writing of an arbitrary stream. This can be used in combination with predetermined fields.
For example, you can read the fields you know about, and ask it to provide the fields that you do not.
You can also give generic field names like keys to a map as YAML
does.
Initialization order.
Chronicle Wire can handle unknown information like lengths, by using padding. It will go back and fill in any data that it was not aware of when it was writing the data. For example, when it writes an object, it does not know how long it is going to be, so it adds padding at the start. Once the object has been written, it goes back and overwrites the length. It can also handle situations where the length was more than needed; this is known as packing.
Unknown field retention?
Chronicle Wire can read data that it did not expect, interspersed with data it did expect. Rather than specify the expected field name, a StringBuilder
is provided.
Note: There are times when you want to skip/copy an entire field or message, without reading any more of it. This is also supported.
Object-maximumLimit RPC system.
Chronicle Wire supports references based on name, number, or UUID. This is useful when including a reference to an object that the reader should look up by other means.
A common case is if you have a proxy to a remote object, and you want to pass or return this in an RPC call.
Schema language
Chronicle Wire’s schema is not externalised from the code. However it is planned to use YAML
in a format that it can parse.
Usable as mutable state
Chronicle Wire supports storing an application’s internal state. This will not allow it to grow or shrink. You can’t free any of it without copying the pieces that you need, and discarding the original copy.
Padding takes space on the wire.
The Chronicle Wire format that is chosen determines if there is any padding on the wire. If you copy the in-memory data directly, its format does not change.
If you want to drop padding, you can copy the message to a wire format without padding. You can decide whether the original padding is to be preserved or not, if turned back into a format with padding.
We could look at supporting Cap’n’Proto's zero-byte removal compression.
Un-set fields take space on the wire?
Chronicle Wire supports fields with, and without, optional fields, and automatic means of removing them. Chronicle Wire does not support automatically adding them back in, because information has been lost.
Pointers take space on the wire.
Chronicle Wire does not have pointers, but it does have content-lengths which are a useful hint for random access and robustness; but these are optional.
Working with intellij
These templates can be added to IntelliJ to create simple getters and setters.
$field.type ##
${field.name}() {
return $field.name;
}
#set($paramName = $helper.getParamName($field, $project))
$class.name ${field.name}($field.type $paramName) {
this.$field.name = $paramName;
return this;
}
Self describing messages
When writing and reading from text, Marshallable are always self describing, however when using Binary there is two choices,
SelfDescribingMarshallable
with is self decribing in binary and BytesInBinaryMarshallable
which uses raw values.
SelfDescribingMarshallable
is slightly slower, and larger when writing but supports schema changes such as
-
Adding fields.
-
Removing fields
-
Changing the order of fields
-
Change the type of fields
-
Dumbing as text without access to the class specification.
BytesInBinaryMarshallable
is slower and more compact, however you need to add your own support for schema changes.
See the Code Generating section below.
Code Generation for Marshallable
Install the Code Generation plugin, and add a template in File
→ Settings
→ Code Generation
as follows.
Use the Add Member Dialog
button and Exclude transient fields
This will add more efficient code for Marshallable format.
#set($javaPsiFacade = $JavaPsiFacade.getInstance($project))
#set($global = $GlobalSearchScope.allScope($project))
@Override public void writeMarshallable(net.openhft.chronicle.wire.WireOut out) {
#if($class0.superName != "SelfDescribingMarshallable")
super.writeMarshallable(out);
#end
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
out.write("$member.name").write${StringUtil.capitalizeWithJavaBeanConvention($memberType)}($member.name);
#else
out.write("$member.name").object(${memberType}.class, $member.name);
#end
#end
}
@Override public void readMarshallable(net.openhft.chronicle.wire.WireIn in) {
#if($class0.superName != "SelfDescribingMarshallable")
super.readMarshallable(in);
#end
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
$member.name = in.read("$member.name").read${StringUtil.capitalizeWithJavaBeanConvention($memberType)}();
#else
$member.name = in.read("$member.name").object($member.name, ${memberType}.class);
#end
#end
}
#set($javaPsiFacade = $JavaPsiFacade.getInstance($project))
#set($global = $GlobalSearchScope.allScope($project))
private static final int MASHALLABLE_VERSION = 1;
@Override public void writeMarshallable(net.openhft.chronicle.bytes.BytesOut out) {
#if($class0.superName != "BytesInBinaryMarshallable")
super.writeMarshallable(out);
#end
out.writeStopBit(MASHALLABLE_VERSION);
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
out.write${StringUtil.capitalizeWithJavaBeanConvention($memberType)}($member.name);
#else
out.writeObject(${memberType}.class, $member.name);
#end
#end
}
@Override public void readMarshallable(net.openhft.chronicle.bytes.BytesIn in) {
#if($class0.superName != "BytesInBinaryMarshallable")
super.readMarshallable(in);
#end
int version = (int) in.readStopBit();
if (version == MASHALLABLE_VERSION) {
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
$member.name = in.read${StringUtil.capitalizeWithJavaBeanConvention($memberType)}();
#else
$member.name = (${memberType})in.readObject(${memberType}.class);
#end
#end
} else {
throw new IllegalStateException("Unknown version " + version);
}
}
#set($javaPsiFacade = $JavaPsiFacade.getInstance($project))
#set($global = $GlobalSearchScope.allScope($project))
private static final int MASHALLABLE_VERSION = 1;
@Override public void writeMarshallable(net.openhft.chronicle.bytes.BytesOut out) {
#if($class0.hasSuper)
super.writeMarshallable(out); // (1)
#end
out.writeStopBit(MASHALLABLE_VERSION);
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
out.write${StringUtil.capitalizeWithJavaBeanConvention($memberType)}($member.name);
#else
out.writeObject(${memberType}.class, $member.name);
#end
#end
}
@Override public void readMarshallable(net.openhft.chronicle.bytes.BytesIn in) {
#if($class0.hasSuper)
super.readMarshallable(in);
#end
int version = (int) in.readStopBit();
if (version == MASHALLABLE_VERSION) {
#foreach( $member in $members )
#set($memberType = $member.type.split("<").get(0))
#set($type = $javaPsiFacade.findClass($memberType, $global))
#if ($member.primitive)
$member.name = in.read${StringUtil.capitalizeWithJavaBeanConvention($memberType)}();
#else
$member.name = (${memberType})in.readObject(${memberType}.class);
#end
#end
} else {
throw new IllegalStateException("Unknown version " + version);
}
}
-
You will have to remove this line if the class extends
AbstractBytesMarshallable
Platform support
Chronicle Wire supports Java 8
, Java 11
and C++
.
Future versions may support Java 14
, python
.


Post a new Job here. title description company salary job type {% for job_type in job_type_display_list %} {{ job_type.1 }} {% endfor %} location contact name contact email contact phone industry


Go to the source code of this file.
|
| #define | test_socket(f, p) test_socket_impl (__FILE__, __LINE__, (f), (p)) |
| |
| #define | test_connect(s, a) test_connect_impl (__FILE__, __LINE__, (s), (a)) |
| |
| #define | test_bind(s, a) test_bind_impl (__FILE__, __LINE__, (s), (a)) |
| |
| #define | test_send(s, d) test_send_impl (__FILE__, __LINE__, (s), (d)) |
| |
| #define | test_recv(s, d) test_recv_impl (__FILE__, __LINE__, (s), (d)) |
| |
| #define | test_close(s) test_close_impl (__FILE__, __LINE__, (s)) |
| |
| #define test_bind |
( |
|
s, |
|
|
|
a |
|
) |
| test_bind_impl (__FILE__, __LINE__, (s), (a)) |
| #define test_close |
( |
|
s | ) |
test_close_impl (__FILE__, __LINE__, (s)) |
| #define test_connect |
( |
|
s, |
|
|
|
a |
|
) |
| test_connect_impl (__FILE__, __LINE__, (s), (a)) |
| #define test_recv |
( |
|
s, |
|
|
|
d |
|
) |
| test_recv_impl (__FILE__, __LINE__, (s), (d)) |
| #define test_send |
( |
|
s, |
|
|
|
d |
|
) |
| test_send_impl (__FILE__, __LINE__, (s), (d)) |
| #define test_socket |
( |
|
f, |
|
|
|
p |
|
) |
| test_socket_impl (__FILE__, __LINE__, (f), (p)) |


Rusty Steels
Hi, I'm a dog. Woof!
Some of my favorite places:
The beach
The dog park
The fire hydrant
Make sure to follow me on
instagram


{% extends "main.html" %} {% block msg_subscribe %} You can subscribe to receive ribbon events as an RSS stream, or to the mailing list. {% endblock %} {% block msg_url %} Enter address of the official clan page into input box. {% endblock %} {% block msg_clanmember %} If you are a clan member, you can sign in with Wargaming OpenID, and your clan will be added automatically. {% endblock %} {% block msg_pricing %} Clan-panel is completely free to start. But for those who need more, the "Base" and "Premium" plans delivers more features at a great value. {% endblock %} {% block msg_action %}
There is a demo version of clan-panel, that handles a limited set of clans. You can visit it, and see abilities of this site in action.
{% endblock %}


{% load static %}
" || Mikealson Academy || "
School Management
Logout
{{request.user.first_name}}
Dashboard
Teacher
Student
Attendance
Fee
Notice
{% block content %} {% endblock content %}
{% include "school/footer.html" %}


Trump conduct 'beyond anything Nixon did': House impeachment chair
WASHINGTON: President Donald Trump, by withholding military aid from Ukraine to demand dirt on a potential 2020 election rival, went beyond anything done by disgraced predecessor Richard Nixon, the Democratic chair of the House impeachment panel alleged on Thursday (Nov 21).
"What we've seen here is far more serious than a third-rate burglary of the Democratic headquarters," House Intelligence Committee chairman Adam Schiff said in a reference to the Watergate scandal that led to Nixon's resignation.
"What we're talking about here is the withholding of recognition (for Ukrainian President Volodymyr Zelenksy) in that White House meeting, the withholding of military aid to an ally at war," Schiff said.
"This is beyond anything Nixon did."
Trump is threatened with impeachment by the Democratic-controlled House of Representatives for pushing Zelensky in a Jul 25 phone call to investigate Democrat Joe Biden and his son, Hunter, who served on the board of a Ukrainian gas company.
Nixon resigned in 1974, two years after the burglary of Democratic offices in the Watergate complex in Washington.
Schiff's comments came at the end of five days of public hearings in the impeachment inquiry, which saw several witnesses testify that military aid to Ukraine was made contingent on Trump's demand that Zelensky announce an investigation of the Bidens.
"People look to us from all over the world," Schiff said. "People in Ukraine who want a better future, they look to us.
"They still look to us and increasingly they don't recognize what they see," the Democrat from California said. "That is a terrible tragedy for us but it is a greater tragedy for the rest of the world.
"In my view there is nothing more dangerous than an unethical president who believes they are above the law," Schiff said.


com.cyc.kb
Interfaces
LogicalConnective
Quantifier
ScopingRelation
TypeFact
Classes
KbObjectLibraryLoader


How to add categories on jekyll
1. Create "category.html" in the _layouts folder.
---
layout: default
type: archive
---

{{ page.category }} Archive

{{ content }}

{% if site.categories[page.category] %}

{% for post in site.categories[page.category] %}
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
{% unless year == this_year %}
{% assign year = this_year %}

{{ year }}

{% endunless %}

{{ post.title }}

<time>
{{ post.date | date: "%b" }}
{{ post.date | date: "%d" }}
{{ post.date | date: "%Y" }}
</time>

{% endfor %}

{% else %}

There are no posts in this category.

{% endif %}

2. Create "post-categories.html" in the _inclues folder folder.
<a href="http://<IP_ADDRESS>:4000/webdev/" rel="category">webdev
3. Create a new folder in the root directory called "_pages"
4. Create a new file inside "_pages" dir called e.g "fishing.md"
---
layout: category
title: How to fish
description: How to's for fishing
category: fishing
permalink: /fishing/
---
Fishing category with how to's for fishing
5. Create a new post and include this
category: fishing
category-url: fishing
6. Include this in _config.yml
include: ["_pages"]
7. url in _config.yml needs to be either proper for local dev or published
url: http://<IP_ADDRESS>:4000 or url: username.github.io
Written on June 28, 2016


@doc.main("Introduction") {
Apidoc provides a simple approach to designing REST APIs for the web. The basic concept is to define your API in JSON first - starting with models, resources and operations.
The primary project goals include:
The best way to learn about Apidoc is to browse the examples - you will be able to see the online documentation available and always download the corresponding example api.json files.
}


Matching Game
0 Moves
Timer 00:00
Congratulations! You finished the game in 6 moves!
Rank
Time
00:00
Cancel
Restart
Welcome!
Test your memory to finish this game!
Let's Play!


Our team consists of students coming together and using our diverse expertise to develop our products.
I’m a senior at SF State and I’m looking to graduate by Spring 2021. I was born in the Philippines but throughout most of my life, I have lived in the Bay Area. My favorite types of food are especially Japanese, Korean, and Vietnamese food. In my personal free time, I really like to play online games like World of Warcraft, League of Legends, or Valorant. When I graduate, I would like to pursue entering the CS workforce in any field, however if I were to pick a specific field in the CS industry, I would like to go into gaming as it is one of my favorite pastime hobbies and my favorite activity to do!
learn more...I’m a 4th-year student at Epitech Paris. I live in France in a town close to Paris. I like to go to the restaurant and discover new dishes. My favorite type of food is Arabic/Japanese. When I’m not at the restaurant, I like to play video games, especially league of legends. When I find the time, I like to improve my computer science skills while working on personal projects.
learn more...I’m a Third Year Student at SF State majoring in Computer Science. I like to play instruments including but not limited to piano, electric bass, drums, guitar, and trumpet. If I’m not at school or work, I am learning something new about programming or music.
learn more...I’m a 4th year student at SF state, majoring in Computer Science. I enjoy reading, video games and just watching interesting youtube videos. After graduating, I hope to make my current internship into a full time job.
learn more...I’m a 4th-year student at SF state. I tend to watch a lot of YouTube content. My other pastimes I tend to see myself doing include playing rhythm games, reading translated novels or comics, sometimes doodling. Since the Covid pandemic, I rarely find myself going outside, exploring, and doing hangouts.
learn more...I am a computer science Senior Student 4th-year student at SF state. My main hobbies focus on MMORPG and animations. In the process of my learning programming, the one I came into contact with most was java. So for me, I think my Java ability is the best. In addition to Java, I have also learned C language, so my second best language is C. After I started learning artificial intelligence, python also needed attention. So my mastery of python is about 30%.
learn more...


This is your website on Evezown and captures the essence of your business and personality. You can create your profile in-depth, build community to connect with friends, colleagues, customers, partners, employees or any one you wish to connect with.
Location: {{post.location.locality}} , {{post.location.city}}, {{post.location.state}}
Location: {{post.location.locality}} , {{post.location.city}}, {{post.location.state}}
{{post.description}}
Average: 0 Total:{{post.grades.length}} Average: {{post.avgGrade}} Total: {{post.grades.length}}
No recent activity


Black Mask 2: City of Masks
Black Mask 2: City of Masks is a movie starring Andy On, Tobin Bell, and Jon Polito. The Black Mask must stop a group intent on setting off a DNA bomb that could cause mutations to the human race.


SimulaQron Documentation¶
Welcome to the SimulaQron Beta Release!
SimulaQron is a distributed simulation of the end nodes in a future quantum internet with the specific goal to explore application development. The end nodes in a quantum internet are few qubit processors, which may exchange qubits using a quantum internet. Specifically, SimulaQron allows the installation of a local simulation program on each computer in the network that provides the illusion of having a local quantum processor to potential applications. The local simulation programs on each classical computer connect to each other classically, forming a simulated quantum internet allowing the exchange of simulated qubits between the different network nodes, as well as the creation of simulated entanglement.
SimulaQron is written in Python and uses the Twisted Perspective Broker. To perform the local qubit simulation, SimulaQron uses QuTip but any other quantum simulator with a python interface can easily be used as a local backend. The main challenge of SimulaQron is to allow the simulation of virtual qubits at different network nodes: since these may be entangled they cannot be simulated on one network node, which is solved by a transparent distributed simulation on top of in principle any local simulation engine.
We also have a paper that describe the design of SimulaQron.
The documentation below assumes familiarity with classical network programming concepts, Python, Twisted, as well as an elementary understanding of quantum information. More information on a competition at Our website


Known issues
Warning: Before you report something as a bug please force refresh your browser to download all the latest files. Sometimes browsers cache, which is totally not cool!
Suggestions and/or bug reports? I am active in this thread on the Paizo forums.
Current issues
- When turning the description on a scenario off again it leaves space in some browsers
- Optimize extra small resolution layout (possibly also the small resolution layout)
Changelog
- 2016-12-14: Bugfix: Totals on the profile page should not be correct.
- 2016-12-07: Bugfix: If you un-report a scenario it would not reset it null, ruining some counters. Most notably the profile and statistics. This change will make it work correct again. Note that this could change your rating on the statistics page.
- 2016-11-11: Setting for showing your characters on your profile added.
- 2016-11-11: Stopped using the PFS-logo. We have all seen that enough haven't we? It took up a lot of space.
- 2016-11-11: New profile and reporting pages. You can now link to your profile. Mail from the tracker is sent extremely secure now (DKIM, SPF, etc.).
- 2016-11-11: Theme rework: A lot more icons are added, terms made consistent and layouts look the same.
- 2016-09-28: Bugfix: Statistics are generated once a day again
- 2016-09-23: Bugfix: Fixed a bug that would not show 15 scenarios on a page if content had more then one author
- 2016-09-23: Added filter to search for not filtering out already played content
- 2016-09-22: Bugfix: Character updating should work properly again
- 2016-09-07: Added a seperate category for 'quests' while reporting
- 2016-09-07: Removed the 'Back to overview' option while reporting
- 2016-09-07: Bugfix: Public reporting should work properly again
- 2016-08-26: Toggle icons were turned around, it felt counter intuitive with triangle up to open and down to close
- 2016-08-05: Turned off player progress view because it wasn't working while a rework is implemented
- 2016-06-17: You can now be logged in on multiple browsers/devices at once
- Massive rewrite for the backend, fully replaced the PHP backend with a NodeJS backend
- 2016-05-13: Added season 8 support
- 2016-04-08: Bugfix: Changed the grammar of several tooltips on the 'search' page
- 2016-04-01: [Insert random april fools joke]
- 2016-04-01: The report page now automatically select you if you are logged in and handles the 'Select yourself' button more intelligently
- 2016-04-01: Bugfix: Fixed changelog error suggesting bugs were fixed in januari 2015, while this was instead 2016
- 2016-01-29: Bugfix: The server did not handle filtering on players who have not played anything yet properly. Now it does
- 2016-01-15: You can now save your experience progression on characters
- 2016-01-15: Bugfix: Author search works again
- 2016-01-15: Added a 'Reset filters' button on the search page
- 2016-01-15: All filters, excluding search bars, now get saved on the device you use to check the tracker. Consider it a test, might change it later
- Played info now automatically hides on the search page, use the toggle to show it again
- Added flags to players on the statistics page.
- Fixed a bug related to security.
- Added overall statistics to the statistics page.
- Added authors to all content
- Updated the help pages to reflect the new features
- More matching data on what players and GMs have played is now available in the search screen
- Major changes to how available scenarios are calculated have led to faster searching times
- Actually always include evergreens even if players have already played them, maybe with option to turn it off and exclude them anyway
- Fixed a bug with the register button on the register page
- Added batch options for check- unchecking of an entire season on the report pages
- Serious optimizations of the 'report' page for phone resolutions, not quite done
- Reduced the footprint of the entire tracker by about 400KB
- Fixed a bug where UTF-8 characters were not displaying search results correctly
- You can now manage by selecting 'my characters' from the user menu when logged in
- Added store links to all content
- Several backend improvements for adding content options
- Added country option to profile and use of flag icons in several places
- Added autoscrolling to top when changing pages
- Bugfix: Add hand cursor to checkboxes when hovering
- Implemented accounts
- Tweaked the menu for smaller resolution devices
- Implemented statistics
- Completed the help texts/modals
- Implement fancier tooltips, touchdevice friendly
- Add quests neatly to report categories -> They are now listed under the season they are a part of
- Bugfix: In the pagination if there is a page with 1 scenario it is frequently left out
- Added a 'other' filter for specials. By default they are not included in searches, but you can toggle it on
- Now excluding retired scenarios from player progress
- Added 'retired' to retired scenarios at the report page
- Added a filter for quests and introduced a icon for them
- Removed subtiers from everywhere. Due to the paizo store link it is one click away and the subtiers are predictable anyway
- Added a 'about' page with the community use disclaimer
- More styling for smaller devices done
- Added level range select rework
- Bugfix: Fixed a sorting bug where numbers would sort like: 0,1,11,12,13 instead of 1,2,3,4,5
- Bugfix: Untrack a player on search screen oughta be the entire button not just the X
- Added grand total to player progress pages
- Changed the definition of a evergreen, removed 'The Emerald Spire: #2 The Cellars' and 'The Dragon's Demand (Part 1)' as evergreens
- Removed the exclusive scenarios that are no longer exclusive. They can only be played once, players who played the exclusive can register it with the normal scenario a season later
- Added sorting options
- Quality of life: When you hit enter to select a suggestion in the 'player select'(report page) or 'player search'(search page) bars it will automatically select/add the currently selected player
- Added suggestions for authors filter
- Added support for adventure paths and modules
- Added support for links to the paizo store
- Added The Emerald Spire
- Bugfix: Make language usage more consistent
- Bugfix: On report: If you go back to overview after reporting a scenario in a category it does not auto update
- Added search by author
- Added known issues page


Please Donate To Bitcoin Address: [[address]]
Copyright © 2016 Bence Peteri | Published under MIT License


This is a turned based game. At the begining of your turn you can attack the ennemy (by clicking on it's case) or move (1 case = 1 movement point).
To attack an ennemy you have to be in one of the adjacent ennemy's case
At the begining of each turn you gain 1 attack point and 2 movement points.


{% extends theme("_base.html") %} {% set current = 'download' %} {% block title %}Download -- {{ super() }}{% endblock %} {% set download_version = version %} {% set download = 'https://pypi.python.org/packages/source/F/Folio/Folio-' ~ download_version ~ '.tar.gz' %} {% block body %}
Lastest release is {{ download_version }}, download it from here or visit the PyPi page for a list of downloads.
Full list of changes can be found in the documentation.
Using pip
is the easiest way to install, it will do the work of
getting the dependencies and setting everything up, simply run:


Ford
blue
11.9.3.b put submission method to local file (non-normative)
When you activate the Use Put Method submit control the value "blue" will be submitted to a local file called "myfile.txt".
Use Put Method


trend: Non-Parametric Trend Tests and Change-Point Detection
The analysis of environmental data often requires
the detection of trends and change-points.
This package includes tests for trend detection
(Cox-Stuart Trend Test, Mann-Kendall Trend Test,
(correlated) Hirsch-Slack Test,
partial Mann-Kendall Trend Test, multivariate (multisite)
Mann-Kendall Trend Test, (Seasonal) Sen's slope,
partial Pearson and Spearman correlation trend test),
change-point detection (Lanzante's test procedures,
Pettitt's test, Buishand Range Test,
Buishand U Test, Standard Normal Homogeinity Test),
detection of non-randomness (Wallis-Moore Phase Frequency Test,
Bartels rank von Neumann's ratio test, Wald-Wolfowitz Test)
and the two sample Robust Rank-Order Distributional Test.
| Version: |
1.1.1 |
| Depends: |
R (≥ 3.0) |
| Imports: |
extraDistr (≥ 1.8.0) |
| Published: |
2018-07-30 |
| Author: |
Thorsten Pohlert |
| Maintainer: |
Thorsten Pohlert <thorsten.pohlert at gmx.de> |
| License: |
GPL-3 |
| NeedsCompilation: |
yes |
| Materials: |
NEWS |
| In views: |
TimeSeries |
| CRAN checks: |
trend results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=trend
to link to this page.


Install 2.5 Developer Preview (b2gDroid) on your Android Device
January 9, 2016
Firefox OS is one of Mozilla’s revolutionary project that still is on developing process. Many developers, QA Engineers are still working to bring more satisfactory features and facilities toward open-source lover. But unfortunately, MOST of the developers don’t have the Firefox OS device to participate on developing. So in order to do so, the community has figure out another way to make available to contribute on this open-source project.
“Firefox OS 2.5 Developer Preview” is an experimental app that lets you use Firefox OS on your android phone. Here, I’m going to share A-Z procedure of how to install Developer Preview on your Android phone.
Note: Since I’m using ‘Huawei y5c’ device, some steps may be vary on other Android Device. So, It would be best to figure out those steps by yourself.
Step-1:
First, download ‘Firefox OS 2.5 Developer Preview’ apk file.
Step-2:
After downloading, take the apk file to phone.  It’ll take time to install.
Step-3:
When the whole installation process is done, press ‘Done’ and exit from file manager.
Step-4:
Now here comes the tricky one! How to activate fxOS dev Preview?
- Go to ‘Settings’.
- Then go to ‘Home Screen Style’.
- Select the other theme and press ‘Apply’.
You’ll face an option to select a home app. click ‘Firefox OS developer preview’ and press ‘Just Once’.
And then, your Firefox OS 2.5 environment is ready on your Android Device. No need to buy or collect Firefox OS mobile device.
How to switch back to your original home screen?
 There’ll be two settings(one is Firefox OS’s and other is Android’s), click on Android’s settings.
Then again follow Step-4.
That’s it!! a very simple procedure about installing and preparing your Android Device into Firefox OS. With this, you can now explore, test some features, find bugs, file bugs on bugzilla and contribute with global community.
Happy Contributing..


Maintenance Submission Page
Transaction Date:
Account Holder Name:
Account Number:
Amount:
Transaction ID:
Transaction Comments:
Submit


<?php /** * Core language strings. * * @package CodeIgniter * @author CodeIgniter Dev Team * @copyright 2014-2019 British Columbia Institute of Technology (https://bcit.ca/) * @license https://opensource.org/licenses/MIT MIT License * @link https://codeigniter.com * @since Version 3.0.0 * @filesource * * @codeCoverageIgnore */ return [ 'invalidFile' => 'Invalid file: {0}', 'copyError' => 'An error was encountered while attempting to replace the file. Please make sure your file directory is writable.', 'missingExtension' => '{0} extension is not loaded.', 'noHandlers' => '{0} must provide at least one Handler.', ];


The 16 of you discovered yourselves in a school, locked and barred from the outside. During your search for an exit, an announcement comes over the PA system, telling you to gather in the gym. When you arrive, a bear appears... calling himself Monokuma. He declares that everyone will now be living inside the school, hidden from the outside, forever. There is one ticket to the outside, though: murdering another student. Instantly, you all look at each other.
And so the Killing Game begins...
Continue...


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 4
James Martin’s tasty Chinese-style recipes are great party food or as a starter.
For the teriyaki prawns, heat a frying pan until hot, add the teriyaki sauce and cook until reduced by half then stir in the prawns and continue to cook for 1-2 minutes, or until the prawns are cooked through.
For the prawn dim sum, blend the prawns and pork in a small food processor to a purée.
Transfer the mixture to a bowl, add the remaining ingredients, except the wrappers, and mix until well combined.
To assemble the dim sum, place a small spoonful of prawn mixture into the middle of a gyoza, then fold in half and seal the edges with wet fingers. Crimp to form a wavy edge.
Steam the dim sum for 4-5 minutes, or until cooked through.
For the prawn toasts, heat 2.5cm/1in vegetable oil in a deep, heavy-bottomed saucepan until a small cube of bread sizzles and turns golden when dropped into it. (CAUTION: hot oil can be dangerous. Do not leave unattended.)
Preheat the grill to high.
Toast the slices of bread on one side and set aside.
Blend the prawns and egg white in a food processor to a fine purée.
Spread the mixture over the untoasted side of the bread, then scatter over the sesame seeds and press down lightly.
Place the bread, prawn-side down, into the oil and cook for 1-2 minutes then flip over and cook for a further minute. Remove from the pan and set aside to drain on kitchen paper.
Heat the rice vinegar, sugar, salt and chilli in a saucepan until the sugar dissolves.
Spoon the teriyaki prawns, dim sum and prawn toasts onto separate serving plates and serve the dip alongside.


--- layout: default title: Water Management description: "Landscape irrigation accounts for more than 7 billion gallons of potable water daily nationwide. Contrasted against today’s growing population, our sources of water remain the same as they did hundreds of years ago." parent: Responsibility sidebar: Landscape Water Conservation Experts class: landscape banner: drop_flowers.jpg banner-heading: "" banner-cta: "" relevant_links: - link: '/water/2014/06/10/stormwater-management.html' title: 'Stormwater Management' - link: '/certification/2014/05/02/water-management-1.html' title: 'Commercial Landscape: Five Steps to Maximize Water Efficiency' - link: '/certification/2014/06/10/water-management-2.html' title: 'Design your Water Management Plan: It’s Time!' ---
We believe industry leaders must walk the talk and practice water conservation and protection every day. As a company, we have committed to this since 1985. Our approach incorporates the latest water conservation technologies and established industry guidelines to identify problem areas within a customer’s irrigation and landscape systems in addition to erosion, storm water runoff and aquatic management. We recommend system efficiency and improvements to reduce water usage and protect our streams and lakes from contaminates
Water Management Planning - We can help you create a water management plan, installations and maintenance to provide a strategy for conserving precious water and reducing costs. TCA’s customers have saved thousands of dollars through a commitment and partnership to manage water usage and implement best practices in water management.
Technology and Certified - Our trained and certified irrigation technicians will evaluate your irrigation system, recommend and install changes to maximize system efficiency and reduce landscape water use. Changes can range from installing a “smart controller”, converting overhead spray heads to drip and changing out other sprinkler equipment can save 30% or more of your water use in an average year.
Start your landscape water management plan today!


Eel is a little Python library for making simple Electron-like offline HTML/JS GUI apps, with full access to Python capabilities and libraries.
Hello World
As a hello world example, I decided to create an offline version of write-math.com. Write-math in eel is on GitHub.
The directory structure of the minimal example is simple:
.
├── main.py
├── Makefile
├── README.md
├── requirements.in
├── requirements.txt
└── web
└── canvas.html
Standard Stuff
The README.md
contains some general information and the Makefile
some
commands which are useful when developing this package.
The requirements.in
contains the abstract requirements, the
requirements.txt
contains the requirements pinned with pip-compile
. You
can install them via pip install -r requirements.txt
.
main.py
There are three interesting parts to notice:
@eel.expose
: Make a Python function available to JavaScripteel.init("web")
:web
is the web directoryeel.start("canvas.html", jinja_templates="templates")
: Start the GUI with thecanvas.html
found in the web directory
Simple, isn't it?
#!/usr/bin/env python
"""Start a GUI to classify symbols."""
# Core Library modules
import json
import logging
# Third party modules
import eel
import hwrt
from hwrt import classify
logger = logging.getLogger(__name__)
def get_json_result(results, n=10):
"""Return the top `n` results as a JSON list.
>>> results = [{'probability': 0.65,
... 'whatever': 'bar'},
... {'probability': 0.21,
... 'whatever': 'bar'},
... {'probability': 0.05,
... 'whatever': 'bar'},]
>>> get_json_result(results, n=10)
[{'\\alpha': 0.65}, {'\\propto': 0.25}, {'\\varpropto': 0.0512}]
"""
s = []
last = -1
for res in results[: min(len(results), n)]:
if res["probability"] < last * 0.5 and res["probability"] < 0.05:
break
if res["probability"] < 0.01:
break
s.append(res)
last = res["probability"]
return json.dumps(s)
@eel.expose
def worker(strokelist):
"""Classify the drawn symbol."""
results = classify.classify_segmented_recording(json.dumps(strokelist))
return get_json_result(results, n=10)
if __name__ == "__main__":
eel.init("web")
eel.start("canvas.html", jinja_templates="templates")
canvas.html
That one is a bit to long to paste here completely; mainly due to logic of write-math. The eel parts are simple.
Include eel.js
. Please note that you don't have to put the file anywhere in
your project.
<script type="text/javascript" src="/eel.js"></script>
Use the Python function. Note that lines
is a global variable I have declared
before. showResults
is one of my JavaScript functions. The eel.worker
refers to the Python function:
async function run() {
let results = await eel.worker(lines)();
showResults(results);
}
The results
is a string, so I needed to apply JSON.parse
.
Shipping
Probably the most important part. I was not able to create something shippable directly following the tutorial, so I added an issue. Might be a problem on my side, though.
You can still create a Python package and then convert it to a Debian/Ubuntu package. That should be easy. I have no idea how/if that works for Windows / Mac.
Verdict
Eel is a nice package to quickly create GUI prototypes with Python. All the GUI parts are standard web stuff (HTML, CSS, JavaScript) and hence it is super easy.
Shipping might be a deal breaker if you want to create applications for non-developers.


Climb.js
...it goes up.
Download Climb.js View RepositoryWhat does it actually do?
Using jQuery, Climb.js adds an animated, fixed position, scroll to top button to the document that will return a user to the top of the current page when clicked.
How do I make it work?
Add a button element with #climb
to your existing HTML and include the JavaScript file after jQuery at the bottom of your document.
To call the Climb.js function use climb_init();
and then add your custom styles.
<button id="climb"></button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js">
<script src="scripts/climb.min.js">
<script>
climb_init('white', '#3F51B5', 'right', 0, 100, 800, 500);
</script>
</body>
</html>
Options
- Color of the icon
- Background color of button
- Side of the window to display the button
- X-coordinate
- Y-coordinate
- Window height at which to display the button
- How long it takes to return to the top of the page
Why?
The button Climb.js creates helps users to quickly return to the top of the current page. This is especially useful for really long, one-page websites.
Where can I get it?
Climb.js is available under the MIT license on GitHub. Below is a download link and a link to view the repository.
Download Climb.js View Repository


|
Task 2:
Set optimization goals for the building
As the operator of the building, you have your own concern about energy use in your building. Therefore you want to set up some optimization goals for your
building. The energy management system of your building will balance these goals and define the best
trade-off between competing goals.
Let's say, you want to minimize your energy costs, energy consumption and CO2 emissions, and you also want to consume as
much electricity generated by your photovoltaic on your rooftop as possible. You have different preferences for these goals, so you set different weights to them to
indicate the relative importance. Suppose
o the weight of the goal of the minimal costs is 0.4
o the weight of the goal of the minimal energy consumption is 0.3
o the weight of the goal of the maximal self-consumption of photovoltaic generation is 0.2
o the weight of the goal of the minimal CO2 emissions is 0.1
Please specify these optimization goals for your building
P.S.: You have {{vm.timeLimit}} seconds for this task.
|
Time left for this task:
|
|
|
|
||
|
|


Please fill out the form below so that we may save your results and match you with other users.
There are no right or wrong answers to this test. So choose the response that best matches your behavior.
Your Personality Type:INTJ!
You have been matched with:
Type:
Description about user type and match's personality.


Reliable and Satisfying your Need
Great ongoing works as per current and future market demand
World class Standards always maintained
This example adds a dropdown menu in the navbar.


AOP-based solution for declarative transaction demarcation. Builds on the AOP infrastructure in com.interface21.aop.framework.


Are you sure you want to approve this form? Note: You can't undo this action.
Are you sure you want to disapprove this form? Note: You can't undo this action!
Comments


Displaying Data - List Groups
Add
.list-group-flush
to the list group to have borders removed
List of Holidays
Republic Day
Thursday January 26, 2017
Mahashivratri
Friday February 24, 2017
Holi
Monday March 13, 2017


LogIn
Sign Up
Enter your personal details to create an account.
By blah blah blah.
Create an Account


Home
About
Skills
Projects
Contacts
Skills
Languages
C++
C
JAVA
Frontend
HTML
CSS
JAVASCRIPT
Dev Tools
GIT