Class that manages the store products.
More...
#include <product_manager.h>
|
|
| ProductManager () |
| | Creates a new ProductManager object.
|
| |
|
| ~ProductManager () |
| | Destructs the ProductManager object.
|
| |
| bool | has (Product *product) const |
| | Checks if the product is on the products list of the product manager. More...
|
| |
| Product * | get (unsigned long position) |
| | Gets the product on the products list of the product manager at a certain position. More...
|
| |
| Product * | get (const std::string &name, float price) |
| | Gets the product on the products list with a certain name and price. More...
|
| |
| std::vector< Cake * > | getCakes () const |
| | Gets all the cakes on the products list. More...
|
| |
| std::vector< Bread * > | getBreads () const |
| | Gets all the breads on the products list. More...
|
| |
| std::vector< Product * > | getAll () const |
| | Gets all the products on the products list. More...
|
| |
| std::vector< Product * > | getUsed () const |
| | Get the products that were ever included in orders. More...
|
| |
| std::vector< Product * > | getUnused () const |
| | Get the products that were never included in orders. More...
|
| |
| Bread * | addBread (std::string name, float price, bool small=true) |
| | Adds a bread to the product list. More...
|
| |
| Cake * | addCake (std::string name, float price, CakeCategory category=CakeCategory::GENERAL) |
| | Adds a cake to the products list. More...
|
| |
| Product * | add (Product *product) |
| | Add a new product to the products BST. More...
|
| |
| void | remove (Product *product) |
| | Removes a product from the products list. More...
|
| |
| void | remove (unsigned long position) |
| | Removes a product from the products list at a certain position. More...
|
| |
| void | read (const std::string &path) |
| | Reads all the products data (name, price, size if it is a bread and category if it is a cake) from a file and creates news ones with that data. More...
|
| |
| void | write (const std::string &path) const |
| | Writes the all the products data that are on the products list (name, price, size if it is a bread and category if it is a cake) to a file. More...
|
| |
| void | print (std::ostream &os, bool showInclusions=true) const |
| | Prints all the products data (name, price, size if it is a bread and category if it is a cake). More...
|
| |
Class that manages the store products.
◆ add()
Add a new product to the products BST.
- Parameters
-
| product | the product to be added |
- Returns
- the added product
◆ addBread()
| Bread * ProductManager::addBread |
( |
std::string |
name, |
|
|
float |
price, |
|
|
bool |
small = true |
|
) |
| |
Adds a bread to the product list.
- Parameters
-
| name | the name |
| price | the price |
| small | the size |
- Returns
- the bread added to the products list
◆ addCake()
| Cake * ProductManager::addCake |
( |
std::string |
name, |
|
|
float |
price, |
|
|
CakeCategory |
category = CakeCategory::GENERAL |
|
) |
| |
Adds a cake to the products list.
- Parameters
-
| name | the name |
| price | the price |
| category | the category |
- Returns
- the cake added to the products list
◆ get() [1/2]
| Product * ProductManager::get |
( |
const std::string & |
name, |
|
|
float |
price |
|
) |
| |
Gets the product on the products list with a certain name and price.
- Parameters
-
| name | the name |
| price | the price |
- Returns
- the product with that name and price
◆ get() [2/2]
| Product * ProductManager::get |
( |
unsigned long |
position | ) |
|
Gets the product on the products list of the product manager at a certain position.
- Parameters
-
- Returns
- the product at that position
◆ getAll()
| std::vector< Product * > ProductManager::getAll |
( |
| ) |
const |
Gets all the products on the products list.
- Returns
- the products list
◆ getBreads()
| std::vector< Bread * > ProductManager::getBreads |
( |
| ) |
const |
Gets all the breads on the products list.
- Returns
- the breads on the products list
◆ getCakes()
| std::vector< Cake * > ProductManager::getCakes |
( |
| ) |
const |
Gets all the cakes on the products list.
- Returns
- the cakes on products list
◆ getUnused()
| std::vector< Product * > ProductManager::getUnused |
( |
| ) |
const |
Get the products that were never included in orders.
- Returns
- the never included products
◆ getUsed()
| std::vector< Product * > ProductManager::getUsed |
( |
| ) |
const |
Get the products that were ever included in orders.
- Returns
- the ever included products
◆ has()
| bool ProductManager::has |
( |
Product * |
product | ) |
const |
Checks if the product is on the products list of the product manager.
- Parameters
-
- Returns
- true, if the product is on products list; false, otherwise
◆ print()
| void ProductManager::print |
( |
std::ostream & |
os, |
|
|
bool |
showInclusions = true |
|
) |
| const |
Prints all the products data (name, price, size if it is a bread and category if it is a cake).
- Parameters
-
◆ read()
| void ProductManager::read |
( |
const std::string & |
path | ) |
|
Reads all the products data (name, price, size if it is a bread and category if it is a cake) from a file and creates news ones with that data.
- Parameters
-
◆ remove() [1/2]
| void ProductManager::remove |
( |
Product * |
product | ) |
|
Removes a product from the products list.
- Parameters
-
◆ remove() [2/2]
| void ProductManager::remove |
( |
unsigned long |
position | ) |
|
Removes a product from the products list at a certain position.
- Parameters
-
◆ write()
| void ProductManager::write |
( |
const std::string & |
path | ) |
const |
Writes the all the products data that are on the products list (name, price, size if it is a bread and category if it is a cake) to a file.
- Parameters
-
The documentation for this class was generated from the following files:


KPI measurements and feedback loops
Commonly attributed to Peter Drucker a cornerstone of management is "If you can’t measure it, you can’t manage it." (which according to the Drucker Institute he never said).
It's a Damned anyhow situation. In my oberservation KPIs are plagued by linear thinking and, what I call Gamability. Let me explain
Meet the feedback loop
We are caught in a "newtonish" world of belief that there is a linear relationship between a cause and effect. Most notably visible in post mortem demand for a root cause analysis (At least science gives ceteris paribus a thougth).
In his book The Fifth Discipline the author Peter M. Senge offers a different view and model. Most system, from small atomic particles to the Universe are bound in a series of feedback loops. The emphasis here is on loops -> plural. The various execution speeds lead to observable results, that can't be explained with single linear thinking.
Let's take a sweet example, that should be easy to relate:
You don't feel happy, so you eat your favorite food. Now your happy. Two (obviously simplified) feedback loops kick off. The red lines indicate that the loops work with a delay.
The upper one removes the "favorite" from the food, while the lower one removes the hapiness inducing effect. Pretty obvious and as I said grossly simplified.
You get what you measure
Lets pick a Scrum example. When you are blessed* with Atlassian's Jira, you have an infinite number of reporting choices and can track anything. For practical advise on what to track, checkout David Farley's book Modern Software Engineering: Doing What Works to Build Better Software Faster.
We shall track: Sprint planning accuracy. Someone wants to know how close the ~~guesswork~~ estimates are to the delivered number of story points (Not debating the usefulness of such a metric here).
(The case "right on target" is omitted for its low probability). Let's say you miss the target: you need to spend more time planning which reduces implementation time available. Less time to deliver increases delivery pressure which might invite cutting corners and taking up more technical debt.
Let's say you are ahead of time, delivered your story points early. Do you increase your estimates to generate higher expectations (and then delivery pressure) or would you slack off for the rest of the sprint?
AGAIN: This is a very simplified diagram. In an actual organisation there are many more loops, big and small, fast and slow at work.
As long as such a measurement's purpose is team enlightenment, these loops aren't very strong. However when they become attached to consequences, the effects kick in fast.
So be careful what you measure, you will get it.
* One person's blessing is another one's curse
Posted by Stephan H Wissel on 30 March 2023 | Comments (0) | categories: Business Learning


WebDev Chicks
Home
About Me
Girls Lead Technology!
Women are a wonderful force in technology. We are brilliant problem solvers and innovative thinkers.


climate health change papers Health scored global published paper Climate effects articles average human identified score {border-style Butler C.D. px;} #ffffff;} likely period review (see Environ. citations warming heat However, Papers Table food literature search systematic Figure Global McMichael carbon civilization including A.J. Med. Public Res. cited impact included population years ./s--- Lancet Sci. USA change. conflict increased journals papers, public risks ./S-()- Int. University change, future number rise risk year Arctic Press migration temperature using Appendix Change analysis collapse concerning diseases environmental especially health, level px; recent terms three. world {font-family "climate (–) Citations Nat. New change" change: changes disease early effect existential factors font-size growing health. higher potential potentially quintile reduce related sea topic total widely ./j.-...x Acad. Appendix). BMJ Earth Lett. Paris appeared atmospheric bias conflict, double; drought impacts inclusion infectious long people regional searched shows threat war warned (accessed ./--- A.. Am. Available Chang. Int Kalkstein Nature Nepal Perspect. Proc. Science Total analysis. article border-color border-width citation consequences continued contributing described dioxide discussed displacement editorials example, extent extreme far final focused ijerph---tA_Table influenced journalistic judged lower mortality nuclear online: publication relevant rise, risk. scientific scoring searching social solid; special stated time used {font-style {font-weight "global "health". ./ehp. ./pnas. Cambridge, Clim. Concerned Costello Curr. Ebi K.L. Kelley L.S. Natl. Number October Rev. Scientists Soc. Syrian U.S. Union Wang World adaptation additional appear articles. associated available based bold cause century collab: comprehensive concerned confidence courier; database development, difference discuss diseases, easily em; evidence existence famine, following fraction greenhouse health: heat, inclusive. increase issues items leading majority medical natural news one. patterns possibility possibly process profound proportion pt;} rainfall randomly response scores stage strategy term trend trends understanding unlikely warning workers


Ngaro is a minimalistic virtual machine emulating a dual stack computer with a simple instruction set and a few basic I/O devices.
At present, there are full implementations in Assembly (x86), C, F#, Go, Common Lisp, PHP, Python, and Ruby, and minimal implementations in C#, Forth, Lua, JavaScript, Java, Perl, and Scheme.
Ngaro provides a memory space consisting of 32-bit, signed integer values. The first address is mapped to zero, with subsequent values following in a strictly linear fashion.
Each addressable 32-bit unit is called a cell. There is no support in the instruction set for accessing values larger or smaller than a single cell.
Ngaro exposes no registers directly.
Ngaro emulates two LIFO stacks. The primary one is the data stack, and serves as a place for holding data, and passing data between instructions.
The other is the address stack, which is used to hold return addresses from calls, and can be used to temporarily hold small amounts of data.
The current depth of a stack can be determined by using the I/O ports to query the VM.
A standard implementation will provide at least 128 cells for data stack, and 1024 for the address stack.
On startup, Ngaro will load an image file. This is a flat, linear array of signed integer values. On disk, images are stored in little endian format, but the VM may convert them to big endian internally.
If an implementation uses big endian internally, this must be reported via the queries I/O port.
The first value loaded is mapped to address zero, and subsequent values are loaded to sequential addresses in the Ngaro memory space.
An image file does not contain copies of the stacks or any internal registers used by the VM.
Interfacing with the underlying OS and hardware devices is done by reading and writing I/O ports.
Ports 0 - 12 are reserved for current and future standard I/O devices. A VM may provide non-standard devices on port numbers above or below this range.
| Port | Used For |
|---|---|
| 0 | Triggering I/O events |
| 1 | Keyboard |
| 2 | Text Output |
| 3 | Force Video Update |
| 4 | File I/O |
| 5 | Querying the VM |
| 6 | Canvas |
| 7 | Mouse |
This is used to determine if Ngaro should enter a wait for hardware event loop. It should be set to 0, then use the WAIT instruction.
Usage Example:
#0 #0 out, wait,
To read a value from the keyboard, set port 1 to 1, wait for an I/O event, then read the key value from port 1.
Usage Example:
#1 #1 out, #0 #0 out, wait, #1 in,
Ngaro provides a hardware character generator. This takes data off the stack, so you should make sure the character value is on the stack before using it. To use this, write the value 1 to port 2 and wait for an I/O event.
The VM is expected to clear the screen when a negative value is passed.
Usage Example:
#98 #1 #2 out, #0 #0 out, wait,
To help improve performance, an Ngaro implementation is permitted to cache output and update the display periodically. For implementations that do this, seting this port will force an immediate update.
An implementation that caches output must check this routinely, and respond immediately. No waiting for an I/O event is neccessary for this.
Example:
#0 #3 out,
If your Ngaro implementation allows saving images, you can use this port to do so. To save, set port 4 to 1 and wait.
Other operations can be done using negative values, if the VM supports this. To use these, setup the stack, write the operation code to port 4, wait, then read the value back in from port 4.
| Op | Takes | Returns | Notes |
|---|---|---|---|
| -1 | filename, mode | handle | Open a file |
| -2 | handle | flag | Read a byte from a file |
| -3 | character, handle | flag | Write a byte to a file |
| -4 | handle | flag | Close a file |
| -5 | handle | offset | Return current location in file |
| -6 | offset, handle | flag | Seek a new location in file |
| -7 | handle | size | Return the size of a file |
| -8 | filename | flag | Delete a file. |
Valid modes for opening files are:
| Value | Used For | Create if not existing? |
|---|---|---|
| 0 | Open file for reading | No |
| 1 | Open file for writing | Yes |
| 2 | Open file for append | Yes |
| 3 | Open file for modification | No |
Reading and modification should not create a file if none exist. Writing and append modes should create a file if it does not exist.
The write mode should create a new file, removing the contents of existing files with the same name.
The append mode should set the file read/write position to the end of the file.
If opening fails, the returned handle should be zero. Any non-zero handle is considered valid.
When closing a valid handle, close should return zero.
The write operation should return a value of 1. Any other value indicates an error.
The delete operation should return -1 if the file is deleted, or 0 if the deletion fails.
Set port 5 to one of the following values; wait; then read the result back.
| value | returns |
|---|---|
| -1 | Memory Size |
| -2 | Does a Canvas device exist? |
| -3 | Canvas Width |
| -4 | Canvas Height |
| -5 | Data Stack Depth |
| -6 | Address Stack Depth |
| -7 | Does a Mouse device exist? |
| -8 | Current time (in seconds, Unix-style) |
| -9 | Exit the VM |
| -10 | Query for an enivronment variable |
| -11 | Console Width |
| -12 | Console Height |
| -13 | Number of bits per cell |
| -14 | 0 for little endian, 1 for big endian |
| -15 | -1 if Port 8 enabled, 0 if disabled |
At a minimum, an implementation must provide support for -1, -5, -6, -8, and -9.
For -10, the application must provide a buffer address on the stack, and a pointer to a string. The VM should search the system environment for the string and copy its value to the application memory, starting at the providedbuffer address. If an environment variable is not found, the VM should store a value of zero in the provided buffer address.
For -13, if the returned value is zero, the image can assume a 32-bit environment.
For -14, if the VM is using big endian internally, this should return a value of 1.
Some Ngaro implementations allow for drawing to a canvas device. Setup the data stack as shown in the table, and write the appropriate values to port 6.
This device is optional.
| value | stack | action performed |
|---|---|---|
| 1 | n- | set color for drawing operations |
| 2 | xy- | draw a pixel at coordinates x, y |
| 3 | xyhw- | draw a rectangle of specified width (w) and height (h). The top corner is denoted by the x, y pair |
| 4 | xyhw- | draw a filled rectangle of specified width (w) and height (h). The top corner is denoted by the x, y pair |
| 5 | xyh- | draw a vertical line of height (h) starting at x, y |
| 6 | xyw- | draw a horizontal line of width (w) starting at x, y |
| 7 | xyw- | draw a circle of width (w) starting at x, y |
| 8 | xyw- | draw a filled circle of width (w) starting at x, y |
For setting colors, the following values are guarateed safe:
| code | name |
|---|---|
| 0 | black |
| 1 | dark blue |
| 2 | dark green |
| 3 | dark cyan |
| 4 | dark red |
| 5 | purple |
| 6 | brown |
| 7 | dark gray |
| 8 | gray |
| 9 | blue |
| 10 | green |
| 11 | cyan |
| 12 | red |
| 13 | magenta |
| 14 | yellow |
| 15 | white |
Additional colors may be supported, but are not guaranteed to exist.
Set port 7 to one of the following values and wait. The results will be pushed to the data stack.
This device is optional.
| value | returns |
|---|---|
| 1 | Mouse X and Y coordinates. Y will be on TOS when done. X will be NOS. |
| 2 | Is mouse button pressed? 0 = false, non-zero is true. True values may indicate the button being pressed, but this is not required. |
Set port 8 to one of the following values and wait.
This device is optional.
Due to platform constraints, implementations may not offer all of these functions. An implementation providing this port should at least support cursor positioning. Any non-implemented functions should be silently ignored.
An implementation may provide additional, non-standard functionality using negative values.
| value | stack | action |
|---|---|---|
| 1 | rc- | Move the cursor to the specified row and column |
| 2 | n- | Set the foreground text color |
| 3 | n- | Set the background color |
The VM is expected to understand the following colors:
| value | color |
|---|---|
| 0 | Black |
| 1 | Red |
| 2 | Green |
| 3 | Yellow |
| 4 | Blue |
| 5 | Magenta |
| 6 | Cyan |
| 7 | White |
One instruction per memory location. Instructions with an x in the A column take an additional value in the following memory location.
All opcode numbers are listed in decimal. Stack diagrams are for the data stack.
| opcode | name | assembler | A | stack |
|---|---|---|---|---|
| 0 | NOP | nop, | - | |
| 1 | LIT | lit, | x | -n |
| 2 | DUP | dup, | n-nn | |
| 3 | DROP | drop, | n- | |
| 4 | SWAP | swap, | xy-yx | |
| 5 | PUSH | push, | n- | |
| 6 | POP | pop, | -n | |
| 7 | LOOP | loop, | x | n-n |
| 8 | JUMP | jump, | x | - |
| 9 | RETURN | ;, | - | |
| 10 | LT_JUMP | <jump, | x | xy- |
| 11 | GT_JUMP | >jump, | x | xy- |
| 12 | NE_JUMP | !jump, | x | xy- |
| 13 | EQ_JUMP | =jump, | x | xy- |
| 14 | FETCH | @, | a-n | |
| 15 | STORE | !, | na- | |
| 16 | ADD | +, | xy-z | |
| 17 | SUBTRACT | -, | xy-z | |
| 18 | MULTIPLY | *, | xy-z | |
| 19 | DIVMOD | /mod, | xy-rq | |
| 20 | AND | and, | xy-z | |
| 21 | OR | or, | xy-z | |
| 22 | XOR | xor, | xy-z | |
| 23 | SHL | <<, | xy-z | |
| 24 | SHR | >>, | xy-z | |
| 25 | ZERO_EXIT | 0; | n-? | |
| 26 | INC | 1+, | x-y | |
| 27 | DEC | 1-, | x-y | |
| 28 | IN | in, | p-n | |
| 29 | OUT | out, | np- | |
| 30 | WAIT | wait, | - |
The instruction pointer is incremented, then the opcode at the current address is handled. Execution ends when the instruction pointer is greater than the end of the simulated memory space.
A psuedocode in Retro:
-1 !ip [ ip ++ processOpcode @ip 1000000 < ] while
And in Lua:
ip = 0 while ip < 1000000 do processOpcode() ip = ip + 1 end
Does nothing.
Push the value in the following memory location to the data stack. Advances the instruction pointer by one.
In memory this might appear as:
0000 LIT 0001 101
After LIT executes, the IP would be set at 0001, and the top item on the data stack would be 101.
Make a duplicate copy of the top item on the data stack and push the copy to the data stack.
| before | after | |||||||
|---|---|---|---|---|---|---|---|---|
|
|
Remove the top item from the data stack.
| before | after | |||||
|---|---|---|---|---|---|---|
|
|
Remove the top two items from the stack, and push them back in the reverse order.
| before | after | ||||||
|---|---|---|---|---|---|---|---|
|
|
Remove the top item from the data stack, and push it to the address stack.
| before | after | |||||
|---|---|---|---|---|---|---|
|
|
Remove the top item from the address stack, and push it to the data stack.
| before | after | |||||
|---|---|---|---|---|---|---|
|
|
Decrement the top value on the stack and advance the instruction pointer. If the top item on the stack is greater than zero, jump to the address following the LOOP instruction, otherwise discard the top item on the stack and continue execution normally.
Set the instruction pointer to the address in the cell following the JUMP instruction.
This instruction needs to decrement the requested address by one to account for the increment of the instruction pointer by the opcode process cycle. E.g., if the jump target is 1234, JUMP needs to set the instruction pointer to 1233.
To improve performance, this instruction may skip leading NOP's at the destination address.
Return from a call to a subroutine. This will pop the return address from the address stack, and set the instruction pointer to it.
Increment the instruction pointer.
Pop the top two values from the stack. If the first stack item is less than the second item, set the instruction pointer to the address stored at the memory location following this instruction. If not, continue execution.
This instruction needs to decrement the requested address by one to account for the increment of the instruction pointer by the opcode process cycle. E.g., if the jump target is 1234, the instruction pointer should be set to 1233.
In memory, this will be stored as:
0000 LT_JUMP 0001 destination
| before | after | ||
|---|---|---|---|
|
Increment the instruction pointer.
Pop the top two values from the stack. If the first stack item is greater than the second item, set the instruction pointer to the address stored at the memory location following this instruction. If not, continue execution.
This instruction needs to decrement the requested address by one to account for the increment of the instruction pointer by the opcode process cycle. E.g., if the jump target is 1234, the instruction pointer should be set to 1233.
In memory, this will be stored as:
0000 GT_JUMP 0001 destination
| before | after | ||
|---|---|---|---|
|
Increment the instruction pointer.
Pop the top two values from the stack. If the first stack item is not equal to the second item, set the instruction pointer to the address stored at the memory location following this instruction. If not, continue execution.
This instruction needs to decrement the requested address by one to account for the increment of the instruction pointer by the opcode process cycle. E.g., if the jump target is 1234, the instruction pointer should be set to 1233.
In memory, this will be stored as:
0000 NE_JUMP 0001 destination
| before | after | ||
|---|---|---|---|
|
Increment the instruction pointer.
Pop the top two values from the stack. If the first stack item is equal to the second item, set the instruction pointer to the address stored at the memory location following this instruction. If not, continue execution.
This instruction needs to decrement the requested address by one to account for the increment of the instruction pointer by the opcode process cycle. E.g., if the jump target is 1234, the instruction pointer should be set to 1233.
In memory, this will be stored as:
0000 EQ_JUMP 0001 destination
| before | after | ||
|---|---|---|---|
|
Remove the top item from the data stack. Lookup the value stored in the memory address this value points to, and push the value read to the data stack.
Assuming that memory at 1234 contains 45:
| before | after | ||
|---|---|---|---|
|
|
Take two values from the stack. The top item will be a destination address, and the second will be a value. Modify the contents of the specified memory address to be equal to the value.
| before | after | ||
|---|---|---|---|
|
In this, 1 would be the address, and 2 would be the value to store there.
Take two values from the data stack, add them together, and push the results to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
Take two values from the data stack. Subtract the top item from the second item, and push the results back to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
Take two values from the data stack. Multiply them and push the results back to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
Take two values from the data stack. The top item is the divisor, and the second item is the dividend. Perform the division, and push the quotient and remainder to the stack. After execution the quotient should be on top, with the remainder below it.
Division is symmetric, not floored.
| before | after | ||||
|---|---|---|---|---|---|
|
|
Remove the top two items on the data stack. Perform a bitwise AND operation and push the result back to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
Remove the top two items on the data stack. Perform a bitwise OR operation and push the result back to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
Remove the top two items on the data stack. Perform a bitwise XOR operation and push the result back to the data stack.
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
| before | after | |||
|---|---|---|---|---|
|
|
Take two values from the data stack. Perform a bitwise left shift on the second item by the number of bits specified by the top item. Push the results back to the data stack.
The values in these tables are in binary.
| before | after | |||
|---|---|---|---|---|
|
|
The results of a negative shift are implementation specific.
Take two values from the data stack. Perform a bitwise right shift on the second item by the number of bits specified by the top item. Push the results back to the data stack.
The values in these tables are in binary.
| before | after | |||
|---|---|---|---|---|
|
|
The results of a negative shift are implementation specific.
If the top item on the stack is zero, remove and discard it, then pop the top item from the address stack and set the instruction pointer to it.
If the top item is not zero, leave it alone and do nothing.
| before | after | ||
|---|---|---|---|
|
|
| before | after | |
|---|---|---|
|
Increase the value on the top of the stack by one.
| before | after | ||
|---|---|---|---|
|
|
Decrease the value on the top of the stack by one.
| before | after | ||
|---|---|---|---|
|
|
Take a value from the data stack. Read the value stored in the I/O port corresponding to the value read from the stack, and push this value to the data stack.
After reading, set the value of the port read to zero.
| before | after | ||
|---|---|---|---|
|
|
The value returned will vary depending on the I/O device subsystem and specific port requested.
Take two values off the data stack. The top value will be an I/O port number, and the second will be a value. Store the value in the I/O port specified.
| before | after | ||
|---|---|---|---|
|
With the values in this table, port 2 would be set to a value of 1.
Run the simulated device handler. Before calling this, the code being run should set I/O port 0 to 0 to ensure that a request is actually handled. If no requests are pending (based on the values written to the ports previously), continue execution as normal.
Any opcode above 30 is treated as an implicit call.
The VM will push the current value of the instruction pointer to the address stack and set the instruction pointer to the value of the opcode. Note that like jumps, the VM must decrement this value by one to account for the increment that will happen before the next instruction is processed.


Calls JIRA's latest REST API, optionally with basic authentication, to get all issues of a JIRA query (JQL). Allows to specify which fields to obtain.
JiraQuery2R(domain, user = NULL, password = NULL, query, fields = NULL, maxResults = NULL, verbose = FALSE)
| domain | Custom JIRA domain URL as for example https://bitvoodoo.atlassian.net. |
|---|---|
| user | Username used to authenticate access to JIRA your domain. If both username and password are not passed no authentication is made and only public domains can bet accesed. |
| password | Password used to authenticate access to JIRA your domain. If both username and password are not passed no authentication is made and only public domains can bet accesed. |
| query | JIRA's decoded JQL query. By definition, it works with with **Fields**, **Operators**, **Keywords** and **Functions**. To learn how to create a query visit this ATLASSIAN site. |
| fields | Optional argument to define the specific JIRA fields to obtain. If no value is entered, by defualt the following fields are passed: 'status','priority','created','reporter','summary','description','assignee','updated','issuetype','fixVersions'. |
| maxResults | Max results authorized to obtain for each API call. By default JIRA sets this value to 50 issues. |
| verbose | Gives the user the ability to have a verbose response from the JIRA API call. |
Returns a formatted data.frame
with the issues according to the JQL query.
The function works with the latest JIRA REST API and to work you need to have a internet connection. Calling the function too many times might block your access and you will have to access manually online and enter a CAPTCHA at jira.enterprise.com/secure/Dashboard.jspa
For more information about Atlassians JIRA API visit the following link: https://docs.atlassian.com/software/jira/docs/api/REST/7.6.1/.
JiraQuery2R(domain = "https://bitvoodoo.atlassian.net", query = 'project="Congrats for Confluence"')#> id self #> 1: 57446 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57446 #> 2: 57383 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57383 #> 3: 57327 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57327 #> 4: 57249 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57249 #> 5: 57157 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57157 #> 6: 57041 https://bitvoodoo.atlassian.net/rest/api/latest/issue/57041 #> 7: 56904 https://bitvoodoo.atlassian.net/rest/api/latest/issue/56904 #> 8: 56797 https://bitvoodoo.atlassian.net/rest/api/latest/issue/56797 #> 9: 56796 https://bitvoodoo.atlassian.net/rest/api/latest/issue/56796 #> 10: 56795 https://bitvoodoo.atlassian.net/rest/api/latest/issue/56795 #> 11: 55800 https://bitvoodoo.atlassian.net/rest/api/latest/issue/55800 #> 12: 52800 https://bitvoodoo.atlassian.net/rest/api/latest/issue/52800 #> 13: 51806 https://bitvoodoo.atlassian.net/rest/api/latest/issue/51806 #> 14: 50050 https://bitvoodoo.atlassian.net/rest/api/latest/issue/50050 #> key status priority created reporter displayName #> 1: CONGRATS-29 Open Normal 2019-03-25 Stefanie Neidhart #> 2: CONGRATS-27 In Progress Normal 2019-02-04 Sascha Häusler #> 3: CONGRATS-26 Closed Normal 2018-11-07 Sascha Häusler #> 4: CONGRATS-24 In Progress Major 2018-09-12 Robin Stohler #> 5: CONGRATS-23 Closed Minor 2018-07-03 Niklas Becker #> 6: CONGRATS-20 Closed Major 2018-03-19 Niklas Becker #> 7: CONGRATS-18 Closed Minor 2017-12-05 Niklas Becker #> 8: CONGRATS-17 Open Major 2017-09-26 Oliver Strässer #> 9: CONGRATS-16 Open Major 2017-09-26 Oliver Strässer #> 10: CONGRATS-15 Open Major 2017-09-26 Oliver Strässer #> 11: CONGRATS-11 Closed Major 2017-04-05 Daniele Talerico #> 12: CONGRATS-6 Closed Major 2016-11-24 Sharon Funke #> 13: CONGRATS-3 Closed Major 2016-10-21 Sharon Funke #> 14: CONGRATS-1 Closed Major 2016-08-09 Oliver Strässer #> reporter name reporter displayName 1 #> 1<EMAIL_ADDRESS>Stefanie Neidhart #> 2<EMAIL_ADDRESS>Sascha Häusler #> 3<EMAIL_ADDRESS>Sascha Häusler #> 4: Robin Robin Stohler #> 5: Niklas Niklas Becker #> 6: Niklas Niklas Becker #> 7: Niklas Niklas Becker #> 8<EMAIL_ADDRESS>Oliver Strässer #> 9<EMAIL_ADDRESS>Oliver Strässer #> 10<EMAIL_ADDRESS>Oliver Strässer #> 11<EMAIL_ADDRESS>Daniele Talerico #> 12<EMAIL_ADDRESS>Sharon Funke #> 13<EMAIL_ADDRESS>Sharon Funke #> 14<EMAIL_ADDRESS>Oliver Strässer #> summary #> 1: Display issue of standard profile picture in Internet Explorer #> 2: Congrats - Define performance tests #> 3: Congrats Data Center Checklist #> 4: Congrats for Confluence Data Center compatibility #> 5: If max entries is above 100 user icons overlap with Congrats #> 6: "You already congratulated" message missing after refresh #> 7: Add a dialogue for users that urges them to fill in dates #> 8: Synchronisation with the //Seibert/Media CUP #> 9: Add an Interface to configure the sync fields #> 10: Synchronisation with the Communardo UPP #> 11: Display of age for birthday configurable #> 12: Do not display inactive users in Congrats Macro #> 13: Incomplete rendering if placed in tabs #> 14: Display current event in the center #> description #> 1: Steps to reproduce:\r\nEnv: Confluence 6.13.0, Internet Explorer 11\r\n* Person (who doesn't have an own profile picture set) has an occasion (birthday) today\r\n* Congrats Macro is added to a confluence page\r\n\r\nExpected result:\r\nStandard profile picture is shown correctly \r\n\r\nActual result:\r\nStandard profile picture is shown but has the wrong height:\r\n !image-2019-03-25-12-55-02-743.png|thumbnail! \r\n #> 2: What to test:\r\n* Actions:\r\n** Admin\r\n*** /admin/managecongratsfields.action\r\n*** /admin/managecongratsevents.action\r\n** User Profile\r\n*** /users/profile/editmycongratsfields.action\r\n* REST\r\n** /rest/congrats/1.0/calendar\r\n* Congrats Macro #> 3: <NA> #> 4: h2.Is Congrats for Confluence Data Center compatible?\r\nYes, Congrats for Confluence is Data Center ready but Atlassian removed the previous "Datacenter ready" Badge on 3 September 2018 and introduced the new program for Data Center approved apps. [Find more information here.|https://www.atlassian.com/licensing/data-center-approved-apps]\r\n\r\nAll vendors are required to reevaluate their apps and provide a vast amount of testing data to get the status back.\r\n\r\nIf you would like to speed up the process, to get this app Data Center approved again, vote this ticket up! #> 5: If max entries is above 100, the dialog for writing your congratulation overlaps with the user icons.\r\n\r\nWhat I do\r\n* I add the Congrats Macro to a Confluence Page\r\n* I set Max Entries to 110\r\n* I set Days before and/or Event history to at least 110\r\n* I save the page\r\n* Someone has birthday, I click congratulate\r\n* The browser window is not full size\r\n\r\nWhat I expect\r\n* The macro works\r\n* The Congrats screen appears and I can enter my congratulation\r\n\r\nWhat happens instead\r\n* The user Icons overlap with the dialog \r\n\r\n!Screen Shot 2018-07-03 at 10.59.03.png|thumbnail! #> 6: What I do:\r\n* I congratulate someone\r\n\r\nWhat I expect\r\n* The reminder I already congratulated is displayed\r\n* The reminder stays there even after refreshing / revisiting the page containing the macro\r\n\r\nWhat happens instead:\r\n* The reminder is not displayed after refreshing the page\r\n* It is possible to press the congratulate button again, after trying to send the message an error occurs\r\n\r\nFurther informations:\r\n* Chrome generates a console error (POST 400) during the error\r\n* This was tested in Confluence 6.2.4 and Confluence 6.7.2 in Chrome and Firefox #> 7: It would be easier for Confluence Administrators if the users fill in their birthdates and other occasions by themselves.\r\n\r\nA dialog / screen for every user asking to add birthday inside the profile or even the dialogue, would be an useful extension to the Add-on.\r\n\r\nThe dialog should be optional, and upon activation it should appear for every user. #> 8: The CUP Add-on is stored their synced values as an property of the user too.\r\nhttps://marketplace.atlassian.com/plugins/net.seibertmedia.plugin.confluence.cup/server/overview\r\n\r\nThey can be retrieved by the UserDetailsManager, only the correct key is needed (needs to be configured in the admin dialog in CONGRATS-16) #> 9: * How this should be is explained here: https://wiki.bitvoodoo.ch/x/PQe5Aw\r\n* This Issue is only for the implementation of the configuration\r\n* The Names of the user profile fields can be entered mannually, without using the 3rd party REST API -> this will be done later #> 10: Implement a synchronisation for the Communardo User Profile add-on (https://marketplace.atlassian.com/plugins/de.communardo.confluence.plugins.userprofile/server/overview)\r\n\r\nIf you have the field identifier you can retrieve the UPP value like this:\r\nhttps://git.bitvoodoo.ch/projects/BVLIB/repos/confluence-commons-library/browse/src/main/java/ch/bitvoodoo/confluence/commons/search/SearchQueryParser.java#154 #> 11: Please implement a new configuration parameter for the macro:\r\n- display age: true or false\r\n\r\nThis features has impact on the congratulation mask of the macro, see !snapshot.png|thumbnail! #> 12: Inactive users will be displayed within the Congrats Macro if one of their occasions will come up. Because they are inactive it makes not really sense to display them there and suggest that other users can congratulate. What about integrating a check about whether a user is active when fetching the entries? #> 13: * Congrats Makro in einem Tab Element (vom ET) platziert\r\n* beim Laden der Seite anderes Tab Element aktiv\r\n* beim Wechsel zum Tab mit dem Congrats Makro scheinen die Ressourcen, vermutlich vor allem das JS nicht richtig geladen zu werden\r\n\r\nScreenshots:\r\n[^tabs_congrats_wrong.png] -> Congrats wird nicht richtig geladen\r\n[^tabs_congrats_right.png] - > Congrats wird richtig geladen, dieser Tab war bereits beim Laden der gesamten Seite aktiv. Wenn jetzt zwischen Tabs hin- und hergewechselt wird, rendert das Congrats korrekt\r\n\r\nStorage Format:\r\n[^tabs_macros.xml]\r\n\r\n\r\n #> 14: At the moment the first event is centered, independent of the event date. \r\nFor example: If the macro shows an history of old events (last 3 days), the oldest event is selected, not the event from today. \r\n\r\nImprovement: Display the next event centered, not the oldest. #> assignee updated issuetype #> 1: NA 2019-04-12 Bug #> 2: NA 2019-04-12 Task #> 3: NA 2019-01-15 Task #> 4: NA 2019-03-06 Epic #> 5: NA 2019-01-29 Bug #> 6: NA 2019-01-29 Bug #> 7: NA 2017-12-05 New Feature #> 8: NA 2018-09-28 Story #> 9: NA 2018-09-28 Task #> 10: NA 2018-09-28 New Feature #> 11: NA 2017-04-19 Task #> 12: NA 2016-12-14 Improvement #> 13: NA 2019-01-29 Story #> 14: NA 2016-11-30 Improvement #> fixVersions #> 1: <NA> #> 2: <NA> #> 3: <NA> #> 4: <NA> #> 5: 1.3.4, 2019-01-29, 26902, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/26902, Several bugfixes, TRUE #> 6: 1.3.4, 2019-01-29, 26902, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/26902, Several bugfixes, TRUE #> 7: <NA> #> 8: <NA> #> 9: <NA> #> 10: <NA> #> 11: , 1.3.0, 2017-04-18, 26300, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/26300, TRUE #> 12: 1.2.2, 2016-12-14, 25600, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/25600, TRUE #> 13: 1.3.4, 2019-01-29, 26902, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/26902, Several bugfixes, TRUE #> 14: , 1.1.6, 24201, FALSE, https://bitvoodoo.atlassian.net/rest/api/2/version/24201, TRUE #> assignee displayName assignee name assignee displayName 1 #> 1: <NA> <NA> <NA> #> 2: Sascha Häusler<EMAIL_ADDRESS>Sascha Häusler #> 3: Yuriy Bilash<EMAIL_ADDRESS>Yuriy Bilash #> 4: <NA> <NA> <NA> #> 5: Yuriy Bilash<EMAIL_ADDRESS>Yuriy Bilash #> 6: Sascha Häusler<EMAIL_ADDRESS>Sascha Häusler #> 7: <NA> <NA> <NA> #> 8: <NA> <NA> <NA> #> 9: Yuriy Bilash<EMAIL_ADDRESS>Yuriy Bilash #> 10: Yuriy Bilash<EMAIL_ADDRESS>Yuriy Bilash #> 11: Stefanie Neidhart<EMAIL_ADDRESS>Stefanie Neidhart #> 12: <NA> <NA> <NA> #> 13: Sascha Häusler<EMAIL_ADDRESS>Sascha Häusler #> 14: Oliver Strässer<EMAIL_ADDRESS>Oliver Strässer


The code below is designed to work in either PRU of the Beaglebone Black and is intended to interact with the PRUDataInOut example C# code. The comments in the code below and the discussion on the PRU Data In Out example page describe the usage, operation and output of this code.
/// +------------------------------------------------------------------------------------------------------------------------------+ /// | TERMS OF USE: MIT License | /// +------------------------------------------------------------------------------------------------------------------------------| /// |Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation | /// |files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, | /// |modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software| /// |is furnished to do so, subject to the following conditions: | /// | | /// |The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.| /// | | /// |THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE | /// |WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | /// |COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | /// |ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | /// +------------------------------------------------------------------------------------------------------------------------------+ /// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= /// PRUDataInOut.p - a PASM assembly language program, intended to run in /// the Beaglebone Black PRU and which will accept an /// integer, double it, and then return it. It implements /// a simple semaphore system to coordinate actions with /// the user space program. /// /// This code is intended to demonstrate the use of /// the PRU data RAM as a means of passing data /// between the PRU and a user space program and so /// this is probably not the most optimal or practical /// bit of PASM assembly code you will ever see. /// /// Compile with the command /// pasm -b PRUDataInOut.p /// /// This code was written as part of the BBBCSIO library /// which is designed to provide C#/Mono access to the /// OCP Devices and PRU on a Beaglebone Black. Since this /// code is in PASM assembler, it is not really related to /// C#/Mono and you could compile and then run it /// using any language which can load a binary into the /// Beaglebone Black PRU. /// /// References to the PRM refer to the AM335x PRU-ICSS Reference Guide /// References to the TRM refer to the AM335x SitaraTM Processors /// Technical Reference Manual /// /// History /// 05 Jun 15 Cynic - Originally Written /// /// Home Page /// http://www.ofitselfso.com/BBBCSIO/BBBCSIO.php /// +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+= .origin 0 .entrypoint START // this defines the data RAM memory location inside the PRUs address space. #define PRU_DATARAM 0 // yep, starts at address zero no matter which PRU you are using // this label is where the code execution starts START: // Note we do NOT need to enable the OCP master port as was done in the // previous example PRUBlinkUSR3LED.p This is because this code does not write // directly out to the BBB's userspace memory. It writes to its own data // RAM and this is presented to userspace as a MemoryMapped file by the UIO driver. M1: MOV R3, PRU_DATARAM // put the address of our 8Kb DataRAM space in R3 MOV R0, 0 // clear R0 LBBO R0.b3, R3, 4, 1 // our flag byte is at offset 4, we read in that QBEQ M1, R0, 0 // if R0 = 0 no data is ready // the flag is not 0, the data is ready from the user space program LBBO r0, r3, 0, 4 // read in the 4 bytes at that address into R0 // these are the bytes of the integer carefully // placed there by the user space program and they // should be in the correct order to represent an // integer when read sequentially into the 4 // bytes of R0. Fortunately the storage order of // the bytes of an integer in user space is the // same as the storage order used in the PRU LSL R0, R0, 1 // multiply the value in R0 by two and put it back SBBO r0, r3, 0, 4 // store the newly multiplied integer in R0 back in // the memory location pointed at by R3 MOV R0, 0 // reset R0 SBBO r0.b3, r3, 4, 1 // store a 0 back in our flag to signal the // operation is complete JMP M1 // loop again


Experience
- Handled programming duties including web design and record keeping.
- Developed front-end WordPress site and blog with 250+ pages.
- Customized a web app to track all 1,047 delivery clients and 58 temp drivers.
- Managed online ads to announce regular events and fundraising drives.
- Worked with 70+ team members to produce creative, efficient solutions.
Skills
- Active listening
- Communication
- Computer skills
- Customer service
- Interpersonal skills
- Leadership
- Management skills
- Problem-solving
- Time management


{% load staticfiles %}
Enrico the Clown is sad.
He can't find the page you're looking for, but sincerely hopes you'll forgive him.
Error code: 404


|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
| MovieBox
The metadata for a presentation is stored in the single Movie Box which occurs at the top-level of a file. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes | |
|---|---|
| AbstractMediaHeaderBox
A common superclass for all MediaInformationHeaderBoxes. |
|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ChunkOffsetBox
Abstract Chunk Offset Box |
|
| CompositionTimeToSample
aligned(8) class CompositionOffsetBox extends FullBox(‘ctts’, version = 0, 0) { unsigned int(32) entry_count; int i; if (version==0) { for (i=0; i < entry_count; i++) { unsigned int(32) sample_count; unsigned int(32) sample_offset; } } else if (version == 1) { for (i=0; i < entry_count; i++) { unsigned int(32) sample_count; signed int(32) sample_offset; } } } |
|
| CompositionTimeToSample.Entry
|
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
EditListBox
Box Type : 'elst' This box contains an explicit timeline map. |
|
| EditListBox.Entry
|
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
|
| HandlerBox
This box within a Media Box declares the process by which the media-data in the track is presented, and thus, the nature of the media in a track. |
|
| ItemLocationBox.Extent
|
|
| ItemLocationBox.Item
|
|
| MediaBox
The media declaration container contains all the objects that declare information about the media data within a track. |
|
| MediaHeaderBox
This box defines overall information which is media-independent, and relevant to the entire presentation considered as a whole. |
|
| MediaInformationBox
This box contains all the objects that declare characteristic information of the media in the track. |
|
MovieHeaderBox
Box Type: 'mvhd'
This box defines overall information which is media-independent, and relevant to the entire presentation
considered as a whole. |
|
| ProgressiveDownloadInformationBox.Entry
|
|
| SampleDependencyTypeBox
aligned(8) class SampleDependencyTypeBox extends FullBox('sdtp', version = 0, 0) { for (i=0; i < sample_count; i++){ unsigned int(2) reserved = 0; unsigned int(2) sample_depends_on; unsigned int(2) sample_is_depended_on; unsigned int(2) sample_has_redundancy; } } |
|
| SampleDependencyTypeBox.Entry
|
|
| SampleDescriptionBox
The sample description table gives detailed information about the coding type used, and any initialization information needed for that coding. |
|
| SampleSizeBox
This box containes the sample count and a table giving the size in bytes of each sample. |
|
| SampleTableBox
The sample table contains all the time and data indexing of the media samples in a track. |
|
| SampleToChunkBox
Samples within the media data are grouped into chunks. |
|
| SampleToChunkBox.Entry
|
|
| SampleToGroupBox.Entry
|
|
| SchemeInformationBox
The Scheme Information Box is a container box that is only interpreted by the scheme beeing used. |
|
| SubSampleInformationBox.SampleEntry
|
|
| SubSampleInformationBox.SampleEntry.SubsampleEntry
|
|
| SyncSampleBox
This box provides a compact marking of the random access points withinthe stream. |
|
| TimeToSampleBox
This box contains a compact version of a table that allows indexing from decoding time to sample number. |
|
| TimeToSampleBox.Entry
|
|
| TrackHeaderBox
This box specifies the characteristics of a single track. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.apple | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.dece | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.fragment | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
|
| SampleDependencyTypeBox
aligned(8) class SampleDependencyTypeBox extends FullBox('sdtp', version = 0, 0) { for (i=0; i < sample_count; i++){ unsigned int(2) reserved = 0; unsigned int(2) sample_depends_on; unsigned int(2) sample_is_depended_on; unsigned int(2) sample_has_redundancy; } } |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.h264 | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.mdat | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
| TrackBox
Tracks are used for two purposes: (a) to contain media data (media tracks) and (b) to contain packetization information for streaming protocols (hint tracks). |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.sampleentry | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.threegpp26244 | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.coremedia.iso.boxes.vodafone | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.authoring | |
|---|---|
| AbstractMediaHeaderBox
A common superclass for all MediaInformationHeaderBoxes. |
|
| CompositionTimeToSample.Entry
|
|
| SampleDependencyTypeBox.Entry
|
|
| SampleDescriptionBox
The sample description table gives detailed information about the coding type used, and any initialization information needed for that coding. |
|
| SubSampleInformationBox
aligned(8) class SubSampleInformationBox extends FullBox('subs', version, 0) { unsigned int(32) entry_count; int i,j; for (i=0; i < entry_count; i++) { unsigned int(32) sample_delta; unsigned int(16) subsample_count; if (subsample_count > 0) { for (j=0; j < subsample_count; j++) { if(version == 1) { unsigned int(32) subsample_size; } else { unsigned int(16) subsample_size; } unsigned int(8) subsample_priority; unsigned int(8) discardable; unsigned int(32) reserved = 0; } } } } |
|
| TimeToSampleBox.Entry
|
|
| TrackBox
Tracks are used for two purposes: (a) to contain media data (media tracks) and (b) to contain packetization information for streaming protocols (hint tracks). |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.authoring.builder | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
DataInformationBox
Box Type: 'dinf'
The data information box contains objects that declare the location of the media information in a track. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.authoring.tracks | |
|---|---|
| AbstractMediaHeaderBox
A common superclass for all MediaInformationHeaderBoxes. |
|
| CompositionTimeToSample.Entry
|
|
| SampleDependencyTypeBox.Entry
|
|
| SampleDescriptionBox
The sample description table gives detailed information about the coding type used, and any initialization information needed for that coding. |
|
| SubSampleInformationBox
aligned(8) class SubSampleInformationBox extends FullBox('subs', version, 0) { unsigned int(32) entry_count; int i,j; for (i=0; i < entry_count; i++) { unsigned int(32) sample_delta; unsigned int(16) subsample_count; if (subsample_count > 0) { for (j=0; j < subsample_count; j++) { if(version == 1) { unsigned int(32) subsample_size; } else { unsigned int(16) subsample_size; } unsigned int(8) subsample_priority; unsigned int(8) discardable; unsigned int(32) reserved = 0; } } } } |
|
| TimeToSampleBox.Entry
|
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.adobe | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.apple | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| ContainerBox
Interface for all ISO boxes that may contain other boxes. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.basemediaformat | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.mp4 | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.piff | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.threegpp26245 | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.boxes.ultraviolet | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
| FullBox
The FullBox contains all getters and setters specific
to a so-called full box according to the ISO/IEC 14496/12 specification. |
| Classes in com.coremedia.iso.boxes used by com.googlecode.mp4parser.util | |
|---|---|
| Box
Defines basic interaction possibilities for any ISO box. |
|
||||||||||
| PREV NEXT | FRAMES NO FRAMES |


public class UnsafeByteArrayOutputStream extends OutputStream
OutputStream
. Data is written in the given byte[] buffer, until its
length is insufficient. Than the buffer size is doubled and the data is
written.
This class is Unsafe as it is using a buffer which potentially can be changed
from the outside. Moreover, when
toByteArray()
is called, the buffer
itself is returned, and not a copy.
| Constructor and Description |
|---|
UnsafeByteArrayOutputStream
()
Constructs a new output stream, with a default allocated buffer which can
later be obtained via
toByteArray()
.
|
UnsafeByteArrayOutputStream
(byte[] buffer)
Constructs a new output stream, with a given buffer.
|
UnsafeByteArrayOutputStream
(byte[] buffer,
int startPos)
Constructs a new output stream, with a given buffer.
|
| Modifier and Type | Method and Description |
|---|---|
int
|
getStartPos
()
Returns the start position data was written to.
|
int
|
length
()
Returns the number of relevant bytes.
|
void
|
reInit
(byte[] buffer)
For reuse-ability, this stream object can be re-initialized with another
given buffer, using 0 as default starting position.
|
void
|
reInit
(byte[] buffer,
int startPos)
For reuse-ability, this stream object can be re-initialized with another
given buffer and starting position.
|
byte[]
|
toByteArray
()
Returns the byte array saved within the buffer AS IS.
|
void
|
write
(byte[] b,
int off,
int len)
writes a given byte[], with offset and length to the buffer.
|
void
|
write
(int value)
writes a given byte(at the form of an int) to the buffer.
|
close
,
flush
,
write
public UnsafeByteArrayOutputStream()
toByteArray()
.
public UnsafeByteArrayOutputStream(byte[] buffer)
buffer
- some space to which writing will be made
public UnsafeByteArrayOutputStream(byte[] buffer, int startPos)
buffer
- some space to which writing will be made.
startPos
- an index (inclusive) from white data will be written.
public void reInit(byte[] buffer, int startPos)
buffer
- some space to which writing will be made.
startPos
- an index (inclusive) from white data will be written.
public void reInit(byte[] buffer)
buffer
- some space to which writing will be made.
public void write(int value) throws IOException
write
in class
OutputStream
value
- byte value to be written
IOException
public void write(byte[] b, int off, int len) throws IOException
write
in class
OutputStream
b
- byte buffer, containing the source data to be written
off
- index from which data from the buffer b should be written
len
- number of bytes that should be written
IOException
public byte[] toByteArray()
public int length()
public int getStartPos()
reInit(byte[], int)
or
UnsafeByteArrayOutputStream(byte[], int)
and passed a start
position which is not 0.


Take this short quiz to discover which coding language is right for you!
Python is an interpreted, high-level and general-purpose programming language. Python's design philosophy emphasizes code readability with its notable use of significant indentation. Its language constructs and object-oriented approach aim to help programmers write clear, logical code for small and large-scale projects. -Wikipedia
C# (pronounced see sharp, like the musical note C♯, but written with the number sign) is a general-purpose, multi-paradigm programming language encompassing static typing, strong typing, lexically scoped, imperative, declarative, functional, generic, object-oriented (class-based), and component-oriented programming disciplines. -Wikipedia
Ruby is an interpreted, high-level, general-purpose programming language. It was designed and developed in the mid-1990s by Yukihiro "Matz" Matsumoto in Japan. Ruby is dynamically typed and uses garbage collection. It supports multiple programming paradigms, including procedural, object-oriented, and functional programming. According to the creator, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, BASIC, and Lisp. -Wikipedia


Background chapter of my thesis.
Introduction chapter of my thesis.
Abstract for my thesis.
Bose$-$Einstein condensation This will be a hand-waiving introduction to Bose-Einstein condensate theory. I’ll begin by introducing what is a Bose-Einstein condensate, followed by how we model it (hint: we use the Gross-Pitaevskii equation). For more detailed derivations, see Pethick and Smith [ISBN:<PHONE_NUMBER>516] or Pitaevskii and Stringari [ISBN:<PHONE_NUMBER>192]. Again, this is another work in progress, so expect me to continually dump my thoughts here and on subsequent posts.
Quantum vortices Consider, if you will, a bucket of water. We can also do this with a closed bottle of water, to prevent from getting wet, but let’s assume we have a bucket. We drop a spoon/stick/paddle in there, and begin to draw a circle, stirring the water. If the item is removed, the water continues to rotate, gradually slowing down before coming to a halt. Let us now assume that the water is spinning quickly, such that a hole develops in the centre.
Time dependent simulations I will focus on the pseudo-spectral Fourier split operator (or split step) method. Firsly, we need to quantised position space by making a grid over a specific range of position values. Assume $-10$ $\mu$m to $+10$ $\mu$m, giving a grid divided into $xDim=2^8$ equispaced elements. Let us call this grid $\mathbf{x}$, and the maximum value $x_\textrm{max}$. The following Julia code will carry out the above: xDim = 2^8; # The resolution of your grid.
Thoughts on permutations of $n$-D data in memory.
Investigating the use of different FFT implementations for quantum dynamics across different hardware architectures
Granted I have not published any of the articles I am writing since my initial post, they are still in the works. Unfortunately, they will also need to wait until my thesis has been written and published (as some of them will be used therein).
As a snapshot, I will intend to discuss the following topics:
However, do not hold your breath for these…
A place for me to place questions I’ve considered, and aim to answer or develop further.


Apache Flink in 2017: Year in Review
December 21, 2017 - Chris Ward (@chrischinch) Mike Winters (@wints)2017 was another exciting year for the Apache Flink® community, with 3 major version releases (Flink 1.2.0 in February, Flink 1.3.0 in June, and Flink 1.4.0 in December) and the first-ever Flink Forward in San Francisco, giving Flink community members in another corner of the globe an opportunity to connect. Users shared details about their innovative production deployments, redefining what is possible with a modern stream processing framework like Flink.
In this post, we’ll look back on the project’s progress over the course of 2017, and we’ll also preview what 2018 has in store.
{%toc%}
Community Growth #
Github #
First, here’s a summary of community statistics from GitHub. At the time of writing:
- Contributors have increased from 258 in December 2016 to 352 in December 2017 (up 36%)
- Stars have increased from 1830 in December 2016 to 3036 in December 2017 (up 65%)
- Forks have increased from 1255 in December 2016 to 2070 in December 2017 (up 65%)
The community also welcomed 10 new committers in 2017: Kostas Kloudas, Jark Wu, Stefan Richter, Kurt Young, Theodore Vasiloudis, Xiaogang Shi, Dawid Wysakowicz, Shaoxuan Wang, Jincheng Sun and Haohui Mai.
We also welcomed 3 new members to the project management committee (PMC): Greg Hogan, Tzu-Li (Gordon) Tai and Chesnay Schepler.
Next, let’s take a look at a few other project stats, starting with number of commits. If we run:
git log --pretty=oneline --after=12/31/2016 | wc -l
Inside the Flink repository, we’ll see a total of 2316 commits so far in 2017, bringing the all-time total commits to 12,532.
Now, let’s go a bit deeper, here are instructions to take a look at this data yourself.
Download and install gitstats from the project homepage, then clone the Apache Flink git repository:
git clone git@github.com:apache/flink.git
Generate the statistics
gitstats flink/ flink-stats/
View all the statistics as an HTML page using your default browser:
open flink-stats/index.html
Flink surpassed 1 million lines of code in 2016, and that trend continued in 2017 with the code base now clocking in at 1,257,949 lines.
Monday remains the day of the week with the most commits over the project’s history, but Wednesday is catching up:
5 pm remains the preferred commit time, closely followed by 4 pm:
Meetups #
Apache Flink Meetup membership grew by 20% this year to a total of 19,767 members at 39 meetups listing Flink as a topic. With meetups on five continents, the Flink community is proud to be truly global.
Flink Forward 2017 #
2017 was the first year we ran a Flink Forward conference in both Berlin (September 11-13) and San Francisco (April 10-11), and over 350 members of our community attended each event for speaker sessions, training, and discussion about Flink.
Slides and videos are available for all speaker sessions, and if you’re interested in learning more about how organizations use Flink in production, we encourage you to browse and watch a couple.
For 2018, Flink Forward will be back in September in Berlin, and in April in San Francisco.
Features and Ecosystem #
Flink Ecosystem Growth #
Flink was added to a selection of distributions and integrations during 2017, making it easier for a wider user base to get started with Flink:
- Official Docker image
- Official DC/OS and Mesos support
- A Flink connector for Pravega, Dell/EMC’s streaming storage system.
- Uber announced AthenaX, a streaming SQL platform powered by Apache Flink.
- dataArtisans announced an early access program of a SaaS product based on Apache Flink, dA Platform 2.
Feature Timeline in 2017 #
Just in time for the end of the year, our 1.4 release read the full release announcement landed in mid-December culminating 5 months of work and the resolution of more than 900 issues. This is the fifth major release in the 1.x.y series.
Here’s a selection of major features added to Flink over the course of 2017:
If you take a look at the resolved issues and enhancements for 2017 on Jira you can see that the community resolved over 1,831 issues and feature additions.
Regarding roadmap commitments from 2016, there is mixed news, with some items a part of current releases, others scheduled for upcoming releases and some that remain under discussion.
Looking ahead to 2018 #
A good source of information about the Flink community’s roadmap is the list of Flink Improvement Proposals (FLIPs) in the project wiki. Below, we’ll highlight a selection of FLIPs accepted by the community as well as some that are still under discussion.
Work is already underway on a number of these features, and some will be included in Flink 1.5 at the beginning of 2018.
- Improved BLOB storage architecture, as described in FLIP-19 to consolidate API usage and improve concurrency.
- Integration of SQL and CEP, as described in FLIP-20 to allow developers to create complex event processing (CEP) patterns using SQL statements.
- Unified checkpoints and savepoints, as described in FLIP-10, to allow savepoints to be triggered automatically–important for program updates for the sake of error handling because savepoints allow the user to modify both the job and Flink version whereas checkpoints can only be recovered with the same job.
- An improved Flink deployment and process model, as described in FLIP-6, to allow for better integration with Flink and cluster managers and deployment technologies such as Mesos, Docker, and Kubernetes.
- Fine-grained recovery from task failures, as described in FLIP-1 to improve recovery efficiency and only re-execute failed tasks, reducing the amount of state that Flink needs to transfer on recovery.
- An SQL Client, as described in FLIP-24 to add a service and a client to execute SQL queries against batch and streaming tables.
- Serving of machine learning models, as described in FLIP-23 to add a library that allows users to apply offline-trained machine learning models to data streams.
If you’re interested in getting involved with Flink, we encourage you to take a look at the FLIPs and to join the discussion via the Flink mailing lists.
Lastly, we’d like to extend a sincere thank you to all the Flink community for making 2017 a great year!


My Portfolio
Home
About
Contacts
Hi! I am Xy!
a developer?
About Me
I am Xyrell Joi D. Quirona, an upcoming third year college student and currently taking a bachelor degree in Information Systems at Dr. Filemon C. Aguilar Memorial College Las Piñas- IT Campus.
my resume
Projects


Find a pub near you that won't be in the shade
Your device doesn't support WebGL, and we need it for projecting shadows.
Apparently iOS8 will support WebGL, so stand by for that!
Pints in the Sun is an experiment that addresses the very real problem of finding a pub that will be sunny in the evening, and not overshadowed by adjacent buildings.
Using building outline data from Open Streetmap, the locality around a pub (located via FourSquare) is rendered in 3D with three.js (map projection conversion courtesy of the D3 library) and a directional light is projected on to it from the part of the sky where the sun would be at certain times of the year/day. According to a Solar Almanac Calculation, helpfully implemented in JS by SunCalc.
Read more about our experiment here.


Your Task Manager
Click and drag to reorder items, check box to cross an item off, click X to remove.
Add to List


Before Change
// pixel stacks to solve must be transposed to (M,K) matrix of K columns
results = np.linalg.lstsq(self.coefficients, inBlockTFlat.T)
outBlockList = []
// endmember solutions
if self.applyScaling:
for endmember in results[0]:
endmember = endmember.reshape(-1, inBlock.shape[-1])
endmember.clip(min=0, out=endmember)
endmember *= (1.0 / endmember.max())
outBlockList.append(endmember)
else:
outBlockList = [endmember.reshape(-1, inBlock.shape[-1]) for endmember in results[0]]
// residuals
outBlockList.append(results[1].reshape(-1, inBlock.shape[-1]))
After Change
// calculate R2
RSS = resid // without modification, resid is in fact RSS
TSS = np.sum((y - y.mean())**2, axis=0) // total sum of squares
R2 = 1 - RSS / TSS
resid = R2.reshape(1, -1, inBlock.shape[-1])
else:
resid = resid.reshape(1, -1, inBlock.shape[-1]) // extra dimension to match shape of endmembers
outBlocks = np.row_stack((endmembers, resid)) // resid can be either RSS or R2
// output pixel arrays of endmembers & residuals
pixelBlocks["output_pixels"] = outBlocks.astype(props["pixelType"])


02.Write a function that removes all elements with a given value
var arr = [1,2,1,4,1,3,4,1,111,3,2,1,"1"];
arr.remove(1); //arr = [2,4,3,4,111,3,2,"1"];
Attach it to the array class
Read about prototype and how to attach methods
Input comma or space separated array:
Input element to be removed:
Print


Address:
100 Laurier Street
Gatineau, Quebec K1A 0M8
Parking at the Museum
Rate: $2.00 per half hour
Daily maximum rate: $12.00
Flat rate from 6:00 p.m. to 6:00 a.m.: $6.00
General Inquiries:
Local:<PHONE_NUMBER>
Toll free: 1-800-555-5621
TTY for people with hearing disabilities:<PHONE_NUMBER>


Try out our Premium Member services: Virtual Legal Assistant, Query Alert Service and an ad-free experience. Free for one month and pay only if you like it.
BEFORE THE MADURAI BENCH OF MADRAS HIGH COURT DATED : 11/03/2009 Coram The HONOURABLE MR.JUSTICE K.K.SASIDHARAN W.P.(MD)No.1773 of 2009 and M.P.(MD)No.1 of 2009 A.Moses ... Petitioner vs. The Branch Manager, ICICI Bank, Tirunelveli. ... Respondent PRAYER Writ Petition filed under Article 226 of the Constitution of India praying for the issue of a Writ of Mandamus, forbearing the respondent or his men or his agent from seizing the vehicle bearing Registration No.TN-76-C-7683. !For Petitioner ... Mr.A.Moses Party-in-person ^ ****** :ORDER
***** Though the Writ Petition is for a Writ of Mandamus forbearing the respondent from seizing the hypothecated vehicle, the main grievance of the petitioner is in respect of the alleged illegal action taken by the respondent to take possession of the vehicle by deputing musclemen.
2. Factual matrix:-
The petitioner has taken financial assistance from the respondent bank to the tune of Rs.11,40,000/- for the purpose of purchasing a lorry and with the said loan, he purchased a lorry and the same was assigned the registration mark, 'TN-76-C-7683 and the factum of hypothecation has also been indicated in the Registration Certificate. As per the terms and conditions of the agreement, the petitioner has to pay the loan amount in 47 monthly installments at the rate of Rs.32,078/- and for the period from 05.09.2007 to 05.07.2011. The petitioner has regularly paid the installments and the satisfactory way of making payment is also evident by the accounts statement issued by the respondent for the period from 30.07.2007 to 08.12.2008. The lorry purchased by the petitioner was engaged in the business of transporting sand from the State of Tamil Nadu to other States and on account of the order passed by the Government of Tamil Nadu prohibiting transportation of sand to any place outside Tamil Nadu, the transport business of the petitioner was affected and as a result, he was not in a position to pay the dues with effect from January 2009. The petitioner met the Branch Manager of the respondent and requested to grant few months time to clear the arrears. However, to the surprise of the petitioner, the respondent sent Goondas to his residence on 18.02.2009 and 03.03.2009 and abused his wife in filthy language and threatened that they would take away the lorry and ransack the house, in case the dues were not cleared. Therefore, the petitioner apprehends that the vehicle would be seized by the respondent without following the procedure and as such, he has come up with the present Writ Petition.
3. MAINTAINABILITY OF WRIT PETITION:-
The respondent is a private bank doing banking business and without any duty of public nature and as such, the bank is not amenable to the writ jurisdiction under Article 226 of the Constitution of India. The terms and conditions of the agreement entered into between the petitioner and the bank governs the matter and as such, this Court, exercising writ jurisdiction under Article 226 of the Constitution of India, cannot alter or vary such terms and conditions. In case the agreement contains a provision that the bank is entitled to seize the vehicle on account of the default committed by the petitioner, no Mandamus could be issued to forbear the respondent from seizing the vehicle. The bank as well as the customer is bound by the terms of contract. This Court cannot re-write the terms of contract for the parties and jurisdiction under Article 226 of the Constitution of India is not intended for such purposes.
4. The composition of a banking company and its nature of working was considered by the Hon'ble Supreme Court in Federal Bank Ltd. v. Sagar Thomas & Ors. reported in JT 2003(Suppl.1) SC 470, wherein it was held thus:-
"40.....................
But in the present case we are concerned with a banking company which has its own resources to raise its funds without any contribution or shareholding by the State. It has its own Board of Directors elected by it share-holders. It works like any other private company in the banking business having no monopoly status at all. Any company carrying on banking business with a capital of five lacs will become a scheduled bank. All the same, banking activity as a whole carried on by various banks undoubtedly has an impact and effect on the economy of the country in general. Money of the shareholders and the depositors is with such companies, carrying on banking activity. The banks finance the borrowers on any given rate of interest at a particular time. They advance loans as against securities. Therefore, it is obviously necessary to have regulatory check over such activities in the interest of the company itself, the shareholders, the depositors as well as to maintain the proper financial equilibrium of the national economy. The banking companies have not been set up for the purposes of building economy of the State on the other hand such private companies have been voluntarily established for their own purposes and interest but their activities are kept under check so that their activities may not go wayward and harm the economy in general. A private banking company with all freedom that it has, has to act in a manner that it may not be in conflict with or against the fiscal policies of the State and for such purposes, guidelines are provided by the Reserve Bank so that a proper fiscal discipline, to conduct its affairs in carrying on its business, is maintained. So as to ensure adherence to such fiscal discipline, if need be, at times even the management of the company can be taken over. Nonetheless, as observed earlier, these are all regulatory measures to keep a check and provide guideline and not a participatory dominance or control over the affairs of the company. For other companies in general carrying on other business activities may be manufacturing, other industries or any business, such checks are provided under the provisions of the Companies Act, as indicated earlier. There also, the main consideration is that the company itself may not sink because of its own mismanagement or the interest of the shareholders or people generally may not be jeopardized for that reason. Besides taking care of such interest as indicated above, there is no other interest of the State, to control the affairs and management of the private companies. The care is taken in record to the industries covered under the industries (Development and Regulation) Act, 1951 that their production which is important for the economy may not go down yet the business activity is carried on by such companies or corporations which only remains a private activity of the entrepreneurs/companies."
5. The question as to whether a private bank is amenable to writ jurisdiction was also considered by the Hon'ble Supreme Court in the Federal Bank Ltd's case and it was held thus:-
"41. Such private companies would normally not be amenable to the writ jurisdiction under Article 226 of the Constitution. But in certain circumstances a writ may issue to such private bodies or persons as there may be statutes which need to be complied with by all concerned including the private companies. For example, there are certain legislations like the Industrial Disputes Act, the Minimum Wages Act, the Factories Act or for maintaining proper environment say Air (Prevention and Control of Pollution) Act, 1981 or Water (Prevention and Control of Pollution) Act, 1974 etc. or statutes of the like nature which fasten certain duties and responsibilities statutorily upon such private bodies which they are bound to comply with. If they violate such a statutory provision a writ would certainly be issued for compliance of those provisions. For instance, if a private employer dispense with the service of its employee in violation of the provisions contained under the Industrial Disputes Act, in innumerable cases the High Court interfered and have issued the writ to the private bodies and the companies in that regard. But the difficulty in issuing a writ may arise where there may not be any non-compliance or violation of any statutory provision by the private body. In that event a writ may not be issued at all. Other remedies, as may be available, may have to be resorted to."
42......
43......
44......
45......
46.Merely because the Reserve Bank of India lays the banking policy in the interest of the banking system or in the interest of monetary stability or sound economic growth having due regard to the interests of the depositors etc. as provided under Section 5(c)(a) of the Banking Regulation Act does not mean that the private companies carrying on the business of or commercial activity of banking, discharge any public function or public duty. These are all regulatory measures applicable to those carrying on commercial activity in banking and these companies are to act according to these provisions failing which certain consequences follow as indicated in the Act itself. Provision regarding acquisition of a banking company by the government, it may be pointed out that any private property can be acquired by the government in public interest. It is now judicially accepted norm that private interest has to give way to the public interest. If a private property is acquired in public interest it does not mean that the party whose property is acquired is performing or discharging any function or duty of public character though it would be so for acquiring authority."
6. The question as to whether ICICI bank would come within the meaning of "other authorities" as defined under Article 12 of the Constitution of India was considered by the Division Bench of our High Court in ICICI Bank Ltd. Vs. Lakshminarayanan [2008 (3) LLN 320] and after considering the matter in extenso, the Division Bench held that the writ petition is not maintainable against ICICI bank. The said judgment was followed by another Division Bench in W.A.No.480 of 2007 (S.Sundaram and others v. ICICI Bank Ltd and another, judgment dated 09.02.2009), wherein it was clearly held that ICICI bank would not come within the purview of Article 12 of the Constitution of India.
7. Even though this Court cannot interfere in the realm of contract entered into between the petitioner and the respondent bank, still the bank cannot be heard to say that they are entitled to proceed against the petitioner without resorting to the procedure recognized by law. The respondent bank is bound to act as per the directions and guidelines issued by the Reserve Bank of India from time to time. The practice adopted by the respondent bank in hiring recovery agents and deputing musclemen to seize the vehicles were deprecated by the Hon'ble Supreme Court in ICICI Bank Ltd. v. Prakash Kaur reported in 2007(2) SCC 711. While supplementing the judgment delivered by His Lordship Mr.Justice ALTAMAS KABIR, His Lordship Mr.Justice AR.LAKSHMANAN was pleased to indicate certain factors, which were prevailing in the banking industry in the matter of recovery. The factors so indicated would run thus:-
"* Now the bank is the aggressor and the public is the victim. The first step to recovery of the money due is through the so-called recovery/collection agents. A very dignified term used for paid recovery agents who are individual and independent contractors hired by the banks both to trace the defaulters and to physically, mentally and emotionally torture and force them into submitting their dues.
* A man's self-respect, stature in society are all immaterial to the agent who is only primed at recovery. This is the modernised version of Shylock's pound of flesh. No explanation is given regarding the interest charge and the bank takes cover under the guise of the holder of the card or loan having signed the agreement whose fine print is never read or explained to the owner. * When a harassed man approaches the court or the police station he is not armed with a recording phone and finds it difficult to give evidence of the abuse he has suffered. Here the bank gets away with everything. Young and old members of the family are threatened on streets, institutions and also at home at godforsaken hours by these agents who have the full support of their contractor bank. The stance taken by the bank in any suit alleging such incidents is that no such agent has been appointed by them or their agents do not misbehave in the manner aforesaid and if found guilty the agents have to bear the cross and the bank gets away scot-free.
* Using of the abusive language for recovery is the norm of the day for most nationalised or multinational banks or non-nationalised banks. Though some are smart enough to record the abuse and proceed to establish the same through the court of law, most of them are unfortunate not to have recourse to it. Such people form the majority and such litigations are pending in large volumes before the civil and consumer courts. Again the banks escape liability since these agents are not salaried employees of the bank and hence not directly liable for anything."
8. The Hon'ble Supreme Court in Prakash Kaur's case strongly deprecated the practice of the respondent bank in removing the vehicle from the possession of the debtor by hiring recovery agents in the following words:- "16. Before we part with this matter, we wish to make it clear that we do not appreciate the procedure adopted by the Bank in removing the vehicle form the possession of the writ petitioner. The practice of hiring recovery agents, who are musclemen, is deprecated and needs to be discouraged. The Bank should resort to procedure recognized by law to take possession of vehicles in cases where the borrower may have committed default in payment of the installments instead of taking resort to strong-arm tactics."
9. The respondent bank being the appellant in the Prakash Kaur's case cited supra, must take note of the strong observation made by the Hon'ble Supreme Court in the matter of recovery, while taking steps to proceed against the hypothecated vehicle involved in the present writ petition and their action should be in accordance with the contract entered into between the parties and it should also be in accordance with the procedure recognized by law.
10. It is needless to mention that recovery through musclemen giving them the title "Recovery Agents" is not permitted by law.
11. The Writ Petition is disposed of, subject to the above observation. Consequently, the connected miscellaneous petition is closed. There shall be no order as to costs.
SML To The Branch Manager, ICICI Bank, Tirunelveli.


Generally, the process of opening an ODBC data source for reading or writing requires information beyond a simple file name. Thus, you may need to give commands which define the data source name, the table name, and sometimes a password or database name.
Stat Transfer has two commands specifically for ODBC data sources:
DBR (short for database read)
DBW (short for database write)
These commands must precede the COPY command.
Each of these commands is followed by a single parameter that gives necessary information for the ODBC data source. Each of these parameters consists of the parameter name followed by a value for that parameter.
DBR | DBW parametername value
The parameter names are:
DATASOURCE - the name of the ODBC data source
DATABASE - the name of the database
PASSWORD - logon password for the data source
TABLE - the name of the table you want to read or write
SERVER - the name of the machine the database is running on
SQL - a sql statement to retrieve specific fields and/or join tables
CONNSTR - an ODBC connection string (explained below).
The parameter CONNSTR is the most useful of these in command files.
Which of the parameters is necessary for a particular database depends on the database and on the driver. You must enter as many DBR and DBW commands as necessary to supply all of the parameters.
For example, if you want to read from the employee table of a SQL Server database you could specify the table with the following command.
dbr table employee
You could then submit a COPY command:
copy ODBC out.sd2
to copy the table to a SAS file named out.sd2.
To write to a table, data, in an ODBC data source, you could use the commands:
dbw table data
copy indata.sd2 ODBC
Retrieving Parameter Values
During a Stat/Transfer session, you can obtain the value of any parameter by entering DBR or DBW and the parameter name without a value:
DBR | DBW parametername
If no value has been entered yet, you will be told that the value is blank.
Clearing Parameter Values
The DBR and DBW values are persistent across COPY commands during a session. Thus, you will need to change them or clear them if you are executing multiple COPY commands using different data sources.
You can clear the value of any parameter by entering 'clear' in place of a value. For example:
dbr connstr clear
clears the value of the parameter CONNSTR. Note that it is necessary to 'clear' parameter values if you want to be re-prompted by the ODBC driver manager for any values that you have previously entered.


The starting state of the menu will appear collapsed on smaller screens while non-collapsed on larger screens (greater than or equal to 768px).
Make sure to keep all page content within .container-fluid
. If the page content overflows the screen size on y-axis or even x-axis, a scrollbar on the related axis will appear. After hyperlink on a particular action, the category of the last selected action will appear non-collapsed.


Access the link on your own laptop to get to the next step!
Reverting back to the initial screen in...
You can try again in...